From fb8df3f0a892cff2bfe660445e923c00c0463d14 Mon Sep 17 00:00:00 2001 From: MitchyCola Date: Mon, 1 Jan 2024 12:20:45 -0500 Subject: [PATCH 001/373] Add Functionality for Sharing Wallets between Plutip Tests --- CHANGELOG.md | 5 ++++ src/Contract/Test/Plutip.purs | 23 ++++++++++++---- src/Internal/Plutip/Server.purs | 19 +++++++++---- src/Internal/Test/ContractTest.purs | 42 +++++++++++++++++++++++++++-- 4 files changed, 77 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2dcb674b8..b0070de9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,6 +87,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuild/) - also see the new [Makefile](./templates/ctl-scaffold/Makefile) setup and [NPM scripts](./templates/ctl-scaffold/package.json). +- Sharing wallets between Plutip tests + - `runPlutipTestPlan` is a new function that executes a `ContractTestPlan`. + - `groupContractTestPlan` is a new function that uses `Mote.Monad.group` to combine `ContractTestPlan`s. + - `sameWallets` is a new function that creates a `ContractTestPlan` from a `UtxoDistribution` and a `TestPlanM` of the same wallets running different `Contract`s. + ### Changed - PureScript compiler version has been updated to v0.15.8. ([#1521](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1521)) diff --git a/src/Contract/Test/Plutip.purs b/src/Contract/Test/Plutip.purs index 47df5ee5c..c28c99358 100644 --- a/src/Contract/Test/Plutip.purs +++ b/src/Contract/Test/Plutip.purs @@ -1,10 +1,11 @@ -- | This module contains everything needed for `Contract` testing in Plutip -- | environment. module Contract.Test.Plutip - ( testPlutipContracts + ( PlutipTest , defaultPlutipConfig , module X - , PlutipTest + , runPlutipTestPlan + , testPlutipContracts ) where import Prelude @@ -13,12 +14,17 @@ import Contract.Monad (runContractInEnv) as X import Contract.Wallet (withKeyWallet) as X import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Plutip.Server (runPlutipContract, withPlutipContractEnv) as X -import Ctl.Internal.Plutip.Server (testPlutipContracts) as Server +import Ctl.Internal.Plutip.Server (runPlutipTestPlan, testPlutipContracts) as Server import Ctl.Internal.Plutip.Types (PlutipConfig) import Ctl.Internal.Plutip.Types (PlutipConfig) as X import Ctl.Internal.Test.ContractTest (ContractTest) -import Ctl.Internal.Test.ContractTest (ContractTest) as Server -import Ctl.Internal.Test.ContractTest (noWallet, withWallets) as X +import Ctl.Internal.Test.ContractTest (ContractTest, ContractTestPlan) as Server +import Ctl.Internal.Test.ContractTest + ( groupContractTestPlans + , noWallet + , sameWallets + , withWallets + ) as X import Ctl.Internal.Test.UtxoDistribution ( class UtxoDistribution , InitialUTxODistribution @@ -41,6 +47,13 @@ testPlutipContracts -> MoteT Aff (Aff Unit) Aff Unit testPlutipContracts = Server.testPlutipContracts +-- | Run `ContractTestPlan` tests in a single Plutip instance. +runPlutipTestPlan + :: PlutipConfig + -> Server.ContractTestPlan + -> MoteT Aff (Aff Unit) Aff Unit +runPlutipTestPlan = Server.runPlutipTestPlan + -- | Type synonym for backwards compatibility. type PlutipTest = ContractTest diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index b31118b3f..d943d0774 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -1,12 +1,13 @@ module Ctl.Internal.Plutip.Server - ( runPlutipContract - , withPlutipContractEnv + ( checkPlutipServer + , runPlutipContract + , runPlutipTestPlan , startPlutipCluster - , stopPlutipCluster , startPlutipServer - , checkPlutipServer , stopChildProcessWithPort + , stopPlutipCluster , testPlutipContracts + , withPlutipContractEnv ) where import Prelude @@ -157,8 +158,16 @@ testPlutipContracts -> TestPlanM ContractTest Unit -> TestPlanM (Aff Unit) Unit testPlutipContracts plutipCfg tp = do + plutipTestPlan <- lift $ execDistribution tp + runPlutipTestPlan plutipCfg plutipTestPlan + +-- | Run a `ContractTestPlan` in a (single) Plutip environment. +runPlutipTestPlan + :: PlutipConfig + -> ContractTestPlan + -> TestPlanM (Aff Unit) Unit +runPlutipTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = do -- Modify tests to pluck out parts of a single combined distribution - ContractTestPlan runContractTestPlan <- lift $ execDistribution tp runContractTestPlan \distr tests -> do cleanupRef <- liftEffect $ Ref.new mempty -- Sets a single Mote bracket at the top level, it will be run for all diff --git a/src/Internal/Test/ContractTest.purs b/src/Internal/Test/ContractTest.purs index 9e8c92813..30c37b62f 100644 --- a/src/Internal/Test/ContractTest.purs +++ b/src/Internal/Test/ContractTest.purs @@ -1,10 +1,12 @@ module Ctl.Internal.Test.ContractTest ( ContractTest(ContractTest) - , withWallets - , noWallet , ContractTestHandler , ContractTestPlan(ContractTestPlan) , ContractTestPlanHandler + , groupContractTestPlans + , noWallet + , sameWallets + , withWallets ) where import Prelude @@ -12,6 +14,9 @@ import Prelude import Contract.Monad (Contract) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution) +import Data.Tuple (fst, snd) +import Data.Tuple.Nested ((/\)) +import Mote.Monad (group, mapTest) -- | Represents a `Contract` test suite that depend on *some* wallet -- | `UtxoDistribution`. @@ -43,6 +48,15 @@ withWallets distr tests = ContractTest \h -> h distr tests noWallet :: Contract Unit -> ContractTest noWallet = withWallets unit <<< const +-- | Store a wallet `UtxoDistribution` and a `TestPlanM` that depend on those wallets +sameWallets + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution distr wallets + => distr + -> TestPlanM (wallets -> Contract Unit) Unit + -> ContractTestPlan +sameWallets distr tests = ContractTestPlan \h -> h distr tests + -- | A runner for a test suite that supports funds distribution. type ContractTestHandler :: Type -> Type -> Type -> Type type ContractTestHandler distr wallets r = @@ -60,6 +74,30 @@ newtype ContractTestPlan = ContractTestPlan -> r ) +instance Semigroup ContractTestPlan where + append + (ContractTestPlan runContractTestPlan) + (ContractTestPlan runContractTestPlan') = + do + runContractTestPlan \distr tests -> do + runContractTestPlan' + \distr' tests' -> ContractTestPlan \h -> h (distr /\ distr') do + mapTest (_ <<< fst) tests + mapTest (_ <<< snd) tests' + +-- | Group `ContractTestPlans` together, so that they can be ran in the same Plutip instance +groupContractTestPlans + :: String + -> ContractTestPlan + -> ContractTestPlan + -> ContractTestPlan +groupContractTestPlans title tp1 tp2 = + let + (ContractTestPlan runContractTestPlan) = tp1 <> tp2 + in + runContractTestPlan \distr tests -> ContractTestPlan \h -> h distr do + group title tests + -- | Same as `ContractTestHandler`, but wrapped in a `TestPlanM`. -- | It is used for the reconstruction of the `MoteT` value. -- | See the `Ctl.Internal.Plutip.execDistribution` function for more info. From 31b3d1167dd4f489ee1e556c84efe84bed69a5d1 Mon Sep 17 00:00:00 2001 From: MitchyCola Date: Wed, 3 Jan 2024 12:23:07 -0500 Subject: [PATCH 002/373] Show ExUnits Evaluation Error Meassage --- src/Internal/BalanceTx/Error.purs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index a727d95b8..0fe1c0ee1 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -122,8 +122,8 @@ explainBalanceTxError = case _ of <> show coinsPerUtxoUnit <> "\nTransaction output: " <> show txOut - ExUnitsEvaluationFailed _ _ -> - "Script evaluation failure while trying to estimate ExUnits" + ExUnitsEvaluationFailed _ err -> + "Script evaluation failure while trying to estimate ExUnits: \n" <> show err InsufficientUtxoBalanceToCoverAsset asset -> "Insufficient UTxO balance to cover asset named " <> asset From 455e4dc1fe3f9f13135f71e13cf3415ec7081afa Mon Sep 17 00:00:00 2001 From: MitchyCola Date: Wed, 3 Jan 2024 12:24:10 -0500 Subject: [PATCH 003/373] Add `sameWallets` Example in Plutip Docs --- doc/plutip-testing.md | 45 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 85b11fd32..1a9eb7006 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -150,8 +150,49 @@ See the comments in the [`Ctl.Internal.Plutip.Server` module](../src/Internal/Pl In complicated protocols you might want to execute some `Contract`s in one test and then execute other `Contract`s which depend on some wallet-dependent state set up by the first batch of contracts, e.g. some authorization token is present at some wallet. Keeping these steps in separate sequential tests allows to pinpoint where things failed much easier, but currently CTL uses separate wallets for each test without an easy way to refer to wallets in other tests, so you have to call first batch of contracts again to replicate the state of the wallets, which in turn might fail or mess up your protocol, because the chain state is shared between tests for each top-level group. -There's a patch to CTL you can adapt (and even better -- make a PR) if you need to share wallets between tests right now, see the [limitations](#limitations) doc for more info. -This functionality will probably be added to CTL later. + +To execute tests that share the same wallet state, the use of `Contract.Test.Plutip.runPlutipTestPlan` is suggested, which has a type of: + +```purescript +runPlutipTestPlan + :: PlutipConfig + -> ContractTestPlan + -> TestPlanM (Aff Unit) Unit +``` + +`runPlutipTestPlan` uses the exact same logic to perform `testPlutipContracts`, except it forgoes the use of `execDistribution` to create a `ContractTestPlan` from a `TestPlanM ContratTest Unit`. Instead, a `ContractTestPlan` is expected as the second parameter of the function, meaning that the test plan will need to be created before using `runPlutipTestPlan`. + +`Contract.Test.Plutip.sameWallets` is a helper function that can be used to create a `ContractTestPlan` where all of the tests use the same wallets that defined in the `UtxoDistribution`, this function has a type of: + +```purescript +sameWallets + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution distr wallets + => distr + -> TestPlanM (wallets -> Contract Unit) Unit + -> ContractTestPlan +``` + +Usage of `runPlutipTestPlan` is similar to that of `testPlutipContracts`, except that the distributions are handled slightly differently. Here's an example, while using `sameWallets`: + +```purescript +suite :: TestPlanM (Aff Unit) Unit +suite = runPlutipTestPlan config do + let + distribution :: Array BigInt /\ Array BigInt + distribution = ... + + sameWallets distribution $ + group "Test Plan" do + test "Test 1" \(alice /\ bob /\ charlie) -> do + ... + + test "Test 2" \(alice /\ bob /\ charlie) -> do + ... + + test "Test 3" \(alice /\ bob /\ charlie) -> do + ... +``` ### Testing in Aff context From 15b3f8621f9d284e26b8c8808004ac804e619989 Mon Sep 17 00:00:00 2001 From: MitchyCola Date: Wed, 3 Jan 2024 12:29:23 -0500 Subject: [PATCH 004/373] Fix Formattting --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 1a9eb7006..67d191092 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -181,7 +181,7 @@ suite = runPlutipTestPlan config do let distribution :: Array BigInt /\ Array BigInt distribution = ... - + sameWallets distribution $ group "Test Plan" do test "Test 1" \(alice /\ bob /\ charlie) -> do From c1c92e9ac42343ab76cd51ac8779374acb870c54 Mon Sep 17 00:00:00 2001 From: MitchyCola Date: Wed, 3 Jan 2024 12:31:29 -0500 Subject: [PATCH 005/373] Add PR Link to CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0070de9d..d7cfb1844 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -87,7 +87,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuild/) - also see the new [Makefile](./templates/ctl-scaffold/Makefile) setup and [NPM scripts](./templates/ctl-scaffold/package.json). -- Sharing wallets between Plutip tests +- Sharing wallets between Plutip tests ([#1585](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1585)) - `runPlutipTestPlan` is a new function that executes a `ContractTestPlan`. - `groupContractTestPlan` is a new function that uses `Mote.Monad.group` to combine `ContractTestPlan`s. - `sameWallets` is a new function that creates a `ContractTestPlan` from a `UtxoDistribution` and a `TestPlanM` of the same wallets running different `Contract`s. From 9b730f40edeca665d454079496c2f8dce2f9ec56 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 7 Jan 2024 21:50:43 +0300 Subject: [PATCH 006/373] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c2d164a06..817063c00 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ [docs badge]: https://img.shields.io/badge/docs-PureScript%20code%20documentation-%2377F [docs link]: https://plutonomicon.github.io/cardano-transaction-lib/ -**cardano-transaction-lib** (CTL) is a Purescript library for building smart contract transactions on Cardano. It aims to port the functionality and interface of Plutus off-chain code to the browser environment and NodeJS. +**cardano-transaction-lib** (CTL) is a Purescript framework for building smart contract transactions on Cardano. It belongs to the the same category of tools as Lucid, Mesh.js, Atlas, Plutus Application Backend (PAB). **Table of Contents** From 2153050bd1e29dac1fef991b3f92fcfb1fc733fd Mon Sep 17 00:00:00 2001 From: MitchyCola Date: Mon, 8 Jan 2024 01:38:44 -0500 Subject: [PATCH 007/373] Add Plutip Test for `sameWallets` --- CHANGELOG.md | 9 ++-- doc/plutip-testing.md | 6 +-- src/Contract/Test/Plutip.purs | 5 +- src/Internal/Test/ContractTest.purs | 25 --------- test/Plutip.purs | 9 +++- test/Plutip/SameWallets.purs | 79 +++++++++++++++++++++++++++++ 6 files changed, 97 insertions(+), 36 deletions(-) create mode 100644 test/Plutip/SameWallets.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index d7cfb1844..b3a6c6b35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,6 +66,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added +- Sharing wallets between Plutip tests ([#1585](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1585)) + - `runPlutipTestPlan` is a new function that executes a `ContractTestPlan`. + - `sameWallets` is a new function that creates a `ContractTestPlan` from a `UtxoDistribution` and a `TestPlanM` of the same wallets running different `Contract`s. + ### Changed ### Fixed @@ -87,11 +91,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuild/) - also see the new [Makefile](./templates/ctl-scaffold/Makefile) setup and [NPM scripts](./templates/ctl-scaffold/package.json). -- Sharing wallets between Plutip tests ([#1585](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1585)) - - `runPlutipTestPlan` is a new function that executes a `ContractTestPlan`. - - `groupContractTestPlan` is a new function that uses `Mote.Monad.group` to combine `ContractTestPlan`s. - - `sameWallets` is a new function that creates a `ContractTestPlan` from a `UtxoDistribution` and a `TestPlanM` of the same wallets running different `Contract`s. - ### Changed - PureScript compiler version has been updated to v0.15.8. ([#1521](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1521)) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 67d191092..1ea945159 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -160,9 +160,7 @@ runPlutipTestPlan -> TestPlanM (Aff Unit) Unit ``` -`runPlutipTestPlan` uses the exact same logic to perform `testPlutipContracts`, except it forgoes the use of `execDistribution` to create a `ContractTestPlan` from a `TestPlanM ContratTest Unit`. Instead, a `ContractTestPlan` is expected as the second parameter of the function, meaning that the test plan will need to be created before using `runPlutipTestPlan`. - -`Contract.Test.Plutip.sameWallets` is a helper function that can be used to create a `ContractTestPlan` where all of the tests use the same wallets that defined in the `UtxoDistribution`, this function has a type of: +`runPlutipTestPlan` uses the exact same logic to perform `testPlutipContracts`, except it requires that wallets are pre-allocated inside of the second parameter, which has a type of `ContractTestPlan`. `Contract.Test.Plutip.sameWallets` is a helper function that can be used to create a `ContractTestPlan` where all of the tests use the same wallets that are defined in the `UtxoDistribution`, this function has a type of: ```purescript sameWallets @@ -194,6 +192,8 @@ suite = runPlutipTestPlan config do ... ``` +Another example for using `sameWallets` can be found here. + ### Testing in Aff context Second approach is to use the `Contract.Test.Plutip.runPlutipContract` function, which takes a single `Contract`, launches a Plutip cluster and executes the passed contract. diff --git a/src/Contract/Test/Plutip.purs b/src/Contract/Test/Plutip.purs index c28c99358..010cc0390 100644 --- a/src/Contract/Test/Plutip.purs +++ b/src/Contract/Test/Plutip.purs @@ -2,6 +2,7 @@ -- | environment. module Contract.Test.Plutip ( PlutipTest + , PlutipTestPlan , defaultPlutipConfig , module X , runPlutipTestPlan @@ -20,8 +21,7 @@ import Ctl.Internal.Plutip.Types (PlutipConfig) as X import Ctl.Internal.Test.ContractTest (ContractTest) import Ctl.Internal.Test.ContractTest (ContractTest, ContractTestPlan) as Server import Ctl.Internal.Test.ContractTest - ( groupContractTestPlans - , noWallet + ( noWallet , sameWallets , withWallets ) as X @@ -56,6 +56,7 @@ runPlutipTestPlan = Server.runPlutipTestPlan -- | Type synonym for backwards compatibility. type PlutipTest = ContractTest +type PlutipTestPlan = Server.ContractTestPlan -- | A default value for `PlutipConfig` type. defaultPlutipConfig :: PlutipConfig diff --git a/src/Internal/Test/ContractTest.purs b/src/Internal/Test/ContractTest.purs index 30c37b62f..890576a01 100644 --- a/src/Internal/Test/ContractTest.purs +++ b/src/Internal/Test/ContractTest.purs @@ -3,7 +3,6 @@ module Ctl.Internal.Test.ContractTest , ContractTestHandler , ContractTestPlan(ContractTestPlan) , ContractTestPlanHandler - , groupContractTestPlans , noWallet , sameWallets , withWallets @@ -74,30 +73,6 @@ newtype ContractTestPlan = ContractTestPlan -> r ) -instance Semigroup ContractTestPlan where - append - (ContractTestPlan runContractTestPlan) - (ContractTestPlan runContractTestPlan') = - do - runContractTestPlan \distr tests -> do - runContractTestPlan' - \distr' tests' -> ContractTestPlan \h -> h (distr /\ distr') do - mapTest (_ <<< fst) tests - mapTest (_ <<< snd) tests' - --- | Group `ContractTestPlans` together, so that they can be ran in the same Plutip instance -groupContractTestPlans - :: String - -> ContractTestPlan - -> ContractTestPlan - -> ContractTestPlan -groupContractTestPlans title tp1 tp2 = - let - (ContractTestPlan runContractTestPlan) = tp1 <> tp2 - in - runContractTestPlan \distr tests -> ContractTestPlan \h -> h distr do - group title tests - -- | Same as `ContractTestHandler`, but wrapped in a `TestPlanM`. -- | It is used for the reconstruction of the `MoteT` value. -- | See the `Ctl.Internal.Plutip.execDistribution` function for more info. diff --git a/test/Plutip.purs b/test/Plutip.purs index d80ff7408..f11e42179 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -4,7 +4,12 @@ module Test.Ctl.Plutip import Prelude -import Contract.Test.Plutip (PlutipConfig, noWallet, testPlutipContracts) +import Contract.Test.Plutip + ( PlutipConfig + , noWallet + , runPlutipTestPlan + , testPlutipContracts + ) import Contract.Test.Utils (exitCode, interruptOnSignal) import Ctl.Internal.Contract.Monad (wrapQueryM) import Ctl.Internal.Plutip.Server @@ -39,6 +44,7 @@ import Test.Ctl.Plutip.Contract.NetworkId as NetworkId import Test.Ctl.Plutip.Contract.OgmiosMempool as OgmiosMempool import Test.Ctl.Plutip.ExUnits as ExUnits import Test.Ctl.Plutip.Logging as Logging +import Test.Ctl.Plutip.SameWallets as SameWallets import Test.Ctl.Plutip.UtxoDistribution as UtxoDistribution import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface import Test.Spec.Assertions (shouldSatisfy) @@ -68,6 +74,7 @@ main = interruptOnSignal SIGINT =<< launchAff do Contract.suite UtxoDistribution.suite testPlutipContracts config OgmiosMempool.suite + runPlutipTestPlan config SameWallets.suite configWithMaxExUnits :: PlutipConfig configWithMaxExUnits = config diff --git a/test/Plutip/SameWallets.purs b/test/Plutip/SameWallets.purs new file mode 100644 index 000000000..076cdab0c --- /dev/null +++ b/test/Plutip/SameWallets.purs @@ -0,0 +1,79 @@ +module Test.Ctl.Plutip.SameWallets + ( suite + ) where + +import Contract.Prelude + +import Contract.Address (PaymentPubKeyHash) +import Contract.Monad (Contract, liftedM) +import Contract.ScriptLookups as Lookups +import Contract.Test.Plutip (PlutipTestPlan, sameWallets, withKeyWallet) +import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) +import Contract.TxConstraints as Constraints +import Contract.Value (TokenName, Value) +import Contract.Value as Value +import Contract.Wallet (ownPaymentPubKeyHashes) +import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) +import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers +import Ctl.Internal.Test.UtxoDistribution (InitialUTxOs) +import Data.Array as Array +import JS.BigInt as BigInt +import Mote (group, test) + +suite :: PlutipTestPlan +suite = + let + distribution :: InitialUTxOs /\ InitialUTxOs + distribution = [ BigInt.fromInt 1_000_000_000 ] /\ + [ BigInt.fromInt 1_000_000_000 ] + + tokenNameAscii :: String + tokenNameAscii = "CTLNFT" + in + sameWallets distribution do + group "SameWallets" do + test "Alice mints some tokens" \(alice /\ _) -> do + tn <- Helpers.mkTokenName tokenNameAscii + withKeyWallet alice $ void $ alwaysMint tn + test "Alice sends a token to Bob" \(alice /\ bob) -> do + bobPKH <- withKeyWallet bob do + liftedM "Failed to get Bob's PKH" + $ Array.head + <$> ownPaymentPubKeyHashes + withKeyWallet alice do + cs <- Value.scriptCurrencySymbol <$> alwaysMintsPolicy + tn <- Helpers.mkTokenName tokenNameAscii + pkh2pkh bobPKH $ Value.singleton cs tn one + +alwaysMint :: TokenName -> Contract Unit +alwaysMint tn = do + mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy + let + constraints :: Constraints.TxConstraints + constraints = Constraints.mustMintValue + $ Value.singleton cs tn + $ BigInt.fromInt 100 + + lookups :: Lookups.ScriptLookups + lookups = Lookups.mintingPolicy mp + + submitTxFromConstraints lookups constraints + >>= awaitTxConfirmed + +pkh2pkh :: PaymentPubKeyHash -> Value -> Contract Unit +pkh2pkh recipient val = do + + pkh <- + liftedM "Failed to get own PKH" + $ Array.head + <$> ownPaymentPubKeyHashes + + let + constraints :: Constraints.TxConstraints + constraints = Constraints.mustPayToPubKey recipient val + + lookups :: Lookups.ScriptLookups + lookups = Lookups.ownPaymentPubKeyHash pkh + + submitTxFromConstraints lookups constraints + >>= awaitTxConfirmed From 6a8d53374eb76fb2cce12f053cf5185a1f2b19bf Mon Sep 17 00:00:00 2001 From: MitchyCola Date: Mon, 8 Jan 2024 01:41:46 -0500 Subject: [PATCH 008/373] Add Link to Plutip Test --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 1ea945159..49e2c4974 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -192,7 +192,7 @@ suite = runPlutipTestPlan config do ... ``` -Another example for using `sameWallets` can be found here. +Another example for using `sameWallets` can be found [here](../test/Plutip/SameWallets.purs). ### Testing in Aff context From 204b918a0e9376c447b341eaed92829bc3c69e7d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 8 Jan 2024 19:16:47 +0400 Subject: [PATCH 009/373] Replace csl-gc-{nodejs,browser} with csl-gc --- package-lock.json | 39 ++++++------------- package.json | 6 +-- src/Internal/Affjax.js | 9 ++++- src/Internal/ApplyArgs.js | 5 +-- src/Internal/BalanceTx/UtxoMinAda.js | 9 +---- src/Internal/Deserialization/FromBytes.js | 9 +---- src/Internal/Deserialization/Keys.js | 9 +---- src/Internal/Deserialization/Language.js | 9 +---- src/Internal/Deserialization/NativeScript.js | 9 +---- src/Internal/Deserialization/PlutusData.js | 9 +---- src/Internal/Deserialization/Transaction.js | 9 +---- src/Internal/Deserialization/UnspentOutput.js | 9 +---- src/Internal/Hashing.js | 9 +---- src/Internal/Serialization.js | 9 +---- src/Internal/Serialization/Address.js | 9 +---- src/Internal/Serialization/AuxiliaryData.js | 9 +---- src/Internal/Serialization/BigInt.js | 9 +---- src/Internal/Serialization/Hash.js | 9 +---- src/Internal/Serialization/Keys.js | 2 - src/Internal/Serialization/MinFee.js | 9 +---- src/Internal/Serialization/NativeScript.js | 9 +---- src/Internal/Serialization/PlutusData.js | 9 +---- src/Internal/Serialization/PlutusScript.js | 9 +---- src/Internal/Serialization/WitnessSet.js | 9 +---- src/Internal/Types/BigNum.js | 2 +- src/Internal/Types/Int.js | 2 +- src/Internal/Wallet/Bip32.js | 9 +---- test/Deserialization.purs | 26 ++++++++++++- test/Wallet/Cip30/SignData.js | 10 ++--- 29 files changed, 73 insertions(+), 208 deletions(-) diff --git a/package-lock.json b/package-lock.json index e33f06931..a04d37372 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", @@ -494,21 +493,13 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.7.tgz", + "integrity": "sha512-7yTg7HqdBt3W7b1Zffeflqqs9YG/7izTKLWrA1nJx2R00tf+2OhLyVtyj8A9GTzE6Flhznq857+QRtw/Cl8Kjw==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "dependencies": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, @@ -6618,21 +6609,13 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.7.tgz", + "integrity": "sha512-7yTg7HqdBt3W7b1Zffeflqqs9YG/7izTKLWrA1nJx2R00tf+2OhLyVtyj8A9GTzE6Flhznq857+QRtw/Cl8Kjw==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "requires": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, diff --git a/package.json b/package.json index 9cf1dee5f..4b459798c 100755 --- a/package.json +++ b/package.json @@ -1,8 +1,6 @@ { "type": "module", "name": "cardano-transaction-lib", - "version": "5.0.0", - "description": "", "repository": { "type": "git", "url": "https://github.com/Plutonomicon/cardano-transaction-lib.git" @@ -31,13 +29,11 @@ "webpack-bundle": "make webpack-bundle", "webpack-serve": "make webpack-serve" }, - "author": "", "license": "MIT", "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", diff --git a/src/Internal/Affjax.js b/src/Internal/Affjax.js index 83a9091df..f567a2dec 100644 --- a/src/Internal/Affjax.js +++ b/src/Internal/Affjax.js @@ -17,11 +17,16 @@ const browserDriver = { } }; +let nodeDriverCache = null; + async function nodeDriver() { + if (nodeDriverCache !== null) { + return nodeDriverCache; + } const { default: XHR } = await import("xhr2"); const { default: urllib } = await import("url"); - return { + nodeDriverCache = { newXHR: function () { return new XHR(); }, @@ -36,4 +41,6 @@ async function nodeDriver() { } } }; + + return nodeDriverCache; } diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js index 9ff670298..bc93f773d 100644 --- a/src/Internal/ApplyArgs.js +++ b/src/Internal/ApplyArgs.js @@ -1,12 +1,11 @@ /* global BROWSER_RUNTIME */ -let lib; +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; + let apply_args; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); apply_args = await import("apply-args-browser"); } else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); apply_args = await import("apply-args-nodejs"); } diff --git a/src/Internal/BalanceTx/UtxoMinAda.js b/src/Internal/BalanceTx/UtxoMinAda.js index 5b6910c84..c26911f91 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.js +++ b/src/Internal/BalanceTx/UtxoMinAda.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function minAdaForOutput(maybe) { return txOutput => dataCost => { diff --git a/src/Internal/Deserialization/FromBytes.js b/src/Internal/Deserialization/FromBytes.js index f7b57ae04..985f7ca88 100644 --- a/src/Internal/Deserialization/FromBytes.js +++ b/src/Internal/Deserialization/FromBytes.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _fromBytes(helper) { return name => bytes => { diff --git a/src/Internal/Deserialization/Keys.js b/src/Internal/Deserialization/Keys.js index 4beb728a4..60f8e7c65 100644 --- a/src/Internal/Deserialization/Keys.js +++ b/src/Internal/Deserialization/Keys.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function freshPrivateKey() { return lib.PrivateKey.generate_ed25519(); diff --git a/src/Internal/Deserialization/Language.js b/src/Internal/Deserialization/Language.js index e39c2a5aa..c299f8434 100644 --- a/src/Internal/Deserialization/Language.js +++ b/src/Internal/Deserialization/Language.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _convertLanguage(langCtors) { return cslLang => { diff --git a/src/Internal/Deserialization/NativeScript.js b/src/Internal/Deserialization/NativeScript.js index 4ef2dc16b..9cccf27f8 100644 --- a/src/Internal/Deserialization/NativeScript.js +++ b/src/Internal/Deserialization/NativeScript.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _convertNativeScript(handler) { return ns => { diff --git a/src/Internal/Deserialization/PlutusData.js b/src/Internal/Deserialization/PlutusData.js index 3d0c28805..44425ea4e 100644 --- a/src/Internal/Deserialization/PlutusData.js +++ b/src/Internal/Deserialization/PlutusData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _convertPlutusData(handle) { return pd => { diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index 57faa3572..2347ef92f 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Deserialization/UnspentOutput.js b/src/Internal/Deserialization/UnspentOutput.js index 61f5ecbee..3af30f47e 100644 --- a/src/Internal/Deserialization/UnspentOutput.js +++ b/src/Internal/Deserialization/UnspentOutput.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Hashing.js b/src/Internal/Hashing.js index 0b647d6da..6b8117f6f 100644 --- a/src/Internal/Hashing.js +++ b/src/Internal/Hashing.js @@ -1,16 +1,9 @@ /* global BROWSER_RUNTIME */ import Blake2 from "blakejs"; - import SHA256 from "jssha/sha256"; import SHA3 from "jssha/sha3"; - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function blake2b224Hash(bytesToHash) { return Blake2.blake2b(bytesToHash, null, 28); diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js index ee93d49db..d74552660 100644 --- a/src/Internal/Serialization.js +++ b/src/Internal/Serialization.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js index 083ece7f8..78800fccd 100644 --- a/src/Internal/Serialization/Address.js +++ b/src/Internal/Serialization/Address.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const callClassStaticMaybe = (classname, functionname) => maybe => input => { let ret = null; diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js index 33fd344de..367ec0b6c 100644 --- a/src/Internal/Serialization/AuxiliaryData.js +++ b/src/Internal/Serialization/AuxiliaryData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/BigInt.js b/src/Internal/Serialization/BigInt.js index dc61768cc..ad30d665c 100644 --- a/src/Internal/Serialization/BigInt.js +++ b/src/Internal/Serialization/BigInt.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _BigInt_from_str(helper) { return str => { diff --git a/src/Internal/Serialization/Hash.js b/src/Internal/Serialization/Hash.js index 1ac1b8c79..93d34250d 100644 --- a/src/Internal/Serialization/Hash.js +++ b/src/Internal/Serialization/Hash.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function hashToBytes(hash) { return hash.to_bytes(); diff --git a/src/Internal/Serialization/Keys.js b/src/Internal/Serialization/Keys.js index 3c80c09b4..9d80aa7ec 100644 --- a/src/Internal/Serialization/Keys.js +++ b/src/Internal/Serialization/Keys.js @@ -1,5 +1,3 @@ -/* global BROWSER_RUNTIME */ - const bytesFromKey = key => key.as_bytes(); export { bytesFromKey as bytesFromPublicKey }; diff --git a/src/Internal/Serialization/MinFee.js b/src/Internal/Serialization/MinFee.js index 52e0732ad..195564dc7 100644 --- a/src/Internal/Serialization/MinFee.js +++ b/src/Internal/Serialization/MinFee.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _minFee(maybe) { return tx => txFeeFixed => txFeePerByte => { diff --git a/src/Internal/Serialization/NativeScript.js b/src/Internal/Serialization/NativeScript.js index 810331fa7..030278d6c 100644 --- a/src/Internal/Serialization/NativeScript.js +++ b/src/Internal/Serialization/NativeScript.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const mkScript = prop => arg => lib.NativeScript[prop](arg); diff --git a/src/Internal/Serialization/PlutusData.js b/src/Internal/Serialization/PlutusData.js index 9c642c773..ff29181d8 100644 --- a/src/Internal/Serialization/PlutusData.js +++ b/src/Internal/Serialization/PlutusData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _mkPlutusData_bytes(bytes) { return lib.PlutusData.new_bytes(bytes); diff --git a/src/Internal/Serialization/PlutusScript.js b/src/Internal/Serialization/PlutusScript.js index ab48270fe..01933a33e 100644 --- a/src/Internal/Serialization/PlutusScript.js +++ b/src/Internal/Serialization/PlutusScript.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function newPlutusV1Script(bytes) { return lib.PlutusScript.new(bytes); diff --git a/src/Internal/Serialization/WitnessSet.js b/src/Internal/Serialization/WitnessSet.js index 96b8fd2cd..d916f7a67 100644 --- a/src/Internal/Serialization/WitnessSet.js +++ b/src/Internal/Serialization/WitnessSet.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function newTransactionWitnessSet() { return lib.TransactionWitnessSet.new(); diff --git a/src/Internal/Types/BigNum.js b/src/Internal/Types/BigNum.js index 5514c3054..2401539b9 100644 --- a/src/Internal/Types/BigNum.js +++ b/src/Internal/Types/BigNum.js @@ -4,7 +4,7 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc"); // lib = (await import("../../../../cardano-serialization-lib-gc/nodejs/index.js")); } diff --git a/src/Internal/Types/Int.js b/src/Internal/Types/Int.js index 8110b53cb..e2995b3fa 100644 --- a/src/Internal/Types/Int.js +++ b/src/Internal/Types/Int.js @@ -4,7 +4,7 @@ let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc"); } export const newPositive = lib.Int.new; diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js index 9518c9697..387882d8f 100644 --- a/src/Internal/Wallet/Bip32.js +++ b/src/Internal/Wallet/Bip32.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; import bip39 from "bip39"; diff --git a/test/Deserialization.purs b/test/Deserialization.purs index d3af68ab9..d2a4ab729 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -2,12 +2,15 @@ module Test.Ctl.Deserialization (suite) where import Prelude +import Aeson (decodeAeson, parseJsonStringToAeson) +import Contract.CborBytes (hexToCborBytesUnsafe) import Contract.Prim.ByteArray (ByteArray) import Contract.TextEnvelope ( TextEnvelope(TextEnvelope) , TextEnvelopeType(Other) , decodeTextEnvelope ) +import Contract.Wallet (privateKeyFromBytes) import Control.Monad.Error.Class (class MonadThrow, liftMaybe) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAny)) as T import Ctl.Internal.Cardano.Types.Transaction (Transaction, TransactionOutput) as T @@ -25,6 +28,7 @@ import Ctl.Internal.Deserialization.UnspentOutput , mkTransactionUnspentOutput ) import Ctl.Internal.Deserialization.WitnessSet (convertWitnessSet) +import Ctl.Internal.Plutip.Types (StartClusterResponse) import Ctl.Internal.Serialization (convertTransaction) as TS import Ctl.Internal.Serialization (convertTxInput, convertTxOutput) as Serialization import Ctl.Internal.Serialization.BigInt as SB @@ -40,7 +44,7 @@ import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.BigNum (fromBigInt, toBigInt) as BigNum import Ctl.Internal.Types.Transaction (TransactionInput) as T import Data.Array as Array -import Data.Either (hush) +import Data.Either (Either, hush, isRight) import Data.Foldable (fold) import Data.Maybe (isJust, isNothing) import Data.Newtype (unwrap, wrap) @@ -259,6 +263,20 @@ suite = do TextEnvelope envelope <- liftMaybe (error "Unexpected parsing error") $ decodeTextEnvelope otherTypeTextEnvelope envelope.type_ `shouldEqual` (Other "SomeOtherType") + group "PrivateKey" do + test "Decoding from bytes" do + let + fixture = + "8db3dc3d5310bcb9287610cfc45cf1c63620e8d66f0fdb36c27567b3f5e22d42" + mbKey = privateKeyFromBytes $ wrap $ unwrap $ hexToCborBytesUnsafe + fixture + isJust mbKey `shouldEqual` true + group "Plutip HTTP types" do + test "StartClusterResponse" do + let + (mbParams :: Either _ StartClusterResponse) = + decodeAeson =<< parseJsonStringToAeson plutipSuccessResponseFixture + mbParams `shouldSatisfy` isRight createUnspentOutput :: T.TransactionInput @@ -290,3 +308,9 @@ txRoundtrip tx = do expected <- errMaybe "Cannot convert TX from CSL to CTL" $ hush $ TD.convertTransaction cslTX tx `shouldEqual` expected + +plutipSuccessResponseFixture :: String +plutipSuccessResponseFixture = + """ +{"contents":{"keysDirectory":"/tmp/nix-shell.xvz2Lq/test-cluster149328/signing-keys","nodeConfigPath":"/tmp/nix-shell.xvz2Lq/test-cluster149328/pool-3/node.config","nodeSocketPath":"/tmp/nix-shell.xvz2Lq/test-cluster149328/pool-3/node.socket","privateKeys":["e61e29b40ba4e5a3100363d86669f3cb604ea3fc971b43510c97daeb9bf2e4e2","9cd3bd5deb0a04ef2e20160b85b889f32dfc66d2f7b7a0fac5aec3b1ad950227"]},"tag":"ClusterStartupSuccess"} +""" diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index 7d99800c5..7d30329e1 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -1,16 +1,14 @@ /* global BROWSER_RUNTIME */ -let lib, csl; +let lib; + +import * as csl from "@mlabs-haskell/cardano-serialization-lib-gc"; + if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { lib = await import("@emurgo/cardano-message-signing-browser"); - csl = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { lib = await import("@emurgo/cardano-message-signing-nodejs"); - csl = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); -// csl = gcWrapper(csl); function opt_chain(maybe, obj) { const isNothing = x => x === null || x === undefined; From 300fd54336741011871abb93c83f8eceecd6b588 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 8 Jan 2024 19:21:55 +0400 Subject: [PATCH 010/373] Update the template --- package-lock.json | 2 -- package.json | 1 - templates/ctl-scaffold/package-lock.json | 40 +++++++----------------- templates/ctl-scaffold/package.json | 4 +-- 4 files changed, 12 insertions(+), 35 deletions(-) diff --git a/package-lock.json b/package-lock.json index a04d37372..9aa2b6408 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,13 +6,11 @@ "packages": { "": { "name": "cardano-transaction-lib", - "version": "5.0.0", "license": "MIT", "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/package.json b/package.json index 4b459798c..37787853c 100755 --- a/package.json +++ b/package.json @@ -34,7 +34,6 @@ "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 7b3db0184..d0f09a2c0 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -11,9 +11,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -493,21 +491,13 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.7.tgz", + "integrity": "sha512-7yTg7HqdBt3W7b1Zffeflqqs9YG/7izTKLWrA1nJx2R00tf+2OhLyVtyj8A9GTzE6Flhznq857+QRtw/Cl8Kjw==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "dependencies": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, @@ -5761,21 +5751,13 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.7.tgz", + "integrity": "sha512-7yTg7HqdBt3W7b1Zffeflqqs9YG/7izTKLWrA1nJx2R00tf+2OhLyVtyj8A9GTzE6Flhznq857+QRtw/Cl8Kjw==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "requires": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" } }, diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 1997e2065..1ea0c8719 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -27,9 +27,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", From fc449c3a167f603cca64226ec649f5cf9de72c11 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 9 Jan 2024 17:23:42 +0400 Subject: [PATCH 011/373] Fix imports --- src/Internal/Types/BigNum.js | 10 +--------- src/Internal/Types/Int.js | 9 +-------- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/src/Internal/Types/BigNum.js b/src/Internal/Types/BigNum.js index 2401539b9..df50fcd94 100644 --- a/src/Internal/Types/BigNum.js +++ b/src/Internal/Types/BigNum.js @@ -1,12 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc"); - // lib = (await import("../../../../cardano-serialization-lib-gc/nodejs/index.js")); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function bnCompare(lhs) { return rhs => lhs.compare(rhs); diff --git a/src/Internal/Types/Int.js b/src/Internal/Types/Int.js index e2995b3fa..0451643da 100644 --- a/src/Internal/Types/Int.js +++ b/src/Internal/Types/Int.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export const newPositive = lib.Int.new; export const newNegative = lib.Int.new_negative; From 31b1392d515ddb1b450b2e5a943b104d59c5f654 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 9 Jan 2024 18:39:30 +0400 Subject: [PATCH 012/373] Bump csl-gc version --- package-lock.json | 16 ++++++++-------- package.json | 2 +- templates/ctl-scaffold/package-lock.json | 14 +++++++------- templates/ctl-scaffold/package.json | 2 +- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9aa2b6408..9c8e969c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.8", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -31,7 +31,7 @@ "devDependencies": { "buffer": "6.0.3", "doctoc": "^2.2.1", - "esbuild": "0.18.11", + "esbuild": "^0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", "node-polyfill-webpack-plugin": "2.0.1", @@ -492,9 +492,9 @@ "dev": true }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.7.tgz", - "integrity": "sha512-7yTg7HqdBt3W7b1Zffeflqqs9YG/7izTKLWrA1nJx2R00tf+2OhLyVtyj8A9GTzE6Flhznq857+QRtw/Cl8Kjw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.8.tgz", + "integrity": "sha512-LTVYL/3ld698sPsrjz30WNUNm3qP20NXFrcwnkTFY5Z7muIgCVkJwJtzuKJ+OJge98m0kM22pZcpY7amQfcTTg==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", @@ -6608,9 +6608,9 @@ "dev": true }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.7.tgz", - "integrity": "sha512-7yTg7HqdBt3W7b1Zffeflqqs9YG/7izTKLWrA1nJx2R00tf+2OhLyVtyj8A9GTzE6Flhznq857+QRtw/Cl8Kjw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.8.tgz", + "integrity": "sha512-LTVYL/3ld698sPsrjz30WNUNm3qP20NXFrcwnkTFY5Z7muIgCVkJwJtzuKJ+OJge98m0kM22pZcpY7amQfcTTg==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", diff --git a/package.json b/package.json index 37787853c..7d6486a23 100755 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.8", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index d0f09a2c0..502a82a8b 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.8", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -492,9 +492,9 @@ "dev": true }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.7.tgz", - "integrity": "sha512-7yTg7HqdBt3W7b1Zffeflqqs9YG/7izTKLWrA1nJx2R00tf+2OhLyVtyj8A9GTzE6Flhznq857+QRtw/Cl8Kjw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.8.tgz", + "integrity": "sha512-LTVYL/3ld698sPsrjz30WNUNm3qP20NXFrcwnkTFY5Z7muIgCVkJwJtzuKJ+OJge98m0kM22pZcpY7amQfcTTg==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", @@ -5752,9 +5752,9 @@ "dev": true }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.7.tgz", - "integrity": "sha512-7yTg7HqdBt3W7b1Zffeflqqs9YG/7izTKLWrA1nJx2R00tf+2OhLyVtyj8A9GTzE6Flhznq857+QRtw/Cl8Kjw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.8.tgz", + "integrity": "sha512-LTVYL/3ld698sPsrjz30WNUNm3qP20NXFrcwnkTFY5Z7muIgCVkJwJtzuKJ+OJge98m0kM22pZcpY7amQfcTTg==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 1ea0c8719..3946d6849 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -27,7 +27,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.7", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.8", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", From bddb48e56d8c1f7822f0fdb2c0e00863037835d7 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 11 Jan 2024 23:58:27 +0400 Subject: [PATCH 013/373] WIP: transition to ps-csl --- spago.dhall | 1 + src/Internal/Serialization.purs | 3 +- src/Internal/Serialization/AuxiliaryData.purs | 2 + src/Internal/Serialization/BigInt.js | 11 --- src/Internal/Serialization/BigInt.purs | 13 +-- src/Internal/Serialization/PlutusScript.js | 13 --- src/Internal/Serialization/PlutusScript.purs | 15 +-- src/Internal/Serialization/Types.purs | 91 +------------------ src/Internal/Types/BigNum.purs | 3 +- test/Deserialization.purs | 2 +- 10 files changed, 22 insertions(+), 132 deletions(-) delete mode 100644 src/Internal/Serialization/BigInt.js delete mode 100644 src/Internal/Serialization/PlutusScript.js diff --git a/spago.dhall b/spago.dhall index 7c92449b8..ee020a6b8 100644 --- a/spago.dhall +++ b/spago.dhall @@ -60,6 +60,7 @@ You can edit this file as you like. , "node-streams" , "nonempty" , "now" + , "nullable" , "numbers" , "optparse" , "ordered-collections" diff --git a/src/Internal/Serialization.purs b/src/Internal/Serialization.purs index 9fce4b348..9eb578f51 100644 --- a/src/Internal/Serialization.purs +++ b/src/Internal/Serialization.purs @@ -774,8 +774,7 @@ convertMint (T.Mint nonAdaAssets) = do forWithIndex_ values \tokenName' bigIntValue -> do let tokenName = TokenName.getTokenName tokenName' assetName <- newAssetName tokenName - bigInt <- fromJustEff "convertMint: failed to convert BigInt" $ - Serialization.convertBigInt bigIntValue + let bigInt = Serialization.convertBigInt bigIntValue int <- fromJustEff "convertMint: numeric overflow or underflow" $ _bigIntToInt maybeFfiHelper bigInt insertMintAsset assets assetName int diff --git a/src/Internal/Serialization/AuxiliaryData.purs b/src/Internal/Serialization/AuxiliaryData.purs index de2bf5873..5171e1448 100644 --- a/src/Internal/Serialization/AuxiliaryData.purs +++ b/src/Internal/Serialization/AuxiliaryData.purs @@ -5,6 +5,7 @@ module Ctl.Internal.Serialization.AuxiliaryData import Prelude +import Cardano.Serialization.Lib.Internal (packMapContainerFromMap) import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash @@ -35,6 +36,7 @@ import Ctl.Internal.Types.TransactionMetadata import Data.Map as Map import Data.Newtype (unwrap, wrap) import Data.Traversable (for, for_, traverse) +import Data.TraversableWithIndex (traverseWithIndex) import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) diff --git a/src/Internal/Serialization/BigInt.js b/src/Internal/Serialization/BigInt.js deleted file mode 100644 index ad30d665c..000000000 --- a/src/Internal/Serialization/BigInt.js +++ /dev/null @@ -1,11 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function _BigInt_from_str(helper) { - return str => { - try { - return helper.just(lib.BigInt.from_str(str)); - } catch (_) { - return helper.nothing; - } - }; -} diff --git a/src/Internal/Serialization/BigInt.purs b/src/Internal/Serialization/BigInt.purs index 8a0418ce9..e179760b3 100644 --- a/src/Internal/Serialization/BigInt.purs +++ b/src/Internal/Serialization/BigInt.purs @@ -4,12 +4,13 @@ module Ctl.Internal.Serialization.BigInt import Prelude -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) +import Cardano.Serialization.Lib (bigInt_fromStr) import Ctl.Internal.Serialization.Types (BigInt) -import Data.Maybe (Maybe) +import Data.Maybe (fromJust) +import Data.Nullable (toMaybe) import JS.BigInt as BigInt +import Partial.Unsafe (unsafePartial) -convertBigInt :: BigInt.BigInt -> Maybe BigInt -convertBigInt = _BigInt_from_str maybeFfiHelper <<< BigInt.toString - -foreign import _BigInt_from_str :: MaybeFfiHelper -> String -> Maybe BigInt +convertBigInt :: BigInt.BigInt -> BigInt +convertBigInt bi = unsafePartial $ fromJust $ toMaybe $ bigInt_fromStr $ + BigInt.toString bi diff --git a/src/Internal/Serialization/PlutusScript.js b/src/Internal/Serialization/PlutusScript.js deleted file mode 100644 index 01933a33e..000000000 --- a/src/Internal/Serialization/PlutusScript.js +++ /dev/null @@ -1,13 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function newPlutusV1Script(bytes) { - return lib.PlutusScript.new(bytes); -} - -export function newPlutusV2Script(bytes) { - return lib.PlutusScript.new_v2(bytes); -} - -export function plutusScriptBytes(script) { - return script.bytes(); -} diff --git a/src/Internal/Serialization/PlutusScript.purs b/src/Internal/Serialization/PlutusScript.purs index 341ed79f1..9ae6e28a3 100644 --- a/src/Internal/Serialization/PlutusScript.purs +++ b/src/Internal/Serialization/PlutusScript.purs @@ -1,26 +1,19 @@ module Ctl.Internal.Serialization.PlutusScript - ( plutusScriptBytes - , convertPlutusScript + ( convertPlutusScript ) where import Prelude +import Cardano.Serialization.Lib (plutusScript_new, plutusScript_newV2) import Ctl.Internal.Serialization.Types (PlutusScript) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.Scripts ( Language(PlutusV1, PlutusV2) , PlutusScript(PlutusScript) ) as T import Data.Tuple.Nested ((/\)) -foreign import plutusScriptBytes :: PlutusScript -> ByteArray - -foreign import newPlutusV1Script :: ByteArray -> PlutusScript - -foreign import newPlutusV2Script :: ByteArray -> PlutusScript - convertPlutusScript :: T.PlutusScript -> PlutusScript convertPlutusScript (T.PlutusScript (bytes /\ language)) = bytes # case language of - T.PlutusV1 -> newPlutusV1Script - T.PlutusV2 -> newPlutusV2Script + T.PlutusV1 -> plutusScript_new + T.PlutusV2 -> plutusScript_newV2 diff --git a/src/Internal/Serialization/Types.purs b/src/Internal/Serialization/Types.purs index 3e906b0ad..e4ec0e017 100644 --- a/src/Internal/Serialization/Types.purs +++ b/src/Internal/Serialization/Types.purs @@ -1,4 +1,8 @@ module Ctl.Internal.Serialization.Types + ( module X + ) where + +import Cardano.Serialization.Lib ( AssetName , Assets , AuxiliaryData @@ -83,89 +87,4 @@ module Ctl.Internal.Serialization.Types , Vkeywitness , Vkeywitnesses , Withdrawals - ) where - -foreign import data AssetName :: Type -foreign import data Assets :: Type -foreign import data AuxiliaryData :: Type -foreign import data AuxiliaryDataHash :: Type -foreign import data BigInt :: Type -foreign import data Bip32PrivateKey :: Type -foreign import data Bip32PublicKey :: Type -foreign import data BootstrapWitness :: Type -foreign import data BootstrapWitnesses :: Type -foreign import data Certificate :: Type -foreign import data Certificates :: Type -foreign import data ConstrPlutusData :: Type -foreign import data CostModel :: Type -foreign import data Costmdls :: Type -foreign import data DataCost :: Type -foreign import data DataHash :: Type -foreign import data Ed25519KeyHashes :: Type -foreign import data Ed25519Signature :: Type -foreign import data ExUnitPrices :: Type -foreign import data ExUnits :: Type -foreign import data GeneralTransactionMetadata :: Type -foreign import data GenesisDelegateHash :: Type -foreign import data GenesisHash :: Type -foreign import data GenesisKeyDelegation :: Type -foreign import data Ipv4 :: Type -foreign import data Ipv6 :: Type -foreign import data Language :: Type -foreign import data MIRToStakeCredentials :: Type -foreign import data MetadataList :: Type -foreign import data MetadataMap :: Type -foreign import data Mint :: Type -foreign import data MintAssets :: Type -foreign import data MoveInstantaneousReward :: Type -foreign import data MultiAsset :: Type -foreign import data MultiHostName :: Type -foreign import data NativeScript :: Type -foreign import data NativeScripts :: Type -foreign import data NetworkId :: Type -foreign import data Nonce :: Type -foreign import data PlutusData :: Type -foreign import data PlutusList :: Type -foreign import data PlutusMap :: Type -foreign import data PlutusScript :: Type -foreign import data PlutusScripts :: Type -foreign import data PoolMetadata :: Type -foreign import data PoolMetadataHash :: Type -foreign import data PoolParams :: Type -foreign import data ProposedProtocolParameterUpdates :: Type -foreign import data ProtocolParamUpdate :: Type -foreign import data ProtocolVersion :: Type -foreign import data PublicKey :: Type -foreign import data PrivateKey :: Type -foreign import data Redeemer :: Type -foreign import data RedeemerTag :: Type -foreign import data Redeemers :: Type -foreign import data Relay :: Type -foreign import data Relays :: Type -foreign import data ScriptAll :: Type -foreign import data ScriptAny :: Type -foreign import data ScriptDataHash :: Type -foreign import data ScriptNOfK :: Type -foreign import data ScriptPubkey :: Type -foreign import data ScriptRef :: Type -foreign import data SingleHostAddr :: Type -foreign import data SingleHostName :: Type -foreign import data TimelockExpiry :: Type -foreign import data TimelockStart :: Type -foreign import data Transaction :: Type -foreign import data TransactionBody :: Type -foreign import data TransactionHash :: Type -foreign import data TransactionInput :: Type -foreign import data TransactionInputs :: Type -foreign import data TransactionMetadatum :: Type -foreign import data TransactionOutput :: Type -foreign import data TransactionOutputs :: Type -foreign import data TransactionUnspentOutput :: Type -foreign import data TransactionWitnessSet :: Type -foreign import data UnitInterval :: Type -foreign import data Update :: Type -foreign import data Value :: Type -foreign import data Vkey :: Type -foreign import data Vkeywitness :: Type -foreign import data Vkeywitnesses :: Type -foreign import data Withdrawals :: Type + ) as X diff --git a/src/Internal/Types/BigNum.purs b/src/Internal/Types/BigNum.purs index e5a75d039..e696d55f6 100644 --- a/src/Internal/Types/BigNum.purs +++ b/src/Internal/Types/BigNum.purs @@ -21,6 +21,7 @@ import Prelude import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) import Aeson (JsonDecodeError(TypeMismatch)) as Aeson +import Cardano.Serialization.Lib (BigNum) import Ctl.Internal.Deserialization.Error (FromCslRepError, fromCslRepError) import Ctl.Internal.Error (E, noteE) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) @@ -34,8 +35,6 @@ import JS.BigInt (fromString, toString) as BigInt import Partial.Unsafe (unsafePartial) import Type.Row (type (+)) -foreign import data BigNum :: Type - instance Eq BigNum where eq lhs rhs = bnCompare lhs rhs == 0 diff --git a/test/Deserialization.purs b/test/Deserialization.purs index d2a4ab729..b0f25f4c6 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -100,7 +100,7 @@ suite = do test "Deserialization is inverse to serialization" do let bigInt = BigInt.fromInt 123 res <- errMaybe "Failed to serialize BigInt" do - DB.convertBigInt =<< SB.convertBigInt bigInt + DB.convertBigInt $ SB.convertBigInt bigInt res `shouldEqual` bigInt group "BigNum" do test "Deserialization is inverse to serialization" do From ebd61a84c5da7ae9dd79c1e6c9d674ca785f1f4f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 12 Jan 2024 21:46:22 +0400 Subject: [PATCH 014/373] Move to ps-bytearrays instead of an ad hoc module for ByteArray --- packages.dhall | 19 +++ spago.dhall | 1 + src/Contract/Backend/Ogmios/Mempool.purs | 2 +- src/Contract/Crypto/Secp256k1/ECDSA.purs | 2 +- src/Contract/Crypto/Secp256k1/Schnorr.purs | 2 +- src/Contract/Crypto/Secp256k1/Utils.purs | 2 +- src/Contract/Prim/ByteArray.purs | 22 +-- src/Contract/Test/Assert.purs | 2 +- src/Internal/BalanceTx/CoinSelection.purs | 2 +- src/Internal/BalanceTx/Sync.purs | 2 +- src/Internal/Cardano/TextEnvelope.purs | 2 +- src/Internal/Cardano/Types/NativeScript.purs | 2 +- src/Internal/Cardano/Types/Transaction.purs | 2 +- src/Internal/Cardano/Types/Value.purs | 14 +- src/Internal/Deserialization/FromBytes.purs | 2 +- .../Deserialization/NativeScript.purs | 2 +- src/Internal/Deserialization/PlutusData.purs | 2 +- src/Internal/Deserialization/Transaction.purs | 2 +- src/Internal/Deserialization/WitnessSet.purs | 2 +- src/Internal/FromData.purs | 2 +- src/Internal/Hashing.purs | 2 +- src/Internal/Metadata/Cip25/Cip25String.purs | 2 +- src/Internal/Metadata/Cip25/V2.purs | 2 +- src/Internal/Metadata/FromMetadata.purs | 2 +- src/Internal/Metadata/Helpers.purs | 2 +- src/Internal/Metadata/ToMetadata.purs | 2 +- src/Internal/Plutip/Types.purs | 2 +- src/Internal/Plutus/Types/CurrencySymbol.purs | 2 +- src/Internal/Plutus/Types/Value.purs | 2 +- src/Internal/ProcessConstraints/Error.purs | 2 +- src/Internal/QueryM.purs | 2 +- src/Internal/QueryM/Kupo.purs | 2 +- src/Internal/QueryM/Ogmios.purs | 12 +- src/Internal/QueryM/Pools.purs | 2 +- src/Internal/Serialization.purs | 2 +- src/Internal/Serialization/Address.purs | 2 +- src/Internal/Serialization/AuxiliaryData.purs | 2 +- src/Internal/Serialization/PlutusData.purs | 2 +- src/Internal/Serialization/ToBytes.purs | 2 +- src/Internal/Serialization/WitnessSet.purs | 2 +- src/Internal/Service/Blockfrost.purs | 2 +- src/Internal/Service/Helpers.purs | 2 +- src/Internal/Test/E2E/Route.purs | 2 +- src/Internal/ToData.purs | 2 +- src/Internal/TxOutput.purs | 2 +- src/Internal/Types/ByteArray.js | 113 --------------- src/Internal/Types/ByteArray.purs | 137 ------------------ src/Internal/Types/Cbor.purs | 4 +- src/Internal/Types/CborBytes.purs | 4 +- src/Internal/Types/OutputDatum.purs | 2 +- src/Internal/Types/PlutusData.purs | 2 +- src/Internal/Types/RawBytes.purs | 4 +- src/Internal/Types/Redeemer.purs | 2 +- src/Internal/Types/RewardAddress.purs | 2 +- src/Internal/Types/Scripts.purs | 2 +- src/Internal/Types/TokenName.purs | 2 +- src/Internal/Types/Transaction.purs | 4 +- src/Internal/Types/TransactionMetadata.purs | 2 +- src/Internal/Types/VRFKeyHash.purs | 2 +- src/Internal/Wallet/Cip30.purs | 2 +- src/Internal/Wallet/Cip30/SignData.purs | 2 +- src/Internal/Wallet/Cip30Mock.purs | 2 +- src/Internal/Wallet/KeyFile.purs | 2 +- test/ByteArray.purs | 2 +- test/CoinSelection/CoinSelection.purs | 2 +- test/Data.purs | 2 +- test/Fixtures.purs | 12 +- test/Hashing.purs | 8 +- test/NativeScript.purs | 2 +- test/QueryM/AffInterface.purs | 2 +- test/Serialization.purs | 2 +- test/Serialization/Address.purs | 2 +- test/Serialization/Hash.purs | 2 +- test/Transaction.purs | 2 +- test/Types/TokenName.purs | 2 +- test/Wallet/Cip30/SignData.purs | 2 +- 76 files changed, 125 insertions(+), 355 deletions(-) delete mode 100644 src/Internal/Types/ByteArray.js delete mode 100644 src/Internal/Types/ByteArray.purs diff --git a/packages.dhall b/packages.dhall index 43c24759f..45744ab9b 100644 --- a/packages.dhall +++ b/packages.dhall @@ -243,6 +243,25 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" , version = "d72e51fbc0255eb3246c9132d295de7f65e16a99" } + , bytearrays = + { dependencies = + [ "aeson" + , "aff" + , "arraybuffer-types" + , "effect" + , "either" + , "foldable-traversable" + , "maybe" + , "newtype" + , "prelude" + , "quickcheck" + , "quickcheck-laws" + , "spec" + , "strings" + ] + , repo = "https://github.com/mlabs-haskell/purescript-bytearrays" + , version = "e3991d562a04d8825472551d91a06407ad9c9112" + } } in upstream // additions diff --git a/spago.dhall b/spago.dhall index ee020a6b8..fa4cb17bf 100644 --- a/spago.dhall +++ b/spago.dhall @@ -17,6 +17,7 @@ You can edit this file as you like. , "avar" , "bifunctors" , "bignumber" + , "bytearrays" , "checked-exceptions" , "cip30" , "cip30-typesafe" diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs index 55bc13f3d..c5b8e6e1d 100644 --- a/src/Contract/Backend/Ogmios/Mempool.purs +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -32,9 +32,9 @@ import Ctl.Internal.QueryM.Ogmios , MempoolTransaction(MempoolTransaction) , TxHash ) as Ogmios -import Ctl.Internal.Types.ByteArray (hexToByteArray) import Ctl.Internal.Types.Transaction (TransactionHash) import Data.Array as Array +import Data.ByteArray (hexToByteArray) import Data.List (List(Cons)) import Data.Maybe (Maybe(Just, Nothing)) import Effect.Exception (error) diff --git a/src/Contract/Crypto/Secp256k1/ECDSA.purs b/src/Contract/Crypto/Secp256k1/ECDSA.purs index 82414448c..a39a10ef3 100644 --- a/src/Contract/Crypto/Secp256k1/ECDSA.purs +++ b/src/Contract/Crypto/Secp256k1/ECDSA.purs @@ -14,7 +14,7 @@ module Contract.Crypto.Secp256k1.ECDSA import Prelude import Contract.Crypto.Secp256k1 (Secp256k1PrivateKey) -import Ctl.Internal.Types.ByteArray (ByteArray) +import Data.ByteArray (ByteArray) import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) import Effect.Aff (Aff) diff --git a/src/Contract/Crypto/Secp256k1/Schnorr.purs b/src/Contract/Crypto/Secp256k1/Schnorr.purs index 7af5e6460..8df3865dc 100644 --- a/src/Contract/Crypto/Secp256k1/Schnorr.purs +++ b/src/Contract/Crypto/Secp256k1/Schnorr.purs @@ -12,7 +12,7 @@ module Contract.Crypto.Secp256k1.Schnorr import Prelude import Contract.Crypto.Secp256k1 (Secp256k1PrivateKey) -import Ctl.Internal.Types.ByteArray (ByteArray) +import Data.ByteArray (ByteArray) import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) import Effect.Aff (Aff) diff --git a/src/Contract/Crypto/Secp256k1/Utils.purs b/src/Contract/Crypto/Secp256k1/Utils.purs index 9f5e03096..e67550636 100644 --- a/src/Contract/Crypto/Secp256k1/Utils.purs +++ b/src/Contract/Crypto/Secp256k1/Utils.purs @@ -9,7 +9,7 @@ module Contract.Crypto.Secp256k1.Utils import Prelude import Contract.Crypto.Secp256k1 (Secp256k1PrivateKey) -import Ctl.Internal.Types.ByteArray (ByteArray) +import Data.ByteArray (ByteArray) import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) import Effect (Effect) diff --git a/src/Contract/Prim/ByteArray.purs b/src/Contract/Prim/ByteArray.purs index 51c34288e..843aff39e 100644 --- a/src/Contract/Prim/ByteArray.purs +++ b/src/Contract/Prim/ByteArray.purs @@ -5,17 +5,6 @@ module Contract.Prim.ByteArray , module RawBytes ) where -import Ctl.Internal.Types.ByteArray - ( ByteArray(ByteArray) - , byteArrayFromAscii - , byteArrayFromIntArray - , byteArrayFromIntArrayUnsafe - , byteArrayToHex - , byteArrayToIntArray - , byteLength - , hexToByteArray - , hexToByteArrayUnsafe - ) as ByteArray import Ctl.Internal.Types.CborBytes ( CborBytes(CborBytes) , cborBytesFromAscii @@ -41,3 +30,14 @@ import Ctl.Internal.Types.RawBytes , rawBytesToHex , rawBytesToIntArray ) as RawBytes +import Data.ByteArray + ( ByteArray(ByteArray) + , byteArrayFromAscii + , byteArrayFromIntArray + , byteArrayFromIntArrayUnsafe + , byteArrayToHex + , byteArrayToIntArray + , byteLength + , hexToByteArray + , hexToByteArrayUnsafe + ) as ByteArray diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 1577e0e1e..090ab3ff7 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -97,9 +97,9 @@ import Ctl.Internal.Plutus.Types.Transaction , _output , _scriptRef ) -import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Data.Array (foldr) import Data.Array (fromFoldable, length, mapWithIndex, partition) as Array +import Data.ByteArray (byteArrayToHex) import Data.Either (Either, either, hush) import Data.Foldable (fold, foldMap, null, sum) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index 19b2796cc..4f49fc339 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -52,12 +52,12 @@ import Ctl.Internal.CoinSelection.UtxoIndex , utxoIndexUniverse ) import Ctl.Internal.Plutus.Conversion (toPlutusValue) -import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.TokenName (getTokenName) as TokenName import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (snoc, uncons) as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (cons', fromArray, singleton, uncons) as NEArray +import Data.ByteArray (byteArrayToHex) import Data.Foldable (foldMap) as Foldable import Data.Function (applyFlipped) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 7895b6e39..aaa974b5b 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -35,11 +35,11 @@ import Ctl.Internal.Contract.Wallet ) import Ctl.Internal.Helpers (liftEither, liftedM) import Ctl.Internal.Serialization.Address (Address) -import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) import Ctl.Internal.Wallet (Wallet(GenericCip30)) import Data.Array as Array import Data.Bifunctor (bimap) +import Data.ByteArray (byteArrayToHex) import Data.Map as Map import Data.Maybe (Maybe(Just), fromMaybe, isJust, maybe) import Data.Monoid (guard) diff --git a/src/Internal/Cardano/TextEnvelope.purs b/src/Internal/Cardano/TextEnvelope.purs index 9cf47bb16..151eaeeaa 100644 --- a/src/Internal/Cardano/TextEnvelope.purs +++ b/src/Internal/Cardano/TextEnvelope.purs @@ -19,13 +19,13 @@ import Aeson , decodeAeson , parseJsonStringToAeson ) -import Ctl.Internal.Types.ByteArray (ByteArray, hexToByteArray) import Ctl.Internal.Types.Cbor (toByteArray) import Ctl.Internal.Types.Scripts ( PlutusScript , plutusV1Script , plutusV2Script ) +import Data.ByteArray (ByteArray, hexToByteArray) import Data.Either (hush) import Data.Maybe (Maybe(Nothing)) import Data.Newtype (class Newtype, wrap) diff --git a/src/Internal/Cardano/Types/NativeScript.purs b/src/Internal/Cardano/Types/NativeScript.purs index 8014cf544..592208ab7 100644 --- a/src/Internal/Cardano/Types/NativeScript.purs +++ b/src/Internal/Cardano/Types/NativeScript.purs @@ -30,9 +30,9 @@ import Ctl.Internal.Serialization.Hash ) import Ctl.Internal.Types.BigNum (fromString) import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Data.Array.NonEmpty (fromFoldable) +import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Log.Tag (TagSet, tag, tagSetTag) diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index 3aebed07a..461bfe044 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -132,7 +132,6 @@ import Ctl.Internal.Serialization.Types (Ed25519Signature, PublicKey) as Seriali import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayToHex) import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.OutputDatum ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) @@ -147,6 +146,7 @@ import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash) import Data.Array (union) +import Data.ByteArray (ByteArray, byteArrayToHex) import Data.Either (Either(Left), note) import Data.Generic.Rep (class Generic) import Data.Lens (lens') diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs index 567a189c0..01c804ceb 100644 --- a/src/Internal/Cardano/Types/Value.purs +++ b/src/Internal/Cardano/Types/Value.purs @@ -81,13 +81,6 @@ import Ctl.Internal.Serialization.Hash , scriptHashToBytes ) import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.ByteArray - ( ByteArray - , byteArrayFromIntArrayUnsafe - , byteArrayToHex - , byteLength - , hexToByteArray - ) import Ctl.Internal.Types.Scripts (MintingPolicyHash(MintingPolicyHash)) import Ctl.Internal.Types.TokenName ( TokenName @@ -103,6 +96,13 @@ import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (replicate, singleton, zipWith) as NEArray import Data.Bifunctor (bimap) import Data.Bitraversable (bitraverse, ltraverse) +import Data.ByteArray + ( ByteArray + , byteArrayFromIntArrayUnsafe + , byteArrayToHex + , byteLength + , hexToByteArray + ) import Data.Either (Either(Left), note) import Data.Foldable (any, fold, foldl, length) import Data.FoldableWithIndex (foldrWithIndex) diff --git a/src/Internal/Deserialization/FromBytes.purs b/src/Internal/Deserialization/FromBytes.purs index 5406e8d56..96648d605 100644 --- a/src/Internal/Deserialization/FromBytes.purs +++ b/src/Internal/Deserialization/FromBytes.purs @@ -41,8 +41,8 @@ import Ctl.Internal.Serialization.Types , Vkeywitness , Vkeywitnesses ) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes) +import Data.ByteArray (ByteArray) import Data.Either (hush) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap) diff --git a/src/Internal/Deserialization/NativeScript.purs b/src/Internal/Deserialization/NativeScript.purs index 43d9ab305..0e758b797 100644 --- a/src/Internal/Deserialization/NativeScript.purs +++ b/src/Internal/Deserialization/NativeScript.purs @@ -24,7 +24,7 @@ import Ctl.Internal.Serialization.Types , TimelockStart ) import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.ByteArray (ByteArray) +import Data.ByteArray (ByteArray) import Data.Either (Either, note) import Data.Newtype (wrap) diff --git a/src/Internal/Deserialization/PlutusData.purs b/src/Internal/Deserialization/PlutusData.purs index 7a8714796..eef0e501b 100644 --- a/src/Internal/Deserialization/PlutusData.purs +++ b/src/Internal/Deserialization/PlutusData.purs @@ -20,11 +20,11 @@ import Ctl.Internal.Serialization.Types , PlutusMap ) import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.PlutusData ( PlutusData(Constr, Map, List, Integer, Bytes) ) as T +import Data.ByteArray (ByteArray) import Data.Maybe (Maybe, fromJust) import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) diff --git a/src/Internal/Deserialization/Transaction.purs b/src/Internal/Deserialization/Transaction.purs index 522b5474f..c091648bb 100644 --- a/src/Internal/Deserialization/Transaction.purs +++ b/src/Internal/Deserialization/Transaction.purs @@ -181,7 +181,6 @@ import Ctl.Internal.Serialization.Types ) as Csl import Ctl.Internal.Types.BigNum (BigNum) as Csl import Ctl.Internal.Types.BigNum (toBigInt) as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Int (Int) as Csl import Ctl.Internal.Types.Int as Int @@ -195,6 +194,7 @@ import Ctl.Internal.Types.TransactionMetadata import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Bifunctor (bimap, lmap) import Data.Bitraversable (bitraverse) +import Data.ByteArray (ByteArray) import Data.Either (Either) import Data.Map as M import Data.Maybe (Maybe, fromMaybe) diff --git a/src/Internal/Deserialization/WitnessSet.purs b/src/Internal/Deserialization/WitnessSet.purs index f4783aa40..479860515 100644 --- a/src/Internal/Deserialization/WitnessSet.purs +++ b/src/Internal/Deserialization/WitnessSet.purs @@ -48,10 +48,10 @@ import Ctl.Internal.Serialization.Types ) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (toBigInt) as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.PlutusData (PlutusData) as T import Ctl.Internal.Types.RedeemerTag as Tag import Ctl.Internal.Types.Scripts (PlutusScript(PlutusScript)) as S +import Data.ByteArray (ByteArray) import Data.Maybe (Maybe) import Data.Tuple (curry) import Data.Tuple.Nested ((/\)) diff --git a/src/Internal/FromData.purs b/src/Internal/FromData.purs index fa4d284e2..60602150e 100644 --- a/src/Internal/FromData.purs +++ b/src/Internal/FromData.purs @@ -34,13 +34,13 @@ import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed ) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.PlutusData (PlutusData(Bytes, Constr, List, Integer)) import Ctl.Internal.Types.RawBytes (RawBytes) import Data.Array (uncons) import Data.Array as Array import Data.ArrayBuffer.Types (Uint8Array) +import Data.ByteArray (ByteArray) import Data.Either (Either(Left, Right), hush, note) import Data.Generic.Rep as G import Data.List (List) diff --git a/src/Internal/Hashing.purs b/src/Internal/Hashing.purs index 2d75443a1..2e999d846 100644 --- a/src/Internal/Hashing.purs +++ b/src/Internal/Hashing.purs @@ -32,10 +32,10 @@ import Ctl.Internal.Serialization.Types , PlutusScript , Transaction ) as Serialization -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.Scripts (PlutusScript) import Ctl.Internal.Types.Transaction (DataHash, TransactionHash) +import Data.ByteArray (ByteArray) import Data.Newtype (unwrap, wrap) import Effect (Effect) import Node.Buffer (fromString, toString) as Buffer diff --git a/src/Internal/Metadata/Cip25/Cip25String.purs b/src/Internal/Metadata/Cip25/Cip25String.purs index f2cde33c4..55aee12ce 100644 --- a/src/Internal/Metadata/Cip25/Cip25String.purs +++ b/src/Internal/Metadata/Cip25/Cip25String.purs @@ -24,11 +24,11 @@ import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.Metadata.FromMetadata (class FromMetadata, fromMetadata) import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.ByteArray (byteLength) import Ctl.Internal.Types.PlutusData (PlutusData) import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum) import Data.Array ((:)) import Data.Array as Array +import Data.ByteArray (byteLength) import Data.Either (note) import Data.Foldable (foldMap) import Data.Maybe (Maybe(Nothing, Just), isJust) diff --git a/src/Internal/Metadata/Cip25/V2.purs b/src/Internal/Metadata/Cip25/V2.purs index 7cdeefbbd..95094d80e 100644 --- a/src/Internal/Metadata/Cip25/V2.purs +++ b/src/Internal/Metadata/Cip25/V2.purs @@ -52,7 +52,6 @@ import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) import Ctl.Internal.Plutus.Types.AssocMap (Map(Map), singleton) as AssocMap import Ctl.Internal.Serialization.Hash (scriptHashFromBytes, scriptHashToBytes) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.ByteArray (byteArrayToHex, hexToByteArray) import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.PlutusData (PlutusData(Map, Integer)) import Ctl.Internal.Types.RawBytes (rawBytesToHex) @@ -64,6 +63,7 @@ import Ctl.Internal.Types.TransactionMetadata import Data.Array (catMaybes, concat, groupBy) import Data.Array.NonEmpty (NonEmptyArray, toArray) import Data.Array.NonEmpty (head) as NonEmpty +import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Either (Either(Left), note) import Data.Function (on) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/Metadata/FromMetadata.purs b/src/Internal/Metadata/FromMetadata.purs index 6f115b1e8..247561d97 100644 --- a/src/Internal/Metadata/FromMetadata.purs +++ b/src/Internal/Metadata/FromMetadata.purs @@ -2,12 +2,12 @@ module Ctl.Internal.Metadata.FromMetadata where import Prelude -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.Int (Int, toBigInt) as Int import Ctl.Internal.Types.TransactionMetadata ( TransactionMetadatum(MetadataList, Int, Bytes, Text) ) import Data.Array (toUnfoldable, uncons) as Array +import Data.ByteArray (ByteArray) import Data.Maybe (Maybe(Just, Nothing)) import Data.NonEmpty (NonEmpty, (:|)) import Data.Traversable (traverse) diff --git a/src/Internal/Metadata/Helpers.purs b/src/Internal/Metadata/Helpers.purs index ec4ae266e..b9321709a 100644 --- a/src/Internal/Metadata/Helpers.purs +++ b/src/Internal/Metadata/Helpers.purs @@ -9,11 +9,11 @@ module Ctl.Internal.Metadata.Helpers import Prelude import Aeson (JsonDecodeError(TypeMismatch)) -import Ctl.Internal.Types.ByteArray (byteArrayFromAscii) import Ctl.Internal.Types.PlutusData (PlutusData(Map, Bytes)) import Ctl.Internal.Types.TransactionMetadata ( TransactionMetadatum(MetadataMap, Text) ) +import Data.ByteArray (byteArrayFromAscii) import Data.Either (Either(Left)) import Data.Foldable (lookup) import Data.Map (lookup) as Map diff --git a/src/Internal/Metadata/ToMetadata.purs b/src/Internal/Metadata/ToMetadata.purs index b8dd0bf33..a06e1609a 100644 --- a/src/Internal/Metadata/ToMetadata.purs +++ b/src/Internal/Metadata/ToMetadata.purs @@ -5,11 +5,11 @@ module Ctl.Internal.Metadata.ToMetadata import Prelude -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.Int (Int, fromBigInt) as Int import Ctl.Internal.Types.TransactionMetadata ( TransactionMetadatum(MetadataMap, MetadataList, Int, Bytes, Text) ) +import Data.ByteArray (ByteArray) import Data.Map (Map) import Data.Map (fromFoldable, toUnfoldable) as Map import Data.Maybe (fromJust) diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index d2f7ba78c..19ca0e08b 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -35,8 +35,8 @@ import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.Serialization.Types (PrivateKey) import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) -import Ctl.Internal.Types.ByteArray (hexToByteArray) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) +import Data.ByteArray (hexToByteArray) import Data.Either (Either(Left), note) import Data.Generic.Rep (class Generic) import Data.Log.Level (LogLevel) diff --git a/src/Internal/Plutus/Types/CurrencySymbol.purs b/src/Internal/Plutus/Types/CurrencySymbol.purs index 3bc9af231..5cc1b652f 100644 --- a/src/Internal/Plutus/Types/CurrencySymbol.purs +++ b/src/Internal/Plutus/Types/CurrencySymbol.purs @@ -29,9 +29,9 @@ import Ctl.Internal.Serialization.Hash , scriptHashToBytes ) import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.ByteArray (ByteArray, hexToByteArrayUnsafe) import Ctl.Internal.Types.Scripts (MintingPolicyHash(MintingPolicyHash)) import Data.Array.NonEmpty (fromArray) +import Data.ByteArray (ByteArray, hexToByteArrayUnsafe) import Data.Either (Either(Left)) import Data.Maybe (Maybe, fromJust) import Data.Newtype (unwrap) diff --git a/src/Internal/Plutus/Types/Value.purs b/src/Internal/Plutus/Types/Value.purs index 3e3c31a00..ec0c852d1 100644 --- a/src/Internal/Plutus/Types/Value.purs +++ b/src/Internal/Plutus/Types/Value.purs @@ -54,9 +54,9 @@ import Ctl.Internal.Plutus.Types.CurrencySymbol ) import Ctl.Internal.QuickCheck (genPositive, unMaybeGen) import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.TokenName (TokenName, adaToken, mkTokenName) import Data.Array (concatMap, filter, replicate) +import Data.ByteArray (ByteArray) import Data.Either (Either(Left)) import Data.Foldable (all, fold) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index e7b96e4ee..137fd02ac 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -15,7 +15,6 @@ import Ctl.Internal.Serialization.Hash , ed25519KeyHashToBytes , scriptHashToBytes ) -import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) import Ctl.Internal.Types.Interval ( POSIXTimeRange @@ -33,6 +32,7 @@ import Ctl.Internal.Types.Scripts ) import Ctl.Internal.Types.TokenName (TokenName, fromTokenName) import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) +import Data.ByteArray (byteArrayToHex) import Data.Generic.Rep (class Generic) import Data.Log.Tag (tagSetTag) import Data.Maybe (Maybe(Just, Nothing)) diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 79137872d..13b41e9dd 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -149,13 +149,13 @@ import Ctl.Internal.Service.Error ( ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError) , ServiceError(ServiceOtherError) ) -import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.Scripts (PlutusScript) import Ctl.Internal.Types.SystemStart (SystemStart) import Ctl.Internal.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) import Data.Bifunctor (lmap) +import Data.ByteArray (byteArrayToHex) import Data.Either (Either(Left, Right), either, isRight) import Data.Foldable (foldl) import Data.HTTP.Method (Method(POST)) diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index 85395945b..897faa73a 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -71,7 +71,6 @@ import Ctl.Internal.ServerConfig (ServerConfig, mkHttpUrl) import Ctl.Internal.Service.Error (ClientError(ClientOtherError)) import Ctl.Internal.Service.Helpers (aesonArray, aesonObject, aesonString) import Ctl.Internal.Types.BigNum (toString) as BigNum -import Ctl.Internal.Types.ByteArray (byteArrayToHex, hexToByteArray) import Ctl.Internal.Types.CborBytes (CborBytes, hexToCborBytes) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) import Ctl.Internal.Types.OutputDatum @@ -88,6 +87,7 @@ import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Data.Array (uncons) import Data.Array as Array import Data.Bifunctor (lmap) +import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Either (Either(Left, Right), note) import Data.Foldable (fold) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index b9a0b0a70..5e2d2a5ec 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -149,12 +149,6 @@ import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromString) as BigNum -import Ctl.Internal.Types.ByteArray - ( ByteArray - , byteArrayFromIntArray - , byteArrayToHex - , hexToByteArray - ) import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) import Ctl.Internal.Types.Epoch (Epoch(Epoch)) import Ctl.Internal.Types.EraSummaries @@ -189,6 +183,12 @@ import Data.Argonaut.Encode.Encoders as Argonaut import Data.Array (catMaybes) import Data.Array (fromFoldable, length, replicate) as Array import Data.Bifunctor (lmap) +import Data.ByteArray + ( ByteArray + , byteArrayFromIntArray + , byteArrayToHex + , hexToByteArray + ) import Data.Either (Either(Left, Right), either, note) import Data.Foldable (fold, foldl) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index 8f17cb1f3..9172d30f8 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -26,11 +26,11 @@ import Ctl.Internal.Serialization.Hash , scriptHashToBech32Unsafe , scriptHashToBytes ) -import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) as X import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Scripts (StakeValidatorHash) +import Data.ByteArray (byteArrayToHex) import Data.Map (Map) import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just)) diff --git a/src/Internal/Serialization.purs b/src/Internal/Serialization.purs index 9eb578f51..bdab5e58f 100644 --- a/src/Internal/Serialization.purs +++ b/src/Internal/Serialization.purs @@ -148,7 +148,6 @@ import Ctl.Internal.Serialization.WitnessSet import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromStringUnsafe, toString) as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Int as Csl import Ctl.Internal.Types.OutputDatum @@ -160,6 +159,7 @@ import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2)) as S import Ctl.Internal.Types.TokenName (getTokenName) as TokenName import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) as T import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash), unVRFKeyHash) as T +import Data.ByteArray (ByteArray) import Data.Foldable (class Foldable) import Data.Foldable (null) as Foldable import Data.FoldableWithIndex (forWithIndex_) diff --git a/src/Internal/Serialization/Address.purs b/src/Internal/Serialization/Address.purs index c4432174c..fe56b6dee 100644 --- a/src/Internal/Serialization/Address.purs +++ b/src/Internal/Serialization/Address.purs @@ -101,9 +101,9 @@ import Ctl.Internal.Serialization.Types (Bip32PublicKey) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Aliases (Base58String, Bech32String) import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.PlutusData (PlutusData(Bytes)) +import Data.ByteArray (ByteArray) import Data.Either (note) import Data.Function (on) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/Serialization/AuxiliaryData.purs b/src/Internal/Serialization/AuxiliaryData.purs index 5171e1448..96f40e175 100644 --- a/src/Internal/Serialization/AuxiliaryData.purs +++ b/src/Internal/Serialization/AuxiliaryData.purs @@ -26,13 +26,13 @@ import Ctl.Internal.Serialization.Types import Ctl.Internal.Serialization.WitnessSet (addPlutusScript, newPlutusScripts) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt) as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.TransactionMetadata ( GeneralTransactionMetadata(GeneralTransactionMetadata) , TransactionMetadatum(Text, Bytes, Int, MetadataList, MetadataMap) , TransactionMetadatumLabel(TransactionMetadatumLabel) ) as T +import Data.ByteArray (ByteArray) import Data.Map as Map import Data.Newtype (unwrap, wrap) import Data.Traversable (for, for_, traverse) diff --git a/src/Internal/Serialization/PlutusData.purs b/src/Internal/Serialization/PlutusData.purs index e15a4bd44..24231cef2 100644 --- a/src/Internal/Serialization/PlutusData.purs +++ b/src/Internal/Serialization/PlutusData.purs @@ -19,8 +19,8 @@ import Ctl.Internal.Serialization.Types , PlutusMap ) import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.PlutusData as T +import Data.ByteArray (ByteArray) import Data.Maybe (Maybe, fromJust) import Data.Tuple (Tuple, fst, snd) import Data.Tuple.Nested (type (/\), (/\)) diff --git a/src/Internal/Serialization/ToBytes.purs b/src/Internal/Serialization/ToBytes.purs index e9b14b87e..8517daf67 100644 --- a/src/Internal/Serialization/ToBytes.purs +++ b/src/Internal/Serialization/ToBytes.purs @@ -33,8 +33,8 @@ import Ctl.Internal.Serialization.Types , Vkeywitnesses ) import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) +import Data.ByteArray (ByteArray) import Untagged.Castable (class Castable) import Untagged.Union (type (|+|)) diff --git a/src/Internal/Serialization/WitnessSet.purs b/src/Internal/Serialization/WitnessSet.purs index 5c09c17da..9bb9a7ecb 100644 --- a/src/Internal/Serialization/WitnessSet.purs +++ b/src/Internal/Serialization/WitnessSet.purs @@ -69,8 +69,8 @@ import Ctl.Internal.Serialization.Types (PlutusData) as PDS import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt) as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.RedeemerTag as Tag +import Data.ByteArray (ByteArray) import Data.Maybe (maybe) import Data.Traversable (for_, traverse, traverse_) import Data.Tuple.Nested ((/\)) diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 59abc11e2..be6b782a2 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -183,7 +183,6 @@ import Ctl.Internal.Service.Helpers import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayToHex) import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) import Ctl.Internal.Types.Chain (Tip(Tip, TipAtGenesis)) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) @@ -225,6 +224,7 @@ import Data.Array (find, length) as Array import Data.Bifunctor (lmap) import Data.BigNumber (BigNumber, toFraction) import Data.BigNumber as BigNumber +import Data.ByteArray (ByteArray, byteArrayToHex) import Data.DateTime.Instant (instant, toDateTime) import Data.Either (Either(Left, Right), either, hush, note) import Data.Foldable (fold) diff --git a/src/Internal/Service/Helpers.purs b/src/Internal/Service/Helpers.purs index 8e389cccb..fa24bb62a 100644 --- a/src/Internal/Service/Helpers.purs +++ b/src/Internal/Service/Helpers.purs @@ -16,8 +16,8 @@ import Aeson ) import Control.Apply (lift2) import Ctl.Internal.Cardano.Types.Value (CurrencySymbol, mkCurrencySymbol) -import Ctl.Internal.Types.ByteArray (hexToByteArray) import Ctl.Internal.Types.TokenName (TokenName, mkTokenName) +import Data.ByteArray (hexToByteArray) import Data.Either (Either(Left), note) import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\)) diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index 6bb113bf6..9ad212ba2 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -27,12 +27,12 @@ import Ctl.Internal.Serialization.Address (NetworkId(MainnetId)) import Ctl.Internal.Serialization.Types (PrivateKey) import Ctl.Internal.Test.E2E.Feedback.Browser (getClusterSetupRepeatedly) import Ctl.Internal.Test.E2E.Feedback.Hooks (addE2EFeedbackHooks) -import Ctl.Internal.Types.ByteArray (hexToByteArray) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) import Ctl.Internal.Wallet.Spec (WalletSpec(ConnectToEternl)) import Data.Array (last) import Data.Array as Array import Data.Bifunctor (lmap) +import Data.ByteArray (hexToByteArray) import Data.Either (Either(Left), note) import Data.Foldable (fold) import Data.Map (Map) diff --git a/src/Internal/ToData.purs b/src/Internal/ToData.purs index b1799f0d1..dc8e71d88 100644 --- a/src/Internal/ToData.purs +++ b/src/Internal/ToData.purs @@ -28,13 +28,13 @@ import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed ) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromInt, one, toBigInt, zero) as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray(ByteArray)) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.PlutusData (PlutusData(Constr, Integer, List, Bytes)) import Ctl.Internal.Types.RawBytes (RawBytes) import Data.Array (cons, sortWith) import Data.Array as Array import Data.ArrayBuffer.Types (Uint8Array) +import Data.ByteArray (ByteArray(ByteArray)) import Data.Either (Either(Left, Right)) import Data.Foldable (class Foldable) import Data.Generic.Rep as G diff --git a/src/Internal/TxOutput.purs b/src/Internal/TxOutput.purs index 8bbbb1020..532e0214c 100644 --- a/src/Internal/TxOutput.purs +++ b/src/Internal/TxOutput.purs @@ -20,7 +20,6 @@ import Ctl.Internal.Deserialization.PlutusData as Deserialization import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.Serialization (toBytes) import Ctl.Internal.Serialization.PlutusData as Serialization -import Ctl.Internal.Types.ByteArray (byteArrayToHex, hexToByteArray) import Ctl.Internal.Types.CborBytes (hexToCborBytes) import Ctl.Internal.Types.Datum (DataHash, Datum(Datum)) import Ctl.Internal.Types.OutputDatum @@ -29,6 +28,7 @@ import Ctl.Internal.Types.OutputDatum , outputDatumDatum ) import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) as Transaction +import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Maybe (Maybe(Just), fromMaybe, isNothing) import Data.Newtype (unwrap, wrap) import Data.Traversable (traverse) diff --git a/src/Internal/Types/ByteArray.js b/src/Internal/Types/ByteArray.js deleted file mode 100644 index 09bf1f2b1..000000000 --- a/src/Internal/Types/ByteArray.js +++ /dev/null @@ -1,113 +0,0 @@ -// From instance for Array in prelude -export function ord_(f) { - return xs => ys => { - let i = 0; - const xlen = xs.length; - const ylen = ys.length; - while (i < xlen && i < ylen) { - let o = f(xs[i])(ys[i]); - if (o !== 0) { - return o; - } - i++; - } - if (xlen === ylen) { - return 0; - } else if (xlen > ylen) { - return -1; - } else { - return 1; - } - }; -} - -export function concat_(xs) { - return ys => { - const res = new Uint8Array(xs.length + ys.length); - for (let i = 0; i < xs.length; i++) { - res[i] = xs[i]; - } - for (let i = 0; i < ys.length; i++) { - res[i + xs.length] = ys[i]; - } - return res; - }; -} - -export function byteArrayToHex(arr) { - return Buffer.from(arr).toString("hex"); -} - -/* adapted from https://github.com/WebReflection/uint8-to-utf16/blob/master/esm/index.js - * (someone who knows javascript should like import that or something) - */ -const { ceil } = Math; -const { fromCharCode } = String; - -export function byteArrayToUTF16le(uint8array) { - let extra = 0; - const output = []; - const { length } = uint8array; - const len = ceil(length / 2); - for (let j = 0, i = 0; i < len; i++) - output.push( - fromCharCode( - (uint8array[j++] << 8) + (j < length ? uint8array[j++] : extra++) - ) - ); - output.push(fromCharCode(extra)); - return output.join(""); -} - -export function hexToByteArray_(nothing) { - return just => hex => { - let bytes = []; - for (let c = 0; c < hex.length; c += 2) { - const chunk = hex.substr(c, 2); - if (/[0-9a-f]{2}/i.test(chunk)) { - bytes.push(parseInt(chunk, 16)); - } else { - return nothing; - } - } - return just(new Uint8Array(bytes)); - }; -} - -export function hexToByteArrayUnsafe(hex) { - let bytes = []; - for (let c = 0; c < hex.length; c += 2) { - bytes.push(parseInt(hex.substr(c, 2), 16)); - } - return new Uint8Array(bytes); -} - -export function byteArrayFromIntArrayUnsafe(ints) { - return new Uint8Array(ints); -} - -export function byteArrayFromInt16ArrayUnsafe(ints) { - return new Uint8Array(ints.buffer, ints.byteOffset, ints.byteLength); -} - -export function byteArrayFromIntArray_(nothing) { - return just => ints => { - if (ints.every(i => i < 256 && i >= 0)) { - return just(new Uint8Array(ints)); - } else { - return nothing; - } - }; -} - -export function byteArrayToIntArray(bytes) { - return Array.from(bytes); -} - -export function byteLength(bytes) { - return bytes.byteLength; -} - -export function subarray(start) { - return end => bytes => bytes.subarray(start, end); -} diff --git a/src/Internal/Types/ByteArray.purs b/src/Internal/Types/ByteArray.purs deleted file mode 100644 index 565d0e2fc..000000000 --- a/src/Internal/Types/ByteArray.purs +++ /dev/null @@ -1,137 +0,0 @@ --- | Our domain type for byte arrays, a wrapper over `Uint8Array`. -module Ctl.Internal.Types.ByteArray - ( ByteArray(ByteArray) - , byteArrayFromIntArray - , byteArrayFromIntArrayUnsafe - , byteArrayFromInt16ArrayUnsafe - , byteArrayFromAscii - , byteArrayToHex - , byteArrayToIntArray - , byteLength - , hexToByteArray - , hexToByteArrayUnsafe - , byteArrayToUTF16le - , subarray - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) - , caseAesonString - , encodeAeson - , toStringifiedNumbersJson - ) -import Data.ArrayBuffer.Types (Uint8Array) -import Data.Char (toCharCode) -import Data.Either (Either(Left), note) -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (class Newtype) -import Data.String.CodeUnits (toCharArray) -import Data.Traversable (for) -import Test.QuickCheck.Arbitrary - ( class Arbitrary - , class Coarbitrary - , arbitrary - , coarbitrary - ) - -newtype ByteArray = ByteArray Uint8Array - -derive instance Newtype ByteArray _ - -instance Show ByteArray where - show arr = "(hexToByteArrayUnsafe " <> show (byteArrayToHex arr) - <> ")" - -instance Eq ByteArray where - eq a b = compare a b == EQ - -instance Ord ByteArray where - compare = \xs ys -> compare 0 (ord_ toDelta xs ys) - where - toDelta x y = - case compare x y of - EQ -> 0 - LT -> 1 - GT -> -1 - -instance Semigroup ByteArray where - append = concat_ - -instance Monoid ByteArray where - mempty = byteArrayFromIntArrayUnsafe [] - -instance DecodeAeson ByteArray where - decodeAeson j = caseAesonString (Left typeMismatchError) - (note unexpectedValueError <<< hexToByteArray) - j - where - typeMismatchError = TypeMismatch "expected a hex-encoded string" - unexpectedValueError = UnexpectedValue $ toStringifiedNumbersJson j - -instance EncodeAeson ByteArray where - encodeAeson ba = encodeAeson (byteArrayToHex ba) - -foreign import ord_ :: (Int -> Int -> Int) -> ByteArray -> ByteArray -> Int - -foreign import concat_ :: ByteArray -> ByteArray -> ByteArray - -foreign import byteArrayToHex :: ByteArray -> String - -foreign import hexToByteArray_ - :: (forall (a :: Type). Maybe a) - -> (forall (a :: Type). a -> Maybe a) - -> String - -> Maybe ByteArray - --- | Input string must consist of hexadecimal numbers. --- | Length of the input string must be even (2 characters per byte). -hexToByteArray :: String -> Maybe ByteArray -hexToByteArray = hexToByteArray_ Nothing Just - --- | Characters not in range will be converted to zero. -foreign import hexToByteArrayUnsafe :: String -> ByteArray - --- | Overflowing integers will be silently accepted modulo 256. -foreign import byteArrayFromIntArrayUnsafe :: Array Int -> ByteArray - -foreign import byteArrayFromIntArray_ - :: (forall (a :: Type). Maybe a) - -> (forall (a :: Type). a -> Maybe a) - -> Array Int - -> Maybe ByteArray - --- | A safer version of `byteArrayFromIntArrayUnsafe` that checks that elements are in range 0-255. -byteArrayFromIntArray :: Array Int -> Maybe ByteArray -byteArrayFromIntArray = byteArrayFromIntArray_ Nothing Just - -foreign import byteArrayToIntArray :: ByteArray -> Array Int - -foreign import byteLength :: ByteArray -> Int - --- | Given a begin offset (inclusive) and end offset (exclusive), efficiently --- | create a new `ByteArray` backed by the same underlying buffer. -foreign import subarray :: Int -> Int -> ByteArray -> ByteArray - -instance Arbitrary ByteArray where - arbitrary = byteArrayFromIntArrayUnsafe <$> arbitrary - -instance Coarbitrary ByteArray where - coarbitrary bytes generator = coarbitrary (byteArrayToIntArray bytes) - generator - --- | Convert characters in range `0-255` into a `ByteArray`. --- | Fails with `Nothing` if there are characters out of this range in a string. -byteArrayFromAscii :: String -> Maybe ByteArray -byteArrayFromAscii str = do - byteArrayFromIntArrayUnsafe <$> for (toCharArray str) \cp -> do - let charCode = toCharCode cp - if charCode <= 255 && charCode >= 0 then pure charCode - else Nothing - -foreign import byteArrayFromInt16ArrayUnsafe :: Array Int -> ByteArray - -foreign import byteArrayToUTF16le :: ByteArray -> String diff --git a/src/Internal/Types/Cbor.purs b/src/Internal/Types/Cbor.purs index 0245de4e9..b4c1a2459 100644 --- a/src/Internal/Types/Cbor.purs +++ b/src/Internal/Types/Cbor.purs @@ -22,13 +22,13 @@ import Prelude import Contract.Prelude (foldl) import Control.Monad.Except (Except, runExcept, throwError) import Control.Monad.State.Trans (StateT, evalStateT, get, put) -import Ctl.Internal.Types.ByteArray +import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) +import Data.ByteArray ( ByteArray , byteArrayToIntArray , byteLength , subarray ) -import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) import Data.Either (Either) import Data.Newtype (class Newtype) import Data.UInt (UInt, shl, zshr, (.&.), (.|.)) diff --git a/src/Internal/Types/CborBytes.purs b/src/Internal/Types/CborBytes.purs index 4d69c1d5e..fee1c2a86 100644 --- a/src/Internal/Types/CborBytes.purs +++ b/src/Internal/Types/CborBytes.purs @@ -19,9 +19,9 @@ import Prelude import Aeson (class DecodeAeson, class EncodeAeson) import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.Types.ByteArray (ByteArray) -import Ctl.Internal.Types.ByteArray as ByteArray import Ctl.Internal.Types.RawBytes (RawBytes) +import Data.ByteArray (ByteArray) +import Data.ByteArray as ByteArray import Data.Maybe (Maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Test.QuickCheck.Arbitrary (class Arbitrary) diff --git a/src/Internal/Types/OutputDatum.purs b/src/Internal/Types/OutputDatum.purs index cb4ff8f33..e1a9f8804 100644 --- a/src/Internal/Types/OutputDatum.purs +++ b/src/Internal/Types/OutputDatum.purs @@ -27,10 +27,10 @@ import Ctl.Internal.Plutus.Types.DataSchema ) import Ctl.Internal.ToData (class ToData, genericToData) import Ctl.Internal.TypeLevel.Nat (S, Z) -import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.PlutusData (pprintPlutusData) import Ctl.Internal.Types.Transaction (DataHash) +import Data.ByteArray (byteArrayToHex) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Log.Tag (TagSet, tag, tagSetTag) diff --git a/src/Internal/Types/PlutusData.purs b/src/Internal/Types/PlutusData.purs index d9a67c594..907d9025c 100644 --- a/src/Internal/Types/PlutusData.purs +++ b/src/Internal/Types/PlutusData.purs @@ -23,7 +23,7 @@ import Aeson import Control.Alt ((<|>)) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) +import Data.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Log.Tag (TagSet, tag, tagSetTag) diff --git a/src/Internal/Types/RawBytes.purs b/src/Internal/Types/RawBytes.purs index 9be49b1c3..897be26bd 100644 --- a/src/Internal/Types/RawBytes.purs +++ b/src/Internal/Types/RawBytes.purs @@ -19,8 +19,8 @@ import Prelude import Aeson (class DecodeAeson, class EncodeAeson) import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.Types.ByteArray (ByteArray) -import Ctl.Internal.Types.ByteArray as BytesArray +import Data.ByteArray (ByteArray) +import Data.ByteArray as BytesArray import Data.Maybe (Maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Test.QuickCheck.Arbitrary (class Arbitrary) diff --git a/src/Internal/Types/Redeemer.purs b/src/Internal/Types/Redeemer.purs index 786f8836c..13ddeacea 100644 --- a/src/Internal/Types/Redeemer.purs +++ b/src/Internal/Types/Redeemer.purs @@ -12,8 +12,8 @@ import Ctl.Internal.Hashing (hashPlutusData) import Ctl.Internal.Serialization (toBytes) import Ctl.Internal.Serialization.PlutusData (convertPlutusData) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.ByteArray (ByteArray(ByteArray)) import Ctl.Internal.Types.PlutusData (PlutusData) +import Data.ByteArray (ByteArray(ByteArray)) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) diff --git a/src/Internal/Types/RewardAddress.purs b/src/Internal/Types/RewardAddress.purs index 99b48400d..6e2150736 100644 --- a/src/Internal/Types/RewardAddress.purs +++ b/src/Internal/Types/RewardAddress.purs @@ -20,10 +20,10 @@ import Ctl.Internal.Serialization.Address import Ctl.Internal.Serialization.Address as Csl import Ctl.Internal.ToData (class ToData) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Scripts (StakeValidatorHash) +import Data.ByteArray (ByteArray) import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) diff --git a/src/Internal/Types/Scripts.purs b/src/Internal/Types/Scripts.purs index 7159515e1..46081c3ee 100644 --- a/src/Internal/Types/Scripts.purs +++ b/src/Internal/Types/Scripts.purs @@ -36,7 +36,7 @@ import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBech32Unsafe) import Ctl.Internal.ToData (class ToData) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.ByteArray (ByteArray) +import Data.ByteArray (ByteArray) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap) diff --git a/src/Internal/Types/TokenName.purs b/src/Internal/Types/TokenName.purs index 86593a9d3..d2b3edd4e 100644 --- a/src/Internal/Types/TokenName.purs +++ b/src/Internal/Types/TokenName.purs @@ -25,10 +25,10 @@ import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) import Ctl.Internal.Serialization.Types (AssetName) as CSL import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayToHex, byteLength) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) import Data.ArrayBuffer.Types (Uint8Array) import Data.Bitraversable (ltraverse) +import Data.ByteArray (ByteArray, byteArrayToHex, byteLength) import Data.Either (Either(Right, Left), either, note) import Data.Map (Map) import Data.Map (fromFoldable) as Map diff --git a/src/Internal/Types/Transaction.purs b/src/Internal/Types/Transaction.purs index 1377c96ed..b59bc7283 100644 --- a/src/Internal/Types/Transaction.purs +++ b/src/Internal/Types/Transaction.purs @@ -12,12 +12,12 @@ import Aeson (class DecodeAeson, class EncodeAeson) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.BigNum (zero) as BigNum -import Ctl.Internal.Types.ByteArray +import Ctl.Internal.Types.PlutusData (PlutusData(Constr)) +import Data.ByteArray ( ByteArray , byteArrayFromIntArrayUnsafe , byteArrayToHex ) -import Ctl.Internal.Types.PlutusData (PlutusData(Constr)) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe(Nothing)) import Data.Newtype (class Newtype, wrap) diff --git a/src/Internal/Types/TransactionMetadata.purs b/src/Internal/Types/TransactionMetadata.purs index c92752e99..95a8e3b40 100644 --- a/src/Internal/Types/TransactionMetadata.purs +++ b/src/Internal/Types/TransactionMetadata.purs @@ -19,8 +19,8 @@ import Ctl.Internal.Helpers , encodeTagged' , showWithParens ) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.Int (Int) as Int +import Data.ByteArray (ByteArray) import Data.Generic.Rep (class Generic) import Data.Map (Map) import Data.Map (empty) as Map diff --git a/src/Internal/Types/VRFKeyHash.purs b/src/Internal/Types/VRFKeyHash.purs index 9df554187..c82e544ea 100644 --- a/src/Internal/Types/VRFKeyHash.purs +++ b/src/Internal/Types/VRFKeyHash.purs @@ -11,7 +11,7 @@ import Aeson (class EncodeAeson, encodeAeson) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Serialization.Hash as Serialization import Ctl.Internal.Serialization.ToBytes (toBytes) -import Ctl.Internal.Types.ByteArray (ByteArray, byteArrayToHex) +import Data.ByteArray (ByteArray, byteArrayToHex) import Data.Function (on) import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index 977bc565d..79530133e 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -38,7 +38,6 @@ import Ctl.Internal.Serialization.Address ) import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.ByteArray (byteArrayToHex) import Ctl.Internal.Types.CborBytes ( CborBytes , cborBytesToHex @@ -46,6 +45,7 @@ import Ctl.Internal.Types.CborBytes , rawBytesAsCborBytes ) import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesToHex) +import Data.ByteArray (byteArrayToHex) import Data.Maybe (Maybe(Nothing), maybe) import Data.Newtype (unwrap) import Data.Traversable (for, traverse) diff --git a/src/Internal/Wallet/Cip30/SignData.purs b/src/Internal/Wallet/Cip30/SignData.purs index b7c8741c4..ff85043c9 100644 --- a/src/Internal/Wallet/Cip30/SignData.purs +++ b/src/Internal/Wallet/Cip30/SignData.purs @@ -9,10 +9,10 @@ import Ctl.Internal.Serialization.Keys ) import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Serialization.Types (PrivateKey) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) import Ctl.Internal.Wallet.Cip30 (DataSignature) +import Data.ByteArray (ByteArray) import Effect (Effect) foreign import data COSESign1Builder :: Type diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 10b0324de..8365f3693 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -35,7 +35,6 @@ import Ctl.Internal.Serialization.Address ) import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) import Ctl.Internal.Serialization.WitnessSet (convertWitnessSet) -import Ctl.Internal.Types.ByteArray (byteArrayToHex, hexToByteArray) import Ctl.Internal.Types.CborBytes (cborBytesFromByteArray, cborBytesToHex) import Ctl.Internal.Types.PubKeyHash ( PubKeyHash(PubKeyHash) @@ -64,6 +63,7 @@ import Ctl.Internal.Wallet.Key , privateKeysToKeyWallet ) import Data.Array as Array +import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Either (hush) import Data.Foldable (fold, foldMap) import Data.Function.Uncurried (Fn2, mkFn2) diff --git a/src/Internal/Wallet/KeyFile.purs b/src/Internal/Wallet/KeyFile.purs index b51afcec8..f6cf52c2d 100644 --- a/src/Internal/Wallet/KeyFile.purs +++ b/src/Internal/Wallet/KeyFile.purs @@ -28,12 +28,12 @@ import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.Helpers (liftM) import Ctl.Internal.Serialization.Keys (bytesFromPrivateKey) import Ctl.Internal.Serialization.Types (PrivateKey) -import Ctl.Internal.Types.ByteArray (ByteArray) import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Wallet.Key ( PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) ) +import Data.ByteArray (ByteArray) import Data.Maybe (Maybe(Nothing)) import Data.Newtype (wrap) import Effect.Aff (Aff) diff --git a/test/ByteArray.purs b/test/ByteArray.purs index 57b147199..bf88df26f 100644 --- a/test/ByteArray.purs +++ b/test/ByteArray.purs @@ -3,7 +3,7 @@ module Test.Ctl.ByteArray where import Prelude import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.ByteArray +import Data.ByteArray ( ByteArray , byteArrayFromIntArray , byteArrayFromIntArrayUnsafe diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index 499db9afa..b395f4759 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -25,10 +25,10 @@ import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex) import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex import Ctl.Internal.Hashing (blake2b224Hash) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.ByteArray (byteArrayFromAscii) import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum)) import Ctl.Internal.Types.TokenName (TokenName, mkTokenName) import Ctl.Internal.Types.Transaction (TransactionInput) +import Data.ByteArray (byteArrayFromAscii) import Data.Foldable (fold, foldMap) import Data.Generic.Rep (class Generic) import Data.Map (fromFoldable, values) as Map diff --git a/test/Data.purs b/test/Data.purs index 8271ca5a6..34de6518d 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -31,9 +31,9 @@ import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed , NilI ) import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) import Ctl.Internal.Types.PlutusData (PlutusData(Constr, Integer)) import Data.Array.NonEmpty (fromNonEmpty) as NEArray +import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) import Data.Generic.Rep as G import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 32872c707..4492c7af0 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -175,12 +175,6 @@ import Ctl.Internal.Serialization.Hash , scriptHashFromBytes ) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.ByteArray - ( ByteArray - , byteArrayFromIntArrayUnsafe - , hexToByteArray - , hexToByteArrayUnsafe - ) import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) @@ -209,6 +203,12 @@ import Ctl.Internal.Types.TransactionMetadata , TransactionMetadatumLabel(TransactionMetadatumLabel) ) import Data.Array as Array +import Data.ByteArray + ( ByteArray + , byteArrayFromIntArrayUnsafe + , hexToByteArray + , hexToByteArrayUnsafe + ) import Data.Either (fromRight, hush) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) diff --git a/test/Hashing.purs b/test/Hashing.purs index 11c92b5a2..67c226ed3 100644 --- a/test/Hashing.purs +++ b/test/Hashing.purs @@ -14,14 +14,14 @@ import Ctl.Internal.Hashing ) as Hashing import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashFromBytes) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.ByteArray +import Ctl.Internal.Types.PlutusData (PlutusData(Integer)) +import Ctl.Internal.Types.Scripts (PlutusScript, plutusV1Script, plutusV2Script) +import Ctl.Internal.Types.Transaction (DataHash) +import Data.ByteArray ( ByteArray , byteArrayFromAscii , hexToByteArrayUnsafe ) -import Ctl.Internal.Types.PlutusData (PlutusData(Integer)) -import Ctl.Internal.Types.Scripts (PlutusScript, plutusV1Script, plutusV2Script) -import Ctl.Internal.Types.Transaction (DataHash) import Data.Maybe (fromJust) import Data.Newtype (wrap) import Effect.Aff (Aff) diff --git a/test/NativeScript.purs b/test/NativeScript.purs index 29b90adf7..235a58604 100644 --- a/test/NativeScript.purs +++ b/test/NativeScript.purs @@ -13,7 +13,7 @@ import Ctl.Internal.Serialization.Hash , ed25519KeyHashFromBytes ) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) +import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Right)) import Data.Maybe (fromJust) import Data.Set as Set diff --git a/test/QueryM/AffInterface.purs b/test/QueryM/AffInterface.purs index 0403920f9..8f4d33eea 100644 --- a/test/QueryM/AffInterface.purs +++ b/test/QueryM/AffInterface.purs @@ -7,7 +7,7 @@ import Ctl.Internal.QueryM (QueryM, getChainTip, submitTxOgmios) import Ctl.Internal.QueryM.CurrentEpoch (getCurrentEpoch) import Ctl.Internal.QueryM.EraSummaries (getEraSummaries) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) +import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) import Data.Maybe (isJust) import Data.Newtype (wrap) diff --git a/test/Serialization.purs b/test/Serialization.purs index 64c3a6fb3..19ba96cad 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -19,9 +19,9 @@ import Ctl.Internal.Serialization.PlutusData (convertPlutusData) import Ctl.Internal.Serialization.Types (TransactionHash) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.BigNum (fromString, one) as BN -import Ctl.Internal.Types.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Ctl.Internal.Types.CborBytes (cborBytesToHex) import Ctl.Internal.Types.PlutusData as PD +import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Data.Either (hush) import Data.Maybe (Maybe, isJust, isNothing) import Data.Newtype (unwrap, wrap) diff --git a/test/Serialization/Address.purs b/test/Serialization/Address.purs index a67c88d9e..094d63c0d 100644 --- a/test/Serialization/Address.purs +++ b/test/Serialization/Address.purs @@ -42,7 +42,7 @@ import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (fromInt, fromStringUnsafe) as BigNum -import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) +import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (Maybe(Nothing)) import Data.Newtype (unwrap, wrap) import Effect.Aff (Aff) diff --git a/test/Serialization/Hash.purs b/test/Serialization/Hash.purs index bd9da66ac..06170a2f1 100644 --- a/test/Serialization/Hash.purs +++ b/test/Serialization/Hash.purs @@ -15,7 +15,7 @@ import Ctl.Internal.Serialization.Hash ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) +import Data.ByteArray (hexToByteArrayUnsafe) import Data.Eq ((==)) import Data.Function (($)) import Data.Maybe (Maybe(Just, Nothing), isNothing) diff --git a/test/Transaction.purs b/test/Transaction.purs index 6a144d9b6..8aa301163 100644 --- a/test/Transaction.purs +++ b/test/Transaction.purs @@ -22,7 +22,6 @@ import Ctl.Internal.Transaction , attachRedeemer , setScriptDataHash ) -import Ctl.Internal.Types.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Ctl.Internal.Types.Datum (Datum(Datum)) import Ctl.Internal.Types.PlutusData (PlutusData(Integer)) import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend)) @@ -30,6 +29,7 @@ import Ctl.Internal.Types.Scripts ( Language(PlutusV1, PlutusV2) , PlutusScript(PlutusScript) ) +import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (over, unwrap) import Data.Tuple.Nested ((/\)) diff --git a/test/Types/TokenName.purs b/test/Types/TokenName.purs index 8ce938451..c0ca65e61 100644 --- a/test/Types/TokenName.purs +++ b/test/Types/TokenName.purs @@ -3,8 +3,8 @@ module Test.Ctl.Types.TokenName (suite) where import Prelude import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.ByteArray (hexToByteArrayUnsafe) import Ctl.Internal.Types.TokenName (mkTokenName) +import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (isJust) import Data.Traversable (for_) import Effect.Aff (Aff) diff --git a/test/Wallet/Cip30/SignData.purs b/test/Wallet/Cip30/SignData.purs index c9c9e0939..4a6e48e92 100644 --- a/test/Wallet/Cip30/SignData.purs +++ b/test/Wallet/Cip30/SignData.purs @@ -22,7 +22,6 @@ import Ctl.Internal.Serialization.Keys import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Serialization.Types (PrivateKey, PublicKey) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.ByteArray (byteArrayFromIntArrayUnsafe) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.RawBytes (RawBytes) import Ctl.Internal.Wallet.Cip30 (DataSignature) @@ -32,6 +31,7 @@ import Ctl.Internal.Wallet.Key , PrivateStakeKey , privateKeysToAddress ) +import Data.ByteArray (byteArrayFromIntArrayUnsafe) import Data.Maybe (Maybe(Just), fromJust, fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Traversable (traverse_) From 51c3dd9d01607618cc3851d910a1df9ebf147d51 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 12 Jan 2024 21:47:14 +0400 Subject: [PATCH 015/373] Transaction BigNum module to CSL autogenerated stuff --- src/Internal/Types/BigNum.js | 42 ------------------------ src/Internal/Types/BigNum.purs | 58 ++++++++++++++++++++++------------ 2 files changed, 37 insertions(+), 63 deletions(-) delete mode 100644 src/Internal/Types/BigNum.js diff --git a/src/Internal/Types/BigNum.js b/src/Internal/Types/BigNum.js deleted file mode 100644 index df50fcd94..000000000 --- a/src/Internal/Types/BigNum.js +++ /dev/null @@ -1,42 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function bnCompare(lhs) { - return rhs => lhs.compare(rhs); -} - -export const zero = lib.BigNum.zero(); -export const one = lib.BigNum.one(); - -export function bnAdd(maybe) { - return lhs => rhs => { - try { - return maybe.just(lhs.checked_add(rhs)); - } catch (_) { - return maybe.nothing; - } - }; -} - -export function bnMul(maybe) { - return lhs => rhs => { - try { - return maybe.just(lhs.checked_mul(rhs)); - } catch (_) { - return maybe.nothing; - } - }; -} - -export function _fromString(maybe) { - return str => { - try { - return maybe.just(lib.BigNum.from_str(str)); - } catch (_) { - return maybe.nothing; - } - }; -} - -export function toString(bn) { - return bn.to_str(); -} diff --git a/src/Internal/Types/BigNum.purs b/src/Internal/Types/BigNum.purs index e696d55f6..ccecf37a6 100644 --- a/src/Internal/Types/BigNum.purs +++ b/src/Internal/Types/BigNum.purs @@ -1,10 +1,12 @@ module Ctl.Internal.Types.BigNum ( BigNum , add + , divFloor , fromBigInt , fromInt , fromString , fromStringUnsafe + , fromUInt , maxValue , mul , one @@ -12,7 +14,6 @@ module Ctl.Internal.Types.BigNum , toInt , toInt' , toString - , fromUInt , toUInt , zero ) where @@ -21,26 +22,43 @@ import Prelude import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) import Aeson (JsonDecodeError(TypeMismatch)) as Aeson -import Cardano.Serialization.Lib (BigNum) +import Cardano.Serialization.Lib + ( bigNum_checkedAdd + , bigNum_checkedMul + , bigNum_compare + , bigNum_divFloor + , bigNum_fromStr + , bigNum_maxValue + , bigNum_one + , bigNum_toStr + , bigNum_zero + ) +import Cardano.Serialization.Lib as Csl import Ctl.Internal.Deserialization.Error (FromCslRepError, fromCslRepError) import Ctl.Internal.Error (E, noteE) -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Data.Either (note) import Data.Int (fromString) as Int import Data.Maybe (Maybe, fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) import Data.UInt (UInt) import Data.UInt (fromInt, fromString, toString) as UInt import JS.BigInt (BigInt) import JS.BigInt (fromString, toString) as BigInt import Partial.Unsafe (unsafePartial) +import Safe.Coerce (coerce) import Type.Row (type (+)) +newtype BigNum = BigNum Csl.BigNum + +derive instance Newtype BigNum _ + instance Eq BigNum where - eq lhs rhs = bnCompare lhs rhs == 0 + eq x y = compare x y == EQ instance Ord BigNum where - compare lhs rhs = - case bnCompare lhs rhs of + compare (BigNum lhs) (BigNum rhs) = + case bigNum_compare lhs rhs of 1 -> GT 0 -> EQ _ -> LT @@ -75,21 +93,20 @@ toInt' nm bn = noteE (fromCslRepError (nm <> ": CSL.BigNum (" <> show bn <> ") -> Int ")) $ toInt bn -foreign import bnCompare :: BigNum -> BigNum -> Int - -foreign import zero :: BigNum +one :: BigNum +one = BigNum bigNum_one -foreign import one :: BigNum - -foreign import bnAdd :: MaybeFfiHelper -> BigNum -> BigNum -> Maybe BigNum +zero :: BigNum +zero = BigNum bigNum_zero add :: BigNum -> BigNum -> Maybe BigNum -add = bnAdd maybeFfiHelper - -foreign import bnMul :: MaybeFfiHelper -> BigNum -> BigNum -> Maybe BigNum +add (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedAdd a b mul :: BigNum -> BigNum -> Maybe BigNum -mul = bnMul maybeFfiHelper +mul (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedMul a b + +divFloor :: BigNum -> BigNum -> BigNum +divFloor (BigNum a) (BigNum b) = BigNum $ bigNum_divFloor a b -- | Converts an `Int` to a `BigNum` turning negative `Int`s into `BigNum`s -- | in range from `2^31` to `2^32-1`. @@ -98,18 +115,17 @@ fromInt = -- Converting `UInt` (u32) to a `BigNum` (u64) should never fail. fromStringUnsafe <<< UInt.toString <<< UInt.fromInt -foreign import _fromString :: MaybeFfiHelper -> String -> Maybe BigNum +toString :: BigNum -> String +toString = unwrap >>> bigNum_toStr fromString :: String -> Maybe BigNum -fromString = _fromString maybeFfiHelper +fromString = map wrap <<< toMaybe <<< bigNum_fromStr fromStringUnsafe :: String -> BigNum fromStringUnsafe = unsafePartial fromJust <<< fromString -foreign import toString :: BigNum -> String - maxValue :: BigNum -maxValue = fromStringUnsafe "18446744073709551615" +maxValue = BigNum bigNum_maxValue fromUInt :: UInt -> BigNum fromUInt = fromStringUnsafe <<< UInt.toString From d91d4c34bf9e954e00c46f6cc844271a8a9a7dee Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 12 Jan 2024 21:47:47 +0400 Subject: [PATCH 016/373] Transition NativeScript to use ps-csl --- src/Internal/Serialization/Hash.purs | 44 ++++++------ src/Internal/Serialization/NativeScript.js | 38 ----------- src/Internal/Serialization/NativeScript.purs | 71 ++++++++------------ 3 files changed, 53 insertions(+), 100 deletions(-) delete mode 100644 src/Internal/Serialization/NativeScript.js diff --git a/src/Internal/Serialization/Hash.purs b/src/Internal/Serialization/Hash.purs index af5b1fcad..79e0358fe 100644 --- a/src/Internal/Serialization/Hash.purs +++ b/src/Internal/Serialization/Hash.purs @@ -24,6 +24,9 @@ import Aeson , caseAesonString , encodeAeson ) +import Cardano.Serialization.Lib (fromBytes, nativeScript_hash, toBytes) +import Cardano.Serialization.Lib as CSL +import Cardano.Serialization.Lib as Csl import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Ctl.Internal.FromData (class FromData) import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) @@ -31,26 +34,25 @@ import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) import Ctl.Internal.Serialization.Types (NativeScript) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.ByteArray +import Ctl.Internal.Types.PlutusData (PlutusData(Bytes)) +import Ctl.Internal.Types.RawBytes (RawBytes, rawBytesToHex) +import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Bytes)) as Metadata +import Data.ByteArray ( ByteArray , byteArrayFromIntArrayUnsafe , byteArrayToHex , hexToByteArray ) -import Ctl.Internal.Types.PlutusData (PlutusData(Bytes)) -import Ctl.Internal.Types.RawBytes (RawBytes, rawBytesToHex) -import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Bytes)) as Metadata import Data.Either (Either(Left, Right), note) import Data.Function (on) import Data.Maybe (Maybe(Nothing, Just), fromJust, maybe) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (class Newtype, unwrap, wrap) import Partial.Unsafe (unsafePartial) import Test.QuickCheck.Arbitrary (class Arbitrary) import Test.QuickCheck.Gen (chooseInt, vectorOf) --- We can't use ToBytes class here, because of cyclic dependencies --- | Encodes the hash to `CborBytes` -foreign import hashToBytes :: forall (a :: Type). a -> ByteArray +nativeScriptHash :: NativeScript -> ScriptHash +nativeScriptHash = nativeScript_hash >>> wrap -- We can't use FromBytes class here, because of cyclic dependencies -- | Decodes `CborBytes` to the hash @@ -61,8 +63,6 @@ foreign import hashFromBytes -> ByteArray -> Maybe a -foreign import nativeScriptHash :: NativeScript -> ScriptHash - foreign import hashToBech32Unsafe :: forall (a :: Type) . String @@ -86,9 +86,9 @@ foreign import _scriptHashFromBech32Impl -> Bech32String -> Maybe ScriptHash --- | PubKeyHash and StakeKeyHash refers to blake2b-224 hash digests of Ed25519 --- | verification keys -foreign import data Ed25519KeyHash :: Type +newtype Ed25519KeyHash = Ed25519KeyHash CSL.Ed25519KeyHash + +derive instance Newtype Ed25519KeyHash _ instance Eq Ed25519KeyHash where eq = eq `on` ed25519KeyHashToBytes @@ -139,13 +139,13 @@ ed25519KeyHashToBech32Unsafe ∷ String → Ed25519KeyHash → Bech32String ed25519KeyHashToBech32Unsafe = hashToBech32Unsafe ed25519KeyHashToBytes :: Ed25519KeyHash -> RawBytes -ed25519KeyHashToBytes = wrap <<< hashToBytes +ed25519KeyHashToBytes = wrap <<< toBytes <<< unwrap scriptHashToBech32Unsafe ∷ String → ScriptHash → Bech32String scriptHashToBech32Unsafe = hashToBech32Unsafe ed25519KeyHashFromBytes :: ByteArray -> Maybe Ed25519KeyHash -ed25519KeyHashFromBytes = hashFromBytes "Ed25519KeyHash" maybeFfiHelper +ed25519KeyHashFromBytes = map wrap <<< fromBytes ed25519KeyHashFromBech32 :: Bech32String -> Maybe Ed25519KeyHash ed25519KeyHashFromBech32 = _ed25519KeyHashFromBech32Impl maybeFfiHelper @@ -157,7 +157,9 @@ ed25519KeyHashToBech32 :: String -> Ed25519KeyHash -> Maybe Bech32String ed25519KeyHashToBech32 = _ed25519KeyHashToBech32Impl maybeFfiHelper -- | blake2b-224 hash digests of serialized monetary scripts -foreign import data ScriptHash :: Type +newtype ScriptHash = ScriptHash Csl.ScriptHash + +derive instance Newtype ScriptHash _ instance Eq ScriptHash where eq = eq `on` scriptHashToBytes @@ -196,7 +198,7 @@ _ed25519KeyHashToBech32Impl _ed25519KeyHashToBech32Impl = hashToBech32Impl scriptHashToBytes :: ScriptHash -> RawBytes -scriptHashToBytes = wrap <<< hashToBytes +scriptHashToBytes = wrap <<< toBytes <<< unwrap _scriptHashToBech32Impl ∷ MaybeFfiHelper → String → ScriptHash → Maybe Bech32String @@ -217,13 +219,15 @@ scriptHashFromBech32 = _scriptHashFromBech32Impl maybeFfiHelper scriptHashToBech32 :: String -> ScriptHash -> Maybe Bech32String scriptHashToBech32 = _scriptHashToBech32Impl maybeFfiHelper -foreign import data VRFKeyHash :: Type +newtype VRFKeyHash = VRFKeyHash Csl.VRFKeyHash + +derive instance Newtype VRFKeyHash _ instance Show VRFKeyHash where - show = hashToBytes >>> byteArrayToHex + show = unwrap >>> toBytes >>> byteArrayToHex instance Eq VRFKeyHash where eq = eq `on` show instance EncodeAeson VRFKeyHash where - encodeAeson = hashToBytes >>> byteArrayToHex >>> encodeAeson + encodeAeson = unwrap >>> toBytes >>> byteArrayToHex >>> encodeAeson diff --git a/src/Internal/Serialization/NativeScript.js b/src/Internal/Serialization/NativeScript.js deleted file mode 100644 index 030278d6c..000000000 --- a/src/Internal/Serialization/NativeScript.js +++ /dev/null @@ -1,38 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -const mkScript = prop => arg => lib.NativeScript[prop](arg); - -export function mkScriptPubkey(keyHash) { - return lib.ScriptPubkey.new(keyHash); -} - -export const nativeScript_new_script_pubkey = mkScript("new_script_pubkey"); -export const nativeScript_new_script_all = mkScript("new_script_all"); -export const nativeScript_new_script_any = mkScript("new_script_any"); -export const nativeScript_new_script_n_of_k = mkScript("new_script_n_of_k"); -export const nativeScript_new_timelock_start = mkScript("new_timelock_start"); -export const nativeScript_new_timelock_expiry = mkScript("new_timelock_expiry"); - -export function _packNativeScripts(helper) { - return nss => helper.pack(lib.NativeScripts, nss); -} - -export function mkScriptAll(nss) { - return lib.ScriptAll.new(nss); -} - -export function mkScriptAny(nss) { - return lib.ScriptAny.new(nss); -} - -export function mkScriptNOfK(n) { - return nss => lib.ScriptNOfK.new(n, nss); -} - -export function mkTimelockExpiry(n) { - return lib.TimelockExpiry.new_timelockexpiry(n); -} - -export function mkTimelockStart(n) { - return lib.TimelockStart.new_timelockstart(n); -} diff --git a/src/Internal/Serialization/NativeScript.purs b/src/Internal/Serialization/NativeScript.purs index feb4d2cdf..8122115b1 100644 --- a/src/Internal/Serialization/NativeScript.purs +++ b/src/Internal/Serialization/NativeScript.purs @@ -5,6 +5,21 @@ module Ctl.Internal.Serialization.NativeScript import Prelude +import Cardano.Serialization.Lib + ( nativeScript_newScriptAll + , nativeScript_newScriptAny + , nativeScript_newScriptNOfK + , nativeScript_newScriptPubkey + , nativeScript_newTimelockExpiry + , nativeScript_newTimelockStart + , scriptAll_new + , scriptAny_new + , scriptNOfK_new + , scriptPubkey_new + , timelockExpiry_newTimelockexpiry + , timelockStart_newTimelockstart + ) +import Cardano.Serialization.Lib.Internal (packListContainer) import Ctl.Internal.Cardano.Types.NativeScript ( NativeScript ( ScriptPubkey @@ -15,23 +30,14 @@ import Ctl.Internal.Cardano.Types.NativeScript , TimelockExpiry ) ) as T -import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) import Ctl.Internal.Serialization.Address (Slot(Slot)) as T import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) as T -import Ctl.Internal.Serialization.Types - ( NativeScript - , NativeScripts - , ScriptAll - , ScriptAny - , ScriptNOfK - , ScriptPubkey - , TimelockExpiry - , TimelockStart - ) -import Ctl.Internal.Types.BigNum (BigNum) +import Ctl.Internal.Serialization.Types (NativeScript, NativeScripts) +import Data.Int as Int +import Data.Newtype (unwrap) convertNativeScripts :: Array T.NativeScript -> NativeScripts -convertNativeScripts = packNativeScripts <<< map convertNativeScript +convertNativeScripts = packListContainer <<< map convertNativeScript -- | Note: unbounded recursion here. convertNativeScript :: T.NativeScript -> NativeScript @@ -45,47 +51,28 @@ convertNativeScript = case _ of convertScriptPubkey :: T.Ed25519KeyHash -> NativeScript convertScriptPubkey hash = do - nativeScript_new_script_pubkey $ mkScriptPubkey hash + nativeScript_newScriptPubkey $ scriptPubkey_new (unwrap hash) convertScriptAll :: Array T.NativeScript -> NativeScript convertScriptAll nss = - nativeScript_new_script_all <<< mkScriptAll <<< - packNativeScripts $ map convertNativeScript nss + nativeScript_newScriptAll <<< scriptAll_new <<< + packListContainer $ map convertNativeScript nss convertScriptAny :: Array T.NativeScript -> NativeScript convertScriptAny nss = - nativeScript_new_script_any <<< mkScriptAny <<< - packNativeScripts $ map convertNativeScript nss + nativeScript_newScriptAny <<< scriptAny_new <<< + packListContainer $ map convertNativeScript nss convertScriptNOfK :: Int -> Array T.NativeScript -> NativeScript convertScriptNOfK n nss = - nativeScript_new_script_n_of_k <<< mkScriptNOfK n <<< - packNativeScripts $ map convertNativeScript nss + nativeScript_newScriptNOfK <<< scriptNOfK_new (Int.toNumber n) <<< + packListContainer $ map convertNativeScript nss convertTimelockStart :: T.Slot -> NativeScript convertTimelockStart (T.Slot slot) = - nativeScript_new_timelock_start (mkTimelockStart slot) + nativeScript_newTimelockStart (timelockStart_newTimelockstart $ unwrap slot) convertTimelockExpiry :: T.Slot -> NativeScript convertTimelockExpiry (T.Slot slot) = - nativeScript_new_timelock_expiry (mkTimelockExpiry slot) - -packNativeScripts :: Array NativeScript -> NativeScripts -packNativeScripts = _packNativeScripts containerHelper - -foreign import mkScriptPubkey :: T.Ed25519KeyHash -> ScriptPubkey -foreign import _packNativeScripts - :: ContainerHelper -> Array NativeScript -> NativeScripts - -foreign import mkScriptAll :: NativeScripts -> ScriptAll -foreign import mkScriptAny :: NativeScripts -> ScriptAny -foreign import mkScriptNOfK :: Int -> NativeScripts -> ScriptNOfK -foreign import mkTimelockStart :: BigNum -> TimelockStart -foreign import mkTimelockExpiry :: BigNum -> TimelockExpiry -foreign import nativeScript_new_script_pubkey :: ScriptPubkey -> NativeScript -foreign import nativeScript_new_script_all :: ScriptAll -> NativeScript -foreign import nativeScript_new_script_any :: ScriptAny -> NativeScript -foreign import nativeScript_new_script_n_of_k :: ScriptNOfK -> NativeScript -foreign import nativeScript_new_timelock_start :: TimelockStart -> NativeScript -foreign import nativeScript_new_timelock_expiry - :: TimelockExpiry -> NativeScript + nativeScript_newTimelockExpiry + (timelockExpiry_newTimelockexpiry $ unwrap slot) From 66b45f3b322f8fa07f432ddc26e7fdbdaccb657f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 13 Jan 2024 02:46:48 +0400 Subject: [PATCH 017/373] Get rid of ToBytes machinery --- src/Internal/Cardano/Types/Transaction.purs | 8 +- src/Internal/Contract/QueryHandle.purs | 7 +- src/Internal/Deserialization/Transaction.purs | 60 +++++++------- .../Deserialization/UnspentOutput.purs | 18 ++--- src/Internal/Hashing.purs | 6 +- src/Internal/QueryM/Ogmios.purs | 5 +- src/Internal/Serialization.purs | 10 +-- src/Internal/Serialization/Address.purs | 13 ++- src/Internal/Serialization/AuxiliaryData.purs | 8 +- src/Internal/Serialization/ToBytes.js | 3 - src/Internal/Serialization/ToBytes.purs | 80 ------------------- src/Internal/Service/Blockfrost.purs | 11 +-- src/Internal/Transaction.purs | 5 +- src/Internal/TxOutput.purs | 4 +- src/Internal/Types/BigNum.purs | 4 +- src/Internal/Types/Int.purs | 7 +- src/Internal/Types/Redeemer.purs | 4 +- src/Internal/Types/VRFKeyHash.purs | 23 +++--- src/Internal/Wallet/Cip30.purs | 9 +-- src/Internal/Wallet/Cip30/SignData.purs | 5 +- src/Internal/Wallet/Cip30Mock.purs | 13 ++- test/Data.purs | 4 +- test/Deserialization.purs | 29 +++---- test/Serialization.purs | 21 ++--- test/Serialization/Address.purs | 23 +++--- test/Utils.purs | 12 +++ test/Wallet/Cip30/SignData.purs | 4 +- 27 files changed, 164 insertions(+), 232 deletions(-) delete mode 100644 src/Internal/Serialization/ToBytes.js delete mode 100644 src/Internal/Serialization/ToBytes.purs diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index 461bfe044..99d143667 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -97,6 +97,8 @@ import Aeson , encodeAeson , finiteNumber ) +import Cardano.Serialization.Lib (Ed25519Signature, PublicKey) as Serialization +import Cardano.Serialization.Lib (toBytes) import Control.Alternative ((<|>)) import Control.Apply (lift2) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) @@ -127,8 +129,6 @@ import Ctl.Internal.Serialization.Keys , bech32FromPublicKey , bytesFromPublicKey ) -import Ctl.Internal.Serialization.ToBytes (toBytes) -import Ctl.Internal.Serialization.Types (Ed25519Signature, PublicKey) as Serialization import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (BigNum) @@ -894,11 +894,11 @@ newtype Ed25519Signature = Ed25519Signature RawBytes mkEd25519Signature :: Bech32String -> Maybe Ed25519Signature mkEd25519Signature = - map (Ed25519Signature <<< wrap <<< unwrap <<< toBytes) <<< + map (Ed25519Signature <<< wrap <<< toBytes) <<< ed25519SignatureFromBech32 mkFromCslEd25519Signature :: Serialization.Ed25519Signature -> Ed25519Signature -mkFromCslEd25519Signature = Ed25519Signature <<< wrap <<< unwrap <<< toBytes +mkFromCslEd25519Signature = Ed25519Signature <<< wrap <<< toBytes convertEd25519Signature :: Ed25519Signature -> Serialization.Ed25519Signature convertEd25519Signature (Ed25519Signature bs) = unsafePartial diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index 5531fe5ae..b2ef75a6a 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -6,6 +6,7 @@ module Ctl.Internal.Contract.QueryHandle import Prelude +import Cardano.Serialization.Lib (toBytes) import Contract.Log (logDebug') import Control.Monad.Error.Class (throwError) import Ctl.Internal.Contract.LogParams (LogParams) @@ -32,7 +33,7 @@ import Ctl.Internal.QueryM.Pools , getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards ) as QueryM -import Ctl.Internal.Serialization (convertTransaction, toBytes) as Serialization +import Ctl.Internal.Serialization (convertTransaction) as Serialization import Ctl.Internal.Service.Blockfrost ( BlockfrostServiceM , runBlockfrostServiceM @@ -66,13 +67,13 @@ queryHandleForCtlBackend runQueryM params backend = cslTx <- liftEffect $ Serialization.convertTransaction tx let txHash = Hashing.transactionHash cslTx logDebug' $ "Pre-calculated tx hash: " <> show txHash - let txCborBytes = Serialization.toBytes cslTx + let txCborBytes = wrap $ toBytes cslTx result <- QueryM.submitTxOgmios (unwrap txHash) txCborBytes case result of SubmitTxSuccess a -> pure $ pure $ wrap a SubmitFail err -> pure $ Left $ ClientOtherError $ show err , evaluateTx: \tx additionalUtxos -> runQueryM' do - txBytes <- Serialization.toBytes <$> liftEffect + txBytes <- wrap <<< toBytes <$> liftEffect (Serialization.convertTransaction tx) QueryM.evaluateTxOgmios txBytes additionalUtxos , getEraSummaries: Right <$> runQueryM' QueryM.getEraSummaries diff --git a/src/Internal/Deserialization/Transaction.purs b/src/Internal/Deserialization/Transaction.purs index c091648bb..2a9cc7c6e 100644 --- a/src/Internal/Deserialization/Transaction.purs +++ b/src/Internal/Deserialization/Transaction.purs @@ -63,6 +63,8 @@ module Ctl.Internal.Deserialization.Transaction import Prelude +import Cardano.Serialization.Lib (Ed25519KeyHash, ScriptHash, VRFKeyHash) as Csl +import Cardano.Serialization.Lib (toBytes, unpackMapContainerToMapWith) import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash(AuxiliaryDataHash) @@ -128,14 +130,12 @@ import Ctl.Internal.FfiHelpers , containerHelper , maybeFfiHelper ) -import Ctl.Internal.Serialization (toBytes) import Ctl.Internal.Serialization.Address ( NetworkId(TestnetId, MainnetId) , RewardAddress , StakeCredential ) as Csl import Ctl.Internal.Serialization.Address (Slot(Slot)) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash, VRFKeyHash) as Csl import Ctl.Internal.Serialization.Types ( AssetName , AuxiliaryData @@ -191,13 +191,13 @@ import Ctl.Internal.Types.TransactionMetadata , TransactionMetadatum(MetadataList, MetadataMap, Bytes, Int, Text) , TransactionMetadatumLabel(TransactionMetadatumLabel) ) -import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) +import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) as T import Data.Bifunctor (bimap, lmap) import Data.Bitraversable (bitraverse) import Data.ByteArray (ByteArray) import Data.Either (Either) import Data.Map as M -import Data.Maybe (Maybe, fromMaybe) +import Data.Maybe (Maybe, fromJust, fromMaybe) import Data.Newtype (unwrap, wrap) import Data.Ratio (Ratio, reduce) import Data.Set (fromFoldable) as Set @@ -208,6 +208,7 @@ import Data.UInt as UInt import Data.Variant (Variant) import JS.BigInt (BigInt) import JS.BigInt as BigInt +import Partial.Unsafe (unsafePartial) import Type.Row (type (+)) -- | Deserializes CBOR encoded transaction to a CTL's native type. @@ -292,7 +293,7 @@ convertTxBody txBody = do , withdrawals , update , auxiliaryDataHash: - T.AuxiliaryDataHash <<< unwrap <<< toBytes <$> + T.AuxiliaryDataHash <<< toBytes <$> _txBodyAuxiliaryDataHash maybeFfiHelper txBody , validityStartInterval: Slot <$> _txBodyValidityStartInterval maybeFfiHelper txBody @@ -305,7 +306,7 @@ convertTxBody txBody = do map convertInput >>> pure , requiredSigners: _txBodyRequiredSigners containerHelper maybeFfiHelper txBody # - (map <<< map) T.RequiredSigner + (map <<< map) (T.RequiredSigner <<< wrap) , networkId , collateralReturn , totalCollateral @@ -317,7 +318,7 @@ convertUpdate u = do epoch <- map T.Epoch $ cslNumberToUInt "convertUpdate: epoch" e ppus <- traverse ( bitraverse - (pure <<< T.GenesisHash <<< unwrap <<< toBytes) + (pure <<< T.GenesisHash <<< toBytes) convertProtocolParamUpdate ) paramUpdates @@ -335,15 +336,15 @@ convertCertificate = _convertCert certConvHelper certConvHelper = { stakeDeregistration: T.StakeDeregistration , stakeRegistration: T.StakeRegistration - , stakeDelegation: \sc -> T.StakeDelegation sc <<< wrap <<< wrap + , stakeDelegation: \sc -> T.StakeDelegation sc <<< wrap <<< wrap <<< wrap , poolRegistration: convertPoolRegistration , poolRetirement: convertPoolRetirement , genesisKeyDelegation: \genesisHash genesisDelegateHash vrfKeyhash -> do T.GenesisKeyDelegation - { genesisHash: T.GenesisHash $ unwrap $ toBytes genesisHash - , genesisDelegateHash: T.GenesisDelegateHash $ unwrap - $ toBytes genesisDelegateHash - , vrfKeyhash: VRFKeyHash vrfKeyhash + { genesisHash: T.GenesisHash $ toBytes genesisHash + , genesisDelegateHash: T.GenesisDelegateHash $ toBytes + genesisDelegateHash + , vrfKeyhash: T.VRFKeyHash vrfKeyhash } , moveInstantaneousRewardsToOtherPotCert: \pot amount -> do T.MoveInstantaneousRewardsCert $ @@ -364,19 +365,21 @@ convertPoolRegistration params = do let relays = convertRelay <$> poolParamsRelays containerHelper params T.PoolRegistration - { operator: PoolPubKeyHash $ wrap $ poolParamsOperator params - , vrfKeyhash: VRFKeyHash $ poolParamsVrfKeyhash params + { operator: PoolPubKeyHash $ wrap $ wrap $ poolParamsOperator params + , vrfKeyhash: T.VRFKeyHash $ poolParamsVrfKeyhash params , pledge: poolParamsPledge params , cost: poolParamsCost params , margin: _unpackUnitInterval $ poolParamsMargin params , rewardAccount: T.RewardAddress $ poolParamsRewardAccount params - , poolOwners: wrap <<< wrap <$> poolParamsPoolOwners containerHelper params + , poolOwners: wrap <<< wrap <<< wrap <$> poolParamsPoolOwners + containerHelper + params , relays , poolMetadata: poolParamsPoolMetadata maybeFfiHelper params <#> convertPoolMetadata_ \url hash -> T.PoolMetadata { url: T.URL url - , hash: T.PoolMetadataHash $ unwrap $ toBytes hash + , hash: T.PoolMetadataHash $ toBytes hash } } @@ -437,23 +440,16 @@ convertPoolRetirement -> UInt -> T.Certificate convertPoolRetirement poolKeyHash epoch = do - T.PoolRetirement { poolKeyHash: wrap $ wrap poolKeyHash, epoch: wrap epoch } + T.PoolRetirement + { poolKeyHash: wrap $ wrap $ wrap $ poolKeyHash, epoch: wrap epoch } convertMint :: Csl.Mint -> T.Mint -convertMint mint = T.Mint $ mkNonAdaAsset - $ - -- outer map - M.fromFoldable <<< map (lmap scriptHashAsCurrencySymbol) - -- inner map - <<< (map <<< map) - ( M.fromFoldable <<< map convAssetName <<< _unpackMintAssets - containerHelper - ) - $ _unpackMint containerHelper mint - - where - convAssetName :: Csl.AssetName /\ Int.Int -> TokenName /\ BigInt - convAssetName = bimap tokenNameFromAssetName Int.toBigInt +convertMint = T.Mint <<< mkNonAdaAsset <<< + unpackMapContainerToMapWith (scriptHashAsCurrencySymbol <<< wrap) + ( unpackMapContainerToMapWith + tokenNameFromAssetName + (Int.toBigInt <<< wrap) + ) convertProtocolParamUpdate :: forall (r :: Row Type) @@ -620,7 +616,7 @@ convertExUnits cslExunits = { mem: _, steps: _ } (BigNum.toBigInt mem) (BigNum.toBigInt steps) convertScriptDataHash :: Csl.ScriptDataHash -> T.ScriptDataHash -convertScriptDataHash = toBytes >>> unwrap >>> T.ScriptDataHash +convertScriptDataHash = toBytes >>> T.ScriptDataHash convertProtocolVersion :: forall (r :: Row Type) diff --git a/src/Internal/Deserialization/UnspentOutput.purs b/src/Internal/Deserialization/UnspentOutput.purs index 3068600ee..f10d59cef 100644 --- a/src/Internal/Deserialization/UnspentOutput.purs +++ b/src/Internal/Deserialization/UnspentOutput.purs @@ -8,6 +8,7 @@ module Ctl.Internal.Deserialization.UnspentOutput import Prelude +import Cardano.Serialization.Lib (toBytes) import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(PlutusScriptRef, NativeScriptRef) ) as T @@ -29,7 +30,6 @@ import Ctl.Internal.Deserialization.NativeScript (convertNativeScript) import Ctl.Internal.Deserialization.PlutusData (convertPlutusData) import Ctl.Internal.Deserialization.WitnessSet (convertPlutusScript) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Serialization (toBytes) import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBytes) import Ctl.Internal.Serialization.Types @@ -77,14 +77,15 @@ convertUnspentOutput tuo = do pure $ T.TransactionUnspentOutput { input, output } convertInput :: TransactionInput -> T.TransactionInput -convertInput input = do +convertInput input = let index = getTransactionIndex input - T.TransactionInput - { transactionId: T.TransactionHash $ unwrap $ toBytes $ - getTransactionHash input - , index - } + transactionId = T.TransactionHash $ toBytes $ getTransactionHash input + in + T.TransactionInput + { transactionId + , index + } convertOutput :: TransactionOutput -> Maybe T.TransactionOutput convertOutput output = do @@ -92,8 +93,7 @@ convertOutput output = do let address = getAddress output mbDataHash = - getDataHash maybeFfiHelper output <#> - toBytes >>> unwrap >>> T.DataHash + getDataHash maybeFfiHelper output <#> toBytes >>> T.DataHash mbDatum = getPlutusData maybeFfiHelper output datum <- case mbDatum, mbDataHash of Just _, Just _ -> Nothing -- impossible, so it's better to fail diff --git a/src/Internal/Hashing.purs b/src/Internal/Hashing.purs index 2e999d846..04c9d9e66 100644 --- a/src/Internal/Hashing.purs +++ b/src/Internal/Hashing.purs @@ -17,11 +17,11 @@ module Ctl.Internal.Hashing import Prelude +import Cardano.Serialization.Lib (toBytes) import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) import Ctl.Internal.Deserialization.Transaction (_txBody) -import Ctl.Internal.Serialization (toBytes) import Ctl.Internal.Serialization.Hash (ScriptHash, nativeScriptHash) import Ctl.Internal.Serialization.NativeScript (convertNativeScript) import Ctl.Internal.Serialization.PlutusData (convertPlutusData) @@ -71,7 +71,7 @@ md5HashHex contents = do datumHash :: Datum -> DataHash datumHash = - wrap <<< unwrap <<< toBytes <<< hashPlutusData + wrap <<< toBytes <<< hashPlutusData <<< convertPlutusData <<< unwrap @@ -79,7 +79,7 @@ datumHash = -- | the cbor-encoded transaction body. transactionHash :: Serialization.Transaction -> TransactionHash transactionHash = - wrap <<< blake2b256Hash <<< unwrap <<< toBytes <<< _txBody + wrap <<< blake2b256Hash <<< toBytes <<< _txBody plutusScriptHash :: PlutusScript -> ScriptHash plutusScriptHash = hashPlutusScript <<< convertPlutusScript diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 5e2d2a5ec..81b03c5de 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -95,6 +95,7 @@ import Aeson , (.:) , (.:?) ) +import Cardano.Serialization.Lib (fromBytes) import Control.Alt ((<|>)) import Control.Alternative (guard) import Ctl.Internal.Cardano.Types.NativeScript @@ -134,7 +135,6 @@ import Ctl.Internal.Cardano.Types.Value , unwrapNonAdaAsset , valueToCoin ) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Helpers (encodeMap, showWithParens) import Ctl.Internal.QueryM.JsonRpc2 ( class DecodeOgmios @@ -684,8 +684,7 @@ decodeVRFKeyHash :: Aeson -> Either JsonDecodeError VRFKeyHash decodeVRFKeyHash = aesonString $ \vrfKeyhashHex -> do vrfKeyhashBytes <- note (TypeMismatch "VRFKeyHash") $ hexToByteArray vrfKeyhashHex - note (TypeMismatch "VRFKeyHash") $ VRFKeyHash <$> fromBytes - (wrap vrfKeyhashBytes) + note (TypeMismatch "VRFKeyHash") $ VRFKeyHash <$> fromBytes vrfKeyhashBytes decodeUnitInterval :: Aeson -> Either JsonDecodeError UnitInterval decodeUnitInterval aeson = do diff --git a/src/Internal/Serialization.purs b/src/Internal/Serialization.purs index bdab5e58f..336cc57b3 100644 --- a/src/Internal/Serialization.purs +++ b/src/Internal/Serialization.purs @@ -12,11 +12,11 @@ module Ctl.Internal.Serialization , hashTransaction , publicKeyHash , makeVkeywitness - , module Ctl.Internal.Serialization.ToBytes ) where import Prelude +import Cardano.Serialization.Lib (VRFKeyHash, toBytes) import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) as T @@ -74,13 +74,11 @@ import Ctl.Internal.Serialization.BigInt as Serialization import Ctl.Internal.Serialization.Hash ( Ed25519KeyHash , ScriptHash - , VRFKeyHash , scriptHashFromBytes ) import Ctl.Internal.Serialization.NativeScript (convertNativeScript) import Ctl.Internal.Serialization.PlutusData (convertPlutusData) import Ctl.Internal.Serialization.PlutusScript (convertPlutusScript) -import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Serialization.Types ( AssetName , Assets @@ -158,7 +156,7 @@ import Ctl.Internal.Types.RewardAddress (RewardAddress, unRewardAddress) as T import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2)) as S import Ctl.Internal.Types.TokenName (getTokenName) as TokenName import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) as T -import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash), unVRFKeyHash) as T +import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) as T import Data.ByteArray (ByteArray) import Data.Foldable (class Foldable) import Data.Foldable (null) as Foldable @@ -689,7 +687,7 @@ convertCert = case _ of relays' <- convertRelays relays poolMetadata' <- for poolMetadata convertPoolMetadata newPoolRegistrationCertificate (unwrap $ unwrap operator) - (T.unVRFKeyHash vrfKeyhash) + (unwrap vrfKeyhash) pledge cost margin' @@ -895,4 +893,4 @@ hashScriptData cms rs ps = do _ -> _hashScriptData rs' cms' $ map convertPlutusData ps serializeData :: forall (a :: Type). ToData a => a -> CborBytes -serializeData = toBytes <<< convertPlutusData <<< toData +serializeData = wrap <<< toBytes <<< convertPlutusData <<< toData diff --git a/src/Internal/Serialization/Address.purs b/src/Internal/Serialization/Address.purs index fe56b6dee..3cd75aeb5 100644 --- a/src/Internal/Serialization/Address.purs +++ b/src/Internal/Serialization/Address.purs @@ -4,13 +4,13 @@ module Ctl.Internal.Serialization.Address , TransactionIndex(TransactionIndex) , CertificateIndex(CertificateIndex) , Pointer - , Address + , Address(Address) , BaseAddress , ByronAddress , EnterpriseAddress , PointerAddress , RewardAddress - , StakeCredential + , StakeCredential(StakeCredential) , addressBech32 , addressNetworkId , intToNetworkId @@ -92,6 +92,7 @@ import Aeson , decodeAeson , encodeAeson ) +import Cardano.Serialization.Lib as Csl import Control.Alt ((<|>)) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Ctl.Internal.FromData (class FromData) @@ -178,7 +179,9 @@ type Pointer = , certIx :: CertificateIndex } -foreign import data Address :: Type +newtype Address = Address Csl.Address + +derive instance Newtype Address _ instance Show Address where show a = "(Address " <> addressBech32 a <> ")" @@ -292,7 +295,9 @@ instance DecodeAeson RewardAddress where decodeAeson = decodeAeson >=> note (TypeMismatch "RewardAddress") <<< rewardAddressFromBech32 -foreign import data StakeCredential :: Type +newtype StakeCredential = StakeCredential Csl.StakeCredential + +derive instance Newtype StakeCredential _ instance Eq StakeCredential where eq = eq `on` stakeCredentialToBytes diff --git a/src/Internal/Serialization/AuxiliaryData.purs b/src/Internal/Serialization/AuxiliaryData.purs index 96f40e175..e9c610409 100644 --- a/src/Internal/Serialization/AuxiliaryData.purs +++ b/src/Internal/Serialization/AuxiliaryData.purs @@ -5,7 +5,7 @@ module Ctl.Internal.Serialization.AuxiliaryData import Prelude -import Cardano.Serialization.Lib.Internal (packMapContainerFromMap) +import Cardano.Serialization.Lib (toBytes) import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash @@ -14,7 +14,6 @@ import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) import Ctl.Internal.Helpers (fromJustEff) import Ctl.Internal.Serialization.NativeScript (convertNativeScripts) import Ctl.Internal.Serialization.PlutusScript (convertPlutusScript) -import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Serialization.Types ( AuxiliaryData , AuxiliaryDataHash @@ -34,9 +33,8 @@ import Ctl.Internal.Types.TransactionMetadata ) as T import Data.ByteArray (ByteArray) import Data.Map as Map -import Data.Newtype (unwrap, wrap) +import Data.Newtype (wrap) import Data.Traversable (for, for_, traverse) -import Data.TraversableWithIndex (traverseWithIndex) import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) @@ -81,7 +79,7 @@ foreign import _hashAuxiliaryData hashAuxiliaryData :: T.AuxiliaryData -> Effect T.AuxiliaryDataHash hashAuxiliaryData = - map (wrap <<< unwrap <<< toBytes <<< _hashAuxiliaryData) <<< + map (wrap <<< toBytes <<< _hashAuxiliaryData) <<< convertAuxiliaryData convertAuxiliaryData :: T.AuxiliaryData -> Effect AuxiliaryData diff --git a/src/Internal/Serialization/ToBytes.js b/src/Internal/Serialization/ToBytes.js deleted file mode 100644 index 7ec989fca..000000000 --- a/src/Internal/Serialization/ToBytes.js +++ /dev/null @@ -1,3 +0,0 @@ -export function _toBytes(sth) { - return sth.to_bytes(); -} diff --git a/src/Internal/Serialization/ToBytes.purs b/src/Internal/Serialization/ToBytes.purs deleted file mode 100644 index 8517daf67..000000000 --- a/src/Internal/Serialization/ToBytes.purs +++ /dev/null @@ -1,80 +0,0 @@ -module Ctl.Internal.Serialization.ToBytes - ( toBytes - ) where - -import Prelude - -import Ctl.Internal.Serialization.Address - ( Address - , ByronAddress - , StakeCredential - ) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash, VRFKeyHash) -import Ctl.Internal.Serialization.Types - ( AuxiliaryDataHash - , DataHash - , Ed25519Signature - , GenesisDelegateHash - , GenesisHash - , Mint - , NativeScript - , PlutusData - , PoolMetadataHash - , Redeemers - , ScriptDataHash - , Transaction - , TransactionBody - , TransactionHash - , TransactionOutput - , TransactionUnspentOutput - , TransactionWitnessSet - , Value - , Vkeywitness - , Vkeywitnesses - ) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) -import Data.ByteArray (ByteArray) -import Untagged.Castable (class Castable) -import Untagged.Union (type (|+|)) - -type SerializableData = Address - |+| AuxiliaryDataHash - |+| ByronAddress - |+| DataHash - |+| Ed25519KeyHash - |+| Ed25519Signature - |+| GenesisDelegateHash - |+| GenesisHash - |+| Mint - |+| NativeScript - |+| PlutusData - |+| PoolMetadataHash - |+| Redeemers - |+| ScriptDataHash - |+| ScriptHash - |+| StakeCredential - |+| Transaction - |+| TransactionBody - |+| TransactionHash - |+| TransactionOutput - |+| TransactionUnspentOutput - |+| TransactionWitnessSet - |+| Value - |+| VRFKeyHash - |+| Vkeywitness - |+| Vkeywitnesses - |+| BigNum - --- Add more as needed - --- NOTE returns cbor encoding for all but hash types, for which it returns raw bytes -foreign import _toBytes - :: forall a. a -> ByteArray - -toBytes - :: forall a - . Castable a SerializableData - => a - -> CborBytes -toBytes = CborBytes <<< _toBytes diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index be6b782a2..64979254b 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -81,6 +81,7 @@ import Affjax.RequestBody (RequestBody, arrayView, string) as Affjax import Affjax.RequestHeader (RequestHeader(ContentType, RequestHeader)) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) as Affjax +import Cardano.Serialization.Lib (toBytes) import Contract.RewardAddress ( rewardAddressToBech32 , stakePubKeyHashRewardAddress @@ -183,7 +184,7 @@ import Ctl.Internal.Service.Helpers import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) +import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain (Tip(Tip, TipAtGenesis)) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) import Ctl.Internal.Types.Epoch (Epoch(Epoch)) @@ -645,14 +646,14 @@ submitTx -> BlockfrostServiceM (Either ClientError TransactionHash) submitTx tx = do cslTx <- liftEffect $ Serialization.convertTransaction tx - handleBlockfrostResponse <$> request (Serialization.toBytes cslTx) + handleBlockfrostResponse <$> request (toBytes cslTx) where request - :: CborBytes + :: ByteArray -> BlockfrostServiceM (Either Affjax.Error (Affjax.Response String)) request cbor = blockfrostPostRequest SubmitTransaction (MediaType "application/cbor") - (Just $ Affjax.arrayView $ unwrap $ unwrap cbor) + (Just $ Affjax.arrayView $ unwrap cbor) evaluateTx :: Transaction -> AdditionalUtxoSet -> BlockfrostServiceM TxEvaluationR @@ -672,7 +673,7 @@ evaluateTx tx additionalUtxos = do blockfrostPostRequest EvaluateTransaction MediaType.applicationJSON ( Just $ Affjax.string $ stringifyAeson $ encodeAeson - { cbor: cborBytesToHex $ Serialization.toBytes cslTx + { cbor: byteArrayToHex $ toBytes cslTx , additionalUtxoSet: additionalUtxos } ) diff --git a/src/Internal/Transaction.purs b/src/Internal/Transaction.purs index 49baa289c..b7598e1b4 100644 --- a/src/Internal/Transaction.purs +++ b/src/Internal/Transaction.purs @@ -8,6 +8,7 @@ module Ctl.Internal.Transaction import Prelude +import Cardano.Serialization.Lib (toBytes) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) import Ctl.Internal.Cardano.Types.Transaction ( Costmdls @@ -18,7 +19,7 @@ import Ctl.Internal.Cardano.Types.Transaction , TxBody(TxBody) ) import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.Serialization (hashScriptData, toBytes) +import Ctl.Internal.Serialization (hashScriptData) import Ctl.Internal.Serialization.PlutusData as Serialization.PlutusData import Ctl.Internal.Serialization.PlutusScript as Serialization.PlutusScript import Ctl.Internal.Serialization.Types as Serialization @@ -52,7 +53,7 @@ setScriptDataHash costModels rs ds tx@(Transaction { body, witnessSet }) , null rs , null ds = pure tx | otherwise = do - scriptDataHash <- ScriptDataHash <<< unwrap <<< toBytes + scriptDataHash <- ScriptDataHash <<< toBytes <$> hashScriptData costModels rs (unwrap <$> ds) pure $ over Transaction _ diff --git a/src/Internal/TxOutput.purs b/src/Internal/TxOutput.purs index 532e0214c..74b248c45 100644 --- a/src/Internal/TxOutput.purs +++ b/src/Internal/TxOutput.purs @@ -9,6 +9,7 @@ module Ctl.Internal.TxOutput import Prelude +import Cardano.Serialization.Lib (toBytes) import Control.Alt ((<|>)) import Control.Alternative (guard) import Ctl.Internal.Address (addressToOgmiosAddress, ogmiosAddressToAddress) @@ -18,7 +19,6 @@ import Ctl.Internal.Cardano.Types.Transaction import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Deserialization.PlutusData as Deserialization import Ctl.Internal.QueryM.Ogmios as Ogmios -import Ctl.Internal.Serialization (toBytes) import Ctl.Internal.Serialization.PlutusData as Serialization import Ctl.Internal.Types.CborBytes (hexToCborBytes) import Ctl.Internal.Types.Datum (DataHash, Datum(Datum)) @@ -113,7 +113,7 @@ datumHashToOgmiosDatumHash = byteArrayToHex <<< unwrap datumToOgmiosDatum :: Datum -> String datumToOgmiosDatum (Datum plutusData) = Serialization.convertPlutusData plutusData # - toBytes >>> unwrap >>> byteArrayToHex + toBytes >>> byteArrayToHex toOutputDatum :: Maybe Datum -> Maybe DataHash -> OutputDatum toOutputDatum d dh = diff --git a/src/Internal/Types/BigNum.purs b/src/Internal/Types/BigNum.purs index ccecf37a6..28687cfc5 100644 --- a/src/Internal/Types/BigNum.purs +++ b/src/Internal/Types/BigNum.purs @@ -59,8 +59,8 @@ instance Eq BigNum where instance Ord BigNum where compare (BigNum lhs) (BigNum rhs) = case bigNum_compare lhs rhs of - 1 -> GT - 0 -> EQ + 1.0 -> GT + 0.0 -> EQ _ -> LT instance Show BigNum where diff --git a/src/Internal/Types/Int.purs b/src/Internal/Types/Int.purs index 5d9fceb7c..38931e26c 100644 --- a/src/Internal/Types/Int.purs +++ b/src/Internal/Types/Int.purs @@ -19,17 +19,22 @@ import Aeson , decodeAeson , encodeAeson ) +import Cardano.Serialization.Lib (Int) as Csl import Control.Alternative ((<|>)) import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.BigNum (fromBigInt, fromInt) as BigNum import Data.Either (note) import Data.Function (on) import Data.Maybe (Maybe, fromJust) +import Data.Newtype (class Newtype) import JS.BigInt as BigInt import Partial.Unsafe (unsafePartial) import Prim as Prim -foreign import data Int :: Prim.Type +-- | Signed 128-bit integer +newtype Int = Int Csl.Int + +derive instance Newtype Int _ foreign import newPositive :: BigNum -> Int foreign import newNegative :: BigNum -> Int diff --git a/src/Internal/Types/Redeemer.purs b/src/Internal/Types/Redeemer.purs index 13ddeacea..559c216f4 100644 --- a/src/Internal/Types/Redeemer.purs +++ b/src/Internal/Types/Redeemer.purs @@ -7,9 +7,9 @@ module Ctl.Internal.Types.Redeemer import Prelude +import Cardano.Serialization.Lib (toBytes) import Ctl.Internal.FromData (class FromData) import Ctl.Internal.Hashing (hashPlutusData) -import Ctl.Internal.Serialization (toBytes) import Ctl.Internal.Serialization.PlutusData (convertPlutusData) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.PlutusData (PlutusData) @@ -50,5 +50,5 @@ instance Show RedeemerHash where -- | This is a duplicate of `datumHash`. redeemerHash :: Redeemer -> RedeemerHash redeemerHash = - wrap <<< unwrap <<< toBytes <<< hashPlutusData <<< convertPlutusData <<< + wrap <<< toBytes <<< hashPlutusData <<< convertPlutusData <<< unwrap diff --git a/src/Internal/Types/VRFKeyHash.purs b/src/Internal/Types/VRFKeyHash.purs index c82e544ea..583389f08 100644 --- a/src/Internal/Types/VRFKeyHash.purs +++ b/src/Internal/Types/VRFKeyHash.purs @@ -2,38 +2,35 @@ module Ctl.Internal.Types.VRFKeyHash ( VRFKeyHash(VRFKeyHash) , vrfKeyHashFromBytes , vrfKeyHashToBytes - , unVRFKeyHash ) where import Prelude import Aeson (class EncodeAeson, encodeAeson) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) -import Ctl.Internal.Serialization.Hash as Serialization -import Ctl.Internal.Serialization.ToBytes (toBytes) +import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Serialization.Lib as Csl import Data.ByteArray (ByteArray, byteArrayToHex) import Data.Function (on) import Data.Maybe (Maybe) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (class Newtype) -newtype VRFKeyHash = VRFKeyHash Serialization.VRFKeyHash +newtype VRFKeyHash = VRFKeyHash Csl.VRFKeyHash + +derive instance Newtype VRFKeyHash _ instance Show VRFKeyHash where show (VRFKeyHash kh) = - "(VRFKeyHash " <> show (byteArrayToHex $ unwrap $ toBytes kh) <> ")" + "(VRFKeyHash " <> show (byteArrayToHex $ toBytes kh) <> ")" instance Eq VRFKeyHash where eq = eq `on` vrfKeyHashToBytes instance EncodeAeson VRFKeyHash where encodeAeson (VRFKeyHash kh) = - toBytes kh # unwrap >>> byteArrayToHex >>> encodeAeson - -unVRFKeyHash :: VRFKeyHash -> Serialization.VRFKeyHash -unVRFKeyHash (VRFKeyHash kh) = kh + toBytes kh # byteArrayToHex >>> encodeAeson vrfKeyHashFromBytes :: ByteArray -> Maybe VRFKeyHash -vrfKeyHashFromBytes = wrap >>> fromBytes >>> map VRFKeyHash +vrfKeyHashFromBytes = fromBytes >>> map VRFKeyHash vrfKeyHashToBytes :: VRFKeyHash -> ByteArray -vrfKeyHashToBytes (VRFKeyHash kh) = unwrap $ toBytes kh +vrfKeyHashToBytes (VRFKeyHash kh) = toBytes kh diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index 79530133e..8aee39d08 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -6,6 +6,7 @@ module Ctl.Internal.Wallet.Cip30 import Prelude +import Cardano.Serialization.Lib (toBytes) import Cardano.Wallet.Cip30 (Api) import Cardano.Wallet.Cip30.TypeSafe (APIError) import Cardano.Wallet.Cip30.TypeSafe as Cip30 @@ -24,7 +25,7 @@ import Ctl.Internal.Deserialization.UnspentOutput (convertValue) import Ctl.Internal.Deserialization.UnspentOutput as Deserialization.UnspentOuput import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.Serialization (convertTransaction, toBytes) as Serialization +import Ctl.Internal.Serialization (convertTransaction) as Serialization import Ctl.Internal.Serialization.Address ( Address , baseAddressBytes @@ -36,7 +37,6 @@ import Ctl.Internal.Serialization.Address , rewardAddressBytes , rewardAddressFromAddress ) -import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.CborBytes ( CborBytes @@ -128,8 +128,7 @@ mkCip30WalletAff connection = do txToHex :: Transaction -> Effect String txToHex = - map (byteArrayToHex <<< unwrap <<< Serialization.toBytes) - <<< Serialization.convertTransaction + map (byteArrayToHex <<< toBytes) <<< Serialization.convertTransaction handleApiError :: forall a. Variant (apiError :: APIError, success :: a) -> Aff a @@ -273,7 +272,7 @@ getCip30Collateral conn requiredValue = do bigNumValue <- liftEffect $ maybe (throw convertError) pure $ BigNum.fromBigInt $ unwrap requiredValue - let requiredValueStr = byteArrayToHex $ unwrap $ toBytes bigNumValue + let requiredValueStr = byteArrayToHex $ toBytes $ unwrap bigNumValue (Cip30.getCollateral conn requiredValueStr >>= handleApiError) `catchError` \err -> throwError $ error $ "Failed to call `getCollateral`: " <> show err diff --git a/src/Internal/Wallet/Cip30/SignData.purs b/src/Internal/Wallet/Cip30/SignData.purs index ff85043c9..adfbcd2a8 100644 --- a/src/Internal/Wallet/Cip30/SignData.purs +++ b/src/Internal/Wallet/Cip30/SignData.purs @@ -2,17 +2,18 @@ module Ctl.Internal.Wallet.Cip30.SignData (signData) where import Prelude +import Cardano.Serialization.Lib (toBytes) import Ctl.Internal.Serialization.Address (Address) import Ctl.Internal.Serialization.Keys ( bytesFromPublicKey , publicKeyFromPrivateKey ) -import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Serialization.Types (PrivateKey) import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) import Ctl.Internal.Wallet.Cip30 (DataSignature) import Data.ByteArray (ByteArray) +import Data.Newtype (unwrap, wrap) import Effect (Effect) foreign import data COSESign1Builder :: Type @@ -73,5 +74,5 @@ signData privatePaymentKey address (RawBytes payload) = protectedHeaders = do headerMap <- newHeaderMap setAlgHeaderToEdDsa headerMap - setAddressHeader (toBytes address) headerMap + setAddressHeader (wrap $ toBytes $ unwrap address) headerMap pure $ newProtectedHeaderMap headerMap diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 8365f3693..692f6b4ff 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -12,6 +12,7 @@ module Ctl.Internal.Wallet.Cip30Mock import Prelude +import Cardano.Serialization.Lib (toBytes) import Contract.Monad (Contract) import Control.Monad.Error.Class (liftMaybe, try) import Control.Monad.Reader (ask) @@ -27,7 +28,6 @@ import Ctl.Internal.Serialization ( convertTransactionUnspentOutput , convertValue , publicKeyHash - , toBytes ) import Ctl.Internal.Serialization.Address ( Address @@ -178,7 +178,7 @@ mkCip30Mock pKey mSKey = do keyWallet = privateKeysToKeyWallet pKey mSKey addressHex = - byteArrayToHex $ unwrap $ toBytes + byteArrayToHex $ toBytes $ unwrap ((unwrap keyWallet).address env.networkId :: Address) mbRewardAddressHex = mSKey <#> \stakeKey -> @@ -208,21 +208,20 @@ mkCip30Mock pKey mSKey = do cslUtxos <- traverse (liftEffect <<< convertTransactionUnspentOutput) $ Map.toUnfoldable nonCollateralUtxos <#> \(input /\ output) -> TransactionUnspentOutput { input, output } - pure $ (byteArrayToHex <<< unwrap <<< toBytes) <$> cslUtxos + pure $ (byteArrayToHex <<< toBytes) <$> cslUtxos , getCollateral: fromAff do utxos <- ownUtxos collateralUtxos <- getCollateralUtxos utxos cslUnspentOutput <- liftEffect $ traverse convertTransactionUnspentOutput collateralUtxos - pure $ (byteArrayToHex <<< unwrap <<< toBytes) <$> - cslUnspentOutput + pure $ byteArrayToHex <<< toBytes <$> cslUnspentOutput , getBalance: fromAff do utxos <- ownUtxos value <- liftEffect $ convertValue $ (foldMap (_.amount <<< unwrap) <<< Map.values) utxos - pure $ byteArrayToHex $ unwrap $ toBytes value + pure $ byteArrayToHex $ toBytes value , getUsedAddresses: fromAff do pure [ addressHex ] , getUnusedAddresses: fromAff $ pure [] @@ -239,7 +238,7 @@ mkCip30Mock pKey mSKey = do $ cborBytesFromByteArray txBytes witness <- (unwrap keyWallet).signTx tx cslWitnessSet <- liftEffect $ convertWitnessSet witness - pure $ byteArrayToHex $ unwrap $ toBytes cslWitnessSet + pure $ byteArrayToHex $ toBytes cslWitnessSet , signData: mkFn2 \_addr msg -> unsafePerformEffect $ fromAff do msgBytes <- liftMaybe (error "Unable to convert CBOR") $ hexToByteArray msg diff --git a/test/Data.purs b/test/Data.purs index 34de6518d..b36ca1c55 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -4,6 +4,7 @@ module Test.Ctl.Data (suite, tests, uniqueIndicesTests) where import Prelude hiding (conj) import Aeson (JsonDecodeError(TypeMismatch), decodeAeson, encodeAeson) +import Cardano.Serialization.Lib (toBytes) import Control.Lazy (fix) import Control.Monad.Error.Class (class MonadThrow) import Ctl.Internal.Deserialization.FromBytes (fromBytes) @@ -19,7 +20,6 @@ import Ctl.Internal.Plutus.Types.DataSchema , I , PNil ) -import Ctl.Internal.Serialization (toBytes) import Ctl.Internal.Serialization.PlutusData as PDS import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.ToData (class ToData, genericToData, toData) @@ -580,7 +580,7 @@ testBinaryFixture value binaryFixture = do fromBytesFromData binaryFixture `shouldEqual` Just value test ("Serialization: " <> show value) do toBytes (PDS.convertPlutusData $ toData value) - `shouldEqual` wrap (hexToByteArrayUnsafe binaryFixture) + `shouldEqual` hexToByteArrayUnsafe binaryFixture -- | Poor man's type level tests tests :: Array String diff --git a/test/Deserialization.purs b/test/Deserialization.purs index b0f25f4c6..8e939c39d 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -3,6 +3,7 @@ module Test.Ctl.Deserialization (suite) where import Prelude import Aeson (decodeAeson, parseJsonStringToAeson) +import Cardano.Serialization.Lib (fromBytes, toBytes) import Contract.CborBytes (hexToCborBytesUnsafe) import Contract.Prim.ByteArray (ByteArray) import Contract.TextEnvelope @@ -19,7 +20,6 @@ import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) ) as T import Ctl.Internal.Deserialization.BigInt as DB -import Ctl.Internal.Deserialization.FromBytes (fromBytes, fromBytesEffect) import Ctl.Internal.Deserialization.NativeScript as NSD import Ctl.Internal.Deserialization.PlutusData as DPD import Ctl.Internal.Deserialization.Transaction (convertTransaction) as TD @@ -34,8 +34,6 @@ import Ctl.Internal.Serialization (convertTxInput, convertTxOutput) as Serializa import Ctl.Internal.Serialization.BigInt as SB import Ctl.Internal.Serialization.NativeScript (convertNativeScript) as NSS import Ctl.Internal.Serialization.PlutusData as SPD -import Ctl.Internal.Serialization.ToBytes (toBytes) -import Ctl.Internal.Serialization.ToBytes (toBytes) as Serialization import Ctl.Internal.Serialization.Types (TransactionUnspentOutput) import Ctl.Internal.Serialization.Types (Vkeywitness) as Serialization import Ctl.Internal.Serialization.WitnessSet (convertVkeywitness) as Serialization @@ -90,7 +88,7 @@ import Test.Ctl.Fixtures , witnessSetFixture3Value , witnessSetFixture4 ) -import Test.Ctl.Utils (errMaybe) +import Test.Ctl.Utils (errMaybe, fromBytesEffect) import Test.Spec.Assertions (expectError, shouldEqual, shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit @@ -112,7 +110,7 @@ suite = do let pdRoundTripTest ctlPd = do cslPd' <- errMaybe "Failed to fromBytes PlutusData" $ fromBytes - $ Serialization.toBytes + $ toBytes $ SPD.convertPlutusData ctlPd let ctlPd' = DPD.convertPlutusData cslPd' ctlPd' `shouldEqual` ctlPd @@ -128,11 +126,11 @@ suite = do "fixture #8 different Cbor bytes encodings (compact vs general Constr tag encodings)" $ do cslPd' <- errMaybe "Failed to fromBytes PlutusData" $ fromBytes - $ wrap plutusDataFixture8Bytes + plutusDataFixture8Bytes let ctlPd' = DPD.convertPlutusData cslPd' ctlPd' `shouldEqual` plutusDataFixture8 cslPdWp' <- errMaybe "Failed to fromBytes PlutusData" $ fromBytes - $ wrap plutusDataFixture8Bytes' + plutusDataFixture8Bytes' let ctlPdWp' = DPD.convertPlutusData cslPdWp' ctlPdWp' `shouldEqual` plutusDataFixture8 group "UnspentTransactionOutput" do @@ -146,8 +144,7 @@ suite = do output `shouldEqual` txOutputFixture1 test "fixture #1" do res <- errMaybe "Failed deserialization 4" do - fromBytes (wrap utxoFixture1) >>= - convertUnspentOutput + fromBytes utxoFixture1 >>= convertUnspentOutput res `shouldEqual` utxoFixture1' group "Transaction Roundtrips" do test "CSL <-> CTL Transaction roundtrip #1" $ txRoundtrip txFixture1 @@ -159,7 +156,7 @@ suite = do group "WitnessSet - deserialization" do group "fixture #1" do res <- errMaybe "Failed deserialization 5" do - fromBytes (wrap witnessSetFixture1) <#> convertWitnessSet + fromBytes witnessSetFixture1 <#> convertWitnessSet test "has vkeys" do (unwrap res).vkeys `shouldSatisfy` isJust test "has plutusData" do @@ -174,15 +171,15 @@ suite = do (unwrap res).nativeScripts `shouldSatisfy` isNothing test "fixture #2" do res <- errMaybe "Failed deserialization 6" do - fromBytes (wrap witnessSetFixture2) <#> convertWitnessSet + fromBytes witnessSetFixture2 <#> convertWitnessSet res `shouldEqual` witnessSetFixture2Value test "fixture #3" do res <- errMaybe "Failed deserialization 7" do - fromBytes (wrap witnessSetFixture3) <#> convertWitnessSet + fromBytes witnessSetFixture3 <#> convertWitnessSet res `shouldEqual` witnessSetFixture3Value group "fixture #4" do res <- errMaybe "Failed deserialization 8" $ - fromBytes (wrap witnessSetFixture4) <#> convertWitnessSet + fromBytes witnessSetFixture4 <#> convertWitnessSet test "has nativeScripts" do (unwrap res).nativeScripts `shouldSatisfy` isJust group "NativeScript - deserializaton is inverse to serialization" do @@ -235,14 +232,14 @@ suite = do -> m Unit witnessSetRoundTrip fixture = do ws0 <- errMaybe "Failed deserialization" $ - fromBytes (wrap fixture) <#> convertWitnessSet + fromBytes fixture <#> convertWitnessSet ws1 <- liftEffect $ SW.convertWitnessSet ws0 let ws2 = convertWitnessSet ws1 vkeys = fold (unwrap ws2).vkeys vkeyWitnessesRoundtrip vkeys ws0 `shouldEqual` ws2 -- value representation - let wsBytes = unwrap $ Serialization.toBytes ws1 + let wsBytes = toBytes ws1 wsBytes `shouldEqual` fixture -- byte representation test "fixture #1" $ witnessSetRoundTrip witnessSetFixture1 test "fixture #2" $ witnessSetRoundTrip witnessSetFixture2 @@ -296,7 +293,7 @@ testNativeScript input = do purescript to handle it correctly. -} - let bytes = Serialization.toBytes serialized + let bytes = toBytes serialized res <- errMaybe "Failed deserialization" $ fromBytes bytes let res' = NSD.convertNativeScript res diff --git a/test/Serialization.purs b/test/Serialization.purs index 19ba96cad..bb1527f30 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -2,6 +2,7 @@ module Test.Ctl.Serialization (suite) where import Prelude +import Cardano.Serialization.Lib (fromBytes, publicKey_fromBytes, toBytes) import Ctl.Internal.Cardano.Types.Transaction ( PublicKey , Transaction @@ -9,11 +10,10 @@ import Ctl.Internal.Cardano.Types.Transaction , mkFromCslPubKey , mkPublicKey ) -import Ctl.Internal.Deserialization.FromBytes (fromBytes, fromBytesEffect) import Ctl.Internal.Deserialization.Transaction (convertTransaction) as TD import Ctl.Internal.Helpers (liftM) import Ctl.Internal.Serialization (convertTransaction) as TS -import Ctl.Internal.Serialization (convertTxOutput, serializeData, toBytes) +import Ctl.Internal.Serialization (convertTxOutput, serializeData) import Ctl.Internal.Serialization.Keys (bytesFromPublicKey) import Ctl.Internal.Serialization.PlutusData (convertPlutusData) import Ctl.Internal.Serialization.Types (TransactionHash) @@ -24,7 +24,8 @@ import Ctl.Internal.Types.PlutusData as PD import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Data.Either (hush) import Data.Maybe (Maybe, isJust, isNothing) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (unwrap) +import Data.Nullable (toMaybe) import Data.Tuple.Nested ((/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) @@ -47,7 +48,7 @@ import Test.Ctl.Fixtures , txOutputBinaryFixture1 , txOutputFixture1 ) -import Test.Ctl.Utils (errMaybe) +import Test.Ctl.Utils (errMaybe, fromBytesEffect) import Test.Spec.Assertions (shouldEqual, shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit @@ -66,15 +67,17 @@ suite = do let pkBytes = bytesFromPublicKey $ convertPubKey pk - (pk'' :: Maybe PublicKey) = mkFromCslPubKey <$> fromBytes - (wrap $ unwrap pkBytes) + (pk'' :: Maybe PublicKey) = mkFromCslPubKey <$> toMaybe + ( publicKey_fromBytes + $ unwrap pkBytes + ) pk'' `shouldSatisfy` isJust test "newTransactionHash" do let txString = "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad959996" - txBytes = wrap $ hexToByteArrayUnsafe txString + txBytes = hexToByteArrayUnsafe txString _txHash :: TransactionHash <- liftEffect $ fromBytesEffect txBytes pure unit test "PlutusData #1 - Constr" $ do @@ -118,7 +121,7 @@ suite = do test "TransactionOutput serialization" $ liftEffect do txo <- convertTxOutput txOutputFixture1 let bytes = toBytes txo - byteArrayToHex (unwrap bytes) `shouldEqual` txOutputBinaryFixture1 + byteArrayToHex bytes `shouldEqual` txOutputBinaryFixture1 test "Transaction serialization #1" $ serializeTX txFixture1 txBinaryFixture1 test "Transaction serialization #2 - tokens" $ @@ -160,7 +163,7 @@ serializeTX tx fixture = liftEffect $ do cslTX <- TS.convertTransaction $ tx let bytes = toBytes cslTX - byteArrayToHex (unwrap bytes) `shouldEqual` fixture + byteArrayToHex bytes `shouldEqual` fixture txSerializedRoundtrip :: Transaction -> Aff Unit txSerializedRoundtrip tx = do diff --git a/test/Serialization/Address.purs b/test/Serialization/Address.purs index 094d63c0d..ca33d06b5 100644 --- a/test/Serialization/Address.purs +++ b/test/Serialization/Address.purs @@ -2,8 +2,8 @@ module Test.Ctl.Serialization.Address (suite) where import Prelude +import Cardano.Serialization.Lib (fromBytes, toBytes) import Contract.Address (addressWithNetworkTagFromBech32) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Serialization.Address ( NetworkId(MainnetId, TestnetId) , addressBech32 @@ -38,7 +38,6 @@ import Ctl.Internal.Serialization.Hash , ed25519KeyHashFromBech32 , scriptHashFromBytes ) -import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (fromInt, fromStringUnsafe) as BigNum @@ -79,8 +78,8 @@ addressFunctionsTest = test "Address tests" $ do addressFromBech32 bechstr bechstr `shouldEqual` addressBech32 addr1 addressFromBech32 "randomstuff" `shouldEqual` Nothing - let addrBts = toBytes addr1 - addr2 <- errMaybe "addressFromBech32 failed on valid bech32" $ + let addrBts = toBytes $ unwrap addr1 + addr2 <- map wrap $ errMaybe "addressFromBech32 failed on valid bech32" $ fromBytes addrBts addr2 `shouldEqual` addr1 addressNetworkId addr2 `shouldEqual` MainnetId @@ -101,18 +100,22 @@ stakeCredentialTests = test "StakeCredential tests" $ do let pkhCred = keyHashCredential $ pkh schCred = scriptHashCredential $ scrh - pkhCredBytes = toBytes pkhCred - schCredBytes = toBytes schCred + pkhCredBytes = toBytes $ unwrap pkhCred + schCredBytes = toBytes $ unwrap schCred - pkhCred2 <- errMaybe "StakeCredential FromBytes failed on valid bytes" $ - fromBytes pkhCredBytes + pkhCred2 <- map wrap + $ errMaybe "StakeCredential FromBytes failed on valid bytes" + $ + fromBytes pkhCredBytes pkh2 <- errMaybe "stakeCredentialToKeyHash failed" $ stakeCredentialToKeyHash pkhCred2 pkh2 `shouldEqual` pkh stakeCredentialToScriptHash pkhCred2 `shouldEqual` Nothing - schCred2 <- errMaybe "StakeCredential FromBytes failed on valid bytes" $ - fromBytes schCredBytes + schCred2 <- map wrap + $ errMaybe "StakeCredential FromBytes failed on valid bytes" + $ + fromBytes schCredBytes sch2 <- errMaybe "stakeCredentialToScriptHash failed" $ stakeCredentialToScriptHash schCred2 sch2 `shouldEqual` scrh diff --git a/test/Utils.purs b/test/Utils.purs index fe5040630..48607a602 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -10,6 +10,7 @@ module Test.Ctl.Utils , readAeson , toFromAesonTest , toFromAesonTestWith + , fromBytesEffect ) where import Prelude @@ -23,13 +24,17 @@ import Aeson , encodeAeson , parseJsonStringToAeson ) +import Cardano.Serialization.Lib (class IsBytes, fromBytes) +import Cardano.Serialization.Lib.Internal (class IsCsl) import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Data.ByteArray (ByteArray) import Data.DateTime.Instant (unInstant) import Data.Either (Either(Right), either) import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Newtype (unwrap, wrap) import Data.Time.Duration (class Duration, Milliseconds, Seconds) import Data.Time.Duration (fromDuration, toDuration) as Duration +import Effect (Effect) import Effect.Aff (Aff, error) import Effect.Class (class MonadEffect, liftEffect) import Effect.Console (log) @@ -163,3 +168,10 @@ aesonRoundTrip = aesonRoundTripWith identity readAeson :: forall (m :: Type -> Type). MonadEffect m => FilePath -> m Aeson readAeson = errEither <<< parseJsonStringToAeson <=< liftEffect <<< readTextFile UTF8 + +fromBytesEffect + :: forall (a :: Type). IsCsl a => IsBytes a => ByteArray -> Effect a +fromBytesEffect bytes = + case fromBytes bytes of + Nothing -> throw "from_bytes() call failed" + Just a -> pure a diff --git a/test/Wallet/Cip30/SignData.purs b/test/Wallet/Cip30/SignData.purs index 4a6e48e92..95cff4d77 100644 --- a/test/Wallet/Cip30/SignData.purs +++ b/test/Wallet/Cip30/SignData.purs @@ -7,6 +7,7 @@ module Test.Ctl.Wallet.Cip30.SignData import Prelude +import Cardano.Serialization.Lib (toBytes) import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) @@ -19,7 +20,6 @@ import Ctl.Internal.Serialization.Keys ( bytesFromPublicKey , publicKeyFromPrivateKey ) -import Ctl.Internal.Serialization.ToBytes (toBytes) import Ctl.Internal.Serialization.Types (PrivateKey, PublicKey) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.CborBytes (CborBytes) @@ -104,7 +104,7 @@ checkCip30SignDataResponse address { key, signature } = do assertTrue "COSE_Sign1's \"address\" header must be set to address bytes" ( getCoseSign1ProtectedHeaderAddress coseSign1 - == Just (toBytes address) + == Just (wrap $ toBytes $ unwrap address) ) checkCoseKeyHeaders :: COSEKey -> Aff Unit From 22c3602d1f0fefa797c021773aa56f7f71f1cc94 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 15 Jan 2024 22:48:32 +0400 Subject: [PATCH 018/373] Remove FromBytes machinery --- examples/AwaitTxConfirmedWithTimeout.purs | 7 +- .../KeyWallet/Internal/Cip30Contract.purs | 2 +- .../KeyWallet/Internal/Pkh2PkhContract.purs | 2 +- src/Contract/Backend/Ogmios.purs | 5 +- src/Contract/Backend/Ogmios/Mempool.purs | 4 +- src/Contract/Hashing.purs | 5 +- src/Contract/Keys.purs | 43 ++++- src/Contract/Test/Assert.purs | 3 +- src/Contract/Wallet.purs | 1 - src/Contract/Wallet/Key.purs | 8 +- src/Internal/BalanceTx/Sync.purs | 3 +- src/Internal/Cardano/Types/Transaction.purs | 131 ++++++++------ src/Internal/Contract/Monad.purs | 4 +- src/Internal/Contract/QueryHandle.purs | 15 +- src/Internal/Deserialization/FromBytes.js | 11 -- src/Internal/Deserialization/FromBytes.purs | 168 ------------------ .../Deserialization/NativeScript.purs | 5 +- src/Internal/Deserialization/PlutusData.purs | 10 +- src/Internal/Deserialization/Transaction.purs | 17 +- .../Deserialization/UnspentOutput.purs | 2 +- src/Internal/Deserialization/WitnessSet.purs | 9 +- src/Internal/Hashing.purs | 11 +- src/Internal/Helpers.purs | 13 ++ src/Internal/Plutip/Server.purs | 6 +- src/Internal/Plutip/Types.purs | 5 +- src/Internal/ProcessConstraints/Error.purs | 3 +- src/Internal/QueryM.purs | 21 +-- src/Internal/QueryM/Dispatcher.purs | 6 +- src/Internal/QueryM/Kupo.purs | 39 ++-- src/Internal/QueryM/Ogmios.purs | 30 ++-- src/Internal/Serialization.purs | 55 +++--- src/Internal/Serialization/Hash.js | 8 - src/Internal/Serialization/Hash.purs | 12 +- src/Internal/Serialization/MinFee.purs | 12 +- src/Internal/Serialization/WitnessSet.purs | 9 +- src/Internal/Service/Blockfrost.purs | 11 +- src/Internal/Test/E2E/Route.purs | 4 +- src/Internal/Test/E2E/Runner.purs | 2 +- src/Internal/Test/KeyDir.purs | 8 +- src/Internal/Test/UtxoDistribution.purs | 2 +- src/Internal/TxOutput.purs | 10 +- src/Internal/Types/BigNum.purs | 5 +- src/Internal/Types/Int.purs | 2 +- src/Internal/Types/PaymentPubKey.purs | 5 +- src/Internal/Types/Transaction.purs | 37 ++-- src/Internal/Wallet/Cip30.purs | 30 ++-- src/Internal/Wallet/Cip30Mock.purs | 2 +- src/Internal/Wallet/Key.purs | 31 ++-- src/Internal/Wallet/KeyFile.purs | 15 +- src/Internal/Wallet/Spec.purs | 9 +- test/Blockfrost.purs | 23 ++- test/Data.purs | 6 +- test/Deserialization.purs | 4 +- test/Fixtures.purs | 16 +- test/Plutip/Common.purs | 2 +- test/Plutip/Contract.purs | 8 +- test/PrivateKey.purs | 4 +- test/QueryM/AffInterface.purs | 12 +- test/Serialization.purs | 17 +- test/Transaction.purs | 4 +- test/Wallet/Cip30/SignData.purs | 19 +- 61 files changed, 446 insertions(+), 527 deletions(-) delete mode 100644 src/Internal/Deserialization/FromBytes.js delete mode 100644 src/Internal/Deserialization/FromBytes.purs diff --git a/examples/AwaitTxConfirmedWithTimeout.purs b/examples/AwaitTxConfirmedWithTimeout.purs index 401328c88..435bbbf7d 100644 --- a/examples/AwaitTxConfirmedWithTimeout.purs +++ b/examples/AwaitTxConfirmedWithTimeout.purs @@ -10,6 +10,7 @@ module Ctl.Examples.AwaitTxConfirmedWithTimeout import Contract.Prelude +import Cardano.Serialization.Lib (fromBytes) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract, throwContractError) @@ -19,6 +20,7 @@ import Contract.Transaction , awaitTxConfirmedWithTimeout ) import Control.Monad.Error.Class (try) +import Partial.Unsafe (unsafePartial) main :: Effect Unit main = example testnetNamiConfig @@ -31,8 +33,9 @@ contract :: Contract Unit contract = do logInfo' "Running AwaitTxConfirmedWithTimeout" let - fakeHash = TransactionHash $ hexToByteArrayUnsafe - "ffffffffffff55555555555555555555a1af1b7534b51e60fad3fe9c164313e8" + fakeHash = TransactionHash $ unsafePartial $ fromJust $ fromBytes $ + hexToByteArrayUnsafe + "ffffffffffff55555555555555555555a1af1b7534b51e60fad3fe9c164313e8" result <- try $ awaitTxConfirmedWithTimeout (wrap 1.0) fakeHash case result of Left _ -> pure unit diff --git a/examples/KeyWallet/Internal/Cip30Contract.purs b/examples/KeyWallet/Internal/Cip30Contract.purs index b6dfdba97..930faa13e 100644 --- a/examples/KeyWallet/Internal/Cip30Contract.purs +++ b/examples/KeyWallet/Internal/Cip30Contract.purs @@ -39,7 +39,7 @@ runKeyWalletContract_ contract = let cfg = testnetConfig { walletSpec = Just $ UseKeys - (PrivatePaymentKeyValue $ wrap privateKey) + (PrivatePaymentKeyValue $ wrap $ wrap privateKey) Nothing , customLogger = Just printLog } diff --git a/examples/KeyWallet/Internal/Pkh2PkhContract.purs b/examples/KeyWallet/Internal/Pkh2PkhContract.purs index 53bb3d9b3..c0604d196 100644 --- a/examples/KeyWallet/Internal/Pkh2PkhContract.purs +++ b/examples/KeyWallet/Internal/Pkh2PkhContract.purs @@ -10,6 +10,7 @@ import Contract.Config , WalletSpec(UseKeys) , testnetConfig ) +import Contract.Keys (privateKeyFromBytes) import Contract.Monad (Contract, launchAff_, runContract) import Control.Monad.Error.Class (class MonadError, catchError, liftMaybe) import Ctl.Examples.KeyWallet.Internal.Pkh2PkhHtmlForm (Log, Unlock) @@ -19,7 +20,6 @@ import Ctl.Examples.KeyWallet.Internal.Pkh2PkhHtmlForm , logError , mkForm ) as HtmlForm -import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.Serialization.Hash (ed25519KeyHashFromBech32) import Ctl.Internal.Types.RawBytes (hexToRawBytes) import Data.Log.Formatter.Pretty (prettyFormatter) diff --git a/src/Contract/Backend/Ogmios.purs b/src/Contract/Backend/Ogmios.purs index fc74f7702..52085fdbb 100644 --- a/src/Contract/Backend/Ogmios.purs +++ b/src/Contract/Backend/Ogmios.purs @@ -11,9 +11,10 @@ import Contract.Transaction (PoolPubKeyHash) import Ctl.Internal.Cardano.Types.Transaction (PoolRegistrationParams) import Ctl.Internal.Contract.Monad (wrapQueryM) import Ctl.Internal.QueryM (submitTxOgmios) as QueryM -import Ctl.Internal.QueryM.Ogmios (SubmitTxR, TxHash) +import Ctl.Internal.QueryM.Ogmios (SubmitTxR) import Ctl.Internal.QueryM.Pools (getPoolParameters) as QueryM import Ctl.Internal.Types.CborBytes (CborBytes) +import Ctl.Internal.Types.Transaction (TransactionHash) -- | **This function can only run with Ogmios backend** -- | @@ -25,5 +26,5 @@ getPoolParameters getPoolParameters = wrapQueryM <<< QueryM.getPoolParameters -- | Error returning variant -submitTxE :: TxHash -> CborBytes -> Contract SubmitTxR +submitTxE :: TransactionHash -> CborBytes -> Contract SubmitTxR submitTxE txhash cbor = wrapQueryM $ QueryM.submitTxOgmios txhash cbor diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs index c5b8e6e1d..c39be0560 100644 --- a/src/Contract/Backend/Ogmios/Mempool.purs +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -30,7 +30,6 @@ import Ctl.Internal.QueryM.Ogmios ( MempoolSizeAndCapacity(MempoolSizeAndCapacity) , MempoolSnapshotAcquired , MempoolTransaction(MempoolTransaction) - , TxHash ) as Ogmios import Ctl.Internal.Types.Transaction (TransactionHash) import Data.Array as Array @@ -48,8 +47,7 @@ acquireMempoolSnapshot = wrapQueryM QueryM.acquireMempoolSnapshot -- | Check to see if a TxHash is present in the current mempool snapshot. mempoolSnapshotHasTx :: Ogmios.MempoolSnapshotAcquired -> TransactionHash -> Contract Boolean -mempoolSnapshotHasTx ms = wrapQueryM <<< QueryM.mempoolSnapshotHasTx ms <<< - unwrap +mempoolSnapshotHasTx ms = wrapQueryM <<< QueryM.mempoolSnapshotHasTx ms -- | Get the first received TX in the current mempool snapshot. This function can -- | be recursively called to traverse the finger-tree of the mempool data set. diff --git a/src/Contract/Hashing.purs b/src/Contract/Hashing.purs index b17ae3854..168ad35d9 100644 --- a/src/Contract/Hashing.purs +++ b/src/Contract/Hashing.purs @@ -13,7 +13,6 @@ import Ctl.Internal.Cardano.Types.Transaction , AuxiliaryDataHash , PublicKey , Transaction - , convertPubKey ) import Ctl.Internal.Hashing ( blake2b224Hash @@ -36,14 +35,14 @@ import Ctl.Internal.Serialization (publicKeyHash) as Internal import Ctl.Internal.Serialization.AuxiliaryData (hashAuxiliaryData) import Ctl.Internal.Types.PubKeyHash (PubKeyHash) import Ctl.Internal.Types.Transaction (TransactionHash) -import Data.Newtype (wrap) +import Data.Newtype (unwrap, wrap) import Effect (Effect) transactionHash :: Transaction -> Effect TransactionHash transactionHash tx = Internal.transactionHash <$> convertTransaction tx publicKeyHash :: PublicKey -> PubKeyHash -publicKeyHash pk = wrap $ Internal.publicKeyHash $ convertPubKey pk +publicKeyHash pk = wrap $ Internal.publicKeyHash $ unwrap pk auxiliaryDataHash :: AuxiliaryData -> Effect AuxiliaryDataHash auxiliaryDataHash = hashAuxiliaryData diff --git a/src/Contract/Keys.purs b/src/Contract/Keys.purs index ba09afeb5..91a95da0f 100644 --- a/src/Contract/Keys.purs +++ b/src/Contract/Keys.purs @@ -1,9 +1,44 @@ -- | Exposes constructors for `PublicKey` and `Ed25519Signature` types module Contract.Keys - ( module Keys + ( module X + , privateKeyFromBech32 + , privateKeyFromBytes + , publicKeyFromBech32 + , publicKeyFromBytes ) where +import Prelude + +import Cardano.Serialization.Lib + ( privateKey_fromBech32 + , privateKey_fromNormalBytes + , publicKey_fromBytes + ) as Csl +import Contract.Prim.ByteArray (RawBytes) import Ctl.Internal.Cardano.Types.Transaction - ( mkEd25519Signature - , mkPublicKey - ) as Keys + ( PrivateKey(PrivateKey) + , PublicKey(PublicKey) + ) +import Ctl.Internal.Cardano.Types.Transaction (mkEd25519Signature) as X +import Ctl.Internal.Deserialization.Keys (publicKeyFromBech32) as Csl +import Ctl.Internal.Types.Aliases (Bech32String) +import Data.Maybe (Maybe) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) +import Safe.Coerce (coerce) + +privateKeyFromBytes :: RawBytes -> Maybe PrivateKey +privateKeyFromBytes = + map wrap <<< toMaybe <<< Csl.privateKey_fromNormalBytes <<< unwrap + +privateKeyFromBech32 :: Bech32String -> Maybe PrivateKey +privateKeyFromBech32 = + coerce $ toMaybe <<< Csl.privateKey_fromBech32 + +publicKeyFromBytes :: RawBytes -> Maybe PublicKey +publicKeyFromBytes = + map wrap <<< toMaybe <<< Csl.publicKey_fromBytes <<< unwrap + +publicKeyFromBech32 :: Bech32String -> Maybe PublicKey +publicKeyFromBech32 = + coerce Csl.publicKeyFromBech32 diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 090ab3ff7..ec7437283 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -65,6 +65,7 @@ module Contract.Test.Assert import Prelude +import Cardano.Serialization.Lib (toBytes) import Contract.Address (Address) import Contract.Monad (Contract) import Contract.PlutusData (OutputDatum) @@ -235,7 +236,7 @@ printContractAssertionFailure = case _ of SkippedTest msg -> msg showTxHash :: TransactionHash -> String -showTxHash = byteArrayToHex <<< unwrap +showTxHash = byteArrayToHex <<< toBytes <<< unwrap type Label = String diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index cf2dbeead..1981bc865 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -49,7 +49,6 @@ import Ctl.Internal.Contract.Wallet , ownStakePubKeyHashes ) import Ctl.Internal.Contract.Wallet as Contract -import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) as X import Ctl.Internal.Helpers (liftM) import Ctl.Internal.Plutus.Conversion ( toPlutusAddress diff --git a/src/Contract/Wallet/Key.purs b/src/Contract/Wallet/Key.purs index cf5c33441..95cce2669 100644 --- a/src/Contract/Wallet/Key.purs +++ b/src/Contract/Wallet/Key.purs @@ -6,9 +6,8 @@ module Contract.Wallet.Key import Prelude -import Ctl.Internal.Cardano.Types.Transaction (PublicKey, mkFromCslPubKey) -import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) as Internal -import Ctl.Internal.Serialization.Types (PrivateKey) +import Cardano.Serialization.Lib (privateKey_toPublic) +import Ctl.Internal.Cardano.Types.Transaction (PrivateKey, PublicKey) import Ctl.Internal.Wallet.Key ( KeyWallet(KeyWallet) , keyWalletPrivatePaymentKey @@ -20,6 +19,7 @@ import Ctl.Internal.Wallet.Spec , StakeKeyPresence(WithStakeKey, WithoutStakeKey) , mkKeyWalletFromMnemonic ) as X +import Data.Newtype (unwrap, wrap) publicKeyFromPrivateKey :: PrivateKey -> PublicKey -publicKeyFromPrivateKey = mkFromCslPubKey <<< Internal.publicKeyFromPrivateKey +publicKeyFromPrivateKey = wrap <<< privateKey_toPublic <<< unwrap diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index aaa974b5b..5be2156b3 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -12,6 +12,7 @@ module Ctl.Internal.BalanceTx.Sync import Prelude +import Cardano.Serialization.Lib (toBytes) import Contract.Log (logError', logTrace', logWarn') import Contract.Monad (Contract, liftedE) import Control.Monad.Reader (local) @@ -147,7 +148,7 @@ syncWalletWithTransaction txHash = whenM isCip30Wallet do logTrace' $ "syncWalletWithTransaction: waiting for wallet state synchronization " <> "with the query layer, querying for Tx: " - <> byteArrayToHex (unwrap txHash) + <> byteArrayToHex (toBytes $ unwrap txHash) liftAff (delay delayMs) sync -- Collect all the addresses controlled by the wallet diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index 99d143667..2ff76efa7 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -13,10 +13,8 @@ module Ctl.Internal.Cardano.Types.Transaction ) , CostModel(CostModel) , Costmdls(Costmdls) - , Ed25519Signature + , Ed25519Signature(Ed25519Signature) , mkEd25519Signature - , mkFromCslEd25519Signature - , convertEd25519Signature , Epoch(Epoch) , ExUnitPrices , ExUnits @@ -36,10 +34,8 @@ module Ctl.Internal.Cardano.Types.Transaction , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) , ProtocolParamUpdate , ProtocolVersion - , PublicKey - , mkPublicKey - , mkFromCslPubKey - , convertPubKey + , PublicKey(PublicKey) + , PrivateKey(PrivateKey) , Redeemer(Redeemer) , Relay(SingleHostAddr, SingleHostName, MultiHostName) , RequiredSigner(RequiredSigner) @@ -97,20 +93,31 @@ import Aeson , encodeAeson , finiteNumber ) -import Cardano.Serialization.Lib (Ed25519Signature, PublicKey) as Serialization -import Cardano.Serialization.Lib (toBytes) +import Cardano.Serialization.Lib + ( ed25519Signature_fromBech32 + , ed25519Signature_toBech32 + , privateKey_asBytes + , privateKey_toBech32 + , publicKey_asBytes + , publicKey_fromBytes + , publicKey_toBech32 + , toBytes + ) +import Cardano.Serialization.Lib as Csl import Control.Alternative ((<|>)) import Control.Apply (lift2) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) import Ctl.Internal.Cardano.Types.Value (Coin, NonAdaAsset, Value, pprintValue) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) -import Ctl.Internal.Deserialization.Keys - ( ed25519SignatureFromBech32 - , publicKeyFromBech32 - ) import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Helpers (appendMap, encodeMap, encodeTagged', (), (<<>>)) +import Ctl.Internal.Helpers + ( appendMap + , encodeMap + , encodeTagged' + , eqOrd + , () + , (<<>>) + ) import Ctl.Internal.Serialization.Address ( Address , NetworkId @@ -124,11 +131,6 @@ import Ctl.Internal.Serialization.Hash , ed25519KeyHashToBech32 , ed25519KeyHashToBech32Unsafe ) -import Ctl.Internal.Serialization.Keys - ( bech32FromEd25519Signature - , bech32FromPublicKey - , bytesFromPublicKey - ) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.BigNum (BigNum) @@ -138,7 +140,6 @@ import Ctl.Internal.Types.OutputDatum ) import Ctl.Internal.Types.PlutusData (PlutusData, pprintPlutusData) import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, PubKeyHash(PubKeyHash)) -import Ctl.Internal.Types.RawBytes (RawBytes) import Ctl.Internal.Types.RedeemerTag (RedeemerTag) import Ctl.Internal.Types.RewardAddress (RewardAddress) import Ctl.Internal.Types.Scripts (Language, PlutusScript) @@ -148,6 +149,7 @@ import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash) import Data.Array (union) import Data.ByteArray (ByteArray, byteArrayToHex) import Data.Either (Either(Left), note) +import Data.Function (on) import Data.Generic.Rep (class Generic) import Data.Lens (lens') import Data.Lens.Iso.Newtype (_Newtype) @@ -160,6 +162,7 @@ import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Monoid (guard) import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) import Data.Set (Set) import Data.Set (union) as Set import Data.Show.Generic (genericShow) @@ -170,6 +173,7 @@ import Data.UInt (UInt) import Data.UInt as UInt import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) +import Safe.Coerce (coerce) import Type.Proxy (Proxy(Proxy)) -------------------------------------------------------------------------------- @@ -864,56 +868,77 @@ derive newtype instance EncodeAeson Vkey instance Show Vkey where show = genericShow -newtype PublicKey = PublicKey RawBytes +newtype PrivateKey = PrivateKey Csl.PrivateKey + +derive instance Newtype PrivateKey _ + +instance Eq PrivateKey where + eq = eqOrd + +instance Ord PrivateKey where + compare = compare `on` (unwrap >>> privateKey_asBytes) + +instance EncodeAeson PrivateKey where + encodeAeson = unwrap >>> privateKey_asBytes >>> encodeAeson + +-- ToData/FromData instances are intentionally not provided: +-- it is pointless to store PrivateKeys in plutus script contexts, +-- so the instances are commented-out to prevent people from doing +-- something dangerous. -mkPublicKey :: Bech32String -> Maybe PublicKey -mkPublicKey = map (PublicKey <<< bytesFromPublicKey) <<< publicKeyFromBech32 +-- instance ToData PrivateKey where +-- toData (PrivateKey pk) = toData $ privateKey_asBytes pk -mkFromCslPubKey :: Serialization.PublicKey -> PublicKey -mkFromCslPubKey = PublicKey <<< bytesFromPublicKey +-- instance FromData PrivateKey where +-- fromData = map wrap <<< toMaybe <<< privateKey_fromNormalBytes <=< fromData -convertPubKey :: PublicKey -> Serialization.PublicKey -convertPubKey (PublicKey bs) = unsafePartial - $ fromJust <<< fromBytes <<< wrap <<< unwrap - $ bs +instance Show PrivateKey where + show pk = "(PrivateKey " <> (privateKey_toBech32 <<< unwrap $ pk) <> ")" -derive newtype instance Eq PublicKey -derive newtype instance Ord PublicKey -derive newtype instance EncodeAeson PublicKey +newtype PublicKey = PublicKey Csl.PublicKey + +derive instance Newtype PublicKey _ + +instance Eq PublicKey where + eq = eqOrd + +instance Ord PublicKey where + compare = compare `on` (unwrap >>> publicKey_asBytes) + +instance EncodeAeson PublicKey where + encodeAeson = unwrap >>> publicKey_asBytes >>> encodeAeson instance ToData PublicKey where - toData (PublicKey bytes) = toData bytes + toData (PublicKey pk) = toData $ publicKey_asBytes pk instance FromData PublicKey where - fromData = map mkFromCslPubKey <<< fromBytes <=< fromData + fromData = map wrap <<< toMaybe <<< publicKey_fromBytes <=< fromData instance Show PublicKey where - show pk = "(PublicKey " <> (bech32FromPublicKey <<< convertPubKey $ pk) <> ")" + show pk = "(PublicKey " <> (publicKey_toBech32 <<< unwrap $ pk) <> ")" -newtype Ed25519Signature = Ed25519Signature RawBytes +newtype Ed25519Signature = Ed25519Signature Csl.Ed25519Signature -mkEd25519Signature :: Bech32String -> Maybe Ed25519Signature -mkEd25519Signature = - map (Ed25519Signature <<< wrap <<< toBytes) <<< - ed25519SignatureFromBech32 +derive instance Newtype Ed25519Signature _ -mkFromCslEd25519Signature :: Serialization.Ed25519Signature -> Ed25519Signature -mkFromCslEd25519Signature = Ed25519Signature <<< wrap <<< toBytes +instance Eq Ed25519Signature where + eq a b = compare a b == EQ -convertEd25519Signature :: Ed25519Signature -> Serialization.Ed25519Signature -convertEd25519Signature (Ed25519Signature bs) = unsafePartial - $ fromJust <<< fromBytes <<< wrap <<< unwrap - $ bs +instance Ord Ed25519Signature where + compare = compare `on` (unwrap >>> toBytes) -derive newtype instance Eq Ed25519Signature -derive newtype instance Ord Ed25519Signature -derive newtype instance EncodeAeson Ed25519Signature +instance EncodeAeson Ed25519Signature where + encodeAeson = unwrap >>> toBytes >>> encodeAeson instance Show Ed25519Signature where show sig = "(Ed25519Signature " - <> (bech32FromEd25519Signature <<< convertEd25519Signature $ sig) + <> show (ed25519Signature_toBech32 <<< unwrap $ sig) <> ")" +mkEd25519Signature :: Bech32String -> Maybe Ed25519Signature +mkEd25519Signature = + coerce <<< toMaybe <<< ed25519Signature_fromBech32 + newtype Redeemer = Redeemer { tag :: RedeemerTag , index :: BigInt @@ -1003,5 +1028,7 @@ pprintUtxoMap utxos = TagSet.fromArray $ <> datumTagSets <> scriptRefTagSets in - (byteArrayToHex (unwrap transactionId) <> "#" <> UInt.toString index) + ( byteArrayToHex (toBytes $ unwrap transactionId) <> "#" <> + UInt.toString index + ) `tagSetTag` TagSet.fromArray outputTagSet diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index 8c811989e..71d4ceed4 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -83,7 +83,7 @@ import Data.Either (Either(Left, Right), isRight) import Data.Log.Level (LogLevel) import Data.Log.Message (Message) import Data.Maybe (Maybe(Just, Nothing), fromMaybe) -import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Newtype (class Newtype, unwrap) import Data.Set (Set) import Data.Set as Set import Data.Time.Duration (Milliseconds, Seconds) @@ -272,7 +272,7 @@ buildBackend logger = case _ of where buildCtlBackend :: CtlBackendParams -> Aff CtlBackend buildCtlBackend { ogmiosConfig, kupoConfig } = do - let isTxConfirmed = map isRight <<< isTxConfirmedAff kupoConfig <<< wrap + let isTxConfirmed = map isRight <<< isTxConfirmedAff kupoConfig ogmiosWs <- mkOgmiosWebSocketAff isTxConfirmed logger ogmiosConfig pure { ogmios: diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index b2ef75a6a..69baec3e3 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -42,7 +42,7 @@ import Ctl.Internal.Service.Blockfrost as Blockfrost import Ctl.Internal.Service.Error (ClientError(ClientOtherError)) import Data.Either (Either(Left, Right)) import Data.Maybe (fromMaybe, isJust) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (wrap) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error) @@ -68,10 +68,15 @@ queryHandleForCtlBackend runQueryM params backend = let txHash = Hashing.transactionHash cslTx logDebug' $ "Pre-calculated tx hash: " <> show txHash let txCborBytes = wrap $ toBytes cslTx - result <- QueryM.submitTxOgmios (unwrap txHash) txCborBytes - case result of - SubmitTxSuccess a -> pure $ pure $ wrap a - SubmitFail err -> pure $ Left $ ClientOtherError $ show err + result <- QueryM.submitTxOgmios txHash txCborBytes + pure $ case result of + SubmitTxSuccess th -> do + if th == txHash then Right th + else Left + ( ClientOtherError + "Computed TransactionHash is not equal to the one returned by Ogmios, please report as bug!" + ) + SubmitFail err -> Left $ ClientOtherError $ show err , evaluateTx: \tx additionalUtxos -> runQueryM' do txBytes <- wrap <<< toBytes <$> liftEffect (Serialization.convertTransaction tx) diff --git a/src/Internal/Deserialization/FromBytes.js b/src/Internal/Deserialization/FromBytes.js deleted file mode 100644 index 985f7ca88..000000000 --- a/src/Internal/Deserialization/FromBytes.js +++ /dev/null @@ -1,11 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function _fromBytes(helper) { - return name => bytes => { - try { - return helper.valid(lib[name].from_bytes(bytes)); - } catch (e) { - return helper.error(name + ".from_bytes() raised " + e); - } - }; -} diff --git a/src/Internal/Deserialization/FromBytes.purs b/src/Internal/Deserialization/FromBytes.purs deleted file mode 100644 index 96648d605..000000000 --- a/src/Internal/Deserialization/FromBytes.purs +++ /dev/null @@ -1,168 +0,0 @@ -module Ctl.Internal.Deserialization.FromBytes - ( class FromBytes - , fromBytes' - , fromBytes - , fromBytesEffect - ) where - -import Prelude - -import Ctl.Internal.Deserialization.Error (FromBytesError, fromBytesErrorHelper) -import Ctl.Internal.Error (E) -import Ctl.Internal.FfiHelpers (ErrorFfiHelper) -import Ctl.Internal.Serialization.Address - ( Address - , ByronAddress - , StakeCredential - ) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash, VRFKeyHash) -import Ctl.Internal.Serialization.Types - ( AuxiliaryDataHash - , DataHash - , Ed25519Signature - , GeneralTransactionMetadata - , GenesisDelegateHash - , GenesisHash - , Mint - , NativeScript - , PlutusData - , PoolMetadataHash - , PublicKey - , Redeemers - , ScriptDataHash - , Transaction - , TransactionBody - , TransactionHash - , TransactionMetadatum - , TransactionOutput - , TransactionUnspentOutput - , TransactionWitnessSet - , Value - , Vkeywitness - , Vkeywitnesses - ) -import Ctl.Internal.Types.CborBytes (CborBytes) -import Data.ByteArray (ByteArray) -import Data.Either (hush) -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) -import Effect (Effect) -import Effect.Exception (throw) -import Type.Row (type (+)) - --- | Calls `from_bytes` method for the appropriate type -class FromBytes a where - fromBytes' :: forall (r :: Row Type). ByteArray -> E (FromBytesError + r) a - -instance FromBytes Address where - fromBytes' = fromBytesImpl "Address" - -instance FromBytes AuxiliaryDataHash where - fromBytes' = fromBytesImpl "AuxiliaryDataHash" - -instance FromBytes ByronAddress where - fromBytes' = fromBytesImpl "ByronAddress" - -instance FromBytes DataHash where - fromBytes' = fromBytesImpl "DataHash" - -instance FromBytes Ed25519KeyHash where - fromBytes' = fromBytesImpl "Ed25519KeyHash" - -instance FromBytes Ed25519Signature where - fromBytes' = fromBytesImpl "Ed25519Signature" - -instance FromBytes GeneralTransactionMetadata where - fromBytes' = fromBytesImpl "GeneralTransactionMetadata" - -instance FromBytes TransactionMetadatum where - fromBytes' = fromBytesImpl "TransactionMetadatum" - -instance FromBytes GenesisDelegateHash where - fromBytes' = fromBytesImpl "GenesisDelegateHash" - -instance FromBytes GenesisHash where - fromBytes' = fromBytesImpl "GenesisHash" - -instance FromBytes Mint where - fromBytes' = fromBytesImpl "Mint" - -instance FromBytes NativeScript where - fromBytes' = fromBytesImpl "NativeScript" - -instance FromBytes PlutusData where - fromBytes' = fromBytesImpl "PlutusData" - -instance FromBytes PoolMetadataHash where - fromBytes' = fromBytesImpl "PoolMetadataHash" - -instance FromBytes PublicKey where - fromBytes' = fromBytesImpl "PublicKey" - -instance FromBytes Redeemers where - fromBytes' = fromBytesImpl "Redeemers" - -instance FromBytes ScriptDataHash where - fromBytes' = fromBytesImpl "ScriptDataHash" - -instance FromBytes ScriptHash where - fromBytes' = fromBytesImpl "ScriptHash" - -instance FromBytes StakeCredential where - fromBytes' = fromBytesImpl "StakeCredential" - -instance FromBytes Transaction where - fromBytes' = fromBytesImpl "Transaction" - -instance FromBytes TransactionBody where - fromBytes' = fromBytesImpl "TransactionBody" - -instance FromBytes TransactionHash where - fromBytes' = fromBytesImpl "TransactionHash" - -instance FromBytes TransactionOutput where - fromBytes' = fromBytesImpl "TransactionOutput" - -instance FromBytes TransactionUnspentOutput where - fromBytes' = fromBytesImpl "TransactionUnspentOutput" - -instance FromBytes TransactionWitnessSet where - fromBytes' = fromBytesImpl "TransactionWitnessSet" - -instance FromBytes Value where - fromBytes' = fromBytesImpl "Value" - -instance FromBytes VRFKeyHash where - fromBytes' = fromBytesImpl "VRFKeyHash" - -instance FromBytes Vkeywitness where - fromBytes' = fromBytesImpl "Vkeywitness" - -instance FromBytes Vkeywitnesses where - fromBytes' = fromBytesImpl "Vkeywitnesses" - --- for backward compatibility until `Maybe` is abandoned. Then to be renamed. -fromBytes :: forall (a :: Type). FromBytes a => CborBytes -> Maybe a -fromBytes = unwrap >>> fromBytes' >>> hush - -fromBytesEffect :: forall (a :: Type). FromBytes a => CborBytes -> Effect a -fromBytesEffect bytes = - case fromBytes bytes of - Nothing -> throw "from_bytes() call failed" - Just a -> pure a - -fromBytesImpl - :: forall (r :: Row Type) (a :: Type) - . String - -> ByteArray - -> E (FromBytesError + r) a -fromBytesImpl = _fromBytes fromBytesErrorHelper - ----- Foreign imports - -foreign import _fromBytes - :: forall (r :: Row Type) (a :: Type) - . ErrorFfiHelper r - -> String - -> ByteArray - -> E r a diff --git a/src/Internal/Deserialization/NativeScript.purs b/src/Internal/Deserialization/NativeScript.purs index 0e758b797..9153a7b96 100644 --- a/src/Internal/Deserialization/NativeScript.purs +++ b/src/Internal/Deserialization/NativeScript.purs @@ -6,8 +6,8 @@ module Ctl.Internal.Deserialization.NativeScript import Prelude import Aeson (JsonDecodeError(TypeMismatch)) +import Cardano.Serialization.Lib (fromBytes) import Ctl.Internal.Cardano.Types.NativeScript as T -import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.FfiHelpers ( ContainerHelper , containerHelper @@ -26,7 +26,6 @@ import Ctl.Internal.Serialization.Types import Ctl.Internal.Types.BigNum (BigNum) import Data.ByteArray (ByteArray) import Data.Either (Either, note) -import Data.Newtype (wrap) type ConvertNativeScript (r :: Type) = { scriptPubkey :: ScriptPubkey -> r @@ -40,7 +39,7 @@ type ConvertNativeScript (r :: Type) = decodeNativeScript :: ByteArray -> Either JsonDecodeError T.NativeScript decodeNativeScript scriptBytes = do nativeScript <- - flip note (fromBytes $ wrap scriptBytes) $ + flip note (fromBytes scriptBytes) $ TypeMismatch "decodeNativeScript: from_bytes() call failed" pure $ convertNativeScript nativeScript diff --git a/src/Internal/Deserialization/PlutusData.purs b/src/Internal/Deserialization/PlutusData.purs index eef0e501b..6200e14d7 100644 --- a/src/Internal/Deserialization/PlutusData.purs +++ b/src/Internal/Deserialization/PlutusData.purs @@ -5,12 +5,9 @@ module Ctl.Internal.Deserialization.PlutusData import Prelude +import Cardano.Serialization.Lib (fromBytes) import Ctl.Internal.Deserialization.BigInt (convertBigInt) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) -import Ctl.Internal.FfiHelpers - ( ContainerHelper - , containerHelper - ) +import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.Serialization.Types ( BigInt @@ -26,6 +23,7 @@ import Ctl.Internal.Types.PlutusData ) as T import Data.ByteArray (ByteArray) import Data.Maybe (Maybe, fromJust) +import Data.Newtype (unwrap) import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\), (/\)) import Partial.Unsafe (unsafePartial) @@ -76,7 +74,7 @@ convertPlutusBytes :: ByteArray -> T.PlutusData convertPlutusBytes = T.Bytes deserializeData :: forall (a :: Type). FromData a => CborBytes -> Maybe a -deserializeData = fromData <<< convertPlutusData <=< fromBytes +deserializeData = fromData <<< convertPlutusData <=< fromBytes <<< unwrap foreign import _convertPlutusData :: ConvertPlutusData -> PlutusData -> T.PlutusData diff --git a/src/Internal/Deserialization/Transaction.purs b/src/Internal/Deserialization/Transaction.purs index 2a9cc7c6e..73b2c9659 100644 --- a/src/Internal/Deserialization/Transaction.purs +++ b/src/Internal/Deserialization/Transaction.purs @@ -64,7 +64,11 @@ module Ctl.Internal.Deserialization.Transaction import Prelude import Cardano.Serialization.Lib (Ed25519KeyHash, ScriptHash, VRFKeyHash) as Csl -import Cardano.Serialization.Lib (toBytes, unpackMapContainerToMapWith) +import Cardano.Serialization.Lib + ( fromBytes + , toBytes + , unpackMapContainerToMapWith + ) import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash(AuxiliaryDataHash) @@ -115,7 +119,6 @@ import Ctl.Internal.Deserialization.Error , addErrTrace , cslErr ) -import Ctl.Internal.Deserialization.FromBytes (fromBytes') import Ctl.Internal.Deserialization.Language (convertLanguage) import Ctl.Internal.Deserialization.UnspentOutput (convertInput, convertOutput) import Ctl.Internal.Deserialization.WitnessSet @@ -185,7 +188,7 @@ import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Int (Int) as Csl import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.RewardAddress (RewardAddress(RewardAddress)) as T -import Ctl.Internal.Types.TokenName (TokenName, tokenNameFromAssetName) +import Ctl.Internal.Types.TokenName (tokenNameFromAssetName) import Ctl.Internal.Types.TransactionMetadata ( GeneralTransactionMetadata , TransactionMetadatum(MetadataList, MetadataMap, Bytes, Int, Text) @@ -197,7 +200,7 @@ import Data.Bitraversable (bitraverse) import Data.ByteArray (ByteArray) import Data.Either (Either) import Data.Map as M -import Data.Maybe (Maybe, fromJust, fromMaybe) +import Data.Maybe (Maybe, fromMaybe) import Data.Newtype (unwrap, wrap) import Data.Ratio (Ratio, reduce) import Data.Set (fromFoldable) as Set @@ -208,14 +211,14 @@ import Data.UInt as UInt import Data.Variant (Variant) import JS.BigInt (BigInt) import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) import Type.Row (type (+)) -- | Deserializes CBOR encoded transaction to a CTL's native type. deserializeTransaction :: forall (r :: Row Type). CborBytes -> Err r T.Transaction -deserializeTransaction txCbor = fromBytes' (unwrap txCbor) >>= - convertTransaction +deserializeTransaction txCbor = + cslErr "TransactionOutput" (fromBytes (unwrap txCbor)) >>= + convertTransaction -- | Converts transaction from foreign CSL representation to CTL's one. convertTransaction diff --git a/src/Internal/Deserialization/UnspentOutput.purs b/src/Internal/Deserialization/UnspentOutput.purs index f10d59cef..ebe6f6e00 100644 --- a/src/Internal/Deserialization/UnspentOutput.purs +++ b/src/Internal/Deserialization/UnspentOutput.purs @@ -80,7 +80,7 @@ convertInput :: TransactionInput -> T.TransactionInput convertInput input = let index = getTransactionIndex input - transactionId = T.TransactionHash $ toBytes $ getTransactionHash input + transactionId = T.TransactionHash $ getTransactionHash input in T.TransactionInput { transactionId diff --git a/src/Internal/Deserialization/WitnessSet.purs b/src/Internal/Deserialization/WitnessSet.purs index 479860515..541d4149d 100644 --- a/src/Internal/Deserialization/WitnessSet.purs +++ b/src/Internal/Deserialization/WitnessSet.purs @@ -18,8 +18,6 @@ import Ctl.Internal.Cardano.Types.Transaction , TransactionWitnessSet(TransactionWitnessSet) , Vkey(Vkey) , Vkeywitness(Vkeywitness) - , mkFromCslEd25519Signature - , mkFromCslPubKey ) as T import Ctl.Internal.Deserialization.Language (convertLanguage) import Ctl.Internal.Deserialization.NativeScript (convertNativeScript) @@ -53,6 +51,7 @@ import Ctl.Internal.Types.RedeemerTag as Tag import Ctl.Internal.Types.Scripts (PlutusScript(PlutusScript)) as S import Data.ByteArray (ByteArray) import Data.Maybe (Maybe) +import Data.Newtype (wrap) import Data.Tuple (curry) import Data.Tuple.Nested ((/\)) import Effect.Exception (throw) @@ -85,12 +84,12 @@ convertVkeyWitness witness = let vkey = getVkey witness publicKey = convertVkey vkey - signature = T.mkFromCslEd25519Signature $ getSignature witness + signature = wrap $ getSignature witness in T.Vkeywitness $ publicKey /\ signature convertVkey :: Vkey -> T.Vkey -convertVkey = T.Vkey <<< T.mkFromCslPubKey <<< vkeyPublicKey +convertVkey = T.Vkey <<< wrap <<< vkeyPublicKey convertNativeScripts :: NativeScripts -> Array T.NativeScript convertNativeScripts nativeScripts = @@ -99,7 +98,7 @@ convertNativeScripts nativeScripts = convertBootstraps :: BootstrapWitnesses -> Array T.BootstrapWitness convertBootstraps = extractBootstraps >>> map \bootstrap -> { vkey: convertVkey $ getBootstrapVkey bootstrap - , signature: T.mkFromCslEd25519Signature $ getBootstrapSignature bootstrap + , signature: wrap $ getBootstrapSignature bootstrap , chainCode: getBootstrapChainCode bootstrap , attributes: getBootstrapAttributes bootstrap } diff --git a/src/Internal/Hashing.purs b/src/Internal/Hashing.purs index 04c9d9e66..80b9d470c 100644 --- a/src/Internal/Hashing.purs +++ b/src/Internal/Hashing.purs @@ -17,7 +17,7 @@ module Ctl.Internal.Hashing import Prelude -import Cardano.Serialization.Lib (toBytes) +import Cardano.Serialization.Lib (fromBytes, toBytes) import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) @@ -36,11 +36,13 @@ import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.Scripts (PlutusScript) import Ctl.Internal.Types.Transaction (DataHash, TransactionHash) import Data.ByteArray (ByteArray) +import Data.Maybe (fromJust) import Data.Newtype (unwrap, wrap) import Effect (Effect) import Node.Buffer (fromString, toString) as Buffer import Node.Crypto.Hash (createHash, digest, update) as Hash import Node.Encoding (Encoding(Hex, UTF8)) +import Partial.Unsafe (unsafePartial) foreign import blake2b224Hash :: ByteArray -> ByteArray @@ -78,8 +80,11 @@ datumHash = -- | Calculates the hash of the transaction by applying `blake2b256Hash` to -- | the cbor-encoded transaction body. transactionHash :: Serialization.Transaction -> TransactionHash -transactionHash = - wrap <<< blake2b256Hash <<< toBytes <<< _txBody +transactionHash tx = + -- can't fail, because the length is correct + wrap $ unsafePartial $ fromJust $ fromBytes $ blake2b256Hash $ toBytes + $ _txBody + $ tx plutusScriptHash :: PlutusScript -> ScriptHash plutusScriptHash = hashPlutusScript <<< convertPlutusScript diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index 6b7383655..fddbb6049 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -33,11 +33,15 @@ module Ctl.Internal.Helpers , tagProp , uIntToBigInt , pprintTagSet + , eqOrd + , showFromBytes ) where import Prelude import Aeson (class EncodeAeson, Aeson, encodeAeson, toString) +import Cardano.Serialization.Lib (class IsBytes, toBytes) +import Cardano.Serialization.Lib.Internal (class IsCsl) import Control.Monad.Error.Class (class MonadError, throwError) import Ctl.Internal.Helpers.Formatter (showTags) import Data.Array (union) @@ -301,3 +305,12 @@ fromMaybeFlipped :: forall (a :: Type). Maybe a -> a -> a fromMaybeFlipped = flip fromMaybe infixl 5 fromMaybeFlipped as ?? + +eqOrd :: forall a. Ord a => a -> a -> Boolean +eqOrd a b = compare a b == EQ + +showFromBytes :: forall a. IsCsl a => IsBytes a => String -> a -> String +showFromBytes typeName a = "(" <> typeName + <> " $ unsafePartial $ fromJust $ fromBytes " + <> show (toBytes a) + <> ")" diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index b31118b3f..bbf468d79 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -25,6 +25,7 @@ import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) import Ctl.Internal.Affjax (request) as Affjax +import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.Monad ( buildBackend @@ -85,7 +86,7 @@ import Data.HTTP.Method as Method import Data.Log.Level (LogLevel) import Data.Log.Message (Message) import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) -import Data.Newtype (over, unwrap, wrap) +import Data.Newtype (over, wrap) import Data.Set as Set import Data.String.CodeUnits (indexOf) as String import Data.String.Pattern (Pattern(Pattern)) @@ -114,6 +115,7 @@ import Mote.Monad (MoteT(MoteT), mapTest) import Node.ChildProcess (defaultSpawnOptions) import Node.FS.Sync (exists, mkdir) as FSSync import Node.Path (FilePath, dirname) +import Safe.Coerce (coerce) import Type.Prelude (Proxy(Proxy)) -- | Run a single `Contract` in Plutip environment. @@ -360,7 +362,7 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do wallets <- liftContractM "Impossible happened: could not decode wallets. Please report as bug" - $ decodeWallets distr (unwrap <$> response.privateKeys) + $ decodeWallets distr (coerce response.privateKeys) let walletsArray = keyWallets (Proxy :: Proxy distr) wallets void $ waitNSlots one transferFundsFromEnterpriseToBase ourKey walletsArray diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index 19ca0e08b..0733eff22 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -30,9 +30,9 @@ import Aeson , toStringifiedNumbersJson , (.:) ) +import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) import Ctl.Internal.Contract.Hooks (Hooks) import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) -import Ctl.Internal.Serialization.Types (PrivateKey) import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) @@ -111,7 +111,8 @@ instance DecodeAeson PrivateKeyResponse where decodeAeson json = do cborStr <- decodeAeson json cborBytes <- note err $ hexToByteArray cborStr - PrivateKeyResponse <$> note err (privateKeyFromBytes (RawBytes cborBytes)) + PrivateKeyResponse <<< PrivateKey <$> note err + (privateKeyFromBytes (RawBytes cborBytes)) where err :: JsonDecodeError err = TypeMismatch "PrivateKey" diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 137fd02ac..e9c13589c 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -2,6 +2,7 @@ module Ctl.Internal.ProcessConstraints.Error where import Prelude +import Cardano.Serialization.Lib (toBytes) import Ctl.Internal.Cardano.Types.NativeScript (pprintNativeScript) import Ctl.Internal.Cardano.Types.Value (CurrencySymbol, getCurrencySymbol) import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) @@ -169,6 +170,6 @@ explainMkUnbalancedTxError = case _ of prettyTxIn :: TransactionInput -> String prettyTxIn (TransactionInput ti) = - byteArrayToHex (unwrap ti.transactionId) + byteArrayToHex (toBytes $ unwrap ti.transactionId) <> "#" <> UInt.toString ti.index diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 13b41e9dd..864afd185 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -132,7 +132,6 @@ import Ctl.Internal.QueryM.Ogmios , PoolParametersR , ReleasedMempool , StakePoolsQueryArgument - , TxHash ) import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.QueryM.UniqueId (ListenerId) @@ -153,6 +152,7 @@ import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.Scripts (PlutusScript) import Ctl.Internal.Types.SystemStart (SystemStart) +import Ctl.Internal.Types.Transaction (TransactionHash) import Ctl.Internal.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) import Data.Bifunctor (lmap) import Data.ByteArray (byteArrayToHex) @@ -313,7 +313,7 @@ getChainTip = ogmiosChainTipToTip <$> mkOgmiosRequest Ogmios.queryChainTipCall -- Ogmios Local Tx Submission Protocol -------------------------------------------------------------------------------- -submitTxOgmios :: TxHash -> CborBytes -> QueryM Ogmios.SubmitTxR +submitTxOgmios :: TransactionHash -> CborBytes -> QueryM Ogmios.SubmitTxR submitTxOgmios txHash tx = do ws <- asks $ underlyingWebSocket <<< _.ogmiosWs <<< _.runtime listeners' <- asks $ listeners <<< _.ogmiosWs <<< _.runtime @@ -363,7 +363,7 @@ mempoolSnapshotHasTxAff :: OgmiosWebSocket -> Logger -> Ogmios.MempoolSnapshotAcquired - -> TxHash + -> TransactionHash -> Aff Boolean mempoolSnapshotHasTxAff ogmiosWs logger ms txh = unwrap <$> mkOgmiosRequestAff ogmiosWs logger @@ -412,7 +412,7 @@ acquireMempoolSnapshot = mempoolSnapshotHasTx :: Ogmios.MempoolSnapshotAcquired - -> TxHash + -> TransactionHash -> QueryM Boolean mempoolSnapshotHasTx ms txh = unwrap <$> mkOgmiosRequest @@ -510,7 +510,7 @@ listeners (WebSocket _ ls) = ls -- OgmiosWebSocket Setup and PrimOps -------------------------------------------------------------------------------- -type IsTxConfirmed = TxHash -> Aff Boolean +type IsTxConfirmed = TransactionHash -> Aff Boolean mkOgmiosWebSocketAff :: IsTxConfirmed @@ -605,16 +605,16 @@ resendPendingSubmitRequests for_ pr' \(listenerId /\ requestBody /\ txHash) -> handlePendingSubmitRequest ms listenerId requestBody txHash where - log :: String -> Boolean -> TxHash -> Aff Unit + log :: String -> Boolean -> TransactionHash -> Aff Unit log label value txHash = liftEffect $ logger Debug $ - label <> ": " <> show value <> " TxHash: " <> show txHash + label <> ": " <> show value <> " TransactionHash: " <> show txHash handlePendingSubmitRequest :: Ogmios.MempoolSnapshotAcquired -> ListenerId -> RequestBody - -> TxHash + -> TransactionHash -> Aff Unit handlePendingSubmitRequest ms listenerId requestBody txHash = do -- Check if the transaction was added to the mempool: @@ -727,7 +727,7 @@ type OgmiosListeners = , systemStart :: ListenerSet Unit Ogmios.OgmiosSystemStart , acquireMempool :: ListenerSet Unit Ogmios.MempoolSnapshotAcquired , releaseMempool :: ListenerSet Unit ReleasedMempool - , mempoolHasTx :: ListenerSet TxHash HasTxR + , mempoolHasTx :: ListenerSet TransactionHash HasTxR , mempoolNextTx :: ListenerSet Unit MaybeMempoolTransaction , mempoolSizeAndCapacity :: ListenerSet Unit Ogmios.MempoolSizeAndCapacity , stakePools :: ListenerSet StakePoolsQueryArgument PoolParametersR @@ -747,7 +747,8 @@ type ListenerSet (request :: Type) (response :: Type) = -- to replay requests in case of a WebSocket failure. } -type SubmitTxListenerSet = ListenerSet (TxHash /\ CborBytes) Ogmios.SubmitTxR +type SubmitTxListenerSet = ListenerSet (TransactionHash /\ CborBytes) + Ogmios.SubmitTxR mkAddMessageListener :: forall (response :: Type) diff --git a/src/Internal/QueryM/Dispatcher.purs b/src/Internal/QueryM/Dispatcher.purs index 7be1da08c..0b1d4d8fe 100644 --- a/src/Internal/QueryM/Dispatcher.purs +++ b/src/Internal/QueryM/Dispatcher.purs @@ -16,8 +16,8 @@ import Prelude import Aeson (Aeson, JsonDecodeError, stringifyAeson) import Ctl.Internal.QueryM.JsonRpc2 (parseJsonRpc2ResponseId) -import Ctl.Internal.QueryM.Ogmios (TxHash) import Ctl.Internal.QueryM.UniqueId (ListenerId) +import Ctl.Internal.Types.Transaction (TransactionHash) import Data.Either (Either(Left, Right)) import Data.Map (Map) import Data.Map (empty, lookup) as Map @@ -85,5 +85,5 @@ newPendingRequests = Ref.new Map.empty type PendingRequests = GenericPendingRequests RequestBody -type PendingSubmitTxRequests = GenericPendingRequests (RequestBody /\ TxHash) - +type PendingSubmitTxRequests = GenericPendingRequests + (RequestBody /\ TransactionHash) diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index 897faa73a..ceb98a009 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -24,6 +24,7 @@ import Aeson import Affjax (Error, Response, defaultRequest) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) +import Cardano.Serialization.Lib (fromBytes, toBytes) import Contract.Log (logTrace') import Control.Alt ((<|>)) import Control.Bind (bindFlipped) @@ -53,7 +54,6 @@ import Ctl.Internal.Contract.QueryHandle.Error , GetTxMetadataMetadataEmptyOrMissingError ) ) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Deserialization.NativeScript (decodeNativeScript) import Ctl.Internal.Deserialization.PlutusData (deserializeData) import Ctl.Internal.Deserialization.Transaction @@ -71,7 +71,7 @@ import Ctl.Internal.ServerConfig (ServerConfig, mkHttpUrl) import Ctl.Internal.Service.Error (ClientError(ClientOtherError)) import Ctl.Internal.Service.Helpers (aesonArray, aesonObject, aesonString) import Ctl.Internal.Types.BigNum (toString) as BigNum -import Ctl.Internal.Types.CborBytes (CborBytes, hexToCborBytes) +import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) import Ctl.Internal.Types.OutputDatum ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) @@ -128,15 +128,16 @@ getUtxoByOref oref = runExceptT do pure $ Map.lookup oref utxoMap where endpoint :: String - endpoint = "/matches/" <> outputIndex <> "@" <> txHashHex <> "?unspent" + endpoint = "/matches/" <> outputIndex <> "@" <> txHashToHex txHash <> + "?unspent" where TransactionInput { transactionId: txHash, index } = oref outputIndex :: String outputIndex = UInt.toString index - txHashHex :: String - txHashHex = byteArrayToHex (unwrap txHash) +txHashToHex :: TransactionHash -> String +txHashToHex txHash = byteArrayToHex (toBytes $ unwrap txHash) -- | Specialized function to get addresses only, without resolving script -- | references. Used internally. @@ -149,10 +150,7 @@ getOutputAddressesByTxHash txHash = runExceptT do unwrap >>> _.address where endpoint :: String - endpoint = "/matches/*@" <> txHashHex <> "?unspent" - where - txHashHex :: String - txHashHex = byteArrayToHex (unwrap txHash) + endpoint = "/matches/*@" <> txHashToHex txHash <> "?unspent" getDatumByHash :: DataHash -> QueryM (Either ClientError (Maybe Datum)) getDatumByHash (DataHash dataHashBytes) = do @@ -175,7 +173,7 @@ isTxConfirmed txHash = do do -- we don't add `?unspent`, because we only care about existence of UTxOs, -- possibly they can be consumed - let endpoint = "/matches/*@" <> byteArrayToHex (unwrap txHash) + let endpoint = "/matches/*@" <> txHashToHex txHash -- Do this clumsy special case logging. It's better than sending it silently logTrace' $ "sending kupo request: " <> endpoint liftAff $ isTxConfirmedAff config txHash @@ -183,8 +181,8 @@ isTxConfirmed txHash = do -- Exported due to Ogmios requiring confirmations at a websocket level isTxConfirmedAff :: ServerConfig -> TransactionHash -> Aff (Either ClientError (Maybe Slot)) -isTxConfirmedAff config (TransactionHash txHash) = runExceptT do - let endpoint = "/matches/*@" <> byteArrayToHex txHash +isTxConfirmedAff config txHash = runExceptT do + let endpoint = "/matches/*@" <> txHashToHex txHash utxos <- ExceptT $ handleAffjaxResponse <$> kupoGetRequestAff config endpoint -- Take the first utxo's slot to give the transactions slot pure $ uncons utxos <#> _.head >>> unwrapKupoUtxoSlot @@ -199,7 +197,7 @@ getTxMetadata txHash = runExceptT do let endpoint = "/metadata/" <> BigNum.toString (unwrap slot) <> "?transaction_id=" - <> byteArrayToHex (unwrap txHash) + <> txHashToHex txHash kupoMetadata <- ExceptT $ lmap GetTxMetadataClientError <<< handleAffjaxResponse <$> kupoGetRequest @@ -256,7 +254,9 @@ instance DecodeAeson KupoTransactionOutput where decodeAddress obj = getField obj "address" >>= \x -> note (TypeMismatch "Expected bech32 or base16 encoded Shelley address") - (addressFromBech32 x <|> (fromBytes =<< hexToCborBytes x)) + ( addressFromBech32 x <|> + (map wrap <<< fromBytes =<< hexToByteArray x) + ) decodeDatumHash :: Object Aeson @@ -331,9 +331,12 @@ instance DecodeAeson KupoUtxoMap where decodeTxHash :: Object Aeson -> Either JsonDecodeError TransactionHash decodeTxHash = - flip getField "transaction_id" >=> hexToByteArray >>> case _ of - Nothing -> Left (TypeMismatch "Expected hexstring") - Just txHashBytes -> pure (TransactionHash txHashBytes) + flip getField "transaction_id" + >=> hexToByteArray >>> note (TypeMismatch "Expected hexstring") + >=> fromBytes + >>> note (TypeMismatch "Expected TransactionHash") + >>> + map TransactionHash resolveKupoUtxoMap :: KupoUtxoMap -> QueryM (Either ClientError UtxoMap) resolveKupoUtxoMap (KupoUtxoMap kupoUtxoMap) = @@ -466,7 +469,7 @@ instance Show KupoMetadata where instance DecodeAeson KupoMetadata where decodeAeson = decodeAeson >=> case _ of [ { raw: cbor } :: { raw :: CborBytes } ] -> do - metadata <- flip note (fromBytes cbor) $ + metadata <- flip note (fromBytes $ unwrap cbor) $ TypeMismatch "Hexadecimal encoded Metadata" pure $ KupoMetadata $ Just $ convertGeneralTransactionMetadata metadata [] -> Right $ KupoMetadata Nothing diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 81b03c5de..8d1522109 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -44,7 +44,6 @@ module Ctl.Internal.QueryM.Ogmios , TxEvaluationFailure(UnparsedError, AdditionalUtxoOverlap, ScriptFailures) , TxEvaluationResult(TxEvaluationResult) , TxEvaluationR(TxEvaluationR) - , TxHash , HasTxR(HasTxR) , MaybeMempoolTransaction(MaybeMempoolTransaction) , acquireMempoolSnapshotCall @@ -178,17 +177,13 @@ import Ctl.Internal.Types.SystemStart , sysStartToOgmiosTimestamp ) import Ctl.Internal.Types.TokenName (getTokenName) +import Ctl.Internal.Types.Transaction (TransactionHash) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Argonaut.Encode.Encoders as Argonaut import Data.Array (catMaybes) import Data.Array (fromFoldable, length, replicate) as Array import Data.Bifunctor (lmap) -import Data.ByteArray - ( ByteArray - , byteArrayFromIntArray - , byteArrayToHex - , hexToByteArray - ) +import Data.ByteArray (byteArrayFromIntArray, byteArrayToHex, hexToByteArray) import Data.Either (Either(Left, Right), either, note) import Data.Foldable (fold, foldl) import Data.Generic.Rep (class Generic) @@ -269,7 +264,7 @@ type OgmiosAddress = String -- | Sends a serialized signed transaction with its full witness through the -- | Cardano network via Ogmios. -submitTxCall :: JsonRpc2Call (TxHash /\ CborBytes) SubmitTxR +submitTxCall :: JsonRpc2Call (TransactionHash /\ CborBytes) SubmitTxR submitTxCall = mkOgmiosCallType { method: "submitTransaction" , params: \(_ /\ cbor) -> @@ -298,7 +293,7 @@ acquireMempoolSnapshotCall = mkOgmiosCallTypeNoArgs "acquireMempool" mempoolSnapshotHasTxCall - :: MempoolSnapshotAcquired -> JsonRpc2Call TxHash HasTxR + :: MempoolSnapshotAcquired -> JsonRpc2Call TransactionHash HasTxR mempoolSnapshotHasTxCall _ = mkOgmiosCallType { method: "hasTransaction" , params: { id: _ } @@ -439,12 +434,13 @@ instance DecodeOgmios ReleasedMempool where ---------------- TX SUBMISSION QUERY RESPONSE & PARSING submitSuccessPartialResp - :: TxHash -> { result :: { transaction :: { id :: TxHash } } } + :: TransactionHash + -> { result :: { transaction :: { id :: TransactionHash } } } submitSuccessPartialResp txHash = { "result": { "transaction": { "id": txHash } } } data SubmitTxR - = SubmitTxSuccess TxHash + = SubmitTxSuccess TransactionHash | SubmitFail OgmiosError derive instance Generic SubmitTxR _ @@ -452,8 +448,6 @@ derive instance Generic SubmitTxR _ instance Show SubmitTxR where show = genericShow -type TxHash = ByteArray - instance DecodeOgmios SubmitTxR where decodeOgmios = decodeErrorOrResult { parseError: decodeError } @@ -472,11 +466,11 @@ instance DecodeOgmios SubmitTxR where Left $ TypeMismatch "Expected error code in a range [3000, 3999]" - decodeTxHash :: Aeson -> Either JsonDecodeError TxHash - decodeTxHash = aesonObject $ \o -> - ( getField o "transaction" >>= flip getField "id" >>= hexToByteArray - >>> maybe (Left $ TypeMismatch "Expected hexstring") pure - ) + decodeTxHash :: Aeson -> Either JsonDecodeError TransactionHash + decodeTxHash = aesonObject \o -> do + txHashHex <- getField o "transaction" >>= flip getField "id" + note (TypeMismatch "Expected hexstring of TransactionHash") $ + hexToByteArray txHashHex >>= fromBytes >>> map wrap ---------------- SYSTEM START QUERY RESPONSE & PARSING newtype OgmiosSystemStart = OgmiosSystemStart SystemStart diff --git a/src/Internal/Serialization.purs b/src/Internal/Serialization.purs index 336cc57b3..645c5b50d 100644 --- a/src/Internal/Serialization.purs +++ b/src/Internal/Serialization.purs @@ -16,7 +16,13 @@ module Ctl.Internal.Serialization import Prelude -import Cardano.Serialization.Lib (VRFKeyHash, toBytes) +import Cardano.Serialization.Lib + ( VRFKeyHash + , fromBytes + , toBytes + , transactionInput_new + ) +import Cardano.Serialization.Lib.Internal (packListContainer) import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) as T @@ -55,7 +61,6 @@ import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) ) as T import Ctl.Internal.Cardano.Types.Value as Value -import Ctl.Internal.Deserialization.FromBytes (fromBytes, fromBytesEffect) import Ctl.Internal.FfiHelpers ( ContainerHelper , MaybeFfiHelper @@ -157,8 +162,8 @@ import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2)) as S import Ctl.Internal.Types.TokenName (getTokenName) as TokenName import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) as T import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) as T +import Data.Array as Array import Data.ByteArray (ByteArray) -import Data.Foldable (class Foldable) import Data.Foldable (null) as Foldable import Data.FoldableWithIndex (forWithIndex_) import Data.Map as Map @@ -480,7 +485,7 @@ foreign import setTxIsValid :: Transaction -> Boolean -> Effect Unit convertTxBody :: T.TxBody -> Effect TransactionBody convertTxBody (T.TxBody body) = do - inputs <- convertTxInputs body.inputs + let inputs = convertTxInputs $ Array.fromFoldable body.inputs outputs <- convertTxOutputs body.outputs fee <- fromJustEff "Failed to convert fee" $ BigNum.fromBigInt (unwrap body.fee) @@ -490,7 +495,7 @@ convertTxBody (T.TxBody body) = do for_ body.withdrawals $ convertWithdrawals >=> setTxBodyWithdrawals txBody for_ body.update $ convertUpdate >=> setTxBodyUpdate txBody for_ body.auxiliaryDataHash $ - unwrap >>> wrap >>> fromBytes >>> fromJustEff + unwrap >>> fromBytes >>> fromJustEff "Failed to convert auxiliary data hash" >=> transactionBodySetAuxiliaryDataHash txBody for_ body.validityStartInterval @@ -505,10 +510,10 @@ convertTxBody (T.TxBody body) = do for_ body.networkId $ convertNetworkId >=> setTxBodyNetworkId txBody for_ body.mint $ convertMint >=> setTxBodyMint txBody for_ body.scriptDataHash $ - unwrap >>> wrap >>> fromBytes >>> fromJustEff + unwrap >>> fromBytes >>> fromJustEff "Failed to convert script data hash" >=> setTxBodyScriptDataHash txBody - for_ body.collateral $ convertTxInputs >=> setTxBodyCollateral txBody + for_ body.collateral $ convertTxInputs >>> setTxBodyCollateral txBody for_ body.requiredSigners $ map unwrap >>> transactionBodySetRequiredSigners containerHelper txBody @@ -523,7 +528,8 @@ convertTxBody (T.TxBody body) = do >=> setTxBodyTotalCollateral txBody if Foldable.null body.referenceInputs then pure unit - else convertTxInputs body.referenceInputs >>= setTxBodyReferenceInputs txBody + else convertTxInputs (Array.fromFoldable body.referenceInputs) # + setTxBodyReferenceInputs txBody pure txBody convertTransaction :: T.Transaction -> Effect Transaction @@ -555,7 +561,7 @@ convertProposedProtocolParameterUpdates ppus = for (Map.toUnfoldable $ unwrap ppus) \(genesisHash /\ ppu) -> do Tuple <$> - ( fromJustEff "Failed to convert genesis hash" $ fromBytes $ wrap + ( fromJustEff "Failed to convert genesis hash" $ fromBytes $ unwrap genesisHash ) <*> @@ -706,13 +712,11 @@ convertCert = case _ of join $ newGenesisKeyDelegationCertificate <$> ( fromJustEff "Failed to convert genesis hash" - $ fromBytes - $ wrap genesisHash + $ fromBytes genesisHash ) <*> ( fromJustEff "Failed to convert genesis delegate hash" - $ fromBytes - $ wrap genesisDelegateHash + $ fromBytes genesisDelegateHash ) <*> pure vrfKeyhash @@ -736,7 +740,7 @@ convertMoveInstantaneousReward (T.ToStakeCreds { pot, amounts }) = convertPoolMetadata :: T.PoolMetadata -> Effect PoolMetadata convertPoolMetadata (T.PoolMetadata { url: T.URL url, hash: T.PoolMetadataHash hash }) = - ( fromJustEff "Failed to convert script data hash" <<< fromBytes <<< wrap + ( fromJustEff "Failed to convert script data hash" <<< fromBytes >=> newPoolMetadata url ) hash @@ -780,19 +784,14 @@ convertMint (T.Mint nonAdaAssets) = do pure mint convertTxInputs - :: forall (f :: Type -> Type) - . Foldable f - => f T.TransactionInput - -> Effect TransactionInputs -convertTxInputs fInputs = do - inputs <- newTransactionInputs - traverse_ (convertTxInput >=> addTransactionInput inputs) fInputs - pure inputs - -convertTxInput :: T.TransactionInput -> Effect TransactionInput + :: Array T.TransactionInput + -> TransactionInputs +convertTxInputs inputs = do + packListContainer $ convertTxInput <$> inputs + +convertTxInput :: T.TransactionInput -> TransactionInput convertTxInput (T.TransactionInput { transactionId, index }) = do - tx_hash <- fromBytesEffect $ wrap $ unwrap transactionId - newTransactionInput tx_hash index + transactionInput_new (unwrap transactionId) (UInt.toNumber index) convertTxOutputs :: Array T.TransactionOutput -> Effect TransactionOutputs convertTxOutputs arrOutputs = do @@ -808,7 +807,7 @@ convertTxOutput case datum of NoOutputDatum -> pure unit OutputDatumHash dataHash -> do - for_ (fromBytes $ wrap $ unwrap dataHash) $ + for_ (fromBytes $ unwrap dataHash) $ transactionOutputSetDataHash txo OutputDatum datumValue -> do transactionOutputSetPlutusData txo @@ -873,7 +872,7 @@ convertTransactionUnspentOutput :: T.TransactionUnspentOutput -> Effect TransactionUnspentOutput convertTransactionUnspentOutput (T.TransactionUnspentOutput { input, output }) = do - input' <- convertTxInput input + let input' = convertTxInput input output' <- convertTxOutput output newTransactionUnspentOutput input' output' diff --git a/src/Internal/Serialization/Hash.js b/src/Internal/Serialization/Hash.js index 93d34250d..ffa6a106b 100644 --- a/src/Internal/Serialization/Hash.js +++ b/src/Internal/Serialization/Hash.js @@ -1,9 +1,5 @@ import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; -export function hashToBytes(hash) { - return hash.to_bytes(); -} - export function hashFromBytes(name) { return maybe => bytes => { return hashFromImpl(lib[name].from_bytes)(maybe)(bytes); @@ -55,7 +51,3 @@ export function _scriptHashFromBech32Impl(maybe) { return hashFromImpl(lib.ScriptHash.from_bech32)(maybe)(bech32str); }; } - -export function nativeScriptHash(script) { - return script.hash(); -} diff --git a/src/Internal/Serialization/Hash.purs b/src/Internal/Serialization/Hash.purs index 79e0358fe..16f109716 100644 --- a/src/Internal/Serialization/Hash.purs +++ b/src/Internal/Serialization/Hash.purs @@ -1,7 +1,7 @@ module Ctl.Internal.Serialization.Hash - ( Ed25519KeyHash - , ScriptHash - , VRFKeyHash + ( Ed25519KeyHash(Ed25519KeyHash) + , ScriptHash(ScriptHash) + , VRFKeyHash(VRFKeyHash) , ed25519KeyHashFromBech32 , ed25519KeyHashFromBytes , ed25519KeyHashToBech32 @@ -97,8 +97,10 @@ instance Ord Ed25519KeyHash where compare = compare `on` ed25519KeyHashToBytes instance Show Ed25519KeyHash where - show edkh = "(Ed25519KeyHash " <> rawBytesToHex (ed25519KeyHashToBytes edkh) - <> ")" + show edkh = + "(Ed25519KeyHash $ unsafePartial $ fromJust $ ed25519KeyHashFromBech32 " + <> show (ed25519KeyHashToBech32 "pool" edkh) + <> ")" instance ToData Ed25519KeyHash where toData = toData <<< unwrap <<< ed25519KeyHashToBytes diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index 12cd00694..0ca5a25c9 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -3,10 +3,16 @@ module Ctl.Internal.Serialization.MinFee (calculateMinFeeCsl) where import Prelude +import Contract.Keys (publicKeyFromBech32) import Control.Monad.Error.Class (class MonadThrow, liftMaybe) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAll)) +import Ctl.Internal.Cardano.Types.Transaction + ( Transaction + , Vkey(Vkey) + , Vkeywitness(Vkeywitness) + , mkEd25519Signature + ) as T import Ctl.Internal.Cardano.Types.Transaction (_vkeys, _witnessSet) -import Ctl.Internal.Cardano.Types.Transaction as T import Ctl.Internal.Cardano.Types.Value (Coin) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Ctl.Internal.NativeScripts (getMaximumSigners) @@ -85,13 +91,13 @@ addFakeSignatures selfSigners tx = fakeVkeywitness :: T.Vkeywitness fakeVkeywitness = T.Vkeywitness ( ( T.Vkey - ( unsafePartial $ fromJust $ T.mkPublicKey + ( unsafePartial $ fromJust $ publicKeyFromBech32 -- This should not fail assuming the hardcoded bech32 key is valid. "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" ) ) /\ - ( unsafePartial $ fromJust $ T.mkEd25519Signature + ( unsafePartial $ fromJust $ mkEd25519Signature "ed25519_sig1mr6pm5kanam2wkmae70jx7fjkzepghefj0lmnczu6fra\ \6auf2urgrte5axxhunw4x34l3l8tj9c0t4le39tj8lpjdgxmqnujw07t\ \kzs9m6t6x" diff --git a/src/Internal/Serialization/WitnessSet.purs b/src/Internal/Serialization/WitnessSet.purs index 9bb9a7ecb..5200c7b4c 100644 --- a/src/Internal/Serialization/WitnessSet.purs +++ b/src/Internal/Serialization/WitnessSet.purs @@ -42,8 +42,6 @@ import Ctl.Internal.Cardano.Types.Transaction , TransactionWitnessSet(TransactionWitnessSet) , Vkey(Vkey) , Vkeywitness(Vkeywitness) - , convertEd25519Signature - , convertPubKey ) as T import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) import Ctl.Internal.Serialization.NativeScript (convertNativeScripts) @@ -72,6 +70,7 @@ import Ctl.Internal.Types.BigNum (fromBigInt) as BigNum import Ctl.Internal.Types.RedeemerTag as Tag import Data.ByteArray (ByteArray) import Data.Maybe (maybe) +import Data.Newtype (unwrap) import Data.Traversable (for_, traverse, traverse_) import Data.Tuple.Nested ((/\)) import Effect (Effect) @@ -143,7 +142,7 @@ convertExUnits { mem, steps } = convertBootstrap :: T.BootstrapWitness -> Effect BootstrapWitness convertBootstrap { vkey, signature, chainCode, attributes } = do vkey' <- convertVkey vkey - let signature' = T.convertEd25519Signature signature + let signature' = unwrap signature newBootstrapWitness vkey' signature' chainCode attributes convertVkeywitnesses :: Array T.Vkeywitness -> Effect Vkeywitnesses @@ -155,11 +154,11 @@ convertVkeywitnesses arr = do convertVkeywitness :: T.Vkeywitness -> Effect Vkeywitness convertVkeywitness (T.Vkeywitness (vkey /\ signature)) = do vkey' <- convertVkey vkey - let signature' = T.convertEd25519Signature signature + let signature' = unwrap signature newVkeywitness vkey' signature' convertVkey :: T.Vkey -> Effect Vkey -convertVkey (T.Vkey pk) = newVkeyFromPublicKey $ T.convertPubKey pk +convertVkey (T.Vkey pk) = newVkeyFromPublicKey $ unwrap pk foreign import newTransactionWitnessSet :: Effect TransactionWitnessSet foreign import newPublicKey :: Bech32String -> Effect PublicKey diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 64979254b..cc99832fd 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -81,7 +81,7 @@ import Affjax.RequestBody (RequestBody, arrayView, string) as Affjax import Affjax.RequestHeader (RequestHeader(ContentType, RequestHeader)) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) as Affjax -import Cardano.Serialization.Lib (toBytes) +import Cardano.Serialization.Lib (fromBytes, toBytes) import Contract.RewardAddress ( rewardAddressToBech32 , stakePubKeyHashRewardAddress @@ -133,7 +133,6 @@ import Ctl.Internal.Contract.QueryHandle.Error , GetTxMetadataMetadataEmptyOrMissingError ) ) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Deserialization.PlutusData (deserializeData) import Ctl.Internal.Deserialization.Transaction ( convertGeneralTransactionMetadata @@ -396,14 +395,14 @@ realizeEndpoint endpoint = SubmitTransaction -> "/tx/submit" Transaction txHash -> - "/txs/" <> byteArrayToHex (unwrap txHash) + "/txs/" <> byteArrayToHex (toBytes $ unwrap txHash) TransactionMetadata txHash -> - "/txs/" <> byteArrayToHex (unwrap txHash) <> "/metadata/cbor" + "/txs/" <> byteArrayToHex (toBytes $ unwrap txHash) <> "/metadata/cbor" UtxosAtAddress address page count -> "/addresses/" <> addressBech32 address <> "/utxos?page=" <> show page <> ("&count=" <> show count) UtxosOfTransaction txHash -> - "/txs/" <> byteArrayToHex (unwrap txHash) <> "/utxos" + "/txs/" <> byteArrayToHex (toBytes $ unwrap txHash) <> "/utxos" PoolIds page count -> "/pools?page=" <> show page <> "&count=" <> show count <> "&order=asc" PoolParameters poolPubKeyHash -> @@ -1361,7 +1360,7 @@ instance DecodeAeson BlockfrostMetadata where \(metadatas :: Array { metadata :: CborBytes }) -> do metadatas' <- for metadatas \{ metadata } -> do map (unwrap <<< convertGeneralTransactionMetadata) <$> flip note - (fromBytes metadata) $ + (fromBytes $ unwrap metadata) $ TypeMismatch "Hexadecimal encoded Metadata" pure $ BlockfrostMetadata $ GeneralTransactionMetadata $ Map.unions diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index 9ad212ba2..df6cb6346 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -10,21 +10,21 @@ module Ctl.Internal.Test.E2E.Route import Prelude import Contract.Config (ContractParams) +import Contract.Keys (privateKeyFromBytes) import Contract.Monad (Contract, runContract) import Contract.Test.Cip30Mock (WalletMock, withCip30Mock) import Contract.Wallet ( PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) - , privateKeyFromBytes ) import Contract.Wallet.Key (privateKeysToKeyWallet) import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe) +import Ctl.Internal.Cardano.Types.Transaction (PrivateKey) import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) import Ctl.Internal.Helpers (liftEither) import Ctl.Internal.QueryM (ClusterSetup) import Ctl.Internal.Serialization.Address (NetworkId(MainnetId)) -import Ctl.Internal.Serialization.Types (PrivateKey) import Ctl.Internal.Test.E2E.Feedback.Browser (getClusterSetupRepeatedly) import Ctl.Internal.Test.E2E.Feedback.Hooks (addE2EFeedbackHooks) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 26a659b9c..4f6b0d720 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -223,7 +223,7 @@ buildPlutipConfig options = -- | Plutip does not generate private stake keys for us, so we make one and -- | fund it manually to get a usable base address. privateStakeKey :: PrivateStakeKey -privateStakeKey = wrap $ unsafePartial $ fromJust +privateStakeKey = wrap $ wrap $ unsafePartial $ fromJust $ privateKeyFromBytes =<< hexToRawBytes "633b1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 3716fabc3..6d6b0c8fc 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -4,9 +4,7 @@ module Ctl.Internal.Test.KeyDir import Prelude -import Contract.Address - ( addressToBech32 - ) +import Contract.Address (addressToBech32) import Contract.Config (ContractParams) import Contract.Hashing (publicKeyHash) import Contract.Log (logError', logTrace') @@ -50,6 +48,7 @@ import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except (throwError) import Control.Monad.Reader (asks, local) import Control.Parallel (parTraverse, parTraverse_) +import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) import Ctl.Internal.Deserialization.Keys (freshPrivateKey) import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.Plutus.Types.Transaction (_amount, _output) @@ -179,7 +178,8 @@ runContractTestsWithKeyDir params backup = do <> "\nFund it to continue." -- generate wallets - privateKeys <- liftEffect $ for distrArray \_ -> freshPrivateKey + privateKeys <- liftEffect $ for distrArray \_ -> PrivateKey <$> + freshPrivateKey wallets <- liftMaybe ( error diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index d4e3476b4..98cb62815 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -43,8 +43,8 @@ import Contract.Wallet import Control.Alternative (guard) import Control.Monad.Reader (asks) import Control.Monad.State.Trans (StateT(StateT), runStateT) +import Ctl.Internal.Cardano.Types.Transaction (PrivateKey) import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) -import Ctl.Internal.Serialization.Types (PrivateKey) import Ctl.Internal.Wallet.Key ( KeyWallet , PrivatePaymentKey(PrivatePaymentKey) diff --git a/src/Internal/TxOutput.purs b/src/Internal/TxOutput.purs index 74b248c45..2d723f739 100644 --- a/src/Internal/TxOutput.purs +++ b/src/Internal/TxOutput.purs @@ -9,18 +9,16 @@ module Ctl.Internal.TxOutput import Prelude -import Cardano.Serialization.Lib (toBytes) +import Cardano.Serialization.Lib (fromBytes, toBytes) import Control.Alt ((<|>)) import Control.Alternative (guard) import Ctl.Internal.Address (addressToOgmiosAddress, ogmiosAddressToAddress) import Ctl.Internal.Cardano.Types.Transaction ( TransactionOutput(TransactionOutput) ) as Transaction -import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Deserialization.PlutusData as Deserialization import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.Serialization.PlutusData as Serialization -import Ctl.Internal.Types.CborBytes (hexToCborBytes) import Ctl.Internal.Types.Datum (DataHash, Datum(Datum)) import Ctl.Internal.Types.OutputDatum ( OutputDatum(OutputDatum, OutputDatumHash, NoOutputDatum) @@ -43,7 +41,7 @@ import Data.Traversable (traverse) txOutRefToTransactionInput :: Ogmios.OgmiosTxOutRef -> Maybe Transaction.TransactionInput txOutRefToTransactionInput { txId, index } = do - transactionId <- hexToByteArray txId <#> wrap + transactionId <- hexToByteArray txId >>= fromBytes >>> map wrap pure $ wrap { transactionId , index @@ -54,7 +52,7 @@ transactionInputToTxOutRef :: Transaction.TransactionInput -> Ogmios.OgmiosTxOutRef transactionInputToTxOutRef (Transaction.TransactionInput { transactionId, index }) = - { txId: byteArrayToHex (unwrap transactionId) + { txId: byteArrayToHex (toBytes $ unwrap transactionId) , index } @@ -101,7 +99,7 @@ ogmiosDatumHashToDatumHash str = hexToByteArray str <#> wrap -- | Converts an Ogmios datum `String` to an internal `Datum` ogmiosDatumToDatum :: String -> Maybe Datum ogmiosDatumToDatum = - hexToCborBytes + hexToByteArray >=> fromBytes >=> (Deserialization.convertPlutusData >>> Datum >>> Just) diff --git a/src/Internal/Types/BigNum.purs b/src/Internal/Types/BigNum.purs index 28687cfc5..51d05263e 100644 --- a/src/Internal/Types/BigNum.purs +++ b/src/Internal/Types/BigNum.purs @@ -1,5 +1,5 @@ module Ctl.Internal.Types.BigNum - ( BigNum + ( BigNum(BigNum) , add , divFloor , fromBigInt @@ -36,6 +36,7 @@ import Cardano.Serialization.Lib import Cardano.Serialization.Lib as Csl import Ctl.Internal.Deserialization.Error (FromCslRepError, fromCslRepError) import Ctl.Internal.Error (E, noteE) +import Ctl.Internal.Helpers (eqOrd) import Data.Either (note) import Data.Int (fromString) as Int import Data.Maybe (Maybe, fromJust) @@ -54,7 +55,7 @@ newtype BigNum = BigNum Csl.BigNum derive instance Newtype BigNum _ instance Eq BigNum where - eq x y = compare x y == EQ + eq = eqOrd instance Ord BigNum where compare (BigNum lhs) (BigNum rhs) = diff --git a/src/Internal/Types/Int.purs b/src/Internal/Types/Int.purs index 38931e26c..22a13cac6 100644 --- a/src/Internal/Types/Int.purs +++ b/src/Internal/Types/Int.purs @@ -1,6 +1,6 @@ -- | `cardano-serialization-lib` Int type (can be positive or negative). module Ctl.Internal.Types.Int - ( Int + ( Int(Int) , newPositive , newNegative , fromBigInt diff --git a/src/Internal/Types/PaymentPubKey.purs b/src/Internal/Types/PaymentPubKey.purs index c1c53669b..4aa99cff0 100644 --- a/src/Internal/Types/PaymentPubKey.purs +++ b/src/Internal/Types/PaymentPubKey.purs @@ -10,11 +10,10 @@ import Ctl.Internal.Cardano.Types.Transaction ( PublicKey , RequiredSigner(RequiredSigner) , Vkey(Vkey) - , convertPubKey ) import Ctl.Internal.Serialization (publicKeyHash) import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) +import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) -- Plutus has a type called `PubKey` which we replace with `PublicKey` @@ -33,4 +32,4 @@ paymentPubKeyToVkey (PaymentPubKey pk) = Vkey pk paymentPubKeyToRequiredSigner :: PaymentPubKey -> RequiredSigner paymentPubKeyToRequiredSigner (PaymentPubKey pk) = - RequiredSigner <<< publicKeyHash $ convertPubKey pk + RequiredSigner <<< publicKeyHash $ unwrap pk diff --git a/src/Internal/Types/Transaction.purs b/src/Internal/Types/Transaction.purs index b59bc7283..9a309cb46 100644 --- a/src/Internal/Types/Transaction.purs +++ b/src/Internal/Types/Transaction.purs @@ -9,20 +9,20 @@ module Ctl.Internal.Types.Transaction import Prelude import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Serialization.Lib as Csl import Ctl.Internal.FromData (class FromData, fromData) +import Ctl.Internal.Helpers (eqOrd, showFromBytes) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.BigNum (zero) as BigNum import Ctl.Internal.Types.PlutusData (PlutusData(Constr)) -import Data.ByteArray - ( ByteArray - , byteArrayFromIntArrayUnsafe - , byteArrayToHex - ) +import Data.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe, byteArrayToHex) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Nothing)) -import Data.Newtype (class Newtype, wrap) +import Data.Maybe (Maybe(Nothing), fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Data.UInt (UInt, toInt) +import Partial.Unsafe (unsafePartial) import Test.QuickCheck.Arbitrary ( class Arbitrary , class Coarbitrary @@ -74,11 +74,13 @@ instance Coarbitrary TransactionInput where -- | 32-bytes blake2b256 hash of a tx body. -- | NOTE. Plutus docs might incorrectly state that it uses -- | SHA256 for this purposes. -newtype TransactionHash = TransactionHash ByteArray +newtype TransactionHash = TransactionHash Csl.TransactionHash derive instance Generic TransactionHash _ derive instance Newtype TransactionHash _ -derive newtype instance Eq TransactionHash +instance Eq TransactionHash where + eq = eqOrd + derive newtype instance EncodeAeson TransactionHash derive newtype instance DecodeAeson TransactionHash @@ -86,27 +88,30 @@ derive newtype instance DecodeAeson TransactionHash -- `TransactionInput`, we want lexicographical ordering on the hexstring. instance Ord TransactionHash where compare (TransactionHash h) (TransactionHash h') = - compare (byteArrayToHex h) (byteArrayToHex h') + compare (byteArrayToHex $ toBytes h) (byteArrayToHex $ toBytes h') instance Show TransactionHash where - show = genericShow + show = unwrap >>> showFromBytes "TransactionHash" -- Plutus actually has this as a zero indexed record instance FromData TransactionHash where fromData (Constr n [ bytes ]) | n == BigNum.zero = TransactionHash <$> - fromData bytes + (fromBytes =<< fromData bytes) fromData _ = Nothing -- Plutus actually has this as a zero indexed record instance ToData TransactionHash where - toData (TransactionHash bytes) = Constr BigNum.zero [ toData bytes ] + toData (TransactionHash th) = Constr BigNum.zero [ toData $ toBytes th ] instance Arbitrary TransactionHash where - arbitrary = - wrap <<< byteArrayFromIntArrayUnsafe <$> vectorOf 32 (chooseInt 0 255) + arbitrary = unsafePartial $ + wrap <<< fromJust <<< fromBytes <<< byteArrayFromIntArrayUnsafe <$> vectorOf + 32 + (chooseInt 0 255) instance Coarbitrary TransactionHash where - coarbitrary (TransactionHash bytes) generator = coarbitrary bytes generator + coarbitrary (TransactionHash th) generator = coarbitrary (toBytes th) + generator newtype DataHash = DataHash ByteArray diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index 8aee39d08..cd3eb8841 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -6,7 +6,7 @@ module Ctl.Internal.Wallet.Cip30 import Prelude -import Cardano.Serialization.Lib (toBytes) +import Cardano.Serialization.Lib (fromBytes, toBytes) import Cardano.Wallet.Cip30 (Api) import Cardano.Wallet.Cip30.TypeSafe (APIError) import Cardano.Wallet.Cip30.TypeSafe as Cip30 @@ -20,7 +20,6 @@ import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput ) import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value) -import Ctl.Internal.Deserialization.FromBytes (fromBytes, fromBytesEffect) import Ctl.Internal.Deserialization.UnspentOutput (convertValue) import Ctl.Internal.Deserialization.UnspentOutput as Deserialization.UnspentOuput import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet @@ -38,16 +37,11 @@ import Ctl.Internal.Serialization.Address , rewardAddressFromAddress ) import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.CborBytes - ( CborBytes - , cborBytesToHex - , hexToCborBytes - , rawBytesAsCborBytes - ) +import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex, hexToCborBytes) import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesToHex) -import Data.ByteArray (byteArrayToHex) +import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Maybe (Maybe(Nothing), maybe) -import Data.Newtype (unwrap) +import Data.Newtype (unwrap, wrap) import Data.Traversable (for, traverse) import Data.Variant (Variant, match) import Effect (Effect) @@ -169,7 +163,7 @@ getUsedAddresses conn = do } hexStringToAddress :: String -> Maybe Address -hexStringToAddress = fromBytes <<< rawBytesAsCborBytes <=< hexToRawBytes +hexStringToAddress = map wrap <<< fromBytes <=< hexToByteArray defaultCollateralAmount :: Coin defaultCollateralAmount = Coin $ BigInt.fromInt 5_000_000 @@ -185,7 +179,7 @@ getCollateral conn = do liftM (error $ "CIP-30 getCollateral returned bad UTxO: " <> utxoStr) $ Deserialization.UnspentOuput.convertUnspentOutput =<< fromBytes - =<< hexToCborBytes utxoStr + =<< hexToByteArray utxoStr getUtxos :: Api -> Aff (Maybe (Array TransactionUnspentOutput)) getUtxos conn = do @@ -194,7 +188,7 @@ getUtxos conn = do { success: \mbUtxoArray -> do liftEffect $ for mbUtxoArray $ \utxoArray -> for utxoArray \str -> do liftMaybe (error $ "CIP-30 getUtxos returned bad UTxO: " <> str) $ - hexToCborBytes str >>= fromBytes >>= + hexToByteArray str >>= fromBytes >>= Deserialization.UnspentOuput.convertUnspentOutput , paginateError: show >>> throw >>> liftEffect , apiError: show >>> throw >>> liftEffect @@ -209,10 +203,10 @@ signTx conn tx = do \hexString -> do bytes <- liftM (mkInvalidHexError hexString) $ hexToRawBytes hexString - combineWitnessSet tx <$> - ( Deserialization.WitnessSet.convertWitnessSet - <$> fromBytesEffect (rawBytesAsCborBytes bytes) - ) + ws <- liftM (error "signTx: unable to decode WitnessSet cbor") + $ fromBytes (unwrap bytes) + pure $ combineWitnessSet tx $ + Deserialization.WitnessSet.convertWitnessSet ws , apiError: show >>> throw , txSignError: show >>> throw } @@ -264,7 +258,7 @@ getBalance :: Api -> Aff Value getBalance conn = do Cip30.getBalance conn >>= handleApiError >>= liftM (error "CIP-30 getUsedAddresses returned non-address") <<< - (hexToCborBytes >=> fromBytes >=> convertValue) + (hexToByteArray >=> fromBytes >=> convertValue) getCip30Collateral :: Api -> Coin -> Aff (Maybe (Array String)) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 692f6b4ff..03cef3e23 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -183,7 +183,7 @@ mkCip30Mock pKey mSKey = do mbRewardAddressHex = mSKey <#> \stakeKey -> let - stakePubKey = publicKeyFromPrivateKey (unwrap stakeKey) + stakePubKey = publicKeyFromPrivateKey (unwrap $ unwrap stakeKey) stakePubKeyHash = publicKeyHash stakePubKey rewardAddress = stakePubKeyHashRewardAddress env.networkId $ StakePubKeyHash diff --git a/src/Internal/Wallet/Key.purs b/src/Internal/Wallet/Key.purs index 7b0a56ebf..cad68b7bf 100644 --- a/src/Internal/Wallet/Key.purs +++ b/src/Internal/Wallet/Key.purs @@ -20,7 +20,8 @@ import Aeson import Contract.Prelude (class Newtype) import Ctl.Internal.BalanceTx.Collateral.Select (selectCollateral) as Collateral import Ctl.Internal.Cardano.Types.Transaction - ( Transaction(Transaction) + ( PrivateKey(PrivateKey) + , Transaction(Transaction) , TransactionWitnessSet , UtxoMap , _vkeys @@ -33,9 +34,7 @@ import Ctl.Internal.Deserialization.Keys , privateKeyToBech32 ) import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.Serialization - ( publicKeyHash - ) +import Ctl.Internal.Serialization (publicKeyHash) import Ctl.Internal.Serialization as Serialization import Ctl.Internal.Serialization.Address ( Address @@ -47,7 +46,6 @@ import Ctl.Internal.Serialization.Address , keyHashCredential ) import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) -import Ctl.Internal.Serialization.Types (PrivateKey) import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) import Ctl.Internal.Types.RawBytes (RawBytes) import Ctl.Internal.Wallet.Cip30 (DataSignature) @@ -57,7 +55,7 @@ import Data.Either (note) import Data.Foldable (fold) import Data.Lens (set) import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) +import Data.Newtype (unwrap, wrap) import Data.Traversable (for) import Effect (Effect) import Effect.Aff (Aff) @@ -89,13 +87,14 @@ instance Show PrivatePaymentKey where show _ = "(PrivatePaymentKey )" instance EncodeAeson PrivatePaymentKey where - encodeAeson (PrivatePaymentKey pk) = encodeAeson (privateKeyToBech32 pk) + encodeAeson (PrivatePaymentKey pk) = encodeAeson + (privateKeyToBech32 $ unwrap pk) instance DecodeAeson PrivatePaymentKey where decodeAeson aeson = decodeAeson aeson >>= note (TypeMismatch "PrivateKey") - <<< map PrivatePaymentKey + <<< map (PrivatePaymentKey <<< wrap) <<< privateKeyFromBech32 newtype PrivateStakeKey = PrivateStakeKey PrivateKey @@ -106,13 +105,14 @@ instance Show PrivateStakeKey where show _ = "(PrivateStakeKey )" instance EncodeAeson PrivateStakeKey where - encodeAeson (PrivateStakeKey pk) = encodeAeson (privateKeyToBech32 pk) + encodeAeson (PrivateStakeKey pk) = encodeAeson + (privateKeyToBech32 $ unwrap pk) instance DecodeAeson PrivateStakeKey where decodeAeson aeson = decodeAeson aeson >>= note (TypeMismatch "PrivateKey") - <<< map PrivateStakeKey + <<< map (PrivateStakeKey <<< wrap) <<< privateKeyFromBech32 keyWalletPrivatePaymentKey :: KeyWallet -> PrivatePaymentKey @@ -124,11 +124,11 @@ keyWalletPrivateStakeKey = unwrap >>> _.stakeKey privateKeysToAddress :: PrivatePaymentKey -> Maybe PrivateStakeKey -> NetworkId -> Address privateKeysToAddress payKey mbStakeKey network = do - let pubPayKey = publicKeyFromPrivateKey (unwrap payKey) + let pubPayKey = publicKeyFromPrivateKey (unwrap $ unwrap payKey) case mbStakeKey of Just stakeKey -> let - pubStakeKey = publicKeyFromPrivateKey (unwrap stakeKey) + pubStakeKey = publicKeyFromPrivateKey (unwrap $ unwrap stakeKey) in baseAddressToAddress $ baseAddress @@ -171,10 +171,10 @@ privateKeysToKeyWallet payKey mbStakeKey = txBody <- Serialization.convertTxBody tx.body hash <- Serialization.hashTransaction txBody payWitness <- Deserialization.WitnessSet.convertVkeyWitness <$> - Serialization.makeVkeywitness hash (unwrap payKey) + Serialization.makeVkeywitness hash (unwrap $ unwrap payKey) mbStakeWitness <- for mbStakeKey \stakeKey -> do Deserialization.WitnessSet.convertVkeyWitness <$> - Serialization.makeVkeywitness hash (unwrap stakeKey) + Serialization.makeVkeywitness hash (unwrap $ unwrap stakeKey) let witnessSet' = set _vkeys (pure $ [ payWitness ] <> fold (pure <$> mbStakeWitness)) @@ -183,5 +183,6 @@ privateKeysToKeyWallet payKey mbStakeKey = signData :: NetworkId -> RawBytes -> Aff DataSignature signData networkId payload = do - liftEffect $ Cip30SignData.signData (unwrap payKey) (address networkId) + liftEffect $ Cip30SignData.signData (unwrap $ unwrap payKey) + (address networkId) payload diff --git a/src/Internal/Wallet/KeyFile.purs b/src/Internal/Wallet/KeyFile.purs index f6cf52c2d..5ddfdb93e 100644 --- a/src/Internal/Wallet/KeyFile.purs +++ b/src/Internal/Wallet/KeyFile.purs @@ -24,10 +24,10 @@ import Ctl.Internal.Cardano.TextEnvelope ) , decodeTextEnvelope ) +import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.Helpers (liftM) import Ctl.Internal.Serialization.Keys (bytesFromPrivateKey) -import Ctl.Internal.Serialization.Types (PrivateKey) import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Wallet.Key ( PrivatePaymentKey(PrivatePaymentKey) @@ -35,7 +35,7 @@ import Ctl.Internal.Wallet.Key ) import Data.ByteArray (ByteArray) import Data.Maybe (Maybe(Nothing)) -import Data.Newtype (wrap) +import Data.Newtype (unwrap, wrap) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) @@ -66,25 +66,25 @@ privatePaymentKeyFromTextEnvelope :: TextEnvelope -> Maybe PrivatePaymentKey privatePaymentKeyFromTextEnvelope (TextEnvelope envelope) = do -- Check TextEnvelope type match to desirable unless (envelope.type_ == PaymentSigningKeyShelleyed25519) Nothing - PrivatePaymentKey <$> privateKeyFromBytes (wrap envelope.bytes) + PrivatePaymentKey <<< PrivateKey <$> privateKeyFromBytes (wrap envelope.bytes) privateStakeKeyFromTextEnvelope :: TextEnvelope -> Maybe PrivateStakeKey privateStakeKeyFromTextEnvelope (TextEnvelope envelope) = do -- Check TextEnvelope type match to desirable unless (envelope.type_ == StakeSigningKeyShelleyed25519) Nothing - PrivateStakeKey <$> privateKeyFromBytes (wrap envelope.bytes) + PrivateStakeKey <<< PrivateKey <$> privateKeyFromBytes (wrap envelope.bytes) privatePaymentKeyFromFile :: FilePath -> Aff PrivatePaymentKey privatePaymentKeyFromFile filePath = do bytes <- keyFromFile filePath PaymentSigningKeyShelleyed25519 liftM (error "Unable to decode private payment key") $ - PrivatePaymentKey <$> privateKeyFromBytes (wrap bytes) + PrivatePaymentKey <<< PrivateKey <$> privateKeyFromBytes (wrap bytes) privateStakeKeyFromFile :: FilePath -> Aff PrivateStakeKey privateStakeKeyFromFile filePath = do bytes <- keyFromFile filePath StakeSigningKeyShelleyed25519 liftM (error "Unable to decode private stake key") $ - PrivateStakeKey <$> privateKeyFromBytes (wrap bytes) + PrivateStakeKey <<< PrivateKey <$> privateKeyFromBytes (wrap bytes) -- | Write private payment key to file in cardano-cli envelope format privatePaymentKeyToFile :: FilePath -> PrivatePaymentKey -> Aff Unit @@ -115,7 +115,8 @@ formatStakeKey (PrivateStakeKey key) = encodeAeson >>> show } keyToCbor :: PrivateKey -> String -keyToCbor = (magicPrefix <> _) <<< rawBytesToHex <<< bytesFromPrivateKey +keyToCbor = (magicPrefix <> _) <<< rawBytesToHex <<< bytesFromPrivateKey <<< + unwrap magicPrefix :: String magicPrefix = "5820" diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index 8cb539eac..1474cf63e 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -23,6 +23,7 @@ module Ctl.Internal.Wallet.Spec import Prelude import Control.Monad.Error.Class (liftEither) +import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) import Ctl.Internal.Wallet ( Wallet(KeyWallet) , WalletExtension @@ -167,7 +168,9 @@ mkKeyWalletFromMnemonic phrase { accountIndex, addressIndex } stakeKeyPresence = let paymentKey = derivePaymentKey account addressIndex # bip32ToPrivateKey mbStakeKeySpec = case stakeKeyPresence of - WithStakeKey -> Just $ PrivateStakeKey $ deriveStakeKey account # - bip32ToPrivateKey + WithStakeKey -> Just $ PrivateStakeKey $ PrivateKey $ + deriveStakeKey account # + bip32ToPrivateKey WithoutStakeKey -> Nothing - pure $ privateKeysToKeyWallet (PrivatePaymentKey paymentKey) mbStakeKeySpec + pure $ privateKeysToKeyWallet (PrivatePaymentKey $ PrivateKey paymentKey) + mbStakeKeySpec diff --git a/test/Blockfrost.purs b/test/Blockfrost.purs index fb3d84732..d3c4691cf 100644 --- a/test/Blockfrost.purs +++ b/test/Blockfrost.purs @@ -2,6 +2,7 @@ module Test.Ctl.Blockfrost (main, testPlan) where import Prelude +import Cardano.Serialization.Lib (fromBytes) import Contract.Config (blockfrostPublicPreviewServerConfig) import Contract.Metadata ( GeneralTransactionMetadata(GeneralTransactionMetadata) @@ -125,8 +126,7 @@ fixtureHash = case _ of fixture1 :: Fixture fixture1 = TxWithMetadata - { hash: TransactionHash $ hexToByteArrayUnsafe - "7a2aff2b7f92f6f8ec3fb2135301c7bfc36fea1489a3ca37fd6066f3155c46ff" + { hash: txHash2 , metadata: GeneralTransactionMetadata $ Map.fromFoldable $ [ 30 /\ "5" @@ -190,8 +190,7 @@ fixture1 = TxWithMetadata fixture2 :: Fixture fixture2 = TxWithMetadata - { hash: TransactionHash $ hexToByteArrayUnsafe - "d499729695be63b4c6affb2412899a7f16390d54d97f78f51d796a5cef424126" + { hash: txHash1 , metadata: GeneralTransactionMetadata $ Map.fromFoldable $ [ 674 /\ @@ -207,14 +206,22 @@ fixture2 = TxWithMetadata (Map.fromFoldable $ metamap <#> \(k /\ v) -> Text k /\ Text v) } +txHash1 :: TransactionHash +txHash1 = TransactionHash $ unsafePartial $ fromJust $ fromBytes $ + hexToByteArrayUnsafe + "d499729695be63b4c6affb2412899a7f16390d54d97f78f51d796a5cef424126" + +txHash2 :: TransactionHash +txHash2 = TransactionHash $ unsafePartial $ fromJust $ fromBytes $ + hexToByteArrayUnsafe + "7b458500ef7783e16dab5d9f9f282505182c316ccf3ecf75d0472f95ab31eeaa" + fixture3 :: Fixture fixture3 = TxWithNoMetadata - { hash: TransactionHash $ hexToByteArrayUnsafe - "7b458500ef7783e16dab5d9f9f282505182c316ccf3ecf75d0472f95ab31eeaa" + { hash: txHash2 } fixture4 :: Fixture fixture4 = UnconfirmedTx - { hash: TransactionHash $ hexToByteArrayUnsafe - "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef" + { hash: txHash2 } diff --git a/test/Data.purs b/test/Data.purs index b36ca1c55..83b7362b4 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -4,10 +4,9 @@ module Test.Ctl.Data (suite, tests, uniqueIndicesTests) where import Prelude hiding (conj) import Aeson (JsonDecodeError(TypeMismatch), decodeAeson, encodeAeson) -import Cardano.Serialization.Lib (toBytes) +import Cardano.Serialization.Lib (fromBytes, toBytes) import Control.Lazy (fix) import Control.Monad.Error.Class (class MonadThrow) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Deserialization.PlutusData as PDD import Ctl.Internal.FromData (class FromData, fromData, genericFromData) import Ctl.Internal.Helpers (showWithParens) @@ -37,7 +36,6 @@ import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) import Data.Generic.Rep as G import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) -import Data.Newtype (wrap) import Data.NonEmpty ((:|)) import Data.Show.Generic (genericShow) import Data.Traversable (for_, traverse_) @@ -564,7 +562,7 @@ instance (FromData a) => FromData (Tree a) where fromBytesFromData :: forall a. FromData a => String -> Maybe a fromBytesFromData binary = fromData <<< PDD.convertPlutusData =<< fromBytes - (wrap $ hexToByteArrayUnsafe binary) + (hexToByteArrayUnsafe binary) testBinaryFixture :: forall a diff --git a/test/Deserialization.purs b/test/Deserialization.purs index 8e939c39d..cae82ed8a 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -5,13 +5,13 @@ import Prelude import Aeson (decodeAeson, parseJsonStringToAeson) import Cardano.Serialization.Lib (fromBytes, toBytes) import Contract.CborBytes (hexToCborBytesUnsafe) +import Contract.Keys (privateKeyFromBytes) import Contract.Prim.ByteArray (ByteArray) import Contract.TextEnvelope ( TextEnvelope(TextEnvelope) , TextEnvelopeType(Other) , decodeTextEnvelope ) -import Contract.Wallet (privateKeyFromBytes) import Control.Monad.Error.Class (class MonadThrow, liftMaybe) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAny)) as T import Ctl.Internal.Cardano.Types.Transaction (Transaction, TransactionOutput) as T @@ -280,7 +280,7 @@ createUnspentOutput -> T.TransactionOutput -> Effect TransactionUnspentOutput createUnspentOutput input output = do - input' <- Serialization.convertTxInput input + let input' = Serialization.convertTxInput input output' <- Serialization.convertTxOutput output pure $ mkTransactionUnspentOutput input' output' diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 4492c7af0..d105e10fd 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -82,6 +82,8 @@ module Test.Ctl.Fixtures import Prelude import Aeson (Aeson, aesonNull, decodeAeson, fromString, parseJsonStringToAeson) +import Cardano.Serialization.Lib (fromBytes) +import Contract.Keys (publicKeyFromBech32) import Contract.Numeric.BigNum (BigNum) import Contract.Numeric.BigNum (fromBigInt, fromInt, one, zero) as BigNum import Contract.Transaction @@ -136,7 +138,6 @@ import Ctl.Internal.Cardano.Types.Transaction , Vkey(Vkey) , Vkeywitness(Vkeywitness) , mkEd25519Signature - , mkPublicKey ) import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) @@ -149,7 +150,6 @@ import Ctl.Internal.Cardano.Types.Value , mkNonAdaAsset , mkSingletonNonAdaAsset ) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) import Ctl.Internal.Metadata.Cip25.Cip25String (Cip25String, mkCip25String) import Ctl.Internal.Metadata.Cip25.Common (Cip25TokenName(Cip25TokenName)) import Ctl.Internal.Metadata.Cip25.V2 @@ -175,7 +175,6 @@ import Ctl.Internal.Serialization.Hash , scriptHashFromBytes ) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) import Ctl.Internal.Types.PlutusData as PD @@ -885,7 +884,7 @@ utxoFixture1 = hexToByteArrayUnsafe input :: TransactionInput input = TransactionInput { index: UInt.fromInt 0 - , transactionId: TransactionHash + , transactionId: TransactionHash $ unsafePartial $ fromJust $ fromBytes ( byteArrayFromIntArrayUnsafe [ 198 , 181 @@ -1102,7 +1101,7 @@ witnessSetFixture2Value = , vkeys: Just [ Vkeywitness ( Vkey - ( unsafePartial $ fromJust $ mkPublicKey + ( unsafePartial $ fromJust $ publicKeyFromBech32 "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" ) /\ @@ -1171,7 +1170,7 @@ witnessSetFixture3Value = , vkeys: Just [ Vkeywitness ( Vkey - ( unsafePartial $ fromJust $ mkPublicKey + ( unsafePartial $ fromJust $ publicKeyFromBech32 "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" ) /\ @@ -1198,7 +1197,7 @@ addressString1 = mkTxInput :: { txId :: String, ix :: Int } -> TransactionInput mkTxInput { txId, ix } = TransactionInput - { transactionId: TransactionHash $ + { transactionId: wrap $ unsafePartial $ fromJust $ fromBytes $ hexToByteArrayUnsafe txId , index: UInt.fromInt ix } @@ -1500,10 +1499,9 @@ fullyAppliedScriptFixture = \20014c01021820004c010544746573740001" nullPaymentPubKeyHash :: PaymentPubKeyHash -nullPaymentPubKeyHash = PaymentPubKeyHash $ PubKeyHash +nullPaymentPubKeyHash = PaymentPubKeyHash $ PubKeyHash $ wrap $ unsafePartial $ fromJust $ fromBytes - $ CborBytes $ hexToByteArrayUnsafe "f9dca21a6c826ec8acb4cf395cbc24351937bfe6560b2683ab8b415f" diff --git a/test/Plutip/Common.purs b/test/Plutip/Common.purs index 267dc89a7..cda39ade7 100644 --- a/test/Plutip/Common.purs +++ b/test/Plutip/Common.purs @@ -5,8 +5,8 @@ module Test.Ctl.Plutip.Common import Prelude +import Contract.Keys (privateKeyFromBytes) import Contract.Test.Plutip (defaultPlutipConfig) -import Contract.Wallet (privateKeyFromBytes) import Ctl.Internal.Plutip.Types (PlutipConfig) import Ctl.Internal.Types.RawBytes (hexToRawBytes) import Ctl.Internal.Wallet.Key (PrivateStakeKey) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 703d1b6dd..c92e95165 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -4,6 +4,7 @@ module Test.Ctl.Plutip.Contract import Prelude +import Cardano.Serialization.Lib (fromBytes) import Contract.Address ( PaymentPubKeyHash(PaymentPubKeyHash) , PubKeyHash(PubKeyHash) @@ -22,6 +23,7 @@ import Contract.BalanceTxConstraints ) import Contract.Chain (currentTime, waitUntilSlot) import Contract.Hashing (datumHash, nativeScriptHash) +import Contract.Keys (privateKeyFromBytes) import Contract.Log (logInfo') import Contract.Metadata ( GeneralTransactionMetadata(GeneralTransactionMetadata) @@ -99,7 +101,6 @@ import Contract.Wallet , isWalletAvailable , ownPaymentPubKeyHashes , ownStakePubKeyHashes - , privateKeyFromBytes , withKeyWallet ) import Control.Monad.Error.Class (try) @@ -1235,8 +1236,9 @@ suite = do let transactionId :: TransactionHash - transactionId = TransactionHash $ hexToByteArrayUnsafe - "a6b656487601c390a3bb61958c62369cb5d5a7597a68a9dccedb3dd68a60bfdd" + transactionId = TransactionHash $ unsafePartial $ fromJust $ fromBytes + $ hexToByteArrayUnsafe + "a6b656487601c390a3bb61958c62369cb5d5a7597a68a9dccedb3dd68a60bfdd" mkUtxo :: UInt diff --git a/test/PrivateKey.purs b/test/PrivateKey.purs index d91b1c2b3..a0ad05116 100644 --- a/test/PrivateKey.purs +++ b/test/PrivateKey.purs @@ -3,11 +3,13 @@ module Test.Ctl.PrivateKey where import Prelude import Contract.Config (testnetConfig) +import Contract.Hashing (publicKeyHash) import Contract.Monad (runContract) import Contract.Transaction ( FinalizedTransaction(FinalizedTransaction) , signTransaction ) +import Contract.Wallet.Key (publicKeyFromPrivateKey) import Ctl.Internal.Cardano.Types.Transaction ( Ed25519Signature , Transaction(Transaction) @@ -15,8 +17,6 @@ import Ctl.Internal.Cardano.Types.Transaction , Vkeywitness(Vkeywitness) , mkEd25519Signature ) -import Ctl.Internal.Serialization (publicKeyHash) -import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.KeyFile ( privatePaymentKeyFromFile diff --git a/test/QueryM/AffInterface.purs b/test/QueryM/AffInterface.purs index 8f4d33eea..0bf31d4fb 100644 --- a/test/QueryM/AffInterface.purs +++ b/test/QueryM/AffInterface.purs @@ -2,6 +2,8 @@ module Test.Ctl.QueryM.AffInterface (suite) where import Prelude +import Cardano.Serialization.Lib (fromBytes) +import Contract.Transaction (TransactionHash(TransactionHash)) import Control.Monad.Except (throwError) import Ctl.Internal.QueryM (QueryM, getChainTip, submitTxOgmios) import Ctl.Internal.QueryM.CurrentEpoch (getCurrentEpoch) @@ -9,12 +11,13 @@ import Ctl.Internal.QueryM.EraSummaries (getEraSummaries) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) -import Data.Maybe (isJust) +import Data.Maybe (fromJust, isJust) import Data.Newtype (wrap) import Data.String.CodeUnits (indexOf) import Data.String.Pattern (Pattern(Pattern)) import Effect.Aff (error, try) import Mote (group, test) +import Partial.Unsafe (unsafePartial) import Test.Spec.Assertions (shouldSatisfy) -- note: currently this suite relies on Ogmios being open and running against the @@ -53,8 +56,11 @@ testGetEraSummaries = do testSubmitTxFailure :: QueryM Unit testSubmitTxFailure = do - let bytes = hexToByteArrayUnsafe "00" - void $ submitTxOgmios bytes (wrap bytes) + let + someBytes = hexToByteArrayUnsafe + "ffffffffffff55555555555555555555a1af1b7534b51e60fad3fe9c164313e8" + txHash = TransactionHash $ unsafePartial $ fromJust $ fromBytes someBytes + void $ submitTxOgmios txHash (wrap someBytes) testGetCurrentEpoch :: QueryM Unit testGetCurrentEpoch = do diff --git a/test/Serialization.purs b/test/Serialization.purs index bb1527f30..563b25d4f 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -3,13 +3,8 @@ module Test.Ctl.Serialization (suite) where import Prelude import Cardano.Serialization.Lib (fromBytes, publicKey_fromBytes, toBytes) -import Ctl.Internal.Cardano.Types.Transaction - ( PublicKey - , Transaction - , convertPubKey - , mkFromCslPubKey - , mkPublicKey - ) +import Contract.Keys (publicKeyFromBech32) +import Ctl.Internal.Cardano.Types.Transaction (PublicKey, Transaction) import Ctl.Internal.Deserialization.Transaction (convertTransaction) as TD import Ctl.Internal.Helpers (liftM) import Ctl.Internal.Serialization (convertTransaction) as TS @@ -24,7 +19,7 @@ import Ctl.Internal.Types.PlutusData as PD import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Data.Either (hush) import Data.Maybe (Maybe, isJust, isNothing) -import Data.Newtype (unwrap) +import Data.Newtype (unwrap, wrap) import Data.Nullable (toMaybe) import Data.Tuple.Nested ((/\)) import Effect.Aff (Aff) @@ -59,15 +54,15 @@ suite = do let pkStr = "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" - mPk = mkPublicKey pkStr + mPk = publicKeyFromBech32 pkStr pk <- liftM (error $ "Failed to create PubKey from bech32string: " <> pkStr) mPk let - pkBytes = bytesFromPublicKey $ convertPubKey pk - (pk'' :: Maybe PublicKey) = mkFromCslPubKey <$> toMaybe + pkBytes = bytesFromPublicKey $ unwrap pk + (pk'' :: Maybe PublicKey) = wrap <$> toMaybe ( publicKey_fromBytes $ unwrap pkBytes ) diff --git a/test/Transaction.purs b/test/Transaction.purs index 8aa301163..4ad595fdb 100644 --- a/test/Transaction.purs +++ b/test/Transaction.purs @@ -2,6 +2,7 @@ module Test.Ctl.Transaction (suite) where import Prelude +import Contract.Keys (publicKeyFromBech32) import Ctl.Internal.Cardano.Types.Transaction ( Redeemer(Redeemer) , ScriptDataHash(ScriptDataHash) @@ -11,7 +12,6 @@ import Ctl.Internal.Cardano.Types.Transaction , Vkey(Vkey) , Vkeywitness(Vkeywitness) , mkEd25519Signature - , mkPublicKey ) import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet import Ctl.Internal.Serialization.WitnessSet as Serialization.WitnessSet @@ -154,7 +154,7 @@ testPreserveWitness = liftEffect $ do vk :: Vkeywitness vk = Vkeywitness ( Vkey - ( unsafePartial $ fromJust <<< mkPublicKey $ + ( unsafePartial $ fromJust <<< publicKeyFromBech32 $ "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" ) /\ diff --git a/test/Wallet/Cip30/SignData.purs b/test/Wallet/Cip30/SignData.purs index 95cff4d77..74b9e250e 100644 --- a/test/Wallet/Cip30/SignData.purs +++ b/test/Wallet/Cip30/SignData.purs @@ -8,7 +8,12 @@ module Test.Ctl.Wallet.Cip30.SignData import Prelude import Cardano.Serialization.Lib (toBytes) -import Ctl.Internal.Deserialization.FromBytes (fromBytes) +import Cardano.Serialization.Lib as Csl +import Contract.Keys (publicKeyFromBytes) +import Ctl.Internal.Cardano.Types.Transaction + ( PrivateKey(PrivateKey) + , PublicKey + ) import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Ctl.Internal.Serialization.Address @@ -20,7 +25,6 @@ import Ctl.Internal.Serialization.Keys ( bytesFromPublicKey , publicKeyFromPrivateKey ) -import Ctl.Internal.Serialization.Types (PrivateKey, PublicKey) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.RawBytes (RawBytes) @@ -79,10 +83,10 @@ testCip30SignData { privateKey, privateStakeKey, payload, networkId } = do assertTrue "COSE_Key's x (-2) header must be set to public key bytes" (getCoseKeyHeaderX coseKey == Just (bytesFromPublicKey publicPaymentKey)) where - privatePaymentKey :: PrivateKey - privatePaymentKey = unwrap $ unwrap $ privateKey + privatePaymentKey :: Csl.PrivateKey + privatePaymentKey = unwrap $ unwrap $ unwrap privateKey - publicPaymentKey :: PublicKey + publicPaymentKey :: Csl.PublicKey publicPaymentKey = publicKeyFromPrivateKey privatePaymentKey checkCip30SignDataResponse @@ -129,7 +133,7 @@ checkCip30SignDataResponse address { key, signature } = do checkVerification coseSign1 coseKey = do publicKey <- errMaybe "COSE_Key's x (-2) header must be set to public key bytes" - $ getCoseKeyHeaderX coseKey >>= fromBytes <<< wrap <<< unwrap + $ getCoseKeyHeaderX coseKey >>= publicKeyFromBytes sigStructBytes <- getSignedData coseSign1 assertTrue "Signature verification failed" =<< verifySignature coseSign1 publicKey sigStructBytes @@ -161,7 +165,8 @@ derive instance Newtype ArbitraryPrivateKey _ instance Arbitrary ArbitraryPrivateKey where arbitrary = - wrap <<< unsafePartial fromJust <<< privateKeyFromBytes <$> privateKeyBytes + wrap <<< wrap <<< unsafePartial fromJust <<< privateKeyFromBytes <$> + privateKeyBytes where privateKeyBytes :: Gen RawBytes privateKeyBytes = From 6e0fd653face1d581004d47bf37332f652d6edd2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 22 Jan 2024 20:36:57 +0400 Subject: [PATCH 019/373] Add domain types (WIP) --- src/Types/Address.purs | 85 ++++++++ src/Types/Asset.purs | 29 +++ src/Types/AssetClass.purs | 46 +++++ src/Types/AssetName.js | 26 +++ src/Types/AssetName.purs | 115 +++++++++++ src/Types/AuxiliaryData.purs | 43 ++++ src/Types/BaseAddress.purs | 58 ++++++ src/Types/BigInt.purs | 28 +++ src/Types/BigNum.purs | 145 ++++++++++++++ src/Types/ByronAddress.purs | 53 +++++ src/Types/Coin.purs | 44 +++++ src/Types/Credential.purs | 20 ++ src/Types/DataHash.purs | 64 ++++++ src/Types/Ed25519KeyHash.purs | 107 ++++++++++ src/Types/Int.purs | 84 ++++++++ src/Types/MultiAsset.purs | 203 +++++++++++++++++++ src/Types/NativeScript.purs | 215 ++++++++++++++++++++ src/Types/NetworkId.purs | 63 ++++++ src/Types/OutputDatum.purs | 106 ++++++++++ src/Types/PaymentCredential.purs | 43 ++++ src/Types/PlutusData.purs | 216 ++++++++++++++++++++ src/Types/Pointer.purs | 23 +++ src/Types/PointerAddress.purs | 45 +++++ src/Types/RewardAddress.purs | 54 +++++ src/Types/ScriptHash.purs | 97 +++++++++ src/Types/ScriptRef.purs | 64 ++++++ src/Types/Slot.purs | 25 +++ src/Types/StakeCredential.purs | 41 ++++ src/Types/TransactionHash.purs | 70 +++++++ src/Types/TransactionInput.purs | 83 ++++++++ src/Types/TransactionMetadatum.purs | 58 ++++++ src/Types/TransactionOutput.purs | 29 +++ src/Types/TransactionUnspentOutput.purs | 43 ++++ src/Types/VRFKeyHash.purs | 63 ++++++ src/Types/Value.purs | 252 ++++++++++++++++++++++++ 35 files changed, 2740 insertions(+) create mode 100644 src/Types/Address.purs create mode 100644 src/Types/Asset.purs create mode 100644 src/Types/AssetClass.purs create mode 100644 src/Types/AssetName.js create mode 100644 src/Types/AssetName.purs create mode 100644 src/Types/AuxiliaryData.purs create mode 100644 src/Types/BaseAddress.purs create mode 100644 src/Types/BigInt.purs create mode 100644 src/Types/BigNum.purs create mode 100644 src/Types/ByronAddress.purs create mode 100644 src/Types/Coin.purs create mode 100644 src/Types/Credential.purs create mode 100644 src/Types/DataHash.purs create mode 100644 src/Types/Ed25519KeyHash.purs create mode 100644 src/Types/Int.purs create mode 100644 src/Types/MultiAsset.purs create mode 100644 src/Types/NativeScript.purs create mode 100644 src/Types/NetworkId.purs create mode 100644 src/Types/OutputDatum.purs create mode 100644 src/Types/PaymentCredential.purs create mode 100644 src/Types/PlutusData.purs create mode 100644 src/Types/Pointer.purs create mode 100644 src/Types/PointerAddress.purs create mode 100644 src/Types/RewardAddress.purs create mode 100644 src/Types/ScriptHash.purs create mode 100644 src/Types/ScriptRef.purs create mode 100644 src/Types/Slot.purs create mode 100644 src/Types/StakeCredential.purs create mode 100644 src/Types/TransactionHash.purs create mode 100644 src/Types/TransactionInput.purs create mode 100644 src/Types/TransactionMetadatum.purs create mode 100644 src/Types/TransactionOutput.purs create mode 100644 src/Types/TransactionUnspentOutput.purs create mode 100644 src/Types/VRFKeyHash.purs create mode 100644 src/Types/Value.purs diff --git a/src/Types/Address.purs b/src/Types/Address.purs new file mode 100644 index 000000000..a84bb85c4 --- /dev/null +++ b/src/Types/Address.purs @@ -0,0 +1,85 @@ +module Cardano.Types.Address where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), decodeAeson, encodeAeson) +import Cardano.Serialization.Lib (address_fromBech32, address_networkId, address_toBech32, baseAddress_fromAddress, baseAddress_toAddress, byronAddress_fromAddress, byronAddress_toAddress, enterpriseAddress_fromAddress, enterpriseAddress_new, enterpriseAddress_paymentCred, enterpriseAddress_toAddress, fromBytes, pointerAddress_fromAddress, pointerAddress_toAddress, rewardAddress_fromAddress, rewardAddress_toAddress, toBytes) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Cardano.Types.BaseAddress as BA +import Cardano.Types.ByronAddress (ByronAddress) +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.NetworkId as NetworkId +import Cardano.Types.PaymentCredential (PaymentCredential) +import Cardano.Types.PointerAddress (PointerAddress) as PA +import Cardano.Types.RewardAddress as RA +import Control.Alt ((<|>)) +import Ctl.Internal.Types.Aliases (Bech32String) +import Data.Either (note) +import Data.Generic.Rep (class Generic) +import Data.Int as Int +import Data.Maybe (Maybe, fromJust) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) +import Data.Show.Generic (genericShow) +import Literals.Undefined (undefined) +import Partial.Unsafe (unsafePartial) +import Unsafe.Coerce (unsafeCoerce) + +data Address + = BaseAddress BA.BaseAddress + | ByronAddress ByronAddress + | EnterpriseAddress NetworkId PaymentCredential + | RewardAddress RA.RewardAddress + | PointerAddress PA.PointerAddress + +derive instance Generic Address _ +derive instance Eq Address +derive instance Ord Address + +instance EncodeAeson Address where + encodeAeson = encodeAeson <<< toBech32 + +instance DecodeAeson Address where + decodeAeson = decodeAeson >=> fromBech32 >>> note (TypeMismatch "Address") + +instance Show Address where + show = genericShow + +instance AsCbor Address where + encodeCbor = toCsl >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map fromCsl + +toBech32 :: Address -> Bech32String +toBech32 = toCsl >>> flip address_toBech32 (unsafeCoerce undefined) + +fromBech32 :: Bech32String -> Maybe Address +fromBech32 = map fromCsl <<< toMaybe <<< address_fromBech32 + +toCsl :: Address -> Csl.Address +toCsl = case _ of + BaseAddress ba -> + baseAddress_toAddress $ BA.toCsl ba + ByronAddress ba -> byronAddress_toAddress $ unwrap ba + EnterpriseAddress nid pc -> + enterpriseAddress_toAddress $ enterpriseAddress_new (Int.toNumber $ NetworkId.toInt nid) (unwrap pc) + RewardAddress ra -> + rewardAddress_toAddress $ RA.toCsl ra + PointerAddress pc -> pointerAddress_toAddress $ unwrap pc + +fromCsl :: Csl.Address -> Address +fromCsl addr = + unsafePartial $ fromJust $ + asBaseAddress <|> asByronAddress <|> asEnterpriseAddress <|> asRewardAddress <|> asPointerAddress + where + networkId :: NetworkId + networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust $ Int.fromNumber $ address_networkId addr + asBaseAddress = + toMaybe (baseAddress_fromAddress addr) <#> + BaseAddress <<< BA.fromCsl + asByronAddress = ByronAddress <<< wrap <$> toMaybe (byronAddress_fromAddress addr) + asEnterpriseAddress = toMaybe (enterpriseAddress_fromAddress addr) <#> \cslEnterpriseAddress -> + EnterpriseAddress networkId (wrap $ enterpriseAddress_paymentCred cslEnterpriseAddress) + asRewardAddress = toMaybe (rewardAddress_fromAddress addr) <#> + RewardAddress <<< RA.fromCsl + asPointerAddress = toMaybe (pointerAddress_fromAddress addr) <#> PointerAddress <<< wrap diff --git a/src/Types/Asset.purs b/src/Types/Asset.purs new file mode 100644 index 000000000..c1e27aadf --- /dev/null +++ b/src/Types/Asset.purs @@ -0,0 +1,29 @@ +module Cardano.Types.Asset where + +import Prelude + +import Cardano.Types.AssetClass (AssetClass(..)) +import Cardano.Types.AssetName (AssetName) +import Ctl.Internal.Serialization.Hash (ScriptHash) +import Data.Array.NonEmpty (cons') +import Data.Generic.Rep (class Generic) +import Data.Show.Generic (genericShow) +import Test.QuickCheck (class Arbitrary, arbitrary) +import Test.QuickCheck.Gen (oneOf) + +-- Inspired by cardano-wallet: +-- https://github.com/input-output-hk/cardano-wallet/blob/791541da69b9b3f434bb9ead43de406cc18b0373/lib/primitive/lib/Cardano/Wallet/Primitive/Types/UTxOIndex/Internal.hs#L485 +data Asset = Asset ScriptHash AssetName | AdaAsset + +derive instance Eq Asset +derive instance Ord Asset +derive instance Generic Asset _ + +instance Show Asset where + show = genericShow + +instance Arbitrary Asset where + arbitrary = oneOf $ cons' (pure AdaAsset) [ Asset <$> arbitrary <*> arbitrary ] + +fromAssetClass :: AssetClass -> Asset +fromAssetClass (AssetClass sh tn) = Asset sh tn diff --git a/src/Types/AssetClass.purs b/src/Types/AssetClass.purs new file mode 100644 index 000000000..265767af2 --- /dev/null +++ b/src/Types/AssetClass.purs @@ -0,0 +1,46 @@ +module Cardano.Types.AssetClass where + + +import Prelude hiding (join) + +import Aeson (class EncodeAeson, encodeAeson) +import Cardano.Types.AssetName (AssetName) +import Cardano.Types.Coin (Coin(Coin)) +import Cardano.Types.MultiAsset (MultiAsset(..), pprintMultiAsset, unionNonAda, unionWithNonAda) +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.ScriptHash (ScriptHash) +import Ctl.Internal.Partition (class Equipartition, equipartition) +import Data.Array.NonEmpty (NonEmptyArray) +import Data.Array.NonEmpty as NEArray +import Data.Foldable (all, foldl) +import Data.Generic.Rep (class Generic) +import Data.Int as Int +import Data.Lattice (class JoinSemilattice, class MeetSemilattice, join, meet) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet +import Data.Map (Map) +import Data.Map as Map +import Data.Maybe (fromMaybe) +import Data.Newtype (unwrap) +import Data.Show.Generic (genericShow) +import Data.These (These(Both, That, This)) +import Data.Tuple.Nested (type (/\), (/\)) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt +import Test.QuickCheck (class Arbitrary, arbitrary) + +-------------------------------------------------------------------------------- +-- AssetClass +-------------------------------------------------------------------------------- + +data AssetClass = AssetClass ScriptHash AssetName + +derive instance Generic AssetClass _ +derive instance Eq AssetClass +derive instance Ord AssetClass + +instance Arbitrary AssetClass where + arbitrary = AssetClass <$> arbitrary <*> arbitrary + +instance Show AssetClass where + show = genericShow diff --git a/src/Types/AssetName.js b/src/Types/AssetName.js new file mode 100644 index 000000000..f432d3927 --- /dev/null +++ b/src/Types/AssetName.js @@ -0,0 +1,26 @@ +/* global BROWSER_RUNTIME */ + +// `TextDecoder` is not available in `node`, use polyfill in that case +let OurTextDecoder; +if (typeof BROWSER_RUNTIME == "undefined" || !BROWSER_RUNTIME) { + const util = await import("util"); + OurTextDecoder = util.TextDecoder; +} else { + OurTextDecoder = TextDecoder; +} + +export function _decodeUtf8(buffer) { + return left => right => { + let decoder = new OurTextDecoder("utf-8", { fatal: true }); // Without fatal=true it never fails + + try { + return right(decoder.decode(buffer)); + } catch (err) { + return left(err.toString()); + } + }; +} + +// FIXME: https://github.com/Plutonomicon/cardano-transaction-lib/issues/548 +const call = property => object => object[property](); +export const assetNameName = call("name"); diff --git a/src/Types/AssetName.purs b/src/Types/AssetName.purs new file mode 100644 index 000000000..6b0b4893b --- /dev/null +++ b/src/Types/AssetName.purs @@ -0,0 +1,115 @@ +module Cardano.Types.AssetName where + +import Prelude + +import Test.QuickCheck (class Arbitrary, arbitrary) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(..) + , caseAesonObject + , encodeAeson + , getField + ) +import Cardano.Serialization.Lib + ( assetName_name + , assetName_new + , fromBytes + , toBytes + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor, encodeCbor) +import Ctl.Internal.FromData (class FromData, fromData) +import Ctl.Internal.Metadata.FromMetadata (class FromMetadata, fromMetadata) +import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) +import Ctl.Internal.ToData (class ToData, toData) +import Data.ByteArray (ByteArray, byteArrayToHex, byteLength, hexToByteArray) +import Data.Either (Either(..), either, note) +import Data.Function (on) +import Data.Maybe (Maybe(..), fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.String as String +import Data.TextEncoder (encodeUtf8) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck.Gen (resize) + +newtype AssetName = AssetName Csl.AssetName + +derive instance Newtype AssetName _ + +instance Eq AssetName where + eq = eq `on` encodeCbor + +instance Ord AssetName where + compare = compare `on` encodeCbor + +instance AsCbor AssetName where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + +instance ToData AssetName where + toData = unAssetName >>> toData + +instance FromData AssetName where + fromData = mkAssetName <=< fromData + +instance ToMetadata AssetName where + toMetadata = toMetadata <<< unAssetName + +instance FromMetadata AssetName where + fromMetadata = mkAssetName <=< fromMetadata + +instance Arbitrary AssetName where + arbitrary = unsafePartial fromJust <<< mkAssetName <$> resize 32 arbitrary + +foreign import _decodeUtf8 + :: forall (r :: Type). ByteArray -> (String -> r) -> (String -> r) -> r + +unAssetName :: AssetName -> ByteArray +unAssetName = unwrap >>> assetName_name + +fromAssetName + :: forall (r :: Type). (ByteArray -> r) -> (String -> r) -> AssetName -> r +fromAssetName arrayHandler stringHandler (AssetName assetNameCsl) = either + (const $ arrayHandler bs) + stringHandler + (_decodeUtf8 bs Left Right) + where + bs = assetName_name assetNameCsl + +-- | Corresponds to the Haskell instance at https://github.com/input-output-hk/plutus/blob/4fd86930f1dc628a816adf5f5d854b3fec578312/plutus-ledger-api/src/Plutus/V1/Ledger/Value.hs#L155: +instance DecodeAeson AssetName where + decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ + \aes -> do + tkstr <- getField aes "unAssetName" + case String.take 3 tkstr of + "\x0000000x" -> do -- this is 3 characters '\NUL' '0' 'x' + let stripped = String.drop 3 tkstr -- strip the \NUL followed by "0x" + ba <- + note + (TypeMismatch $ "Expected base16 encoded string got " <> stripped) + $ hexToByteArray stripped + pure $ AssetName $ assetName_new ba + "\x0\x0\x0" -> Right $ tkFromStr (String.drop 2 tkstr) -- if the original started with \NUL, we prepended 2 additional \NULs + _ -> Right $ tkFromStr tkstr + where + tkFromStr :: String -> AssetName + tkFromStr = AssetName <<< assetName_new <<< wrap <<< encodeUtf8 + +instance EncodeAeson AssetName where + encodeAeson = encodeAeson <<< { "unAssetName": _ } <<< fromAssetName + (\ba -> "\x0" <> "0x" <> byteArrayToHex ba) + ( \s -> case String.take 1 s of + "\x0" -> "\x0\x0" <> s + _ -> s + ) + +instance Show AssetName where + show (AssetName tn) = "(AssetName " <> show tn <> ")" + +-- | Create a `AssetName` from a `ByteArray` since AssetName data constructor is +-- | not exported +mkAssetName :: ByteArray -> Maybe AssetName +mkAssetName byteArr + | byteLength byteArr <= 32 = Just $ AssetName $ assetName_new byteArr + | otherwise = Nothing diff --git a/src/Types/AuxiliaryData.purs b/src/Types/AuxiliaryData.purs new file mode 100644 index 000000000..0ee37f40d --- /dev/null +++ b/src/Types/AuxiliaryData.purs @@ -0,0 +1,43 @@ +module Cardano.Types.AuxiliaryData where + +import Prelude + +import Aeson (class EncodeAeson) +import Control.Apply (lift2) +import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) +import Ctl.Internal.Types.Scripts (PlutusScript) +import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) +import Data.Array (union) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Nothing)) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype AuxiliaryData = AuxiliaryData + { metadata :: Maybe GeneralTransactionMetadata + , nativeScripts :: Maybe (Array NativeScript) + , plutusScripts :: Maybe (Array PlutusScript) + } + +derive instance Generic AuxiliaryData _ +derive instance Newtype AuxiliaryData _ +derive newtype instance Eq AuxiliaryData +derive newtype instance EncodeAeson AuxiliaryData + +instance Show AuxiliaryData where + show = genericShow + +instance Semigroup AuxiliaryData where + append (AuxiliaryData ad) (AuxiliaryData ad') = + AuxiliaryData + { metadata: ad.metadata <> ad'.metadata + , nativeScripts: lift2 union ad.nativeScripts ad'.nativeScripts + , plutusScripts: lift2 union ad.plutusScripts ad'.plutusScripts + } + +instance Monoid AuxiliaryData where + mempty = AuxiliaryData + { metadata: Nothing + , nativeScripts: Nothing + , plutusScripts: Nothing + } diff --git a/src/Types/BaseAddress.purs b/src/Types/BaseAddress.purs new file mode 100644 index 000000000..04fe9efdc --- /dev/null +++ b/src/Types/BaseAddress.purs @@ -0,0 +1,58 @@ +module Cardano.Types.BaseAddress where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), decodeAeson, encodeAeson) +import Cardano.Serialization.Lib (address_fromBech32, address_networkId, address_toBech32, baseAddress_fromAddress, baseAddress_new, baseAddress_paymentCred, baseAddress_stakeCred, baseAddress_toAddress) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.NetworkId as NetworkId +import Cardano.Types.PaymentCredential (PaymentCredential) +import Cardano.Types.StakeCredential (StakeCredential) +import Ctl.Internal.Types.Aliases (Bech32String) +import Data.Either (note) +import Data.Generic.Rep (class Generic) +import Data.Int as Int +import Data.Maybe (Maybe, fromJust) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) +import Data.Show.Generic (genericShow) +import Literals.Undefined (undefined) +import Partial.Unsafe (unsafePartial) +import Unsafe.Coerce (unsafeCoerce) + +data BaseAddress = BaseAddress NetworkId PaymentCredential StakeCredential + +derive instance Generic BaseAddress _ +derive instance Eq BaseAddress +derive instance Ord BaseAddress + +instance Show BaseAddress where + show = genericShow + +-- no AsCbor instance, because there is no to_bytes method in CSL + +instance EncodeAeson BaseAddress where + encodeAeson = toCsl >>> baseAddress_toAddress >>> flip address_toBech32 (unsafeCoerce undefined) >>> encodeAeson + +instance DecodeAeson BaseAddress where + decodeAeson = note (TypeMismatch "BaseAddress") <<< decodeBech32 <=< decodeAeson + where + decodeBech32 = map fromCsl <<< toMaybe <<< baseAddress_fromAddress <=< fromBech32 + fromBech32 :: Bech32String -> Maybe Csl.Address + fromBech32 = toMaybe <<< address_fromBech32 + +toCsl :: BaseAddress -> Csl.BaseAddress +toCsl (BaseAddress nid pc sc) = + baseAddress_new + (Int.toNumber $ NetworkId.toInt nid) + (unwrap pc) + (unwrap sc) + +fromCsl :: Csl.BaseAddress -> BaseAddress +fromCsl addr = + BaseAddress networkId (wrap $ baseAddress_paymentCred addr) + (wrap $ baseAddress_stakeCred addr) + where + networkId :: NetworkId + networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust $ Int.fromNumber $ address_networkId $ baseAddress_toAddress addr diff --git a/src/Types/BigInt.purs b/src/Types/BigInt.purs new file mode 100644 index 000000000..57f87079e --- /dev/null +++ b/src/Types/BigInt.purs @@ -0,0 +1,28 @@ +module Cardano.Types.BigInt + ( module X + , fromCsl + , toCsl + , divCeil + ) +where + +import Prelude + +import Cardano.Serialization.Lib (bigInt_divCeil, bigInt_fromStr, bigInt_toStr) +import Cardano.Serialization.Lib as Csl +import Data.Maybe (fromJust) +import Data.Nullable (toMaybe) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt +import JS.BigInt (BigInt, Parity(Even, Odd), Radix, and, asIntN, asUintN, binary, decimal, even, fromInt, fromNumber, fromString, fromStringAs, fromTLInt, hexadecimal, not, octal, odd, or, parity, pow, shl, shr, toInt, toNumber, toString, toStringAs, xor) as X +import Partial.Unsafe (unsafePartial) + +toCsl :: BigInt -> Csl.BigInt +toCsl bi = unsafePartial $ fromJust $ toMaybe $ bigInt_fromStr $ + BigInt.toString bi + +fromCsl :: Csl.BigInt -> BigInt +fromCsl bi = unsafePartial $ fromJust $ BigInt.fromString $ bigInt_toStr bi + +divCeil :: BigInt -> BigInt -> BigInt +divCeil a b = fromCsl $ bigInt_divCeil (toCsl a) (toCsl b) diff --git a/src/Types/BigNum.purs b/src/Types/BigNum.purs new file mode 100644 index 000000000..67aa95207 --- /dev/null +++ b/src/Types/BigNum.purs @@ -0,0 +1,145 @@ +module Cardano.Types.BigNum + ( BigNum(BigNum) + , add + , divFloor + , fromBigInt + , fromInt + , fromString + , fromStringUnsafe + , fromUInt + , maxValue + , mul + , minus + , one + , toBigInt + , toInt + , toInt' + , toString + , toUInt + , zero + ) where + +import Prelude + +import Aeson (JsonDecodeError(TypeMismatch)) as Aeson +import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) +import Cardano.Serialization.Lib (bigNum_checkedAdd, bigNum_checkedMul, bigNum_checkedSub, bigNum_compare, bigNum_divFloor, bigNum_fromStr, bigNum_maxValue, bigNum_one, bigNum_toStr, bigNum_zero, fromBytes, toBytes) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Ctl.Internal.Deserialization.Error (FromCslRepError, fromCslRepError) +import Ctl.Internal.Error (E, noteE) +import Ctl.Internal.Helpers (eqOrd) +import Ctl.Internal.Partition (class Equipartition, class Partition, equipartition, partition) +import Data.Either (note) +import Data.Int (fromString) as Int +import Data.Maybe (Maybe, fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) +import Data.UInt (UInt) +import Data.UInt (fromInt, fromString, toString) as UInt +import JS.BigInt (BigInt) +import JS.BigInt (fromString, toString) as BigInt +import Partial.Unsafe (unsafePartial) +import Safe.Coerce (coerce) +import Type.Row (type (+)) + +newtype BigNum = BigNum Csl.BigNum + +derive instance Newtype BigNum _ + +instance Eq BigNum where + eq = eqOrd + +instance Ord BigNum where + compare (BigNum lhs) (BigNum rhs) = + case bigNum_compare lhs rhs of + 1.0 -> GT + 0.0 -> EQ + _ -> LT + +instance Show BigNum where + show bn = "fromString \"" <> toString bn <> "\"" + +instance DecodeAeson BigNum where + decodeAeson = + note (Aeson.TypeMismatch "Couldn't convert `BigInt` to `BigNum`") + <<< fromBigInt <=< decodeAeson + +instance EncodeAeson BigNum where + encodeAeson = encodeAeson <<< toBigInt + +instance AsCbor BigNum where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + +instance Partition BigNum where + partition bigNum = unsafePartial $ map toBigInt + >>> partition (toBigInt bigNum) + >>> map (map $ fromJust <<< fromBigInt) + +instance Equipartition BigNum where + equipartition bn = unsafePartial + $ map (fromJust <<< fromBigInt) + <<< equipartition (toBigInt bn) + +-- Semiring cannot be implemented, because add and mul returns Maybe BigNum + +one :: BigNum +one = BigNum bigNum_one + +zero :: BigNum +zero = BigNum bigNum_zero + +add :: BigNum -> BigNum -> Maybe BigNum +add (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedAdd a b + +mul :: BigNum -> BigNum -> Maybe BigNum +mul (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedMul a b + +minus :: BigNum -> BigNum -> Maybe BigNum +minus (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedSub a b + +divFloor :: BigNum -> BigNum -> BigNum +divFloor (BigNum a) (BigNum b) = BigNum $ bigNum_divFloor a b + +fromBigInt :: BigInt -> Maybe BigNum +fromBigInt = fromString <<< BigInt.toString + +toBigInt :: BigNum -> BigInt +toBigInt = + -- Converting uint64 to an arbitrary length integer should never fail. + unsafePartial fromJust <<< BigInt.fromString <<< toString + +toInt :: BigNum -> Maybe Int +toInt = Int.fromString <<< toString + +toInt' + :: forall (r :: Row Type). String -> BigNum -> E (FromCslRepError + r) Int +toInt' nm bn = + noteE (fromCslRepError (nm <> ": CSL.BigNum (" <> show bn <> ") -> Int ")) $ + toInt bn + +-- | Converts an `Int` to a `BigNum` turning negative `Int`s into `BigNum`s +-- | in range from `2^31` to `2^32-1`. +fromInt :: Int -> BigNum +fromInt = + -- Converting `UInt` (u32) to a `BigNum` (u64) should never fail. + fromStringUnsafe <<< UInt.toString <<< UInt.fromInt + +toString :: BigNum -> String +toString = unwrap >>> bigNum_toStr + +fromString :: String -> Maybe BigNum +fromString = map wrap <<< toMaybe <<< bigNum_fromStr + +fromStringUnsafe :: String -> BigNum +fromStringUnsafe = unsafePartial fromJust <<< fromString + +maxValue :: BigNum +maxValue = BigNum bigNum_maxValue + +fromUInt :: UInt -> BigNum +fromUInt = fromStringUnsafe <<< UInt.toString + +toUInt :: BigNum -> Maybe UInt +toUInt = toString >>> UInt.fromString diff --git a/src/Types/ByronAddress.purs b/src/Types/ByronAddress.purs new file mode 100644 index 000000000..8b243fa13 --- /dev/null +++ b/src/Types/ByronAddress.purs @@ -0,0 +1,53 @@ +module Cardano.Types.ByronAddress + ( ByronAddress(ByronAddress) + , fromBase58 + , toBase58 + ) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Serialization.Lib (byronAddress_fromBase58, byronAddress_toBase58, fromBytes, toBytes) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd, showFromBytes) +import Ctl.Internal.Types.Aliases (Base58String) +import Data.ByteArray (byteArrayFromIntArrayUnsafe) +import Data.Function (on) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe, fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck (class Coarbitrary, coarbitrary) +import Test.QuickCheck.Arbitrary (class Arbitrary) +import Test.QuickCheck.Gen (chooseInt, vectorOf) + +newtype ByronAddress = ByronAddress Csl.ByronAddress + +derive instance Generic ByronAddress _ +derive instance Newtype ByronAddress _ + +instance Eq ByronAddress where + eq = eqOrd + +-- This is not newtyped derived because it will be used for ordering a +-- `TransactionInput`, we want lexicographical ordering on the hexstring. +instance Ord ByronAddress where + compare = compareViaCslBytes `on` unwrap + +instance Show ByronAddress where + show = unwrap >>> showFromBytes "ByronAddress" + +instance AsCbor ByronAddress where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + +derive newtype instance EncodeAeson ByronAddress +derive newtype instance DecodeAeson ByronAddress + +fromBase58 :: Base58String -> Maybe ByronAddress +fromBase58 = map wrap <<< toMaybe <<< byronAddress_fromBase58 + +toBase58 :: ByronAddress -> Base58String +toBase58 = unwrap >>> byronAddress_toBase58 diff --git a/src/Types/Coin.purs b/src/Types/Coin.purs new file mode 100644 index 000000000..599ebfd28 --- /dev/null +++ b/src/Types/Coin.purs @@ -0,0 +1,44 @@ +module Cardano.Types.Coin where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Types.BigNum (BigNum(BigNum)) +import Cardano.Types.BigNum as BigNum +import Ctl.Internal.Helpers (showWithParens) +import Ctl.Internal.Partition (class Equipartition, class Partition) +import Data.Generic.Rep (class Generic) +import Data.Lattice (class JoinSemilattice, class MeetSemilattice) +import Data.Newtype (class Newtype) +import Data.Semiring as Num +import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) +import Test.QuickCheck.Gen (suchThat) + +newtype Coin = Coin BigNum + +derive instance Generic Coin _ +derive instance Newtype Coin _ +derive newtype instance Eq Coin +derive newtype instance Ord Coin +derive newtype instance DecodeAeson Coin +derive newtype instance EncodeAeson Coin +derive newtype instance Partition Coin +derive newtype instance Equipartition Coin + +instance Arbitrary Coin where + arbitrary = Coin <<< BigNum.fromInt <$> suchThat arbitrary (_ >= Num.zero) + +instance Show Coin where + show (Coin c) = showWithParens "Coin" c + +instance JoinSemilattice Coin where + join (Coin c1) (Coin c2) = Coin (max c1 c2) + +instance MeetSemilattice Coin where + meet (Coin c1) (Coin c2) = Coin (min c1 c2) + +fromInt :: Int -> Coin +fromInt = Coin <<< BigNum.fromInt + +zero :: Coin +zero = Coin BigNum.zero diff --git a/src/Types/Credential.purs b/src/Types/Credential.purs new file mode 100644 index 000000000..dc4ad892c --- /dev/null +++ b/src/Types/Credential.purs @@ -0,0 +1,20 @@ +module Cardano.Types.Credential where + + +import Prelude + +import Cardano.Types.ByronAddress (ByronAddress) +import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash(..)) +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.ScriptHash (ScriptHash(..)) +import Data.Generic.Rep (class Generic) +import Data.Show.Generic (genericShow) + +data Credential = PubKeyHashCredential Ed25519KeyHash | ScriptHashCredential ScriptHash + +derive instance Generic Credential _ +derive instance Eq Credential +derive instance Ord Credential + +instance Show Credential where + show = genericShow diff --git a/src/Types/DataHash.purs b/src/Types/DataHash.purs new file mode 100644 index 000000000..b452fb619 --- /dev/null +++ b/src/Types/DataHash.purs @@ -0,0 +1,64 @@ +module Cardano.Types.DataHash where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr)) +import Ctl.Internal.FromData (class FromData, fromData) +import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd, showFromCbor) +import Ctl.Internal.ToData (class ToData, toData) +import Data.ByteArray (byteArrayFromIntArrayUnsafe) +import Data.Function (on) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(..), fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck (class Arbitrary, class Coarbitrary, coarbitrary) +import Test.QuickCheck.Gen (chooseInt, vectorOf) + +newtype DataHash = DataHash Csl.DataHash + +derive instance Generic DataHash _ +derive instance Newtype DataHash _ + +instance Eq DataHash where + eq = eqOrd + +instance AsCbor DataHash where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + +derive newtype instance EncodeAeson DataHash +derive newtype instance DecodeAeson DataHash + +-- This is not newtyped derived because it will be used for ordering a +-- `TransactionInput`, we want lexicographical ordering on the hexstring. +instance Ord DataHash where + compare = compareViaCslBytes `on` unwrap + +instance Show DataHash where + show = unwrap >>> showFromCbor "DataHash" + +-- Plutus actually has this as a zero indexed record +instance FromData DataHash where + fromData (Constr n [ bytes ]) | n == BigNum.zero = DataHash <$> + (fromBytes =<< fromData bytes) + fromData _ = Nothing + +-- Plutus actually has this as a zero indexed record +instance ToData DataHash where + toData (DataHash th) = Constr BigNum.zero [ toData $ toBytes th ] + +instance Arbitrary DataHash where + arbitrary = unsafePartial $ + wrap <<< fromJust <<< fromBytes <<< byteArrayFromIntArrayUnsafe <$> vectorOf + 32 + (chooseInt 0 255) + +instance Coarbitrary DataHash where + coarbitrary (DataHash th) generator = coarbitrary (toBytes th) + generator diff --git a/src/Types/Ed25519KeyHash.purs b/src/Types/Ed25519KeyHash.purs new file mode 100644 index 000000000..d47333b38 --- /dev/null +++ b/src/Types/Ed25519KeyHash.purs @@ -0,0 +1,107 @@ +module Cardano.Types.Ed25519KeyHash where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch) + , caseAesonString + , encodeAeson + ) +import Cardano.Serialization.Lib + ( ed25519KeyHash_fromBech32 + , ed25519KeyHash_toBech32 + , fromBytes + , toBytes + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.PlutusData (PlutusData(Bytes)) +import Ctl.Internal.FfiHelpers (partialToMaybe) +import Ctl.Internal.FromData (class FromData) +import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) +import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) +import Ctl.Internal.ToData (class ToData, toData) +import Ctl.Internal.Types.Aliases (Bech32String) +import Ctl.Internal.Types.RawBytes (RawBytes, rawBytesToHex) +import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Bytes)) as Metadata +import Data.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe, hexToByteArray) +import Data.Either (Either(Left), note) +import Data.Function (on) +import Data.Maybe (Maybe(Nothing), fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck.Arbitrary (class Arbitrary) +import Test.QuickCheck.Gen (chooseInt, vectorOf) + +newtype Ed25519KeyHash = Ed25519KeyHash Csl.Ed25519KeyHash + +derive instance Newtype Ed25519KeyHash _ + +instance Eq Ed25519KeyHash where + eq = eq `on` ed25519KeyHashToBytes + +instance Ord Ed25519KeyHash where + compare = compare `on` ed25519KeyHashToBytes + +instance Show Ed25519KeyHash where + show edkh = + "(Ed25519KeyHash $ unsafePartial $ fromJust $ ed25519KeyHashFromBech32 " + <> show (ed25519KeyHashToBech32 "pool" edkh) + <> ")" + +instance ToData Ed25519KeyHash where + toData = toData <<< unwrap <<< ed25519KeyHashToBytes + +instance FromData Ed25519KeyHash where + fromData (Bytes kh) = ed25519KeyHashFromBytes kh + fromData _ = Nothing + +instance ToMetadata Ed25519KeyHash where + toMetadata = toMetadata <<< ed25519KeyHashToBytes + +instance FromMetadata Ed25519KeyHash where + fromMetadata (Metadata.Bytes kh) = ed25519KeyHashFromBytes kh + fromMetadata _ = Nothing + +-- This is needed for `ApplyArgs`. +instance DecodeAeson Ed25519KeyHash where + -- ed25519KeyHashFromBech32 goes from Bech32String directly although this + -- feels unsafe. + decodeAeson = caseAesonString + (Left $ TypeMismatch "Expected Plutus BuiltinByteString") + ( note (TypeMismatch "Invalid Ed25519KeyHash") <<< ed25519KeyHashFromBytes + <=< note (TypeMismatch "Invalid ByteArray") <<< hexToByteArray + ) + +instance EncodeAeson Ed25519KeyHash where + encodeAeson = encodeAeson <<< rawBytesToHex <<< ed25519KeyHashToBytes + +instance Arbitrary Ed25519KeyHash where + arbitrary = + unsafePartial fromJust <<< ed25519KeyHashFromBytes <<< + byteArrayFromIntArrayUnsafe <$> vectorOf 28 (chooseInt 0 255) + +-- | Convert ed25519KeyHash to Bech32 representation with given prefix. +-- | Will crash if prefix is invalid (length, mixed-case, etc) +-- | More on prefixes: https://cips.cardano.org/cips/cip5 +ed25519KeyHashToBech32Unsafe ∷ Partial => String → Ed25519KeyHash → Bech32String +ed25519KeyHashToBech32Unsafe prefix kh = ed25519KeyHash_toBech32 (unwrap kh) + prefix + +ed25519KeyHashToBytes :: Ed25519KeyHash -> RawBytes +ed25519KeyHashToBytes = wrap <<< toBytes <<< unwrap + +ed25519KeyHashFromBytes :: ByteArray -> Maybe Ed25519KeyHash +ed25519KeyHashFromBytes = map wrap <<< fromBytes + +ed25519KeyHashFromBech32 :: Bech32String -> Maybe Ed25519KeyHash +ed25519KeyHashFromBech32 = map wrap <<< toMaybe <<< ed25519KeyHash_fromBech32 + +-- | Convert ed25519KeyHash to Bech32 representation with given prefix. +-- | Will return Nothing if prefix is invalid (length, mixed-case, etc) +-- | More on prefixes: https://cips.cardano.org/cips/cip5 +ed25519KeyHashToBech32 :: String -> Ed25519KeyHash -> Maybe Bech32String +ed25519KeyHashToBech32 prefix kh = partialToMaybe \_ -> + ed25519KeyHashToBech32Unsafe prefix kh diff --git a/src/Types/Int.purs b/src/Types/Int.purs new file mode 100644 index 000000000..9717733a9 --- /dev/null +++ b/src/Types/Int.purs @@ -0,0 +1,84 @@ +module Cardano.Types.Int + ( Int(Int) + , newPositive + , newNegative + , fromBigInt + , toBigInt + , fromInt + , toInt + , fromString + ) where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch) + , decodeAeson + , encodeAeson + ) +import Cardano.Serialization.Lib (Int) as Csl +import Cardano.Serialization.Lib (int_new, int_newNegative, int_toStr) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum (fromBigInt, fromInt) as BigNum +import Control.Alternative ((<|>)) +import Data.Either (note) +import Data.Function (on) +import Data.Maybe (Maybe, fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import JS.BigInt as BigInt +import Partial.Unsafe (unsafePartial) +import Prim (String) +import Prim as Prim + +-- | Signed 128-bit integer +newtype Int = Int Csl.Int + +derive instance Newtype Int _ + +instance Eq Int where + eq = eq `on` toString + +instance Ord Int where + compare = compare `on` toBigInt + +instance Show Int where + show int = "(fromString " <> show (toString int) <> ")" + +instance EncodeAeson Int where + encodeAeson = encodeAeson <<< toBigInt + +instance DecodeAeson Int where + decodeAeson aeson = + decodeAeson aeson >>= note (TypeMismatch "Int") <<< fromBigInt + +fromBigInt :: BigInt.BigInt -> Maybe Int +fromBigInt bi = + (newPositive <$> BigNum.fromBigInt bi) <|> + (newNegative <$> BigNum.fromBigInt (negate bi)) + +toBigInt :: Int -> BigInt.BigInt +toBigInt int = + -- Assuming every Int can be represented as BigInt + unsafePartial $ fromJust $ BigInt.fromString $ int_toStr $ unwrap int + +fromInt :: Prim.Int -> Int +fromInt n + | n < 0 = newNegative $ BigNum.fromInt n + | otherwise = newPositive $ BigNum.fromInt n + +toInt :: Int -> Maybe Prim.Int +toInt = toBigInt >>> BigInt.toInt + +toString :: Int -> String +toString = unwrap >>> int_toStr + +fromString :: String -> Maybe Int +fromString = fromBigInt <=< BigInt.fromString + +newPositive :: BigNum -> Int +newPositive = unwrap >>> int_new >>> wrap + +newNegative :: BigNum -> Int +newNegative = unwrap >>> int_newNegative >>> wrap diff --git a/src/Types/MultiAsset.purs b/src/Types/MultiAsset.purs new file mode 100644 index 000000000..e7a8caa86 --- /dev/null +++ b/src/Types/MultiAsset.purs @@ -0,0 +1,203 @@ +module Cardano.Types.MultiAsset where + +import Prelude hiding (add) + +import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) +import Cardano.Serialization.Lib (packMapContainer, unpackMapContainer) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.AssetName (AssetName, fromAssetName) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum +import Ctl.Internal.Helpers (decodeMap, encodeMap) +import Ctl.Internal.Partition (class Equipartition, equipartition) +import Ctl.Internal.Serialization.Hash (ScriptHash) +import Data.Array (filter) +import Data.Array.NonEmpty (NonEmptyArray) +import Data.Array.NonEmpty (replicate, zipWith) as NEArray +import Data.ByteArray (byteArrayToHex) +import Data.Foldable (any, foldM, foldl) +import Data.Lattice (class JoinSemilattice, class MeetSemilattice) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet +import Data.Map (Map) +import Data.Map as Map +import Data.Map.Gen (genMap) +import Data.Maybe (Maybe(Just, Nothing), fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Profunctor.Strong ((***)) +import Data.These (These(Both, That, This)) +import Data.Traversable (for, traverse) +import Data.Tuple.Nested (type (/\), (/\)) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) +import Test.QuickCheck.Gen (Gen, suchThat) + +newtype MultiAsset = MultiAsset (Map ScriptHash (Map AssetName BigNum)) + +derive newtype instance Eq MultiAsset +derive instance Newtype MultiAsset _ + +instance Arbitrary MultiAsset where + arbitrary = + MultiAsset <$> + genMap + (arbitrary :: Gen ScriptHash) + ( flip suchThat (not Map.isEmpty) $ + genMap + (arbitrary :: Gen AssetName) + (BigNum.fromInt <$> suchThat arbitrary (_ >= one) :: Gen BigNum) + ) + +instance Show MultiAsset where + show (MultiAsset nonAdaAsset) = "(MultiAsset " <> show nonAdaAsset <> ")" + +instance JoinSemilattice MultiAsset where + -- `max` can't overflow + join a b = unsafePartial $ fromJust $ unionWithNonAda (map Just <<< max) a b + +instance MeetSemilattice MultiAsset where + -- `min` can't overflow + meet a b = unsafePartial $ fromJust $ unionWithNonAda (map Just <<< min) a b + +instance EncodeAeson MultiAsset where + encodeAeson (MultiAsset m) = encodeAeson $ encodeMap $ encodeMap <$> m + +instance DecodeAeson MultiAsset where + decodeAeson aeson = do + mapAesons <- decodeMap aeson + MultiAsset <$> for mapAesons decodeMap + +instance Equipartition MultiAsset where + equipartition nonAdaAssets numParts = + foldl accumulate (NEArray.replicate numParts empty) + (flatten nonAdaAssets) + where + append' a b = unsafePartial $ fromJust $ add a b + accumulate + :: NonEmptyArray MultiAsset + -> (ScriptHash /\ AssetName /\ BigNum) + -> NonEmptyArray MultiAsset + accumulate xs (cs /\ tn /\ tokenQuantity) = + NEArray.zipWith append' xs $ + map (singleton cs tn) + (equipartition tokenQuantity numParts) + +empty :: MultiAsset +empty = MultiAsset Map.empty + +add :: MultiAsset -> MultiAsset -> Maybe MultiAsset +add = unionWithNonAda BigNum.add + +flatten :: MultiAsset -> Array (ScriptHash /\ AssetName /\ BigNum) +flatten (MultiAsset mp) = + Map.toUnfoldable mp >>= \(sh /\ mp') -> do + Map.toUnfoldable mp' >>= \(tn /\ amount) -> pure (sh /\ tn /\ amount) + +unflatten :: Array (ScriptHash /\ AssetName /\ BigNum) -> Maybe MultiAsset +unflatten = + foldM accumulate empty + where + uncurry2 f (a /\ b /\ c) = f a b c + accumulate ma = unionWithNonAda BigNum.add ma <<< uncurry2 singleton + +singleton :: ScriptHash -> AssetName -> BigNum -> MultiAsset +singleton sh tn amount = MultiAsset $ Map.singleton sh $ Map.singleton tn amount + +pprintMultiAsset :: MultiAsset -> TagSet +pprintMultiAsset mp = TagSet.fromArray $ + Map.toUnfoldable (unwrap mp) <#> \(scriptHash /\ tokens) -> + byteArrayToHex (unwrap $ encodeCbor scriptHash) `tagSetTag` TagSet.fromArray + ( Map.toUnfoldable tokens <#> \(assetName /\ amount) -> + fromAssetName byteArrayToHex show assetName `tag` BigNum.toString + amount + ) + +-- | Normalize `MultiAsset` so that it doesn't contain zero-valued tokens. +normalizeMultiAsset :: MultiAsset -> MultiAsset +normalizeMultiAsset = filterMultiAsset (notEq BigNum.zero) + +filterMultiAsset :: (BigNum -> Boolean) -> MultiAsset -> MultiAsset +filterMultiAsset p (MultiAsset mp) = + MultiAsset $ Map.filter (not Map.isEmpty) $ Map.filter p <$> mp + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionWith +-- | Same as `unionWith` but specifically for `MultiAsset` +unionWithNonAda + :: (BigNum -> BigNum -> Maybe BigNum) + -> MultiAsset + -> MultiAsset + -> Maybe MultiAsset +unionWithNonAda f ls rs = + let + combined :: Map ScriptHash (Map AssetName (These BigNum BigNum)) + combined = unionNonAda ls rs + + unBoth :: These BigNum BigNum -> Maybe BigNum + unBoth k' = case k' of + This a -> f a BigNum.zero + That b -> f BigNum.zero b + Both a b -> f a b + in + normalizeMultiAsset <<< MultiAsset <$> traverse (traverse unBoth) combined + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionVal +-- | Combine two `MultiAsset` maps +unionNonAda + :: MultiAsset + -> MultiAsset + -> Map ScriptHash (Map AssetName (These BigNum BigNum)) +unionNonAda (MultiAsset l) (MultiAsset r) = + let + combined + :: Map ScriptHash + (These (Map AssetName BigNum) (Map AssetName BigNum)) + combined = union l r + + unBoth + :: These (Map AssetName BigNum) (Map AssetName BigNum) + -> Map AssetName (These BigNum BigNum) + unBoth k = case k of + This a -> This <$> a + That b -> That <$> b + Both a b -> union a b + in + unBoth <$> combined + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-tx/html/src/PlutusTx.AssocMap.html#union +-- | Combine two `Map`s. +union :: ∀ k v r. Ord k => Map k v -> Map k r -> Map k (These v r) +union l r = + let + ls :: Array (k /\ v) + ls = Map.toUnfoldable l + + rs :: Array (k /\ r) + rs = Map.toUnfoldable r + + f :: v -> Maybe r -> These v r + f a b' = case b' of + Nothing -> This a + Just b -> Both a b + + ls' :: Array (k /\ These v r) + ls' = map (\(c /\ i) -> (c /\ f i (Map.lookup c (Map.fromFoldable rs)))) ls + + rs' :: Array (k /\ r) + rs' = filter (\(c /\ _) -> not (any (\(c' /\ _) -> c' == c) ls)) rs + + rs'' :: Array (k /\ These v r) + rs'' = map (map That) rs' + in + Map.fromFoldable (ls' <> rs'') + +toCsl :: MultiAsset -> Csl.MultiAsset +toCsl (MultiAsset mp) = packMapContainer $ map (unwrap *** assetsToCsl) $ Map.toUnfoldable mp + where + assetsToCsl :: Map AssetName BigNum -> Csl.Assets + assetsToCsl assets = packMapContainer $ map (unwrap *** unwrap) $ Map.toUnfoldable assets + +fromCsl :: Csl.MultiAsset -> MultiAsset +fromCsl multiAsset = MultiAsset $ Map.fromFoldable $ + unpackMapContainer multiAsset <#> wrap *** \asset -> + Map.fromFoldable (unpackMapContainer asset <#> wrap *** wrap) diff --git a/src/Types/NativeScript.purs b/src/Types/NativeScript.purs new file mode 100644 index 000000000..1175b3b8a --- /dev/null +++ b/src/Types/NativeScript.purs @@ -0,0 +1,215 @@ +module Cardano.Types.NativeScript where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch) + , caseAesonObject + , getField + , (.:) + ) +import Cardano.Serialization.Lib + ( nativeScript_asScriptAll + , nativeScript_asScriptAny + , nativeScript_asScriptNOfK + , nativeScript_asScriptPubkey + , nativeScript_asTimelockExpiry + , nativeScript_asTimelockStart + , nativeScript_newScriptAll + , nativeScript_newScriptAny + , nativeScript_newScriptNOfK + , nativeScript_newScriptPubkey + , nativeScript_newTimelockExpiry + , nativeScript_newTimelockStart + , scriptAll_nativeScripts + , scriptAll_new + , scriptAny_nativeScripts + , scriptAny_new + , scriptNOfK_n + , scriptNOfK_nativeScripts + , scriptNOfK_new + , scriptPubkey_addrKeyhash + , scriptPubkey_new + , timelockExpiry_newTimelockexpiry + , timelockExpiry_slotBignum + , timelockStart_newTimelockstart + , timelockStart_slotBignum + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Serialization.Lib.Internal + ( packListContainer + , unpackListContainer + ) +import Cardano.Types.BigNum (fromString) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Slot (Slot(..)) +import Control.Alt ((<|>)) +import Ctl.Internal.Helpers (encodeTagged') +import Ctl.Internal.Metadata.Helpers (errExpectedObject) +import Ctl.Internal.Serialization.Address (Slot) +import Ctl.Internal.Serialization.Hash + ( Ed25519KeyHash + , ed25519KeyHashFromBytes + , ed25519KeyHashToBytes + ) +import Ctl.Internal.Types.RawBytes (rawBytesToHex) +import Data.Array.NonEmpty (fromFoldable) +import Data.ByteArray (hexToByteArrayUnsafe) +import Data.Either (Either(Left)) +import Data.Generic.Rep (class Generic) +import Data.Int as Int +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet +import Data.Maybe (fromJust) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) +import Data.Show.Generic (genericShow) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck (class Arbitrary) +import Test.QuickCheck.Arbitrary (arbitrary) +import Test.QuickCheck.Gen (Gen, oneOf, resize, sized, suchThat) + +data NativeScript + = ScriptPubkey Ed25519KeyHash + | ScriptAll (Array NativeScript) + | ScriptAny (Array NativeScript) + | ScriptNOfK Int (Array NativeScript) + | TimelockStart Slot -- spend after + | TimelockExpiry Slot -- spend before + +derive instance Eq NativeScript +derive instance Generic NativeScript _ + +instance Show NativeScript where + show x = genericShow x + +instance Arbitrary NativeScript where + arbitrary = oneOf $ unsafePartial $ fromJust $ fromFoldable + [ ScriptPubkey <$> (pure pk) + , ScriptAll <$> sized (\i -> resize (i `div` 2) arbitrary) + , ScriptAny <$> sized (\i -> resize (i `div` 2) arbitrary) + , ScriptNOfK + <$> suchThat (arbitrary :: Gen Int) (_ >= 0) + <*> sized (\i -> resize (i `div` 2) arbitrary) + , TimelockStart <$> map + (wrap <<< (unsafePartial $ fromJust <<< fromString <<< show)) + (suchThat (arbitrary :: Gen Int) (_ > 0)) + , TimelockExpiry <$> map + (wrap <<< (unsafePartial $ fromJust <<< fromString <<< show)) + (suchThat (arbitrary :: Gen Int) (_ > 0)) + ] + where + pk :: Ed25519KeyHash + pk = unsafePartial $ fromJust $ ed25519KeyHashFromBytes $ + hexToByteArrayUnsafe + "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" + +instance DecodeAeson NativeScript where + decodeAeson = caseAesonObject errExpectedObject $ \obj -> do + tag <- obj .: "tag" + let + aesonContents + :: forall (a :: Type). DecodeAeson a => Either JsonDecodeError a + aesonContents = obj .: "contents" + case tag of + "ScriptPubkey" -> ScriptPubkey <$> aesonContents + "ScriptAll" -> ScriptAll <$> aesonContents + "ScriptAny" -> ScriptAny <$> aesonContents + "TimelockStart" -> TimelockStart <$> aesonContents + "TimelockExpiry" -> TimelockExpiry <$> aesonContents + "ScriptNOfK" -> ScriptNOfK + <$> (flip getField "n" =<< aesonContents) + <*> (flip getField "nativeScripts" =<< aesonContents) + + _ -> Left $ TypeMismatch ("Unknown tag: " <> tag) + +instance EncodeAeson NativeScript where + encodeAeson = case _ of + ScriptPubkey r -> encodeTagged' "ScriptPubkey" r + ScriptAll r -> encodeTagged' "ScriptAll" r + ScriptAny r -> encodeTagged' "ScriptAny" r + ScriptNOfK n nativeScripts -> encodeTagged' "ScriptNOfK" + { n, nativeScripts } + TimelockStart r -> encodeTagged' "TimelockStart" r + TimelockExpiry r -> encodeTagged' "TimelockExpiry" r + +pprintNativeScript :: NativeScript -> TagSet +pprintNativeScript = case _ of + ScriptPubkey kh -> TagSet.fromArray + [ "PubKey" `tag` rawBytesToHex (ed25519KeyHashToBytes kh) ] + ScriptAll scripts -> "All of" `tagSetTag` TagSet.fromArray + (pprintNativeScript <$> scripts) + ScriptAny scripts -> "Any of" `tagSetTag` TagSet.fromArray + (pprintNativeScript <$> scripts) + ScriptNOfK n scripts -> ("At least " <> show n <> " of ") + `tagSetTag` TagSet.fromArray (pprintNativeScript <$> scripts) + TimelockStart slot -> "Timelock start" `tag` BigNum.toString (unwrap slot) + TimelockExpiry slot -> "Timelock expiry" `tag` BigNum.toString (unwrap slot) + +toCslMany :: Array NativeScript -> Csl.NativeScripts +toCslMany = packListContainer <<< map toCsl + +fromCsl :: Csl.NativeScript -> NativeScript +fromCsl ns = unsafePartial $ fromJust $ + convertScriptPubkey <$> toMaybe (nativeScript_asScriptPubkey ns) + <|> convertScriptAll <$> toMaybe (nativeScript_asScriptAll ns) + <|> convertScriptAny <$> toMaybe (nativeScript_asScriptAny ns) + <|> convertScriptNOfK <$> toMaybe (nativeScript_asScriptNOfK ns) + <|> convertScriptTimelockStart <$> toMaybe (nativeScript_asTimelockStart ns) + <|> + convertScriptTimelockExpiry <$> toMaybe (nativeScript_asTimelockExpiry ns) + where + convertScriptPubkey = scriptPubkey_addrKeyhash >>> wrap >>> ScriptPubkey + convertScriptAll = + scriptAll_nativeScripts >>> unpackListContainer >>> map fromCsl >>> + ScriptAll + convertScriptAny = + scriptAny_nativeScripts >>> unpackListContainer >>> map fromCsl >>> + ScriptAny + convertScriptNOfK nOfK = ScriptNOfK + (unsafePartial $ fromJust $ Int.fromNumber $ scriptNOfK_n nOfK) + (map fromCsl $ unpackListContainer $ scriptNOfK_nativeScripts nOfK) + convertScriptTimelockStart = + timelockStart_slotBignum >>> wrap >>> Slot >>> TimelockStart + convertScriptTimelockExpiry = + timelockExpiry_slotBignum >>> wrap >>> Slot >>> TimelockExpiry + +-- | Note: unbounded recursion here. +toCsl :: NativeScript -> Csl.NativeScript +toCsl = case _ of + ScriptPubkey keyHash -> convertScriptPubkey keyHash + ScriptAll nss -> convertScriptAll nss + ScriptAny nss -> convertScriptAny nss + ScriptNOfK n nss -> convertScriptNOfK n nss + TimelockStart slot -> convertTimelockStart slot + TimelockExpiry slot -> convertTimelockExpiry slot + where + convertScriptPubkey :: Ed25519KeyHash -> Csl.NativeScript + convertScriptPubkey hash = do + nativeScript_newScriptPubkey $ scriptPubkey_new (unwrap hash) + + convertScriptAll :: Array NativeScript -> Csl.NativeScript + convertScriptAll nss = + nativeScript_newScriptAll <<< scriptAll_new <<< + packListContainer $ map toCsl nss + + convertScriptAny :: Array NativeScript -> Csl.NativeScript + convertScriptAny nss = + nativeScript_newScriptAny <<< scriptAny_new <<< + packListContainer $ map toCsl nss + + convertScriptNOfK :: Int -> Array NativeScript -> Csl.NativeScript + convertScriptNOfK n nss = + nativeScript_newScriptNOfK <<< scriptNOfK_new (Int.toNumber n) <<< + packListContainer $ map toCsl nss + + convertTimelockStart :: Slot -> Csl.NativeScript + convertTimelockStart (Slot slot) = + nativeScript_newTimelockStart (timelockStart_newTimelockstart $ unwrap slot) + + convertTimelockExpiry :: Slot -> Csl.NativeScript + convertTimelockExpiry (Slot slot) = + nativeScript_newTimelockExpiry + (timelockExpiry_newTimelockexpiry $ unwrap slot) diff --git a/src/Types/NetworkId.purs b/src/Types/NetworkId.purs new file mode 100644 index 000000000..c1227b315 --- /dev/null +++ b/src/Types/NetworkId.purs @@ -0,0 +1,63 @@ +module Cardano.Types.NetworkId where + +import Prelude + +import Aeson (class EncodeAeson) +import Cardano.Serialization.Lib (fromBytes, networkId_kind, networkId_mainnet, networkId_testnet, toBytes) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Ctl.Internal.Helpers (encodeTagged') +import Data.Function (on) +import Data.Generic.Rep (class Generic) +import Data.Int as Int +import Data.Maybe (Maybe(Nothing, Just), fromJust, fromMaybe) +import Data.Newtype (unwrap, wrap) +import Data.Show.Generic (genericShow) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck.Arbitrary (class Arbitrary) +import Test.QuickCheck.Gen (chooseInt) + +data NetworkId + = TestnetId + | MainnetId + +instance EncodeAeson NetworkId where + encodeAeson = case _ of + TestnetId -> encodeTagged' "TestnetId" {} + MainnetId -> encodeTagged' "MainnetId" {} + +instance Ord NetworkId where + compare = compare `on` toInt + +toInt :: NetworkId -> Int +toInt = case _ of + TestnetId -> 0 + MainnetId -> 1 + +derive instance Eq NetworkId +derive instance Generic NetworkId _ + +instance Show NetworkId where + show = genericShow + +instance Arbitrary NetworkId where + arbitrary = fromMaybe MainnetId <<< fromInt <$> chooseInt 0 1 + +fromInt :: Int -> Maybe NetworkId +fromInt = case _ of + 0 -> Just TestnetId + 1 -> Just MainnetId + _ -> Nothing + +instance AsCbor NetworkId where + encodeCbor = toCsl >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map fromCsl + +toCsl :: NetworkId -> Csl.NetworkId +toCsl = case _ of + TestnetId -> networkId_testnet + MainnetId -> networkId_mainnet + +fromCsl :: Csl.NetworkId -> NetworkId +fromCsl cslNetworkId = unsafePartial $ fromJust $ + fromInt <=< Int.fromNumber $ networkId_kind cslNetworkId diff --git a/src/Types/OutputDatum.purs b/src/Types/OutputDatum.purs new file mode 100644 index 000000000..a0787355c --- /dev/null +++ b/src/Types/OutputDatum.purs @@ -0,0 +1,106 @@ +module Cardano.Types.OutputDatum + ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) + , outputDatumDataHash + , outputDatumDatum + , pprintOutputDatum + ) where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch, UnexpectedValue) + , caseAesonObject + , fromString + , toStringifiedNumbersJson + , (.:) + ) +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.DataHash (DataHash) +import Cardano.Types.PlutusData (pprintPlutusData) +import Ctl.Internal.FromData (class FromData, genericFromData) +import Ctl.Internal.Helpers (encodeTagged') +import Ctl.Internal.Plutus.Types.DataSchema + ( class HasPlutusSchema + , type (:+) + , type (:=) + , type (@@) + , PNil + ) +import Ctl.Internal.ToData (class ToData, genericToData) +import Ctl.Internal.TypeLevel.Nat (S, Z) +import Ctl.Internal.Types.Datum (Datum) +import Data.ByteArray (byteArrayToHex) +import Data.Either (Either(Left)) +import Data.Generic.Rep (class Generic) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (unwrap) +import Data.Show.Generic (genericShow) + +data OutputDatum = NoOutputDatum | OutputDatumHash DataHash | OutputDatum Datum + +derive instance Generic OutputDatum _ +derive instance Eq OutputDatum + +instance Show OutputDatum where + show = genericShow + +instance + HasPlutusSchema OutputDatum + ( "NoOutputDatum" := PNil @@ Z + :+ "OutputDatumHash" + := PNil + @@ (S Z) + :+ "OutputDatum" + := PNil + @@ (S (S Z)) + :+ PNil + ) + +instance ToData OutputDatum where + toData = genericToData + +instance FromData OutputDatum where + fromData = genericFromData + +instance EncodeAeson OutputDatum where + encodeAeson = case _ of + NoOutputDatum -> encodeTagged' "NoOutputDatum" {} + OutputDatumHash r -> encodeTagged' "OutputDatumHash" r + OutputDatum r -> encodeTagged' "OutputDatum" r + +instance DecodeAeson OutputDatum where + decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ + \obj -> do + tag <- obj .: "tag" + case tag of + "NoOutputDatum" -> + pure NoOutputDatum + "OutputDatumHash" -> do + dataHash <- obj .: "contents" + pure $ OutputDatumHash dataHash + "OutputDatum" -> do + datum <- obj .: "contents" + pure $ OutputDatum datum + tagValue -> do + Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString + tagValue + +pprintOutputDatum :: OutputDatum -> TagSet +pprintOutputDatum = TagSet.fromArray <<< case _ of + NoOutputDatum -> [ "datum" `tag` "none" ] + OutputDatumHash hash -> + [ "datumHash" `tag` byteArrayToHex (unwrap $ encodeCbor hash) ] + OutputDatum d -> + [ "datum" `tagSetTag` pprintPlutusData (unwrap d) ] + +outputDatumDataHash :: OutputDatum -> Maybe DataHash +outputDatumDataHash (OutputDatumHash hash) = Just hash +outputDatumDataHash _ = Nothing + +outputDatumDatum :: OutputDatum -> Maybe Datum +outputDatumDatum (OutputDatum datum) = Just datum +outputDatumDatum _ = Nothing diff --git a/src/Types/PaymentCredential.purs b/src/Types/PaymentCredential.purs new file mode 100644 index 000000000..b777410a4 --- /dev/null +++ b/src/Types/PaymentCredential.purs @@ -0,0 +1,43 @@ +module Cardano.Types.PaymentCredential where +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), caseAesonString, encodeAeson) +import Cardano.Serialization.Lib (fromBytes, toBytes) +import Data.Function (on) +import Data.Newtype (class Newtype, unwrap, wrap) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor, decodeCbor, encodeCbor) +import Data.ByteArray (hexToByteArray) +import Data.Either (Either(..)) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(..), maybe) +import Data.Show.Generic (genericShow) + +-- in CSL, StakeCredential and PaymentCredential are the same type, because they are +-- literally the same, but we treat them differently as domain types +newtype PaymentCredential = PaymentCredential Csl.StakeCredential + +derive instance Newtype PaymentCredential _ +derive instance Generic PaymentCredential _ + +instance AsCbor PaymentCredential where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + +instance Eq PaymentCredential where + eq = eq `on` encodeCbor + +instance Ord PaymentCredential where + compare = compare `on` encodeCbor + +instance Show PaymentCredential where + show = genericShow + +-- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances +instance DecodeAeson PaymentCredential where + decodeAeson = do + maybe (Left $ TypeMismatch "Expected hex-encoded PaymentCredential") Right <<< + caseAesonString Nothing (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) + +instance EncodeAeson PaymentCredential where + encodeAeson sh = encodeAeson $ encodeCbor sh diff --git a/src/Types/PlutusData.purs b/src/Types/PlutusData.purs new file mode 100644 index 000000000..357aab003 --- /dev/null +++ b/src/Types/PlutusData.purs @@ -0,0 +1,216 @@ +module Cardano.Types.PlutusData + ( PlutusData + ( Constr + , Map + , List + , Integer + , Bytes + ) + , pprintPlutusData + , toCsl + , fromCsl + ) where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(UnexpectedValue) + , decodeAeson + , encodeAeson + , toStringifiedNumbersJson + , (.:) + ) +import Cardano.Serialization.Lib + ( constrPlutusData_alternative + , constrPlutusData_data + , constrPlutusData_new + , packMapContainer + , plutusData_asBytes + , plutusData_asConstrPlutusData + , plutusData_asInteger + , plutusData_asList + , plutusData_asMap + , plutusData_newBytes + , plutusData_newConstrPlutusData + , plutusData_newInteger + , plutusData_newList + , plutusData_newMap + , unpackMapContainer + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Serialization.Lib.Internal + ( packListContainer + , unpackListContainer + ) +import Cardano.Types.BigInt (fromCsl, toCsl) as BigInt +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum +import Control.Alt ((<|>)) +import Data.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) +import Data.Either (Either(Left)) +import Data.Generic.Rep (class Generic) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet +import Data.Maybe (Maybe(Just, Nothing), fromJust) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) +import Data.Profunctor.Strong ((***)) +import Data.Show.Generic (genericShow) +import Data.Traversable (for) +import Data.Tuple (Tuple) +import Data.Tuple.Nested (type (/\), (/\)) +import JS.BigInt (BigInt) +import JS.BigInt (toString) as BigInt +import Partial.Unsafe (unsafePartial) + +-- Doesn't distinguish "BuiltinData" and "Data", unlike Plutus: +data PlutusData + = Constr BigNum (Array PlutusData) + | Map (Array (Tuple PlutusData PlutusData)) + | List (Array PlutusData) + | Integer BigInt + | Bytes ByteArray + +derive instance Eq PlutusData +derive instance Ord PlutusData +derive instance Generic PlutusData _ + +instance Show PlutusData where + show x = genericShow x + +-- Based off Ogmios Datum Cache Json format, although we no longer use ODC +instance DecodeAeson PlutusData where + decodeAeson aeson = decodeConstr + <|> decodeMap + <|> decodeList + <|> decodeInteger + <|> decodeBytes + where + decodeConstr :: Either JsonDecodeError PlutusData + decodeConstr = do + x <- decodeAeson aeson + constr <- x .: "constr" + fields <- x .: "fields" + pure $ Constr constr fields + + decodeMap :: Either JsonDecodeError PlutusData + decodeMap = do + obj <- decodeAeson aeson + map1 <- (obj .: "map" :: Either _ (Array _)) + kvs <- for map1 \entryJson -> do + key <- entryJson .: "key" + value <- entryJson .: "value" + pure $ key /\ value + pure $ Map kvs + + decodeList :: Either JsonDecodeError PlutusData + decodeList = do + List <$> decodeAeson aeson + + decodeInteger :: Either JsonDecodeError PlutusData + decodeInteger = do + Integer <$> decodeAeson aeson + + decodeBytes :: Either JsonDecodeError PlutusData + decodeBytes = do + bytesHex <- decodeAeson aeson + case hexToByteArray bytesHex of + Nothing -> Left $ UnexpectedValue $ toStringifiedNumbersJson $ + encodeAeson bytesHex + Just res -> pure $ Bytes res + +instance EncodeAeson PlutusData where + encodeAeson (Constr constr fields) = encodeAeson + { "constr": constr + , "fields": fields + } + encodeAeson (Map elems) = encodeAeson + { "map": encodeAeson $ map + ( \(k /\ v) -> + { "key": k + , "value": v + } + ) + elems + } + encodeAeson (List elems) = encodeAeson elems + encodeAeson (Integer bi) = encodeAeson bi + encodeAeson (Bytes ba) = encodeAeson ba + +pprintPlutusData :: PlutusData -> TagSet +pprintPlutusData (Constr n children) = TagSet.fromArray + [ ("Constr " <> BigInt.toString (BigNum.toBigInt n)) `tagSetTag` + TagSet.fromArray (pprintPlutusData <$> children) + ] +pprintPlutusData (Map entries) = TagSet.fromArray + [ tagSetTag "Map" $ TagSet.fromArray $ + entries <#> \(key /\ value) -> + TagSet.fromArray + [ "key" `tagSetTag` pprintPlutusData key + , "value" `tagSetTag` pprintPlutusData value + ] + ] +pprintPlutusData (List children) = TagSet.fromArray + [ tagSetTag "List" $ TagSet.fromArray $ + children <#> pprintPlutusData + ] +pprintPlutusData (Integer n) = TagSet.fromArray + [ "Integer" `tag` BigInt.toString n ] +pprintPlutusData (Bytes bytes) = TagSet.fromArray + [ "Bytes" `tag` byteArrayToHex bytes ] + +-- serialization + +toCsl :: PlutusData -> Csl.PlutusData +toCsl = case _ of + Constr alt list -> convertConstr alt list + Map mp -> convertPlutusMap mp + List lst -> convertPlutusList lst + Integer n -> convertPlutusInteger n + Bytes b -> plutusData_newBytes b + where + convertConstr :: BigNum -> Array PlutusData -> Csl.PlutusData + convertConstr alt list = + plutusData_newConstrPlutusData $ constrPlutusData_new (unwrap alt) + (packListContainer $ map toCsl list) + + convertPlutusList :: Array PlutusData -> Csl.PlutusData + convertPlutusList pd = + plutusData_newList <<< packListContainer $ map toCsl pd + + convertPlutusMap :: Array (PlutusData /\ PlutusData) -> Csl.PlutusData + convertPlutusMap mp = + plutusData_newMap $ packMapContainer $ map (toCsl *** toCsl) mp + + convertPlutusInteger :: BigInt -> Csl.PlutusData + convertPlutusInteger = + plutusData_newInteger <<< BigInt.toCsl + +-- deserialization +fromCsl :: Csl.PlutusData -> PlutusData +fromCsl pd = unsafePartial $ fromJust $ + (convertPlutusConstr <$> toMaybe (plutusData_asConstrPlutusData pd)) + <|> (convertPlutusMap <$> toMaybe (plutusData_asMap pd)) + <|> (convertPlutusList <$> toMaybe (plutusData_asList pd)) + <|> (convertPlutusInteger <$> toMaybe (plutusData_asInteger pd)) + <|> + (Bytes <$> toMaybe (plutusData_asBytes pd)) + where + convertPlutusConstr :: Csl.ConstrPlutusData -> PlutusData + convertPlutusConstr constr = do + let + datas = unpackListContainer $ constrPlutusData_data constr + alt = constrPlutusData_alternative constr + Constr (wrap alt) $ map fromCsl datas + + convertPlutusMap :: Csl.PlutusMap -> PlutusData + convertPlutusMap pm = + Map $ map (fromCsl *** fromCsl) $ unpackMapContainer pm + + convertPlutusList :: Csl.PlutusList -> PlutusData + convertPlutusList = unpackListContainer >>> map fromCsl >>> List + + convertPlutusInteger :: Csl.BigInt -> PlutusData + convertPlutusInteger = Integer <<< BigInt.fromCsl diff --git a/src/Types/Pointer.purs b/src/Types/Pointer.purs new file mode 100644 index 000000000..085eb22ee --- /dev/null +++ b/src/Types/Pointer.purs @@ -0,0 +1,23 @@ +module Cardano.Types.Pointer where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.Slot (Slot) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype Pointer = Pointer { slot :: Slot, txIndex :: BigNum, certIndex :: BigNum } + +derive instance Eq Pointer +derive instance Ord Pointer +derive instance Generic Pointer _ +derive instance Newtype Pointer _ + +instance Show Pointer where + show = genericShow + +derive newtype instance EncodeAeson Pointer +derive newtype instance DecodeAeson Pointer diff --git a/src/Types/PointerAddress.purs b/src/Types/PointerAddress.purs new file mode 100644 index 000000000..194f1a255 --- /dev/null +++ b/src/Types/PointerAddress.purs @@ -0,0 +1,45 @@ +module Cardano.Types.PointerAddress where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), decodeAeson, encodeAeson) +import Cardano.Serialization.Lib (byronAddress_fromBase58, byronAddress_toBase58, fromBytes, pointerAddress_fromAddress, pointerAddress_toAddress, toBytes) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd, showFromBytes) +import Ctl.Internal.Types.Aliases (Base58String) +import Data.ByteArray (byteArrayFromIntArrayUnsafe, byteArrayToHex) +import Data.Either (note) +import Data.Function (on) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe, fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck (class Coarbitrary, coarbitrary) +import Test.QuickCheck.Arbitrary (class Arbitrary) +import Test.QuickCheck.Gen (chooseInt, vectorOf) + +newtype PointerAddress = PointerAddress Csl.PointerAddress + +derive instance Generic PointerAddress _ +derive instance Newtype PointerAddress _ + +instance Eq PointerAddress where + eq = eqOrd + +instance Ord PointerAddress where + compare = compareViaCslBytes `on` (unwrap >>> pointerAddress_toAddress) + +instance Show PointerAddress where + -- TODO: make this instance lawful + show addr = show $ byteArrayToHex $ toBytes $ pointerAddress_toAddress (unwrap addr) + +instance EncodeAeson PointerAddress where + encodeAeson = encodeAeson <<< toBytes <<< pointerAddress_toAddress <<< unwrap + +instance DecodeAeson PointerAddress where + decodeAeson addr = decodeAeson addr >>= \bytes -> + note (TypeMismatch "PointerAddress") $ PointerAddress <$> do + address <- fromBytes bytes + toMaybe $ pointerAddress_fromAddress address diff --git a/src/Types/RewardAddress.purs b/src/Types/RewardAddress.purs new file mode 100644 index 000000000..887bdb250 --- /dev/null +++ b/src/Types/RewardAddress.purs @@ -0,0 +1,54 @@ +module Cardano.Types.RewardAddress where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), decodeAeson, encodeAeson) +import Cardano.Serialization.Lib (address_fromBech32, address_networkId, address_toBech32, rewardAddress_fromAddress, rewardAddress_new, rewardAddress_paymentCred, rewardAddress_toAddress) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.NetworkId as NetworkId +import Cardano.Types.StakeCredential (StakeCredential) +import Ctl.Internal.Types.Aliases (Bech32String) +import Data.Either (note) +import Data.Generic.Rep (class Generic) +import Data.Int as Int +import Data.Maybe (Maybe, fromJust) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) +import Data.Show.Generic (genericShow) +import Literals.Undefined (undefined) +import Partial.Unsafe (unsafePartial) +import Unsafe.Coerce (unsafeCoerce) + +data RewardAddress = RewardAddress NetworkId StakeCredential + +derive instance Generic RewardAddress _ +derive instance Ord RewardAddress +derive instance Eq RewardAddress + +instance Show RewardAddress where + show = genericShow + +-- no AsCbor instance, because there is no to_bytes method in CSL + +instance EncodeAeson RewardAddress where + encodeAeson = toCsl >>> rewardAddress_toAddress >>> flip address_toBech32 (unsafeCoerce undefined) >>> encodeAeson + +instance DecodeAeson RewardAddress where + decodeAeson = note (TypeMismatch "RewardAddress") <<< decodeBech32 <=< decodeAeson + where + decodeBech32 = map fromCsl <<< toMaybe <<< rewardAddress_fromAddress <=< fromBech32 + fromBech32 :: Bech32String -> Maybe Csl.Address + fromBech32 = toMaybe <<< address_fromBech32 + +toCsl :: RewardAddress -> Csl.RewardAddress +toCsl = case _ of + RewardAddress nid sc -> + rewardAddress_new (Int.toNumber $ NetworkId.toInt nid) (unwrap sc) + +fromCsl :: Csl.RewardAddress -> RewardAddress +fromCsl addr = + RewardAddress networkId (wrap $ rewardAddress_paymentCred addr) + where + networkId :: NetworkId + networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust $ Int.fromNumber $ address_networkId $ rewardAddress_toAddress addr diff --git a/src/Types/ScriptHash.purs b/src/Types/ScriptHash.purs new file mode 100644 index 000000000..fa3f3b7ef --- /dev/null +++ b/src/Types/ScriptHash.purs @@ -0,0 +1,97 @@ +module Cardano.Types.ScriptHash where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch) + , caseAesonString + , encodeAeson + ) +import Cardano.Serialization.Lib + ( fromBytes + , scriptHash_fromBech32 + , scriptHash_toBech32 + , toBytes + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor, decodeCbor, encodeCbor) +import Cardano.Types.PlutusData (PlutusData(Bytes)) +import Ctl.Internal.FromData (class FromData) +import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) +import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) +import Ctl.Internal.ToData (class ToData, toData) +import Ctl.Internal.Types.Aliases (Bech32String) +import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Bytes)) as Metadata +import Data.ByteArray + ( byteArrayFromIntArrayUnsafe + , byteArrayToHex + , hexToByteArray + ) +import Data.Either (Either(Right, Left)) +import Data.Function (on) +import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck (class Arbitrary) +import Test.QuickCheck.Gen (chooseInt, vectorOf) + +-- | blake2b-224 hash digests of serialized monetary scripts +newtype ScriptHash = ScriptHash Csl.ScriptHash + +derive instance Newtype ScriptHash _ + +instance Eq ScriptHash where + eq = eq `on` encodeCbor + +instance Ord ScriptHash where + compare = compare `on` encodeCbor + +instance Show ScriptHash where + show edkh = "(ScriptHash " <> byteArrayToHex (unwrap $ encodeCbor edkh) <> ")" + +instance Arbitrary ScriptHash where + arbitrary = + unsafePartial $ + fromJust <<< decodeCbor <<< wrap <<< byteArrayFromIntArrayUnsafe + <$> vectorOf 28 (chooseInt 0 255) + +instance AsCbor ScriptHash where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + +instance ToData ScriptHash where + toData = toData <<< unwrap <<< toBytes <<< unwrap + +instance FromData ScriptHash where + fromData (Bytes bytes) = decodeCbor $ wrap bytes + fromData _ = Nothing + +instance ToMetadata ScriptHash where + toMetadata = toMetadata <<< toBytes <<< unwrap + +instance FromMetadata ScriptHash where + fromMetadata (Metadata.Bytes bytes) = decodeCbor $ wrap bytes + fromMetadata _ = Nothing + +-- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances +instance DecodeAeson ScriptHash where + decodeAeson = do + maybe (Left $ TypeMismatch "Expected hex-encoded script hash") Right <<< + caseAesonString Nothing + (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) + +instance EncodeAeson ScriptHash where + encodeAeson sh = encodeAeson $ encodeCbor sh + +-- | Decodes a script hash from its Bech32 representation +scriptHashFromBech32 :: Bech32String -> Maybe ScriptHash +scriptHashFromBech32 = map wrap <<< toMaybe <<< scriptHash_fromBech32 + +-- | Convert scriptHash to Bech32 representation with given prefix. +-- | Will return `Nothing` if prefix is invalid (length, mixed-case, etc) +-- | More on prefixes: https://cips.cardano.org/cips/cip5 +scriptHashToBech32Unsafe :: Partial => String -> ScriptHash -> Bech32String +scriptHashToBech32Unsafe prefix = unwrap >>> flip scriptHash_toBech32 prefix diff --git a/src/Types/ScriptRef.purs b/src/Types/ScriptRef.purs new file mode 100644 index 000000000..dda5a77b0 --- /dev/null +++ b/src/Types/ScriptRef.purs @@ -0,0 +1,64 @@ +module Cardano.Types.ScriptRef where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(UnexpectedValue, TypeMismatch) + , caseAesonObject + , fromString + , toStringifiedNumbersJson + , (.:) + ) +import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) +import Ctl.Internal.Helpers (encodeTagged') +import Ctl.Internal.Types.Scripts + ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) + , PlutusScript + ) +import Data.Either (Either(Left)) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Show.Generic (genericShow) + +data ScriptRef = NativeScriptRef NativeScript | PlutusScriptRef PlutusScript + +scriptRefFromMintingPolicy :: MintingPolicy -> ScriptRef +scriptRefFromMintingPolicy = case _ of + PlutusMintingPolicy ps -> PlutusScriptRef ps + NativeMintingPolicy ns -> NativeScriptRef ns + +derive instance Eq ScriptRef +derive instance Generic ScriptRef _ + +instance Show ScriptRef where + show = genericShow + +instance EncodeAeson ScriptRef where + encodeAeson = case _ of + NativeScriptRef r -> encodeTagged' "NativeScriptRef" r + PlutusScriptRef r -> encodeTagged' "PlutusScriptRef" r + +instance DecodeAeson ScriptRef where + decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ + \obj -> do + tag <- obj .: "tag" + case tag of + "NativeScriptRef" -> do + nativeScript <- obj .: "contents" + pure $ NativeScriptRef nativeScript + "PlutusScriptRef" -> do + plutusScript <- obj .: "contents" + pure $ PlutusScriptRef plutusScript + tagValue -> do + Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString + tagValue + +getNativeScript :: ScriptRef -> Maybe NativeScript +getNativeScript (NativeScriptRef nativeScript) = Just nativeScript +getNativeScript _ = Nothing + +getPlutusScript :: ScriptRef -> Maybe PlutusScript +getPlutusScript (PlutusScriptRef plutusScript) = Just plutusScript +getPlutusScript _ = Nothing diff --git a/src/Types/Slot.purs b/src/Types/Slot.purs new file mode 100644 index 000000000..9e954d26b --- /dev/null +++ b/src/Types/Slot.purs @@ -0,0 +1,25 @@ +module Cardano.Types.Slot (Slot(Slot)) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Types.BigNum (BigNum) +import Ctl.Internal.FromData (class FromData) +import Ctl.Internal.ToData (class ToData) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype Slot = Slot BigNum + +derive instance Newtype Slot _ +derive instance Generic Slot _ +derive newtype instance Eq Slot +derive newtype instance Ord Slot +derive newtype instance DecodeAeson Slot +derive newtype instance EncodeAeson Slot +derive newtype instance FromData Slot +derive newtype instance ToData Slot + +instance Show Slot where + show = genericShow diff --git a/src/Types/StakeCredential.purs b/src/Types/StakeCredential.purs new file mode 100644 index 000000000..b94a36fe4 --- /dev/null +++ b/src/Types/StakeCredential.purs @@ -0,0 +1,41 @@ +module Cardano.Types.StakeCredential where +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), caseAesonString, encodeAeson) +import Cardano.Serialization.Lib (fromBytes, toBytes) +import Data.Function (on) +import Data.Newtype (class Newtype, unwrap, wrap) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor, decodeCbor, encodeCbor) +import Data.ByteArray (hexToByteArray) +import Data.Either (Either(..)) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(..), maybe) +import Data.Show.Generic (genericShow) + +newtype StakeCredential = StakeCredential Csl.StakeCredential + +derive instance Newtype StakeCredential _ +derive instance Generic StakeCredential _ + +instance AsCbor StakeCredential where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + +instance Eq StakeCredential where + eq = eq `on` encodeCbor + +instance Ord StakeCredential where + compare = compare `on` encodeCbor + +instance Show StakeCredential where + show = genericShow + +-- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances +instance DecodeAeson StakeCredential where + decodeAeson = do + maybe (Left $ TypeMismatch "Expected hex-encoded StakeCredential") Right <<< + caseAesonString Nothing (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) + +instance EncodeAeson StakeCredential where + encodeAeson sh = encodeAeson $ encodeCbor sh diff --git a/src/Types/TransactionHash.purs b/src/Types/TransactionHash.purs new file mode 100644 index 000000000..a8edf0b67 --- /dev/null +++ b/src/Types/TransactionHash.purs @@ -0,0 +1,70 @@ +module Cardano.Types.TransactionHash + ( TransactionHash(TransactionHash) + ) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Cardano.Types.BigNum (zero) as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr)) +import Ctl.Internal.FromData (class FromData, fromData) +import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd, showFromBytes) +import Ctl.Internal.ToData (class ToData, toData) +import Data.ByteArray (byteArrayFromIntArrayUnsafe) +import Data.Function (on) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Nothing), fromJust) +import Data.Newtype (class Newtype, unwrap, wrap) +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck (class Coarbitrary, coarbitrary) +import Test.QuickCheck.Arbitrary (class Arbitrary) +import Test.QuickCheck.Gen (chooseInt, vectorOf) + +-- | 32-bytes blake2b256 hash of a tx body. +-- | NOTE. Plutus docs might incorrectly state that it uses +-- | SHA256 for this purposes. +newtype TransactionHash = TransactionHash Csl.TransactionHash + +derive instance Generic TransactionHash _ +derive instance Newtype TransactionHash _ + +instance Eq TransactionHash where + eq = eqOrd + +-- This is not newtyped derived because it will be used for ordering a +-- `TransactionInput`, we want lexicographical ordering on the hexstring. +instance Ord TransactionHash where + compare = compareViaCslBytes `on` unwrap + +instance Show TransactionHash where + show = unwrap >>> showFromBytes "TransactionHash" + +instance Arbitrary TransactionHash where + arbitrary = unsafePartial $ + wrap <<< fromJust <<< fromBytes <<< byteArrayFromIntArrayUnsafe <$> vectorOf + 32 + (chooseInt 0 255) + +instance Coarbitrary TransactionHash where + coarbitrary (TransactionHash th) generator = coarbitrary (toBytes th) + generator + +-- Plutus actually has this as a zero indexed record +instance FromData TransactionHash where + fromData (Constr n [ bytes ]) | n == BigNum.zero = TransactionHash <$> + (fromBytes =<< fromData bytes) + fromData _ = Nothing + +-- Plutus actually has this as a zero indexed record +instance ToData TransactionHash where + toData (TransactionHash th) = Constr BigNum.zero [ toData $ toBytes th ] + +instance AsCbor TransactionHash where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + +derive newtype instance EncodeAeson TransactionHash +derive newtype instance DecodeAeson TransactionHash diff --git a/src/Types/TransactionInput.purs b/src/Types/TransactionInput.purs new file mode 100644 index 000000000..6d80459df --- /dev/null +++ b/src/Types/TransactionInput.purs @@ -0,0 +1,83 @@ +module Cardano.Types.TransactionInput + ( TransactionInput(TransactionInput) + , fromCsl + , toCsl + ) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Serialization.Lib + ( transactionInput_index + , transactionInput_new + , transactionInput_transactionId + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.BigNum (zero) as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr)) +import Cardano.Types.TransactionHash (TransactionHash(TransactionHash)) +import Ctl.Internal.FromData (class FromData, fromData) +import Ctl.Internal.ToData (class ToData, toData) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Nothing)) +import Data.Newtype (class Newtype, unwrap) +import Data.Show.Generic (genericShow) +import Data.UInt (UInt, toInt) +import Data.UInt as UInt +import Test.QuickCheck.Arbitrary (class Coarbitrary, coarbitrary) + +newtype TransactionInput = TransactionInput + { transactionId :: TransactionHash + , index :: UInt + } + +derive instance Newtype TransactionInput _ +derive instance Generic TransactionInput _ +derive newtype instance Eq TransactionInput +derive newtype instance EncodeAeson TransactionInput +derive newtype instance DecodeAeson TransactionInput + +-- Potential fix me: the below is based on a small sample of smart contract +-- transactions, so fix this as required. +-- Not newtype derived this because it is not lexicographical as `index` is tested +-- before `transactionId`. We require lexicographical order over hexstring +-- `TransactionHash`, then `index`, seemingly inline with Cardano/Plutus. +instance Ord TransactionInput where + compare (TransactionInput txInput) (TransactionInput txInput') = + case compare txInput.transactionId txInput'.transactionId of + EQ -> compare txInput.index txInput'.index + x -> x + +instance Show TransactionInput where + show = genericShow + +-- `Constr` is used for indexing, and `TransactionInput` is always zero-indexed +instance FromData TransactionInput where + fromData (Constr n [ txId, idx ]) | n == BigNum.zero = + TransactionInput <$> + ({ transactionId: _, index: _ } <$> fromData txId <*> fromData idx) + fromData _ = Nothing + +-- `Constr` is used for indexing, and `TransactionInput` is always zero-indexed +instance ToData TransactionInput where + toData (TransactionInput { transactionId, index }) = + Constr BigNum.zero [ toData transactionId, toData index ] + +instance Coarbitrary TransactionInput where + coarbitrary (TransactionInput input) generator = + coarbitrary (toInt input.index) $ coarbitrary input.transactionId generator + +fromCsl :: Csl.TransactionInput -> TransactionInput +fromCsl input = + let + index = UInt.fromNumber $ transactionInput_index input + transactionId = TransactionHash $ transactionInput_transactionId input + in + TransactionInput + { transactionId + , index + } + +toCsl :: TransactionInput -> Csl.TransactionInput +toCsl (TransactionInput { transactionId, index }) = do + transactionInput_new (unwrap transactionId) (UInt.toNumber index) diff --git a/src/Types/TransactionMetadatum.purs b/src/Types/TransactionMetadatum.purs new file mode 100644 index 000000000..97919634f --- /dev/null +++ b/src/Types/TransactionMetadatum.purs @@ -0,0 +1,58 @@ +module Cardano.Types.TransactionMetadatum where + +import Prelude + +import Aeson (class EncodeAeson) +import Cardano.Serialization.Lib + ( packMapContainer + , transactionMetadatum_newBytes + , transactionMetadatum_newInt + , transactionMetadatum_newList + , transactionMetadatum_newMap + , transactionMetadatum_newText + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Serialization.Lib.Internal (packListContainer) +import Cardano.Types.Int (Int) as Int +import Ctl.Internal.Helpers (encodeMap, encodeTagged') +import Data.ByteArray (ByteArray) +import Data.Generic.Rep (class Generic) +import Data.Map (Map) +import Data.Map (toUnfoldable) as Map +import Data.Newtype (unwrap) +import Data.Profunctor.Strong ((***)) +import Data.Show.Generic (genericShow) + +data TransactionMetadatum + = MetadataMap (Map TransactionMetadatum TransactionMetadatum) + | MetadataList (Array TransactionMetadatum) + | Int Int.Int + | Bytes ByteArray + | Text String + +derive instance Eq TransactionMetadatum +derive instance Ord TransactionMetadatum +derive instance Generic TransactionMetadatum _ + +instance Show TransactionMetadatum where + show x = genericShow x + +instance EncodeAeson TransactionMetadatum where + encodeAeson = case _ of + MetadataMap m -> encodeTagged' "MetadataMap" $ encodeMap m + MetadataList arr -> encodeTagged' "MetadataList" arr + Int n -> encodeTagged' "Int" n + Bytes bytes -> encodeTagged' "Bytes" bytes + Text string -> encodeTagged' "Text" string + +toCsl + :: TransactionMetadatum -> Csl.TransactionMetadatum +toCsl = case _ of + MetadataMap mp -> + transactionMetadatum_newMap $ packMapContainer $ map (toCsl *** toCsl) $ + Map.toUnfoldable mp + MetadataList l -> + transactionMetadatum_newList $ packListContainer $ map toCsl l + Int int -> transactionMetadatum_newInt $ unwrap int + Bytes bytes -> transactionMetadatum_newBytes bytes + Text text -> transactionMetadatum_newText text diff --git a/src/Types/TransactionOutput.purs b/src/Types/TransactionOutput.purs new file mode 100644 index 000000000..932835b04 --- /dev/null +++ b/src/Types/TransactionOutput.purs @@ -0,0 +1,29 @@ +module Cardano.Types.TransactionOutput where + +import Prelude + +import Aeson (class EncodeAeson) +import Cardano.Types.Address (Address) +import Cardano.Types.OutputDatum (OutputDatum(..)) +import Cardano.Types.ScriptRef (ScriptRef) +import Cardano.Types.Value (Value(..)) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + + +newtype TransactionOutput = TransactionOutput + { address :: Address + , amount :: Value + , datum :: OutputDatum + , scriptRef :: Maybe ScriptRef + } + +derive instance Generic TransactionOutput _ +derive instance Newtype TransactionOutput _ +derive newtype instance Eq TransactionOutput +derive newtype instance EncodeAeson TransactionOutput + +instance Show TransactionOutput where + show = genericShow diff --git a/src/Types/TransactionUnspentOutput.purs b/src/Types/TransactionUnspentOutput.purs new file mode 100644 index 000000000..268501fad --- /dev/null +++ b/src/Types/TransactionUnspentOutput.purs @@ -0,0 +1,43 @@ +module Cardano.Types.TransactionUnspentOutput + ( TransactionUnspentOutput(TransactionUnspentOutput) + , transactionUnspentOutputsToUtxoMap + ) where + +import Prelude + +import Aeson (class EncodeAeson) +import Cardano.Serialization.Lib (transactionUnspentOutput_input) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionInput as TransactionInput +import Ctl.Internal.Cardano.Types.Transaction (TransactionOutput, UtxoMap) +import Data.Generic.Rep (class Generic) +import Data.Map as Map +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) +import Data.Tuple (Tuple(Tuple)) + +newtype TransactionUnspentOutput = TransactionUnspentOutput + { input :: TransactionInput + , output :: TransactionOutput + } + +derive instance Generic TransactionUnspentOutput _ +derive instance Newtype TransactionUnspentOutput _ +derive newtype instance Eq TransactionUnspentOutput +derive newtype instance EncodeAeson TransactionUnspentOutput + +instance Show TransactionUnspentOutput where + show = genericShow + +transactionUnspentOutputsToUtxoMap :: Array TransactionUnspentOutput -> UtxoMap +transactionUnspentOutputsToUtxoMap = Map.fromFoldable <<< map + \(TransactionUnspentOutput { input, output }) -> Tuple input output + +fromCsl + :: Csl.TransactionUnspentOutput -> TransactionUnspentOutput +fromCsl tuo = do + let + input = TransactionInput.fromCsl $ transactionUnspentOutput_input tuo + output = TransactionOutput.fromCsl $ transactionUnspentOutput_output tuo + T.TransactionUnspentOutput { input, output } diff --git a/src/Types/VRFKeyHash.purs b/src/Types/VRFKeyHash.purs new file mode 100644 index 000000000..9b12be8fa --- /dev/null +++ b/src/Types/VRFKeyHash.purs @@ -0,0 +1,63 @@ +module Cardano.Types.VRFKeyHash where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch) + , caseAesonString + , encodeAeson + ) +import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor, decodeCbor) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr)) +import Ctl.Internal.FromData (class FromData, fromData) +import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd) +import Ctl.Internal.ToData (class ToData, toData) +import Data.ByteArray (byteArrayToHex, hexToByteArray) +import Data.Either (Either(Left, Right)) +import Data.Function (on) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe(Just, Nothing), maybe) +import Data.Newtype (class Newtype, unwrap, wrap) + +newtype VRFKeyHash = VRFKeyHash Csl.VRFKeyHash + +derive instance Newtype VRFKeyHash _ +derive instance Generic VRFKeyHash _ + +instance Show VRFKeyHash where + show = unwrap >>> toBytes >>> byteArrayToHex + +instance Eq VRFKeyHash where + eq = eqOrd + +instance Ord VRFKeyHash where + compare = compareViaCslBytes `on` unwrap + +instance FromData VRFKeyHash where + fromData (Constr n [ bytes ]) + | n == BigNum.zero = VRFKeyHash <$> + (fromBytes =<< fromData bytes) + fromData _ = Nothing + +instance ToData VRFKeyHash where + toData (VRFKeyHash th) = Constr BigNum.zero [ toData $ toBytes th ] + +instance EncodeAeson VRFKeyHash where + encodeAeson = unwrap >>> toBytes >>> byteArrayToHex >>> encodeAeson + +instance DecodeAeson VRFKeyHash where + decodeAeson = do + maybe (Left $ TypeMismatch "Expected hex-encoded VRFKeyHash") Right <<< + caseAesonString Nothing + (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) + +instance AsCbor VRFKeyHash where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + +-- TODO: DecodeAeson diff --git a/src/Types/Value.purs b/src/Types/Value.purs new file mode 100644 index 000000000..1902e692e --- /dev/null +++ b/src/Types/Value.purs @@ -0,0 +1,252 @@ +module Cardano.Types.Value where + +import Prelude hiding (join) + +import Aeson (class EncodeAeson, encodeAeson) +import Cardano.Serialization.Lib (value_coin, value_multiasset) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.Asset (Asset(Asset, AdaAsset)) +import Cardano.Types.AssetClass (AssetClass(AssetClass)) +import Cardano.Types.AssetName (AssetName) +import Cardano.Types.BigInt (divCeil) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Coin (Coin(Coin)) +import Cardano.Types.Coin as Coin +import Cardano.Types.MultiAsset (MultiAsset(MultiAsset), pprintMultiAsset, unionNonAda, unionWithNonAda) +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.ScriptHash (ScriptHash) +import Ctl.Internal.Partition (class Equipartition, equipartition) +import Data.Array.NonEmpty (NonEmptyArray) +import Data.Array.NonEmpty as NEArray +import Data.Foldable (all, foldl) +import Data.Generic.Rep (class Generic) +import Data.Lattice (class JoinSemilattice, class MeetSemilattice, join, meet) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet +import Data.Map (Map) +import Data.Map as Map +import Data.Maybe (Maybe, fromJust, fromMaybe) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) +import Data.Show.Generic (genericShow) +import Data.These (These(Both, That, This)) +import Data.Tuple (fst) +import Data.Tuple.Nested (type (/\), (/\)) +import JS.BigInt (BigInt) +import JS.BigInt as BigInt +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck (class Arbitrary, arbitrary) + +-- | In Plutus, Ada is is stored inside the map (with currency symbol and token +-- | name being empty bytestrings). cardano-serialization-lib makes semantic +-- | distinction between native tokens and Ada, and we follow this convention. +data Value = Value Coin MultiAsset + +derive instance Generic Value _ +derive instance Eq Value + +instance Arbitrary Value where + arbitrary = Value <$> arbitrary <*> arbitrary + +instance Show Value where + show = genericShow + +instance JoinSemilattice Value where + join (Value c1 m1) (Value c2 m2) = Value (c1 `join` c2) (m1 `join` m2) + +instance MeetSemilattice Value where + meet (Value c1 m1) (Value c2 m2) = Value (c1 `meet` c2) (m1 `meet` m2) + +instance EncodeAeson Value where + encodeAeson (Value coin nonAdaAsset) = encodeAeson + { coin + , nonAdaAsset + } + +instance Equipartition Value where + equipartition (Value coin nonAdaAssets) numParts = + NEArray.zipWith Value + (equipartition coin numParts) + (equipartition nonAdaAssets numParts) + +-- for compatibility with older CTL +mkValue :: Coin -> MultiAsset -> Value +mkValue = Value + +pprintValue :: Value -> TagSet +pprintValue value = TagSet.fromArray $ + [ "Lovelace" `tag` BigNum.toString (valueOf AdaAsset value) ] + <> + if nonAdaAssets /= MultiAsset.empty then + [ "Assets" `tagSetTag` pprintMultiAsset nonAdaAssets ] + else [] + where + nonAdaAssets = getMultiAsset value + +valueOf :: Asset -> Value -> BigNum +valueOf AdaAsset (Value coin _) = unwrap coin +valueOf (Asset sh tn) (Value _ (MultiAsset mp)) = fromMaybe BigNum.zero $ + Map.lookup sh mp >>= Map.lookup tn + +getCoin :: Value -> Coin +getCoin (Value coin _) = coin + +getMultiAsset :: Value -> MultiAsset +getMultiAsset (Value _ nonAdaAsset) = nonAdaAsset + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionWith +-- | Combines `Value` with a binary function on `BigInt`s. +unionWith + :: (BigNum -> BigNum -> Maybe BigNum) + -> Value + -> Value + -> Maybe Value +unionWith f (Value (Coin c) na) (Value (Coin c') na') = + Value <$> (Coin <$> f c c') <*> unionWithNonAda f na na' + +-- | Partitions a `Value` into smaller `Value`s, where the Ada amount and the +-- | quantity of each token is equipartitioned across the resultant `Value`s, +-- | with the goal that no token quantity in any of the resultant `Value`s +-- | exceeds the given upper bound. +-- | Taken from cardano-wallet: +-- | https://github.com/input-output-hk/cardano-wallet/blob/d4b30de073f2b5eddb25bf12c2453abb42e8b352/lib/wallet/src/Cardano/Wallet/Primitive/Types/TokenBundle.hs#L381 +equipartitionValueWithTokenQuantityUpperBound + :: BigInt -> Value -> NonEmptyArray Value +equipartitionValueWithTokenQuantityUpperBound maxTokenQuantity value = + let + Value coin nonAdaAssets = value + ms /\ numParts = + equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets + maxTokenQuantity + in + NEArray.zipWith Value (equipartition coin numParts) ms + +-- | Partitions a `MultiAsset` into smaller `MultiAsset`s, where the +-- | quantity of each token is equipartitioned across the resultant +-- | `MultiAsset`s, with the goal that no token quantity in any of the +-- | resultant `MultiAsset`s exceeds the given upper bound. +-- | Taken from cardano-wallet: +-- | https://github.com/input-output-hk/cardano-wallet/blob/d4b30de073f2b5eddb25bf12c2453abb42e8b352/lib/wallet/src/Cardano/Wallet/Primitive/Types/TokenMap.hs#L780 +equipartitionAssetsWithTokenQuantityUpperBound + :: MultiAsset -> BigInt -> NonEmptyArray MultiAsset /\ Int +equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity = + case + maxTokenQuantity <= zero || BigNum.toBigInt currentMaxTokenQuantity <= maxTokenQuantity + of + true -> + NEArray.singleton nonAdaAssets /\ one + false -> + equipartition nonAdaAssets numParts /\ numParts + where + numParts :: Int + numParts = unsafePartial $ fromJust $ BigInt.toInt $ + divCeil (BigNum.toBigInt currentMaxTokenQuantity) maxTokenQuantity + + tokenQuantity :: (ScriptHash /\ AssetName /\ BigNum) -> BigNum + tokenQuantity (_ /\ _ /\ quantity) = quantity + + currentMaxTokenQuantity :: BigNum + currentMaxTokenQuantity = + foldl (\quantity tn -> quantity `max` tokenQuantity tn) BigNum.zero + (MultiAsset.flatten nonAdaAssets) + + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#geq +-- | Check whether one `Value` is greater than or equal to another. See `Value` for an explanation of how operations on `Value`s work. +geq :: Value -> Value -> Boolean +-- If both are zero then checkBinRel will be vacuously true, but this is fine. +geq = checkBinRel (>=) + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#gt +-- | Check whether one `Value` is strictly greater than another. See `Value` for an explanation of how operations on `Value`s work. +gt :: Value -> Value -> Boolean +-- If both are zero then checkBinRel will be vacuously true. So we have a special case. +gt l r = not (isZero l && isZero r) && checkBinRel (>) l r + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#leq +-- | Check whether one `Value` is less than or equal to another. See `Value` for an explanation of how operations on `Value`s work. +leq :: Value -> Value -> Boolean +-- If both are zero then checkBinRel will be vacuously true, but this is fine. +leq = checkBinRel (<=) + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#lt +-- | Check whether one `Value` is strictly less than another. See `Value` for an explanation of how operations on `Value`s work. +lt :: Value -> Value -> Boolean +-- If both are zero then checkBinRel will be vacuously true. So we have a special case. +lt l r = not (isZero l && isZero r) && checkBinRel (<) l r + +-- From https://github.com/mlabs-haskell/bot-plutus-interface/blob/master/src/BotPlutusInterface/PreBalance.hs +-- "isValueNat" uses unsafeFlattenValue which guards against zeros, so non-strict +-- inequality is redundant. So we use strict equality instead. +-- | Checks if every asset has positive quantity +isPositive :: Value -> Boolean +isPositive val = (all (\(_ /\ _ /\ a) -> a > BigNum.zero) $ MultiAsset.flatten $ getMultiAsset val) && valueOf AdaAsset val > BigNum.zero + +-- From https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#isZero +-- | Check whether a `Value` is zero. +isZero :: Value -> Boolean +isZero (Value coin (MultiAsset nonAdaAsset)) = + all (all ((==) BigNum.zero)) nonAdaAsset && coin == Coin.zero + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkPred +checkPred :: (These BigNum BigNum -> Boolean) -> Value -> Value -> Boolean +checkPred f (Value (Coin l) ls) (Value (Coin r) rs) = + let + inner :: Map AssetName (These BigNum BigNum) -> Boolean + inner = all f -- this "all" may need to be checked? + in + f (Both l r) && all inner (unionNonAda ls rs) -- this "all" may need to be checked? + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkBinRel +-- Check whether a binary relation holds for value pairs of two `Value` maps, +-- supplying 0 where a key is only present in one of them. +checkBinRel :: (BigNum -> BigNum -> Boolean) -> Value -> Value -> Boolean +checkBinRel f l r = + let + unThese :: These BigNum BigNum -> Boolean + unThese k' = case k' of + This a -> f a BigNum.zero + That b -> f BigNum.zero b + Both a b -> f a b + in + checkPred unThese l r + +minus :: Value -> Value -> Maybe Value +minus = unionWith BigNum.minus + +assetToValue :: AssetClass -> BigNum -> Value +assetToValue (AssetClass cs tn) quantity = + Value Coin.zero (MultiAsset.singleton cs tn quantity) + +getAssetQuantity :: AssetClass -> Value -> BigNum +getAssetQuantity (AssetClass cs tn) = valueOf (Asset cs tn) + +valueAssets :: Value -> Array (AssetClass /\ BigNum) +valueAssets (Value _ assets) = + MultiAsset.flatten assets + <#> \(cs /\ tn /\ quantity) -> AssetClass cs tn /\ quantity + +valueAssetClasses :: Value -> Array AssetClass +valueAssetClasses = map fst <<< valueAssets + +-- coin coversion + +-- | Convert a `BigInt` to Ada-only `Value` +lovelaceValueOf :: BigNum -> Value +lovelaceValueOf = flip (Value <<< Coin) MultiAsset.empty + +-- | Create a `Value` containing only the given `Coin`. +coinToValue :: Coin -> Value +coinToValue (Coin i) = lovelaceValueOf i + +-- | Get the `Coin` in the given `Value`. +valueToCoin :: Value -> Coin +valueToCoin = Coin <<< valueOf AdaAsset + +fromCsl :: Csl.Value -> Value +fromCsl value = Value coin multiAsset + where + coin = Coin $ wrap $ value_coin value + multiAsset = fromMaybe MultiAsset.empty $ + MultiAsset.fromCsl <$> toMaybe (value_multiasset value) From 0ef20729f12f5676e962587b54a0a8142019ab16 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 22 Jan 2024 20:38:09 +0400 Subject: [PATCH 020/373] Add AsCbor --- src/Types/AsCbor.purs | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/Types/AsCbor.purs diff --git a/src/Types/AsCbor.purs b/src/Types/AsCbor.purs new file mode 100644 index 000000000..747292095 --- /dev/null +++ b/src/Types/AsCbor.purs @@ -0,0 +1,58 @@ +module Cardano.Types.AsCbor where + +import Prelude + +import Cardano.Serialization.Lib (class IsBytes, fromBytes, toBytes) +import Cardano.Serialization.Lib.Internal (class IsCsl) +import Ctl.Internal.Types.CborBytes (CborBytes) +import Data.Maybe (Maybe) +import Data.Newtype (unwrap, wrap) + +-- AsCsl/AsCborBytes machinery + +class + IsCsl cslType <= + AsCsl (cslType :: Type) (cardanoType :: Type) + | cardanoType -> cslType + , cslType -> cardanoType where + fromCsl :: cslType -> cardanoType + toCsl :: cardanoType -> cslType + +-- this typeclass must be here for the code to pass orphan instance check +class AsCbor a where + encodeCbor :: a -> CborBytes + decodeCbor :: CborBytes -> Maybe a + +encodeCborViaCsl + :: forall csl cardano + . IsBytes csl + => IsCsl csl + => AsCsl csl cardano + => cardano + -> CborBytes +encodeCborViaCsl = wrap <<< toBytes <<< toCsl + +decodeCborViaCsl + :: forall csl cardano + . IsBytes csl + => IsCsl csl + => AsCsl csl cardano + => CborBytes + -> Maybe cardano +decodeCborViaCsl = map fromCsl <<< fromBytes <<< unwrap + +encodeCbor' + :: forall csl cardano + . AsCsl csl cardano + => IsBytes csl + => cardano + -> CborBytes +encodeCbor' = toCsl >>> toBytes >>> wrap + +decodeCbor' + :: forall csl cardano + . AsCsl csl cardano + => IsBytes csl + => CborBytes + -> Maybe cardano +decodeCbor' = unwrap >>> fromBytes >>> map fromCsl From c524f7e887d3c0f4d86e92f8683b301f30003d67 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 12 Feb 2024 16:35:30 +0100 Subject: [PATCH 021/373] Add simple test for csl gc --- test/CslGc.js | 35 +++++++++++++++++++++++++++++++++++ test/CslGc.purs | 45 +++++++++++++++++++++++++++++++++++++++++++++ test/Unit.purs | 2 ++ 3 files changed, 82 insertions(+) create mode 100644 test/CslGc.js create mode 100644 test/CslGc.purs diff --git a/test/CslGc.js b/test/CslGc.js new file mode 100644 index 000000000..7641a961b --- /dev/null +++ b/test/CslGc.js @@ -0,0 +1,35 @@ +/* global BROWSER_RUNTIME */ + +let lib; +if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); +} else { + lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); +} + +import process from "process"; + +export const testExternalMemLeakImpl = config => async () => { + let externalMemUpperBound = null; + + for (let i = 0; i < config.numIterations; i++) { + // console.log(`\nIteration ${i}`); + + for (let j = 0; j < config.numArrays; j++) { + let bytes = new Uint8Array(Array(config.arrSize).fill(0)); + const _pd = lib.PlutusData.new_bytes(bytes); + } + + await new Promise(r => setTimeout(r, config.delay)); + + const memUsage = process.memoryUsage(); + // console.log(memUsage); + + if (i == config.refIteration) { + externalMemUpperBound = memUsage.external * (1 + config.maxError / 100); + } + if (i > config.refIteration && memUsage.external > externalMemUpperBound) { + throw new Error("External memory leak detected."); + } + } +}; diff --git a/test/CslGc.purs b/test/CslGc.purs new file mode 100644 index 000000000..16476a1f2 --- /dev/null +++ b/test/CslGc.purs @@ -0,0 +1,45 @@ +module Test.Ctl.CslGc + ( suite + ) where + +import Prelude + +import Control.Promise (Promise, toAffE) +import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Effect (Effect) +import Effect.Aff (Aff) +import Mote (group, test) + +foreign import testExternalMemLeakImpl + :: CslGcTestConfig -> Effect (Promise Unit) + +suite :: TestPlanM (Aff Unit) Unit +suite = + group "CSL Garbage Collection" do + test "External memory does not leak" do + testExternalMemLeak + { numIterations: 15 + , refIteration: 5 + , maxError: 50 + , delay: 1200 + , numArrays: 20 + , arrSize: 1_000_000 + } + +type CslGcTestConfig = + { numIterations :: Int + , refIteration :: Int + , maxError :: Int -- percent + , delay :: Int -- msec + , numArrays :: Int + , arrSize :: Int + } + +-- We consider the test successfull if external memory consumption +-- stops growing after i-th iteration. +-- +-- Note, that wasm has no support for memory shrinking, i.e. once +-- the allocated memory is freed, it will be reused in subsequent +-- wasm allocations, but will not be returned to the process. +testExternalMemLeak :: CslGcTestConfig -> Aff Unit +testExternalMemLeak = toAffE <<< testExternalMemLeakImpl diff --git a/test/Unit.purs b/test/Unit.purs index a1b7daf91..46b4e6478 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -16,6 +16,7 @@ import Test.Ctl.Blockfrost.Aeson.Suite as Blockfrost.Aeson import Test.Ctl.Blockfrost.ProtocolParameters as Blockfrost.ProtocolParameters import Test.Ctl.ByteArray as ByteArray import Test.Ctl.CoinSelection as CoinSelection +import Test.Ctl.CslGc as CslGc import Test.Ctl.Data as Data import Test.Ctl.Data.Interval as Ctl.Data.Interval import Test.Ctl.Deserialization as Deserialization @@ -62,6 +63,7 @@ testPlan = do ByteArray.suite Cip25.suite Cip30SignData.suite + CslGc.suite Data.suite Deserialization.suite Hashing.suite From 0fc8424981e5b78bed8fefd9fe356b403f487075 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 12 Feb 2024 16:46:45 +0100 Subject: [PATCH 022/373] Fix formatting --- test/CslGc.js | 2 +- test/CslGc.purs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/CslGc.js b/test/CslGc.js index 7641a961b..1f5cda5ae 100644 --- a/test/CslGc.js +++ b/test/CslGc.js @@ -17,7 +17,7 @@ export const testExternalMemLeakImpl = config => async () => { for (let j = 0; j < config.numArrays; j++) { let bytes = new Uint8Array(Array(config.arrSize).fill(0)); - const _pd = lib.PlutusData.new_bytes(bytes); + lib.PlutusData.new_bytes(bytes); } await new Promise(r => setTimeout(r, config.delay)); diff --git a/test/CslGc.purs b/test/CslGc.purs index 16476a1f2..64fb9e30b 100644 --- a/test/CslGc.purs +++ b/test/CslGc.purs @@ -36,7 +36,7 @@ type CslGcTestConfig = } -- We consider the test successfull if external memory consumption --- stops growing after i-th iteration. +-- stops growing after i-th iteration. -- -- Note, that wasm has no support for memory shrinking, i.e. once -- the allocated memory is freed, it will be reused in subsequent From 7c699db45b911fa0133aeccfc336abda69f8b75a Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 13 Feb 2024 17:21:52 +0100 Subject: [PATCH 023/373] Update csl and csl-gc-wrapper npm dependencies --- package-lock.json | 38 +++++++++++++++++++------------------- package.json | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index e33f06931..d5ef3adaa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -63,14 +63,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -513,9 +513,9 @@ } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "node_modules/@mlabs-haskell/json-bigint": { "version": "2.0.0", @@ -6394,14 +6394,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -6637,9 +6637,9 @@ } }, "@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "@mlabs-haskell/json-bigint": { "version": "2.0.0", diff --git a/package.json b/package.json index 9cf1dee5f..0a1985266 100755 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", From 9359154b7f86144616803808ffd915228bf2caf9 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 13 Feb 2024 17:29:32 +0100 Subject: [PATCH 024/373] Update template --- templates/ctl-scaffold/package-lock.json | 38 ++++++++++++------------ templates/ctl-scaffold/package.json | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 7b3db0184..866cbc71a 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -13,7 +13,7 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -62,14 +62,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -512,9 +512,9 @@ } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "node_modules/@mlabs-haskell/json-bigint": { "version": "2.0.0", @@ -5537,14 +5537,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.4.0.tgz", - "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -5780,9 +5780,9 @@ } }, "@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "@mlabs-haskell/json-bigint": { "version": "2.0.0", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 1997e2065..62583c99f 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -29,7 +29,7 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", From 4811c9e07c2aa7af1bb73401075f17e7821096da Mon Sep 17 00:00:00 2001 From: MitchyCola Date: Wed, 14 Feb 2024 09:25:03 -0500 Subject: [PATCH 025/373] chore: remove unused imports --- src/Internal/Test/ContractTest.purs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Internal/Test/ContractTest.purs b/src/Internal/Test/ContractTest.purs index 890576a01..da446b0bd 100644 --- a/src/Internal/Test/ContractTest.purs +++ b/src/Internal/Test/ContractTest.purs @@ -13,9 +13,6 @@ import Prelude import Contract.Monad (Contract) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution) -import Data.Tuple (fst, snd) -import Data.Tuple.Nested ((/\)) -import Mote.Monad (group, mapTest) -- | Represents a `Contract` test suite that depend on *some* wallet -- | `UtxoDistribution`. From fb169e9d1c6d617fdb7fe07e737ee24f1c573f2b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 18:29:55 +0400 Subject: [PATCH 026/373] WIP --- CHANGELOG.md | 26 + doc/limitations.md | 21 + doc/plutus-data.md | 72 + doc/wallet-support.md | 17 + src/Contract/Address.purs | 33 +- src/Contract/Backend/Ogmios.purs | 2 +- src/Contract/Backend/Ogmios/Mempool.purs | 2 +- src/Contract/CborBytes.purs | 10 - src/Contract/Hashing.purs | 3 +- src/Contract/Keys.purs | 6 +- src/Contract/Metadata.purs | 4 +- src/Contract/Numeric/BigNum.purs | 2 +- src/Contract/PlutusData.purs | 6 +- src/Contract/Prim/ByteArray.purs | 10 - src/Contract/RewardAddress.purs | 10 +- src/Contract/Staking.purs | 2 +- src/Contract/Test/Assert.purs | 24 +- src/Contract/TextEnvelope.purs | 3 +- src/Contract/Utxos.purs | 2 +- src/Contract/Value.purs | 17 +- src/Internal.js | 57 + src/Internal.purs | 186 + src/Internal/Address.purs | 75 - src/Internal/ApplyArgs.purs | 8 +- src/Internal/BalanceTx/BalanceTx.purs | 10 +- src/Internal/BalanceTx/CoinSelection.purs | 100 +- src/Internal/BalanceTx/Collateral.purs | 26 +- src/Internal/BalanceTx/Collateral/Select.purs | 103 +- src/Internal/BalanceTx/Constraints.purs | 31 +- src/Internal/BalanceTx/Error.purs | 12 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 2 +- src/Internal/BalanceTx/FakeOutput.purs | 23 +- src/Internal/BalanceTx/RedeemerIndex.purs | 12 +- src/Internal/BalanceTx/UtxoMinAda.purs | 48 +- src/Internal/Cardano/TextEnvelope.purs | 43 +- src/Internal/Cardano/Types/NativeScript.purs | 122 +- src/Internal/Cardano/Types/ScriptRef.purs | 68 +- src/Internal/Cardano/Types/Transaction.purs | 306 +- .../Types/TransactionUnspentOutput.purs | 31 +- src/Internal/Cardano/Types/Value.purs | 920 +---- src/Internal/CoinSelection/UtxoIndex.purs | 86 +- src/Internal/Contract/AwaitTxConfirmed.purs | 2 +- src/Internal/Contract/MinFee.purs | 2 +- src/Internal/Contract/Monad.purs | 2 +- src/Internal/Contract/QueryHandle/Type.purs | 1 - src/Internal/Contract/WaitUntilSlot.purs | 2 +- src/Internal/Contract/Wallet.purs | 5 - .../Deserialization/NativeScript.purs | 9 +- src/Internal/Deserialization/PlutusData.purs | 8 +- src/Internal/Deserialization/Transaction.purs | 959 ++--- src/Internal/Deserialization/UnspentOutput.js | 64 - .../Deserialization/UnspentOutput.purs | 184 - src/Internal/Deserialization/WitnessSet.purs | 10 +- src/Internal/Equipartition.purs | 38 - src/Internal/FfiHelpers.js | 8 + src/Internal/FfiHelpers.purs | 13 + src/Internal/FromData.purs | 6 +- src/Internal/Hashing.js | 9 - src/Internal/Hashing.purs | 77 +- src/Internal/Helpers.purs | 70 +- src/Internal/Metadata/Cip25/Cip25String.purs | 2 +- src/Internal/Metadata/Cip25/Common.purs | 34 +- src/Internal/Metadata/Cip25/V2.purs | 35 +- src/Internal/Metadata/Helpers.purs | 2 +- src/Internal/NativeScripts.purs | 5 +- src/Internal/Partition.purs | 83 +- src/Internal/Plutus/Conversion.purs | 22 +- src/Internal/Plutus/Conversion/Address.purs | 281 +- src/Internal/Plutus/Conversion/Value.purs | 81 +- src/Internal/Plutus/Types/Address.purs | 24 +- src/Internal/Plutus/Types/AssocMap.purs | 2 +- src/Internal/Plutus/Types/Credential.purs | 27 +- src/Internal/Plutus/Types/CurrencySymbol.purs | 3 +- src/Internal/Plutus/Types/Transaction.purs | 17 +- src/Internal/Plutus/Types/Value.purs | 29 +- src/Internal/ProcessConstraints.purs | 18 +- src/Internal/ProcessConstraints/Error.purs | 59 +- src/Internal/ProcessConstraints/State.purs | 2 +- .../ProcessConstraints/UnbalancedTx.purs | 5 +- src/Internal/QueryM.purs | 2 +- src/Internal/QueryM/Dispatcher.purs | 2 +- src/Internal/QueryM/Kupo.purs | 22 +- src/Internal/QueryM/Ogmios.purs | 54 +- src/Internal/QueryM/Pools.purs | 1 - src/Internal/Scripts.purs | 66 +- src/Internal/Serialization.purs | 530 +-- src/Internal/Serialization/Address.purs | 608 +--- src/Internal/Serialization/AuxiliaryData.purs | 33 +- src/Internal/Serialization/Hash.purs | 205 +- src/Internal/Serialization/MinFee.purs | 4 +- src/Internal/Serialization/NativeScript.purs | 78 - src/Internal/Serialization/PlutusData.purs | 4 +- src/Internal/Serialization/PlutusScript.purs | 19 - src/Internal/Serialization/WitnessSet.purs | 56 +- src/Internal/Service/Blockfrost.purs | 9 +- src/Internal/Service/Helpers.purs | 14 +- src/Internal/ToData.purs | 6 +- src/Internal/Transaction.purs | 1 - src/Internal/TxOutput.purs | 39 +- src/Internal/Types/BigNum.purs | 135 - src/Internal/Types/CborBytes.purs | 58 +- src/Internal/Types/Chain.purs | 2 +- src/Internal/Types/Datum.purs | 2 +- src/Internal/Types/EraSummaries.purs | 2 +- src/Internal/Types/Int.purs | 78 +- src/Internal/Types/Interval.purs | 23 +- src/Internal/Types/Natural.purs | 2 +- src/Internal/Types/OutputDatum.purs | 104 +- src/Internal/Types/PaymentPubKey.purs | 5 - src/Internal/Types/PlutusData.purs | 133 - src/Internal/Types/PubKeyHash.purs | 154 - src/Internal/Types/Rational.purs | 4 +- src/Internal/Types/Redeemer.purs | 13 +- src/Internal/Types/RewardAddress.purs | 67 +- src/Internal/Types/ScriptLookups.purs | 3 +- src/Internal/Types/Scripts.purs | 63 +- src/Internal/Types/TokenName.js | 26 - src/Internal/Types/TokenName.purs | 124 - src/Internal/Types/Transaction.purs | 131 +- src/Internal/Types/TransactionMetadata.purs | 1 - src/Internal/Types/TxConstraints.purs | 58 +- src/Internal/Types/UsedTxOuts.purs | 2 +- src/Internal/Wallet/Cip30.purs | 83 +- src/Internal/Wallet/Cip30/SignData.purs | 7 +- src/Internal/Wallet/Cip30Mock.purs | 4 - src/Lib.js | 883 +++++ src/Lib.purs | 3185 +++++++++++++++++ src/Plutus/PubKeyHash.purs | 41 + src/Types/Address.purs | 76 +- src/Types/AsCbor.purs | 58 - src/Types/Asset.purs | 3 +- src/Types/AssetClass.purs | 8 +- src/Types/AssetName.purs | 2 +- src/Types/AuxiliaryData.purs | 28 +- src/Types/BaseAddress.purs | 57 +- src/Types/BigInt.purs | 42 +- src/Types/BigNum.purs | 43 +- src/Types/ByronAddress.purs | 7 +- src/Types/Coin.purs | 5 + src/Types/Credential.purs | 71 +- src/Types/Ed25519KeyHash.purs | 5 + src/Types/Ed25519Signature.purs | 32 + src/Types/EnterpriseAddress.purs | 79 + src/Types/GeneralTransactionMetadata.purs | 40 + src/Types/Language.purs | 72 + src/Types/MultiAsset.purs | 21 +- src/Types/NativeScript.purs | 20 +- src/Types/NetworkId.purs | 13 +- src/Types/OutputDatum.purs | 21 +- src/Types/PaymentCredential.purs | 28 +- src/Types/PaymentPubKeyHash.purs | 22 + src/Types/PlutusScript.purs | 52 + src/Types/Pointer.purs | 3 +- src/Types/PointerAddress.purs | 31 +- src/Types/PrivateKey.purs | 35 + src/Types/PublicKey.purs | 39 + src/Types/RewardAddress.purs | 51 +- src/Types/ScriptRef.purs | 38 +- src/Types/StakeCredential.purs | 25 +- src/Types/StakePubKeyHash.purs | 22 + src/Types/TransactionOutput.purs | 77 +- src/Types/TransactionUnspentOutput.purs | 18 +- src/Types/UtxoMap.purs | 57 + src/Types/Value.purs | 41 +- src/Types/Vkey.purs | 20 + 165 files changed, 7327 insertions(+), 5822 deletions(-) create mode 100644 doc/limitations.md create mode 100644 doc/plutus-data.md create mode 100644 doc/wallet-support.md create mode 100644 src/Internal.js create mode 100644 src/Internal.purs delete mode 100644 src/Internal/Address.purs delete mode 100644 src/Internal/Deserialization/UnspentOutput.js delete mode 100644 src/Internal/Deserialization/UnspentOutput.purs delete mode 100644 src/Internal/Equipartition.purs delete mode 100644 src/Internal/Serialization/NativeScript.purs delete mode 100644 src/Internal/Serialization/PlutusScript.purs delete mode 100644 src/Internal/Types/BigNum.purs delete mode 100644 src/Internal/Types/PlutusData.purs delete mode 100644 src/Internal/Types/PubKeyHash.purs delete mode 100644 src/Internal/Types/TokenName.js delete mode 100644 src/Internal/Types/TokenName.purs create mode 100644 src/Lib.js create mode 100644 src/Lib.purs create mode 100644 src/Plutus/PubKeyHash.purs delete mode 100644 src/Types/AsCbor.purs create mode 100644 src/Types/Ed25519Signature.purs create mode 100644 src/Types/EnterpriseAddress.purs create mode 100644 src/Types/GeneralTransactionMetadata.purs create mode 100644 src/Types/Language.purs create mode 100644 src/Types/PaymentPubKeyHash.purs create mode 100644 src/Types/PlutusScript.purs create mode 100644 src/Types/PrivateKey.purs create mode 100644 src/Types/PublicKey.purs create mode 100644 src/Types/StakePubKeyHash.purs create mode 100644 src/Types/UtxoMap.purs create mode 100644 src/Types/Vkey.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index d451909cc..650ac030f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,12 +69,38 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed - Replaced custom CIP-30 wrapper code with [`purescript-cip30-typesafe`](https://github.com/mlabs-haskell/purescript-cip30-typesafe/) - ([#1583](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1583)) +- Renamings for better confirmity with CSL: + - `TokenName` renamed to `AssetName` + - `NonAdaAsset` renamed to `MultiAsset` +- `Coin` now wraps BigNum instead of BigInt (in line with CSL) +- Instances for `Address` type: + - `Show`, `EncodeAeson` and `DecodeAeson` return a data-generic representation instead of Bech32-based. +- `plutusScriptV1FromEnvelope`, `plutusScriptV2FromEnvelope` have been replaced with `plutusScriptFromEnvelope` (the script is tagged with its language anyway) +- `NoOutputDatum` variant has been removed from `OutputDatum`: instead, it was made optional via Maybe in `TransactionOutput` +- `TransactionMetadatum` constructor naming, in PS and JSON encoding: `MetadataMap` -> `Map`, `MetadataList` -> `List` ### Fixed ### Removed - `ModifyTx` error: made conversion functions total and removed the need to handle it +- `Contract.CborBytes` utils: + - `cborBytesToByteArray` + - `cborBytesFromByteArray` + - `cborBytesFromAscii` + - `cborBytesToIntArray` + - `cborBytesFromIntArray` + - `cborBytesFromIntArrayUnsafe` + - `cborBytesToHex` + - `cborByteLength` + - `hexToCborBytes` + - `hexToCborBytesUnsafe` + - `rawBytesAsCborBytes` +- `ToData`/`FromData` Instances for `purescript-noble-secp256k1` types (PS does not allow orphans) +- `ToMetadata`/`FromMetadata` instance for `BigInt`: it was partial and unsafe +- `Cardano.Types.BigNum.toInt'` method + + ## [v7.0.0] diff --git a/doc/limitations.md b/doc/limitations.md new file mode 100644 index 000000000..a889690d3 --- /dev/null +++ b/doc/limitations.md @@ -0,0 +1,21 @@ + + + +- [CTL limitations](#ctl-limitations) +- [Addresses](#addresses) +- [E2E test suite does not work in Nix on Darwin](#e2e-test-suite-does-not-work-in-nix-on-darwin) +- [](#) + + + +# CTL limitations + +# Addresses + +We do not consider pointer addresses or Byron addresses. + +# E2E test suite does not work in Nix on Darwin + +It works when started from the shell. + +# diff --git a/doc/plutus-data.md b/doc/plutus-data.md new file mode 100644 index 000000000..d8a64b8ba --- /dev/null +++ b/doc/plutus-data.md @@ -0,0 +1,72 @@ +A concrete Plutus Data schema. Morally equivalent to: Row (Row Type). This is superfluous + in the sense that we could simply do everything here with (RowListI (RowList Type)), which + @PlutusSchema@s are all translated to, but this facilitates a more comprehensible syntax. + (Conversely we could rewrite all of the RowList/RowListI machinery in terms of this, but it + would be much more difficult to read/debug/reason about). + + Here's an example: + + data FType + = F0 + { f0A :: BigInt + } + | F1 + { f1A :: Boolean + , f1B :: Boolean + , f1C :: Boolean + } + | F2 + { f2A :: BigInt + , f2B :: FType + } + + instance + HasPlutusSchema FType + ( "F0" := + ( "f0A" := I BigInt + :+ PNil) + @@ Z + + :+ "F1" := + ( "f1A" := I Boolean + :+ "f1B" := I Boolean + :+ "f1C" := I Boolean + :+ PNil + ) + @@ (S Z) + + :+ "F2" := + ( "f2A" := I BigInt + :+ "f2B" := I FType + :+ PNil + ) + @@ (S (S Z)) + + :+ PNil + ) + +Note that a PSchema encodes two pieces of information: + +1) The index of each *constructor* of a data type. This information is encoded in the "outer" RowListI. + In the above example, these are "F0" (Z), "F1" (S Z), and "F2" (S (S Z)) + +2) The correct on-chain ordering of each record field. This is encoded implicitly by the ordering of the fields in each inner list (i.e. we do not provide a specific index for record fields). + If a constructor does not have a Record argument, we do not need to encode any information about that argument. For example, the type: + + data GType + = G0 BigInt + | G1 Boolean Boolean Boolean + | G2 BigInt GType + + would have a much simpler Schema: + + instance + HasPlutusSchema GType + ( "G0" := PNil @@ Z + :+ "G1" := PNil @@ (S Z) + :+ "G2" := PNil @@ (S (S Z)) + :+ PNil) + + The sole purpose of the inner list is to ensure correct translation to and from Plutus Data for record types + when using the generic functions in ToData/FromData. Since GType's constructors do not have record arguments, + no additional information is needed in the inner lists. diff --git a/doc/wallet-support.md b/doc/wallet-support.md new file mode 100644 index 000000000..98f882af2 --- /dev/null +++ b/doc/wallet-support.md @@ -0,0 +1,17 @@ + + + +- [CIP-30 wallet support in CTL](#cip-30-wallet-support-in-ctl) + + + +# CIP-30 wallet support in CTL + +| Wallet Name | Fully implements CIP-30 | Supports Babbage | Supported in CTL | Added to E2E test suite | Is multi-address | +|-------------|-------------------------|------------------|------------------|-------------------------|------------------| +| Nami | ✔️ | ✔️ | ✔️ | ✔️ | x | +| Gero | ✔️ | ✔️ | ✔️ | ✔️ | x | +| Eternl | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | +| Lode | ✔️ | ️ | ✔️ | | x | +| Nufi | ✔️ | ️ | ✔️ | | x | +| Lace | x [1]() | ✔️ | ✔ | | x | diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index 0fbab38e0..55cd5ca73 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -25,10 +25,6 @@ import Prelude import Contract.Monad (Contract, liftContractM) import Control.Monad.Error.Class (throwError) import Control.Monad.Reader.Class (asks) -import Ctl.Internal.Address - ( addressPaymentValidatorHash - , addressStakeValidatorHash - ) as Address import Ctl.Internal.Plutus.Conversion ( fromPlutusAddress , fromPlutusAddressWithNetworkTag @@ -69,26 +65,15 @@ import Ctl.Internal.Serialization.Address (addressFromBech32) as SA import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) as X import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.Aliases (Bech32String) as TypeAliases -import Ctl.Internal.Types.PaymentPubKey (PaymentPubKey(PaymentPubKey)) as X -import Ctl.Internal.Types.PubKeyHash - ( PaymentPubKeyHash - , PubKeyHash - , StakePubKeyHash - ) -import Ctl.Internal.Types.PubKeyHash - ( PaymentPubKeyHash(PaymentPubKeyHash) - , PubKeyHash(PubKeyHash) - , StakePubKeyHash(StakePubKeyHash) - ) as X -import Ctl.Internal.Types.PubKeyHash - ( payPubKeyHashBaseAddress - , payPubKeyHashEnterpriseAddress - , payPubKeyHashRewardAddress - , pubKeyHashBaseAddress - , pubKeyHashEnterpriseAddress - , pubKeyHashRewardAddress - , stakePubKeyHashRewardAddress - ) as PubKeyHash +-- import Ctl.Internal.Types.PubKeyHash +-- ( payPubKeyHashBaseAddress +-- , payPubKeyHashEnterpriseAddress +-- , payPubKeyHashRewardAddress +-- , pubKeyHashBaseAddress +-- , pubKeyHashEnterpriseAddress +-- , pubKeyHashRewardAddress +-- , stakePubKeyHashRewardAddress +-- ) as PubKeyHash import Ctl.Internal.Types.Scripts (StakeValidatorHash, ValidatorHash) import Data.Maybe (Maybe) import Effect.Exception (error) diff --git a/src/Contract/Backend/Ogmios.purs b/src/Contract/Backend/Ogmios.purs index 52085fdbb..26ce969fa 100644 --- a/src/Contract/Backend/Ogmios.purs +++ b/src/Contract/Backend/Ogmios.purs @@ -6,6 +6,7 @@ module Contract.Backend.Ogmios import Contract.Prelude +import Cardano.Types.TransactionHash (TransactionHash) import Contract.Monad (Contract) import Contract.Transaction (PoolPubKeyHash) import Ctl.Internal.Cardano.Types.Transaction (PoolRegistrationParams) @@ -14,7 +15,6 @@ import Ctl.Internal.QueryM (submitTxOgmios) as QueryM import Ctl.Internal.QueryM.Ogmios (SubmitTxR) import Ctl.Internal.QueryM.Pools (getPoolParameters) as QueryM import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.Transaction (TransactionHash) -- | **This function can only run with Ogmios backend** -- | diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs index c39be0560..a1dff3acf 100644 --- a/src/Contract/Backend/Ogmios/Mempool.purs +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -14,6 +14,7 @@ module Contract.Backend.Ogmios.Mempool import Contract.Prelude +import Cardano.Types.TransactionHash (TransactionHash) import Contract.Monad (Contract) import Control.Monad.Error.Class (liftMaybe, try) import Ctl.Internal.Cardano.Types.Transaction (Transaction) @@ -31,7 +32,6 @@ import Ctl.Internal.QueryM.Ogmios , MempoolSnapshotAcquired , MempoolTransaction(MempoolTransaction) ) as Ogmios -import Ctl.Internal.Types.Transaction (TransactionHash) import Data.Array as Array import Data.ByteArray (hexToByteArray) import Data.List (List(Cons)) diff --git a/src/Contract/CborBytes.purs b/src/Contract/CborBytes.purs index bcc976599..ef3ec0caf 100644 --- a/src/Contract/CborBytes.purs +++ b/src/Contract/CborBytes.purs @@ -3,14 +3,4 @@ module Contract.CborBytes (module CborBytes) where import Ctl.Internal.Types.CborBytes ( CborBytes(CborBytes) - , cborByteLength - , cborBytesFromAscii - , cborBytesFromByteArray - , cborBytesFromIntArray - , cborBytesFromIntArrayUnsafe - , cborBytesToByteArray - , cborBytesToHex - , cborBytesToIntArray - , hexToCborBytes - , hexToCborBytesUnsafe ) as CborBytes diff --git a/src/Contract/Hashing.purs b/src/Contract/Hashing.purs index 168ad35d9..566749dbb 100644 --- a/src/Contract/Hashing.purs +++ b/src/Contract/Hashing.purs @@ -7,6 +7,7 @@ module Contract.Hashing import Prelude +import Cardano.Types.TransactionHash (TransactionHash) import Contract.Scripts (plutusScriptStakeValidatorHash) as X import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData @@ -33,8 +34,6 @@ import Ctl.Internal.NativeScripts (nativeScriptHash) as X import Ctl.Internal.Serialization (convertTransaction) import Ctl.Internal.Serialization (publicKeyHash) as Internal import Ctl.Internal.Serialization.AuxiliaryData (hashAuxiliaryData) -import Ctl.Internal.Types.PubKeyHash (PubKeyHash) -import Ctl.Internal.Types.Transaction (TransactionHash) import Data.Newtype (unwrap, wrap) import Effect (Effect) diff --git a/src/Contract/Keys.purs b/src/Contract/Keys.purs index 91a95da0f..cf4ae72d7 100644 --- a/src/Contract/Keys.purs +++ b/src/Contract/Keys.purs @@ -14,11 +14,9 @@ import Cardano.Serialization.Lib , privateKey_fromNormalBytes , publicKey_fromBytes ) as Csl +import Cardano.Types.PrivateKey (PrivateKey(..)) +import Cardano.Types.PublicKey (PublicKey(..)) import Contract.Prim.ByteArray (RawBytes) -import Ctl.Internal.Cardano.Types.Transaction - ( PrivateKey(PrivateKey) - , PublicKey(PublicKey) - ) import Ctl.Internal.Cardano.Types.Transaction (mkEd25519Signature) as X import Ctl.Internal.Deserialization.Keys (publicKeyFromBech32) as Csl import Ctl.Internal.Types.Aliases (Bech32String) diff --git a/src/Contract/Metadata.purs b/src/Contract/Metadata.purs index e2e1ba134..cb805c817 100644 --- a/src/Contract/Metadata.purs +++ b/src/Contract/Metadata.purs @@ -10,10 +10,10 @@ import Ctl.Internal.Metadata.Cip25.Cip25String , unCip25String ) as Cip25String import Ctl.Internal.Metadata.Cip25.V2 - ( Cip25Metadata(Cip25Metadata) + ( Cip25AssetName(Cip25AssetName) + , Cip25Metadata(Cip25Metadata) , Cip25MetadataEntry(Cip25MetadataEntry) , Cip25MetadataFile(Cip25MetadataFile) - , Cip25TokenName(Cip25TokenName) , nftMetadataLabel ) as Cip25Metadata import Ctl.Internal.Types.TransactionMetadata diff --git a/src/Contract/Numeric/BigNum.purs b/src/Contract/Numeric/BigNum.purs index e8e986728..2f219318c 100644 --- a/src/Contract/Numeric/BigNum.purs +++ b/src/Contract/Numeric/BigNum.purs @@ -1,6 +1,6 @@ module Contract.Numeric.BigNum (module X) where -import Ctl.Internal.Types.BigNum +import Cardano.Types.BigNum ( BigNum , add , fromBigInt diff --git a/src/Contract/PlutusData.purs b/src/Contract/PlutusData.purs index 1d5334ea0..01aa8f1e8 100644 --- a/src/Contract/PlutusData.purs +++ b/src/Contract/PlutusData.purs @@ -22,6 +22,9 @@ module Contract.PlutusData import Prelude +import Cardano.Types.PlutusData + ( PlutusData(Constr, Map, List, Integer, Bytes) + ) as PlutusData import Contract.Monad (Contract) import Control.Parallel (parTraverse) import Ctl.Internal.Contract.Monad (getQueryHandle) @@ -88,9 +91,6 @@ import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum(Datum), unitDatum) as import Ctl.Internal.Types.OutputDatum ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) ) as OutputDatum -import Ctl.Internal.Types.PlutusData - ( PlutusData(Constr, Map, List, Integer, Bytes) - ) as PlutusData import Ctl.Internal.Types.Redeemer ( Redeemer(Redeemer) , RedeemerHash(RedeemerHash) diff --git a/src/Contract/Prim/ByteArray.purs b/src/Contract/Prim/ByteArray.purs index 843aff39e..51ba3f47e 100644 --- a/src/Contract/Prim/ByteArray.purs +++ b/src/Contract/Prim/ByteArray.purs @@ -7,16 +7,6 @@ module Contract.Prim.ByteArray import Ctl.Internal.Types.CborBytes ( CborBytes(CborBytes) - , cborBytesFromAscii - , cborBytesFromByteArray - , cborBytesFromIntArray - , cborBytesFromIntArrayUnsafe - , cborBytesToByteArray - , cborBytesToHex - , cborBytesToIntArray - , hexToCborBytes - , hexToCborBytesUnsafe - , rawBytesAsCborBytes ) as CborBytes import Ctl.Internal.Types.RawBytes ( RawBytes(RawBytes) diff --git a/src/Contract/RewardAddress.purs b/src/Contract/RewardAddress.purs index 316654b09..1598e6038 100644 --- a/src/Contract/RewardAddress.purs +++ b/src/Contract/RewardAddress.purs @@ -1,11 +1,3 @@ module Contract.RewardAddress (module X) where -import Ctl.Internal.Types.RewardAddress - ( RewardAddress - , rewardAddressFromBech32 - , rewardAddressFromBytes - , rewardAddressToBech32 - , rewardAddressToBytes - , stakePubKeyHashRewardAddress - , stakeValidatorHashRewardAddress - ) as X +import Cardano.Types.RewardAddress as X diff --git a/src/Contract/Staking.purs b/src/Contract/Staking.purs index 0cef956ff..befb8fba1 100644 --- a/src/Contract/Staking.purs +++ b/src/Contract/Staking.purs @@ -13,7 +13,7 @@ import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) as X -import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) +-- import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Scripts (StakeValidatorHash) import Data.Either (either) import Data.Maybe (Maybe) diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index ec7437283..255e25430 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -77,7 +77,7 @@ import Contract.Transaction , getTxMetadata ) import Contract.Utxos (utxosAt) -import Contract.Value (CurrencySymbol, TokenName, Value, valueOf, valueToCoin') +import Contract.Value (AssetName, CurrencySymbol, Value, valueOf, valueToCoin') import Contract.Wallet (getWalletBalance, getWalletUtxos) import Control.Monad.Error.Class (liftEither, throwError) import Control.Monad.Error.Class as E @@ -139,7 +139,7 @@ data ContractAssertionFailure | UnexpectedMetadataValue Label (ExpectedActual String) | UnexpectedRefScriptInOutput (Labeled TransactionOutputWithRefScript) (ExpectedActual (Maybe ScriptRef)) - | UnexpectedTokenDelta (Maybe (Labeled Address)) TokenName + | UnexpectedTokenDelta (Maybe (Labeled Address)) AssetName (ExpectedActual BigInt) | FailedToGetExpectedValue String | MaxExUnitsExceeded (ExpectedActual ExUnits) @@ -557,7 +557,7 @@ checkLossAtAddress' addr minLoss = checkTokenDeltaAtAddress :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ TokenName) + -> (CurrencySymbol /\ AssetName) -> (Maybe a -> Contract BigInt) -> (BigInt -> BigInt -> Boolean) -> ContractCheck a @@ -584,7 +584,7 @@ checkTokenDeltaAtAddress addr (cs /\ tn) getExpected comp contract = checkTokenGainAtAddress :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ TokenName) + -> (CurrencySymbol /\ AssetName) -> (Maybe a -> Contract BigInt) -> ContractCheck a checkTokenGainAtAddress addr token getMinGain = @@ -595,7 +595,7 @@ checkTokenGainAtAddress addr token getMinGain = checkTokenGainAtAddress' :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ TokenName /\ BigInt) + -> (CurrencySymbol /\ AssetName /\ BigInt) -> ContractCheck a checkTokenGainAtAddress' addr (cs /\ tn /\ minGain) = checkTokenGainAtAddress addr (cs /\ tn) (const $ pure minGain) @@ -605,7 +605,7 @@ checkTokenGainAtAddress' addr (cs /\ tn /\ minGain) = checkTokenLossAtAddress :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ TokenName) + -> (CurrencySymbol /\ AssetName) -> (Maybe a -> Contract BigInt) -> ContractCheck a checkTokenLossAtAddress addr token getMinLoss = @@ -616,7 +616,7 @@ checkTokenLossAtAddress addr token getMinLoss = checkTokenLossAtAddress' :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ TokenName /\ BigInt) + -> (CurrencySymbol /\ AssetName /\ BigInt) -> ContractCheck a checkTokenLossAtAddress' addr (cs /\ tn /\ minLoss) = checkTokenLossAtAddress addr (cs /\ tn) (const $ pure minLoss) @@ -703,7 +703,7 @@ checkLossInWallet' minLoss = checkTokenDeltaInWallet :: forall (a :: Type) - . (CurrencySymbol /\ TokenName) + . (CurrencySymbol /\ AssetName) -> (Maybe a -> Contract BigInt) -> (BigInt -> BigInt -> Boolean) -> ContractCheck a @@ -729,7 +729,7 @@ checkTokenDeltaInWallet (cs /\ tn) getExpected comp contract = -- | by calling the contract. checkTokenGainInWallet :: forall (a :: Type) - . (CurrencySymbol /\ TokenName) + . (CurrencySymbol /\ AssetName) -> (Maybe a -> Contract BigInt) -> ContractCheck a checkTokenGainInWallet token getMinGain = @@ -739,7 +739,7 @@ checkTokenGainInWallet token getMinGain = -- | by calling the contract. checkTokenGainInWallet' :: forall (a :: Type) - . (CurrencySymbol /\ TokenName /\ BigInt) + . (CurrencySymbol /\ AssetName /\ BigInt) -> ContractCheck a checkTokenGainInWallet' (cs /\ tn /\ minGain) = checkTokenGainInWallet (cs /\ tn) (const $ pure minGain) @@ -748,7 +748,7 @@ checkTokenGainInWallet' (cs /\ tn /\ minGain) = -- | by calling the contract. checkTokenLossInWallet :: forall (a :: Type) - . (CurrencySymbol /\ TokenName) + . (CurrencySymbol /\ AssetName) -> (Maybe a -> Contract BigInt) -> ContractCheck a checkTokenLossInWallet token getMinLoss = @@ -758,7 +758,7 @@ checkTokenLossInWallet token getMinLoss = -- | by calling the contract. checkTokenLossInWallet' :: forall (a :: Type) - . (CurrencySymbol /\ TokenName /\ BigInt) + . (CurrencySymbol /\ AssetName /\ BigInt) -> ContractCheck a checkTokenLossInWallet' (cs /\ tn /\ minLoss) = checkTokenLossInWallet (cs /\ tn) (const $ pure minLoss) diff --git a/src/Contract/TextEnvelope.purs b/src/Contract/TextEnvelope.purs index 6ba9e01fc..f8bca24eb 100644 --- a/src/Contract/TextEnvelope.purs +++ b/src/Contract/TextEnvelope.purs @@ -12,6 +12,5 @@ import Ctl.Internal.Cardano.TextEnvelope , Other ) , decodeTextEnvelope - , plutusScriptV1FromEnvelope - , plutusScriptV2FromEnvelope + , plutusScriptFromEnvelope ) as X diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index 6064192d1..2bd546c96 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -9,6 +9,7 @@ module Contract.Utxos import Prelude +import Cardano.Types.TransactionInput (TransactionInput) import Contract.Log (logWarn') import Contract.Monad (Contract, liftContractM, liftedE) import Contract.Prelude (for) @@ -23,7 +24,6 @@ import Ctl.Internal.Plutus.Conversion import Ctl.Internal.Plutus.Types.Address (class PlutusAddress, getAddress) import Ctl.Internal.Plutus.Types.Transaction (TransactionOutput, UtxoMap) import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) as X -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Maybe (Maybe) import Data.Set (member) as Set import Effect.Aff.Class (liftAff) diff --git a/src/Contract/Value.purs b/src/Contract/Value.purs index 0c9fb2cb7..1f187a966 100644 --- a/src/Contract/Value.purs +++ b/src/Contract/Value.purs @@ -1,11 +1,14 @@ -- | A module that defines tokens in Cardano and helpers. module Contract.Value ( module CurrencySymbol - , module Scripts - , module TokenName + , module AssetName , module Value ) where +import Cardano.Types.AssetName + ( AssetName + , mkAssetName + ) as AssetName import Ctl.Internal.Plutus.Types.CurrencySymbol ( CurrencySymbol , adaSymbol @@ -19,7 +22,7 @@ import Ctl.Internal.Plutus.Types.Value ( Coin(Coin) , Value , coinToValue - , flattenNonAdaAssets + , flattenMultiAssets , flattenValue , geq , getLovelace @@ -41,11 +44,3 @@ import Ctl.Internal.Plutus.Types.Value , valueToCoin , valueToCoin' ) as Value -import Ctl.Internal.Scripts (scriptCurrencySymbol) as Scripts -import Ctl.Internal.Types.TokenName - ( TokenName - , adaToken - , getTokenName - , mkTokenName - , mkTokenNames - ) as TokenName diff --git a/src/Internal.js b/src/Internal.js new file mode 100644 index 000000000..c7b01788c --- /dev/null +++ b/src/Internal.js @@ -0,0 +1,57 @@ +import * as csl from "@mlabs-haskell/cardano-serialization-lib-gc"; + +export const _toBytes = x => x.to_bytes(); +export const _fromBytes = key => nothing => just => bytes => { + try { + return just(csl[key].from_bytes(bytes)); + } catch (_) { + return nothing; + } +}; + +export const _packListContainer = containerClass => elems => { + const container = csl[containerClass].new(); + for (let elem of elems) { + container.add(elem); + } + return container; +}; + +export const _unpackListContainer = container => { + const res = []; + const len = container.len(); + for (let i = 0; i < len; i++) { + res.push(container.get(i)); + } + return res; +}; + +export const _packMapContainer = containerClass => elems => { + const container = csl[containerClass].new(); + for (let elem of elems) { + container.insert(elem.key, elem.value); + } + console.log(container.to_json()); + return container; +}; + +export const _unpackMapContainer = container => { + const keys = _unpackListContainer(container.keys()); + console.log("keys", keys); + const res = []; + for (let key of keys) { + res.push({ key, value: container.get(key) }); + } + console.log("unpack", res); + return res; +}; + +export const _cslFromJson = className => nothing => just => json => { + try { + return just(csl[className].from_json(json)); + } catch (e) { + return nothing; + } +}; + +export const _cslToJson = x => x.to_json(); diff --git a/src/Internal.purs b/src/Internal.purs new file mode 100644 index 000000000..b77395113 --- /dev/null +++ b/src/Internal.purs @@ -0,0 +1,186 @@ +module Cardano.Serialization.Lib.Internal where + +import Prelude + +import Aeson (Aeson, decodeAeson, encodeAeson, jsonToAeson, stringifyAeson) +import Data.Argonaut + ( Json + , JsonDecodeError(TypeMismatch) + , jsonParser + , stringify + ) +import Data.Bifunctor (lmap) +import Data.ByteArray (ByteArray) +import Data.Either (Either, note) +import Data.Map (Map) +import Data.Map as Map +import Data.Maybe (Maybe(Nothing, Just)) +import Data.Profunctor.Strong ((***)) +import Data.Tuple (Tuple(Tuple)) +import Data.Tuple.Nested (type (/\), (/\)) +import Type.Proxy (Proxy(Proxy)) + +-- all types + +class IsCsl (a :: Type) where + className :: Proxy a -> String + +-- byte-representable types + +class IsCsl a <= IsBytes (a :: Type) + +toBytes :: forall a. IsCsl a => IsBytes a => a -> ByteArray +toBytes = _toBytes + +fromBytes :: forall a. IsCsl a => IsBytes a => ByteArray -> Maybe a +fromBytes = _fromBytes (className (Proxy :: Proxy a)) Nothing Just + +foreign import _toBytes :: forall a. a -> ByteArray + +foreign import _fromBytes + :: forall b + . String + -> (forall a. Maybe a) + -> (forall a. a -> Maybe a) + -> ByteArray + -> Maybe b + +-- json + +class IsCsl a <= IsJson (a :: Type) + +-- containers + +class IsListContainer (c :: Type) (e :: Type) | c -> e + +packListContainer :: forall c e. IsCsl c => IsListContainer c e => Array e -> c +packListContainer = _packListContainer (className (Proxy :: Proxy c)) + +unpackListContainer :: forall c e. IsListContainer c e => c -> Array e +unpackListContainer = _unpackListContainer + +foreign import _packListContainer :: forall c e. String -> Array e -> c +foreign import _unpackListContainer :: forall c e. c -> Array e + +class IsMapContainer (c :: Type) (k :: Type) (v :: Type) | c -> k, c -> v + +packMapContainer + :: forall c k v + . IsMapContainer c k v + => IsCsl c + => Array (k /\ v) + -> c +packMapContainer = map toKeyValues >>> _packMapContainer + (className (Proxy :: Proxy c)) + where + toKeyValues (Tuple key value) = { key, value } + +packMapContainerFromMap + :: forall c k v + . IsMapContainer c k v + => IsCsl c + => IsCsl k + => IsCsl v + => Map k v + -> c +packMapContainerFromMap = packMapContainer <<< Map.toUnfoldable + +unpackMapContainer + :: forall c k v + . IsMapContainer c k v + => c + -> Array (k /\ v) +unpackMapContainer = _unpackMapContainer >>> map fromKV + where + fromKV { key, value } = key /\ value + +unpackMapContainerToMapWith + :: forall c k v k1 v1 + . IsMapContainer c k v + => Ord k1 + => (k -> k1) + -> (v -> v1) + -> c + -> Map k1 v1 +unpackMapContainerToMapWith mapKey mapValue container = + unpackMapContainer container + # map (mapKey *** mapValue) >>> Map.fromFoldable + +foreign import _packMapContainer + :: forall c k v + . String + -> Array { key :: k, value :: v } + -> c + +foreign import _unpackMapContainer + :: forall c k v + . c + -> Array { key :: k, value :: v } + +-- Aeson + +cslFromAeson + :: forall a + . IsJson a + => Aeson + -> Either JsonDecodeError a +cslFromAeson aeson = + (lmap (const $ TypeMismatch "JSON") $ jsonParser $ stringifyAeson aeson) + >>= cslFromJson >>> note (TypeMismatch $ className (Proxy :: Proxy a)) + +cslToAeson + :: forall a + . IsJson a + => a + -> Aeson +cslToAeson = _cslToJson >>> jsonToAeson + +cslToAesonViaBytes + :: forall a + . IsBytes a + => a + -> Aeson +cslToAesonViaBytes = toBytes >>> encodeAeson + +cslFromAesonViaBytes + :: forall a + . IsBytes a + => Aeson + -> Either JsonDecodeError a +cslFromAesonViaBytes aeson = do + bytes <- decodeAeson aeson + note (TypeMismatch $ className (Proxy :: Proxy a)) $ fromBytes bytes + +-- Show + +showViaBytes + :: forall a + . IsBytes a + => a + -> String +showViaBytes a = "(unsafePartial $ fromJust $ fromBytes " <> show (toBytes a) <> + ")" + +showViaJson + :: forall a + . IsJson a + => a + -> String +showViaJson a = "(unsafePartial $ fromJust $ cslFromJson $ jsonParser " + <> show (stringify (_cslToJson a)) + <> ")" + +--- Json + +cslFromJson :: forall a. IsCsl a => IsJson a => Json -> Maybe a +cslFromJson = _cslFromJson (className (Proxy :: Proxy a)) Nothing Just + +foreign import _cslFromJson + :: forall b + . String + -> (forall a. Maybe a) + -> (forall a. a -> Maybe a) + -> Json + -> Maybe b + +foreign import _cslToJson :: forall a. a -> Json diff --git a/src/Internal/Address.purs b/src/Internal/Address.purs deleted file mode 100644 index 746c8b23f..000000000 --- a/src/Internal/Address.purs +++ /dev/null @@ -1,75 +0,0 @@ -module Ctl.Internal.Address - ( addressToOgmiosAddress - , addressPaymentValidatorHash - , addressStakeValidatorHash - , ogmiosAddressToAddress - ) where - -import Prelude - -import Control.Alt ((<|>)) -import Ctl.Internal.QueryM.Ogmios as Ogmios -import Ctl.Internal.Serialization.Address - ( Address - , addressBech32 - , addressFromBech32 - , baseAddressDelegationCred - , baseAddressFromAddress - , baseAddressPaymentCred - , enterpriseAddressFromAddress - , enterpriseAddressPaymentCred - , stakeCredentialToScriptHash - ) -import Ctl.Internal.Serialization.Hash (ScriptHash) -import Ctl.Internal.Types.Scripts - ( StakeValidatorHash(StakeValidatorHash) - , ValidatorHash(ValidatorHash) - ) -import Data.Maybe (Maybe) - --- | A module for address related helpers - --------------------------------------------------------------------------------- --- Conversion between various address types --------------------------------------------------------------------------------- --- JsonRpc2.Address is a bech32 string, so wrap to Transaction.Types.Bech32 --- | Converts an `JsonRpc2.Address` (bech32string) to internal `Address` -ogmiosAddressToAddress :: Ogmios.OgmiosAddress -> Maybe Address -ogmiosAddressToAddress = addressFromBech32 - --- | Converts an (internal) `Address` to `JsonRpc2.Address` (bech32string) -addressToOgmiosAddress :: Address -> Ogmios.OgmiosAddress -addressToOgmiosAddress = addressBech32 - --------------------------------------------------------------------------------- --- `Address` to `ValidatorHash` --------------------------------------------------------------------------------- - --- | Get the `ValidatorHash` of an address (base or enterprise). --- | The value is extracted from the payment component. -addressPaymentValidatorHash :: Address -> Maybe ValidatorHash -addressPaymentValidatorHash = map ValidatorHash <<< addressPaymentScriptHash - -addressPaymentScriptHash :: Address -> Maybe ScriptHash -addressPaymentScriptHash addr = - baseAddressPaymentScriptHash addr <|> enterpriseAddressPaymentScriptHash addr - -baseAddressPaymentScriptHash :: Address -> Maybe ScriptHash -baseAddressPaymentScriptHash = - stakeCredentialToScriptHash - <=< pure <<< baseAddressPaymentCred - <=< baseAddressFromAddress - -enterpriseAddressPaymentScriptHash :: Address -> Maybe ScriptHash -enterpriseAddressPaymentScriptHash = - stakeCredentialToScriptHash - <=< pure <<< enterpriseAddressPaymentCred - <=< enterpriseAddressFromAddress - --- | Get the `StakeValidatorHash` of a base address. --- | The value is extracted from the stake component. -addressStakeValidatorHash :: Address -> Maybe StakeValidatorHash -addressStakeValidatorHash = - map StakeValidatorHash <<< stakeCredentialToScriptHash - <=< pure <<< baseAddressDelegationCred - <=< baseAddressFromAddress diff --git a/src/Internal/ApplyArgs.purs b/src/Internal/ApplyArgs.purs index 6c670300a..1137df817 100644 --- a/src/Internal/ApplyArgs.purs +++ b/src/Internal/ApplyArgs.purs @@ -6,12 +6,12 @@ module Ctl.Internal.ApplyArgs import Prelude import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Types.PlutusData (PlutusData(List)) +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.PlutusScript as PlutusScript import Ctl.Internal.Deserialization.WitnessSet as D import Ctl.Internal.Serialization.PlutusData (convertPlutusData) as S -import Ctl.Internal.Serialization.PlutusScript (convertPlutusScript) as S import Ctl.Internal.Serialization.Types as CSL -import Ctl.Internal.Types.PlutusData (PlutusData(List)) -import Ctl.Internal.Types.Scripts (PlutusScript) import Data.Either (Either(Left, Right)) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype) @@ -44,5 +44,5 @@ applyArgs applyArgs script paramsList = left ApplyArgsError do let params = S.convertPlutusData (List paramsList) appliedScript <- apply_params_to_script_either params - (S.convertPlutusScript script) + (PlutusScript.toCsl script) Right $ D.convertPlutusScript appliedScript diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index c9d95b8ba..1f89fbcc8 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -4,6 +4,7 @@ module Ctl.Internal.BalanceTx import Prelude +import Cardano.Types.TransactionInput (TransactionInput) import Contract.Log (logWarn') import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Logger.Class (info) as Logger @@ -99,11 +100,11 @@ import Ctl.Internal.Cardano.Types.Value , Value(Value) , coinToValue , equipartitionValueWithTokenQuantityUpperBound - , getNonAdaAsset + , getMultiAsset , lovelaceValueOf , minus , mkValue - , posNonAdaAsset + , posMultiAsset , pprintValue , valueToCoin' ) @@ -128,7 +129,6 @@ import Ctl.Internal.Types.Scripts ( Language(PlutusV1) , PlutusScript(PlutusScript) ) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty @@ -535,7 +535,7 @@ addLovelacesToTransactionOutput txOutput = do newCoin = Coin $ max (valueToCoin' txOutputValue) txOutputMinAda pure $ wrap txOutputRec - { amount = mkValue newCoin (getNonAdaAsset txOutputValue) } + { amount = mkValue newCoin (getMultiAsset txOutputValue) } setTxChangeOutputs :: Array TransactionOutput -> UnindexedTx -> UnindexedTx @@ -650,7 +650,7 @@ makeChange posValue :: Value -> Value posValue (Value (Coin coin) nonAdaAsset) = - mkValue (Coin $ max coin zero) (posNonAdaAsset nonAdaAsset) + mkValue (Coin $ max coin zero) (posMultiAsset nonAdaAsset) -- | Constructs change outputs for an asset. -- | diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index 4f49fc339..1b41b9497 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -21,6 +21,14 @@ module Ctl.Internal.BalanceTx.CoinSelection import Prelude +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.Asset (Asset(..)) +import Cardano.Types.AssetName (unAssetName) as AssetName +import Cardano.Types.BigNum (BigNum(..)) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.UtxoMap (UtxoMap) +import Cardano.Types.Value as Value import Control.Monad.Error.Class (class MonadThrow, throwError) import Ctl.Internal.BalanceTx.Error ( Actual(Actual) @@ -30,19 +38,15 @@ import Ctl.Internal.BalanceTx.Error ) , Expected(Expected) ) -import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) import Ctl.Internal.Cardano.Types.Value (AssetClass(AssetClass), Coin, Value) import Ctl.Internal.Cardano.Types.Value ( getAssetQuantity - , getCurrencySymbol , leq , valueAssets , valueToCoin - , valueToCoin' ) as Value import Ctl.Internal.CoinSelection.UtxoIndex - ( Asset(Asset, AssetLovelace) - , SelectionFilter(SelectAnyWith, SelectPairWith, SelectSingleton) + ( SelectionFilter(SelectAnyWith, SelectPairWith, SelectSingleton) , TxUnspentOutput , UtxoIndex , emptyUtxoIndex @@ -51,10 +55,10 @@ import Ctl.Internal.CoinSelection.UtxoIndex , utxoIndexPartition , utxoIndexUniverse ) +import Ctl.Internal.Helpers (notImplemented) import Ctl.Internal.Plutus.Conversion (toPlutusValue) -import Ctl.Internal.Types.TokenName (getTokenName) as TokenName -import Ctl.Internal.Types.Transaction (TransactionInput) -import Data.Array (snoc, uncons) as Array +import Data.Array (foldr) +import Data.Array (fromFoldable, snoc, uncons) as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (cons', fromArray, singleton, uncons) as NEArray import Data.ByteArray (byteArrayToHex) @@ -67,7 +71,7 @@ import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) import Data.Lens.Setter (over) import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), maybe, maybe') +import Data.Maybe (Maybe(..), isNothing, maybe, maybe') import Data.Newtype (class Newtype, unwrap, wrap) import Data.Set (Set) import Data.Set (fromFoldable) as Set @@ -138,21 +142,21 @@ performMultiAssetSelection strategy utxoIndex requiredValue = balanceInsufficientError :: BalanceTxError balanceInsufficientError = BalanceInsufficientError - (Expected $ toPlutusValue requiredValue) - (Actual $ toPlutusValue availableValue) + (Expected requiredValue) + (Actual availableValue) availableValue :: Value - availableValue = balance (utxoIndexUniverse utxoIndex) + availableValue = notImplemented -- balance (utxoIndexUniverse utxoIndex) selectors :: Array (SelectionState -> m (Maybe SelectionState)) selectors = map assetSelector assets `Array.snoc` coinSelector where - assets :: Array (AssetClass /\ BigInt) + assets :: Array (AssetClass /\ BigNum) assets = Value.valueAssets requiredValue assetSelector - :: AssetClass /\ BigInt -> SelectionState -> m (Maybe SelectionState) + :: AssetClass /\ BigNum -> SelectionState -> m (Maybe SelectionState) assetSelector = runSelectionStep <<< assetSelectionLens strategy coinSelector :: SelectionState -> m (Maybe SelectionState) @@ -213,30 +217,32 @@ selectUtxo utxo@(oref /\ out) = <<< over _leftoverUtxos (utxoIndexDeleteEntry utxo) -- | Returns the balance of the given utxo set. -balance :: UtxoMap -> Value -balance = Foldable.foldMap (_.amount <<< unwrap) +balance :: UtxoMap -> Maybe Value +balance = Array.fromFoldable >>> map (unwrap >>> _.amount) >>> foldr + (\bn mbn -> mbn >>= Value.add bn) + (Just Value.zero) -- | Returns the balance of selected utxos. -- | -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/Primitive/Types/UTxOSelection.hs#L375 -selectedBalance :: SelectionState -> Value +selectedBalance :: SelectionState -> Maybe Value selectedBalance = balance <<< _.selectedUtxos <<< unwrap -- | Returns the quantity of the given asset in the selected `Value`. -- | -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L2169 -selectedAssetQuantity :: AssetClass -> SelectionState -> BigInt +selectedAssetQuantity :: AssetClass -> SelectionState -> Maybe BigNum selectedAssetQuantity assetClass = - Value.getAssetQuantity assetClass <<< selectedBalance + map (Value.getAssetQuantity assetClass) <<< selectedBalance -- | Returns the selected amount of Ada. -- | -- | Taken from cardano-wallet: -- |https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L2175 -selectedCoinQuantity :: SelectionState -> BigInt -selectedCoinQuantity = Value.valueToCoin' <<< selectedBalance +selectedCoinQuantity :: SelectionState -> Maybe BigNum +selectedCoinQuantity = map (unwrap <<< Value.getCoin) <<< selectedBalance -- | Returns the output references of the selected utxos. selectedInputs :: SelectionState -> Set TransactionInput @@ -250,8 +256,8 @@ selectedInputs = Set.fromFoldable <<< Map.keys <<< view _selectedUtxos -- | https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1254 type SelectionLens (m :: Type -> Type) = { assetDisplayString :: String - , currentQuantity :: SelectionState -> BigInt - , requiredQuantity :: BigInt + , currentQuantity :: SelectionState -> Maybe BigNum + , requiredQuantity :: BigNum , selectQuantityCover :: SelectionState -> m (Maybe SelectionState) , selectQuantityImprove :: SelectionState -> m (Maybe SelectionState) , selectionStrategy :: SelectionStrategy @@ -263,7 +269,7 @@ assetSelectionLens :: forall (m :: Type -> Type) . MonadEffect m => SelectionStrategy - -> AssetClass /\ BigInt + -> AssetClass /\ BigNum -> SelectionLens m assetSelectionLens selectionStrategy (assetClass /\ requiredQuantity) = { assetDisplayString: @@ -271,10 +277,10 @@ assetSelectionLens selectionStrategy (assetClass /\ requiredQuantity) = , currentQuantity: selectedAssetQuantity assetClass , requiredQuantity - , selectQuantityCover: - selectQuantityOf (Asset assetClass) SelectionPriorityCover - , selectQuantityImprove: - selectQuantityOf (Asset assetClass) SelectionPriorityImprove + , selectQuantityCover: notImplemented + -- selectQuantityOf (Asset assetClass) SelectionPriorityCover + , selectQuantityImprove: notImplemented + -- selectQuantityOf (Asset assetClass) SelectionPriorityImprove , selectionStrategy } @@ -291,9 +297,9 @@ coinSelectionLens selectionStrategy coin = , currentQuantity: selectedCoinQuantity , requiredQuantity: unwrap coin , selectQuantityCover: - selectQuantityOf AssetLovelace SelectionPriorityCover + selectQuantityOf AdaAsset SelectionPriorityCover , selectQuantityImprove: - selectQuantityOf AssetLovelace SelectionPriorityImprove + selectQuantityOf AdaAsset SelectionPriorityImprove , selectionStrategy } @@ -349,7 +355,8 @@ runSelectionStep -> SelectionState -> m (Maybe SelectionState) runSelectionStep lens state - | lens.currentQuantity state < lens.requiredQuantity = + | isNothing (lens.currentQuantity state) = pure Nothing + | lens.currentQuantity state < Just lens.requiredQuantity = let balanceInsufficientError :: BalanceTxError balanceInsufficientError = @@ -369,12 +376,11 @@ runSelectionStep lens state | distanceFromTarget state' < distanceFromTarget state = Just state' | otherwise = Nothing - distanceFromTarget :: SelectionState -> BigInt - distanceFromTarget = - bigIntAbs <<< sub targetQuantity <<< lens.currentQuantity - - bigIntAbs :: BigInt -> BigInt - bigIntAbs x = if x < zero then negate x else x + distanceFromTarget :: SelectionState -> Maybe BigNum + distanceFromTarget state = do + cq <- lens.currentQuantity state + tc <- targetQuantity + BigNum.abs <$> BigNum.sub tc cq targetMultiplier :: Int targetMultiplier = @@ -382,9 +388,9 @@ runSelectionStep lens state SelectionStrategyMinimal -> 1 SelectionStrategyOptimal -> 2 - targetQuantity :: BigInt + targetQuantity :: Maybe BigNum targetQuantity = - lens.requiredQuantity * (BigInt.fromInt targetMultiplier) + BigNum.mul lens.requiredQuantity (BigNum.fromInt targetMultiplier) -------------------------------------------------------------------------------- -- Round-robin processing @@ -462,18 +468,20 @@ selectRandomWithPriority utxoIndex filters = -- Helpers -------------------------------------------------------------------------------- -showAssetClassWithQuantity :: AssetClass -> BigInt -> String +showAssetClassWithQuantity :: AssetClass -> BigNum -> String showAssetClassWithQuantity (AssetClass cs tn) quantity = - "(Asset (" <> displayCurrencySymbol <> displayTokenName <> displayQuantity + "(Asset (" <> displayCurrencySymbol <> "," <> displayAssetName <> ", " + <> displayQuantity + <> "))" where displayCurrencySymbol :: String displayCurrencySymbol = - "cs: " <> byteArrayToHex (Value.getCurrencySymbol cs) <> ", " + "cs: " <> byteArrayToHex (unwrap $ encodeCbor cs) - displayTokenName :: String - displayTokenName = - "tn: " <> byteArrayToHex (TokenName.getTokenName tn) <> ", " + displayAssetName :: String + displayAssetName = + "tn: " <> byteArrayToHex (AssetName.unAssetName tn) displayQuantity :: String displayQuantity = - "quantity: " <> BigInt.toString quantity <> "))" + "quantity: " <> BigNum.toString quantity diff --git a/src/Internal/BalanceTx/Collateral.purs b/src/Internal/BalanceTx/Collateral.purs index a6dc1a8f2..b2a1005e9 100644 --- a/src/Internal/BalanceTx/Collateral.purs +++ b/src/Internal/BalanceTx/Collateral.purs @@ -6,6 +6,7 @@ module Ctl.Internal.BalanceTx.Collateral import Prelude +import Cardano.Types.BigNum (maxValue, toBigInt) as BigNum import Control.Monad.Except.Trans (ExceptT(ExceptT), except) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) as X @@ -25,10 +26,9 @@ import Ctl.Internal.Cardano.Types.Transaction import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput ) -import Ctl.Internal.Cardano.Types.Value (Coin, NonAdaAsset) -import Ctl.Internal.Cardano.Types.Value (getNonAdaAsset, mkValue, valueToCoin') as Value +import Ctl.Internal.Cardano.Types.Value (Coin, MultiAsset) +import Ctl.Internal.Cardano.Types.Value (getMultiAsset, mkValue, valueToCoin') as Value import Ctl.Internal.Serialization.Address (Address) -import Ctl.Internal.Types.BigNum (maxValue, toBigInt) as BigNum import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum)) import Data.Either (Either(Left, Right), note) import Data.Foldable (foldMap, foldl) @@ -64,27 +64,27 @@ addTxCollateralReturn collateral transaction ownAddress = collAdaValue :: BigInt collAdaValue = foldl adaValue' zero collateral - collNonAdaAsset :: NonAdaAsset - collNonAdaAsset = foldMap nonAdaAsset collateral + collMultiAsset :: MultiAsset + collMultiAsset = foldMap nonAdaAsset collateral in - case collAdaValue <= minRequiredCollateral && collNonAdaAsset == mempty of + case collAdaValue <= minRequiredCollateral && collMultiAsset == mempty of true -> pure transaction false -> - setTxCollateralReturn collAdaValue collNonAdaAsset + setTxCollateralReturn collAdaValue collMultiAsset where setTxCollateralReturn :: BigInt - -> NonAdaAsset + -> MultiAsset -> BalanceTxM Transaction - setTxCollateralReturn collAdaValue collNonAdaAsset = do + setTxCollateralReturn collAdaValue collMultiAsset = do let maxBigNumAdaValue :: Coin maxBigNumAdaValue = wrap (BigNum.toBigInt BigNum.maxValue) collReturnOutputRec = { address: ownAddress - , amount: Value.mkValue maxBigNumAdaValue collNonAdaAsset + , amount: Value.mkValue maxBigNumAdaValue collMultiAsset , datum: NoOutputDatum , scriptRef: Nothing } @@ -111,7 +111,7 @@ addTxCollateralReturn collateral transaction ownAddress = collReturnOutput :: TransactionOutput collReturnOutput = wrap $ collReturnOutputRec - { amount = Value.mkValue (wrap collReturnAda) collNonAdaAsset } + { amount = Value.mkValue (wrap collReturnAda) collMultiAsset } totalCollateral :: BigInt totalCollateral = collAdaValue - collReturnAda @@ -136,6 +136,6 @@ adaValue = adaValue' :: BigInt -> TransactionUnspentOutput -> BigInt adaValue' init = add init <<< adaValue -nonAdaAsset :: TransactionUnspentOutput -> NonAdaAsset +nonAdaAsset :: TransactionUnspentOutput -> MultiAsset nonAdaAsset = - Value.getNonAdaAsset <<< _.amount <<< unwrap <<< _.output <<< unwrap + Value.getMultiAsset <<< _.amount <<< unwrap <<< _.output <<< unwrap diff --git a/src/Internal/BalanceTx/Collateral/Select.purs b/src/Internal/BalanceTx/Collateral/Select.purs index 992471d0a..1e3e94e11 100644 --- a/src/Internal/BalanceTx/Collateral/Select.purs +++ b/src/Internal/BalanceTx/Collateral/Select.purs @@ -6,25 +6,30 @@ module Ctl.Internal.BalanceTx.Collateral.Select import Prelude -import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithNonAdaAssets) +import Cardano.Types.BigNum (BigNum(..)) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Coin (Coin(..)) +import Cardano.Types.Coin as Coin +import Cardano.Types.MultiAsset (MultiAsset(..)) +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionOutput (TransactionOutput(..)) +import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput(..)) +import Cardano.Types.UtxoMap (UtxoMap) +import Cardano.Types.Value as Value +import Control.Bind (bindFlipped) +import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithMultiAssets) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) -import Ctl.Internal.Cardano.Types.Transaction - ( TransactionOutput - , UtxoMap - ) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) -import Ctl.Internal.Cardano.Types.Value (NonAdaAsset) -import Ctl.Internal.Cardano.Types.Value (getNonAdaAsset, valueToCoin') as Value +import Ctl.Internal.Helpers (notImplemented) import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) -import Ctl.Internal.Types.Transaction (TransactionInput) +import Data.Array (foldr) +import Data.Array as Array import Data.Foldable (foldMap, foldl) import Data.Function (on) import Data.List (List(Nil, Cons)) import Data.List as List import Data.Map (toUnfoldable) as Map -import Data.Maybe (Maybe) +import Data.Maybe (Maybe(..), fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Ordering (invert) as Ordering import Data.Traversable (traverse) @@ -34,9 +39,10 @@ import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) import JS.BigInt (BigInt) import JS.BigInt (fromInt) as BigInt +import Safe.Coerce (coerce) -minRequiredCollateral :: BigInt -minRequiredCollateral = BigInt.fromInt 5_000_000 +minRequiredCollateral :: BigNum +minRequiredCollateral = BigNum.fromInt 5_000_000 -- | A constant that limits the number of candidate utxos for collateral -- | selection, thus maintaining acceptable time complexity. @@ -48,12 +54,12 @@ maxCandidateUtxos = 10 -------------------------------------------------------------------------------- collateralReturnMinAdaValue - :: CoinsPerUtxoUnit -> List TransactionUnspentOutput -> Effect (Maybe BigInt) + :: CoinsPerUtxoUnit -> List TransactionUnspentOutput -> Maybe BigNum collateralReturnMinAdaValue coinsPerUtxoUnit = - utxoMinAdaValue coinsPerUtxoUnit <<< fakeOutputWithNonAdaAssets <<< foldMap - nonAdaAsset + utxoMinAdaValue coinsPerUtxoUnit <<< fakeOutputWithMultiAssets <=< + MultiAsset.sum <<< Array.fromFoldable <<< map nonAdaAsset -type ReturnOutMinAdaValue = BigInt +type ReturnOutMinAdaValue = BigNum newtype CollateralCandidate = CollateralCandidate (List TransactionUnspentOutput /\ ReturnOutMinAdaValue) @@ -115,29 +121,34 @@ selectCollateral -> UtxoMap -> Effect (Maybe (List TransactionUnspentOutput)) selectCollateral coinsPerUtxoUnit maxCollateralInputs = - -- Sort candidate utxo combinations in ascending order by utxo min ada value - -- of return output, then select the first utxo combination: - map (map (Tuple.fst <<< unwrap) <<< List.head <<< List.sort) - -- For each candidate utxo combination calculate - -- the min Ada value of the corresponding collateral return output: - <<< map (List.mapMaybe mkCollateralCandidate) - <<< traverse - (\x -> Tuple x <$> collateralReturnMinAdaValue coinsPerUtxoUnit x) - -- Filter out all utxo combinations - -- with total Ada value < `minRequiredCollateral`: - <<< List.filter - (\x -> foldl consumeUtxoAdaValue zero x >= minRequiredCollateral) - -- Get all possible non-empty utxo combinations - -- with the number of utxos <= `maxCollateralInputs`: - <<< combinations maxCollateralInputs - -- Limit the number of candidate utxos for collateral selection to - -- maintain acceptable time complexity: - <<< List.take maxCandidateUtxos - <<< map unwrap + notImplemented + -- -- Sort candidate utxo combinations in ascending order by utxo min ada value + -- -- of return output, then select the first utxo combination: + -- map (map (Tuple.fst <<< unwrap) <<< List.head <<< List.sort) + -- -- For each candidate utxo combination calculate + -- -- the min Ada value of the corresponding collateral return output: + -- <<< map (List.mapMaybe mkCollateralCandidate) + -- <<< map + -- (\x -> Tuple x $ collateralReturnMinAdaValue coinsPerUtxoUnit x) + -- -- Filter out all utxo combinations + -- -- with total Ada value < `minRequiredCollateral`: + -- <<< List.filter + -- (\x -> foldl (map (fromMaybe zero) <<< consumeUtxoAdaValue) zero x >= coerce minRequiredCollateral) + -- -- Get all possible non-empty utxo combinations + -- -- with the number of utxos <= `maxCollateralInputs`: + -- <<< combinations maxCollateralInputs + -- -- Limit the number of candidate utxos for collateral selection to + -- -- maintain acceptable time complexity: + -- <<< List.take maxCandidateUtxos + -- <<< map unwrap -- Sort utxos by ada value in decreasing order: - <<< List.sortBy (\lhs -> Ordering.invert <<< compare lhs) - <<< map (AdaOut <<< asTxUnspentOutput) - <<< Map.toUnfoldable + <<< sortByDecreasingAda + where + sortByDecreasingAda :: UtxoMap -> List AdaOut + sortByDecreasingAda = + List.sortBy (\lhs -> Ordering.invert <<< compare lhs) + <<< map (AdaOut <<< asTxUnspentOutput) + <<< Map.toUnfoldable -------------------------------------------------------------------------------- -- Helpers @@ -158,16 +169,16 @@ asTxUnspentOutput :: TransactionInput /\ TransactionOutput -> TransactionUnspentOutput asTxUnspentOutput (input /\ output) = wrap { input, output } -adaValue :: TransactionUnspentOutput -> BigInt +adaValue :: TransactionUnspentOutput -> Coin adaValue = - Value.valueToCoin' <<< _.amount <<< unwrap <<< _.output <<< unwrap + Value.getCoin <<< _.amount <<< unwrap <<< _.output <<< unwrap -consumeUtxoAdaValue :: BigInt -> TransactionUnspentOutput -> BigInt -consumeUtxoAdaValue acc = add acc <<< adaValue +consumeUtxoAdaValue :: Coin -> TransactionUnspentOutput -> Maybe Coin +consumeUtxoAdaValue acc = Coin.add acc <<< adaValue -nonAdaAsset :: TransactionUnspentOutput -> NonAdaAsset +nonAdaAsset :: TransactionUnspentOutput -> MultiAsset nonAdaAsset = - Value.getNonAdaAsset <<< _.amount <<< unwrap <<< _.output <<< unwrap + Value.getMultiAsset <<< _.amount <<< unwrap <<< _.output <<< unwrap -- | Returns a list of all subsequences of the given list. subsequences :: forall (a :: Type). List a -> List (List a) diff --git a/src/Internal/BalanceTx/Constraints.purs b/src/Internal/BalanceTx/Constraints.purs index b6a2c8327..dea9359f2 100644 --- a/src/Internal/BalanceTx/Constraints.purs +++ b/src/Internal/BalanceTx/Constraints.purs @@ -24,21 +24,16 @@ module Ctl.Internal.BalanceTx.Constraints import Prelude +import Cardano.Types.Address (Address) +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.BalanceTx.CoinSelection ( SelectionStrategy(SelectionStrategyOptimal) ) -import Ctl.Internal.Plutus.Conversion - ( fromPlutusAddress - , fromPlutusAddressWithNetworkTag - ) -import Ctl.Internal.Plutus.Types.Address - ( Address - , AddressWithNetworkTag(AddressWithNetworkTag) - ) as Plutus +-- import Ctl.Internal.Plutus.Conversion (fromPlutusAddress, fromPlutusAddressWithNetworkTag) +-- import Ctl.Internal.Plutus.Types.Address (Address, AddressWithNetworkTag(AddressWithNetworkTag)) as Plutus import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) -import Ctl.Internal.Serialization.Address (Address, NetworkId) import Ctl.Internal.Types.OutputDatum (OutputDatum) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (singleton) as Array import Data.Function (applyFlipped) import Data.Lens (Lens') @@ -124,9 +119,9 @@ buildBalanceTxConstraints = applyFlipped defaultConstraints <<< unwrap -- | NOTE: Setting `mustUseUtxosAtAddresses` or `mustUseUtxosAtAddress` -- | does NOT have any effect on which address will be used as a change address. mustSendChangeToAddress - :: Plutus.AddressWithNetworkTag -> BalanceTxConstraintsBuilder + :: Address -> BalanceTxConstraintsBuilder mustSendChangeToAddress = - wrap <<< setJust _changeAddress <<< fromPlutusAddressWithNetworkTag + wrap <<< setJust _changeAddress -- | Tells the balancer to include the datum in each change UTxO. Useful when -- | balancing a transactions for script owned UTxOs. @@ -141,9 +136,9 @@ mustSendChangeWithDatum = -- | NOTE: Setting `mustUseUtxosAtAddresses` or `mustUseUtxosAtAddress` -- | does NOT have any effect on which address will be used as a change address. mustUseUtxosAtAddresses - :: NetworkId -> Array Plutus.Address -> BalanceTxConstraintsBuilder -mustUseUtxosAtAddresses networkId = - wrap <<< setJust _srcAddresses <<< map (fromPlutusAddress networkId) + :: Array Address -> BalanceTxConstraintsBuilder +mustUseUtxosAtAddresses = + wrap <<< setJust _srcAddresses -- | Tells the balancer to use UTxO's at a given address. -- | If this constraint is not set, then the default addresses owned by the @@ -152,9 +147,9 @@ mustUseUtxosAtAddresses networkId = -- | NOTE: Setting `mustUseUtxosAtAddresses` or `mustUseUtxosAtAddress` -- | does NOT have any effect on which address will be used as a change address. mustUseUtxosAtAddress - :: Plutus.AddressWithNetworkTag -> BalanceTxConstraintsBuilder -mustUseUtxosAtAddress (Plutus.AddressWithNetworkTag { address, networkId }) = - mustUseUtxosAtAddresses networkId (Array.singleton address) + :: Address -> BalanceTxConstraintsBuilder +mustUseUtxosAtAddress address = + mustUseUtxosAtAddresses (Array.singleton address) -- | Tells the balancer to split change outputs and equipartition change `Value` -- | between them if the total change `Value` contains token quantities diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index ced8db218..6784a5868 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -24,20 +24,19 @@ module Ctl.Internal.BalanceTx.Error import Prelude +import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionOutput (TransactionOutput) +import Cardano.Types.UtxoMap (UtxoMap, pprintUtxoMap) +import Cardano.Types.Value (Value) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Cardano.Types.Transaction ( Redeemer(Redeemer) , Transaction - , TransactionOutput - , UtxoMap , _redeemers , _witnessSet - , pprintUtxoMap ) import Ctl.Internal.Cardano.Types.Value (pprintValue) import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) -import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) -import Ctl.Internal.Plutus.Types.Value (Value) import Ctl.Internal.QueryM.Ogmios ( RedeemerPointer , ScriptFailure @@ -55,7 +54,6 @@ import Ctl.Internal.QueryM.Ogmios ) as Ogmios import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes, filter, uncons) as Array import Data.Bifunctor (bimap) import Data.Either (Either(Left, Right), either, isLeft) @@ -140,7 +138,7 @@ explainBalanceTxError = case _ of "Could not calculate min ADA for UTxO" where prettyValue :: String -> Value -> String - prettyValue str = fromPlutusValue >>> pprintValue >>> pprintTagSet str + prettyValue str = pprintValue >>> pprintTagSet str newtype Actual = Actual Value diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index c902223a8..f3ed74cf6 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -5,6 +5,7 @@ module Ctl.Internal.BalanceTx.ExUnitsAndMinFee import Prelude +import Cardano.Types.TransactionInput (TransactionInput) import Contract.Numeric.Natural (fromInt') as Natural import Control.Monad.Error.Class (throwError) import Control.Monad.Except.Trans (except) @@ -60,7 +61,6 @@ import Ctl.Internal.TxOutput import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.Natural (toBigInt) as Natural import Ctl.Internal.Types.Scripts (Language, PlutusScript) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (catMaybes) import Data.Array (fromFoldable, notElem) as Array import Data.Bifunctor (bimap) diff --git a/src/Internal/BalanceTx/FakeOutput.purs b/src/Internal/BalanceTx/FakeOutput.purs index 0faad4ec7..bb5e63609 100644 --- a/src/Internal/BalanceTx/FakeOutput.purs +++ b/src/Internal/BalanceTx/FakeOutput.purs @@ -1,16 +1,15 @@ module Ctl.Internal.BalanceTx.FakeOutput ( fakeOutputWithValue - , fakeOutputWithNonAdaAssets + , fakeOutputWithMultiAssets ) where import Prelude -import Ctl.Internal.Cardano.Types.Transaction - ( TransactionOutput(TransactionOutput) - ) -import Ctl.Internal.Cardano.Types.Value (NonAdaAsset, Value, mkValue) -import Ctl.Internal.Serialization.Address (addressFromBech32) as Csl -import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum)) +import Cardano.Types.Address as Address +import Cardano.Types.Coin as Coin +import Cardano.Types.MultiAsset (MultiAsset) +import Cardano.Types.TransactionOutput (TransactionOutput(TransactionOutput)) +import Cardano.Types.Value (Value, mkValue) import Data.Maybe (Maybe(Nothing), fromJust) import Partial.Unsafe (unsafePartial) @@ -19,14 +18,14 @@ fakeOutputWithValue amount = TransactionOutput { -- this fake address is taken from CSL: -- https://github.com/Emurgo/cardano-serialization-lib/blob/a58bfa583297705ffc0fb03923cecef3452a6aee/rust/src/utils.rs#L1146 - address: unsafePartial fromJust $ Csl.addressFromBech32 + address: unsafePartial fromJust $ Address.fromBech32 "addr_test1qpu5vlrf4xkxv2qpwngf6cjhtw542ayty80v8dyr49rf5ewvxwdrt70qlcpe\ \eagscasafhffqsxy36t90ldv06wqrk2qum8x5w" , amount - , datum: NoOutputDatum + , datum: Nothing , scriptRef: Nothing } -fakeOutputWithNonAdaAssets :: NonAdaAsset -> TransactionOutput -fakeOutputWithNonAdaAssets = - fakeOutputWithValue <<< mkValue mempty +fakeOutputWithMultiAssets :: MultiAsset -> TransactionOutput +fakeOutputWithMultiAssets = + fakeOutputWithValue <<< mkValue Coin.zero diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 3308e1db7..8ad7bc2df 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -22,6 +22,8 @@ module Ctl.Internal.BalanceTx.RedeemerIndex import Prelude import Aeson (class EncodeAeson, encodeAeson) +import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.Cardano.Types.Transaction ( Certificate , Redeemer(Redeemer) @@ -30,12 +32,9 @@ import Ctl.Internal.Cardano.Types.Transaction , _redeemers , _witnessSet ) -import Ctl.Internal.Cardano.Types.Value (currencyMPSHash, unwrapNonAdaAsset) -import Ctl.Internal.Types.PlutusData (PlutusData) import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) import Ctl.Internal.Types.RewardAddress (RewardAddress) import Ctl.Internal.Types.Scripts (MintingPolicyHash) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (findIndex) import Data.Either (Either, note) import Data.Foldable (fold) @@ -43,7 +42,7 @@ import Data.Generic.Rep (class Generic) import Data.Lens ((.~)) import Data.Map as Map import Data.Maybe (Maybe(Just), fromMaybe) -import Data.Newtype (class Newtype, unwrap) +import Data.Newtype (class Newtype, unwrap, wrap) import Data.Set as Set import Data.Show.Generic (genericShow) import Data.Traversable (for) @@ -147,14 +146,13 @@ mkRedeemersContext :: Transaction -> RedeemersContext mkRedeemersContext (Transaction { body: TxBody { inputs, mint, withdrawals, certs } }) = { inputs: Set.toUnfoldable inputs - , mintingPolicyHashes: Set.toUnfoldable (Map.keys mintedAssets) <#> - currencyMPSHash + , mintingPolicyHashes: Set.toUnfoldable (Map.keys mintedAssets) <#> wrap , rewardAddresses: Set.toUnfoldable $ Map.keys $ fromMaybe Map.empty withdrawals , certs: fold certs } where - mintedAssets = fromMaybe Map.empty (map unwrapNonAdaAsset $ map unwrap mint) + mintedAssets = fromMaybe Map.empty $ map (unwrap <<< unwrap) mint indexRedeemers :: RedeemersContext diff --git a/src/Internal/BalanceTx/UtxoMinAda.purs b/src/Internal/BalanceTx/UtxoMinAda.purs index e1d37dba3..c65de18f6 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.purs +++ b/src/Internal/BalanceTx/UtxoMinAda.purs @@ -5,27 +5,19 @@ module Ctl.Internal.BalanceTx.UtxoMinAda import Prelude -import Control.Monad.Error.Class (liftMaybe) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum (maxValue) as BigNum +import Cardano.Types.TransactionOutput (TransactionOutput) +import Cardano.Types.TransactionOutput as TransactionOutput import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithValue) -import Ctl.Internal.Cardano.Types.Transaction (TransactionOutput) import Ctl.Internal.Cardano.Types.Value (Coin(Coin), lovelaceValueOf) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Serialization (convertTxOutput) import Ctl.Internal.Serialization.Types (DataCost) import Ctl.Internal.Serialization.Types (TransactionOutput) as Csl -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum - ( fromBigInt - , maxValue - , toBigInt - ) as BigNum import Ctl.Internal.Types.ProtocolParameters ( CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte) ) import Data.Maybe (Maybe, fromJust) -import Effect (Effect) -import Effect.Exception (error) -import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) foreign import minAdaForOutput @@ -36,22 +28,20 @@ foreign import newCoinsPerWord :: BigNum -> DataCost foreign import newCoinsPerByte :: BigNum -> DataCost utxoMinAdaValue - :: CoinsPerUtxoUnit -> TransactionOutput -> Effect (Maybe BigInt) -utxoMinAdaValue coinsPerUtxoUnit txOutput = do - cslTxOutput <- convertTxOutput txOutput - dataCost <- case coinsPerUtxoUnit of - CoinsPerUtxoByte (Coin n) -> do - newCoinsPerByte <$> liftMaybe (error "Failed to convert CoinsPerUtxoByte") - (BigNum.fromBigInt n) - CoinsPerUtxoWord (Coin n) -> do - newCoinsPerWord <$> liftMaybe (error "Failed to convert CoinsPerUtxoWord") - (BigNum.fromBigInt n) - pure $ minAdaForOutput maybeFfiHelper cslTxOutput dataCost - -- useful spy: BigNum.toBigInt >>= (pure <<< spy "utxoMinAdaValue") - <#> BigNum.toBigInt - -adaOnlyUtxoMinAdaValue :: CoinsPerUtxoUnit -> Effect BigInt + :: CoinsPerUtxoUnit -> TransactionOutput -> Maybe BigNum +utxoMinAdaValue coinsPerUtxoUnit txOutput = + let + cslTxOutput = TransactionOutput.toCsl txOutput + dataCost = case coinsPerUtxoUnit of + CoinsPerUtxoByte (Coin n) -> newCoinsPerByte n + CoinsPerUtxoWord (Coin n) -> newCoinsPerWord n + in + minAdaForOutput maybeFfiHelper cslTxOutput dataCost + +-- useful spy: BigNum.toBigInt >>= (pure <<< spy "utxoMinAdaValue") + +adaOnlyUtxoMinAdaValue :: CoinsPerUtxoUnit -> BigNum adaOnlyUtxoMinAdaValue coinsPerUtxoUnit = - map (unsafePartial fromJust) <<< utxoMinAdaValue coinsPerUtxoUnit <<< + unsafePartial fromJust <<< utxoMinAdaValue coinsPerUtxoUnit <<< fakeOutputWithValue - $ lovelaceValueOf (BigNum.toBigInt BigNum.maxValue) + $ lovelaceValueOf BigNum.maxValue diff --git a/src/Internal/Cardano/TextEnvelope.purs b/src/Internal/Cardano/TextEnvelope.purs index 151eaeeaa..2842e802c 100644 --- a/src/Internal/Cardano/TextEnvelope.purs +++ b/src/Internal/Cardano/TextEnvelope.purs @@ -8,27 +8,21 @@ module Ctl.Internal.Cardano.TextEnvelope , Other ) , decodeTextEnvelope - , plutusScriptV1FromEnvelope - , plutusScriptV2FromEnvelope + , plutusScriptFromEnvelope ) where import Prelude -import Aeson - ( class DecodeAeson - , decodeAeson - , parseJsonStringToAeson - ) +import Aeson (class DecodeAeson, decodeAeson, parseJsonStringToAeson) +import Cardano.Types.Language (Language(..)) +import Cardano.Types.PlutusScript (PlutusScript(..)) +import Control.Alt ((<|>)) import Ctl.Internal.Types.Cbor (toByteArray) -import Ctl.Internal.Types.Scripts - ( PlutusScript - , plutusV1Script - , plutusV2Script - ) import Data.ByteArray (ByteArray, hexToByteArray) import Data.Either (hush) import Data.Maybe (Maybe(Nothing)) import Data.Newtype (class Newtype, wrap) +import Data.Tuple.Nested ((/\)) data TextEnvelopeType = PlutusScriptV1 @@ -89,21 +83,14 @@ decodeTextEnvelope json = do pure $ wrap { type_, description, bytes: ba } plutusScriptFromEnvelope - :: TextEnvelopeType - -> (ByteArray -> PlutusScript) - -> TextEnvelope - -> Maybe PlutusScript -plutusScriptFromEnvelope type_ bytesToScript (TextEnvelope envelope) = do - -- Check TextEnvelope type match to desirable - unless (envelope.type_ == type_) Nothing - pure $ bytesToScript envelope.bytes - -plutusScriptV1FromEnvelope :: TextEnvelope -> Maybe PlutusScript -plutusScriptV1FromEnvelope envelope = do - plutusScriptFromEnvelope PlutusScriptV1 plutusV1Script envelope +plutusScriptFromEnvelope (TextEnvelope envelope) = + plutusScriptV1FromEnvelope <|> plutusScriptV2FromEnvelope + where + plutusScriptV1FromEnvelope = do + unless (envelope.type_ == PlutusScriptV1) Nothing + pure $ PlutusScript $ envelope.bytes /\ PlutusV1 -plutusScriptV2FromEnvelope - :: TextEnvelope -> Maybe PlutusScript -plutusScriptV2FromEnvelope envelope = - plutusScriptFromEnvelope PlutusScriptV2 plutusV2Script envelope + plutusScriptV2FromEnvelope = do + unless (envelope.type_ == PlutusScriptV2) Nothing + pure $ PlutusScript $ envelope.bytes /\ PlutusV2 diff --git a/src/Internal/Cardano/Types/NativeScript.purs b/src/Internal/Cardano/Types/NativeScript.purs index 592208ab7..fee95d066 100644 --- a/src/Internal/Cardano/Types/NativeScript.purs +++ b/src/Internal/Cardano/Types/NativeScript.purs @@ -1,123 +1,5 @@ module Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptPubkey - , ScriptAll - , ScriptAny - , ScriptNOfK - , TimelockStart - , TimelockExpiry - ) - , pprintNativeScript + ( module X ) where -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , getField - , (.:) - ) -import Ctl.Internal.Helpers (contentsProp, encodeTagged', tagProp) -import Ctl.Internal.Metadata.Helpers (errExpectedObject) -import Ctl.Internal.Serialization.Address (Slot) -import Ctl.Internal.Serialization.Hash - ( Ed25519KeyHash - , ed25519KeyHashFromBytes - , ed25519KeyHashToBytes - ) -import Ctl.Internal.Types.BigNum (fromString) -import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.RawBytes (rawBytesToHex) -import Data.Array.NonEmpty (fromFoldable) -import Data.ByteArray (hexToByteArrayUnsafe) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Maybe (fromJust) -import Data.Newtype (unwrap, wrap) -import Data.Show.Generic (genericShow) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck (class Arbitrary) -import Test.QuickCheck.Arbitrary (arbitrary) -import Test.QuickCheck.Gen (Gen, oneOf, resize, sized, suchThat) - -data NativeScript - = ScriptPubkey Ed25519KeyHash - | ScriptAll (Array NativeScript) - | ScriptAny (Array NativeScript) - | ScriptNOfK Int (Array NativeScript) - | TimelockStart Slot -- spend after - | TimelockExpiry Slot -- spend before - -derive instance Eq NativeScript -derive instance Generic NativeScript _ - -instance Show NativeScript where - show x = genericShow x - -instance Arbitrary NativeScript where - arbitrary = oneOf $ unsafePartial $ fromJust $ fromFoldable - [ ScriptPubkey <$> (pure pk) - , ScriptAll <$> sized (\i -> resize (i `div` 2) arbitrary) - , ScriptAny <$> sized (\i -> resize (i `div` 2) arbitrary) - , ScriptNOfK - <$> suchThat (arbitrary :: Gen Int) (_ >= 0) - <*> sized (\i -> resize (i `div` 2) arbitrary) - , TimelockStart <$> map - (wrap <<< (unsafePartial $ fromJust <<< fromString <<< show)) - (suchThat (arbitrary :: Gen Int) (_ > 0)) - , TimelockExpiry <$> map - (wrap <<< (unsafePartial $ fromJust <<< fromString <<< show)) - (suchThat (arbitrary :: Gen Int) (_ > 0)) - ] - where - pk :: Ed25519KeyHash - pk = unsafePartial $ fromJust $ ed25519KeyHashFromBytes $ - hexToByteArrayUnsafe - "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" - -instance DecodeAeson NativeScript where - decodeAeson = caseAesonObject errExpectedObject $ \obj -> do - tag <- obj .: tagProp - let - aesonContents - :: forall (a :: Type). DecodeAeson a => Either JsonDecodeError a - aesonContents = obj .: contentsProp - case tag of - "ScriptPubkey" -> ScriptPubkey <$> aesonContents - "ScriptAll" -> ScriptAll <$> aesonContents - "ScriptAny" -> ScriptAny <$> aesonContents - "TimelockStart" -> TimelockStart <$> aesonContents - "TimelockExpiry" -> TimelockExpiry <$> aesonContents - "ScriptNOfK" -> ScriptNOfK - <$> (flip getField "n" =<< aesonContents) - <*> (flip getField "nativeScripts" =<< aesonContents) - - _ -> Left $ TypeMismatch ("Unknown tag: " <> tag) - -instance EncodeAeson NativeScript where - encodeAeson = case _ of - ScriptPubkey r -> encodeTagged' "ScriptPubkey" r - ScriptAll r -> encodeTagged' "ScriptAll" r - ScriptAny r -> encodeTagged' "ScriptAny" r - ScriptNOfK n nativeScripts -> encodeTagged' "ScriptNOfK" - { n, nativeScripts } - TimelockStart r -> encodeTagged' "TimelockStart" r - TimelockExpiry r -> encodeTagged' "TimelockExpiry" r - -pprintNativeScript :: NativeScript -> TagSet -pprintNativeScript = case _ of - ScriptPubkey kh -> TagSet.fromArray - [ "PubKey" `tag` rawBytesToHex (ed25519KeyHashToBytes kh) ] - ScriptAll scripts -> "All of" `tagSetTag` TagSet.fromArray - (pprintNativeScript <$> scripts) - ScriptAny scripts -> "Any of" `tagSetTag` TagSet.fromArray - (pprintNativeScript <$> scripts) - ScriptNOfK n scripts -> ("At least " <> show n <> " of ") - `tagSetTag` TagSet.fromArray (pprintNativeScript <$> scripts) - TimelockStart slot -> "Timelock start" `tag` BigNum.toString (unwrap slot) - TimelockExpiry slot -> "Timelock expiry" `tag` BigNum.toString (unwrap slot) +import Cardano.Types.NativeScript as X diff --git a/src/Internal/Cardano/Types/ScriptRef.purs b/src/Internal/Cardano/Types/ScriptRef.purs index 31a757f6f..afa82bbd1 100644 --- a/src/Internal/Cardano/Types/ScriptRef.purs +++ b/src/Internal/Cardano/Types/ScriptRef.purs @@ -1,69 +1,5 @@ module Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(NativeScriptRef, PlutusScriptRef) - , scriptRefFromMintingPolicy - , getNativeScript - , getPlutusScript + ( module X ) where -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(UnexpectedValue, TypeMismatch) - , caseAesonObject - , fromString - , toStringifiedNumbersJson - , (.:) - ) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) -import Ctl.Internal.Helpers (encodeTagged') -import Ctl.Internal.Types.Scripts - ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) - , PlutusScript - ) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Show.Generic (genericShow) - -data ScriptRef = NativeScriptRef NativeScript | PlutusScriptRef PlutusScript - -scriptRefFromMintingPolicy :: MintingPolicy -> ScriptRef -scriptRefFromMintingPolicy = case _ of - PlutusMintingPolicy ps -> PlutusScriptRef ps - NativeMintingPolicy ns -> NativeScriptRef ns - -derive instance Eq ScriptRef -derive instance Generic ScriptRef _ - -instance Show ScriptRef where - show = genericShow - -instance EncodeAeson ScriptRef where - encodeAeson = case _ of - NativeScriptRef r -> encodeTagged' "NativeScriptRef" r - PlutusScriptRef r -> encodeTagged' "PlutusScriptRef" r - -instance DecodeAeson ScriptRef where - decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ - \obj -> do - tag <- obj .: "tag" - case tag of - "NativeScriptRef" -> do - nativeScript <- obj .: "contents" - pure $ NativeScriptRef nativeScript - "PlutusScriptRef" -> do - plutusScript <- obj .: "contents" - pure $ PlutusScriptRef plutusScript - tagValue -> do - Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString - tagValue - -getNativeScript :: ScriptRef -> Maybe NativeScript -getNativeScript (NativeScriptRef nativeScript) = Just nativeScript -getNativeScript _ = Nothing - -getPlutusScript :: ScriptRef -> Maybe PlutusScript -getPlutusScript (PlutusScriptRef plutusScript) = Just plutusScript -getPlutusScript _ = Nothing +import Cardano.Types.ScriptRef as X diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index 2ff76efa7..43fd65929 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -13,7 +13,6 @@ module Ctl.Internal.Cardano.Types.Transaction ) , CostModel(CostModel) , Costmdls(Costmdls) - , Ed25519Signature(Ed25519Signature) , mkEd25519Signature , Epoch(Epoch) , ExUnitPrices @@ -34,24 +33,18 @@ module Ctl.Internal.Cardano.Types.Transaction , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) , ProtocolParamUpdate , ProtocolVersion - , PublicKey(PublicKey) - , PrivateKey(PrivateKey) , Redeemer(Redeemer) , Relay(SingleHostAddr, SingleHostName, MultiHostName) , RequiredSigner(RequiredSigner) , ScriptDataHash(ScriptDataHash) , SubCoin , Transaction(Transaction) - , TransactionOutput(TransactionOutput) , PoolRegistrationParams , TransactionWitnessSet(TransactionWitnessSet) , TxBody(TxBody) , URL(URL) , UnitInterval , Update - , UtxoMap - , pprintUtxoMap - , Vkey(Vkey) , Vkeywitness(Vkeywitness) , _auxiliaryData , _auxiliaryDataHash @@ -93,6 +86,7 @@ import Aeson , encodeAeson , finiteNumber ) +import Cardano.Plutus.Types.PubKeyHash (PubKeyHash(..)) import Cardano.Serialization.Lib ( ed25519Signature_fromBech32 , ed25519Signature_toBech32 @@ -104,11 +98,28 @@ import Cardano.Serialization.Lib , toBytes ) import Cardano.Serialization.Lib as Csl +import Cardano.Types.Address as Address +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.Coin (Coin) +import Cardano.Types.Ed25519Signature (Ed25519Signature(..)) +import Cardano.Types.Language (Language) +import Cardano.Types.MultiAsset (MultiAsset(MultiAsset)) +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.OutputDatum (OutputDatum(..)) +import Cardano.Types.PlutusData (PlutusData, pprintPlutusData) +import Cardano.Types.PlutusScript (PlutusScript(..)) +import Cardano.Types.PublicKey (PublicKey(..)) +import Cardano.Types.Slot (Slot(..)) +import Cardano.Types.StakeCredential (StakeCredential(..)) +import Cardano.Types.TransactionOutput (TransactionOutput(..)) +import Cardano.Types.TransactionOutput as X +import Cardano.Types.Value (Value, pprintValue) +import Cardano.Types.Vkey (Vkey(..)) import Control.Alternative ((<|>)) import Control.Apply (lift2) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.Cardano.Types.Value (Coin, NonAdaAsset, Value, pprintValue) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.Helpers ( appendMap @@ -118,13 +129,6 @@ import Ctl.Internal.Helpers , () , (<<>>) ) -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId - , Slot(Slot) - , StakeCredential - , addressBech32 - ) import Ctl.Internal.Serialization.Hash ( Ed25519KeyHash , ed25519KeyHashFromBech32 @@ -133,16 +137,9 @@ import Ctl.Internal.Serialization.Hash ) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.Int as Int -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) -import Ctl.Internal.Types.PlutusData (PlutusData, pprintPlutusData) -import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, PubKeyHash(PubKeyHash)) import Ctl.Internal.Types.RedeemerTag (RedeemerTag) import Ctl.Internal.Types.RewardAddress (RewardAddress) -import Ctl.Internal.Types.Scripts (Language, PlutusScript) import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash) @@ -197,28 +194,28 @@ derive newtype instance EncodeAeson Transaction instance Show Transaction where show = genericShow -instance Semigroup Transaction where - append (Transaction tx) (Transaction tx') = - Transaction - { body: txCheck tx.body <> txCheck' tx'.body - , witnessSet: txCheck tx.witnessSet <> txCheck' tx'.witnessSet - , isValid: tx.isValid && tx'.isValid - , auxiliaryData: txCheck tx.auxiliaryData <> txCheck' tx'.auxiliaryData - } - where - txCheck :: forall (m :: Type). Monoid m => m -> m - txCheck = guard tx.isValid - - txCheck' :: forall (m :: Type). Monoid m => m -> m - txCheck' = guard tx'.isValid - -instance Monoid Transaction where - mempty = Transaction - { body: mempty - , witnessSet: mempty - , isValid: true - , auxiliaryData: Nothing - } +-- instance Semigroup Transaction where +-- append (Transaction tx) (Transaction tx') = +-- Transaction +-- { body: txCheck tx.body <> txCheck' tx'.body +-- , witnessSet: txCheck tx.witnessSet <> txCheck' tx'.witnessSet +-- , isValid: tx.isValid && tx'.isValid +-- , auxiliaryData: txCheck tx.auxiliaryData <> txCheck' tx'.auxiliaryData +-- } +-- where +-- txCheck :: forall (m :: Type). Monoid m => m -> m +-- txCheck = guard tx.isValid + +-- txCheck' :: forall (m :: Type). Monoid m => m -> m +-- txCheck' = guard tx'.isValid + +-- instance Monoid Transaction where +-- mempty = Transaction +-- { body: mempty +-- , witnessSet: mempty +-- , isValid: true +-- , auxiliaryData: Nothing +-- } -------------------------------------------------------------------------------- -- `Transaction` Lenses @@ -272,53 +269,53 @@ derive newtype instance Eq TxBody instance Show TxBody where show = genericShow -instance Semigroup TxBody where - append (TxBody txB) (TxBody txB') = TxBody - { inputs: txB.inputs `Set.union` txB'.inputs - , outputs: txB.outputs `union` txB'.outputs - , fee: txB.fee <> txB'.fee - , ttl: lift2 lowerbound txB.ttl txB'.ttl - , certs: lift2 union txB.certs txB'.certs - , withdrawals: lift2 appendMap txB.withdrawals txB'.withdrawals - , update: txB.update txB'.update - , auxiliaryDataHash: txB.auxiliaryDataHash txB'.auxiliaryDataHash - , validityStartInterval: - lift2 lowerbound - txB.validityStartInterval - txB'.validityStartInterval - , mint: txB.mint <> txB'.mint - , referenceInputs: txB.referenceInputs <> txB'.referenceInputs - , scriptDataHash: txB.scriptDataHash txB'.scriptDataHash - , collateral: lift2 union txB.collateral txB'.collateral - , requiredSigners: lift2 union txB.requiredSigners txB'.requiredSigners - , networkId: txB.networkId txB'.networkId - , collateralReturn: txB.collateralReturn <|> txB.collateralReturn - , totalCollateral: txB.totalCollateral <|> txB.totalCollateral - } - where - lowerbound :: Slot -> Slot -> Slot - lowerbound (Slot x) (Slot y) = Slot $ min x y - -instance Monoid TxBody where - mempty = TxBody - { inputs: mempty - , outputs: mempty - , fee: mempty - , ttl: Nothing - , certs: Nothing - , withdrawals: Nothing - , update: Nothing - , auxiliaryDataHash: Nothing - , validityStartInterval: Nothing - , mint: Nothing - , scriptDataHash: Nothing - , collateral: Nothing - , requiredSigners: Nothing - , networkId: Nothing - , collateralReturn: Nothing - , totalCollateral: Nothing - , referenceInputs: mempty - } +-- instance Semigroup TxBody where +-- append (TxBody txB) (TxBody txB') = TxBody +-- { inputs: txB.inputs `Set.union` txB'.inputs +-- , outputs: txB.outputs `union` txB'.outputs +-- , fee: txB.fee <> txB'.fee +-- , ttl: lift2 lowerbound txB.ttl txB'.ttl +-- , certs: lift2 union txB.certs txB'.certs +-- , withdrawals: lift2 appendMap txB.withdrawals txB'.withdrawals +-- , update: txB.update txB'.update +-- , auxiliaryDataHash: txB.auxiliaryDataHash txB'.auxiliaryDataHash +-- , validityStartInterval: +-- lift2 lowerbound +-- txB.validityStartInterval +-- txB'.validityStartInterval +-- , mint: txB.mint <> txB'.mint +-- , referenceInputs: txB.referenceInputs <> txB'.referenceInputs +-- , scriptDataHash: txB.scriptDataHash txB'.scriptDataHash +-- , collateral: lift2 union txB.collateral txB'.collateral +-- , requiredSigners: lift2 union txB.requiredSigners txB'.requiredSigners +-- , networkId: txB.networkId txB'.networkId +-- , collateralReturn: txB.collateralReturn <|> txB.collateralReturn +-- , totalCollateral: txB.totalCollateral <|> txB.totalCollateral +-- } +-- where +-- lowerbound :: Slot -> Slot -> Slot +-- lowerbound (Slot x) (Slot y) = Slot $ min x y + +-- instance Monoid TxBody where +-- mempty = TxBody +-- { inputs: mempty +-- , outputs: mempty +-- , fee: mempty +-- , ttl: Nothing +-- , certs: Nothing +-- , withdrawals: Nothing +-- , update: Nothing +-- , auxiliaryDataHash: Nothing +-- , validityStartInterval: Nothing +-- , mint: Nothing +-- , scriptDataHash: Nothing +-- , collateral: Nothing +-- , requiredSigners: Nothing +-- , networkId: Nothing +-- , collateralReturn: Nothing +-- , totalCollateral: Nothing +-- , referenceInputs: mempty +-- } instance EncodeAeson TxBody where encodeAeson (TxBody r) = encodeAeson $ r @@ -334,14 +331,13 @@ derive newtype instance EncodeAeson ScriptDataHash instance Show ScriptDataHash where show = genericShow -newtype Mint = Mint NonAdaAsset +newtype Mint = Mint MultiAsset derive instance Generic Mint _ derive instance Newtype Mint _ derive newtype instance Eq Mint -derive newtype instance Semigroup Mint -derive newtype instance Monoid Mint derive newtype instance EncodeAeson Mint +derive newtype instance DecodeAeson Mint instance Show Mint where show = genericShow @@ -622,7 +618,7 @@ type PoolRegistrationParams = , cost :: BigNum -- >= pparams.minPoolCost , margin :: UnitInterval -- proportion that goes to the reward account , rewardAccount :: RewardAddress - , poolOwners :: Array PaymentPubKeyHash + , poolOwners :: Array PubKeyHash -- payment key hashes that contribute to pledge amount , relays :: Array Relay , poolMetadata :: Maybe PoolMetadata @@ -661,8 +657,8 @@ mkPoolPubKeyHash str | otherwise = Nothing poolPubKeyHashToBech32 :: PoolPubKeyHash -> Bech32String -poolPubKeyHashToBech32 = unwrap >>> unwrap >>> ed25519KeyHashToBech32Unsafe - "pool" +poolPubKeyHashToBech32 = unsafePartial $ unwrap >>> unwrap >>> + ed25519KeyHashToBech32Unsafe "pool" data Certificate = StakeRegistration StakeCredential @@ -857,30 +853,6 @@ derive instance Newtype Vkeywitness _ instance Show Vkeywitness where show = genericShow -newtype Vkey = Vkey PublicKey - -derive instance Generic Vkey _ -derive instance Newtype Vkey _ -derive newtype instance Eq Vkey -derive newtype instance Ord Vkey -derive newtype instance EncodeAeson Vkey - -instance Show Vkey where - show = genericShow - -newtype PrivateKey = PrivateKey Csl.PrivateKey - -derive instance Newtype PrivateKey _ - -instance Eq PrivateKey where - eq = eqOrd - -instance Ord PrivateKey where - compare = compare `on` (unwrap >>> privateKey_asBytes) - -instance EncodeAeson PrivateKey where - encodeAeson = unwrap >>> privateKey_asBytes >>> encodeAeson - -- ToData/FromData instances are intentionally not provided: -- it is pointless to store PrivateKeys in plutus script contexts, -- so the instances are commented-out to prevent people from doing @@ -892,49 +864,6 @@ instance EncodeAeson PrivateKey where -- instance FromData PrivateKey where -- fromData = map wrap <<< toMaybe <<< privateKey_fromNormalBytes <=< fromData -instance Show PrivateKey where - show pk = "(PrivateKey " <> (privateKey_toBech32 <<< unwrap $ pk) <> ")" - -newtype PublicKey = PublicKey Csl.PublicKey - -derive instance Newtype PublicKey _ - -instance Eq PublicKey where - eq = eqOrd - -instance Ord PublicKey where - compare = compare `on` (unwrap >>> publicKey_asBytes) - -instance EncodeAeson PublicKey where - encodeAeson = unwrap >>> publicKey_asBytes >>> encodeAeson - -instance ToData PublicKey where - toData (PublicKey pk) = toData $ publicKey_asBytes pk - -instance FromData PublicKey where - fromData = map wrap <<< toMaybe <<< publicKey_fromBytes <=< fromData - -instance Show PublicKey where - show pk = "(PublicKey " <> (publicKey_toBech32 <<< unwrap $ pk) <> ")" - -newtype Ed25519Signature = Ed25519Signature Csl.Ed25519Signature - -derive instance Newtype Ed25519Signature _ - -instance Eq Ed25519Signature where - eq a b = compare a b == EQ - -instance Ord Ed25519Signature where - compare = compare `on` (unwrap >>> toBytes) - -instance EncodeAeson Ed25519Signature where - encodeAeson = unwrap >>> toBytes >>> encodeAeson - -instance Show Ed25519Signature where - show sig = "(Ed25519Signature " - <> show (ed25519Signature_toBech32 <<< unwrap $ sig) - <> ")" - mkEd25519Signature :: Bech32String -> Maybe Ed25519Signature mkEd25519Signature = coerce <<< toMaybe <<< ed25519Signature_fromBech32 @@ -983,52 +912,3 @@ instance Monoid AuxiliaryData where , nativeScripts: Nothing , plutusScripts: Nothing } - -newtype TransactionOutput = TransactionOutput - { address :: Address - , amount :: Value - , datum :: OutputDatum - , scriptRef :: Maybe ScriptRef - } - -derive instance Generic TransactionOutput _ -derive instance Newtype TransactionOutput _ -derive newtype instance Eq TransactionOutput -derive newtype instance EncodeAeson TransactionOutput - -instance Show TransactionOutput where - show = genericShow - -type UtxoMap = Map TransactionInput TransactionOutput - -pprintUtxoMap :: UtxoMap -> TagSet -pprintUtxoMap utxos = TagSet.fromArray $ - Map.toUnfoldable utxos <#> - \( TransactionInput { transactionId, index } /\ - TransactionOutput { address, amount, datum, scriptRef } - ) -> - let - datumTagSets = case datum of - NoOutputDatum -> [] - OutputDatumHash datumHash -> - [ TagSet.fromArray - [ "datum hash" `tag` byteArrayToHex (unwrap datumHash) ] - ] - OutputDatum plutusData -> - [ TagSet.fromArray - [ "datum" `tagSetTag` pprintPlutusData (unwrap plutusData) ] - ] - scriptRefTagSets = case scriptRef of - Nothing -> [] - Just ref -> [ "Script Reference" `tag` show ref ] - outputTagSet = - [ "amount" `tagSetTag` pprintValue amount - , "address" `tag` addressBech32 address - ] - <> datumTagSets - <> scriptRefTagSets - in - ( byteArrayToHex (toBytes $ unwrap transactionId) <> "#" <> - UInt.toString index - ) - `tagSetTag` TagSet.fromArray outputTagSet diff --git a/src/Internal/Cardano/Types/TransactionUnspentOutput.purs b/src/Internal/Cardano/Types/TransactionUnspentOutput.purs index b73ac506a..f753fe358 100644 --- a/src/Internal/Cardano/Types/TransactionUnspentOutput.purs +++ b/src/Internal/Cardano/Types/TransactionUnspentOutput.purs @@ -1,32 +1,5 @@ module Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - , transactionUnspentOutputsToUtxoMap + ( module X ) where -import Prelude - -import Aeson (class EncodeAeson) -import Ctl.Internal.Cardano.Types.Transaction (TransactionOutput, UtxoMap) -import Ctl.Internal.Types.Transaction (TransactionInput) -import Data.Generic.Rep (class Generic) -import Data.Map as Map -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) -import Data.Tuple (Tuple(Tuple)) - -newtype TransactionUnspentOutput = TransactionUnspentOutput - { input :: TransactionInput - , output :: TransactionOutput - } - -derive instance Generic TransactionUnspentOutput _ -derive instance Newtype TransactionUnspentOutput _ -derive newtype instance Eq TransactionUnspentOutput -derive newtype instance EncodeAeson TransactionUnspentOutput - -instance Show TransactionUnspentOutput where - show = genericShow - -transactionUnspentOutputsToUtxoMap :: Array TransactionUnspentOutput -> UtxoMap -transactionUnspentOutputsToUtxoMap = Map.fromFoldable <<< map - \(TransactionUnspentOutput { input, output }) -> Tuple input output +import Cardano.Types.TransactionUnspentOutput as X diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs index 01c804ceb..8b35af66f 100644 --- a/src/Internal/Cardano/Types/Value.purs +++ b/src/Internal/Cardano/Types/Value.purs @@ -1,911 +1,47 @@ module Ctl.Internal.Cardano.Types.Value - ( AssetClass(AssetClass) - , Coin(Coin) - , CurrencySymbol - , NonAdaAsset - , Value(Value) - , class Negate - , class Split + ( module X + ) where + +import Cardano.Types.AssetClass (AssetClass(..)) as X +import Cardano.Types.Coin (Coin(..), fromInt, zero) as X +import Cardano.Types.MultiAsset + ( MultiAsset(..) + , add + , empty + , filterMultiAsset + , flatten + , normalizeMultiAsset + , pprintMultiAsset + , singleton + , unflatten + , union + , unionNonAda + , unionWithNonAda + ) as X +import Cardano.Types.Value + ( Value(..) , assetToValue + , checkBinRel + , checkPred , coinToValue - , currencyMPSHash - , eq + , equipartitionAssetsWithTokenQuantityUpperBound , equipartitionValueWithTokenQuantityUpperBound - , filterNonAda - , flattenNonAdaValue , geq , getAssetQuantity - , getCurrencySymbol - , getLovelace - , getNonAdaAsset - , getNonAdaAsset' + , getCoin + , getMultiAsset , gt - , isAdaOnly - , isPos + , isPositive , isZero , leq , lovelaceValueOf , lt , minus - , mkCoin - , mkCurrencySymbol - , mkNonAdaAsset - , mkNonAdaAssets - , mkNonAdaAssetsFromTokenMap - , mkSingletonNonAdaAsset - , mkSingletonValue - , mkSingletonValue' , mkValue - , mpsSymbol - , negation - , numCurrencySymbols - , numNonAdaAssets - , numNonAdaCurrencySymbols - , numTokenNames - , posNonAdaAsset - , pprintNonAdaAsset , pprintValue - , scriptHashAsCurrencySymbol - , split - , sumTokenNameLengths , unionWith - , unionWithNonAda - , unwrapNonAdaAsset , valueAssetClasses , valueAssets , valueOf , valueToCoin - , valueToCoin' - ) where - -import Prelude hiding (join) - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , encodeAeson - , getField - ) -import Control.Alt ((<|>)) -import Control.Alternative (guard) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Helpers (encodeMap, showWithParens) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.Partition (class Equipartition, equipartition) -import Ctl.Internal.Serialization.Hash - ( ScriptHash - , scriptHashFromBytes - , scriptHashToBytes - ) -import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.Scripts (MintingPolicyHash(MintingPolicyHash)) -import Ctl.Internal.Types.TokenName - ( TokenName - , adaToken - , fromTokenName - , getTokenName - , mkTokenName - , mkTokenNames - ) -import Data.Array (cons, filter) -import Data.Array (fromFoldable) as Array -import Data.Array.NonEmpty (NonEmptyArray) -import Data.Array.NonEmpty (replicate, singleton, zipWith) as NEArray -import Data.Bifunctor (bimap) -import Data.Bitraversable (bitraverse, ltraverse) -import Data.ByteArray - ( ByteArray - , byteArrayFromIntArrayUnsafe - , byteArrayToHex - , byteLength - , hexToByteArray - ) -import Data.Either (Either(Left), note) -import Data.Foldable (any, fold, foldl, length) -import Data.FoldableWithIndex (foldrWithIndex) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Int (ceil) as Int -import Data.Lattice (class JoinSemilattice, class MeetSemilattice, join, meet) -import Data.List (List(Nil), all, (:)) -import Data.List (nubByEq) as List -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Map (Map, keys, lookup, toUnfoldable, unions, values) -import Data.Map as Map -import Data.Map.Gen (genMap) -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Set (Set) -import Data.Show.Generic (genericShow) -import Data.These (These(Both, That, This)) -import Data.Traversable (class Traversable, traverse) -import Data.Tuple (fst) -import Data.Tuple.Nested (type (/\), (/\)) -import JS.BigInt (BigInt, fromInt, toNumber) -import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) -import Test.QuickCheck.Gen (Gen, chooseInt, suchThat, vectorOf) - --- `Negate` and `Split` seem a bit too contrived, and their purpose is to --- combine similar behaviour without satisfying any useful laws. I wonder --- if we're better off simply writing functions for Coin, NonAdaAsset and Value --- to `split` and `negate` (it's just 6 functions) in total without the need of --- a somewhat meaningless typeclass. - --- We could write a Group instance to get `negate` but I'm not sure this would --- make much sense for Value. Plutus uses a custom AdditiveGroup. --- We could define a Data.Group although zero-valued tokens don't degenerate --- from our map currently - I don't think we'd want this behaviour. --- | Negation to create an AdditiveGroup for Value. Call it negation to not confuse --- | with negate. -class Negate (a :: Type) where - negation :: a -> a - --- | Split a value into its positive and non-positive parts. The first element of --- | the tuple contains the non-positive parts of the value, the second element --- | contains the positive parts. The convention is non-positive parts are --- | negated to make them positive in the output. -class Split (a :: Type) where - split :: a -> a /\ a - --------------------------------------------------------------------------------- --- Coin (Ada) --------------------------------------------------------------------------------- - -newtype Coin = Coin BigInt - -derive instance Generic Coin _ -derive instance Newtype Coin _ -derive newtype instance Eq Coin -derive newtype instance Ord Coin -derive newtype instance DecodeAeson Coin -derive newtype instance EncodeAeson Coin -derive newtype instance Equipartition Coin -derive newtype instance Semiring Coin -derive newtype instance Ring Coin -derive newtype instance CommutativeRing Coin -derive newtype instance EuclideanRing Coin - -instance Arbitrary Coin where - arbitrary = Coin <<< fromInt <$> suchThat arbitrary (_ >= zero) - -instance Show Coin where - show (Coin c) = showWithParens "Coin" c - -instance Semigroup Coin where - append (Coin c1) (Coin c2) = Coin (c1 + c2) - -instance Monoid Coin where - mempty = Coin zero - -instance JoinSemilattice Coin where - join (Coin c1) (Coin c2) = Coin (max c1 c2) - -instance MeetSemilattice Coin where - meet (Coin c1) (Coin c2) = Coin (min c1 c2) - -instance Negate Coin where - negation = wrap <<< negate <<< unwrap - -instance Split Coin where - split (Coin c) = - if c <= zero then Coin (negate c) /\ Coin zero else Coin zero /\ Coin c - --- This module rewrites functionality from: --- https://github.com/mlabs-haskell/bot-plutus-interface/blob/master/src/BotPlutusInterface/PreBalance.hs --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value - --- | Make `Coin` from an `Int` instead of `BigInt` -mkCoin :: Int -> Coin -mkCoin = Coin <<< fromInt - --- | Get the amount of lovelaces in Ada `Coin`. -getLovelace :: Coin -> BigInt -getLovelace (Coin l) = l - --- | Convert a `BigInt` to Ada-only `Value` -lovelaceValueOf :: BigInt -> Value -lovelaceValueOf = flip (Value <<< Coin) mempty - --- | Create a `Value` containing only the given `Coin`. -coinToValue :: Coin -> Value -coinToValue (Coin i) = lovelaceValueOf i - --- | Get the `Coin` in the given `Value`. -valueToCoin :: Value -> Coin -valueToCoin = Coin <<< valueToCoin' - --- | Get the `Coin` in the given `Value` as a `BigInt` -valueToCoin' :: Value -> BigInt -valueToCoin' v = valueOf v unsafeAdaSymbol adaToken - --------------------------------------------------------------------------------- --- CurrencySymbol --------------------------------------------------------------------------------- - -newtype CurrencySymbol = CurrencySymbol ByteArray - -derive newtype instance Eq CurrencySymbol -derive newtype instance FromData CurrencySymbol -derive newtype instance FromMetadata CurrencySymbol -derive newtype instance Ord CurrencySymbol -derive newtype instance ToData CurrencySymbol -derive newtype instance ToMetadata CurrencySymbol - -instance Arbitrary CurrencySymbol where - arbitrary = - unsafePartial fromJust <<< mkCurrencySymbol <<< byteArrayFromIntArrayUnsafe - <$> vectorOf 28 (chooseInt 0 255) - -instance Show CurrencySymbol where - show (CurrencySymbol cs) = "(CurrencySymbol " <> show cs <> ")" - --- This is needed for `ApplyArgs`. Plutus has an `unCurrencySymbol` field. -instance DecodeAeson CurrencySymbol where - decodeAeson = caseAesonObject - (Left $ TypeMismatch "Expected object") - ( note (TypeMismatch "Invalid CurrencySymbol") <<< mkCurrencySymbol - <=< note (TypeMismatch "Invalid ByteArray") <<< hexToByteArray - <=< flip getField "unCurrencySymbol" - ) - -instance EncodeAeson CurrencySymbol where - encodeAeson (CurrencySymbol ba) = encodeAeson - { "unCurrencySymbol": byteArrayToHex ba } - -getCurrencySymbol :: CurrencySymbol -> ByteArray -getCurrencySymbol (CurrencySymbol curSymbol) = curSymbol - --- Currency symbol for Ada, do not use inside NonAdaAsset map - do not export. --- For internal use only -unsafeAdaSymbol :: CurrencySymbol -unsafeAdaSymbol = CurrencySymbol mempty - --- | Create a `CurrencySymbol` from a `ByteArray` since `CurrencySymbol` data --- | constructor is not exported -mkCurrencySymbol :: ByteArray -> Maybe CurrencySymbol -mkCurrencySymbol byteArr = - scriptHashFromBytes byteArr *> pure (CurrencySymbol byteArr) - --- Do not export. Create an Ada `CurrencySymbol` from a `ByteArray` -mkUnsafeAdaSymbol :: ByteArray -> Maybe CurrencySymbol -mkUnsafeAdaSymbol byteArr = - if byteArr == mempty then pure unsafeAdaSymbol else Nothing - --------------------------------------------------------------------------------- --- NonAdaAsset --------------------------------------------------------------------------------- - -newtype NonAdaAsset = NonAdaAsset (Map CurrencySymbol (Map TokenName BigInt)) - -derive newtype instance Eq NonAdaAsset - -instance Arbitrary NonAdaAsset where - arbitrary = - NonAdaAsset <$> - genMap - (arbitrary :: Gen CurrencySymbol) - ( flip suchThat (not Map.isEmpty) $ - genMap - (arbitrary :: Gen TokenName) - (fromInt <$> suchThat arbitrary (_ >= one) :: Gen BigInt) - ) - -instance Show NonAdaAsset where - show (NonAdaAsset nonAdaAsset) = "(NonAdaAsset " <> show nonAdaAsset <> ")" - -instance Semigroup NonAdaAsset where - append = unionWithNonAda (+) - -instance Monoid NonAdaAsset where - mempty = NonAdaAsset Map.empty - -instance JoinSemilattice NonAdaAsset where - join = unionWithNonAda max - -instance MeetSemilattice NonAdaAsset where - meet = unionWithNonAda min - -instance Negate NonAdaAsset where - negation = NonAdaAsset <<< map (map negate) <<< unwrapNonAdaAsset - -instance Split NonAdaAsset where - split (NonAdaAsset mp) = NonAdaAsset npos /\ NonAdaAsset pos - where - splitIntl - :: Map TokenName BigInt - -> These (Map TokenName BigInt) (Map TokenName BigInt) - splitIntl mp' = Both l r - where - l /\ r = mapThese (\i -> if i <= zero then This (negate i) else That i) - mp' - - npos /\ pos = mapThese splitIntl mp - -instance EncodeAeson NonAdaAsset where - encodeAeson (NonAdaAsset m) = encodeAeson $ encodeMap $ encodeMap <$> m - -instance Equipartition NonAdaAsset where - equipartition nonAdaAssets numParts = - foldl accumulate (NEArray.replicate numParts mempty) - (flattenNonAdaValue nonAdaAssets) - where - accumulate - :: NonEmptyArray NonAdaAsset - -> (CurrencySymbol /\ TokenName /\ BigInt) - -> NonEmptyArray NonAdaAsset - accumulate xs (cs /\ tn /\ tokenQuantity) = - NEArray.zipWith append xs $ - map (mkSingletonNonAdaAsset cs tn) - (equipartition tokenQuantity numParts) - -pprintNonAdaAsset :: NonAdaAsset -> TagSet -pprintNonAdaAsset mp = TagSet.fromArray $ - Map.toUnfoldable (unwrapNonAdaAsset mp) <#> \(currency /\ tokens) -> - byteArrayToHex (getCurrencySymbol currency) `tagSetTag` TagSet.fromArray - ( Map.toUnfoldable tokens <#> \(tokenName /\ amount) -> - fromTokenName byteArrayToHex show tokenName `tag` BigInt.toString - amount - ) - --- | Partitions a `NonAdaAsset` into smaller `NonAdaAsset`s, where the --- | quantity of each token is equipartitioned across the resultant --- | `NonAdaAsset`s, with the goal that no token quantity in any of the --- | resultant `NonAdaAsset`s exceeds the given upper bound. --- | Taken from cardano-wallet: --- | https://github.com/input-output-hk/cardano-wallet/blob/d4b30de073f2b5eddb25bf12c2453abb42e8b352/lib/wallet/src/Cardano/Wallet/Primitive/Types/TokenMap.hs#L780 -equipartitionAssetsWithTokenQuantityUpperBound - :: NonAdaAsset -> BigInt -> NonEmptyArray NonAdaAsset /\ Int -equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity = - case - maxTokenQuantity <= zero || currentMaxTokenQuantity <= maxTokenQuantity - of - true -> - NEArray.singleton nonAdaAssets /\ one - false -> - equipartition nonAdaAssets numParts /\ numParts - where - numParts :: Int - numParts = - Int.ceil (toNumber currentMaxTokenQuantity / toNumber maxTokenQuantity) - - tokenQuantity :: (CurrencySymbol /\ TokenName /\ BigInt) -> BigInt - tokenQuantity (_ /\ _ /\ quantity) = quantity - - currentMaxTokenQuantity :: BigInt - currentMaxTokenQuantity = - foldl (\quantity tn -> quantity `max` tokenQuantity tn) zero - (flattenNonAdaValue nonAdaAssets) - -unwrapNonAdaAsset :: NonAdaAsset -> Map CurrencySymbol (Map TokenName BigInt) -unwrapNonAdaAsset (NonAdaAsset mp) = mp - --- We shouldn't need this check if we don't export unsafeAdaSymbol etc. --- | Create a singleton `NonAdaAsset` which by definition should be safe since --- | `CurrencySymbol` and `TokenName` are safe -mkSingletonNonAdaAsset - :: CurrencySymbol - -> TokenName - -> BigInt - -> NonAdaAsset -mkSingletonNonAdaAsset curSymbol tokenName amount - | amount == zero = mempty - | otherwise = - NonAdaAsset $ Map.singleton curSymbol $ Map.singleton tokenName amount - --- Assume all CurrencySymbol are well-formed at this point, since they come from --- mkCurrencySymbol and mkTokenName. --- | Given the relevant map, create a normalized `NonAdaAsset`. -mkNonAdaAsset :: Map CurrencySymbol (Map TokenName BigInt) -> NonAdaAsset -mkNonAdaAsset = normalizeNonAdaAsset <<< NonAdaAsset - -mkNonAdaAssetsFromTokenMap' - :: forall (t :: Type -> Type) - . Traversable t - => t (ByteArray /\ Map TokenName BigInt) - -> Maybe (Map CurrencySymbol (Map TokenName BigInt)) -mkNonAdaAssetsFromTokenMap' = - traverse (ltraverse mkCurrencySymbol) >>> map Map.fromFoldable - --- | Creates a `NonAdaAsset` from bytearrays and already safely created `TokenName` --- | map -mkNonAdaAssetsFromTokenMap - :: forall (t :: Type -> Type) - . Traversable t - => t (ByteArray /\ Map TokenName BigInt) - -> Maybe NonAdaAsset -mkNonAdaAssetsFromTokenMap xs = mkNonAdaAssetsFromTokenMap' xs <#> mkNonAdaAsset - -mkNonAdaAssets' - :: forall (s :: Type -> Type) (t :: Type -> Type) - . Traversable s - => Traversable t - => s (ByteArray /\ t (ByteArray /\ BigInt)) - -> Maybe (Map CurrencySymbol (Map TokenName BigInt)) -mkNonAdaAssets' = - traverse (bitraverse mkCurrencySymbol mkTokenNames) >>> map Map.fromFoldable - --- | Given a `Traversable` of `ByteArray`s and amounts to safely convert into a --- | `NonAdaAsset` -mkNonAdaAssets - :: forall (s :: Type -> Type) (t :: Type -> Type) - . Traversable s - => Traversable t - => s (ByteArray /\ t (ByteArray /\ BigInt)) - -> Maybe NonAdaAsset -mkNonAdaAssets xs = mkNonAdaAssets' xs <#> mkNonAdaAsset - -getNonAdaAsset :: Value -> NonAdaAsset -getNonAdaAsset (Value _ nonAdaAsset) = nonAdaAsset - --- This is safe assuming we don't export `unsafeAdaSymbol` as user would need to --- construct `CurrencySymbol` and `TokenName` safely. -getNonAdaAsset' :: Value -> Map CurrencySymbol (Map TokenName BigInt) -getNonAdaAsset' (Value _ (NonAdaAsset nonAdaAsset)) = nonAdaAsset - --------------------------------------------------------------------------------- --- Value --------------------------------------------------------------------------------- --- | In Plutus, Ada is is stored inside the map (with currency symbol and token --- | name being empty bytestrings). cardano-serialization-lib makes semantic --- | distinction between native tokens and Ada, and we follow this convention. -data Value = Value Coin NonAdaAsset - -derive instance Generic Value _ -derive instance Eq Value - -instance Arbitrary Value where - arbitrary = Value <$> arbitrary <*> arbitrary - -instance Show Value where - show = genericShow - -instance Semigroup Value where - append (Value c1 m1) (Value c2 m2) = Value (c1 <> c2) (m1 <> m2) - -instance Monoid Value where - mempty = Value mempty mempty - -instance JoinSemilattice Value where - join (Value c1 m1) (Value c2 m2) = Value (c1 `join` c2) (m1 `join` m2) - -instance MeetSemilattice Value where - meet (Value c1 m1) (Value c2 m2) = Value (c1 `meet` c2) (m1 `meet` m2) - -instance Negate Value where - negation (Value coin nonAdaAsset) = - Value (negation coin) (negation nonAdaAsset) - -instance Split Value where - split (Value coin nonAdaAsset) = - bimap (flip Value mempty) (flip Value mempty) (split coin) - <> bimap (Value mempty) (Value mempty) (split nonAdaAsset) - -instance EncodeAeson Value where - encodeAeson (Value coin nonAdaAsset) = encodeAeson - { coin - , nonAdaAsset - } - -instance Equipartition Value where - equipartition (Value coin nonAdaAssets) numParts = - NEArray.zipWith mkValue - (equipartition coin numParts) - (equipartition nonAdaAssets numParts) - -pprintValue :: Value -> TagSet -pprintValue value = TagSet.fromArray $ - [ "Lovelace" `tag` BigInt.toString (unwrap (valueToCoin value)) ] - <> - if nonAdaAssets /= mempty then - [ "Assets" `tagSetTag` pprintNonAdaAsset nonAdaAssets ] - else [] - where - nonAdaAssets = getNonAdaAsset value - --- | Partitions a `Value` into smaller `Value`s, where the Ada amount and the --- | quantity of each token is equipartitioned across the resultant `Value`s, --- | with the goal that no token quantity in any of the resultant `Value`s --- | exceeds the given upper bound. --- | Taken from cardano-wallet: --- | https://github.com/input-output-hk/cardano-wallet/blob/d4b30de073f2b5eddb25bf12c2453abb42e8b352/lib/wallet/src/Cardano/Wallet/Primitive/Types/TokenBundle.hs#L381 -equipartitionValueWithTokenQuantityUpperBound - :: BigInt -> Value -> NonEmptyArray Value -equipartitionValueWithTokenQuantityUpperBound maxTokenQuantity value = - let - Value coin nonAdaAssets = value - ms /\ numParts = - equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets - maxTokenQuantity - in - NEArray.zipWith mkValue (equipartition coin numParts) ms - --- | Create a `Value` from `Coin` and `NonAdaAsset`, the latter should have been --- | constructed safely at this point. -mkValue :: Coin -> NonAdaAsset -> Value -mkValue = Value - --- | Creates a singleton value given two byte arrays for currency symbol and --- | token name respectively -mkSingletonValue :: ByteArray -> ByteArray -> BigInt -> Maybe Value -mkSingletonValue curSymbol' tokenName' amount = do - curSymbol <- mkCurrencySymbol curSymbol' <|> mkUnsafeAdaSymbol curSymbol' - tokenName <- mkTokenName tokenName' - mkSingletonValue' curSymbol tokenName amount - --- Similar to `mkSingletonValue` but the user has a `CurrencySymbol` and `TokenName` --- at hand. This could be exported (and used only for `NonAdaAsset`) or internally --- for both `Coin` and `NonAdaAsset`. -mkSingletonValue' :: CurrencySymbol -> TokenName -> BigInt -> Maybe Value -mkSingletonValue' curSymbol tokenName amount = do - let isAdaCs = curSymbol == unsafeAdaSymbol - -- Can't have a non-empty TokenName with Ada CurrencySymbol. I.e. It's either - -- not an Ada currency symbol (with any valid TokenName) or an Ada currency - -- symbol with an empty TokenName - guard $ not isAdaCs || (isAdaCs && tokenName == adaToken) - pure - if isAdaCs then Value (Coin amount) mempty - else Value mempty $ mkSingletonNonAdaAsset curSymbol tokenName amount - --------------------------------------------------------------------------------- --- AssetClass --------------------------------------------------------------------------------- - -data AssetClass = AssetClass CurrencySymbol TokenName - -derive instance Generic AssetClass _ -derive instance Eq AssetClass -derive instance Ord AssetClass - -instance Arbitrary AssetClass where - arbitrary = AssetClass <$> arbitrary <*> arbitrary - -instance Show AssetClass where - show = genericShow - -assetToValue :: AssetClass -> BigInt -> Value -assetToValue (AssetClass cs tn) quantity = - mkValue mempty (mkSingletonNonAdaAsset cs tn quantity) - -getAssetQuantity :: AssetClass -> Value -> BigInt -getAssetQuantity (AssetClass cs tn) value = valueOf value cs tn - -valueAssets :: Value -> Array (AssetClass /\ BigInt) -valueAssets (Value _ assets) = - Array.fromFoldable (flattenNonAdaValue assets) - <#> \(cs /\ tn /\ quantity) -> AssetClass cs tn /\ quantity - -valueAssetClasses :: Value -> Array AssetClass -valueAssetClasses = map fst <<< valueAssets - --------------------------------------------------------------------------------- --- Helpers --------------------------------------------------------------------------------- - --- | Normalize `NonAdaAsset` so that it doesn't contain zero-valued tokens. -normalizeNonAdaAsset :: NonAdaAsset -> NonAdaAsset -normalizeNonAdaAsset = filterNonAdaAsset (notEq zero) - -posNonAdaAsset :: NonAdaAsset -> NonAdaAsset -posNonAdaAsset = filterNonAdaAsset (\x -> x > zero) - -filterNonAdaAsset :: (BigInt -> Boolean) -> NonAdaAsset -> NonAdaAsset -filterNonAdaAsset p (NonAdaAsset mp) = - NonAdaAsset $ Map.filter (not Map.isEmpty) $ Map.filter p <$> mp - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-tx/html/src/PlutusTx.AssocMap.html#union --- | Combine two `Map`s. -union :: ∀ k v r. Ord k => Map k v -> Map k r -> Map k (These v r) -union l r = - let - ls :: Array (k /\ v) - ls = Map.toUnfoldable l - - rs :: Array (k /\ r) - rs = Map.toUnfoldable r - - f :: v -> Maybe r -> These v r - f a b' = case b' of - Nothing -> This a - Just b -> Both a b - - ls' :: Array (k /\ These v r) - ls' = map (\(c /\ i) -> (c /\ f i (Map.lookup c (Map.fromFoldable rs)))) ls - - rs' :: Array (k /\ r) - rs' = filter (\(c /\ _) -> not (any (\(c' /\ _) -> c' == c) ls)) rs - - rs'' :: Array (k /\ These v r) - rs'' = map (map That) rs' - in - Map.fromFoldable (ls' <> rs'') - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionVal --- | Combine two `NonAdaAsset` maps -unionNonAda - :: NonAdaAsset - -> NonAdaAsset - -> Map CurrencySymbol (Map TokenName (These BigInt BigInt)) -unionNonAda (NonAdaAsset l) (NonAdaAsset r) = - let - combined - :: Map CurrencySymbol - (These (Map TokenName BigInt) (Map TokenName BigInt)) - combined = union l r - - unBoth - :: These (Map TokenName BigInt) (Map TokenName BigInt) - -> Map TokenName (These BigInt BigInt) - unBoth k = case k of - This a -> This <$> a - That b -> That <$> b - Both a b -> union a b - in - unBoth <$> combined - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionWith --- | Same as `unionWith` but specifically for `NonAdaAsset` -unionWithNonAda - :: (BigInt -> BigInt -> BigInt) - -> NonAdaAsset - -> NonAdaAsset - -> NonAdaAsset -unionWithNonAda f ls rs = - let - combined :: Map CurrencySymbol (Map TokenName (These BigInt BigInt)) - combined = unionNonAda ls rs - - unBoth :: These BigInt BigInt -> BigInt - unBoth k' = case k' of - This a -> f a zero - That b -> f zero b - Both a b -> f a b - in - normalizeNonAdaAsset $ - NonAdaAsset (map unBoth <$> combined) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionWith --- | Combines `Value` with a binary function on `BigInt`s. -unionWith - :: (BigInt -> BigInt -> BigInt) - -> Value - -> Value - -> Value -unionWith f (Value (Coin c) na) (Value (Coin c') na') = - Value (Coin $ f c c') (unionWithNonAda f na na') - --- Based on https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#flattenValue --- Flattens non-Ada Value into a list -flattenNonAdaValue - :: NonAdaAsset -> List (CurrencySymbol /\ TokenName /\ BigInt) -flattenNonAdaValue (NonAdaAsset nonAdaAsset) = do - cs /\ m <- toUnfoldable nonAdaAsset - tn /\ a <- toUnfoldable m - guard $ a /= zero - pure $ cs /\ tn /\ a - --- Flattens Value guarding against zeros -unsafeFlattenValue :: Value -> List (CurrencySymbol /\ TokenName /\ BigInt) -unsafeFlattenValue (Value coin@(Coin lovelaces) nonAdaAsset) = - let - flattenedNonAda :: List (CurrencySymbol /\ TokenName /\ BigInt) - flattenedNonAda = flattenNonAdaValue nonAdaAsset - in - case coin == mempty of - true -> flattenedNonAda - false -> (unsafeAdaSymbol /\ adaToken /\ lovelaces) : flattenedNonAda - --- From https://github.com/mlabs-haskell/bot-plutus-interface/blob/master/src/BotPlutusInterface/PreBalance.hs --- Converts a single tuple to Value -unflattenValue :: CurrencySymbol /\ TokenName /\ BigInt -> Maybe Value -unflattenValue (curSymbol /\ tokenName /\ amount) = - mkSingletonValue' curSymbol tokenName amount - --- | Predicate on whether some `Value` contains Ada only. -isAdaOnly :: Value -> Boolean -isAdaOnly v = - case unsafeFlattenValue v of - (cs /\ tn /\ _) : Nil -> - cs == unsafeAdaSymbol && - tn == adaToken - _ -> false - -minus :: Value -> Value -> Value -minus lhs rhs = - let - negativeValues :: List (CurrencySymbol /\ TokenName /\ BigInt) - negativeValues = unsafeFlattenValue rhs <#> - (\(c /\ t /\ a) -> c /\ t /\ negate a) - in - unsafePartial $ - lhs <> fold (fromJust $ traverse unflattenValue negativeValues) - --- From https://github.com/mlabs-haskell/bot-plutus-interface/blob/master/src/BotPlutusInterface/PreBalance.hs --- "isValueNat" uses unsafeFlattenValue which guards against zeros, so non-strict --- inequality is redundant. So we use strict equality instead. -isPos :: Value -> Boolean -isPos = all (\(_ /\ _ /\ a) -> a > zero) <<< unsafeFlattenValue - --- From https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#isZero --- | Check whether a `Value` is zero. -isZero :: Value -> Boolean -isZero (Value coin (NonAdaAsset nonAdaAsset)) = - all (all ((==) zero)) nonAdaAsset && coin == mempty - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkPred -checkPred :: (These BigInt BigInt -> Boolean) -> Value -> Value -> Boolean -checkPred f (Value (Coin l) ls) (Value (Coin r) rs) = - let - inner :: Map TokenName (These BigInt BigInt) -> Boolean - inner = all f -- this "all" may need to be checked? - in - f (Both l r) && all inner (unionNonAda ls rs) -- this "all" may need to be checked? - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkBinRel --- Check whether a binary relation holds for value pairs of two `Value` maps, --- supplying 0 where a key is only present in one of them. -checkBinRel :: (BigInt -> BigInt -> Boolean) -> Value -> Value -> Boolean -checkBinRel f l r = - let - unThese :: These BigInt BigInt -> Boolean - unThese k' = case k' of - This a -> f a zero - That b -> f zero b - Both a b -> f a b - in - checkPred unThese l r - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#geq --- | Check whether one `Value` is greater than or equal to another. See `Value` for an explanation of how operations on `Value`s work. -geq :: Value -> Value -> Boolean --- If both are zero then checkBinRel will be vacuously true, but this is fine. -geq = checkBinRel (>=) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#gt --- | Check whether one `Value` is strictly greater than another. See `Value` for an explanation of how operations on `Value`s work. -gt :: Value -> Value -> Boolean --- If both are zero then checkBinRel will be vacuously true. So we have a special case. -gt l r = not (isZero l && isZero r) && checkBinRel (>) l r - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#leq --- | Check whether one `Value` is less than or equal to another. See `Value` for an explanation of how operations on `Value`s work. -leq :: Value -> Value -> Boolean --- If both are zero then checkBinRel will be vacuously true, but this is fine. -leq = checkBinRel (<=) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#lt --- | Check whether one `Value` is strictly less than another. See `Value` for an explanation of how operations on `Value`s work. -lt :: Value -> Value -> Boolean --- If both are zero then checkBinRel will be vacuously true. So we have a special case. -lt l r = not (isZero l && isZero r) && checkBinRel (<) l r - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#eq --- | Check whether one `Value` is equal to another. See `Value` for an explanation of how operations on `Value`s work. -eq :: Value -> Value -> Boolean --- If both are zero then checkBinRel will be vacuously true, but this is fine. -eq = checkBinRel (==) - -unsafeIsAda :: CurrencySymbol -> TokenName -> Boolean -unsafeIsAda curSymbol tokenName = - curSymbol == unsafeAdaSymbol && - tokenName == adaToken - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#valueOf --- | Get the quantity of the given currency in the `Value`. -valueOf :: Value -> CurrencySymbol -> TokenName -> BigInt -valueOf (Value (Coin lovelaces) (NonAdaAsset nonAdaAsset)) curSymbol tokenName = - case unsafeIsAda curSymbol tokenName of - false -> - case lookup curSymbol nonAdaAsset of - Nothing -> zero - Just i -> case lookup tokenName i of - Nothing -> zero - Just v -> v - true -> lovelaces - --- | The number of distinct non-Ada assets. -numNonAdaAssets :: Value -> BigInt -numNonAdaAssets (Value _ nonAdaAssets) = - length (flattenNonAdaValue nonAdaAssets) - --- | The number of distinct non-Ada currency symbols, i.e. the number of policy --- | IDs not including Ada in `Coin`. -numNonAdaCurrencySymbols :: Value -> BigInt -numNonAdaCurrencySymbols (Value _ nonAdaAssets) = - fromInt <<< length <<< List.nubByEq ((==) `on` fst) $ - flattenNonAdaValue nonAdaAssets - --- | The number of distinct currency symbols, i.e. the number of policy IDs --- | including Ada in `Coin`. -numCurrencySymbols :: Value -> BigInt -numCurrencySymbols value@(Value coin _) - | coin == mempty = - numNonAdaCurrencySymbols value - | otherwise = - one + numNonAdaCurrencySymbols value - --- Don't export this, we don't really care about the v in k,v. -unsafeAllTokenNames' :: Value -> Map TokenName BigInt -unsafeAllTokenNames' (Value coin@(Coin lovelaces) (NonAdaAsset nonAdaAsset)) = - let - nonAdaUnion :: Map TokenName BigInt - nonAdaUnion = unions $ values nonAdaAsset - in - case coin == mempty of - false -> nonAdaUnion - true -> Map.singleton adaToken lovelaces `Map.union` nonAdaUnion - --- Don't export as we don't to expose tokenNames although may be it's okay --- given `mkTokenName` doesn't need to be `Maybe`. -unsafeAllTokenNames :: Value -> Set TokenName -unsafeAllTokenNames = keys <<< unsafeAllTokenNames' - --- | The number of distinct token names. -numTokenNames :: Value -> BigInt -numTokenNames = length <<< unsafeAllTokenNames' - --- https://cardano-ledger.readthedocs.io/en/latest/explanations/min-utxo-mary.html --- The formula is actually based on the length of the bytestring --- representation - test this. --- | Sum of the length of the strings of distinct token names. -sumTokenNameLengths :: Value -> BigInt -sumTokenNameLengths = foldl lenAdd zero <<< unsafeAllTokenNames - where - lenAdd :: BigInt -> TokenName -> BigInt - lenAdd = \c a -> c + (fromInt <<< byteLength <<< getTokenName $ a) - --- From https://github.com/mlabs-haskell/bot-plutus-interface/blob/master/src/BotPlutusInterface/PreBalance.hs --- | Filter a value to contain only non Ada assets -filterNonAda :: Value -> Value -filterNonAda (Value _ nonAda) = Value mempty nonAda - --- I think this is safe because a CurrencySymbol can only be constructed by --- checking scriptHashFromBytes so it must be a valid ScriptHash too. Otherwise --- we'd have a Maybe context from scriptHashFromBytes again from something we --- already know is a valid CurrencySymbol -currencyScriptHash :: CurrencySymbol -> ScriptHash -currencyScriptHash (CurrencySymbol byteArray) = - unsafePartial fromJust $ scriptHashFromBytes byteArray - -scriptHashAsCurrencySymbol :: ScriptHash -> CurrencySymbol -scriptHashAsCurrencySymbol = CurrencySymbol <<< unwrap <<< scriptHashToBytes - --- | The minting policy hash of a currency symbol -currencyMPSHash :: CurrencySymbol -> MintingPolicyHash -currencyMPSHash = MintingPolicyHash <<< currencyScriptHash - --- We haven't provided any safety on MintingPolicyHash, analagous to --- CurrencySymbol, so we need Maybe context. We could remove Maybe if we do. --- Plutus doesn't use Maybe here. --- | The currency symbol of a monetary policy hash -mpsSymbol :: MintingPolicyHash -> Maybe CurrencySymbol -mpsSymbol (MintingPolicyHash h) = mkCurrencySymbol $ unwrap $ scriptHashToBytes - h - --- Like `mapEither` that works with 'These'. -mapThese - :: forall (a :: Type) (b :: Type) (k :: Type) (v :: Type) - . Ord k - => (v -> These a b) - -> Map k v - -> Map k a /\ Map k b -mapThese f mps = - bimap Map.fromFoldable Map.fromFoldable $ foldrWithIndex f' ([] /\ []) mps' - where - mps' :: Map k (These a b) - mps' = map f mps - - f' - :: k - -> These a b - -> Array (k /\ a) /\ Array (k /\ b) - -> Array (k /\ a) /\ Array (k /\ b) - f' k v (as /\ bs) = case v of - This a -> (k /\ a) `cons` as /\ bs - That b -> as /\ (k /\ b) `cons` bs - Both a b -> (k /\ a) `cons` as /\ (k /\ b) `cons` bs + ) as X diff --git a/src/Internal/CoinSelection/UtxoIndex.purs b/src/Internal/CoinSelection/UtxoIndex.purs index 3ee70c1fe..c56ba618d 100644 --- a/src/Internal/CoinSelection/UtxoIndex.purs +++ b/src/Internal/CoinSelection/UtxoIndex.purs @@ -1,6 +1,5 @@ module Ctl.Internal.CoinSelection.UtxoIndex - ( Asset(Asset, AssetLovelace) - , SelectionFilter(SelectAnyWith, SelectPairWith, SelectSingleton) + ( SelectionFilter(SelectAnyWith, SelectPairWith, SelectSingleton) , TxUnspentOutput , UtxoIndex , UtxoIndexInvariantStatus @@ -22,18 +21,18 @@ module Ctl.Internal.CoinSelection.UtxoIndex import Prelude -import Ctl.Internal.Cardano.Types.Transaction - ( TransactionOutput(TransactionOutput) - , UtxoMap - ) +import Cardano.Types.Asset (Asset(AdaAsset)) +import Cardano.Types.Asset as Asset +import Cardano.Types.BigNum as BigNum +import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionOutput (TransactionOutput(..)) +import Cardano.Types.UtxoMap (UtxoMap) import Ctl.Internal.Cardano.Types.Value (AssetClass, Value) import Ctl.Internal.Cardano.Types.Value - ( getAssetQuantity - , valueAssetClasses + ( valueAssetClasses , valueAssets - , valueToCoin' + , valueOf ) as Value -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (all, foldl) as Array import Data.Array ((!!)) import Data.Array.NonEmpty (cons') @@ -107,20 +106,6 @@ instance Show UtxoIndex where utxoIndexUniverse :: UtxoIndex -> UtxoMap utxoIndexUniverse = view _utxos --- | Taken from cardano-wallet: --- | https://github.com/input-output-hk/cardano-wallet/blob/791541da69b9b3f434bb9ead43de406cc18b0373/lib/primitive/lib/Cardano/Wallet/Primitive/Types/UTxOIndex/Internal.hs#L485 -data Asset = AssetLovelace | Asset AssetClass - -derive instance Generic Asset _ -derive instance Eq Asset -derive instance Ord Asset - -instance Show Asset where - show = genericShow - -instance Arbitrary Asset where - arbitrary = oneOf $ cons' (pure AssetLovelace) [ Asset <$> arbitrary ] - -- | Indicates whether or not a given bundle includes a given asset. -- | -- | Both ada and non-ada assets can be queried. @@ -128,10 +113,8 @@ instance Arbitrary Asset where -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/9d73b57e23392e25148cfc8db560cb8f656cb56a/lib/primitive/lib/Cardano/Wallet/Primitive/Types/UTxOIndex/Internal.hs#L526 valueHasAsset :: Value -> Asset -> Boolean -valueHasAsset amount AssetLovelace = - (Value.valueToCoin' amount) > (BigInt.fromInt 0) -valueHasAsset amount (Asset asset) = - Value.getAssetQuantity asset amount >= one +valueHasAsset amount asset = + Value.valueOf asset amount > BigNum.zero -------------------------------------------------------------------------------- -- Builders @@ -203,17 +186,20 @@ updateUtxoIndex updateUtxoIndex out manageEntry = case categorizeUtxoEntry out of BundleWithNoAssets -> - _indexSingletons %~ manageEntry AssetLovelace - BundleWithOneAsset asset -> - (_indexPairs %~ manageEntry AssetLovelace) - <<< (_indexSingletons %~ manageEntry (Asset asset)) + _indexSingletons %~ manageEntry AdaAsset + BundleWithOneAsset assetClass -> + (_indexPairs %~ manageEntry AdaAsset) + <<< (_indexSingletons %~ manageEntry (Asset.fromAssetClass assetClass)) BundleWithTwoAssets asset0 asset1 -> - (_indexAnyWith %~ manageEntry AssetLovelace) - <<< (_indexPairs %~ manageEntry (Asset asset0)) - <<< (_indexPairs %~ manageEntry (Asset asset1)) + (_indexAnyWith %~ manageEntry AdaAsset) + <<< (_indexPairs %~ manageEntry (Asset.fromAssetClass asset0)) + <<< (_indexPairs %~ manageEntry (Asset.fromAssetClass asset1)) BundleWithMultipleAssets assets -> - (_indexAnyWith %~ flip (foldl (flip (manageEntry <<< Asset))) assets) - <<< (_indexAnyWith %~ manageEntry AssetLovelace) + ( _indexAnyWith %~ flip + (foldl (flip (manageEntry <<< Asset.fromAssetClass))) + assets + ) + <<< (_indexAnyWith %~ manageEntry AdaAsset) -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/791541da69b9b3f434bb9ead43de406cc18b0373/lib/primitive/lib/Cardano/Wallet/Primitive/Types/UTxOIndex/Internal.hs#L537 @@ -373,18 +359,18 @@ checkUtxoIndexComplete utxoIndex = hasEntries (oref /\ out) = case categorizeUtxoEntry out of BundleWithNoAssets -> - _indexSingletons `hasEntryForAsset` AssetLovelace + _indexSingletons `hasEntryForAsset` AdaAsset BundleWithOneAsset asset -> - _indexPairs `hasEntryForAsset` AssetLovelace - && _indexSingletons `hasEntryForAsset` Asset asset + _indexPairs `hasEntryForAsset` AdaAsset + && _indexSingletons `hasEntryForAsset` Asset.fromAssetClass asset BundleWithTwoAssets asset0 asset1 -> - _indexAnyWith `hasEntryForAsset` AssetLovelace - && _indexPairs `hasEntryForAsset` Asset asset0 - && _indexPairs `hasEntryForAsset` Asset asset1 + _indexAnyWith `hasEntryForAsset` AdaAsset + && _indexPairs `hasEntryForAsset` Asset.fromAssetClass asset0 + && _indexPairs `hasEntryForAsset` Asset.fromAssetClass asset1 BundleWithMultipleAssets assets -> - _indexAnyWith `hasEntryForAsset` AssetLovelace && + _indexAnyWith `hasEntryForAsset` AdaAsset && flip Foldable.all assets \asset -> - (_indexAnyWith `hasEntryForAsset` Asset asset) + (_indexAnyWith `hasEntryForAsset` Asset.fromAssetClass asset) where hasEntryForAsset :: Lens' UtxoIndex (Map Asset UtxoMap) -> Asset -> Boolean @@ -422,22 +408,22 @@ checkUtxoIndexMinimal utxoIndex = Map.lookup oref (utxoIndexUniverse utxoIndex) txOutputHasOneAsset :: TransactionOutput -> Asset -> Boolean - txOutputHasOneAsset txOutput AssetLovelace = + txOutputHasOneAsset txOutput AdaAsset = txOutputAssetCount txOutput == zero txOutputHasOneAsset txOutput asset = txOutputHasAsset txOutput asset && txOutputAssetCount txOutput == one txOutputHasTwoAssetsWith :: TransactionOutput -> Asset -> Boolean - txOutputHasTwoAssetsWith txOutput AssetLovelace = + txOutputHasTwoAssetsWith txOutput AdaAsset = txOutputAssetCount txOutput == one txOutputHasTwoAssetsWith txOutput asset = txOutputHasAsset txOutput asset && txOutputAssetCount txOutput == BigInt.fromInt 2 txOutputHasAsset :: TransactionOutput -> Asset -> Boolean - txOutputHasAsset _ AssetLovelace = true - txOutputHasAsset (TransactionOutput { amount }) (Asset asset) = - Value.getAssetQuantity asset amount >= one + txOutputHasAsset _ AdaAsset = true + txOutputHasAsset (TransactionOutput { amount }) (asset) = + Value.valueOf asset amount >= BigNum.one txOutputAssetCount :: TransactionOutput -> BigInt txOutputAssetCount = diff --git a/src/Internal/Contract/AwaitTxConfirmed.purs b/src/Internal/Contract/AwaitTxConfirmed.purs index e2100035c..3b9efbb9f 100644 --- a/src/Internal/Contract/AwaitTxConfirmed.purs +++ b/src/Internal/Contract/AwaitTxConfirmed.purs @@ -7,6 +7,7 @@ module Ctl.Internal.Contract.AwaitTxConfirmed import Prelude +import Cardano.Types.BigNum as BigNum import Contract.Monad (liftedE) import Control.Monad.Reader.Class (asks) import Control.Parallel (parOneOf) @@ -15,7 +16,6 @@ import Ctl.Internal.Contract (getChainTip) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Contract.QueryBackend (getBlockfrostBackend) import Ctl.Internal.Serialization.Address (Slot) -import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.Transaction ( TransactionHash diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index 7e0f9da5c..33885d3c2 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -2,6 +2,7 @@ module Ctl.Internal.Contract.MinFee (calculateMinFee) where import Prelude +import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.Cardano.Types.Transaction ( Transaction , UtxoMap @@ -22,7 +23,6 @@ import Ctl.Internal.Serialization.Address ) import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) import Ctl.Internal.Serialization.MinFee (calculateMinFeeCsl) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (fromFoldable, mapMaybe) import Data.Array as Array import Data.Either (hush) diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index 71d4ceed4..0a6ab0cb3 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -22,6 +22,7 @@ module Ctl.Internal.Contract.Monad import Prelude +import Cardano.Types.TransactionHash (TransactionHash) import Contract.Prelude (liftEither) import Control.Alt (class Alt) import Control.Alternative (class Alternative) @@ -74,7 +75,6 @@ import Ctl.Internal.Service.Blockfrost as Blockfrost import Ctl.Internal.Service.Error (ClientError) import Ctl.Internal.Types.ProtocolParameters (ProtocolParameters) import Ctl.Internal.Types.SystemStart (SystemStart) -import Ctl.Internal.Types.Transaction (TransactionHash) import Ctl.Internal.Types.UsedTxOuts (UsedTxOuts, isTxOutRefUsed, newUsedTxOuts) import Ctl.Internal.Wallet (Wallet(GenericCip30)) import Ctl.Internal.Wallet.Spec (WalletSpec, mkWalletBySpec) diff --git a/src/Internal/Contract/QueryHandle/Type.purs b/src/Internal/Contract/QueryHandle/Type.purs index 6102dfdb4..ea272d233 100644 --- a/src/Internal/Contract/QueryHandle/Type.purs +++ b/src/Internal/Contract/QueryHandle/Type.purs @@ -23,7 +23,6 @@ import Ctl.Internal.Service.Error (ClientError) import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.Datum (DataHash, Datum) import Ctl.Internal.Types.EraSummaries (EraSummaries) -import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Scripts (StakeValidatorHash) import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) diff --git a/src/Internal/Contract/WaitUntilSlot.purs b/src/Internal/Contract/WaitUntilSlot.purs index 149dd7006..56b180418 100644 --- a/src/Internal/Contract/WaitUntilSlot.purs +++ b/src/Internal/Contract/WaitUntilSlot.purs @@ -7,6 +7,7 @@ module Ctl.Internal.Contract.WaitUntilSlot import Prelude +import Cardano.Types.BigNum as BigNum import Contract.Log (logTrace') import Control.Monad.Error.Class (liftEither, liftMaybe) import Control.Monad.Reader (asks) @@ -14,7 +15,6 @@ import Ctl.Internal.Contract (getChainTip) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Helpers (liftM) import Ctl.Internal.Serialization.Address (Slot(Slot)) -import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.EraSummaries (EraSummaries(EraSummaries)) import Ctl.Internal.Types.Interval diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 472aad2f8..c23a53b16 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -35,11 +35,6 @@ import Ctl.Internal.Serialization.Address , stakeCredentialToKeyHash ) import Ctl.Internal.Service.Error (pprintClientError) -import Ctl.Internal.Types.PubKeyHash - ( PaymentPubKeyHash - , PubKeyHash - , StakePubKeyHash - ) import Ctl.Internal.Types.RawBytes (RawBytes) import Ctl.Internal.Wallet (Wallet, actionBasedOnWallet) import Ctl.Internal.Wallet.Cip30 (DataSignature) diff --git a/src/Internal/Deserialization/NativeScript.purs b/src/Internal/Deserialization/NativeScript.purs index 9153a7b96..1a90e3ced 100644 --- a/src/Internal/Deserialization/NativeScript.purs +++ b/src/Internal/Deserialization/NativeScript.purs @@ -7,12 +7,10 @@ import Prelude import Aeson (JsonDecodeError(TypeMismatch)) import Cardano.Serialization.Lib (fromBytes) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.Slot (Slot(Slot)) import Ctl.Internal.Cardano.Types.NativeScript as T -import Ctl.Internal.FfiHelpers - ( ContainerHelper - , containerHelper - ) -import Ctl.Internal.Serialization.Address (Slot(Slot)) +import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) import Ctl.Internal.Serialization.Types ( NativeScript @@ -23,7 +21,6 @@ import Ctl.Internal.Serialization.Types , TimelockExpiry , TimelockStart ) -import Ctl.Internal.Types.BigNum (BigNum) import Data.ByteArray (ByteArray) import Data.Either (Either, note) diff --git a/src/Internal/Deserialization/PlutusData.purs b/src/Internal/Deserialization/PlutusData.purs index 6200e14d7..c5138e46c 100644 --- a/src/Internal/Deserialization/PlutusData.purs +++ b/src/Internal/Deserialization/PlutusData.purs @@ -6,6 +6,10 @@ module Ctl.Internal.Deserialization.PlutusData import Prelude import Cardano.Serialization.Lib (fromBytes) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.PlutusData + ( PlutusData(Constr, Map, List, Integer, Bytes) + ) as T import Ctl.Internal.Deserialization.BigInt (convertBigInt) import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) import Ctl.Internal.FromData (class FromData, fromData) @@ -16,11 +20,7 @@ import Ctl.Internal.Serialization.Types , PlutusList , PlutusMap ) -import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.PlutusData - ( PlutusData(Constr, Map, List, Integer, Bytes) - ) as T import Data.ByteArray (ByteArray) import Data.Maybe (Maybe, fromJust) import Data.Newtype (unwrap) diff --git a/src/Internal/Deserialization/Transaction.purs b/src/Internal/Deserialization/Transaction.purs index 73b2c9659..d18cefb2f 100644 --- a/src/Internal/Deserialization/Transaction.purs +++ b/src/Internal/Deserialization/Transaction.purs @@ -1,49 +1,8 @@ module Ctl.Internal.Deserialization.Transaction - ( CertConvHelper - , MetadatumHelper - , _adGeneralMetadata - , _adNativeScripts - , _adPlutusScripts - , _convertCert - , _convertMetadatum - , _convertNonce - , _txAuxiliaryData - , _txBody - , _txBodyAuxiliaryDataHash - , _txBodyCerts - , _txBodyCollateral - , _txBodyFee - , _txBodyInputs - , _txBodyMultiAssets - , _txBodyNetworkId - , _txBodyOutputs - , _txBodyRequiredSigners - , _txBodyScriptDataHash - , _txBodyTtl - , _txBodyUpdate - , _txBodyValidityStartInterval - , _txBodyWithdrawals - , _txIsValid - , _txWitnessSet - , _unpackCostModel - , _unpackCostModels - , _unpackExUnits - , _unpackExUnitsPrices - , _unpackMetadataList - , _unpackMetadataMap - , _unpackMetadatums - , _unpackMint - , _unpackMintAssets - , _unpackProtocolParamUpdate - , _unpackProtocolVersion - , _unpackUnitInterval - , _unpackUpdate - , _unpackWithdrawals - , convertAuxiliaryData + ( convertAuxiliaryData , convertCertificate , convertCostModel , convertCostModels - , convertExUnitPrices , convertExUnits , convertGeneralTransactionMetadata , convertMetadataList @@ -63,12 +22,27 @@ module Ctl.Internal.Deserialization.Transaction import Prelude -import Cardano.Serialization.Lib (Ed25519KeyHash, ScriptHash, VRFKeyHash) as Csl import Cardano.Serialization.Lib ( fromBytes , toBytes + , transactionBody_certs + , transactionBody_fee + , transactionBody_inputs + , transactionBody_outputs + , transactionBody_referenceInputs + , transactionBody_update + , transactionBody_withdrawals + , unpackListContainer + , unpackMapContainer , unpackMapContainerToMapWith ) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.BigNum (BigNum) as Csl +import Cardano.Types.BigNum (toBigInt) as BigNum +import Cardano.Types.MultiAsset (MultiAsset(..)) +import Cardano.Types.Slot (Slot(..)) +import Cardano.Types.TransactionInput as TransactionInput +import Cardano.Types.TransactionOutput as TransactionOutput import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash(AuxiliaryDataHash) @@ -108,11 +82,7 @@ import Ctl.Internal.Cardano.Types.Transaction , Update ) as T import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash(PoolPubKeyHash)) -import Ctl.Internal.Cardano.Types.Value - ( Coin(Coin) - , mkNonAdaAsset - , scriptHashAsCurrencySymbol - ) +import Ctl.Internal.Cardano.Types.Value (Coin(Coin)) import Ctl.Internal.Deserialization.Error ( Err , FromCslRepError @@ -120,7 +90,6 @@ import Ctl.Internal.Deserialization.Error , cslErr ) import Ctl.Internal.Deserialization.Language (convertLanguage) -import Ctl.Internal.Deserialization.UnspentOutput (convertInput, convertOutput) import Ctl.Internal.Deserialization.WitnessSet ( convertNativeScripts , convertPlutusScripts @@ -133,12 +102,7 @@ import Ctl.Internal.FfiHelpers , containerHelper , maybeFfiHelper ) -import Ctl.Internal.Serialization.Address - ( NetworkId(TestnetId, MainnetId) - , RewardAddress - , StakeCredential - ) as Csl -import Ctl.Internal.Serialization.Address (Slot(Slot)) +import Ctl.Internal.Helpers (notImplemented) import Ctl.Internal.Serialization.Types ( AssetName , AuxiliaryData @@ -182,13 +146,10 @@ import Ctl.Internal.Serialization.Types , Update , Withdrawals ) as Csl -import Ctl.Internal.Types.BigNum (BigNum) as Csl -import Ctl.Internal.Types.BigNum (toBigInt) as BigNum import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Int (Int) as Csl import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.RewardAddress (RewardAddress(RewardAddress)) as T -import Ctl.Internal.Types.TokenName (tokenNameFromAssetName) import Ctl.Internal.Types.TransactionMetadata ( GeneralTransactionMetadata , TransactionMetadatum(MetadataList, MetadataMap, Bytes, Int, Text) @@ -202,6 +163,7 @@ import Data.Either (Either) import Data.Map as M import Data.Maybe (Maybe, fromMaybe) import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) import Data.Ratio (Ratio, reduce) import Data.Set (fromFoldable) as Set import Data.Traversable (traverse) @@ -223,374 +185,359 @@ deserializeTransaction txCbor = -- | Converts transaction from foreign CSL representation to CTL's one. convertTransaction :: forall (r :: Row Type). Csl.Transaction -> Err r T.Transaction -convertTransaction tx = addErrTrace "convertTransaction" do - body <- convertTxBody $ _txBody tx - let - witnessSet = convertWitnessSet (_txWitnessSet tx) - auxiliaryData = convertAuxiliaryData <$> - _txAuxiliaryData maybeFfiHelper tx - pure $ T.Transaction - { body - , witnessSet - , isValid: _txIsValid tx - , auxiliaryData - } +convertTransaction tx = notImplemented -- addErrTrace "convertTransaction" do + +-- body <- convertTxBody $ _txBody tx +-- let +-- witnessSet = convertWitnessSet (_txWitnessSet tx) +-- auxiliaryData = convertAuxiliaryData <$> +-- _txAuxiliaryData maybeFfiHelper tx +-- pure $ T.Transaction +-- { body +-- , witnessSet +-- , isValid: _txIsValid tx +-- , auxiliaryData +-- } -- | Converts transaction body from foreign CSL representation to CTL's one. convertTxBody :: forall (r :: Row Type). Csl.TransactionBody -> Err r T.TxBody -convertTxBody txBody = do - let - inputs = Set.fromFoldable $ convertInput <$> _txBodyInputs containerHelper - txBody - - outputs <- - _txBodyOutputs containerHelper txBody - # traverse (convertOutput >>> cslErr "TransactionOutput") - let - fee = Coin $ BigNum.toBigInt $ _txBodyFee txBody - networkId = - _txBodyNetworkId Csl.TestnetId Csl.MainnetId maybeFfiHelper txBody - - ws :: Maybe (Array (Csl.RewardAddress /\ Csl.BigNum)) - ws = _unpackWithdrawals containerHelper <$> _txBodyWithdrawals - maybeFfiHelper - txBody - - withdrawals :: Maybe (M.Map T.RewardAddress Coin) <- - -- array -> map - (map <<< map) (M.fromFoldable <<< map (lmap T.RewardAddress)) - -- bignum -> coin - <<< (traverse <<< traverse <<< traverse) - (BigNum.toBigInt >>> Coin >>> pure) - $ ws - - update <- traverse convertUpdate $ _txBodyUpdate maybeFfiHelper txBody - - let - cslReferenceInputs :: Array Csl.TransactionInput - cslReferenceInputs = - _txBodyReferenceInputs maybeFfiHelper containerHelper txBody - # fromMaybe mempty - - referenceInputs = Set.fromFoldable $ convertInput <$> cslReferenceInputs - - certs = map convertCertificate <$> - _txBodyCerts containerHelper - maybeFfiHelper - txBody - - collateralReturn <- - _txBodyCollateralReturn maybeFfiHelper txBody # - traverse (convertOutput >>> cslErr "TransactionOutput") - - let - totalCollateral = _txBodyTotalCollateral maybeFfiHelper txBody <#> - (BigNum.toBigInt >>> Coin) - - pure $ T.TxBody - { inputs - , outputs - , fee - , ttl: Slot <$> _txBodyTtl maybeFfiHelper txBody - , certs - , withdrawals - , update - , auxiliaryDataHash: - T.AuxiliaryDataHash <<< toBytes <$> - _txBodyAuxiliaryDataHash maybeFfiHelper txBody - , validityStartInterval: - Slot <$> _txBodyValidityStartInterval maybeFfiHelper txBody - , mint: map convertMint $ _txBodyMultiAssets maybeFfiHelper txBody - , referenceInputs - , scriptDataHash: convertScriptDataHash <$> _txBodyScriptDataHash - maybeFfiHelper - txBody - , collateral: _txBodyCollateral containerHelper maybeFfiHelper txBody >>= - map convertInput >>> pure - , requiredSigners: - _txBodyRequiredSigners containerHelper maybeFfiHelper txBody # - (map <<< map) (T.RequiredSigner <<< wrap) - , networkId - , collateralReturn - , totalCollateral - } +convertTxBody txBody = notImplemented -- do + +-- let +-- inputs = Set.fromFoldable $ TransactionInput.fromCsl <$> unpackListContainer (transactionBody_inputs txBody) + +-- outputs <- +-- unpackListContainer (transactionBody_outputs txBody) +-- # traverse (TransactionOutput.fromCsl >>> cslErr "TransactionOutput") +-- let +-- fee = Coin $ transactionBody_fee txBody +-- networkId = +-- notImplemented + +-- ws :: Maybe (Array (Csl.RewardAddress /\ Csl.BigNum)) +-- ws = unpackMapContainer <$> transactionBody_withdrawals txBody + +-- withdrawals :: Maybe (M.Map T.RewardAddress Coin) <- +-- -- array -> map +-- (map <<< map) (M.fromFoldable <<< map (lmap T.RewardAddress)) +-- -- bignum -> coin +-- <<< (traverse <<< traverse <<< traverse) +-- (BigNum.toBigInt >>> Coin >>> pure) +-- $ ws + +-- update <- traverse convertUpdate $ transactionBody_update txBody + +-- let +-- cslReferenceInputs :: Array Csl.TransactionInput +-- cslReferenceInputs = +-- map unpackListContainer (toMaybe (transactionBody_referenceInputs txBody)) +-- # fromMaybe mempty + +-- referenceInputs = Set.fromFoldable $ TransactionInput.fromCsl <$> cslReferenceInputs + +-- certs = map convertCertificate <$> +-- toMaybe (transactionBody_certs txBody) + +-- collateralReturn <- notImplemented +-- -- _txBodyCollateralReturn maybeFfiHelper txBody # +-- -- traverse (TransactionOutput.fromCsl >>> cslErr "TransactionOutput") + +-- let +-- totalCollateral = notImplemented -- _txBodyTotalCollateral maybeFfiHelper txBody <#> +-- -- (BigNum.toBigInt >>> Coin) + +-- pure $ notImplemented +-- T.TxBody +-- { inputs +-- , outputs +-- , fee +-- , ttl: Slot <$> notImplemented -- _txBodyTtl maybeFfiHelper txBody +-- , certs +-- , withdrawals +-- , update +-- , auxiliaryDataHash: +-- T.AuxiliaryDataHash <<< toBytes <$> +-- notImplemented -- _txBodyAuxiliaryDataHash maybeFfiHelper txBody +-- , validityStartInterval: +-- Slot <$> _txBodyValidityStartInterval maybeFfiHelper txBody +-- , mint: map convertMint $ _txBodyMultiAssets maybeFfiHelper txBody +-- , referenceInputs +-- , scriptDataHash: convertScriptDataHash <$> _txBodyScriptDataHash +-- maybeFfiHelper +-- txBody +-- , collateral: _txBodyCollateral containerHelper maybeFfiHelper txBody >>= +-- map TransactionInput.fromCsl >>> pure +-- , requiredSigners: +-- _txBodyRequiredSigners containerHelper maybeFfiHelper txBody # +-- (map <<< map) (T.RequiredSigner <<< wrap) +-- , networkId +-- , collateralReturn +-- , totalCollateral +-- } convertUpdate :: forall (r :: Row Type). Csl.Update -> Err r T.Update -convertUpdate u = do - let { epoch: e, paramUpdates } = _unpackUpdate containerHelper u - epoch <- map T.Epoch $ cslNumberToUInt "convertUpdate: epoch" e - ppus <- traverse - ( bitraverse - (pure <<< T.GenesisHash <<< toBytes) - convertProtocolParamUpdate - ) - paramUpdates - pure - { epoch - , proposedProtocolParameterUpdates: T.ProposedProtocolParameterUpdates $ - M.fromFoldable ppus - } +convertUpdate u = notImplemented -- do + +-- let { epoch: e, paramUpdates } = _unpackUpdate containerHelper u +-- epoch <- map T.Epoch $ cslNumberToUInt "convertUpdate: epoch" e +-- ppus <- traverse +-- ( bitraverse +-- (pure <<< T.GenesisHash <<< toBytes) +-- convertProtocolParamUpdate +-- ) +-- paramUpdates +-- pure +-- { epoch +-- , proposedProtocolParameterUpdates: T.ProposedProtocolParameterUpdates $ +-- M.fromFoldable ppus +-- } convertCertificate :: Csl.Certificate -> T.Certificate -convertCertificate = _convertCert certConvHelper - where - certConvHelper :: CertConvHelper T.Certificate - certConvHelper = - { stakeDeregistration: T.StakeDeregistration - , stakeRegistration: T.StakeRegistration - , stakeDelegation: \sc -> T.StakeDelegation sc <<< wrap <<< wrap <<< wrap - , poolRegistration: convertPoolRegistration - , poolRetirement: convertPoolRetirement - , genesisKeyDelegation: \genesisHash genesisDelegateHash vrfKeyhash -> do - T.GenesisKeyDelegation - { genesisHash: T.GenesisHash $ toBytes genesisHash - , genesisDelegateHash: T.GenesisDelegateHash $ toBytes - genesisDelegateHash - , vrfKeyhash: T.VRFKeyHash vrfKeyhash - } - , moveInstantaneousRewardsToOtherPotCert: \pot amount -> do - T.MoveInstantaneousRewardsCert $ - T.ToOtherPot { pot, amount: amount } - , moveInstantaneousRewardsToStakeCreds: \pot amounts -> do - T.MoveInstantaneousRewardsCert $ - T.ToStakeCreds { pot, amounts: convertMIRToStakeCredentials amounts } - } +convertCertificate = notImplemented -- _convertCert certConvHelper + +-- where +-- certConvHelper :: CertConvHelper T.Certificate +-- certConvHelper = +-- { stakeDeregistration: T.StakeDeregistration +-- , stakeRegistration: T.StakeRegistration +-- , stakeDelegation: \sc -> T.StakeDelegation sc <<< wrap <<< wrap <<< wrap +-- , poolRegistration: convertPoolRegistration +-- , poolRetirement: convertPoolRetirement +-- , genesisKeyDelegation: \genesisHash genesisDelegateHash vrfKeyhash -> do +-- T.GenesisKeyDelegation +-- { genesisHash: T.GenesisHash $ toBytes genesisHash +-- , genesisDelegateHash: T.GenesisDelegateHash $ toBytes +-- genesisDelegateHash +-- , vrfKeyhash: T.VRFKeyHash vrfKeyhash +-- } +-- , moveInstantaneousRewardsToOtherPotCert: \pot amount -> do +-- T.MoveInstantaneousRewardsCert $ +-- T.ToOtherPot { pot, amount: amount } +-- , moveInstantaneousRewardsToStakeCreds: \pot amounts -> do +-- T.MoveInstantaneousRewardsCert $ +-- T.ToStakeCreds { pot, amounts: convertMIRToStakeCredentials amounts } +-- } convertMIRToStakeCredentials :: Csl.MIRToStakeCredentials -> T.MIRToStakeCredentials -convertMIRToStakeCredentials = - T.MIRToStakeCredentials <<< M.fromFoldable <<< unpackMIRToStakeCredentials_ - containerHelper +convertMIRToStakeCredentials = notImplemented + +-- T.MIRToStakeCredentials <<< M.fromFoldable <<< unpackMIRToStakeCredentials_ +-- containerHelper convertPoolRegistration :: Csl.PoolParams -> T.Certificate -convertPoolRegistration params = do - let - relays = convertRelay <$> poolParamsRelays containerHelper params - T.PoolRegistration - { operator: PoolPubKeyHash $ wrap $ wrap $ poolParamsOperator params - , vrfKeyhash: T.VRFKeyHash $ poolParamsVrfKeyhash params - , pledge: poolParamsPledge params - , cost: poolParamsCost params - , margin: _unpackUnitInterval $ poolParamsMargin params - , rewardAccount: T.RewardAddress $ poolParamsRewardAccount params - , poolOwners: wrap <<< wrap <<< wrap <$> poolParamsPoolOwners - containerHelper - params - , relays - , poolMetadata: poolParamsPoolMetadata maybeFfiHelper params <#> - convertPoolMetadata_ - \url hash -> T.PoolMetadata - { url: T.URL url - , hash: T.PoolMetadataHash $ toBytes hash - } - } - -type ConvertRelayHelper a = - { asSingleHostAddr :: Csl.SingleHostAddr -> a - , asSingleHostName :: Csl.SingleHostName -> a - , asMultiHostName :: Csl.MultiHostName -> a - } +convertPoolRegistration params = notImplemented -- do + +-- let +-- relays = convertRelay <$> poolParamsRelays containerHelper params +-- T.PoolRegistration +-- { operator: PoolPubKeyHash $ wrap $ wrap $ poolParamsOperator params +-- , vrfKeyhash: T.VRFKeyHash $ poolParamsVrfKeyhash params +-- , pledge: poolParamsPledge params +-- , cost: poolParamsCost params +-- , margin: _unpackUnitInterval $ poolParamsMargin params +-- , rewardAccount: T.RewardAddress $ poolParamsRewardAccount params +-- , poolOwners: wrap <<< wrap <<< wrap <$> poolParamsPoolOwners +-- containerHelper +-- params +-- , relays +-- , poolMetadata: poolParamsPoolMetadata maybeFfiHelper params <#> +-- convertPoolMetadata_ +-- \url hash -> T.PoolMetadata +-- { url: T.URL url +-- , hash: T.PoolMetadataHash $ toBytes hash +-- } +-- } convertRelay :: Csl.Relay -> T.Relay -convertRelay relay = do - convertRelay_ - { asSingleHostAddr: convertSingleHostAddr_ maybeFfiHelper - \mbPort mbIpv4 mbIpv6 -> do - let - ipv4 = mbIpv4 <#> convertIpv4 - ipv6 = mbIpv6 <#> convertIpv6 - T.SingleHostAddr { port: mbPort, ipv4, ipv6 } - , asSingleHostName: convertSingleHostName_ maybeFfiHelper - \port mbHost -> T.SingleHostName { port, dnsName: mbHost } - , asMultiHostName: T.MultiHostName <<< { dnsName: _ } <<< - convertMultiHostName_ - } - relay +convertRelay relay = notImplemented -- do + +-- convertRelay_ +-- { asSingleHostAddr: convertSingleHostAddr_ maybeFfiHelper +-- \mbPort mbIpv4 mbIpv6 -> do +-- let +-- ipv4 = mbIpv4 <#> convertIpv4 +-- ipv6 = mbIpv6 <#> convertIpv6 +-- T.SingleHostAddr { port: mbPort, ipv4, ipv6 } +-- , asSingleHostName: convertSingleHostName_ maybeFfiHelper +-- \port mbHost -> T.SingleHostName { port, dnsName: mbHost } +-- , asMultiHostName: T.MultiHostName <<< { dnsName: _ } <<< +-- convertMultiHostName_ +-- } +-- relay convertIpv6 :: Csl.Ipv6 -> T.Ipv6 -convertIpv6 = T.Ipv6 <<< convertIpv6_ - -foreign import convertIpv6_ :: Csl.Ipv6 -> ByteArray +convertIpv6 = notImplemented -- T.Ipv6 <<< convertIpv6_ convertIpv4 :: Csl.Ipv4 -> T.Ipv4 -convertIpv4 = T.Ipv4 <<< convertIpv4_ - -foreign import convertIpv4_ :: Csl.Ipv4 -> ByteArray - -foreign import convertRelay_ :: forall a. ConvertRelayHelper a -> Csl.Relay -> a - -foreign import convertSingleHostAddr_ - :: forall a - . MaybeFfiHelper - -> (Maybe Int -> Maybe Csl.Ipv4 -> Maybe Csl.Ipv6 -> a) - -> Csl.SingleHostAddr - -> a - -foreign import convertSingleHostName_ - :: forall a - . MaybeFfiHelper - -> (Maybe Int -> String -> a) - -> Csl.SingleHostName - -> a - -foreign import convertMultiHostName_ - :: Csl.MultiHostName - -> String +convertIpv4 = notImplemented -- T.Ipv4 <<< convertIpv4_ convertPoolRetirement :: Csl.Ed25519KeyHash -> UInt -> T.Certificate -convertPoolRetirement poolKeyHash epoch = do - T.PoolRetirement - { poolKeyHash: wrap $ wrap $ wrap $ poolKeyHash, epoch: wrap epoch } +convertPoolRetirement poolKeyHash epoch = notImplemented -- do + +-- T.PoolRetirement +-- { poolKeyHash: wrap $ wrap $ wrap $ poolKeyHash, epoch: wrap epoch } convertMint :: Csl.Mint -> T.Mint -convertMint = T.Mint <<< mkNonAdaAsset <<< - unpackMapContainerToMapWith (scriptHashAsCurrencySymbol <<< wrap) - ( unpackMapContainerToMapWith - tokenNameFromAssetName - (Int.toBigInt <<< wrap) - ) +convertMint = -- T.Mint <<< MultiAsset <<< + -- unpackMapContainerToMapWith (wrap) + -- ( unpackMapContainerToMapWith + -- identity + -- (Int.toBigInt <<< wrap) + -- ) + notImplemented convertProtocolParamUpdate :: forall (r :: Row Type) . Csl.ProtocolParamUpdate -> Err r T.ProtocolParamUpdate -convertProtocolParamUpdate cslPpu = do - let - ppu = _unpackProtocolParamUpdate maybeFfiHelper cslPpu - lbl = (<>) "ProtocolParamUpdate." - minfeeA = Coin <<< BigNum.toBigInt <$> ppu.minfeeA - minfeeB = Coin <<< BigNum.toBigInt <$> ppu.minfeeB - maxBlockBodySize <- traverse (cslNumberToUInt (lbl "maxBlockBodySize")) - ppu.maxBlockBodySize - maxTxSize <- traverse (cslNumberToUInt (lbl "maxTxSize")) ppu.maxTxSize - maxBlockHeaderSize <- traverse (cslNumberToUInt (lbl "maxBlockHeaderSize")) - ppu.maxBlockHeaderSize - let - keyDeposit = Coin <<< BigNum.toBigInt <$> ppu.keyDeposit - poolDeposit = Coin <<< BigNum.toBigInt <$> ppu.poolDeposit - maxEpoch <- traverse (map T.Epoch <<< cslNumberToUInt (lbl "maxEpoch")) - ppu.maxEpoch - nOpt <- traverse (cslNumberToUInt (lbl "nOpt")) ppu.nOpt - protocolVersion <- traverse (convertProtocolVersion (lbl "protocolVersion")) - ppu.protocolVersion - costModels <- addErrTrace (lbl "costModels") $ traverse convertCostModels - ppu.costModels - let - maxTxExUnits = convertExUnits <$> ppu.maxTxExUnits - maxBlockExUnits = convertExUnits <$> - ppu.maxBlockExUnits - maxValueSize <- traverse (cslNumberToUInt (lbl "maxValueSize")) - ppu.maxValueSize - collateralPercentage <- traverse - (cslNumberToUInt (lbl "collateralPercentage")) - ppu.collateralPercentage - maxCollateralInputs <- traverse (cslNumberToUInt (lbl "maxCollateralInputs")) - ppu.maxCollateralInputs - pure - { minfeeA - , minfeeB - , maxBlockBodySize - , maxTxSize - , maxBlockHeaderSize - , keyDeposit - , poolDeposit - , maxEpoch - , nOpt - , poolPledgeInfluence: _unpackUnitInterval <$> ppu.poolPledgeInfluence - , expansionRate: _unpackUnitInterval <$> ppu.expansionRate - , treasuryGrowthRate: _unpackUnitInterval <$> ppu.treasuryGrowthRate - , protocolVersion - , minPoolCost: ppu.minPoolCost - , adaPerUtxoByte: ppu.adaPerUtxoByte - , costModels - , executionCosts: convertExUnitPrices <$> ppu.executionCosts - , maxTxExUnits - , maxBlockExUnits - , maxValueSize - , collateralPercentage - , maxCollateralInputs - } +convertProtocolParamUpdate cslPpu = notImplemented -- do + +-- let +-- ppu = _unpackProtocolParamUpdate maybeFfiHelper cslPpu +-- lbl = (<>) "ProtocolParamUpdate." +-- minfeeA = Coin <<< BigNum.toBigInt <$> ppu.minfeeA +-- minfeeB = Coin <<< BigNum.toBigInt <$> ppu.minfeeB +-- maxBlockBodySize <- traverse (cslNumberToUInt (lbl "maxBlockBodySize")) +-- ppu.maxBlockBodySize +-- maxTxSize <- traverse (cslNumberToUInt (lbl "maxTxSize")) ppu.maxTxSize +-- maxBlockHeaderSize <- traverse (cslNumberToUInt (lbl "maxBlockHeaderSize")) +-- ppu.maxBlockHeaderSize +-- let +-- keyDeposit = Coin <<< BigNum.toBigInt <$> ppu.keyDeposit +-- poolDeposit = Coin <<< BigNum.toBigInt <$> ppu.poolDeposit +-- maxEpoch <- traverse (map T.Epoch <<< cslNumberToUInt (lbl "maxEpoch")) +-- ppu.maxEpoch +-- nOpt <- traverse (cslNumberToUInt (lbl "nOpt")) ppu.nOpt +-- protocolVersion <- traverse (convertProtocolVersion (lbl "protocolVersion")) +-- ppu.protocolVersion +-- costModels <- addErrTrace (lbl "costModels") $ traverse convertCostModels +-- ppu.costModels +-- let +-- maxTxExUnits = convertExUnits <$> ppu.maxTxExUnits +-- maxBlockExUnits = convertExUnits <$> +-- ppu.maxBlockExUnits +-- maxValueSize <- traverse (cslNumberToUInt (lbl "maxValueSize")) +-- ppu.maxValueSize +-- collateralPercentage <- traverse +-- (cslNumberToUInt (lbl "collateralPercentage")) +-- ppu.collateralPercentage +-- maxCollateralInputs <- traverse (cslNumberToUInt (lbl "maxCollateralInputs")) +-- ppu.maxCollateralInputs +-- pure +-- { minfeeA +-- , minfeeB +-- , maxBlockBodySize +-- , maxTxSize +-- , maxBlockHeaderSize +-- , keyDeposit +-- , poolDeposit +-- , maxEpoch +-- , nOpt +-- , poolPledgeInfluence: _unpackUnitInterval <$> ppu.poolPledgeInfluence +-- , expansionRate: _unpackUnitInterval <$> ppu.expansionRate +-- , treasuryGrowthRate: _unpackUnitInterval <$> ppu.treasuryGrowthRate +-- , protocolVersion +-- , minPoolCost: ppu.minPoolCost +-- , adaPerUtxoByte: ppu.adaPerUtxoByte +-- , costModels +-- , executionCosts: convertExUnitPrices <$> ppu.executionCosts +-- , maxTxExUnits +-- , maxBlockExUnits +-- , maxValueSize +-- , collateralPercentage +-- , maxCollateralInputs +-- } convertNonce :: Csl.Nonce -> T.Nonce -convertNonce = _convertNonce - { hashNonce: T.HashNonce, identityNonce: T.IdentityNonce } +convertNonce = notImplemented -- _convertNonce + +-- { hashNonce: T.HashNonce, identityNonce: T.IdentityNonce } convertCostModels :: forall (r :: Row Type) . Csl.Costmdls -> Err r T.Costmdls -convertCostModels cslCostMdls = - let - mdls :: Array (Csl.Language /\ Csl.CostModel) - mdls = _unpackCostModels containerHelper cslCostMdls - in - (T.Costmdls <<< M.fromFoldable) <$> traverse - (bitraverse (pure <<< convertLanguage) convertCostModel) - mdls +convertCostModels cslCostMdls = notImplemented + +-- let +-- mdls :: Array (Csl.Language /\ Csl.CostModel) +-- mdls = _unpackCostModels containerHelper cslCostMdls +-- in +-- (T.Costmdls <<< M.fromFoldable) <$> traverse +-- (bitraverse (pure <<< convertLanguage) convertCostModel) +-- mdls convertCostModel :: forall (r :: Row Type) . Csl.CostModel -> E (FromCslRepError + r) T.CostModel -convertCostModel = map T.CostModel <<< traverse stringToInt <<< - _unpackCostModel - where - stringToInt - :: String -> Either (Variant (fromCslRepError :: String | r)) Int.Int - stringToInt s = cslErr (": string (" <> s <> ") -> int") $ - Int.fromBigInt =<< BigInt.fromString s +convertCostModel = notImplemented + +-- map T.CostModel <<< traverse stringToInt <<< +-- _unpackCostModel +-- where +-- stringToInt +-- :: String -> Either (Variant (fromCslRepError :: String | r)) Int.Int +-- stringToInt s = cslErr (": string (" <> s <> ") -> int") $ +-- Int.fromBigInt =<< BigInt.fromString s convertAuxiliaryData :: Csl.AuxiliaryData -> T.AuxiliaryData -convertAuxiliaryData ad = do - let - metadata = convertGeneralTransactionMetadata <$> - _adGeneralMetadata maybeFfiHelper ad - T.AuxiliaryData - { metadata - , nativeScripts: pure <<< convertNativeScripts =<< _adNativeScripts - maybeFfiHelper - ad - , plutusScripts: pure <<< convertPlutusScripts =<< _adPlutusScripts - maybeFfiHelper - ad - } +convertAuxiliaryData ad = notImplemented -- do + +-- let +-- metadata = convertGeneralTransactionMetadata <$> +-- _adGeneralMetadata maybeFfiHelper ad +-- T.AuxiliaryData +-- { metadata +-- , nativeScripts: pure <<< convertNativeScripts =<< _adNativeScripts +-- maybeFfiHelper +-- ad +-- , plutusScripts: pure <<< convertPlutusScripts =<< _adPlutusScripts +-- maybeFfiHelper +-- ad +-- } convertGeneralTransactionMetadata :: Csl.GeneralTransactionMetadata -> GeneralTransactionMetadata -convertGeneralTransactionMetadata gtm = wrap - $ M.fromFoldable - $ bimap (TransactionMetadatumLabel <<< BigNum.toBigInt) convertMetadatum - <$> _unpackMetadatums containerHelper gtm +convertGeneralTransactionMetadata gtm = notImplemented -- wrap + +-- $ M.fromFoldable +-- $ bimap (TransactionMetadatumLabel <<< BigNum.toBigInt) convertMetadatum +-- <$> _unpackMetadatums containerHelper gtm convertMetadatum :: Csl.TransactionMetadatum -> TransactionMetadatum -convertMetadatum tm = _convertMetadatum - { from_bytes: Bytes - , from_int: Int - , from_text: Text - , from_map: convertMetadataMap - , from_list: convertMetadataList - } - tm +convertMetadatum tm = notImplemented -- _convertMetadatum + +-- { from_bytes: Bytes +-- , from_int: Int +-- , from_text: Text +-- , from_map: convertMetadataMap +-- , from_list: convertMetadataList +-- } +-- tm convertMetadataList :: Csl.MetadataList -> TransactionMetadatum -convertMetadataList ml = MetadataList - $ convertMetadatum <$> _unpackMetadataList containerHelper ml +convertMetadataList ml = notImplemented -- MetadataList + +-- $ convertMetadatum <$> _unpackMetadataList containerHelper ml convertMetadataMap :: Csl.MetadataMap -> TransactionMetadatum -convertMetadataMap mm = MetadataMap - $ M.fromFoldable - $ bimap convertMetadatum convertMetadatum - <$> _unpackMetadataMap containerHelper mm +convertMetadataMap mm = notImplemented -- MetadataMap + +-- $ M.fromFoldable +-- $ bimap convertMetadatum convertMetadatum +-- <$> _unpackMetadataMap containerHelper mm -- unpack to array of tuples @@ -612,11 +559,12 @@ convertExUnits :: forall (r :: Row Type) . Csl.ExUnits -> T.ExUnits -convertExUnits cslExunits = - let - { mem, steps } = _unpackExUnits cslExunits - in - { mem: _, steps: _ } (BigNum.toBigInt mem) (BigNum.toBigInt steps) +convertExUnits cslExunits = notImplemented + +-- let +-- { mem, steps } = _unpackExUnits cslExunits +-- in +-- { mem: _, steps: _ } (BigNum.toBigInt mem) (BigNum.toBigInt steps) convertScriptDataHash :: Csl.ScriptDataHash -> T.ScriptDataHash convertScriptDataHash = toBytes >>> T.ScriptDataHash @@ -626,265 +574,10 @@ convertProtocolVersion . String -> Csl.ProtocolVersion -> E (FromCslRepError + r) T.ProtocolVersion -convertProtocolVersion nm cslPV = - _unpackProtocolVersion cslPV # - ( \{ major, minor } -> - { major: _, minor: _ } - <$> cslNumberToUInt (nm <> " major") major - <*> cslNumberToUInt (nm <> " minor") minor - ) - ----- foreign imports - -foreign import _convertNonce - :: { identityNonce :: T.Nonce, hashNonce :: ByteArray -> T.Nonce } - -> Csl.Nonce - -> T.Nonce - -foreign import _unpackProtocolParamUpdate - :: MaybeFfiHelper - -> Csl.ProtocolParamUpdate - -> { minfeeA :: Maybe Csl.BigNum - , minfeeB :: Maybe Csl.BigNum - , maxBlockBodySize :: Maybe Number - , maxTxSize :: Maybe Number - , maxBlockHeaderSize :: Maybe Number - , keyDeposit :: Maybe Csl.BigNum - , poolDeposit :: Maybe Csl.BigNum - , maxEpoch :: Maybe Number - , nOpt :: Maybe Number - , poolPledgeInfluence :: Maybe Csl.UnitInterval - , expansionRate :: - Maybe Csl.UnitInterval - , treasuryGrowthRate :: - Maybe Csl.UnitInterval - , protocolVersion :: Maybe Csl.ProtocolVersion - , minPoolCost :: Maybe Csl.BigNum - , adaPerUtxoByte :: Maybe Csl.BigNum - , costModels :: Maybe Csl.Costmdls - , executionCosts :: Maybe Csl.ExUnitPrices - , maxTxExUnits :: Maybe Csl.ExUnits - , maxBlockExUnits :: Maybe Csl.ExUnits - , maxValueSize :: Maybe Number - , collateralPercentage :: Maybe Number - , maxCollateralInputs :: Maybe Number - } - -foreign import _unpackCostModels - :: ContainerHelper -> Csl.Costmdls -> Array (Csl.Language /\ Csl.CostModel) - -foreign import _unpackCostModel :: Csl.CostModel -> Array String - -foreign import _unpackMetadataMap - :: ContainerHelper - -> Csl.MetadataMap - -> Array (Csl.TransactionMetadatum /\ Csl.TransactionMetadatum) - -foreign import _unpackMetadataList - :: ContainerHelper -> Csl.MetadataList -> Array Csl.TransactionMetadatum - -type MetadatumHelper = - { from_map :: Csl.MetadataMap -> TransactionMetadatum - , from_list :: Csl.MetadataList -> TransactionMetadatum - , from_int :: Csl.Int -> TransactionMetadatum - , from_text :: String -> TransactionMetadatum - , from_bytes :: ByteArray -> TransactionMetadatum - } - -foreign import _unpackProtocolVersion - :: Csl.ProtocolVersion - -> { major :: Number, minor :: Number } - -foreign import _unpackExUnits - :: Csl.ExUnits -> { mem :: Csl.BigNum, steps :: Csl.BigNum } - -foreign import _unpackUnitInterval - :: Csl.UnitInterval -> { numerator :: Csl.BigNum, denominator :: Csl.BigNum } - -convertExUnitPrices :: Csl.ExUnitPrices -> T.ExUnitPrices -convertExUnitPrices cslEUP = - let - { memPrice, stepPrice } = _unpackExUnitsPrices cslEUP - in - { memPrice: _unpackUnitInterval memPrice - , stepPrice: _unpackUnitInterval stepPrice - } - -foreign import _unpackExUnitsPrices - :: Csl.ExUnitPrices - -> { memPrice :: Csl.UnitInterval, stepPrice :: Csl.UnitInterval } - -foreign import _convertMetadatum - :: MetadatumHelper - -> Csl.TransactionMetadatum - -> TransactionMetadatum - -foreign import _unpackMetadatums - :: ContainerHelper - -> Csl.GeneralTransactionMetadata - -> Array (Csl.BigNum /\ Csl.TransactionMetadatum) - -foreign import _txBody :: Csl.Transaction -> Csl.TransactionBody -foreign import _txIsValid :: Csl.Transaction -> Boolean -foreign import _txWitnessSet :: Csl.Transaction -> Csl.TransactionWitnessSet -foreign import _txAuxiliaryData - :: MaybeFfiHelper -> Csl.Transaction -> Maybe Csl.AuxiliaryData - -foreign import _adGeneralMetadata - :: MaybeFfiHelper -> Csl.AuxiliaryData -> Maybe Csl.GeneralTransactionMetadata - -foreign import _adNativeScripts - :: MaybeFfiHelper -> Csl.AuxiliaryData -> Maybe Csl.NativeScripts - -foreign import _adPlutusScripts - :: MaybeFfiHelper -> Csl.AuxiliaryData -> Maybe Csl.PlutusScripts - --- inputs(): TransactionInputs; -foreign import _txBodyInputs - :: ContainerHelper -> Csl.TransactionBody -> Array Csl.TransactionInput - --- outputs(): TransactionOutputs; -foreign import _txBodyOutputs - :: ContainerHelper -> Csl.TransactionBody -> Array Csl.TransactionOutput - --- fee(): BigNum; -foreign import _txBodyFee :: Csl.TransactionBody -> Csl.BigNum --- ttl(): number | void; -foreign import _txBodyTtl - :: MaybeFfiHelper -> Csl.TransactionBody -> Maybe Csl.BigNum - --- certs(): Certificates | void; -foreign import _txBodyCerts - :: ContainerHelper - -> MaybeFfiHelper - -> Csl.TransactionBody - -> Maybe (Array Csl.Certificate) - --- withdrawals(): Withdrawals | void -foreign import _txBodyWithdrawals - :: MaybeFfiHelper -> Csl.TransactionBody -> Maybe Csl.Withdrawals - --- update(): Update | void -foreign import _txBodyUpdate - :: MaybeFfiHelper -> Csl.TransactionBody -> Maybe Csl.Update - --- auxiliary_data_hash(): AuxiliaryDataHash | void -foreign import _txBodyAuxiliaryDataHash - :: MaybeFfiHelper -> Csl.TransactionBody -> Maybe Csl.AuxiliaryDataHash - --- validity_start_interval(): number | void -foreign import _txBodyValidityStartInterval - :: MaybeFfiHelper -> Csl.TransactionBody -> Maybe Csl.BigNum - --- multiassets(): Mint | void -foreign import _txBodyMultiAssets - :: MaybeFfiHelper -> Csl.TransactionBody -> Maybe Csl.Mint - --- reference_inputs(): TransactionInputs | void; -foreign import _txBodyReferenceInputs - :: MaybeFfiHelper - -> ContainerHelper - -> Csl.TransactionBody - -> Maybe (Array Csl.TransactionInput) - --- script_data_hash(): ScriptDataHash | void -foreign import _txBodyScriptDataHash - :: MaybeFfiHelper -> Csl.TransactionBody -> Maybe Csl.ScriptDataHash - --- collateral(): TransactionInputs | void -foreign import _txBodyCollateral - :: ContainerHelper - -> MaybeFfiHelper - -> Csl.TransactionBody - -> Maybe (Array Csl.TransactionInput) - --- required_signers(): Ed25519KeyHashes | void -foreign import _txBodyRequiredSigners - :: ContainerHelper - -> MaybeFfiHelper - -> Csl.TransactionBody - -> Maybe (Array Csl.Ed25519KeyHash) - --- network_id(): NetworkId | void -foreign import _txBodyNetworkId - :: Csl.NetworkId - -> Csl.NetworkId - -> MaybeFfiHelper - -> Csl.TransactionBody - -> Maybe Csl.NetworkId - --- collateral_return(): TransactionOutput | void -foreign import _txBodyCollateralReturn - :: MaybeFfiHelper - -> Csl.TransactionBody - -> Maybe Csl.TransactionOutput - --- total_collateral(): BigNum | void -foreign import _txBodyTotalCollateral - :: MaybeFfiHelper - -> Csl.TransactionBody - -> Maybe Csl.BigNum - -foreign import _unpackWithdrawals - :: ContainerHelper - -> Csl.Withdrawals - -> Array (Csl.RewardAddress /\ Csl.BigNum) - -foreign import _unpackUpdate - :: ContainerHelper - -> Csl.Update - -> { epoch :: Number - , paramUpdates :: Array (Csl.GenesisHash /\ Csl.ProtocolParamUpdate) - } - -foreign import _unpackMint - :: ContainerHelper -> Csl.Mint -> Array (Csl.ScriptHash /\ Csl.MintAssets) - -foreign import _unpackMintAssets - :: ContainerHelper -> Csl.MintAssets -> Array (Csl.AssetName /\ Csl.Int) - -type CertConvHelper (r :: Type) = - { stakeDeregistration :: Csl.StakeCredential -> r - , stakeRegistration :: Csl.StakeCredential -> r - , stakeDelegation :: - Csl.StakeCredential -> Csl.Ed25519KeyHash -> r - , poolRegistration :: Csl.PoolParams -> r - , poolRetirement :: Csl.Ed25519KeyHash -> UInt -> r - , genesisKeyDelegation :: - Csl.GenesisHash - -> Csl.GenesisDelegateHash - -> Csl.VRFKeyHash - -> r - , moveInstantaneousRewardsToOtherPotCert :: - Number -> Csl.BigNum -> r - , moveInstantaneousRewardsToStakeCreds :: - Number -> Csl.MIRToStakeCredentials -> r - } - -foreign import _convertCert - :: CertConvHelper T.Certificate - -> Csl.Certificate - -> T.Certificate - -foreign import poolParamsOperator :: Csl.PoolParams -> Csl.Ed25519KeyHash -foreign import poolParamsVrfKeyhash :: Csl.PoolParams -> Csl.VRFKeyHash -foreign import poolParamsPledge :: Csl.PoolParams -> Csl.BigNum -foreign import poolParamsCost :: Csl.PoolParams -> Csl.BigNum -foreign import poolParamsMargin :: Csl.PoolParams -> Csl.UnitInterval -foreign import poolParamsRewardAccount :: Csl.PoolParams -> Csl.RewardAddress -foreign import poolParamsPoolOwners - :: ContainerHelper -> Csl.PoolParams -> Array Csl.Ed25519KeyHash - -foreign import poolParamsRelays - :: ContainerHelper -> Csl.PoolParams -> Array Csl.Relay - -foreign import poolParamsPoolMetadata - :: MaybeFfiHelper -> Csl.PoolParams -> Maybe Csl.PoolMetadata - -foreign import unpackMIRToStakeCredentials_ - :: ContainerHelper - -> Csl.MIRToStakeCredentials - -> Array (Csl.StakeCredential /\ Csl.Int) - -foreign import convertPoolMetadata_ - :: forall a. (String -> Csl.PoolMetadataHash -> a) -> Csl.PoolMetadata -> a +convertProtocolVersion nm cslPV = notImplemented +-- _unpackProtocolVersion cslPV # +-- ( \{ major, minor } -> +-- { major: _, minor: _ } +-- <$> cslNumberToUInt (nm <> " major") major +-- <*> cslNumberToUInt (nm <> " minor") minor +-- ) diff --git a/src/Internal/Deserialization/UnspentOutput.js b/src/Internal/Deserialization/UnspentOutput.js deleted file mode 100644 index 3af30f47e..000000000 --- a/src/Internal/Deserialization/UnspentOutput.js +++ /dev/null @@ -1,64 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -const call = property => object => object[property](); -const callMaybe = property => maybe => object => { - const res = object[property](); - return res != null ? maybe.just(res) : maybe.nothing; -}; - -// Classes like TransactionInputs are just monomorphic containers with `len` -// and `get()` methods. This function abstracts away converting them to Array -// of something. -const containerExtractor = obj => { - const res = []; - - for (let i = 0; i < obj.len(); i++) { - res.push(obj.get(i)); - } - - return res; -}; - -// Dictionary wrappers share the same interface (with functions keys() and -// get(k)). -const extractDict = tuple => dict => { - const keys = containerExtractor(dict.keys()); - const res = []; - for (let key of keys) { - // We assume that something that is in keys() is always present in the - // structure as well. - res.push(tuple(key)(dict.get(key))); - } - return res; -}; - -export const getInput = call("input"); -export const getOutput = call("output"); -export const getTransactionHash = call("transaction_id"); -export const getTransactionIndex = call("index"); -export const getAddress = call("address"); -export const getPlutusData = callMaybe("plutus_data"); -export const getScriptRef = callMaybe("script_ref"); - -export function withScriptRef(ccNativeScript) { - return ccPlutusScript => scriptRef => { - if (scriptRef.is_native_script()) { - return ccNativeScript(scriptRef.native_script()); - } else if (scriptRef.is_plutus_script()) { - return ccPlutusScript(scriptRef.plutus_script()); - } else { - throw "Impossible happened: withScriptRef: not a script"; - } - }; -} - -export const getAmount = call("amount"); -export const getCoin = call("coin"); -export const getMultiAsset = callMaybe("multiasset"); -export { extractDict as extractMultiAsset }; -export { extractDict as extractAssets }; -export const getDataHash = callMaybe("data_hash"); - -export function mkTransactionUnspentOutput(input) { - return output => lib.TransactionUnspentOutput.new(input, output); -} diff --git a/src/Internal/Deserialization/UnspentOutput.purs b/src/Internal/Deserialization/UnspentOutput.purs deleted file mode 100644 index ebe6f6e00..000000000 --- a/src/Internal/Deserialization/UnspentOutput.purs +++ /dev/null @@ -1,184 +0,0 @@ -module Ctl.Internal.Deserialization.UnspentOutput - ( convertUnspentOutput - , mkTransactionUnspentOutput - , convertInput - , convertOutput - , convertValue - ) where - -import Prelude - -import Cardano.Serialization.Lib (toBytes) -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(PlutusScriptRef, NativeScriptRef) - ) as T -import Ctl.Internal.Cardano.Types.Transaction - ( TransactionOutput(TransactionOutput) - ) as T -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) as T -import Ctl.Internal.Cardano.Types.Value - ( Coin(Coin) - , CurrencySymbol - , Value - , mkCurrencySymbol - , mkNonAdaAsset - , mkValue - ) as T -import Ctl.Internal.Deserialization.NativeScript (convertNativeScript) -import Ctl.Internal.Deserialization.PlutusData (convertPlutusData) -import Ctl.Internal.Deserialization.WitnessSet (convertPlutusScript) -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Serialization.Address (Address) -import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBytes) -import Ctl.Internal.Serialization.Types - ( AssetName - , Assets - , DataHash - , MultiAsset - , NativeScript - , PlutusData - , PlutusScript - , ScriptRef - , TransactionHash - , TransactionInput - , TransactionOutput - , TransactionUnspentOutput - , Value - ) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum (toBigInt) as BigNum -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) -import Ctl.Internal.Types.TokenName (TokenName, assetNameName, mkTokenName) as T -import Ctl.Internal.Types.Transaction - ( DataHash(DataHash) - , TransactionHash(TransactionHash) - , TransactionInput(TransactionInput) - ) as T -import Data.Bitraversable (bitraverse, ltraverse) -import Data.Map (Map) -import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromMaybe) -import Data.Newtype (unwrap, wrap) -import Data.Traversable (for, traverse) -import Data.Tuple (Tuple(Tuple)) -import Data.Tuple.Nested (type (/\)) -import Data.UInt (UInt) - -convertUnspentOutput - :: TransactionUnspentOutput -> Maybe T.TransactionUnspentOutput -convertUnspentOutput tuo = do - let - input = convertInput $ getInput tuo - output <- convertOutput $ getOutput tuo - pure $ T.TransactionUnspentOutput { input, output } - -convertInput :: TransactionInput -> T.TransactionInput -convertInput input = - let - index = getTransactionIndex input - transactionId = T.TransactionHash $ getTransactionHash input - in - T.TransactionInput - { transactionId - , index - } - -convertOutput :: TransactionOutput -> Maybe T.TransactionOutput -convertOutput output = do - amount <- convertValue $ getAmount output - let - address = getAddress output - mbDataHash = - getDataHash maybeFfiHelper output <#> toBytes >>> T.DataHash - mbDatum = getPlutusData maybeFfiHelper output - datum <- case mbDatum, mbDataHash of - Just _, Just _ -> Nothing -- impossible, so it's better to fail - Just datumValue, Nothing -> pure $ OutputDatum $ wrap $ - convertPlutusData datumValue - Nothing, Just datumHash -> pure $ OutputDatumHash datumHash - Nothing, Nothing -> pure NoOutputDatum - let - scriptRef = getScriptRef maybeFfiHelper output <#> convertScriptRef - pure $ T.TransactionOutput - { address, amount, datum, scriptRef } - -convertScriptRef :: ScriptRef -> T.ScriptRef -convertScriptRef = withScriptRef - (convertNativeScript >>> T.NativeScriptRef) - (convertPlutusScript >>> T.PlutusScriptRef) - -convertValue :: Value -> Maybe T.Value -convertValue value = do - let coin = BigNum.toBigInt $ getCoin value - -- multiasset is optional - multiasset <- for (getMultiAsset maybeFfiHelper value) \multiasset -> do - let - -- get multiasset stored in `serialization-lib` types - multiasset' = - multiasset - # extractMultiAsset Tuple >>> map (map (extractAssets Tuple)) - :: Array (ScriptHash /\ Array (AssetName /\ BigNum)) - -- convert to domain types, except of BigNum - multiasset'' :: Map T.CurrencySymbol (Map T.TokenName BigNum) <- - multiasset' # - -- convert transporting out Maybes - ( traverse - ( bitraverse - -- scripthash to currency symbol - (scriptHashToBytes >>> unwrap >>> T.mkCurrencySymbol) - -- nested assetname to tokenname - (traverse (ltraverse (T.assetNameName >>> T.mkTokenName))) - ) - >>> - -- convert inner array - (map >>> map >>> map) Map.fromFoldable - >>> - -- convert outer array - map Map.fromFoldable - ) - -- convert BigNum values, possibly failing - pure $ map (map BigNum.toBigInt) multiasset'' - pure - $ T.mkValue (T.Coin coin) - $ T.mkNonAdaAsset (fromMaybe Map.empty multiasset) - -foreign import getInput :: TransactionUnspentOutput -> TransactionInput -foreign import getOutput :: TransactionUnspentOutput -> TransactionOutput -foreign import getTransactionHash :: TransactionInput -> TransactionHash -foreign import getTransactionIndex :: TransactionInput -> UInt -foreign import getAddress :: TransactionOutput -> Address -foreign import getPlutusData - :: MaybeFfiHelper -> TransactionOutput -> Maybe PlutusData - -foreign import getScriptRef - :: MaybeFfiHelper -> TransactionOutput -> Maybe ScriptRef - -foreign import withScriptRef - :: forall (a :: Type) - . (NativeScript -> a) - -> (PlutusScript -> a) - -> ScriptRef - -> a - -foreign import getAmount :: TransactionOutput -> Value -foreign import getCoin :: Value -> BigNum -foreign import getMultiAsset :: MaybeFfiHelper -> Value -> Maybe MultiAsset -foreign import extractMultiAsset - :: (forall (a :: Type) (b :: Type). a -> b -> a /\ b) - -> MultiAsset - -> Array (ScriptHash /\ Assets) - -foreign import extractAssets - :: (forall (a :: Type) (b :: Type). a -> b -> a /\ b) - -> Assets - -> Array (AssetName /\ BigNum) - -foreign import getDataHash - :: MaybeFfiHelper -> TransactionOutput -> Maybe DataHash - -foreign import mkTransactionUnspentOutput - :: TransactionInput -> TransactionOutput -> TransactionUnspentOutput diff --git a/src/Internal/Deserialization/WitnessSet.purs b/src/Internal/Deserialization/WitnessSet.purs index 541d4149d..689054551 100644 --- a/src/Internal/Deserialization/WitnessSet.purs +++ b/src/Internal/Deserialization/WitnessSet.purs @@ -10,13 +10,17 @@ module Ctl.Internal.Deserialization.WitnessSet import Prelude +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum (toBigInt) as BigNum +import Cardano.Types.PlutusData (PlutusData) as T +import Cardano.Types.PlutusScript as S +import Cardano.Types.Vkey as T import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) as T import Ctl.Internal.Cardano.Types.Transaction ( BootstrapWitness , ExUnits , Redeemer(Redeemer) , TransactionWitnessSet(TransactionWitnessSet) - , Vkey(Vkey) , Vkeywitness(Vkeywitness) ) as T import Ctl.Internal.Deserialization.Language (convertLanguage) @@ -44,11 +48,7 @@ import Ctl.Internal.Serialization.Types , Vkeywitness , Vkeywitnesses ) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum (toBigInt) as BigNum -import Ctl.Internal.Types.PlutusData (PlutusData) as T import Ctl.Internal.Types.RedeemerTag as Tag -import Ctl.Internal.Types.Scripts (PlutusScript(PlutusScript)) as S import Data.ByteArray (ByteArray) import Data.Maybe (Maybe) import Data.Newtype (wrap) diff --git a/src/Internal/Equipartition.purs b/src/Internal/Equipartition.purs deleted file mode 100644 index f78c0c389..000000000 --- a/src/Internal/Equipartition.purs +++ /dev/null @@ -1,38 +0,0 @@ -module Ctl.Internal.Equipartition - ( class Equipartition - , equipartition - ) where - -import Prelude - -import Data.Array (replicate) -import Data.Array.NonEmpty (NonEmptyArray) -import Data.Array.NonEmpty (appendArray, replicate, singleton) as NEArray -import Data.Maybe (fromJust) -import JS.BigInt (BigInt) -import JS.BigInt (fromInt, toInt) as BigInt -import Partial.Unsafe (unsafePartial) - --- | Represents types whose values can be equally divided into several parts. -class Equipartition a where - equipartition :: a -> Int -> NonEmptyArray a - --- | Computes the equipartition of a `BigInt` into `numParts` smaller `BigInt`s --- | whose values differ by no more than 1. The resultant array is sorted in --- | ascending order. --- | Taken from cardano-wallet: --- | https://github.com/input-output-hk/cardano-wallet/blob/d4b30de073f2b5eddb25bf12c2453abb42e8b352/lib/numeric/src/Cardano/Numeric/Util.hs#L127 -instance Equipartition BigInt where - equipartition bi numParts - | numParts <= one = - NEArray.singleton bi - | otherwise = - let - quot = bi / BigInt.fromInt numParts - rem = toIntUnsafe (bi `mod` BigInt.fromInt numParts) - in - NEArray.replicate (numParts - rem) quot - `NEArray.appendArray` replicate rem (quot + one) - where - toIntUnsafe :: BigInt -> Int - toIntUnsafe = unsafePartial fromJust <<< BigInt.toInt diff --git a/src/Internal/FfiHelpers.js b/src/Internal/FfiHelpers.js index dadcaab78..bff66f8ba 100644 --- a/src/Internal/FfiHelpers.js +++ b/src/Internal/FfiHelpers.js @@ -44,3 +44,11 @@ export function _containerHelper(r) { } }; } + +export const _partialToMaybe = f => nothing => just => { + try { + return just(f()); + } catch (_) { + return nothing; + } +}; diff --git a/src/Internal/FfiHelpers.purs b/src/Internal/FfiHelpers.purs index 9fdddaadc..357b95444 100644 --- a/src/Internal/FfiHelpers.purs +++ b/src/Internal/FfiHelpers.purs @@ -5,6 +5,7 @@ module Ctl.Internal.FfiHelpers , containerHelper , ErrorFfiHelper , errorHelper + , partialToMaybe ) where import Ctl.Internal.Error (E) @@ -13,6 +14,8 @@ import Data.Function ((<<<), (>>>)) import Data.Maybe (Maybe(Just, Nothing), fromMaybe) import Data.Tuple (Tuple(Tuple)) import Data.Variant (Variant) +import Partial.Unsafe (unsafePartial) +import Prelude (Unit) type MaybeFfiHelper = { nothing :: forall (x :: Type). Maybe x @@ -46,3 +49,13 @@ containerHelper = _containerHelper { untuple, tuple: Tuple } untuple :: forall a. Tuple a a -> Array a untuple (Tuple a b) = [ a, b ] + +partialToMaybe :: forall a. (Unit -> Partial => a) -> Maybe a +partialToMaybe f = _partialToMaybe (\x -> unsafePartial (f x)) Nothing Just + +foreign import _partialToMaybe + :: forall a + . (Unit -> a) + -> (forall x. Maybe x) + -> (forall x. x -> Maybe x) + -> Maybe a diff --git a/src/Internal/FromData.purs b/src/Internal/FromData.purs index 60602150e..4351476c8 100644 --- a/src/Internal/FromData.purs +++ b/src/Internal/FromData.purs @@ -19,6 +19,9 @@ module Ctl.Internal.FromData import Prelude +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData (PlutusData(Bytes, Constr, List, Integer)) import Contract.Crypto.Secp256k1 (Secp256k1PrivateKey) import Contract.Crypto.Secp256k1.ECDSA (ECDSAPublicKey) import Control.Alternative ((<|>)) @@ -32,10 +35,7 @@ import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed ( class GetIndexWithLabel , class GetWithLabel ) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.PlutusData (PlutusData(Bytes, Constr, List, Integer)) import Ctl.Internal.Types.RawBytes (RawBytes) import Data.Array (uncons) import Data.Array as Array diff --git a/src/Internal/Hashing.js b/src/Internal/Hashing.js index 6b8117f6f..22d6db9f4 100644 --- a/src/Internal/Hashing.js +++ b/src/Internal/Hashing.js @@ -3,7 +3,6 @@ import Blake2 from "blakejs"; import SHA256 from "jssha/sha256"; import SHA3 from "jssha/sha3"; -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function blake2b224Hash(bytesToHash) { return Blake2.blake2b(bytesToHash, null, 28); @@ -21,14 +20,6 @@ export function blake2b256HashHex(bytesToHash) { return Blake2.blake2bHex(bytesToHash, null, 32); } -export function hashPlutusData(plutusData) { - return lib.hash_plutus_data(plutusData); -} - -export function hashPlutusScript(script) { - return script.hash(); -} - const SHA256_HASH_VARIANT = "SHA-256"; const SHA3_256_HASH_VARIANT = "SHA3-256"; diff --git a/src/Internal/Hashing.purs b/src/Internal/Hashing.purs index 80b9d470c..10e640d83 100644 --- a/src/Internal/Hashing.purs +++ b/src/Internal/Hashing.purs @@ -3,8 +3,7 @@ module Ctl.Internal.Hashing , blake2b224HashHex , blake2b256Hash , blake2b256HashHex - , datumHash - , hashPlutusData + , plutusDataHash , md5HashHex , plutusScriptHash , scriptRefHash @@ -13,36 +12,37 @@ module Ctl.Internal.Hashing , sha3_256Hash , sha3_256HashHex , transactionHash + , mintingPolicyHash ) where import Prelude -import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Serialization.Lib + ( hashPlutusData + , nativeScript_hash + , plutusScript_hash + ) +import Cardano.Types.DataHash (DataHash) +import Cardano.Types.NativeScript (NativeScript) +import Cardano.Types.NativeScript as NativeScript +import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.ScriptHash (ScriptHash) import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) -import Ctl.Internal.Deserialization.Transaction (_txBody) -import Ctl.Internal.Serialization.Hash (ScriptHash, nativeScriptHash) -import Ctl.Internal.Serialization.NativeScript (convertNativeScript) -import Ctl.Internal.Serialization.PlutusData (convertPlutusData) -import Ctl.Internal.Serialization.PlutusScript (convertPlutusScript) -import Ctl.Internal.Serialization.Types - ( DataHash - , PlutusData - , PlutusScript - , Transaction - ) as Serialization -import Ctl.Internal.Types.Datum (Datum) -import Ctl.Internal.Types.Scripts (PlutusScript) -import Ctl.Internal.Types.Transaction (DataHash, TransactionHash) +import Ctl.Internal.Helpers (notImplemented) +import Ctl.Internal.Serialization.Types (Transaction) as Serialization +import Ctl.Internal.Types.Scripts (MintingPolicy(..)) +import Ctl.Internal.Types.Transaction (TransactionHash) import Data.ByteArray (ByteArray) -import Data.Maybe (fromJust) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (wrap) import Effect (Effect) import Node.Buffer (fromString, toString) as Buffer import Node.Crypto.Hash (createHash, digest, update) as Hash import Node.Encoding (Encoding(Hex, UTF8)) -import Partial.Unsafe (unsafePartial) foreign import blake2b224Hash :: ByteArray -> ByteArray @@ -52,11 +52,6 @@ foreign import blake2b256Hash :: ByteArray -> ByteArray foreign import blake2b256HashHex :: ByteArray -> String -foreign import hashPlutusData - :: Serialization.PlutusData -> Serialization.DataHash - -foreign import hashPlutusScript :: Serialization.PlutusScript -> ScriptHash - foreign import sha256Hash :: ByteArray -> ByteArray foreign import sha256HashHex :: ByteArray -> String @@ -71,25 +66,33 @@ md5HashHex contents = do digest <- Hash.createHash "md5" >>= Hash.update buf >>= Hash.digest Buffer.toString Hex digest -datumHash :: Datum -> DataHash -datumHash = - wrap <<< toBytes <<< hashPlutusData - <<< convertPlutusData - <<< unwrap +plutusDataHash :: PlutusData -> DataHash +plutusDataHash = + wrap <<< hashPlutusData <<< PlutusData.toCsl + +-- | Converts a Plutus-style `MintingPolicy` to an `MintingPolicyHash` +mintingPolicyHash :: MintingPolicy -> ScriptHash +mintingPolicyHash = case _ of + PlutusMintingPolicy script -> plutusScriptHash script + NativeMintingPolicy nscript -> nativeScriptHash nscript -- | Calculates the hash of the transaction by applying `blake2b256Hash` to -- | the cbor-encoded transaction body. transactionHash :: Serialization.Transaction -> TransactionHash transactionHash tx = - -- can't fail, because the length is correct - wrap $ unsafePartial $ fromJust $ fromBytes $ blake2b256Hash $ toBytes - $ _txBody - $ tx + notImplemented + +-- -- can't fail, because the length is correct +-- wrap $ unsafePartial $ fromJust $ fromBytes $ blake2b256Hash $ toBytes +-- $ _txBody +-- $ tx plutusScriptHash :: PlutusScript -> ScriptHash -plutusScriptHash = hashPlutusScript <<< convertPlutusScript +plutusScriptHash = wrap <<< plutusScript_hash <<< PlutusScript.toCsl + +nativeScriptHash :: NativeScript -> ScriptHash +nativeScriptHash = wrap <<< nativeScript_hash <<< NativeScript.toCsl scriptRefHash :: ScriptRef -> ScriptHash scriptRefHash (PlutusScriptRef plutusScript) = plutusScriptHash plutusScript -scriptRefHash (NativeScriptRef nativeScript) = - nativeScriptHash $ convertNativeScript nativeScript +scriptRefHash (NativeScriptRef nativeScript) = nativeScriptHash nativeScript diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index fddbb6049..cf6859f24 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -11,7 +11,6 @@ module Ctl.Internal.Helpers , bigIntToUInt , bugTrackerLink , concatPaths - , contentsProp , encodeMap , encodeTagged , encodeTagged' @@ -30,23 +29,36 @@ module Ctl.Internal.Helpers , mkErrorRecord , notImplemented , showWithParens - , tagProp , uIntToBigInt , pprintTagSet , eqOrd , showFromBytes + , showFromCbor + , compareViaCslBytes + , decodeMap ) where import Prelude -import Aeson (class EncodeAeson, Aeson, encodeAeson, toString) +import Aeson + ( class DecodeAeson + , class DecodeTupleAux + , class EncodeAeson + , Aeson + , JsonDecodeError + , decodeAeson + , encodeAeson + , toString + ) import Cardano.Serialization.Lib (class IsBytes, toBytes) import Cardano.Serialization.Lib.Internal (class IsCsl) +import Control.Alt ((<|>)) import Control.Monad.Error.Class (class MonadError, throwError) import Ctl.Internal.Helpers.Formatter (showTags) import Data.Array (union) import Data.Bifunctor (bimap) import Data.Bitraversable (ltraverse) +import Data.ByteArray (byteArrayToHex) import Data.Either (Either(Right), either) import Data.Function (on) import Data.JSDate (now) @@ -61,8 +73,8 @@ import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, maybe) import Data.Maybe.First (First(First)) import Data.Maybe.Last (Last(Last)) import Data.String (Pattern(Pattern), null, stripPrefix, stripSuffix) -import Data.Traversable (traverse) -import Data.Tuple (snd, uncurry) +import Data.Traversable (for, traverse) +import Data.Tuple (fst, snd, uncurry) import Data.Tuple.Nested (type (/\), (/\)) import Data.Typelevel.Undefined (undefined) import Data.UInt (UInt) @@ -71,6 +83,7 @@ import Effect (Effect) import Effect.Class (class MonadEffect) import Effect.Class.Console (log) import Effect.Exception (throw) +import Foreign.Object (Object) import Foreign.Object as Obj import JS.BigInt (BigInt) import JS.BigInt as BigInt @@ -268,19 +281,34 @@ encodeMap m = pairs :: Array (Aeson /\ Aeson) pairs = map (bimap encodeAeson encodeAeson) $ toUnfoldable m -tagProp :: String -tagProp = "tag" - -contentsProp :: String -contentsProp = "contents" +-- TODO: test with encodeMap +decodeMap + :: forall (k :: Type) (v :: Type) + . DecodeAeson k + => Ord k + => DecodeAeson v + => DecodeTupleAux (k /\ v) + => Aeson + -> Either JsonDecodeError (Map k v) +decodeMap aeson = do + decodeAsArray <|> decodeAsObject + where + decodeAsObject = do + props <- (decodeAeson aeson :: Either _ (Object v)) + Map.fromFoldable <$> for (Obj.toUnfoldable props :: Array (String /\ v)) + \(kString /\ v) -> do + k <- decodeAeson (encodeAeson kString) + pure $ k /\ v + decodeAsArray = do + Map.fromFoldable <$> (decodeAeson aeson :: Either _ (Array (k /\ v))) -- | Args: tag value encoder -- | Encodes `value` using `encoder` as `{ "tag": *encoded tag*, "contents": *encoded value* }` encodeTagged :: forall a. String -> a -> (a -> Aeson) -> Aeson encodeTagged tag a encoder = encodeAeson $ Obj.fromFoldable - [ tagProp /\ encodeAeson tag - , contentsProp /\ encoder a + [ "tag" /\ encodeAeson tag + , "contents" /\ encoder a ] -- | A wrapper around `encodeTagged` function that uses @@ -309,8 +337,26 @@ infixl 5 fromMaybeFlipped as ?? eqOrd :: forall a. Ord a => a -> a -> Boolean eqOrd a b = compare a b == EQ +compareViaCslBytes + :: forall a b + . IsCsl a + => IsBytes a + => IsCsl b + => IsBytes b + => a + -> b + -> Ordering +compareViaCslBytes a b = + compare (byteArrayToHex $ toBytes a) (byteArrayToHex $ toBytes b) + showFromBytes :: forall a. IsCsl a => IsBytes a => String -> a -> String showFromBytes typeName a = "(" <> typeName <> " $ unsafePartial $ fromJust $ fromBytes " <> show (toBytes a) <> ")" + +showFromCbor :: forall a. IsCsl a => IsBytes a => String -> a -> String +showFromCbor typeName a = "(" <> typeName + <> " $ unsafePartial $ fromJust $ decodeCbor $ CborBytes $ " + <> show (toBytes a) + <> ")" diff --git a/src/Internal/Metadata/Cip25/Cip25String.purs b/src/Internal/Metadata/Cip25/Cip25String.purs index 55aee12ce..3b702cd78 100644 --- a/src/Internal/Metadata/Cip25/Cip25String.purs +++ b/src/Internal/Metadata/Cip25/Cip25String.purs @@ -19,12 +19,12 @@ import Aeson , JsonDecodeError(TypeMismatch) , decodeAeson ) +import Cardano.Types.PlutusData (PlutusData) import Control.Alt ((<|>)) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.Metadata.FromMetadata (class FromMetadata, fromMetadata) import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.PlutusData (PlutusData) import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum) import Data.Array ((:)) import Data.Array as Array diff --git a/src/Internal/Metadata/Cip25/Common.purs b/src/Internal/Metadata/Cip25/Common.purs index 09b1c5eeb..5f701362f 100644 --- a/src/Internal/Metadata/Cip25/Common.purs +++ b/src/Internal/Metadata/Cip25/Common.purs @@ -3,7 +3,7 @@ -- | https://cips.cardano.org/cips/cip25/ module Ctl.Internal.Metadata.Cip25.Common ( nftMetadataLabel - , Cip25TokenName(Cip25TokenName) + , Cip25AssetName(Cip25AssetName) , Cip25MetadataFile(Cip25MetadataFile) ) where @@ -18,6 +18,7 @@ import Aeson , encodeAeson , (.:) ) +import Cardano.Types.AssetName (AssetName, mkAssetName, unAssetName) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.Metadata.Cip25.Cip25String ( Cip25String @@ -35,7 +36,6 @@ import Ctl.Internal.Metadata.Helpers import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) import Ctl.Internal.Plutus.Types.AssocMap as AssocMap import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.TokenName (TokenName, getTokenName, mkTokenName) import Data.Either (note) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap, wrap) @@ -47,26 +47,26 @@ import JS.BigInt as BigInt nftMetadataLabel :: BigInt nftMetadataLabel = BigInt.fromInt 721 --- | A newtype over `TokenName` that uses correct Json encoding (without `0x` prefix) -newtype Cip25TokenName = Cip25TokenName TokenName +-- | A newtype over `AssetName` that uses correct Json encoding (without `0x` prefix) +newtype Cip25AssetName = Cip25AssetName AssetName -derive newtype instance Eq Cip25TokenName -derive newtype instance Ord Cip25TokenName -derive newtype instance ToData Cip25TokenName -derive newtype instance FromData Cip25TokenName -derive newtype instance ToMetadata Cip25TokenName -derive newtype instance FromMetadata Cip25TokenName -derive instance Newtype Cip25TokenName _ +derive newtype instance Eq Cip25AssetName +derive newtype instance Ord Cip25AssetName +derive newtype instance ToData Cip25AssetName +derive newtype instance FromData Cip25AssetName +derive newtype instance ToMetadata Cip25AssetName +derive newtype instance FromMetadata Cip25AssetName +derive instance Newtype Cip25AssetName _ -instance Show Cip25TokenName where - show (Cip25TokenName tn) = "(Cip25TokenName " <> show tn <> ")" +instance Show Cip25AssetName where + show (Cip25AssetName tn) = "(Cip25AssetName " <> show tn <> ")" -instance DecodeAeson Cip25TokenName where - decodeAeson = (note (TypeMismatch "TokenName") <<< map wrap <<< mkTokenName) +instance DecodeAeson Cip25AssetName where + decodeAeson = (note (TypeMismatch "AssetName") <<< map wrap <<< mkAssetName) <=< decodeAeson -instance EncodeAeson Cip25TokenName where - encodeAeson = encodeAeson <<< getTokenName <<< unwrap +instance EncodeAeson Cip25AssetName where + encodeAeson = encodeAeson <<< unAssetName <<< unwrap -- | `files_details` in CDDL -- | diff --git a/src/Internal/Metadata/Cip25/V2.purs b/src/Internal/Metadata/Cip25/V2.purs index 95094d80e..532acbaaa 100644 --- a/src/Internal/Metadata/Cip25/V2.purs +++ b/src/Internal/Metadata/Cip25/V2.purs @@ -27,6 +27,9 @@ import Aeson , (.:?) ) import Aeson as Aeson +import Cardano.Types.AsCbor (decodeCbor, encodeCbor) +import Cardano.Types.AssetName (mkAssetName, unAssetName) +import Cardano.Types.PlutusData (PlutusData(Map, Integer)) import Control.Alt ((<|>)) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.Metadata.Cip25.Cip25String @@ -37,8 +40,8 @@ import Ctl.Internal.Metadata.Cip25.Cip25String , toMetadataString ) import Ctl.Internal.Metadata.Cip25.Common - ( Cip25MetadataFile(Cip25MetadataFile) - , Cip25TokenName(Cip25TokenName) + ( Cip25AssetName(Cip25AssetName) + , Cip25MetadataFile(Cip25MetadataFile) , nftMetadataLabel ) import Ctl.Internal.Metadata.FromMetadata (class FromMetadata, fromMetadata) @@ -50,13 +53,9 @@ import Ctl.Internal.Metadata.Helpers import Ctl.Internal.Metadata.MetadataType (class MetadataType) import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) import Ctl.Internal.Plutus.Types.AssocMap (Map(Map), singleton) as AssocMap -import Ctl.Internal.Serialization.Hash (scriptHashFromBytes, scriptHashToBytes) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Int as Int -import Ctl.Internal.Types.PlutusData (PlutusData(Map, Integer)) -import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Types.Scripts (MintingPolicyHash) -import Ctl.Internal.Types.TokenName (getTokenName, mkTokenName) import Ctl.Internal.Types.TransactionMetadata ( TransactionMetadatum(Int, MetadataMap) ) @@ -91,7 +90,7 @@ import Partial.Unsafe (unsafePartial) -- | ``` newtype Cip25MetadataEntry = Cip25MetadataEntry { policyId :: MintingPolicyHash - , assetName :: Cip25TokenName + , assetName :: Cip25AssetName -- metadata_details: , name :: Cip25String , image :: String @@ -164,7 +163,7 @@ metadataEntryToMetadata (Cip25MetadataEntry entry) = toMetadata $ metadataEntryFromMetadata :: MintingPolicyHash - -> Cip25TokenName + -> Cip25AssetName -> TransactionMetadatum -> Maybe Cip25MetadataEntry metadataEntryFromMetadata policyId assetName contents = do @@ -195,7 +194,7 @@ metadataEntryToData (Cip25MetadataEntry entry) = toData $ AssocMap.Map $ metadataEntryFromData :: MintingPolicyHash - -> Cip25TokenName + -> Cip25AssetName -> PlutusData -> Maybe Cip25MetadataEntry metadataEntryFromData policyId assetName contents = do @@ -209,7 +208,7 @@ metadataEntryFromData policyId assetName contents = do metadataEntryDecodeAeson :: MintingPolicyHash - -> Cip25TokenName + -> Cip25AssetName -> Aeson -> Either JsonDecodeError Cip25MetadataEntry metadataEntryDecodeAeson policyId assetName = @@ -229,21 +228,21 @@ metadataEntryDecodeAeson policyId assetName = -- | key encodePolicyIdKey :: Cip25MetadataEntry -> String encodePolicyIdKey (Cip25MetadataEntry { policyId }) = - rawBytesToHex $ scriptHashToBytes $ unwrap policyId + byteArrayToHex $ unwrap $ encodeCbor $ unwrap policyId -- | Decode the CIP25 policy id key decodePolicyIdKey :: String -> Maybe MintingPolicyHash -decodePolicyIdKey = map wrap <<< scriptHashFromBytes <=< hexToByteArray +decodePolicyIdKey = map wrap <<< decodeCbor <=< map wrap <<< hexToByteArray -- | Encode the entry's asset name to the string used as the metadata -- | key encodeAssetNameKey :: Cip25MetadataEntry -> String encodeAssetNameKey (Cip25MetadataEntry { assetName }) = - byteArrayToHex $ getTokenName $ unwrap assetName + byteArrayToHex $ unAssetName $ unwrap assetName -- | Decode the CIP25 asset name key -decodeAssetNameKey :: String -> Maybe Cip25TokenName -decodeAssetNameKey = map wrap <<< mkTokenName <=< hexToByteArray +decodeAssetNameKey :: String -> Maybe Cip25AssetName +decodeAssetNameKey = map wrap <<< mkAssetName <=< hexToByteArray newtype Cip25Metadata = Cip25Metadata (Array Cip25MetadataEntry) @@ -372,12 +371,12 @@ instance DecodeAeson Cip25Metadata where decodePolicyId = note (TypeMismatch "Expected hex-encoded policy id") <<< map wrap - <<< (scriptHashFromBytes <=< hexToByteArray) + <<< (decodeCbor <=< map wrap <<< hexToByteArray) - decodeAssetName :: String -> Either JsonDecodeError Cip25TokenName + decodeAssetName :: String -> Either JsonDecodeError Cip25AssetName decodeAssetName = note (TypeMismatch "Expected UTF-8 encoded asset name") <<< map wrap - <<< mkTokenName + <<< mkAssetName <<< wrap <<< encodeUtf8 diff --git a/src/Internal/Metadata/Helpers.purs b/src/Internal/Metadata/Helpers.purs index b9321709a..9fbe3a2b6 100644 --- a/src/Internal/Metadata/Helpers.purs +++ b/src/Internal/Metadata/Helpers.purs @@ -9,7 +9,7 @@ module Ctl.Internal.Metadata.Helpers import Prelude import Aeson (JsonDecodeError(TypeMismatch)) -import Ctl.Internal.Types.PlutusData (PlutusData(Map, Bytes)) +import Cardano.Types.PlutusData (PlutusData(Map, Bytes)) import Ctl.Internal.Types.TransactionMetadata ( TransactionMetadatum(MetadataMap, Text) ) diff --git a/src/Internal/NativeScripts.purs b/src/Internal/NativeScripts.purs index e692cffd0..c55288098 100644 --- a/src/Internal/NativeScripts.purs +++ b/src/Internal/NativeScripts.purs @@ -6,6 +6,8 @@ module Ctl.Internal.NativeScripts import Prelude +import Cardano.Serialization.Lib (nativeScript_hash) +import Cardano.Types.NativeScript as NativeScript import Ctl.Internal.Cardano.Types.NativeScript ( NativeScript ( ScriptPubkey @@ -18,7 +20,6 @@ import Ctl.Internal.Cardano.Types.NativeScript ) import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash) import Ctl.Internal.Serialization.Hash as Hashing -import Ctl.Internal.Serialization.NativeScript (convertNativeScript) import Data.Array as Array import Data.Foldable (foldr, maximumBy) import Data.Function (on) @@ -39,7 +40,7 @@ instance Show NativeScriptHash where show (NativeScriptHash sh) = "(NativeScriptHash " <> show sh <> ")" nativeScriptHash :: NativeScript -> NativeScriptHash -nativeScriptHash = wrap <<< Hashing.nativeScriptHash <<< convertNativeScript +nativeScriptHash = wrap <<< wrap <<< nativeScript_hash <<< NativeScript.toCsl -- | `SetChoice` is an internal type representing internal state of -- | `getMaximumSigners` algorithm. diff --git a/src/Internal/Partition.purs b/src/Internal/Partition.purs index 16c4ad80e..9677368b5 100644 --- a/src/Internal/Partition.purs +++ b/src/Internal/Partition.purs @@ -7,6 +7,13 @@ module Ctl.Internal.Partition import Prelude +import Cardano.Types.AssetName (AssetName(..)) +import Cardano.Types.BigNum (BigNum(..)) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.MultiAsset (MultiAsset(..)) +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.ScriptHash (ScriptHash(..)) +import Cardano.Types.Value (Value(..)) import Data.Array (replicate) import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty @@ -19,8 +26,9 @@ import Data.Array.NonEmpty , zip , zipWith ) as NEArray -import Data.Foldable (any, length, sum) +import Data.Foldable (any, foldl, length, sum) import Data.Function (on) +import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (class Newtype, unwrap) import Data.Ordering (invert) as Ordering @@ -33,6 +41,11 @@ import Partial.Unsafe (unsafePartial) class Partition (a :: Type) where partition :: a -> NonEmptyArray a -> Maybe (NonEmptyArray a) +instance Partition BigNum where + partition bigNum = unsafePartial $ map BigNum.toBigInt + >>> partition (BigNum.toBigInt bigNum) + >>> map (map $ fromJust <<< BigNum.fromBigInt) + -- | Partitions a `BigInt` into a number of parts, where the size of each part -- | is proportional to the size of its corresponding element in the given -- | list of weights, and the number of parts is equal to the number of weights. @@ -110,6 +123,27 @@ instance Equipartition BigInt where NEArray.replicate (numParts - rem) quot `NEArray.appendArray` replicate rem (quot + one) +instance Equipartition BigNum where + equipartition bn = unsafePartial + $ map (fromJust <<< BigNum.fromBigInt) + <<< equipartition (BigNum.toBigInt bn) + +instance Equipartition MultiAsset where + equipartition nonAdaAssets numParts = + foldl accumulate (NEArray.replicate numParts MultiAsset.empty) + (MultiAsset.flatten nonAdaAssets) + where + append' a b = unsafePartial $ fromJust $ add a b + + accumulate + :: NonEmptyArray MultiAsset + -> (ScriptHash /\ AssetName /\ BigNum) + -> NonEmptyArray MultiAsset + accumulate xs (cs /\ tn /\ tokenQuantity) = + NEArray.zipWith append' xs $ + map (MultiAsset.singleton cs tn) + (equipartition tokenQuantity numParts) + toIntUnsafe :: BigInt -> Int toIntUnsafe = unsafePartial fromJust <<< BigInt.toInt @@ -129,3 +163,50 @@ instance Ord a => Ord (QuotRem a) where case compare rem0 rem1 of EQ -> compare quot0 quot1 ordering -> ordering + +-- | Partitions a `Value` into smaller `Value`s, where the Ada amount and the +-- | quantity of each token is equipartitioned across the resultant `Value`s, +-- | with the goal that no token quantity in any of the resultant `Value`s +-- | exceeds the given upper bound. +-- | Taken from cardano-wallet: +-- | https://github.com/input-output-hk/cardano-wallet/blob/d4b30de073f2b5eddb25bf12c2453abb42e8b352/lib/wallet/src/Cardano/Wallet/Primitive/Types/TokenBundle.hs#L381 +equipartitionValueWithTokenQuantityUpperBound + :: BigInt -> Value -> NonEmptyArray Value +equipartitionValueWithTokenQuantityUpperBound maxTokenQuantity value = + let + Value coin nonAdaAssets = value + ms /\ numParts = + equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets + maxTokenQuantity + in + NEArray.zipWith Value (equipartition coin numParts) ms + +-- | Partitions a `MultiAsset` into smaller `MultiAsset`s, where the +-- | quantity of each token is equipartitioned across the resultant +-- | `MultiAsset`s, with the goal that no token quantity in any of the +-- | resultant `MultiAsset`s exceeds the given upper bound. +-- | Taken from cardano-wallet: +-- | https://github.com/input-output-hk/cardano-wallet/blob/d4b30de073f2b5eddb25bf12c2453abb42e8b352/lib/wallet/src/Cardano/Wallet/Primitive/Types/TokenMap.hs#L780 +equipartitionAssetsWithTokenQuantityUpperBound + :: MultiAsset -> BigInt -> NonEmptyArray MultiAsset /\ Int +equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity = + case + maxTokenQuantity <= Prelude.zero || BigNum.toBigInt currentMaxTokenQuantity + <= maxTokenQuantity + of + true -> + NEArray.singleton nonAdaAssets /\ one + false -> + equipartition nonAdaAssets numParts /\ numParts + where + numParts :: Int + numParts = unsafePartial $ fromJust $ BigInt.toInt $ + divCeil (BigNum.toBigInt currentMaxTokenQuantity) maxTokenQuantity + + tokenQuantity :: (ScriptHash /\ AssetName /\ BigNum) -> BigNum + tokenQuantity (_ /\ _ /\ quantity) = quantity + + currentMaxTokenQuantity :: BigNum + currentMaxTokenQuantity = + foldl (\quantity tn -> quantity `max` tokenQuantity tn) BigNum.zero + (MultiAsset.flatten nonAdaAssets) diff --git a/src/Internal/Plutus/Conversion.purs b/src/Internal/Plutus/Conversion.purs index 993ae9f8d..b1e388294 100644 --- a/src/Internal/Plutus/Conversion.purs +++ b/src/Internal/Plutus/Conversion.purs @@ -35,13 +35,18 @@ module Ctl.Internal.Plutus.Conversion import Prelude +import Cardano.Types.BigNum as BigNum +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.TransactionOutput (TransactionOutput) as Cardano +import Cardano.Types.UtxoMap (UtxoMap) as Cardano +import Cardano.Types.Value as Value import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.Cardano.Types.Transaction (TransactionOutput, UtxoMap) as Cardano import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput ) as Cardano import Ctl.Internal.Cardano.Types.Value (Coin) as Cardano import Ctl.Internal.Hashing (scriptRefHash) +import Ctl.Internal.Helpers (notImplemented) import Ctl.Internal.Plutus.Conversion.Address ( fromPlutusAddress , fromPlutusAddressWithNetworkTag @@ -63,8 +68,7 @@ import Ctl.Internal.Plutus.Types.TransactionUnspentOutput ( TransactionUnspentOutput ) as Plutus import Ctl.Internal.Plutus.Types.Value (Coin) as Plutus -import Ctl.Internal.Serialization.Address (NetworkId) -import Data.Maybe (Maybe) +import Data.Maybe (Maybe(..), fromMaybe) import Data.Newtype (unwrap, wrap) import Data.Traversable (traverse) @@ -72,11 +76,11 @@ import Data.Traversable (traverse) -- Plutus Coin <-> Cardano Coin -------------------------------------------------------------------------------- -fromPlutusCoin :: Plutus.Coin -> Cardano.Coin -fromPlutusCoin = wrap <<< unwrap +fromPlutusCoin :: Plutus.Coin -> Maybe Cardano.Coin +fromPlutusCoin = map wrap <<< BigNum.fromBigInt <<< unwrap toPlutusCoin :: Cardano.Coin -> Plutus.Coin -toPlutusCoin = wrap <<< unwrap +toPlutusCoin = wrap <<< BigNum.toBigInt <<< unwrap -------------------------------------------------------------------------------- -- Plutus TransactionOutput <-> Cardano TransactionOutput @@ -93,15 +97,15 @@ fromPlutusTxOutput networkId scriptRef plutusTxOut = in wrap { address: fromPlutusAddress networkId rec.address - , amount: fromPlutusValue rec.amount - , datum: rec.datum + , amount: fromMaybe Value.zero $ fromPlutusValue rec.amount + , datum: Just rec.datum , scriptRef } toPlutusTxOutput :: Cardano.TransactionOutput -> Maybe Plutus.TransactionOutput toPlutusTxOutput cardanoTxOut = do - let rec = unwrap cardanoTxOut + let rec = notImplemented -- unwrap cardanoTxOut address <- toPlutusAddress rec.address let amount = toPlutusValue rec.amount diff --git a/src/Internal/Plutus/Conversion/Address.purs b/src/Internal/Plutus/Conversion/Address.purs index a2cc5e18b..48c081946 100644 --- a/src/Internal/Plutus/Conversion/Address.purs +++ b/src/Internal/Plutus/Conversion/Address.purs @@ -7,7 +7,14 @@ module Ctl.Internal.Plutus.Conversion.Address import Prelude +import Cardano.Plutus.Types.PubKeyHash (PubKeyHash(..)) +import Cardano.Serialization.Lib (baseAddress_toAddress) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.Address (Address) +import Cardano.Types.BaseAddress as BA +import Cardano.Types.NetworkId (NetworkId) import Control.Alt ((<|>)) +import Ctl.Internal.Helpers (notImplemented) import Ctl.Internal.Plutus.Types.Address ( Address(Address) , AddressWithNetworkTag(AddressWithNetworkTag) @@ -16,34 +23,6 @@ import Ctl.Internal.Plutus.Types.Credential ( Credential(PubKeyCredential, ScriptCredential) , StakingCredential(StakingHash, StakingPtr) ) -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId - , Pointer - , StakeCredential - , addressNetworkId - , baseAddressDelegationCred - , baseAddressFromAddress - , baseAddressPaymentCred - , baseAddressToAddress - , enterpriseAddressFromAddress - , enterpriseAddressPaymentCred - , enterpriseAddressToAddress - , paymentKeyHashEnterpriseAddress - , paymentKeyHashPointerAddress - , paymentKeyHashScriptHashAddress - , paymentKeyHashStakeKeyHashAddress - , pointerAddressFromAddress - , pointerAddressPaymentCred - , pointerAddressStakePointer - , pointerAddressToAddress - , scriptHashEnterpriseAddress - , scriptHashPointerAddress - , scriptHashScriptHashAddress - , scriptHashStakeKeyHashAddress - , withStakeCredential - ) as Csl -import Ctl.Internal.Types.PubKeyHash (PubKeyHash(PubKeyHash)) import Ctl.Internal.Types.Scripts (ValidatorHash(ValidatorHash)) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) @@ -55,59 +34,60 @@ import Data.Newtype (unwrap, wrap) fromPlutusAddressWithNetworkTag :: Plutus.AddressWithNetworkTag -> Csl.Address fromPlutusAddressWithNetworkTag (Plutus.AddressWithNetworkTag rec) = - fromPlutusAddress rec.networkId rec.address + notImplemented -- fromPlutusAddress rec.networkId rec.address -- | Builds a CSL-level address from a Plutus address. -- | CIP-0019: https://cips.cardano.org/cips/cip19/ fromPlutusAddress - :: Csl.NetworkId -> Plutus.Address -> Csl.Address + :: NetworkId -> Plutus.Address -> Address fromPlutusAddress networkId (Plutus.Address { addressCredential, addressStakingCredential }) = - case addressCredential, addressStakingCredential of - -- %b0000 | network tag | key hash | key hash - PubKeyCredential (PubKeyHash pkh), - Just (StakingHash (PubKeyCredential (PubKeyHash skh))) -> - Csl.baseAddressToAddress $ - Csl.paymentKeyHashStakeKeyHashAddress networkId pkh skh - - -- %b0001 | network tag | script hash | key hash - ScriptCredential (ValidatorHash sh), - Just (StakingHash (PubKeyCredential (PubKeyHash skh))) -> - Csl.baseAddressToAddress $ - Csl.scriptHashStakeKeyHashAddress networkId sh skh - - -- %b0010 | network tag | key hash | script hash - PubKeyCredential (PubKeyHash pkh), - Just (StakingHash (ScriptCredential (ValidatorHash sh))) -> - Csl.baseAddressToAddress $ - Csl.paymentKeyHashScriptHashAddress networkId pkh sh - - -- %b0011 | network tag | script hash | script hash - ScriptCredential (ValidatorHash sh), - Just (StakingHash (ScriptCredential (ValidatorHash sh'))) -> - Csl.baseAddressToAddress $ - Csl.scriptHashScriptHashAddress networkId sh sh' - - -- %b0100 | network tag | key hash | pointer - PubKeyCredential (PubKeyHash pkh), Just (StakingPtr ptr) -> - Csl.pointerAddressToAddress $ - Csl.paymentKeyHashPointerAddress networkId pkh ptr - - -- %b0101 | network tag | script hash | pointer - ScriptCredential (ValidatorHash sh), Just (StakingPtr ptr) -> - Csl.pointerAddressToAddress $ - Csl.scriptHashPointerAddress networkId sh ptr - - -- %b0110 | network tag | key hash - PubKeyCredential (PubKeyHash pkh), Nothing -> - Csl.enterpriseAddressToAddress $ - Csl.paymentKeyHashEnterpriseAddress networkId pkh - - -- %b0111 | network tag | script hash - ScriptCredential (ValidatorHash sh), Nothing -> - Csl.enterpriseAddressToAddress $ - Csl.scriptHashEnterpriseAddress networkId sh + notImplemented + +-- case addressCredential, addressStakingCredential of +-- -- %b0000 | network tag | key hash | key hash +-- PubKeyCredential (PubKeyHash pkh), +-- Just (StakingHash (PubKeyCredential (PubKeyHash skh))) -> +-- baseAddress_toAddress $ BA.BaseAddress networkId pkh skh + +-- -- %b0001 | network tag | script hash | key hash +-- ScriptCredential (ValidatorHash sh), +-- Just (StakingHash (PubKeyCredential (PubKeyHash skh))) -> +-- Csl.baseAddressToAddress $ +-- Csl.scriptHashStakeKeyHashAddress networkId sh skh + +-- -- %b0010 | network tag | key hash | script hash +-- PubKeyCredential (PubKeyHash pkh), +-- Just (StakingHash (ScriptCredential (ValidatorHash sh))) -> +-- Csl.baseAddressToAddress $ +-- Csl.paymentKeyHashScriptHashAddress networkId pkh sh + +-- -- %b0011 | network tag | script hash | script hash +-- ScriptCredential (ValidatorHash sh), +-- Just (StakingHash (ScriptCredential (ValidatorHash sh'))) -> +-- Csl.baseAddressToAddress $ +-- Csl.scriptHashScriptHashAddress networkId sh sh' + +-- -- %b0100 | network tag | key hash | pointer +-- PubKeyCredential (PubKeyHash pkh), Just (StakingPtr ptr) -> +-- Csl.pointerAddressToAddress $ +-- Csl.paymentKeyHashPointerAddress networkId pkh ptr + +-- -- %b0101 | network tag | script hash | pointer +-- ScriptCredential (ValidatorHash sh), Just (StakingPtr ptr) -> +-- Csl.pointerAddressToAddress $ +-- Csl.scriptHashPointerAddress networkId sh ptr + +-- -- %b0110 | network tag | key hash +-- PubKeyCredential (PubKeyHash pkh), Nothing -> +-- Csl.enterpriseAddressToAddress $ +-- Csl.paymentKeyHashEnterpriseAddress networkId pkh + +-- -- %b0111 | network tag | script hash +-- ScriptCredential (ValidatorHash sh), Nothing -> +-- Csl.enterpriseAddressToAddress $ +-- Csl.scriptHashEnterpriseAddress networkId sh -------------------------------------------------------------------------------- -- CSL Address -> Plutus Address @@ -125,79 +105,80 @@ toPlutusAddress = -- | CIP-0019: https://cips.cardano.org/cips/cip19/ toPlutusAddressWithNetworkTag :: Csl.Address -> Maybe Plutus.AddressWithNetworkTag -toPlutusAddressWithNetworkTag addressCsl = do - let networkId = Csl.addressNetworkId addressCsl - Plutus.AddressWithNetworkTag <<< { address: _, networkId } <$> - ( toPlutusBaseAddress addressCsl - <|> toPlutusPointerAddress addressCsl - <|> toPlutusEnterpriseAddress addressCsl - ) - where - toPlutusBaseAddress - :: Csl.Address -> Maybe Plutus.Address - toPlutusBaseAddress addr = do - baseAddress <- Csl.baseAddressFromAddress addr - let - paymentCred :: Csl.StakeCredential - paymentCred = Csl.baseAddressPaymentCred baseAddress - - delegationCred :: Csl.StakeCredential - delegationCred = Csl.baseAddressDelegationCred baseAddress - - flip Csl.withStakeCredential paymentCred - { onKeyHash: \pkh -> - worker (PubKeyCredential (wrap pkh)) delegationCred - , onScriptHash: \sh -> - worker (ScriptCredential (wrap sh)) delegationCred - } - where - worker - :: Credential -> Csl.StakeCredential -> Maybe Plutus.Address - worker addressCredential delegationCred = - Just $ wrap - { addressCredential - , addressStakingCredential: - flip Csl.withStakeCredential delegationCred - { onKeyHash: \skh -> - Just (StakingHash (PubKeyCredential (wrap skh))) - , onScriptHash: \sh -> - Just (StakingHash (ScriptCredential (wrap sh))) - } - } - - toPlutusPointerAddress - :: Csl.Address -> Maybe Plutus.Address - toPlutusPointerAddress addr = do - pointerAddress <- Csl.pointerAddressFromAddress addr - let - paymentCred :: Csl.StakeCredential - paymentCred = Csl.pointerAddressPaymentCred pointerAddress - - stakePointer :: Csl.Pointer - stakePointer = Csl.pointerAddressStakePointer pointerAddress - - Just $ wrap - { addressCredential: mkAddressCredential paymentCred - , addressStakingCredential: Just (StakingPtr stakePointer) - } - - toPlutusEnterpriseAddress - :: Csl.Address -> Maybe Plutus.Address - toPlutusEnterpriseAddress addr = do - enterpriseAddress <- Csl.enterpriseAddressFromAddress addr - let - paymentCred :: Csl.StakeCredential - paymentCred = Csl.enterpriseAddressPaymentCred enterpriseAddress - - Just $ wrap - { addressCredential: mkAddressCredential paymentCred - , addressStakingCredential: Nothing - } - - mkAddressCredential - :: Csl.StakeCredential -> Credential - mkAddressCredential = - Csl.withStakeCredential - { onKeyHash: PubKeyCredential <<< wrap - , onScriptHash: ScriptCredential <<< wrap - } +toPlutusAddressWithNetworkTag addressCsl = notImplemented +-- do +-- let networkId = Csl.addressNetworkId addressCsl +-- Plutus.AddressWithNetworkTag <<< { address: _, networkId } <$> +-- ( toPlutusBaseAddress addressCsl +-- <|> toPlutusPointerAddress addressCsl +-- <|> toPlutusEnterpriseAddress addressCsl +-- ) +-- where +-- toPlutusBaseAddress +-- :: Csl.Address -> Maybe Plutus.Address +-- toPlutusBaseAddress addr = do +-- baseAddress <- Csl.baseAddressFromAddress addr +-- let +-- paymentCred :: Csl.StakeCredential +-- paymentCred = Csl.baseAddressPaymentCred baseAddress + +-- delegationCred :: Csl.StakeCredential +-- delegationCred = Csl.baseAddressDelegationCred baseAddress + +-- flip Csl.withStakeCredential paymentCred +-- { onKeyHash: \pkh -> +-- worker (PubKeyCredential (wrap pkh)) delegationCred +-- , onScriptHash: \sh -> +-- worker (ScriptCredential (wrap sh)) delegationCred +-- } +-- where +-- worker +-- :: Credential -> Csl.StakeCredential -> Maybe Plutus.Address +-- worker addressCredential delegationCred = +-- Just $ wrap +-- { addressCredential +-- , addressStakingCredential: +-- flip Csl.withStakeCredential delegationCred +-- { onKeyHash: \skh -> +-- Just (StakingHash (PubKeyCredential (wrap skh))) +-- , onScriptHash: \sh -> +-- Just (StakingHash (ScriptCredential (wrap sh))) +-- } +-- } + +-- toPlutusPointerAddress +-- :: Csl.Address -> Maybe Plutus.Address +-- toPlutusPointerAddress addr = do +-- pointerAddress <- Csl.pointerAddressFromAddress addr +-- let +-- paymentCred :: Csl.StakeCredential +-- paymentCred = Csl.pointerAddressPaymentCred pointerAddress + +-- stakePointer :: Csl.Pointer +-- stakePointer = Csl.pointerAddressStakePointer pointerAddress + +-- Just $ wrap +-- { addressCredential: mkAddressCredential paymentCred +-- , addressStakingCredential: Just (StakingPtr stakePointer) +-- } + +-- toPlutusEnterpriseAddress +-- :: Csl.Address -> Maybe Plutus.Address +-- toPlutusEnterpriseAddress addr = do +-- enterpriseAddress <- Csl.enterpriseAddressFromAddress addr +-- let +-- paymentCred :: Csl.StakeCredential +-- paymentCred = Csl.enterpriseAddressPaymentCred enterpriseAddress + +-- Just $ wrap +-- { addressCredential: mkAddressCredential paymentCred +-- , addressStakingCredential: Nothing +-- } + +-- mkAddressCredential +-- :: Csl.StakeCredential -> Credential +-- mkAddressCredential = +-- Csl.withStakeCredential +-- { onKeyHash: PubKeyCredential <<< wrap +-- , onScriptHash: ScriptCredential <<< wrap +-- } diff --git a/src/Internal/Plutus/Conversion/Value.purs b/src/Internal/Plutus/Conversion/Value.purs index d5c7f8ef3..fbadf6f19 100644 --- a/src/Internal/Plutus/Conversion/Value.purs +++ b/src/Internal/Plutus/Conversion/Value.purs @@ -5,31 +5,28 @@ module Ctl.Internal.Plutus.Conversion.Value import Prelude -import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value(Value)) as Types -import Ctl.Internal.Cardano.Types.Value - ( NonAdaAsset - , flattenNonAdaValue - , getCurrencySymbol - , mkNonAdaAssetsFromTokenMap - , mkValue - ) +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.AssetName (unAssetName) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.MultiAsset (MultiAsset(MultiAsset)) +import Cardano.Types.MultiAsset as MultiAsset +import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value(Value)) as Cardano +import Ctl.Internal.Cardano.Types.Value (MultiAsset, mkValue) +import Ctl.Internal.Helpers (notImplemented) import Ctl.Internal.Plutus.Types.AssocMap (lookup) as Plutus.AssocMap import Ctl.Internal.Plutus.Types.CurrencySymbol (adaSymbol, getCurrencySymbol) as Plutus import Ctl.Internal.Plutus.Types.Value (Value) as Plutus -import Ctl.Internal.Plutus.Types.Value - ( getValue - , lovelaceValueOf - , singleton' - ) as Plutus.Value -import Ctl.Internal.Types.TokenName (adaToken, getTokenName) +import Ctl.Internal.Plutus.Types.Value (adaToken) +import Ctl.Internal.Plutus.Types.Value (getValue, lovelaceValueOf, singleton') as Plutus.Value import Data.Array (head, partition) import Data.Foldable (fold) import Data.List (List) import Data.Map (fromFoldable) as Map -import Data.Maybe (fromJust, fromMaybe) +import Data.Maybe (Maybe, fromJust, fromMaybe) import Data.Newtype (unwrap, wrap) import Data.Tuple (snd) import Data.Tuple.Nested ((/\)) +import Literals.Undefined (undefined) import Partial.Unsafe (unsafePartial) -- The underlying `Plutus.Types.AssocMap` of `Plutus.Types.Value` doesn't @@ -41,41 +38,43 @@ import Partial.Unsafe (unsafePartial) -- Plutus Value -> Types.Value -------------------------------------------------------------------------------- -fromPlutusValue :: Plutus.Value -> Types.Value -fromPlutusValue plutusValue = - adaValue <> mkValue mempty nonAdaAssets - where - { adaTokenMap, nonAdaTokenMap } = - (\x -> { adaTokenMap: x.yes, nonAdaTokenMap: x.no }) <<< - partition (\(cs /\ _) -> cs == Plutus.adaSymbol) $ - (unwrap $ Plutus.Value.getValue plutusValue) +fromPlutusValue :: Plutus.Value -> Maybe Cardano.Value +fromPlutusValue plutusValue = notImplemented + +-- mkValue adaCoin nonAdaAssets +-- where +-- { adaTokenMap, nonAdaTokenMap } = +-- (\x -> { adaTokenMap: x.yes, nonAdaTokenMap: x.no }) <<< +-- partition (\(cs /\ _) -> cs == Plutus.adaSymbol) $ +-- (unwrap $ Plutus.Value.getValue plutusValue) - adaValue :: Types.Value - adaValue = flip mkValue mempty <<< wrap <<< fromMaybe zero $ do - adaTokens <- snd <$> head adaTokenMap - Plutus.AssocMap.lookup adaToken adaTokens +-- adaValue :: Cardano.Coin +-- adaValue = fromMaybe zero do +-- adaTokens <- snd <$> head adaTokenMap +-- Plutus.AssocMap.lookup adaToken adaTokens - nonAdaAssets :: NonAdaAsset - nonAdaAssets = unsafePartial $ fromJust - $ mkNonAdaAssetsFromTokenMap - $ nonAdaTokenMap <#> \(cs /\ tokens) -> - Plutus.getCurrencySymbol cs /\ Map.fromFoldable (unwrap tokens) +-- nonAdaAssets :: Maybe MultiAsset +-- nonAdaAssets = +-- MultiAsset +-- $ nonAdaTokenMap <#> \(cs /\ tokens) -> +-- Plutus.getCurrencySymbol cs /\ Map.fromFoldable (unwrap tokens) -------------------------------------------------------------------------------- --- Types.Value -> Plutus Value +-- Cardano.Value -> Plutus Value -------------------------------------------------------------------------------- -toPlutusValue :: Types.Value -> Plutus.Value -toPlutusValue (Types.Value (Types.Coin adaAmount) nonAdaAssets) = +toPlutusValue :: Cardano.Value -> Plutus.Value +toPlutusValue (Cardano.Value (Cardano.Coin adaAmount) nonAdaAssets) = adaValue <> fold nonAdaValues where adaValue :: Plutus.Value adaValue - | adaAmount == zero = mempty - | otherwise = Plutus.Value.lovelaceValueOf adaAmount + | adaAmount == BigNum.zero = mempty + | otherwise = Plutus.Value.lovelaceValueOf $ BigNum.toBigInt adaAmount - nonAdaValues :: List Plutus.Value + nonAdaValues :: Array Plutus.Value nonAdaValues = - flattenNonAdaValue nonAdaAssets <#> \(cs /\ tn /\ val) -> - unsafePartial fromJust $ - Plutus.Value.singleton' (getCurrencySymbol cs) (getTokenName tn) val + MultiAsset.flatten nonAdaAssets <#> \(cs /\ tn /\ val) -> + unsafePartial fromJust + $ Plutus.Value.singleton' (unwrap $ encodeCbor cs) (unAssetName tn) + $ BigNum.toBigInt val diff --git a/src/Internal/Plutus/Types/Address.purs b/src/Internal/Plutus/Types/Address.purs index 989b1be03..6ccabb095 100644 --- a/src/Internal/Plutus/Types/Address.purs +++ b/src/Internal/Plutus/Types/Address.purs @@ -5,7 +5,7 @@ module Ctl.Internal.Plutus.Types.Address , getAddress , pubKeyHashAddress , scriptHashAddress - , toPubKeyHash + -- , toPubKeyHash , toValidatorHash , toStakingCredential ) where @@ -20,6 +20,9 @@ import Aeson , encodeAeson , (.:) ) +import Cardano.Plutus.Types.PubKeyHash (PubKeyHash(..)) +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash(..)) import Ctl.Internal.FromData (class FromData, genericFromData) import Ctl.Internal.Plutus.Types.Credential ( Credential(PubKeyCredential, ScriptCredential) @@ -33,13 +36,8 @@ import Ctl.Internal.Plutus.Types.DataSchema , I , PNil ) -import Ctl.Internal.Serialization.Address (NetworkId) import Ctl.Internal.ToData (class ToData, genericToData) import Ctl.Internal.TypeLevel.Nat (Z) -import Ctl.Internal.Types.PubKeyHash - ( PaymentPubKeyHash(PaymentPubKeyHash) - , PubKeyHash - ) import Ctl.Internal.Types.Scripts (ValidatorHash) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) @@ -125,7 +123,7 @@ instance EncodeAeson Address where -- | by the public key with the given hash. pubKeyHashAddress :: PaymentPubKeyHash -> Maybe Credential -> Address pubKeyHashAddress (PaymentPubKeyHash pkh) mbStakeCredential = wrap - { addressCredential: PubKeyCredential pkh + { addressCredential: PubKeyCredential $ wrap pkh , addressStakingCredential: map StakingHash mbStakeCredential } @@ -138,12 +136,12 @@ scriptHashAddress vh mbStakeCredential = wrap , addressStakingCredential: map StakingHash mbStakeCredential } --- | The PubKeyHash of the address (if any). -toPubKeyHash :: Address -> Maybe PubKeyHash -toPubKeyHash addr = - case (unwrap addr).addressCredential of - PubKeyCredential k -> Just k - _ -> Nothing +-- -- | The PubKeyHash of the address (if any). +-- toPubKeyHash :: Address -> Maybe PubKeyHash +-- toPubKeyHash addr = +-- case (unwrap addr).addressCredential of +-- PubKeyCredential k -> Just k +-- _ -> Nothing -- | The validator hash of the address (if any). toValidatorHash :: Address -> Maybe ValidatorHash diff --git a/src/Internal/Plutus/Types/AssocMap.purs b/src/Internal/Plutus/Types/AssocMap.purs index cb773d639..91bd156cd 100644 --- a/src/Internal/Plutus/Types/AssocMap.purs +++ b/src/Internal/Plutus/Types/AssocMap.purs @@ -27,9 +27,9 @@ import Aeson , decodeAeson , encodeAeson ) +import Cardano.Types.PlutusData (PlutusData(Map)) as PD import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.PlutusData (PlutusData(Map)) as PD import Data.Array (any, deleteAt, filter, findIndex, mapMaybe, null, singleton) as Array import Data.Array ((:)) import Data.Bifunctor (bimap, rmap) diff --git a/src/Internal/Plutus/Types/Credential.purs b/src/Internal/Plutus/Types/Credential.purs index 33ebe5104..69e870c0f 100644 --- a/src/Internal/Plutus/Types/Credential.purs +++ b/src/Internal/Plutus/Types/Credential.purs @@ -12,9 +12,11 @@ import Aeson , decodeAeson , (.:) ) +import Cardano.Plutus.Types.PubKeyHash (PubKeyHash) +import Cardano.Types.Slot (Slot) import Contract.Prelude (type (/\)) import Ctl.Internal.FromData (class FromData, genericFromData) -import Ctl.Internal.Helpers (contentsProp, encodeTagged', tagProp) +import Ctl.Internal.Helpers (encodeTagged') import Ctl.Internal.Plutus.Types.DataSchema ( class HasPlutusSchema , type (:+) @@ -23,14 +25,9 @@ import Ctl.Internal.Plutus.Types.DataSchema , I , PNil ) -import Ctl.Internal.Serialization.Address - ( CertificateIndex - , Slot - , TransactionIndex - ) +import Ctl.Internal.Serialization.Address (CertificateIndex, TransactionIndex) import Ctl.Internal.ToData (class ToData, genericToData) import Ctl.Internal.TypeLevel.Nat (S, Z) -import Ctl.Internal.Types.PubKeyHash (PubKeyHash) import Ctl.Internal.Types.Scripts (ValidatorHash) import Data.Argonaut.Encode.Encoders (encodeString) import Data.Bifunctor (lmap) @@ -79,11 +76,11 @@ instance EncodeAeson Credential where instance DecodeAeson Credential where decodeAeson a = lmap (Named "Credential") do obj <- decodeAeson a - tag <- obj .: tagProp + tag <- obj .: "tag" case tag of - "PubKeyCredential" -> PubKeyCredential <$> obj .: contentsProp - "ScriptCredential" -> ScriptCredential <$> obj .: contentsProp - _ -> Left $ AtKey tagProp $ UnexpectedValue $ encodeString tag + "PubKeyCredential" -> PubKeyCredential <$> obj .: "contents" + "ScriptCredential" -> ScriptCredential <$> obj .: "contents" + _ -> Left $ AtKey "tag" $ UnexpectedValue $ encodeString tag instance ToData Credential where toData = genericToData @@ -142,11 +139,11 @@ instance EncodeAeson StakingCredential where instance DecodeAeson StakingCredential where decodeAeson a = lmap (Named "StakingCredential") do obj <- decodeAeson a - tag <- obj .: tagProp + tag <- obj .: "tag" case tag of - "StakingHash" -> StakingHash <$> obj .: contentsProp - "StakingPtr" -> toStakingPtr <$> obj .: contentsProp - _ -> Left $ AtKey tagProp $ UnexpectedValue $ encodeString tag + "StakingHash" -> StakingHash <$> obj .: "contents" + "StakingPtr" -> toStakingPtr <$> obj .: "contents" + _ -> Left $ AtKey "tag" $ UnexpectedValue $ encodeString tag where toStakingPtr :: (Slot /\ TransactionIndex /\ CertificateIndex) -> StakingCredential diff --git a/src/Internal/Plutus/Types/CurrencySymbol.purs b/src/Internal/Plutus/Types/CurrencySymbol.purs index 5cc1b652f..d05f1ecce 100644 --- a/src/Internal/Plutus/Types/CurrencySymbol.purs +++ b/src/Internal/Plutus/Types/CurrencySymbol.purs @@ -96,7 +96,8 @@ mkCurrencySymbol byteArr | byteArr == mempty = pure adaSymbol | otherwise = - scriptHashFromBytes byteArr $> CurrencySymbol byteArr + (scriptHashFromBytes byteArr :: Maybe ScriptHash) $> CurrencySymbol + byteArr -------------------------------------------------------------------------------- -- Internal diff --git a/src/Internal/Plutus/Types/Transaction.purs b/src/Internal/Plutus/Types/Transaction.purs index 66c4d57ff..0a0856d67 100644 --- a/src/Internal/Plutus/Types/Transaction.purs +++ b/src/Internal/Plutus/Types/Transaction.purs @@ -12,19 +12,20 @@ module Ctl.Internal.Plutus.Types.Transaction import Prelude import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr)) +import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.Cardano.Types.Value (pprintValue) import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) import Ctl.Internal.Plutus.Types.Address (Address) -import Ctl.Internal.Plutus.Types.Value (Value) +import Ctl.Internal.Plutus.Types.Value (Value, pprintValue) import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBytes) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.OutputDatum (OutputDatum, pprintOutputDatum) -import Ctl.Internal.Types.PlutusData (PlutusData(Constr)) import Ctl.Internal.Types.RawBytes (rawBytesToHex) -import Ctl.Internal.Types.Transaction (TransactionInput) +import Data.ByteArray (byteArrayToHex) import Data.Generic.Rep (class Generic) import Data.Lens (Lens') import Data.Lens.Iso.Newtype (_Newtype) @@ -83,12 +84,14 @@ pprintTransactionOutput (TransactionOutput { address, amount, datum, referenceScript }) = TagSet.fromArray $ [ "address" `tag` show address - , "amount" `tagSetTag` pprintValue (fromPlutusValue amount) + , "amount" `tagSetTag` pprintValue amount , pprintOutputDatum datum ] <> referenceScriptTagSet where referenceScriptTagSet = maybe [] - (pure <<< tag "referenceScript" <<< rawBytesToHex <<< scriptHashToBytes) + ( pure <<< tag "referenceScript" <<< byteArrayToHex <<< unwrap <<< + encodeCbor + ) referenceScript newtype TransactionOutputWithRefScript = TransactionOutputWithRefScript diff --git a/src/Internal/Plutus/Types/Value.purs b/src/Internal/Plutus/Types/Value.purs index ec0c852d1..cf5e67580 100644 --- a/src/Internal/Plutus/Types/Value.purs +++ b/src/Internal/Plutus/Types/Value.purs @@ -2,7 +2,7 @@ module Ctl.Internal.Plutus.Types.Value ( Coin(Coin) , Value , coinToValue - , flattenNonAdaAssets + , flattenMultiAssets , flattenValue , geq , getLovelace @@ -23,6 +23,8 @@ module Ctl.Internal.Plutus.Types.Value , valueOf , valueToCoin , valueToCoin' + , adaToken + , pprintValue ) where import Prelude hiding (eq) @@ -38,7 +40,7 @@ import Aeson ) import Control.Apply (lift3) import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Helpers (showWithParens) +import Ctl.Internal.Helpers (notImplemented, showWithParens) import Ctl.Internal.Plutus.Types.AssocMap (Map(Map)) as Plutus import Ctl.Internal.Plutus.Types.AssocMap ( keys @@ -54,14 +56,14 @@ import Ctl.Internal.Plutus.Types.CurrencySymbol ) import Ctl.Internal.QuickCheck (genPositive, unMaybeGen) import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.TokenName (TokenName, adaToken, mkTokenName) import Data.Array (concatMap, filter, replicate) import Data.ByteArray (ByteArray) import Data.Either (Either(Left)) import Data.Foldable (all, fold) import Data.Generic.Rep (class Generic) import Data.Lattice (class JoinSemilattice, class MeetSemilattice) -import Data.Maybe (Maybe(Nothing), fromMaybe) +import Data.Log.Tag (TagSet) +import Data.Maybe (Maybe(Nothing), fromJust, fromMaybe) import Data.Newtype (class Newtype) import Data.These (These(Both, That, This), these) import Data.Traversable (sequence) @@ -69,9 +71,17 @@ import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import JS.BigInt (BigInt) import JS.BigInt as BigInt +import Partial.Unsafe (unsafePartial) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (Gen, chooseInt) +adaToken = mempty -- TODO remove + +type TokenName = ByteArray + +mkTokenName = identity +toTokenName = identity + newtype Value = Value (Plutus.Map CurrencySymbol (Plutus.Map TokenName BigInt)) derive newtype instance ToData Value @@ -89,7 +99,7 @@ instance EncodeAeson Value where arbitrarySingletonValue :: Gen Value arbitrarySingletonValue = do currencySymbol <- arbitrary - tokenName <- unMaybeGen $ mkTokenName <$> arbitrary + tokenName <- arbitrary num <- BigInt.fromInt <$> genPositive pure $ singleton currencySymbol tokenName num @@ -182,7 +192,7 @@ singleton' :: ByteArray -> ByteArray -> BigInt -> Maybe Value singleton' cs tn amount | cs == mempty && tn /= mempty = Nothing | otherwise = - lift3 singleton (mkCurrencySymbol cs) (mkTokenName tn) + lift3 singleton (mkCurrencySymbol cs) (pure $ mkTokenName tn) (pure amount) -- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#valueOf @@ -250,8 +260,8 @@ flattenValue (Value (Plutus.Map arr)) = -- | Converts a value to a simple list, keeping only the non-Ada assets -- | with non-zero amounts. -flattenNonAdaAssets :: Value -> Array (CurrencySymbol /\ TokenName /\ BigInt) -flattenNonAdaAssets = filter (notEq adaSymbol <<< fst) <<< flattenValue +flattenMultiAssets :: Value -> Array (CurrencySymbol /\ TokenName /\ BigInt) +flattenMultiAssets = filter (notEq adaSymbol <<< fst) <<< flattenValue -- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#geq -- | Checks whether one `Value` is greater than or equal to another. @@ -296,3 +306,6 @@ checkPred f l r = all (all f) (unionVal l r) -- supplying 0 where a key is only present in one of them. checkBinRel :: (BigInt -> BigInt -> Boolean) -> Value -> Value -> Boolean checkBinRel f l r = checkPred (these (flip f zero) (f zero) f) l r + +pprintValue :: Value -> TagSet +pprintValue = notImplemented diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 69ee5cc05..bded587e3 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -4,13 +4,13 @@ module Ctl.Internal.ProcessConstraints import Prelude +import Cardano.Types.TransactionInput (TransactionInput) import Contract.Hashing (plutusScriptStakeValidatorHash) import Control.Monad.Error.Class (catchError, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Reader.Class (asks) import Control.Monad.State.Trans (get, gets, put, runStateT) import Control.Monad.Trans.Class (lift) -import Ctl.Internal.Address (addressPaymentValidatorHash) import Ctl.Internal.BalanceTx.RedeemerIndex ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) , UnindexedRedeemer(UnindexedRedeemer) @@ -43,7 +43,7 @@ import Ctl.Internal.Cardano.Types.Transaction ) import Ctl.Internal.Cardano.Types.Value ( Coin(Coin) - , getNonAdaAsset + , getMultiAsset , isZero , mkSingletonValue' , mpsSymbol @@ -143,11 +143,6 @@ import Ctl.Internal.Types.Interval import Ctl.Internal.Types.OutputDatum ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) ) -import Ctl.Internal.Types.PubKeyHash - ( payPubKeyHashBaseAddress - , payPubKeyHashEnterpriseAddress - , stakePubKeyHashRewardAddress - ) import Ctl.Internal.Types.RewardAddress ( stakePubKeyHashRewardAddress , stakeValidatorHashRewardAddress @@ -159,7 +154,6 @@ import Ctl.Internal.Types.Scripts , Validator , ValidatorHash ) -import Ctl.Internal.Types.Transaction (TransactionInput) import Ctl.Internal.Types.TxConstraints ( DatumPresence(DatumWitness, DatumInline) , InputWithScriptRef(SpendInput, RefInput) @@ -624,13 +618,13 @@ processConstraint mpsMap osMap c = do if i < zero then do v <- liftM (CannotMakeValue cs tn i) (value $ negate i) _valueSpentBalancesInputs <>= provideValue v - pure $ map getNonAdaAsset $ value i + pure $ map getMultiAsset $ value i else if i == zero then do throwError $ CannotMintZero cs tn else do v <- liftM (CannotMakeValue cs tn i) (value i) _valueSpentBalancesOutputs <>= provideValue v - pure $ map getNonAdaAsset $ value i + pure $ map getMultiAsset $ value i _redeemers <>= [ UnindexedRedeemer { purpose: ForMint mpsHash, datum: unwrap red } ] -- Remove mint redeemers from array before reindexing. @@ -651,11 +645,11 @@ processConstraint mpsMap osMap c = do if i < zero then do v <- liftM (CannotMakeValue cs tn i) (value $ negate i) _valueSpentBalancesInputs <>= provideValue v - pure $ map getNonAdaAsset $ value i + pure $ map getMultiAsset $ value i else do v <- liftM (CannotMakeValue cs tn i) (value i) _valueSpentBalancesOutputs <>= provideValue v - pure $ map getNonAdaAsset $ value i + pure $ map getMultiAsset $ value i _cpsTransaction <<< _body <<< _mint <>= map wrap mintVal diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index e9c13589c..51f739176 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -3,14 +3,18 @@ module Ctl.Internal.ProcessConstraints.Error where import Prelude import Cardano.Serialization.Lib (toBytes) -import Ctl.Internal.Cardano.Types.NativeScript (pprintNativeScript) -import Ctl.Internal.Cardano.Types.Value (CurrencySymbol, getCurrencySymbol) -import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) -import Ctl.Internal.Plutus.Types.Transaction +import Cardano.Types.Address (Address) +import Cardano.Types.Address as Address +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.AssetName (AssetName, fromAssetName) +import Cardano.Types.PlutusScript (PlutusScript(..)) +import Cardano.Types.StakePubKeyHash (StakePubKeyHash(..)) +import Cardano.Types.TransactionOutput ( TransactionOutput , pprintTransactionOutput ) -import Ctl.Internal.Serialization.Address (Address, addressBech32) +import Ctl.Internal.Cardano.Types.NativeScript (pprintNativeScript) +import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) import Ctl.Internal.Serialization.Hash ( ScriptHash , ed25519KeyHashToBytes @@ -22,16 +26,13 @@ import Ctl.Internal.Types.Interval , PosixTimeToSlotError , explainPosixTimeToSlotError ) -import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Types.Scripts ( MintingPolicyHash , NativeScriptStakeValidator - , PlutusScript(PlutusScript) , PlutusScriptStakeValidator , ValidatorHash ) -import Ctl.Internal.Types.TokenName (TokenName, fromTokenName) import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) import Data.ByteArray (byteArrayToHex) import Data.Generic.Rep (class Generic) @@ -50,7 +51,7 @@ data MkUnbalancedTxError | CannotSolveTimeConstraints POSIXTimeRange POSIXTimeRange | CannotGetMintingPolicyScriptIndex -- Should be impossible | CannotGetValidatorHashFromAddress Address -- Get `ValidatorHash` from internal `Address` - | CannotMakeValue CurrencySymbol TokenName BigInt + | CannotMakeValue ScriptHash AssetName BigInt | CannotWithdrawRewardsPubKey StakePubKeyHash | CannotWithdrawRewardsPlutusScript PlutusScriptStakeValidator | CannotWithdrawRewardsNativeScript NativeScriptStakeValidator @@ -65,7 +66,7 @@ data MkUnbalancedTxError | WrongRefScriptHash (Maybe ScriptHash) TransactionOutput | CannotSatisfyAny | ExpectedPlutusScriptGotNativeScript MintingPolicyHash - | CannotMintZero CurrencySymbol TokenName + | CannotMintZero ScriptHash AssetName derive instance Generic MkUnbalancedTxError _ derive instance Eq MkUnbalancedTxError @@ -77,9 +78,9 @@ instance Show MkUnbalancedTxError where explainMkUnbalancedTxError :: MkUnbalancedTxError -> String explainMkUnbalancedTxError = case _ of CannotFindDatum -> "Cannot find datum" - CannotQueryDatum (DataHash dh) -> + CannotQueryDatum dh -> "Querying for datum by datum hash (" - <> byteArrayToHex dh + <> byteArrayToHex (unwrap $ encodeCbor dh) <> ") failed: no datum found" CannotConvertPOSIXTimeRange tr ttsErr -> "Cannot convert POSIX time range to slot time range.\nRange: " @@ -95,16 +96,16 @@ explainMkUnbalancedTxError = case _ of <> bugTrackerLink CannotGetValidatorHashFromAddress addr -> "Cannot get a payment validator hash from address " <> - addressBech32 addr + Address.toBech32 addr CannotMakeValue _ tn _ -> "Attempted to make an amount with the ADA currency symbol, and " <> "non-empty token name " - <> prettyTokenName tn + <> prettyAssetName tn <> ". This is not allowed, as the ADA currency symbol can only be " <> "combined with the empty token name." CannotWithdrawRewardsPubKey spkh -> "Cannot withdraw rewards, as pubkey " - <> rawBytesToHex (ed25519KeyHashToBytes $ unwrap $ unwrap spkh) + <> byteArrayToHex (unwrap $ encodeCbor $ unwrap spkh) <> " is not registered" CannotWithdrawRewardsPlutusScript pssv -> "Cannot withdraw rewards from Plutus staking script " <> @@ -112,19 +113,21 @@ explainMkUnbalancedTxError = case _ of CannotWithdrawRewardsNativeScript nssv -> pprintTagSet "Cannot withdraw rewards from native staking script " ("NativeScript" `tagSetTag` pprintNativeScript (unwrap nssv)) - DatumNotFound (DataHash hash) -> "Datum with hash " <> byteArrayToHex hash <> - " not found." - DatumWrongHash (DataHash dh) datum -> "Datum " + DatumNotFound hash -> "Datum with hash " + <> byteArrayToHex (unwrap $ encodeCbor hash) + <> + " not found." + DatumWrongHash dh datum -> "Datum " <> show datum <> " does not have the hash " - <> byteArrayToHex dh + <> byteArrayToHex (unwrap $ encodeCbor dh) MintingPolicyHashNotCurrencySymbol mph -> "Minting policy hash " - <> rawBytesToHex (scriptHashToBytes $ unwrap mph) + <> byteArrayToHex (unwrap $ encodeCbor $ unwrap mph) <> " is not a CurrencySymbol. Please check the validity of the byte representation." MintingPolicyNotFound mp -> "Minting policy with hash " - <> rawBytesToHex (scriptHashToBytes $ unwrap mp) + <> byteArrayToHex (unwrap $ encodeCbor $ unwrap mp) <> " not found in a set of minting policies" OwnPubKeyAndStakeKeyMissing -> "Could not build own address: both payment pubkey and stake pubkey are missing" @@ -137,14 +140,14 @@ explainMkUnbalancedTxError = case _ of <> prettyTxIn ti <> "\nContext: we were trying to spend a script output." ValidatorHashNotFound vh -> "Cannot find validator hash: " <> - rawBytesToHex (scriptHashToBytes $ unwrap vh) + byteArrayToHex (unwrap $ encodeCbor $ unwrap vh) WrongRefScriptHash msh tout -> case msh of Nothing -> pprintTagSet "Output is missing a reference script hash" ("TransactionOutput" `tagSetTag` pprintTransactionOutput tout) Just missingHash -> pprintTagSet ( "TransactionOutput is missing reference script hash " - <> rawBytesToHex (scriptHashToBytes missingHash) + <> byteArrayToHex (unwrap $ encodeCbor missingHash) ) ("TransactionOutput" `tagSetTag` pprintTransactionOutput tout) CannotSatisfyAny -> "One of the following happened:\n" @@ -152,17 +155,17 @@ explainMkUnbalancedTxError = case _ of <> "2. All alternatives of a 'mustSatisfyAnyOf' have failed." ExpectedPlutusScriptGotNativeScript mph -> "Expected a Plutus script, but " - <> rawBytesToHex (scriptHashToBytes $ unwrap mph) + <> byteArrayToHex (unwrap $ encodeCbor $ unwrap mph) <> " is a hash of a native script." CannotMintZero cs tn -> "Cannot mint zero of token " - <> prettyTokenName tn + <> prettyAssetName tn <> " of currency " - <> byteArrayToHex (getCurrencySymbol cs) + <> byteArrayToHex (unwrap $ encodeCbor cs) where - prettyTokenName :: TokenName -> String - prettyTokenName = fromTokenName byteArrayToHex show + prettyAssetName :: AssetName -> String + prettyAssetName = fromAssetName byteArrayToHex show prettyPlutusScript :: PlutusScript -> String prettyPlutusScript (PlutusScript (code /\ lang)) = diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index a35ae110b..aca0d685d 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -19,6 +19,7 @@ module Ctl.Internal.ProcessConstraints.State import Prelude hiding (join) +import Cardano.Types.TransactionInput (TransactionInput) import Control.Monad.State.Trans (StateT) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Cardano.Types.Transaction @@ -31,7 +32,6 @@ import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Generic.Rep (class Generic) import Data.Lattice (join) import Data.Lens.Record (prop) diff --git a/src/Internal/ProcessConstraints/UnbalancedTx.purs b/src/Internal/ProcessConstraints/UnbalancedTx.purs index 69c8ea8a4..81b92a3c2 100644 --- a/src/Internal/ProcessConstraints/UnbalancedTx.purs +++ b/src/Internal/ProcessConstraints/UnbalancedTx.purs @@ -4,10 +4,11 @@ module Ctl.Internal.ProcessConstraints.UnbalancedTx import Prelude hiding (join) +import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionOutput (TransactionOutput) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) -import Ctl.Internal.Cardano.Types.Transaction (Transaction, TransactionOutput) +import Ctl.Internal.Cardano.Types.Transaction (Transaction) import Ctl.Internal.Types.Datum (Datum) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Generic.Rep (class Generic) import Data.Map (Map) import Data.Newtype (class Newtype) diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 864afd185..346422bb7 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -63,6 +63,7 @@ import Affjax.RequestBody as Affjax.RequestBody import Affjax.RequestHeader as Affjax.RequestHeader import Affjax.ResponseFormat as Affjax.ResponseFormat import Affjax.StatusCode as Affjax.StatusCode +import Cardano.Types.TransactionHash (TransactionHash) import Control.Alt (class Alt) import Control.Alternative (class Alternative) import Control.Monad.Error.Class @@ -152,7 +153,6 @@ import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.Scripts (PlutusScript) import Ctl.Internal.Types.SystemStart (SystemStart) -import Ctl.Internal.Types.Transaction (TransactionHash) import Ctl.Internal.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) import Data.Bifunctor (lmap) import Data.ByteArray (byteArrayToHex) diff --git a/src/Internal/QueryM/Dispatcher.purs b/src/Internal/QueryM/Dispatcher.purs index 0b1d4d8fe..35f887415 100644 --- a/src/Internal/QueryM/Dispatcher.purs +++ b/src/Internal/QueryM/Dispatcher.purs @@ -15,9 +15,9 @@ module Ctl.Internal.QueryM.Dispatcher import Prelude import Aeson (Aeson, JsonDecodeError, stringifyAeson) +import Cardano.Types.TransactionHash (TransactionHash) import Ctl.Internal.QueryM.JsonRpc2 (parseJsonRpc2ResponseId) import Ctl.Internal.QueryM.UniqueId (ListenerId) -import Ctl.Internal.Types.Transaction (TransactionHash) import Data.Either (Either(Left, Right)) import Data.Map (Map) import Data.Map (empty, lookup) as Map diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index ceb98a009..d99c22284 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -25,6 +25,8 @@ import Affjax (Error, Response, defaultRequest) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Types.AssetName (mkAssetName) +import Cardano.Types.BigNum (toString) as BigNum import Contract.Log (logTrace') import Control.Alt ((<|>)) import Control.Bind (bindFlipped) @@ -41,10 +43,10 @@ import Ctl.Internal.Cardano.Types.Transaction , UtxoMap ) import Ctl.Internal.Cardano.Types.Value - ( NonAdaAsset + ( MultiAsset , Value , mkCurrencySymbol - , mkSingletonNonAdaAsset + , mkSingletonMultiAsset , mkValue ) import Ctl.Internal.Contract.QueryHandle.Error @@ -70,7 +72,6 @@ import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBytes) import Ctl.Internal.ServerConfig (ServerConfig, mkHttpUrl) import Ctl.Internal.Service.Error (ClientError(ClientOtherError)) import Ctl.Internal.Service.Helpers (aesonArray, aesonObject, aesonString) -import Ctl.Internal.Types.BigNum (toString) as BigNum import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) import Ctl.Internal.Types.OutputDatum @@ -78,7 +79,6 @@ import Ctl.Internal.Types.OutputDatum ) import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Types.Scripts (plutusV1Script, plutusV2Script) -import Ctl.Internal.Types.TokenName (mkTokenName) import Ctl.Internal.Types.Transaction ( TransactionHash(TransactionHash) , TransactionInput(TransactionInput) @@ -274,11 +274,11 @@ instance DecodeAeson KupoTransactionOutput where assets <- getFieldOptional obj "assets" <#> fromMaybe mempty <<< map (Object.toUnfoldable :: _ -> Array _) - mkValue coins <<< fold <$> traverse decodeNonAdaAsset assets + mkValue coins <<< fold <$> traverse decodeMultiAsset assets where - decodeNonAdaAsset - :: (String /\ BigInt) -> Either JsonDecodeError NonAdaAsset - decodeNonAdaAsset (assetString /\ assetQuantity) = + decodeMultiAsset + :: (String /\ BigInt) -> Either JsonDecodeError MultiAsset + decodeMultiAsset (assetString /\ assetQuantity) = let csString /\ tnString = case String.indexOf (String.Pattern ".") assetString of @@ -288,14 +288,14 @@ instance DecodeAeson KupoTransactionOutput where String.splitAt ix assetString # \{ before, after } -> before /\ String.drop 1 after in - mkSingletonNonAdaAsset + mkSingletonMultiAsset <$> ( note (assetStringTypeMismatch "CurrencySymbol" csString) (mkCurrencySymbol =<< hexToByteArray csString) ) <*> - ( note (assetStringTypeMismatch "TokenName" tnString) - (mkTokenName =<< hexToByteArray tnString) + ( note (assetStringTypeMismatch "AssetName" tnString) + (mkAssetName =<< hexToByteArray tnString) ) <*> pure assetQuantity where diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 8d1522109..3212cd2ef 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -95,6 +95,16 @@ import Aeson , (.:?) ) import Cardano.Serialization.Lib (fromBytes) +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.AssetName (unAssetName) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum (fromBigInt, fromString) as BigNum +import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash) +import Cardano.Types.PlutusScript (PlutusScript(..)) +import Cardano.Types.RewardAddress (RewardAddress) +import Cardano.Types.ScriptHash (ScriptHash) +import Cardano.Types.Slot (Slot(..)) +import Cardano.Types.TransactionHash (TransactionHash) import Control.Alt ((<|>)) import Control.Alternative (guard) import Ctl.Internal.Cardano.Types.NativeScript @@ -128,10 +138,7 @@ import Ctl.Internal.Cardano.Types.Transaction import Ctl.Internal.Cardano.Types.Value ( Coin(Coin) , Value - , getCurrencySymbol - , getLovelace - , getNonAdaAsset - , unwrapNonAdaAsset + , getMultiAsset , valueToCoin ) import Ctl.Internal.Helpers (encodeMap, showWithParens) @@ -144,11 +151,8 @@ import Ctl.Internal.QueryM.JsonRpc2 , decodeResult , mkCallType ) -import Ctl.Internal.Serialization.Address (Slot(Slot)) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum (fromBigInt, fromString) as BigNum -import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex) +import Ctl.Internal.Types.Aliases (Bech32String) +import Ctl.Internal.Types.CborBytes (CborBytes(..)) import Ctl.Internal.Types.Epoch (Epoch(Epoch)) import Ctl.Internal.Types.EraSummaries ( EraSummaries(EraSummaries) @@ -166,18 +170,12 @@ import Ctl.Internal.Types.Rational (Rational, (%)) import Ctl.Internal.Types.Rational as Rational import Ctl.Internal.Types.RedeemerTag (RedeemerTag) import Ctl.Internal.Types.RedeemerTag (fromString) as RedeemerTag -import Ctl.Internal.Types.RewardAddress (RewardAddress) -import Ctl.Internal.Types.Scripts - ( Language(PlutusV1, PlutusV2) - , PlutusScript(PlutusScript) - ) +import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2)) import Ctl.Internal.Types.SystemStart ( SystemStart , sysStartFromOgmiosTimestamp , sysStartToOgmiosTimestamp ) -import Ctl.Internal.Types.TokenName (getTokenName) -import Ctl.Internal.Types.Transaction (TransactionHash) import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Argonaut.Encode.Encoders as Argonaut import Data.Array (catMaybes) @@ -255,7 +253,7 @@ queryDelegationsAndRewards = mkOgmiosCallType } } -type OgmiosAddress = String +type OgmiosAddress = Bech32String -------------------------------------------------------------------------------- -- Local Tx Submission Protocol @@ -268,7 +266,7 @@ submitTxCall :: JsonRpc2Call (TransactionHash /\ CborBytes) SubmitTxR submitTxCall = mkOgmiosCallType { method: "submitTransaction" , params: \(_ /\ cbor) -> - { transaction: { cbor: cborBytesToHex cbor } + { transaction: { cbor: byteArrayToHex $ unwrap cbor } } } @@ -278,7 +276,7 @@ evaluateTxCall :: JsonRpc2Call (CborBytes /\ AdditionalUtxoSet) TxEvaluationR evaluateTxCall = mkOgmiosCallType { method: "evaluateTransaction" , params: \(cbor /\ utxoqr) -> - { transaction: { cbor: cborBytesToHex cbor } + { transaction: { cbor: byteArrayToHex $ unwrap cbor } , additionalUtxo: utxoqr } } @@ -989,7 +987,7 @@ type ProtocolParametersRaw = { "minFeeCoefficient" :: UInt , "minFeeConstant" :: { "lovelace" :: UInt } - , "minUtxoDepositCoefficient" :: BigInt + , "minUtxoDepositCoefficient" :: BigNum , "maxBlockBodySize" :: { "bytes" :: UInt } , "maxBlockHeaderSize" :: @@ -999,9 +997,9 @@ type ProtocolParametersRaw = , "maxValueSize" :: { "bytes" :: UInt } , "stakeCredentialDeposit" :: - { "lovelace" :: BigInt } + { "lovelace" :: BigNum } , "stakePoolDeposit" :: - { "lovelace" :: BigInt } + { "lovelace" :: BigNum } , "stakePoolRetirementEpochBound" :: BigInt , "desiredNumberOfStakePools" :: UInt , "stakePoolPledgeInfluence" :: PParamRational @@ -1012,7 +1010,7 @@ type ProtocolParametersRaw = , "minor" :: UInt } , "minStakePoolCost" :: - { "lovelace" :: BigInt } + { "lovelace" :: BigNum } , "plutusCostModels" :: { "plutus:v1" :: Array Csl.Int , "plutus:v2" :: Maybe (Array Csl.Int) @@ -1224,14 +1222,14 @@ instance EncodeAeson AdditionalUtxoSet where adaPart = Map.fromFoldable [ ( "ada" /\ ( Map.fromFoldable - [ ("lovelace" /\ (value # valueToCoin # getLovelace)) ] + [ ("lovelace" /\ (value # valueToCoin # unwrap)) ] ) ) ] - nonAdaPart = mapKeys (byteArrayToHex <<< getCurrencySymbol) - $ map (mapKeys (byteArrayToHex <<< getTokenName)) - $ unwrapNonAdaAsset - $ getNonAdaAsset value + nonAdaPart = mapKeys (byteArrayToHex <<< unwrap <<< encodeCbor) + $ map (mapKeys (byteArrayToHex <<< unAssetName)) + $ unwrap + $ getMultiAsset value mapKeys :: forall k1 k2 a. Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a mapKeys f = (Map.toUnfoldable :: Map k1 a -> Array (k1 /\ a)) >>> foldl diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index 9172d30f8..4e4e72733 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -28,7 +28,6 @@ import Ctl.Internal.Serialization.Hash ) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) as X -import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Scripts (StakeValidatorHash) import Data.ByteArray (byteArrayToHex) import Data.Map (Map) diff --git a/src/Internal/Scripts.purs b/src/Internal/Scripts.purs index 187fcb588..f4e5e8eb8 100644 --- a/src/Internal/Scripts.purs +++ b/src/Internal/Scripts.purs @@ -1,30 +1,12 @@ module Ctl.Internal.Scripts - ( mintingPolicyHash - , nativeScriptHashEnterpriseAddress - , nativeScriptStakeValidatorHash - , plutusScriptStakeValidatorHash - , scriptCurrencySymbol - , validatorHash - , validatorHashBaseAddress - , validatorHashEnterpriseAddress + ( validatorHash ) where import Prelude -import Ctl.Internal.Hashing (plutusScriptHash) +import Ctl.Internal.Hashing (mintingPolicyHash, plutusScriptHash) import Ctl.Internal.NativeScripts (NativeScriptHash, nativeScriptHash) -import Ctl.Internal.Plutus.Types.CurrencySymbol - ( CurrencySymbol(CurrencySymbol) - ) -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId - , baseAddressToAddress - , enterpriseAddress - , enterpriseAddressToAddress - , scriptAddress - , scriptHashCredential - ) +import Ctl.Internal.Plutus.Types.CurrencySymbol (CurrencySymbol(CurrencySymbol)) import Ctl.Internal.Serialization.Hash (scriptHashToBytes) import Ctl.Internal.Types.Scripts ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) @@ -40,53 +22,11 @@ import Data.Newtype (unwrap, wrap) -- | Helpers for `PlutusScript` and `ScriptHash` newtype wrappers, separate from -- | the data type definitions to prevent cylic dependencies. --- | Converts a Plutus-style `MintingPolicy` to an `MintingPolicyHash` -mintingPolicyHash :: MintingPolicy -> MintingPolicyHash -mintingPolicyHash = case _ of - PlutusMintingPolicy script -> wrap $ plutusScriptHash script - NativeMintingPolicy nscript -> wrap $ unwrap $ nativeScriptHash nscript - -- | Converts a Plutus-style `Validator` to an `ValidatorHash` validatorHash :: Validator -> ValidatorHash validatorHash = wrap <<< plutusScriptHash <<< unwrap --- | Converts a Plutus-style `ValidatorHash` to a `Address` as a `BaseAddress` -validatorHashBaseAddress :: NetworkId -> ValidatorHash -> Address -validatorHashBaseAddress networkId = - baseAddressToAddress <<< scriptAddress networkId <<< unwrap - --- | Converts a Plutus-style `ValidatorHash` to an `Address` as an --- | `EnterpriseAddress`. This is likely what you will use since Plutus --- | currently uses `scriptHashAddress` on non-staking addresses which is --- | invoked in `validatorAddress` -validatorHashEnterpriseAddress :: NetworkId -> ValidatorHash -> Address -validatorHashEnterpriseAddress network valHash = - enterpriseAddressToAddress $ - enterpriseAddress - { network - , paymentCred: scriptHashCredential (unwrap valHash) - } - --- | Converts a `NativeScriptHash` to an `Address` as an `EnterpriseAddress`. -nativeScriptHashEnterpriseAddress :: NetworkId -> NativeScriptHash -> Address -nativeScriptHashEnterpriseAddress network nsHash = - validatorHashEnterpriseAddress network (wrap $ unwrap nsHash) - --- | Calculates a hash of a PlutusScript stake validator -plutusScriptStakeValidatorHash - :: PlutusScriptStakeValidator -> StakeValidatorHash -plutusScriptStakeValidatorHash = unwrap >>> plutusScriptHash >>> wrap - -- | Calculates a hash of a NativeScript stake validator nativeScriptStakeValidatorHash :: NativeScriptStakeValidator -> StakeValidatorHash nativeScriptStakeValidatorHash = unwrap >>> nativeScriptHash >>> unwrap >>> wrap - --- | Converts a `MintingPolicy` to a `CurrencySymbol`. -scriptCurrencySymbol :: MintingPolicy -> CurrencySymbol -scriptCurrencySymbol = CurrencySymbol - <<< unwrap - <<< scriptHashToBytes - <<< unwrap - <<< - mintingPolicyHash diff --git a/src/Internal/Serialization.purs b/src/Internal/Serialization.purs index 645c5b50d..1734507fd 100644 --- a/src/Internal/Serialization.purs +++ b/src/Internal/Serialization.purs @@ -17,12 +17,22 @@ module Ctl.Internal.Serialization import Prelude import Cardano.Serialization.Lib - ( VRFKeyHash + ( Address + , RewardAddress + , StakeCredential + , VRFKeyHash , fromBytes , toBytes , transactionInput_new ) import Cardano.Serialization.Lib.Internal (packListContainer) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum (fromBigInt, fromStringUnsafe, toString) as BigNum +import Cardano.Types.NativeScript (toCsl) +import Cardano.Types.NetworkId as T +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.RewardAddress as T +import Cardano.Types.TransactionOutput as T import Ctl.Internal.Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) as T @@ -51,7 +61,6 @@ import Ctl.Internal.Cardano.Types.Transaction , Redeemer , Relay(SingleHostAddr, SingleHostName, MultiHostName) , Transaction(Transaction) - , TransactionOutput(TransactionOutput) , TxBody(TxBody) , URL(URL) , UnitInterval @@ -67,23 +76,13 @@ import Ctl.Internal.FfiHelpers , containerHelper , maybeFfiHelper ) -import Ctl.Internal.Helpers (fromJustEff) -import Ctl.Internal.Serialization.Address - ( Address - , RewardAddress - , StakeCredential - ) -import Ctl.Internal.Serialization.Address (NetworkId(TestnetId, MainnetId)) as T -import Ctl.Internal.Serialization.AuxiliaryData (convertAuxiliaryData) +import Ctl.Internal.Helpers (fromJustEff, notImplemented) import Ctl.Internal.Serialization.BigInt as Serialization import Ctl.Internal.Serialization.Hash ( Ed25519KeyHash , ScriptHash , scriptHashFromBytes ) -import Ctl.Internal.Serialization.NativeScript (convertNativeScript) -import Ctl.Internal.Serialization.PlutusData (convertPlutusData) -import Ctl.Internal.Serialization.PlutusScript (convertPlutusScript) import Ctl.Internal.Serialization.Types ( AssetName , Assets @@ -149,17 +148,9 @@ import Ctl.Internal.Serialization.WitnessSet , convertWitnessSet ) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum (fromBigInt, fromStringUnsafe, toString) as BigNum import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Int as Csl -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) -import Ctl.Internal.Types.PlutusData as PlutusData -import Ctl.Internal.Types.RewardAddress (RewardAddress, unRewardAddress) as T import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2)) as S -import Ctl.Internal.Types.TokenName (getTokenName) as TokenName import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) as T import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) as T import Data.Array as Array @@ -485,52 +476,53 @@ foreign import setTxIsValid :: Transaction -> Boolean -> Effect Unit convertTxBody :: T.TxBody -> Effect TransactionBody convertTxBody (T.TxBody body) = do - let inputs = convertTxInputs $ Array.fromFoldable body.inputs - outputs <- convertTxOutputs body.outputs - fee <- fromJustEff "Failed to convert fee" $ BigNum.fromBigInt - (unwrap body.fee) - txBody <- newTransactionBody inputs outputs fee - for_ body.ttl $ unwrap >>> setTxBodyTtl txBody - for_ body.certs $ convertCerts >=> setTxBodyCerts txBody - for_ body.withdrawals $ convertWithdrawals >=> setTxBodyWithdrawals txBody - for_ body.update $ convertUpdate >=> setTxBodyUpdate txBody - for_ body.auxiliaryDataHash $ - unwrap >>> fromBytes >>> fromJustEff - "Failed to convert auxiliary data hash" - >=> transactionBodySetAuxiliaryDataHash txBody - for_ body.validityStartInterval - $ unwrap - >>> BigNum.toString - >>> BigNum.fromStringUnsafe - >>> - transactionBodySetValidityStartInterval txBody - for_ body.requiredSigners - $ map unwrap - >>> transactionBodySetRequiredSigners containerHelper txBody - for_ body.networkId $ convertNetworkId >=> setTxBodyNetworkId txBody - for_ body.mint $ convertMint >=> setTxBodyMint txBody - for_ body.scriptDataHash $ - unwrap >>> fromBytes >>> fromJustEff - "Failed to convert script data hash" - >=> setTxBodyScriptDataHash txBody - for_ body.collateral $ convertTxInputs >>> setTxBodyCollateral txBody - for_ body.requiredSigners - $ map unwrap - >>> transactionBodySetRequiredSigners containerHelper txBody - for_ body.networkId $ convertNetworkId >=> setTxBodyNetworkId txBody - for_ body.collateralReturn $ convertTxOutput >=> setTxBodyCollateralReturn - txBody - for_ body.totalCollateral - $ - unwrap - >>> BigNum.fromBigInt - >>> fromJustEff "Failed to convert fee" - >=> - setTxBodyTotalCollateral txBody - if Foldable.null body.referenceInputs then pure unit - else convertTxInputs (Array.fromFoldable body.referenceInputs) # - setTxBodyReferenceInputs txBody - pure txBody + -- let inputs = convertTxInputs $ Array.fromFoldable body.inputs + -- outputs <- convertTxOutputs body.outputs + -- fee <- fromJustEff "Failed to convert fee" $ BigNum.fromBigInt + -- (unwrap body.fee) + -- txBody <- newTransactionBody inputs outputs fee + -- for_ body.ttl $ unwrap >>> setTxBodyTtl txBody + -- for_ body.certs $ convertCerts >=> setTxBodyCerts txBody + -- for_ body.withdrawals $ convertWithdrawals >=> setTxBodyWithdrawals txBody + -- for_ body.update $ convertUpdate >=> setTxBodyUpdate txBody + -- for_ body.auxiliaryDataHash $ + -- unwrap >>> fromBytes >>> fromJustEff + -- "Failed to convert auxiliary data hash" + -- >=> transactionBodySetAuxiliaryDataHash txBody + -- for_ body.validityStartInterval + -- $ unwrap + -- >>> BigNum.toString + -- >>> BigNum.fromStringUnsafe + -- >>> + -- transactionBodySetValidityStartInterval txBody + -- for_ body.requiredSigners + -- $ map unwrap + -- >>> transactionBodySetRequiredSigners containerHelper txBody + -- for_ body.networkId $ convertNetworkId >=> setTxBodyNetworkId txBody + -- for_ body.mint $ convertMint >=> setTxBodyMint txBody + -- for_ body.scriptDataHash $ + -- unwrap >>> fromBytes >>> fromJustEff + -- "Failed to convert script data hash" + -- >=> setTxBodyScriptDataHash txBody + -- for_ body.collateral $ convertTxInputs >>> setTxBodyCollateral txBody + -- for_ body.requiredSigners + -- $ map unwrap + -- >>> transactionBodySetRequiredSigners containerHelper txBody + -- for_ body.networkId $ convertNetworkId >=> setTxBodyNetworkId txBody + -- for_ body.collateralReturn $ convertTxOutput >=> setTxBodyCollateralReturn + -- txBody + -- for_ body.totalCollateral + -- $ + -- unwrap + -- >>> BigNum.fromBigInt + -- >>> fromJustEff "Failed to convert fee" + -- >=> + -- setTxBodyTotalCollateral txBody + -- if Foldable.null body.referenceInputs then pure unit + -- else convertTxInputs (Array.fromFoldable body.referenceInputs) # + -- setTxBodyReferenceInputs txBody + -- pure txBody + notImplemented convertTransaction :: T.Transaction -> Effect Transaction convertTransaction @@ -540,7 +532,7 @@ convertTransaction do txBody <- convertTxBody body ws <- convertWitnessSet witnessSet - mbAuxiliaryData <- for auxiliaryData convertAuxiliaryData + mbAuxiliaryData <- for auxiliaryData notImplemented tx <- case mbAuxiliaryData of Nothing -> newTransaction_ txBody ws Just ad -> newTransaction txBody ws ad @@ -593,55 +585,56 @@ convertProtocolParamUpdate , collateralPercentage , maxCollateralInputs } = do - ppu <- newProtocolParamUpdate - for_ minfeeA $ ppuSetMinfeeA ppu - <=< fromJustEff "convertProtocolParamUpdate: min_fee_a must not be negative" - <<< BigNum.fromBigInt - <<< unwrap - for_ minfeeB $ ppuSetMinfeeB ppu - <=< fromJustEff "convertProtocolParamUpdate: min_fee_b must not be negative" - <<< BigNum.fromBigInt - <<< unwrap - for_ maxBlockBodySize $ ppuSetMaxBlockBodySize ppu <<< UInt.toInt - for_ maxTxSize $ ppuSetMaxTxSize ppu <<< UInt.toInt - for_ maxBlockHeaderSize $ ppuSetMaxBlockHeaderSize ppu <<< UInt.toInt - for_ keyDeposit $ ppuSetKeyDeposit ppu - <=< - fromJustEff - "convertProtocolParamUpdate: key_deposit must not be negative" - <<< BigNum.fromBigInt - <<< unwrap - for_ poolDeposit $ ppuSetPoolDeposit ppu - <=< - fromJustEff - "convertProtocolParamUpdate: pool_deposit must not be negative" - <<< BigNum.fromBigInt - <<< unwrap - for_ maxEpoch $ ppuSetMaxEpoch ppu <<< UInt.toInt <<< unwrap - for_ nOpt $ ppuSetNOpt ppu <<< UInt.toInt - for_ poolPledgeInfluence - $ mkUnitInterval - >=> ppuSetPoolPledgeInfluence ppu - for_ expansionRate - $ mkUnitInterval - >=> ppuSetExpansionRate ppu - for_ treasuryGrowthRate - $ mkUnitInterval - >=> ppuSetTreasuryGrowthRate ppu - for_ protocolVersion \pv -> - ppuSetProtocolVersion ppu =<< - newProtocolVersion (UInt.toInt pv.major) - (UInt.toInt pv.minor) - for_ minPoolCost $ ppuSetMinPoolCost ppu - for_ adaPerUtxoByte $ ppuSetAdaPerUtxoByte ppu - for_ costModels $ convertCostmdls >=> ppuSetCostModels ppu - for_ executionCosts $ convertExUnitPrices >=> ppuSetExecutionCosts ppu - for_ maxTxExUnits $ convertExUnits >=> ppuSetMaxTxExUnits ppu - for_ maxBlockExUnits $ convertExUnits >=> ppuSetMaxBlockExUnits ppu - for_ maxValueSize $ UInt.toInt >>> ppuSetMaxValueSize ppu - for_ collateralPercentage $ UInt.toInt >>> ppuSetCollateralPercentage ppu - for_ maxCollateralInputs $ UInt.toInt >>> ppuSetMaxCollateralInputs ppu - pure ppu + -- ppu <- newProtocolParamUpdate + -- for_ minfeeA $ ppuSetMinfeeA ppu + -- <=< fromJustEff "convertProtocolParamUpdate: min_fee_a must not be negative" + -- <<< BigNum.fromBigInt + -- <<< unwrap + -- for_ minfeeB $ ppuSetMinfeeB ppu + -- <=< fromJustEff "convertProtocolParamUpdate: min_fee_b must not be negative" + -- <<< BigNum.fromBigInt + -- <<< unwrap + -- for_ maxBlockBodySize $ ppuSetMaxBlockBodySize ppu <<< UInt.toInt + -- for_ maxTxSize $ ppuSetMaxTxSize ppu <<< UInt.toInt + -- for_ maxBlockHeaderSize $ ppuSetMaxBlockHeaderSize ppu <<< UInt.toInt + -- for_ keyDeposit $ ppuSetKeyDeposit ppu + -- <=< + -- fromJustEff + -- "convertProtocolParamUpdate: key_deposit must not be negative" + -- <<< BigNum.fromBigInt + -- <<< unwrap + -- for_ poolDeposit $ ppuSetPoolDeposit ppu + -- <=< + -- fromJustEff + -- "convertProtocolParamUpdate: pool_deposit must not be negative" + -- <<< BigNum.fromBigInt + -- <<< unwrap + -- for_ maxEpoch $ ppuSetMaxEpoch ppu <<< UInt.toInt <<< unwrap + -- for_ nOpt $ ppuSetNOpt ppu <<< UInt.toInt + -- for_ poolPledgeInfluence + -- $ mkUnitInterval + -- >=> ppuSetPoolPledgeInfluence ppu + -- for_ expansionRate + -- $ mkUnitInterval + -- >=> ppuSetExpansionRate ppu + -- for_ treasuryGrowthRate + -- $ mkUnitInterval + -- >=> ppuSetTreasuryGrowthRate ppu + -- for_ protocolVersion \pv -> + -- ppuSetProtocolVersion ppu =<< + -- newProtocolVersion (UInt.toInt pv.major) + -- (UInt.toInt pv.minor) + -- for_ minPoolCost $ ppuSetMinPoolCost ppu + -- for_ adaPerUtxoByte $ ppuSetAdaPerUtxoByte ppu + -- for_ costModels $ convertCostmdls >=> ppuSetCostModels ppu + -- for_ executionCosts $ convertExUnitPrices >=> ppuSetExecutionCosts ppu + -- for_ maxTxExUnits $ convertExUnits >=> ppuSetMaxTxExUnits ppu + -- for_ maxBlockExUnits $ convertExUnits >=> ppuSetMaxBlockExUnits ppu + -- for_ maxValueSize $ UInt.toInt >>> ppuSetMaxValueSize ppu + -- for_ collateralPercentage $ UInt.toInt >>> ppuSetCollateralPercentage ppu + -- for_ maxCollateralInputs $ UInt.toInt >>> ppuSetMaxCollateralInputs ppu + -- pure ppu + notImplemented mkUnitInterval :: T.UnitInterval -> Effect UnitInterval @@ -655,12 +648,13 @@ convertExUnitPrices { memPrice, stepPrice } = stepPrice convertWithdrawals :: Map.Map T.RewardAddress Value.Coin -> Effect Withdrawals -convertWithdrawals mp = - newWithdrawals containerHelper =<< do - for (Map.toUnfoldable mp) \(k /\ Value.Coin v) -> do - Tuple (T.unRewardAddress k) <$> fromJustEff - "convertWithdrawals: Failed to convert BigNum" - (BigNum.fromBigInt v) +convertWithdrawals mp = notImplemented + +-- newWithdrawals containerHelper =<< do +-- for (Map.toUnfoldable mp) \(k /\ Value.Coin v) -> do +-- Tuple (T.unRewardAddress k) <$> fromJustEff +-- "convertWithdrawals: Failed to convert BigNum" +-- (BigNum.fromBigInt v) convertCerts :: Array T.Certificate -> Effect Certificates convertCerts certs = do @@ -669,65 +663,66 @@ convertCerts certs = do pure certificates convertCert :: T.Certificate -> Effect Certificate -convertCert = case _ of - T.StakeRegistration stakeCredential -> - newStakeRegistrationCertificate stakeCredential - T.StakeDeregistration stakeCredential -> - newStakeDeregistrationCertificate stakeCredential - T.StakeDelegation stakeCredential keyHash -> - newStakeDelegationCertificate stakeCredential (unwrap $ unwrap keyHash) - T.PoolRegistration - { operator - , vrfKeyhash - , pledge - , cost - , margin - , rewardAccount - , poolOwners - , relays - , poolMetadata - } -> do - margin' <- newUnitInterval margin.numerator margin.denominator - poolOwners' <- convertPoolOwners containerHelper - (unwrap <<< unwrap <$> poolOwners) - relays' <- convertRelays relays - poolMetadata' <- for poolMetadata convertPoolMetadata - newPoolRegistrationCertificate (unwrap $ unwrap operator) - (unwrap vrfKeyhash) - pledge - cost - margin' - (T.unRewardAddress rewardAccount) - poolOwners' - relays' - (maybeToUor poolMetadata') - T.PoolRetirement { poolKeyHash, epoch } -> - newPoolRetirementCertificate (unwrap $ unwrap poolKeyHash) - (UInt.toInt $ unwrap epoch) - T.GenesisKeyDelegation - { genesisHash: T.GenesisHash genesisHash - , genesisDelegateHash: T.GenesisDelegateHash genesisDelegateHash - , vrfKeyhash: T.VRFKeyHash vrfKeyhash - } -> do - join $ newGenesisKeyDelegationCertificate - <$> - ( fromJustEff "Failed to convert genesis hash" - $ fromBytes genesisHash - ) - <*> - ( fromJustEff "Failed to convert genesis delegate hash" - $ fromBytes genesisDelegateHash - ) - <*> - pure vrfKeyhash - T.MoveInstantaneousRewardsCert mir -> do - newMoveInstantaneousRewardsCertificate =<< - convertMoveInstantaneousReward mir +convertCert = + -- T.StakeRegistration stakeCredential -> + -- newStakeRegistrationCertificate stakeCredential + -- T.StakeDeregistration stakeCredential -> + -- newStakeDeregistrationCertificate stakeCredential + -- T.StakeDelegation stakeCredential keyHash -> + -- newStakeDelegationCertificate stakeCredential (unwrap $ unwrap keyHash) + -- T.PoolRegistration + -- { operator + -- , vrfKeyhash + -- , pledge + -- , cost + -- , margin + -- , rewardAccount + -- , poolOwners + -- , relays + -- , poolMetadata + -- } -> do + -- margin' <- newUnitInterval margin.numerator margin.denominator + -- poolOwners' <- convertPoolOwners containerHelper + -- (unwrap <<< unwrap <$> poolOwners) + -- relays' <- convertRelays relays + -- poolMetadata' <- for poolMetadata convertPoolMetadata + -- newPoolRegistrationCertificate (unwrap $ unwrap operator) + -- (unwrap vrfKeyhash) + -- pledge + -- cost + -- margin' + -- (T.unRewardAddress rewardAccount) + -- poolOwners' + -- relays' + -- (maybeToUor poolMetadata') + -- T.PoolRetirement { poolKeyHash, epoch } -> + -- newPoolRetirementCertificate (unwrap $ unwrap poolKeyHash) + -- (UInt.toInt $ unwrap epoch) + -- T.GenesisKeyDelegation + -- { genesisHash: T.GenesisHash genesisHash + -- , genesisDelegateHash: T.GenesisDelegateHash genesisDelegateHash + -- , vrfKeyhash: T.VRFKeyHash vrfKeyhash + -- } -> do + -- join $ newGenesisKeyDelegationCertificate + -- <$> + -- ( fromJustEff "Failed to convert genesis hash" + -- $ fromBytes genesisHash + -- ) + -- <*> + -- ( fromJustEff "Failed to convert genesis delegate hash" + -- $ fromBytes genesisDelegateHash + -- ) + -- <*> + -- pure vrfKeyhash + -- T.MoveInstantaneousRewardsCert mir -> do + -- newMoveInstantaneousRewardsCertificate =<< + -- convertMoveInstantaneousReward mir + notImplemented convertMIRToStakeCredentials :: T.MIRToStakeCredentials -> Effect MIRToStakeCredentials convertMIRToStakeCredentials (T.MIRToStakeCredentials mp) = - newMIRToStakeCredentials containerHelper (Map.toUnfoldable mp) + notImplemented -- newMIRToStakeCredentials containerHelper (Map.toUnfoldable mp) convertMoveInstantaneousReward :: T.MoveInstantaneousReward -> Effect MoveInstantaneousReward @@ -757,31 +752,33 @@ convertRelays relays = do newMultiHostName dnsName convertNetworkId :: T.NetworkId -> Effect NetworkId -convertNetworkId = case _ of - T.TestnetId -> networkIdTestnet - T.MainnetId -> networkIdMainnet +convertNetworkId = -- case _ of + -- T.TestnetId -> networkIdTestnet + -- T.MainnetId -> networkIdMainnet + notImplemented convertMint :: T.Mint -> Effect Mint convertMint (T.Mint nonAdaAssets) = do - mint <- newMint - let assetsMap = Value.unwrapNonAdaAsset nonAdaAssets - forWithIndex_ assetsMap \scriptHashBytes' values -> do - let - mScripthash = scriptHashFromBytes $ Value.getCurrencySymbol - scriptHashBytes' - scripthash <- fromJustEff - "scriptHashFromBytes failed while converting value" - mScripthash - assets <- newMintAssets - forWithIndex_ values \tokenName' bigIntValue -> do - let tokenName = TokenName.getTokenName tokenName' - assetName <- newAssetName tokenName - let bigInt = Serialization.convertBigInt bigIntValue - int <- fromJustEff "convertMint: numeric overflow or underflow" $ - _bigIntToInt maybeFfiHelper bigInt - insertMintAsset assets assetName int - insertMintAssets mint scripthash assets - pure mint + -- mint <- newMint + -- let assetsMap = Value.unwrapMultiAsset nonAdaAssets + -- forWithIndex_ assetsMap \scriptHashBytes' values -> do + -- let + -- mScripthash = scriptHashFromBytes $ Value.getCurrencySymbol + -- scriptHashBytes' + -- scripthash <- fromJustEff + -- "scriptHashFromBytes failed while converting value" + -- mScripthash + -- assets <- newMintAssets + -- forWithIndex_ values \tokenName' bigIntValue -> do + -- let tokenName = AssetName.getAssetName tokenName' + -- assetName <- newAssetName tokenName + -- let bigInt = Serialization.convertBigInt bigIntValue + -- int <- fromJustEff "convertMint: numeric overflow or underflow" $ + -- _bigIntToInt maybeFfiHelper bigInt + -- insertMintAsset assets assetName int + -- insertMintAssets mint scripthash assets + -- pure mint + notImplemented convertTxInputs :: Array T.TransactionInput @@ -802,71 +799,76 @@ convertTxOutputs arrOutputs = do convertTxOutput :: T.TransactionOutput -> Effect TransactionOutput convertTxOutput (T.TransactionOutput { address, amount, datum, scriptRef }) = do - value <- convertValue amount - txo <- newTransactionOutput address value - case datum of - NoOutputDatum -> pure unit - OutputDatumHash dataHash -> do - for_ (fromBytes $ unwrap dataHash) $ - transactionOutputSetDataHash txo - OutputDatum datumValue -> do - transactionOutputSetPlutusData txo - $ convertPlutusData - $ unwrap datumValue - for_ scriptRef $ - convertScriptRef >>> transactionOutputSetScriptRef txo - pure txo + -- value <- convertValue amount + -- txo <- newTransactionOutput address value + -- case datum of + -- NoOutputDatum -> pure unit + -- OutputDatumHash dataHash -> do + -- for_ (fromBytes $ unwrap dataHash) $ + -- transactionOutputSetDataHash txo + -- OutputDatum datumValue -> do + -- transactionOutputSetPlutusData txo + -- $ convertPlutusData + -- $ unwrap datumValue + -- for_ scriptRef $ + -- convertScriptRef >>> transactionOutputSetScriptRef txo + -- pure txo + notImplemented convertScriptRef :: T.ScriptRef -> ScriptRef -convertScriptRef (T.NativeScriptRef nativeScript) = - scriptRefNewNativeScript $ convertNativeScript nativeScript -convertScriptRef (T.PlutusScriptRef plutusScript) = - scriptRefNewPlutusScript $ convertPlutusScript plutusScript +convertScriptRef = notImplemented -- (T.NativeScriptRef nativeScript) = + +-- scriptRefNewNativeScript $ convertNativeScript nativeScript +-- convertScriptRef (T.PlutusScriptRef plutusScript) = +-- scriptRefNewPlutusScript $ convertPlutusScript plutusScript convertValue :: Value.Value -> Effect Value convertValue val = do - let - lovelace = Value.valueToCoin' val - m = Value.getNonAdaAsset' val - multiasset <- newMultiAsset - forWithIndex_ m \scriptHashBytes' values -> do - let - mScripthash = scriptHashFromBytes $ Value.getCurrencySymbol - scriptHashBytes' - scripthash <- fromJustEff - "scriptHashFromBytes failed while converting value" - mScripthash - assets <- newAssets - forWithIndex_ values \tokenName' bigIntValue -> do - let tokenName = TokenName.getTokenName tokenName' - assetName <- newAssetName tokenName - value <- fromJustEff "convertValue: number must not be negative" $ - BigNum.fromBigInt bigIntValue - insertAssets assets assetName value - insertMultiAsset multiasset scripthash assets - value <- newValueFromAssets multiasset - valueSetCoin value =<< fromJustEff - "convertValue: coin value must not be negative" - (BigNum.fromBigInt lovelace) - pure value + -- let + -- lovelace = Value.valueToCoin' val + -- m = Value.getMultiAsset' val + -- multiasset <- newMultiAsset + -- forWithIndex_ m \scriptHashBytes' values -> do + -- let + -- mScripthash = scriptHashFromBytes $ Value.getCurrencySymbol + -- scriptHashBytes' + -- scripthash <- fromJustEff + -- "scriptHashFromBytes failed while converting value" + -- mScripthash + -- assets <- newAssets + -- forWithIndex_ values \tokenName' bigIntValue -> do + -- let tokenName = AssetName.getAssetName tokenName' + -- assetName <- newAssetName tokenName + -- value <- fromJustEff "convertValue: number must not be negative" $ + -- BigNum.fromBigInt bigIntValue + -- insertAssets assets assetName value + -- insertMultiAsset multiasset scripthash assets + -- value <- newValueFromAssets multiasset + -- valueSetCoin value =<< fromJustEff + -- "convertValue: coin value must not be negative" + -- (BigNum.fromBigInt lovelace) + -- pure value + notImplemented convertCostmdls :: T.Costmdls -> Effect Costmdls convertCostmdls (T.Costmdls cs) = do - costmdls <- newCostmdls - forWithIndex_ cs \language costModel -> do - language' <- case language of - S.PlutusV1 -> newPlutusV1 - S.PlutusV2 -> newPlutusV2 - costModel' <- convertCostModel costModel - costmdlsSetCostModel costmdls language' costModel' - pure costmdls + -- costmdls <- newCostmdls + -- forWithIndex_ cs \language costModel -> do + -- language' <- case language of + -- S.PlutusV1 -> newPlutusV1 + -- S.PlutusV2 -> newPlutusV2 + -- costModel' <- convertCostModel costModel + -- costmdlsSetCostModel costmdls language' costModel' + -- pure costmdls + notImplemented convertCostModel :: T.CostModel -> Effect CostModel convertCostModel (T.CostModel costs) = do - costModel <- newCostModel - forWithIndex_ costs $ \operation cost -> - costModelSetCost costModel operation cost - pure costModel + -- costModel <- newCostModel + -- forWithIndex_ costs $ \operation cost -> + -- costModelSetCost costModel operation cost + -- pure costModel + notImplemented convertTransactionUnspentOutput :: T.TransactionUnspentOutput -> Effect TransactionUnspentOutput @@ -882,14 +884,16 @@ hashScriptData -> Array PlutusData.PlutusData -> Effect ScriptDataHash hashScriptData cms rs ps = do - rs' <- newRedeemers - cms' <- convertCostmdls cms - traverse_ (addRedeemer rs' <=< convertRedeemer) rs - -- If an empty `PlutusData` array is passed to CSL's script integrity hashing - -- function, the resulting hash will be wrong - case ps of - [] -> _hashScriptDataNoDatums rs' cms' - _ -> _hashScriptData rs' cms' $ map convertPlutusData ps + -- rs' <- newRedeemers + -- cms' <- convertCostmdls cms + -- traverse_ (addRedeemer rs' <=< convertRedeemer) rs + -- -- If an empty `PlutusData` array is passed to CSL's script integrity hashing + -- -- function, the resulting hash will be wrong + -- case ps of + -- [] -> _hashScriptDataNoDatums rs' cms' + -- _ -> _hashScriptData rs' cms' $ map convertPlutusData ps + notImplemented serializeData :: forall (a :: Type). ToData a => a -> CborBytes -serializeData = wrap <<< toBytes <<< convertPlutusData <<< toData +serializeData = -- wrap <<< toBytes <<< convertPlutusData <<< toData + notImplemented diff --git a/src/Internal/Serialization/Address.purs b/src/Internal/Serialization/Address.purs index 3cd75aeb5..16bb49e64 100644 --- a/src/Internal/Serialization/Address.purs +++ b/src/Internal/Serialization/Address.purs @@ -1,88 +1,21 @@ module Ctl.Internal.Serialization.Address - ( Slot(Slot) - , BlockId(BlockId) + ( BlockId(BlockId) , TransactionIndex(TransactionIndex) , CertificateIndex(CertificateIndex) - , Pointer - , Address(Address) - , BaseAddress - , ByronAddress - , EnterpriseAddress - , PointerAddress - , RewardAddress - , StakeCredential(StakeCredential) - , addressBech32 - , addressNetworkId - , intToNetworkId - , keyHashCredential - , scriptHashCredential - , withStakeCredential - , baseAddress - , baseAddressPaymentCred - , baseAddressDelegationCred - , baseAddressToAddress - , paymentKeyHashStakeKeyHashAddress - , scriptHashStakeKeyHashAddress - , paymentKeyHashScriptHashAddress - , scriptHashScriptHashAddress - , scriptAddress + -- , addressBech32 + -- , addressNetworkId + -- , keyHashCredential + -- , scriptHashCredential + -- , withStakeCredential + -- , baseAddress + -- , baseAddressPaymentCred + -- , baseAddressDelegationCred + -- , baseAddressToAddress , ByronProtocolMagic(ByronProtocolMagic) - , NetworkId(MainnetId, TestnetId) - , stakeCredentialToKeyHash - , stakeCredentialToScriptHash - , addressFromBech32 - , addressPaymentCred - , addressStakeCred - , baseAddressFromAddress - , baseAddressBytes - , baseAddressBech32 - , baseAddressFromBytes - , baseAddressFromBech32 - , baseAddressNetworkId - , byronAddressToBase58 - , byronAddressFromBase58 - , byronProtocolMagic - , byronAddressAttributes - , byronAddressNetworkId - , byronAddressFromAddress - , byronAddressToAddress - , byronAddressIsValid - , icarusFromKey - , enterpriseAddress - , enterpriseAddressPaymentCred - , enterpriseAddressToAddress - , enterpriseAddressFromAddress - , enterpriseAddressBytes - , enterpriseAddressBech32 - , enterpriseAddressFromBytes - , enterpriseAddressFromBech32 - , enterpriseAddressNetworkId - , paymentKeyHashEnterpriseAddress - , scriptHashEnterpriseAddress - , pointerAddress - , pointerAddressPaymentCred - , pointerAddressToAddress - , pointerAddressFromAddress - , pointerAddressStakePointer - , pointerAddressBytes - , pointerAddressBech32 - , pointerAddressFromBytes - , pointerAddressFromBech32 - , pointerAddressNetworkId - , paymentKeyHashPointerAddress - , scriptHashPointerAddress - , rewardAddress - , rewardAddressPaymentCred - , rewardAddressToAddress - , rewardAddressBytes - , rewardAddressBech32 - , rewardAddressFromBytes - , rewardAddressFromBech32 - , rewardAddressNetworkId - , rewardAddressFromAddress - , unsafeIntToNetId ) where +import Cardano.Types.NetworkId +import Cardano.Types.Slot import Prelude import Aeson @@ -93,6 +26,18 @@ import Aeson , encodeAeson ) import Cardano.Serialization.Lib as Csl +import Cardano.Types.BaseAddress as X +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.ByronAddress as X +import Cardano.Types.EnterpriseAddress as X +import Cardano.Types.NetworkId as NetworkId +import Cardano.Types.NetworkId as X +import Cardano.Types.PlutusData (PlutusData(Bytes)) +import Cardano.Types.Pointer as X +import Cardano.Types.PointerAddress as X +import Cardano.Types.RewardAddress as X +import Cardano.Types.Slot as X +import Cardano.Types.StakeCredential as X import Control.Alt ((<|>)) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Ctl.Internal.FromData (class FromData) @@ -101,9 +46,7 @@ import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash) import Ctl.Internal.Serialization.Types (Bip32PublicKey) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Aliases (Base58String, Bech32String) -import Ctl.Internal.Types.BigNum (BigNum) import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.PlutusData (PlutusData(Bytes)) import Data.ByteArray (ByteArray) import Data.Either (note) import Data.Function (on) @@ -113,22 +56,6 @@ import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Data.UInt (UInt) import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (class Arbitrary) -import Test.QuickCheck.Gen (chooseInt) - -newtype Slot = Slot BigNum - -derive instance Newtype Slot _ -derive instance Generic Slot _ -derive newtype instance Eq Slot -derive newtype instance Ord Slot -derive newtype instance DecodeAeson Slot -derive newtype instance EncodeAeson Slot -derive newtype instance FromData Slot -derive newtype instance ToData Slot - -instance Show Slot where - show = genericShow -- it is an integer in ogmios -- bytestring in plutus @@ -179,491 +106,4 @@ type Pointer = , certIx :: CertificateIndex } -newtype Address = Address Csl.Address - -derive instance Newtype Address _ - -instance Show Address where - show a = "(Address " <> addressBech32 a <> ")" - -instance EncodeAeson Address where - encodeAeson = encodeAeson <<< addressBech32 - -showVia - :: forall (a :: Type) (b :: Type). Show b => String -> (a -> b) -> a -> String -showVia nm toShowable addr = "(" <> nm <> " " <> show (toShowable addr) <> ")" - -instance Eq Address where - eq = eq `on` addressBytes - -instance Ord Address where - compare = compare `on` addressBytes - --- FIX ME: https://github.com/Plutonomicon/cardano-transaction-lib/issues/193 --- Plutus uses `PlutusTx.makeIsDataIndexed ''Address [('Address,0)]` on their --- record, I'm not sure if this will become an issue given our foreign --- representation. -instance FromData Address where - fromData (Bytes res) = addressFromBytes (wrap res) - fromData _ = Nothing - -instance ToData Address where - toData addr = toData <<< unwrap <<< addressBytes $ addr - -foreign import data BaseAddress :: Type - -instance Show BaseAddress where - show = showVia "BaseAddress" baseAddressToAddress - -instance Eq BaseAddress where - eq = eq `on` baseAddressToAddress - -instance FromData BaseAddress where - fromData (Bytes res) = baseAddressFromBytes (wrap res) - fromData _ = Nothing - -instance ToData BaseAddress where - toData = toData <<< baseAddressToAddress - -foreign import data ByronAddress :: Type - -instance Eq ByronAddress where - eq = eq `on` byronAddressToAddress - -instance Show ByronAddress where - show = showVia "ByronAddress" byronAddressToAddress - -instance FromData ByronAddress where - fromData (Bytes res) = byronAddressFromBytes (wrap res) - fromData _ = Nothing - -instance ToData ByronAddress where - toData = toData <<< byronAddressToAddress - -foreign import data EnterpriseAddress :: Type - -instance Eq EnterpriseAddress where - eq = eq `on` enterpriseAddressToAddress - -instance Show EnterpriseAddress where - show = showVia "EnterpriseAddress" enterpriseAddressToAddress - -instance FromData EnterpriseAddress where - fromData (Bytes res) = enterpriseAddressFromBytes (wrap res) - fromData _ = Nothing - -instance ToData EnterpriseAddress where - toData = toData <<< enterpriseAddressToAddress - -foreign import data PointerAddress :: Type - -instance Eq PointerAddress where - eq = eq `on` pointerAddressToAddress - -instance Show PointerAddress where - show = showVia "PointerAddress" pointerAddressToAddress - -instance FromData PointerAddress where - fromData (Bytes res) = pointerAddressFromBytes (wrap res) - fromData _ = Nothing - -instance ToData PointerAddress where - toData = toData <<< pointerAddressToAddress - -foreign import data RewardAddress :: Type - -instance Eq RewardAddress where - eq = eq `on` rewardAddressToAddress - -instance Show RewardAddress where - show = showVia "RewardAddress" rewardAddressToAddress - -instance Ord RewardAddress where - compare = compare `on` rewardAddressBytes - -instance FromData RewardAddress where - fromData (Bytes res) = rewardAddressFromBytes (wrap res) - fromData _ = Nothing - -instance ToData RewardAddress where - toData = toData <<< rewardAddressBytes - -instance EncodeAeson RewardAddress where - encodeAeson = encodeAeson <<< rewardAddressBech32 - -instance DecodeAeson RewardAddress where - decodeAeson = decodeAeson >=> - note (TypeMismatch "RewardAddress") <<< rewardAddressFromBech32 - -newtype StakeCredential = StakeCredential Csl.StakeCredential - -derive instance Newtype StakeCredential _ - -instance Eq StakeCredential where - eq = eq `on` stakeCredentialToBytes - -instance Ord StakeCredential where - compare = compare `on` stakeCredentialToBytes - -instance Show StakeCredential where - show = showVia "StakeCredenetial" $ withStakeCredential - { onKeyHash: show, onScriptHash: show } - -instance FromData StakeCredential where - fromData (Bytes res) = stakeCredentialFromBytes $ wrap res - fromData _ = Nothing - -instance ToData StakeCredential where - toData = toData <<< unwrap <<< stakeCredentialToBytes - -instance EncodeAeson StakeCredential where - encodeAeson = withStakeCredential - { onKeyHash: encodeAeson, onScriptHash: encodeAeson } - -foreign import _addressFromBech32 - :: MaybeFfiHelper -> Bech32String -> Maybe Address - --- We can't use FromBytes class here, because of cyclic dependencies -foreign import _addressFromBytes :: MaybeFfiHelper -> CborBytes -> Maybe Address -foreign import addressBytes :: Address -> CborBytes -foreign import addressBech32 :: Address -> Bech32String - -foreign import _addressNetworkId :: (Int -> NetworkId) -> Address -> NetworkId - -addressNetworkId :: Address -> NetworkId -addressNetworkId = _addressNetworkId unsafeIntToNetId - -intToNetworkId :: Int -> Maybe NetworkId -intToNetworkId = case _ of - 0 -> Just TestnetId - 1 -> Just MainnetId - _ -> Nothing - -foreign import keyHashCredential :: Ed25519KeyHash -> StakeCredential -foreign import scriptHashCredential :: ScriptHash -> StakeCredential -foreign import withStakeCredential - :: forall (a :: Type) - . { onKeyHash :: Ed25519KeyHash -> a, onScriptHash :: ScriptHash -> a } - -> StakeCredential - -> a - -foreign import stakeCredentialToBytes :: StakeCredential -> CborBytes -foreign import _stakeCredentialFromBytes - :: MaybeFfiHelper -> CborBytes -> Maybe StakeCredential - -foreign import _baseAddress - :: (NetworkId -> Int) - -> { network :: NetworkId - , paymentCred :: StakeCredential - , delegationCred :: StakeCredential - } - -> BaseAddress - -baseAddress - :: { network :: NetworkId - , paymentCred :: StakeCredential - , delegationCred :: StakeCredential - } - -> BaseAddress -baseAddress = _baseAddress networkIdToInt - -foreign import baseAddressPaymentCred :: BaseAddress -> StakeCredential -foreign import baseAddressDelegationCred :: BaseAddress -> StakeCredential -foreign import _baseAddressFromAddress - :: MaybeFfiHelper -> Address -> Maybe BaseAddress - -foreign import baseAddressToAddress :: BaseAddress -> Address - newtype ByronProtocolMagic = ByronProtocolMagic UInt - -data NetworkId - = TestnetId - | MainnetId - -instance EncodeAeson NetworkId where - encodeAeson = case _ of - TestnetId -> encodeTagged' "TestnetId" {} - MainnetId -> encodeTagged' "MainnetId" {} - -instance Ord NetworkId where - compare = compare `on` networkIdToInt - -networkIdToInt :: NetworkId -> Int -networkIdToInt = case _ of - TestnetId -> 0 - MainnetId -> 1 - -derive instance Eq NetworkId -derive instance Generic NetworkId _ - -instance Show NetworkId where - show = genericShow - -instance Arbitrary NetworkId where - arbitrary = fromMaybe MainnetId <<< intToNetworkId <$> chooseInt 0 1 - -paymentKeyHashStakeKeyHashAddress - :: NetworkId -> Ed25519KeyHash -> Ed25519KeyHash -> BaseAddress -paymentKeyHashStakeKeyHashAddress networkId pkh skh = baseAddress - { network: networkId - , paymentCred: keyHashCredential pkh - , delegationCred: keyHashCredential skh - } - -scriptHashStakeKeyHashAddress - :: NetworkId -> ScriptHash -> Ed25519KeyHash -> BaseAddress -scriptHashStakeKeyHashAddress networkId sh skh = baseAddress - { network: networkId - , paymentCred: scriptHashCredential sh - , delegationCred: keyHashCredential skh - } - -paymentKeyHashScriptHashAddress - :: NetworkId -> Ed25519KeyHash -> ScriptHash -> BaseAddress -paymentKeyHashScriptHashAddress networkId pkh sh = baseAddress - { network: networkId - , paymentCred: keyHashCredential pkh - , delegationCred: scriptHashCredential sh - } - -scriptHashScriptHashAddress - :: NetworkId -> ScriptHash -> ScriptHash -> BaseAddress -scriptHashScriptHashAddress networkId sh sh' = baseAddress - { network: networkId - , paymentCred: scriptHashCredential sh - , delegationCred: scriptHashCredential sh' - } - -scriptAddress :: NetworkId -> ScriptHash -> BaseAddress -scriptAddress networkId sh = - scriptHashScriptHashAddress networkId sh sh - -stakeCredentialToKeyHash :: StakeCredential -> Maybe Ed25519KeyHash -stakeCredentialToKeyHash = withStakeCredential - { onKeyHash: Just - , onScriptHash: const Nothing - } - -stakeCredentialToScriptHash :: StakeCredential -> Maybe ScriptHash -stakeCredentialToScriptHash = withStakeCredential - { onKeyHash: const Nothing - , onScriptHash: Just - } - -stakeCredentialFromBytes :: CborBytes -> Maybe StakeCredential -stakeCredentialFromBytes = _stakeCredentialFromBytes maybeFfiHelper - -addressFromBytes :: CborBytes -> Maybe Address -addressFromBytes = _addressFromBytes maybeFfiHelper - -addressFromBech32 :: Bech32String -> Maybe Address -addressFromBech32 = _addressFromBech32 maybeFfiHelper - -addressPaymentCred :: Address -> Maybe StakeCredential -addressPaymentCred addr = - (baseAddressPaymentCred <$> baseAddressFromAddress addr) - <|> (pointerAddressPaymentCred <$> pointerAddressFromAddress addr) - <|> (enterpriseAddressPaymentCred <$> enterpriseAddressFromAddress addr) - -addressStakeCred :: Address -> Maybe StakeCredential -addressStakeCred addr = - (baseAddressDelegationCred <$> baseAddressFromAddress addr) - -baseAddressFromAddress :: Address -> Maybe BaseAddress -baseAddressFromAddress = _baseAddressFromAddress maybeFfiHelper - -baseAddressBytes :: BaseAddress -> CborBytes -baseAddressBytes = baseAddressToAddress >>> addressBytes - -baseAddressBech32 :: BaseAddress -> Bech32String -baseAddressBech32 = baseAddressToAddress >>> addressBech32 - -baseAddressFromBytes :: CborBytes -> Maybe BaseAddress -baseAddressFromBytes = addressFromBytes >=> baseAddressFromAddress - -baseAddressFromBech32 :: Bech32String -> Maybe BaseAddress -baseAddressFromBech32 = addressFromBech32 >=> baseAddressFromAddress - -baseAddressNetworkId :: BaseAddress -> NetworkId -baseAddressNetworkId = baseAddressToAddress >>> addressNetworkId - -foreign import byronAddressToBase58 :: ByronAddress -> Base58String -foreign import _byronAddressFromBase58 - :: MaybeFfiHelper -> Base58String -> Maybe ByronAddress - -byronAddressFromBase58 :: Base58String -> Maybe ByronAddress -byronAddressFromBase58 = _byronAddressFromBase58 maybeFfiHelper - -foreign import _byronAddressFromBytes - :: MaybeFfiHelper -> CborBytes -> Maybe ByronAddress - -byronAddressFromBytes :: CborBytes -> Maybe ByronAddress -byronAddressFromBytes = _byronAddressFromBytes maybeFfiHelper - -foreign import byronAddressBytes :: ByronAddress -> CborBytes - -foreign import byronProtocolMagic :: ByronAddress -> ByronProtocolMagic -foreign import byronAddressAttributes :: ByronAddress -> ByteArray -foreign import _byronAddressNetworkId - :: (Int -> NetworkId) -> ByronAddress -> NetworkId - -byronAddressNetworkId :: ByronAddress -> NetworkId -byronAddressNetworkId = _byronAddressNetworkId unsafeIntToNetId - -byronAddressFromAddress :: Address -> Maybe ByronAddress -byronAddressFromAddress = _byronAddressFromAddress maybeFfiHelper - -foreign import _byronAddressFromAddress - :: MaybeFfiHelper -> Address -> Maybe ByronAddress - -foreign import byronAddressToAddress :: ByronAddress -> Address - -foreign import byronAddressIsValid :: String -> Boolean - -foreign import icarusFromKey - :: Bip32PublicKey -> ByronProtocolMagic -> ByronAddress - -foreign import _enterpriseAddress - :: (NetworkId -> Int) - -> { network :: NetworkId, paymentCred :: StakeCredential } - -> EnterpriseAddress - -enterpriseAddress - :: { network :: NetworkId, paymentCred :: StakeCredential } - -> EnterpriseAddress -enterpriseAddress = _enterpriseAddress networkIdToInt - -paymentKeyHashEnterpriseAddress - :: NetworkId -> Ed25519KeyHash -> EnterpriseAddress -paymentKeyHashEnterpriseAddress networkId pkh = enterpriseAddress - { network: networkId - , paymentCred: keyHashCredential pkh - } - -scriptHashEnterpriseAddress - :: NetworkId -> ScriptHash -> EnterpriseAddress -scriptHashEnterpriseAddress networkId sh = enterpriseAddress - { network: networkId - , paymentCred: scriptHashCredential sh - } - -foreign import enterpriseAddressPaymentCred - :: EnterpriseAddress -> StakeCredential - -foreign import _enterpriseAddressFromAddress - :: MaybeFfiHelper -> Address -> Maybe EnterpriseAddress - -foreign import enterpriseAddressToAddress :: EnterpriseAddress -> Address - -enterpriseAddressFromAddress :: Address -> Maybe EnterpriseAddress -enterpriseAddressFromAddress = _enterpriseAddressFromAddress maybeFfiHelper - -enterpriseAddressBytes :: EnterpriseAddress -> CborBytes -enterpriseAddressBytes = enterpriseAddressToAddress >>> addressBytes - -enterpriseAddressBech32 :: EnterpriseAddress -> Bech32String -enterpriseAddressBech32 = enterpriseAddressToAddress >>> addressBech32 - -enterpriseAddressFromBytes :: CborBytes -> Maybe EnterpriseAddress -enterpriseAddressFromBytes = addressFromBytes >=> enterpriseAddressFromAddress - -enterpriseAddressFromBech32 :: Bech32String -> Maybe EnterpriseAddress -enterpriseAddressFromBech32 = addressFromBech32 >=> enterpriseAddressFromAddress - -enterpriseAddressNetworkId :: EnterpriseAddress -> NetworkId -enterpriseAddressNetworkId = enterpriseAddressToAddress >>> addressNetworkId - -foreign import _pointerAddress - :: (NetworkId -> Int) - -> { network :: NetworkId - , paymentCred :: StakeCredential - , stakePointer :: Pointer - } - -> PointerAddress - -pointerAddress - :: { network :: NetworkId - , paymentCred :: StakeCredential - , stakePointer :: Pointer - } - -> PointerAddress -pointerAddress = _pointerAddress networkIdToInt - -paymentKeyHashPointerAddress - :: NetworkId -> Ed25519KeyHash -> Pointer -> PointerAddress -paymentKeyHashPointerAddress networkId pkh ptr = pointerAddress - { network: networkId - , paymentCred: keyHashCredential pkh - , stakePointer: ptr - } - -scriptHashPointerAddress - :: NetworkId -> ScriptHash -> Pointer -> PointerAddress -scriptHashPointerAddress networkId sh ptr = pointerAddress - { network: networkId - , paymentCred: scriptHashCredential sh - , stakePointer: ptr - } - -foreign import pointerAddressPaymentCred :: PointerAddress -> StakeCredential -foreign import _pointerAddressFromAddress - :: MaybeFfiHelper -> Address -> Maybe PointerAddress - -foreign import pointerAddressToAddress :: PointerAddress -> Address - -pointerAddressFromAddress :: Address -> Maybe PointerAddress -pointerAddressFromAddress = _pointerAddressFromAddress maybeFfiHelper - -foreign import pointerAddressStakePointer :: PointerAddress -> Pointer - -pointerAddressBytes :: PointerAddress -> CborBytes -pointerAddressBytes = pointerAddressToAddress >>> addressBytes - -pointerAddressBech32 :: PointerAddress -> Bech32String -pointerAddressBech32 = pointerAddressToAddress >>> addressBech32 - -pointerAddressFromBytes :: CborBytes -> Maybe PointerAddress -pointerAddressFromBytes = addressFromBytes >=> pointerAddressFromAddress - -pointerAddressFromBech32 :: Bech32String -> Maybe PointerAddress -pointerAddressFromBech32 = addressFromBech32 >=> pointerAddressFromAddress - -pointerAddressNetworkId :: PointerAddress -> NetworkId -pointerAddressNetworkId = pointerAddressToAddress >>> addressNetworkId - -foreign import _rewardAddress - :: (NetworkId -> Int) - -> { network :: NetworkId, paymentCred :: StakeCredential } - -> RewardAddress - -rewardAddress - :: { network :: NetworkId, paymentCred :: StakeCredential } -> RewardAddress -rewardAddress = _rewardAddress networkIdToInt - -foreign import rewardAddressPaymentCred :: RewardAddress -> StakeCredential -foreign import _rewardAddressFromAddress - :: MaybeFfiHelper -> Address -> Maybe RewardAddress - -foreign import rewardAddressToAddress :: RewardAddress -> Address - -rewardAddressFromAddress :: Address -> Maybe RewardAddress -rewardAddressFromAddress = _rewardAddressFromAddress maybeFfiHelper - -rewardAddressBytes :: RewardAddress -> CborBytes -rewardAddressBytes = rewardAddressToAddress >>> addressBytes - -rewardAddressBech32 :: RewardAddress -> Bech32String -rewardAddressBech32 = rewardAddressToAddress >>> addressBech32 - -rewardAddressFromBytes :: CborBytes -> Maybe RewardAddress -rewardAddressFromBytes = addressFromBytes >=> rewardAddressFromAddress - -rewardAddressFromBech32 :: Bech32String -> Maybe RewardAddress -rewardAddressFromBech32 = addressFromBech32 >=> rewardAddressFromAddress - -rewardAddressNetworkId :: RewardAddress -> NetworkId -rewardAddressNetworkId = rewardAddressToAddress >>> addressNetworkId - --- based on the assumption that CSL will never return invalid networkid -unsafeIntToNetId :: Int -> NetworkId -unsafeIntToNetId i = unsafePartial $ fromJust $ intToNetworkId i diff --git a/src/Internal/Serialization/AuxiliaryData.purs b/src/Internal/Serialization/AuxiliaryData.purs index e9c610409..573613910 100644 --- a/src/Internal/Serialization/AuxiliaryData.purs +++ b/src/Internal/Serialization/AuxiliaryData.purs @@ -6,14 +6,14 @@ module Ctl.Internal.Serialization.AuxiliaryData import Prelude import Cardano.Serialization.Lib (toBytes) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum (fromBigInt) as BigNum import Ctl.Internal.Cardano.Types.Transaction ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash ) as T import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) -import Ctl.Internal.Helpers (fromJustEff) -import Ctl.Internal.Serialization.NativeScript (convertNativeScripts) -import Ctl.Internal.Serialization.PlutusScript (convertPlutusScript) +import Ctl.Internal.Helpers (fromJustEff, notImplemented) import Ctl.Internal.Serialization.Types ( AuxiliaryData , AuxiliaryDataHash @@ -22,9 +22,6 @@ import Ctl.Internal.Serialization.Types , PlutusScripts , TransactionMetadatum ) -import Ctl.Internal.Serialization.WitnessSet (addPlutusScript, newPlutusScripts) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum (fromBigInt) as BigNum import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.TransactionMetadata ( GeneralTransactionMetadata(GeneralTransactionMetadata) @@ -85,17 +82,19 @@ hashAuxiliaryData = convertAuxiliaryData :: T.AuxiliaryData -> Effect AuxiliaryData convertAuxiliaryData (T.AuxiliaryData { metadata, nativeScripts, plutusScripts }) = do - ad <- newAuxiliaryData - for_ metadata $ - convertGeneralTransactionMetadata >=> - setAuxiliaryDataGeneralTransactionMetadata ad - for_ nativeScripts $ - convertNativeScripts >>> setAuxiliaryDataNativeScripts ad - for_ plutusScripts \ps -> do - scripts <- newPlutusScripts - for_ ps (convertPlutusScript >>> addPlutusScript scripts) - setAuxiliaryDataPlutusScripts ad scripts - pure ad + notImplemented + +-- ad <- newAuxiliaryData +-- for_ metadata $ +-- convertGeneralTransactionMetadata >=> +-- setAuxiliaryDataGeneralTransactionMetadata ad +-- for_ nativeScripts $ +-- convertNativeScripts >>> setAuxiliaryDataNativeScripts ad +-- for_ plutusScripts \ps -> do +-- scripts <- newPlutusScripts +-- for_ ps (convertPlutusScript >>> addPlutusScript scripts) +-- setAuxiliaryDataPlutusScripts ad scripts +-- pure ad convertGeneralTransactionMetadata :: T.GeneralTransactionMetadata -> Effect GeneralTransactionMetadata diff --git a/src/Internal/Serialization/Hash.purs b/src/Internal/Serialization/Hash.purs index 16f109716..896a452f1 100644 --- a/src/Internal/Serialization/Hash.purs +++ b/src/Internal/Serialization/Hash.purs @@ -1,17 +1,6 @@ module Ctl.Internal.Serialization.Hash - ( Ed25519KeyHash(Ed25519KeyHash) - , ScriptHash(ScriptHash) - , VRFKeyHash(VRFKeyHash) - , ed25519KeyHashFromBech32 - , ed25519KeyHashFromBytes - , ed25519KeyHashToBech32 - , ed25519KeyHashToBech32Unsafe - , ed25519KeyHashToBytes - , nativeScriptHash - , scriptHashFromBech32 + ( module X , scriptHashFromBytes - , scriptHashToBech32 - , scriptHashToBech32Unsafe , scriptHashToBytes ) where @@ -27,6 +16,11 @@ import Aeson import Cardano.Serialization.Lib (fromBytes, nativeScript_hash, toBytes) import Cardano.Serialization.Lib as CSL import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (decodeCbor, encodeCbor) +import Cardano.Types.Ed25519KeyHash as X +import Cardano.Types.PlutusData (PlutusData(Bytes)) +import Cardano.Types.ScriptHash as X +import Cardano.Types.VRFKeyHash as X import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Ctl.Internal.FromData (class FromData) import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) @@ -34,7 +28,6 @@ import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) import Ctl.Internal.Serialization.Types (NativeScript) import Ctl.Internal.ToData (class ToData, toData) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.PlutusData (PlutusData(Bytes)) import Ctl.Internal.Types.RawBytes (RawBytes, rawBytesToHex) import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Bytes)) as Metadata import Data.ByteArray @@ -45,191 +38,11 @@ import Data.ByteArray ) import Data.Either (Either(Left, Right), note) import Data.Function (on) -import Data.Maybe (Maybe(Nothing, Just), fromJust, maybe) +import Data.Maybe (Maybe(Nothing), fromJust) import Data.Newtype (class Newtype, unwrap, wrap) import Partial.Unsafe (unsafePartial) import Test.QuickCheck.Arbitrary (class Arbitrary) import Test.QuickCheck.Gen (chooseInt, vectorOf) -nativeScriptHash :: NativeScript -> ScriptHash -nativeScriptHash = nativeScript_hash >>> wrap - --- We can't use FromBytes class here, because of cyclic dependencies --- | Decodes `CborBytes` to the hash -foreign import hashFromBytes - :: forall (a :: Type) - . String - -> MaybeFfiHelper - -> ByteArray - -> Maybe a - -foreign import hashToBech32Unsafe - :: forall (a :: Type) - . String - -> a - -> Bech32String - -foreign import hashToBech32Impl - :: forall (a :: Type) - . MaybeFfiHelper - -> String - -> a - -> Maybe Bech32String - -foreign import _ed25519KeyHashFromBech32Impl - :: MaybeFfiHelper - -> Bech32String - -> Maybe Ed25519KeyHash - -foreign import _scriptHashFromBech32Impl - :: MaybeFfiHelper - -> Bech32String - -> Maybe ScriptHash - -newtype Ed25519KeyHash = Ed25519KeyHash CSL.Ed25519KeyHash - -derive instance Newtype Ed25519KeyHash _ - -instance Eq Ed25519KeyHash where - eq = eq `on` ed25519KeyHashToBytes - -instance Ord Ed25519KeyHash where - compare = compare `on` ed25519KeyHashToBytes - -instance Show Ed25519KeyHash where - show edkh = - "(Ed25519KeyHash $ unsafePartial $ fromJust $ ed25519KeyHashFromBech32 " - <> show (ed25519KeyHashToBech32 "pool" edkh) - <> ")" - -instance ToData Ed25519KeyHash where - toData = toData <<< unwrap <<< ed25519KeyHashToBytes - -instance FromData Ed25519KeyHash where - fromData (Bytes kh) = ed25519KeyHashFromBytes kh - fromData _ = Nothing - -instance ToMetadata Ed25519KeyHash where - toMetadata = toMetadata <<< ed25519KeyHashToBytes - -instance FromMetadata Ed25519KeyHash where - fromMetadata (Metadata.Bytes kh) = ed25519KeyHashFromBytes kh - fromMetadata _ = Nothing - --- This is needed for `ApplyArgs`. -instance DecodeAeson Ed25519KeyHash where - -- ed25519KeyHashFromBech32 goes from Bech32String directly although this - -- feels unsafe. - decodeAeson = caseAesonString - (Left $ TypeMismatch "Expected Plutus BuiltinByteString") - ( note (TypeMismatch "Invalid Ed25519KeyHash") <<< ed25519KeyHashFromBytes - <=< note (TypeMismatch "Invalid ByteArray") <<< hexToByteArray - ) - -instance EncodeAeson Ed25519KeyHash where - encodeAeson = encodeAeson <<< rawBytesToHex <<< ed25519KeyHashToBytes - -instance Arbitrary Ed25519KeyHash where - arbitrary = - unsafePartial fromJust <<< ed25519KeyHashFromBytes <<< - byteArrayFromIntArrayUnsafe <$> vectorOf 28 (chooseInt 0 255) - --- | Convert ed25519KeyHash to Bech32 representation with given prefix. --- | Will crash if prefix is invalid (length, mixed-case, etc) --- | More on prefixes: https://cips.cardano.org/cips/cip5 -ed25519KeyHashToBech32Unsafe ∷ String → Ed25519KeyHash → Bech32String -ed25519KeyHashToBech32Unsafe = hashToBech32Unsafe - -ed25519KeyHashToBytes :: Ed25519KeyHash -> RawBytes -ed25519KeyHashToBytes = wrap <<< toBytes <<< unwrap - -scriptHashToBech32Unsafe ∷ String → ScriptHash → Bech32String -scriptHashToBech32Unsafe = hashToBech32Unsafe - -ed25519KeyHashFromBytes :: ByteArray -> Maybe Ed25519KeyHash -ed25519KeyHashFromBytes = map wrap <<< fromBytes - -ed25519KeyHashFromBech32 :: Bech32String -> Maybe Ed25519KeyHash -ed25519KeyHashFromBech32 = _ed25519KeyHashFromBech32Impl maybeFfiHelper - --- | Convert ed25519KeyHash to Bech32 representation with given prefix. --- | Will return Nothing if prefix is invalid (length, mixed-case, etc) --- | More on prefixes: https://cips.cardano.org/cips/cip5 -ed25519KeyHashToBech32 :: String -> Ed25519KeyHash -> Maybe Bech32String -ed25519KeyHashToBech32 = _ed25519KeyHashToBech32Impl maybeFfiHelper - --- | blake2b-224 hash digests of serialized monetary scripts -newtype ScriptHash = ScriptHash Csl.ScriptHash - -derive instance Newtype ScriptHash _ - -instance Eq ScriptHash where - eq = eq `on` scriptHashToBytes - -instance Ord ScriptHash where - compare = compare `on` scriptHashToBytes - -instance Show ScriptHash where - show edkh = "(ScriptHash " <> rawBytesToHex (scriptHashToBytes edkh) <> ")" - -instance ToData ScriptHash where - toData = toData <<< unwrap <<< scriptHashToBytes - -instance FromData ScriptHash where - fromData (Bytes bytes) = scriptHashFromBytes bytes - fromData _ = Nothing - -instance ToMetadata ScriptHash where - toMetadata = toMetadata <<< scriptHashToBytes - -instance FromMetadata ScriptHash where - fromMetadata (Metadata.Bytes bytes) = scriptHashFromBytes bytes - fromMetadata _ = Nothing - --- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances -instance DecodeAeson ScriptHash where - decodeAeson = do - maybe (Left $ TypeMismatch "Expected hex-encoded script hash") Right <<< - caseAesonString Nothing (Just <=< scriptHashFromBytes <=< hexToByteArray) - -instance EncodeAeson ScriptHash where - encodeAeson sh = encodeAeson $ scriptHashToBytes sh - -_ed25519KeyHashToBech32Impl - ∷ MaybeFfiHelper → String → Ed25519KeyHash → Maybe Bech32String -_ed25519KeyHashToBech32Impl = hashToBech32Impl - -scriptHashToBytes :: ScriptHash -> RawBytes -scriptHashToBytes = wrap <<< toBytes <<< unwrap - -_scriptHashToBech32Impl - ∷ MaybeFfiHelper → String → ScriptHash → Maybe Bech32String -_scriptHashToBech32Impl = hashToBech32Impl - --- | Decodes a script hash from its CBOR bytes encoding --- | NOTE. It does _not_ compute hash of given bytes. -scriptHashFromBytes :: ByteArray -> Maybe ScriptHash -scriptHashFromBytes = hashFromBytes "ScriptHash" maybeFfiHelper - --- | Decodes a script hash from its Bech32 representation -scriptHashFromBech32 :: Bech32String -> Maybe ScriptHash -scriptHashFromBech32 = _scriptHashFromBech32Impl maybeFfiHelper - --- | Convert scriptHash to Bech32 representation with given prefix. --- | Will return `Nothing` if prefix is invalid (length, mixed-case, etc) --- | More on prefixes: https://cips.cardano.org/cips/cip5 -scriptHashToBech32 :: String -> ScriptHash -> Maybe Bech32String -scriptHashToBech32 = _scriptHashToBech32Impl maybeFfiHelper - -newtype VRFKeyHash = VRFKeyHash Csl.VRFKeyHash - -derive instance Newtype VRFKeyHash _ - -instance Show VRFKeyHash where - show = unwrap >>> toBytes >>> byteArrayToHex - -instance Eq VRFKeyHash where - eq = eq `on` show - -instance EncodeAeson VRFKeyHash where - encodeAeson = unwrap >>> toBytes >>> byteArrayToHex >>> encodeAeson +scriptHashFromBytes = decodeCbor <<< wrap +scriptHashToBytes = encodeCbor diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index 0ca5a25c9..f16f98068 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -3,6 +3,8 @@ module Ctl.Internal.Serialization.MinFee (calculateMinFeeCsl) where import Prelude +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum import Contract.Keys (publicKeyFromBech32) import Control.Monad.Error.Class (class MonadThrow, liftMaybe) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAll)) @@ -19,8 +21,6 @@ import Ctl.Internal.NativeScripts (getMaximumSigners) import Ctl.Internal.Serialization as Serialization import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) import Ctl.Internal.Serialization.Types (ExUnitPrices, Transaction) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) ) diff --git a/src/Internal/Serialization/NativeScript.purs b/src/Internal/Serialization/NativeScript.purs deleted file mode 100644 index 8122115b1..000000000 --- a/src/Internal/Serialization/NativeScript.purs +++ /dev/null @@ -1,78 +0,0 @@ -module Ctl.Internal.Serialization.NativeScript - ( convertNativeScript - , convertNativeScripts - ) where - -import Prelude - -import Cardano.Serialization.Lib - ( nativeScript_newScriptAll - , nativeScript_newScriptAny - , nativeScript_newScriptNOfK - , nativeScript_newScriptPubkey - , nativeScript_newTimelockExpiry - , nativeScript_newTimelockStart - , scriptAll_new - , scriptAny_new - , scriptNOfK_new - , scriptPubkey_new - , timelockExpiry_newTimelockexpiry - , timelockStart_newTimelockstart - ) -import Cardano.Serialization.Lib.Internal (packListContainer) -import Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptPubkey - , ScriptAll - , ScriptAny - , ScriptNOfK - , TimelockStart - , TimelockExpiry - ) - ) as T -import Ctl.Internal.Serialization.Address (Slot(Slot)) as T -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) as T -import Ctl.Internal.Serialization.Types (NativeScript, NativeScripts) -import Data.Int as Int -import Data.Newtype (unwrap) - -convertNativeScripts :: Array T.NativeScript -> NativeScripts -convertNativeScripts = packListContainer <<< map convertNativeScript - --- | Note: unbounded recursion here. -convertNativeScript :: T.NativeScript -> NativeScript -convertNativeScript = case _ of - T.ScriptPubkey keyHash -> convertScriptPubkey keyHash - T.ScriptAll nss -> convertScriptAll nss - T.ScriptAny nss -> convertScriptAny nss - T.ScriptNOfK n nss -> convertScriptNOfK n nss - T.TimelockStart slot -> convertTimelockStart slot - T.TimelockExpiry slot -> convertTimelockExpiry slot - -convertScriptPubkey :: T.Ed25519KeyHash -> NativeScript -convertScriptPubkey hash = do - nativeScript_newScriptPubkey $ scriptPubkey_new (unwrap hash) - -convertScriptAll :: Array T.NativeScript -> NativeScript -convertScriptAll nss = - nativeScript_newScriptAll <<< scriptAll_new <<< - packListContainer $ map convertNativeScript nss - -convertScriptAny :: Array T.NativeScript -> NativeScript -convertScriptAny nss = - nativeScript_newScriptAny <<< scriptAny_new <<< - packListContainer $ map convertNativeScript nss - -convertScriptNOfK :: Int -> Array T.NativeScript -> NativeScript -convertScriptNOfK n nss = - nativeScript_newScriptNOfK <<< scriptNOfK_new (Int.toNumber n) <<< - packListContainer $ map convertNativeScript nss - -convertTimelockStart :: T.Slot -> NativeScript -convertTimelockStart (T.Slot slot) = - nativeScript_newTimelockStart (timelockStart_newTimelockstart $ unwrap slot) - -convertTimelockExpiry :: T.Slot -> NativeScript -convertTimelockExpiry (T.Slot slot) = - nativeScript_newTimelockExpiry - (timelockExpiry_newTimelockexpiry $ unwrap slot) diff --git a/src/Internal/Serialization/PlutusData.purs b/src/Internal/Serialization/PlutusData.purs index 24231cef2..1bf10e6ea 100644 --- a/src/Internal/Serialization/PlutusData.purs +++ b/src/Internal/Serialization/PlutusData.purs @@ -5,6 +5,8 @@ module Ctl.Internal.Serialization.PlutusData import Prelude +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.PlutusData as T import Ctl.Internal.FfiHelpers ( ContainerHelper , MaybeFfiHelper @@ -18,8 +20,6 @@ import Ctl.Internal.Serialization.Types , PlutusList , PlutusMap ) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.PlutusData as T import Data.ByteArray (ByteArray) import Data.Maybe (Maybe, fromJust) import Data.Tuple (Tuple, fst, snd) diff --git a/src/Internal/Serialization/PlutusScript.purs b/src/Internal/Serialization/PlutusScript.purs deleted file mode 100644 index 9ae6e28a3..000000000 --- a/src/Internal/Serialization/PlutusScript.purs +++ /dev/null @@ -1,19 +0,0 @@ -module Ctl.Internal.Serialization.PlutusScript - ( convertPlutusScript - ) where - -import Prelude - -import Cardano.Serialization.Lib (plutusScript_new, plutusScript_newV2) -import Ctl.Internal.Serialization.Types (PlutusScript) -import Ctl.Internal.Types.Scripts - ( Language(PlutusV1, PlutusV2) - , PlutusScript(PlutusScript) - ) as T -import Data.Tuple.Nested ((/\)) - -convertPlutusScript :: T.PlutusScript -> PlutusScript -convertPlutusScript (T.PlutusScript (bytes /\ language)) = - bytes # case language of - T.PlutusV1 -> plutusScript_new - T.PlutusV2 -> plutusScript_newV2 diff --git a/src/Internal/Serialization/WitnessSet.purs b/src/Internal/Serialization/WitnessSet.purs index 5200c7b4c..ca532f8ed 100644 --- a/src/Internal/Serialization/WitnessSet.purs +++ b/src/Internal/Serialization/WitnessSet.purs @@ -35,18 +35,18 @@ module Ctl.Internal.Serialization.WitnessSet import Prelude +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum (fromBigInt) as BigNum +import Cardano.Types.Vkey as T import Ctl.Internal.Cardano.Types.Transaction ( BootstrapWitness , ExUnits , Redeemer(Redeemer) , TransactionWitnessSet(TransactionWitnessSet) - , Vkey(Vkey) , Vkeywitness(Vkeywitness) ) as T import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) -import Ctl.Internal.Serialization.NativeScript (convertNativeScripts) -import Ctl.Internal.Serialization.PlutusData (convertPlutusData) -import Ctl.Internal.Serialization.PlutusScript (convertPlutusScript) +import Ctl.Internal.Helpers (notImplemented) import Ctl.Internal.Serialization.Types ( BootstrapWitness , Ed25519Signature @@ -65,8 +65,6 @@ import Ctl.Internal.Serialization.Types ) import Ctl.Internal.Serialization.Types (PlutusData) as PDS import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum (fromBigInt) as BigNum import Ctl.Internal.Types.RedeemerTag as Tag import Data.ByteArray (ByteArray) import Data.Maybe (maybe) @@ -95,22 +93,23 @@ setWitnesses f ws = f containerHelper ws convertWitnessSet :: T.TransactionWitnessSet -> Effect TransactionWitnessSet convertWitnessSet (T.TransactionWitnessSet tws) = do - ws <- newTransactionWitnessSet - for_ tws.vkeys - (convertVkeywitnesses >=> transactionWitnessSetSetVkeys ws) - for_ tws.nativeScripts $ - transactionWitnessSetSetNativeScripts ws <<< convertNativeScripts - for_ tws.bootstraps - (traverse convertBootstrap >=> _wsSetBootstraps containerHelper ws) - for_ tws.plutusScripts \ps -> do - scripts <- newPlutusScripts - for_ ps (convertPlutusScript >>> addPlutusScript scripts) - txWitnessSetSetPlutusScripts ws scripts - for_ tws.plutusData - (map convertPlutusData >>> _wsSetPlutusData containerHelper ws) - for_ tws.redeemers - (traverse convertRedeemer >=> _wsSetRedeemers containerHelper ws) - pure ws + -- ws <- newTransactionWitnessSet + -- for_ tws.vkeys + -- (convertVkeywitnesses >=> transactionWitnessSetSetVkeys ws) + -- for_ tws.nativeScripts $ + -- transactionWitnessSetSetNativeScripts ws <<< convertNativeScripts + -- for_ tws.bootstraps + -- (traverse convertBootstrap >=> _wsSetBootstraps containerHelper ws) + -- for_ tws.plutusScripts \ps -> do + -- scripts <- newPlutusScripts + -- for_ ps (convertPlutusScript >>> addPlutusScript scripts) + -- txWitnessSetSetPlutusScripts ws scripts + -- for_ tws.plutusData + -- (map convertPlutusData >>> _wsSetPlutusData containerHelper ws) + -- for_ tws.redeemers + -- (traverse convertRedeemer >=> _wsSetRedeemers containerHelper ws) + -- pure ws + notImplemented convertRedeemers :: Array T.Redeemer -> Effect Redeemers convertRedeemers redeemers = do @@ -118,12 +117,13 @@ convertRedeemers redeemers = do convertRedeemer :: T.Redeemer -> Effect Redeemer convertRedeemer (T.Redeemer { tag, index, "data": data_, exUnits }) = do - tag' <- convertRedeemerTag tag - index' <- maybe (throw "Failed to convert redeemer index") pure $ - BigNum.fromBigInt index - let data' = convertPlutusData data_ - exUnits' <- convertExUnits exUnits - newRedeemer tag' index' data' exUnits' + -- tag' <- convertRedeemerTag tag + -- index' <- maybe (throw "Failed to convert redeemer index") pure $ + -- BigNum.fromBigInt index + -- let data' = convertPlutusData data_ + -- exUnits' <- convertExUnits exUnits + -- newRedeemer tag' index' data' exUnits' + notImplemented convertRedeemerTag :: Tag.RedeemerTag -> Effect RedeemerTag convertRedeemerTag = _newRedeemerTag <<< case _ of diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index cc99832fd..376f7675f 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -82,6 +82,8 @@ import Affjax.RequestHeader (RequestHeader(ContentType, RequestHeader)) as Affja import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) as Affjax import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum import Contract.RewardAddress ( rewardAddressToBech32 , stakePubKeyHashRewardAddress @@ -122,7 +124,7 @@ import Ctl.Internal.Cardano.Types.Transaction import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value) import Ctl.Internal.Cardano.Types.Value ( lovelaceValueOf - , mkSingletonNonAdaAsset + , mkSingletonMultiAsset , mkValue ) as Value import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend) @@ -181,8 +183,6 @@ import Ctl.Internal.Service.Helpers , decodeAssetClass ) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain (Tip(Tip, TipAtGenesis)) import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) @@ -203,7 +203,6 @@ import Ctl.Internal.Types.ProtocolParameters , convertPlutusV1CostModel , convertPlutusV2CostModel ) -import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) import Ctl.Internal.Types.Rational (Rational, reduce) import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Types.Scripts @@ -1182,7 +1181,7 @@ instance DecodeAeson BlockfrostTransactionOutput where assetString -> do let { before: csStr, after: tnStr } = String.splitAt 56 assetString decodeAssetClass assetString csStr tnStr <#> \(cs /\ tn) -> - Value.mkValue mempty $ Value.mkSingletonNonAdaAsset cs tn quantity + Value.mkValue mempty $ Value.mkSingletonMultiAsset cs tn quantity decodeOutputDatum :: Object Aeson -> Either JsonDecodeError OutputDatum decodeOutputDatum obj = diff --git a/src/Internal/Service/Helpers.purs b/src/Internal/Service/Helpers.purs index fa24bb62a..0166bed19 100644 --- a/src/Internal/Service/Helpers.purs +++ b/src/Internal/Service/Helpers.purs @@ -14,11 +14,13 @@ import Aeson , caseAesonObject , caseAesonString ) +import Cardano.Types.AsCbor (decodeCbor) +import Cardano.Types.AssetName (AssetName, mkAssetName) +import Cardano.Types.ScriptHash (ScriptHash) import Control.Apply (lift2) -import Ctl.Internal.Cardano.Types.Value (CurrencySymbol, mkCurrencySymbol) -import Ctl.Internal.Types.TokenName (TokenName, mkTokenName) import Data.ByteArray (hexToByteArray) import Data.Either (Either(Left), note) +import Data.Newtype (wrap) import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested (type (/\)) import Foreign.Object (Object) @@ -48,14 +50,14 @@ decodeAssetClass :: String -> String -> String - -> Either JsonDecodeError (CurrencySymbol /\ TokenName) + -> Either JsonDecodeError (ScriptHash /\ AssetName) decodeAssetClass assetString csString tnString = lift2 Tuple ( note (assetStringTypeMismatch "CurrencySymbol" csString) - (mkCurrencySymbol =<< hexToByteArray csString) + (decodeCbor <<< wrap =<< hexToByteArray csString) ) - ( note (assetStringTypeMismatch "TokenName" tnString) - (mkTokenName =<< hexToByteArray tnString) + ( note (assetStringTypeMismatch "AssetName" tnString) + (mkAssetName =<< hexToByteArray tnString) ) where assetStringTypeMismatch :: String -> String -> JsonDecodeError diff --git a/src/Internal/ToData.purs b/src/Internal/ToData.purs index dc8e71d88..c64199898 100644 --- a/src/Internal/ToData.purs +++ b/src/Internal/ToData.purs @@ -14,6 +14,9 @@ module Ctl.Internal.ToData import Prelude +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum (fromInt, one, toBigInt, zero) as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr, Integer, List, Bytes)) import Contract.Crypto.Secp256k1 (Secp256k1PrivateKey) import Ctl.Internal.Helpers (uIntToBigInt) import Ctl.Internal.Plutus.Types.DataSchema @@ -26,10 +29,7 @@ import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed , class GetLabelIndex , class GetWithLabel ) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum (fromInt, one, toBigInt, zero) as BigNum import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.PlutusData (PlutusData(Constr, Integer, List, Bytes)) import Ctl.Internal.Types.RawBytes (RawBytes) import Data.Array (cons, sortWith) import Data.Array as Array diff --git a/src/Internal/Transaction.purs b/src/Internal/Transaction.purs index b7598e1b4..e6fb02ae4 100644 --- a/src/Internal/Transaction.purs +++ b/src/Internal/Transaction.purs @@ -21,7 +21,6 @@ import Ctl.Internal.Cardano.Types.Transaction import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet import Ctl.Internal.Serialization (hashScriptData) import Ctl.Internal.Serialization.PlutusData as Serialization.PlutusData -import Ctl.Internal.Serialization.PlutusScript as Serialization.PlutusScript import Ctl.Internal.Serialization.Types as Serialization import Ctl.Internal.Serialization.WitnessSet as Serialization.WitnessSet import Ctl.Internal.Types.Datum (Datum) diff --git a/src/Internal/TxOutput.purs b/src/Internal/TxOutput.purs index 2d723f739..6a1edbf47 100644 --- a/src/Internal/TxOutput.purs +++ b/src/Internal/TxOutput.purs @@ -10,21 +10,20 @@ module Ctl.Internal.TxOutput import Prelude import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Types.Address as Address +import Cardano.Types.AsCbor (decodeCbor, encodeCbor) +import Cardano.Types.OutputDatum + ( OutputDatum(..) + , outputDatumDataHash + , outputDatumDatum + ) +import Cardano.Types.TransactionOutput (TransactionOutput(..)) import Control.Alt ((<|>)) import Control.Alternative (guard) -import Ctl.Internal.Address (addressToOgmiosAddress, ogmiosAddressToAddress) -import Ctl.Internal.Cardano.Types.Transaction - ( TransactionOutput(TransactionOutput) - ) as Transaction import Ctl.Internal.Deserialization.PlutusData as Deserialization import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.Serialization.PlutusData as Serialization import Ctl.Internal.Types.Datum (DataHash, Datum(Datum)) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(OutputDatum, OutputDatumHash, NoOutputDatum) - , outputDatumDataHash - , outputDatumDatum - ) import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) as Transaction import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Maybe (Maybe(Just), fromMaybe, isNothing) @@ -61,9 +60,9 @@ transactionInputToTxOutRef -- hexToByteArray for now. https://github.com/Plutonomicon/cardano-transaction-lib/issues/78 -- | Converts an Ogmios transaction output to (internal) `TransactionOutput` ogmiosTxOutToTransactionOutput - :: Ogmios.OgmiosTxOut -> Maybe Transaction.TransactionOutput + :: Ogmios.OgmiosTxOut -> Maybe TransactionOutput ogmiosTxOutToTransactionOutput { address, value, datum, datumHash, script } = do - address' <- ogmiosAddressToAddress address + address' <- Address.fromBech32 address -- If datum ~ Maybe String is Nothing, do nothing. Otherwise, attempt to -- convert and capture failure if we can't. dh <- traverse ogmiosDatumHashToDatumHash datumHash @@ -79,13 +78,13 @@ ogmiosTxOutToTransactionOutput { address, value, datum, datumHash, script } = do -- | Converts an internal transaction output to the Ogmios transaction output. transactionOutputToOgmiosTxOut - :: Transaction.TransactionOutput -> Ogmios.OgmiosTxOut + :: TransactionOutput -> Ogmios.OgmiosTxOut transactionOutputToOgmiosTxOut - (Transaction.TransactionOutput { address, amount: value, datum, scriptRef }) = - { address: addressToOgmiosAddress address + (TransactionOutput { address, amount: value, datum, scriptRef }) = + { address: Address.toBech32 address , value - , datumHash: datumHashToOgmiosDatumHash <$> outputDatumDataHash datum - , datum: datumToOgmiosDatum <$> outputDatumDatum datum + , datumHash: datumHashToOgmiosDatumHash <$> (outputDatumDataHash =<< datum) + , datum: datumToOgmiosDatum <$> (outputDatumDatum >>> map wrap =<< datum) , script: scriptRef } @@ -94,7 +93,7 @@ transactionOutputToOgmiosTxOut -------------------------------------------------------------------------------- -- | Converts an Ogmios datum hash `String` to an internal `DataHash` ogmiosDatumHashToDatumHash :: String -> Maybe DataHash -ogmiosDatumHashToDatumHash str = hexToByteArray str <#> wrap +ogmiosDatumHashToDatumHash str = hexToByteArray str >>= wrap >>> decodeCbor -- | Converts an Ogmios datum `String` to an internal `Datum` ogmiosDatumToDatum :: String -> Maybe Datum @@ -105,7 +104,7 @@ ogmiosDatumToDatum = -- | Converts an internal `DataHash` to an Ogmios datumhash `String` datumHashToOgmiosDatumHash :: DataHash -> String -datumHashToOgmiosDatumHash = byteArrayToHex <<< unwrap +datumHashToOgmiosDatumHash = byteArrayToHex <<< unwrap <<< encodeCbor -- | Converts an internal `Datum` to an Ogmios datum `String` datumToOgmiosDatum :: Datum -> String @@ -113,6 +112,6 @@ datumToOgmiosDatum (Datum plutusData) = Serialization.convertPlutusData plutusData # toBytes >>> byteArrayToHex -toOutputDatum :: Maybe Datum -> Maybe DataHash -> OutputDatum +toOutputDatum :: Maybe Datum -> Maybe DataHash -> Maybe OutputDatum toOutputDatum d dh = - OutputDatum <$> d <|> OutputDatumHash <$> dh # fromMaybe NoOutputDatum + OutputDatum <$> map unwrap d <|> OutputDatumHash <$> dh diff --git a/src/Internal/Types/BigNum.purs b/src/Internal/Types/BigNum.purs deleted file mode 100644 index 51d05263e..000000000 --- a/src/Internal/Types/BigNum.purs +++ /dev/null @@ -1,135 +0,0 @@ -module Ctl.Internal.Types.BigNum - ( BigNum(BigNum) - , add - , divFloor - , fromBigInt - , fromInt - , fromString - , fromStringUnsafe - , fromUInt - , maxValue - , mul - , one - , toBigInt - , toInt - , toInt' - , toString - , toUInt - , zero - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) -import Aeson (JsonDecodeError(TypeMismatch)) as Aeson -import Cardano.Serialization.Lib - ( bigNum_checkedAdd - , bigNum_checkedMul - , bigNum_compare - , bigNum_divFloor - , bigNum_fromStr - , bigNum_maxValue - , bigNum_one - , bigNum_toStr - , bigNum_zero - ) -import Cardano.Serialization.Lib as Csl -import Ctl.Internal.Deserialization.Error (FromCslRepError, fromCslRepError) -import Ctl.Internal.Error (E, noteE) -import Ctl.Internal.Helpers (eqOrd) -import Data.Either (note) -import Data.Int (fromString) as Int -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.UInt (UInt) -import Data.UInt (fromInt, fromString, toString) as UInt -import JS.BigInt (BigInt) -import JS.BigInt (fromString, toString) as BigInt -import Partial.Unsafe (unsafePartial) -import Safe.Coerce (coerce) -import Type.Row (type (+)) - -newtype BigNum = BigNum Csl.BigNum - -derive instance Newtype BigNum _ - -instance Eq BigNum where - eq = eqOrd - -instance Ord BigNum where - compare (BigNum lhs) (BigNum rhs) = - case bigNum_compare lhs rhs of - 1.0 -> GT - 0.0 -> EQ - _ -> LT - -instance Show BigNum where - show bn = "fromString \"" <> toString bn <> "\"" - -instance DecodeAeson BigNum where - decodeAeson = - note (Aeson.TypeMismatch "Couldn't convert `BigInt` to `BigNum`") - <<< fromBigInt <=< decodeAeson - -instance EncodeAeson BigNum where - encodeAeson = encodeAeson <<< toBigInt - --- Semiring cannot be implemented, because add and mul returns Maybe BigNum - -fromBigInt :: BigInt -> Maybe BigNum -fromBigInt = fromString <<< BigInt.toString - -toBigInt :: BigNum -> BigInt -toBigInt = - -- Converting uint64 to an arbitrary length integer should never fail. - unsafePartial fromJust <<< BigInt.fromString <<< toString - -toInt :: BigNum -> Maybe Int -toInt = Int.fromString <<< toString - -toInt' - :: forall (r :: Row Type). String -> BigNum -> E (FromCslRepError + r) Int -toInt' nm bn = - noteE (fromCslRepError (nm <> ": CSL.BigNum (" <> show bn <> ") -> Int ")) $ - toInt bn - -one :: BigNum -one = BigNum bigNum_one - -zero :: BigNum -zero = BigNum bigNum_zero - -add :: BigNum -> BigNum -> Maybe BigNum -add (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedAdd a b - -mul :: BigNum -> BigNum -> Maybe BigNum -mul (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedMul a b - -divFloor :: BigNum -> BigNum -> BigNum -divFloor (BigNum a) (BigNum b) = BigNum $ bigNum_divFloor a b - --- | Converts an `Int` to a `BigNum` turning negative `Int`s into `BigNum`s --- | in range from `2^31` to `2^32-1`. -fromInt :: Int -> BigNum -fromInt = - -- Converting `UInt` (u32) to a `BigNum` (u64) should never fail. - fromStringUnsafe <<< UInt.toString <<< UInt.fromInt - -toString :: BigNum -> String -toString = unwrap >>> bigNum_toStr - -fromString :: String -> Maybe BigNum -fromString = map wrap <<< toMaybe <<< bigNum_fromStr - -fromStringUnsafe :: String -> BigNum -fromStringUnsafe = unsafePartial fromJust <<< fromString - -maxValue :: BigNum -maxValue = BigNum bigNum_maxValue - -fromUInt :: UInt -> BigNum -fromUInt = fromStringUnsafe <<< UInt.toString - -toUInt :: BigNum -> Maybe UInt -toUInt = toString >>> UInt.fromString diff --git a/src/Internal/Types/CborBytes.purs b/src/Internal/Types/CborBytes.purs index fee1c2a86..7ba9d9f79 100644 --- a/src/Internal/Types/CborBytes.purs +++ b/src/Internal/Types/CborBytes.purs @@ -1,39 +1,26 @@ -- | CborBytes. A wrapper over `ByteArray` to indicate that the bytes are cbor. module Ctl.Internal.Types.CborBytes ( CborBytes(CborBytes) - , cborBytesToByteArray - , cborBytesFromByteArray - , cborBytesFromAscii - , cborBytesToIntArray - , cborBytesFromIntArray - , cborBytesFromIntArrayUnsafe - , cborBytesToHex - , cborByteLength - , hexToCborBytes - , hexToCborBytesUnsafe - , rawBytesAsCborBytes ) where import Prelude import Aeson (class DecodeAeson, class EncodeAeson) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.Types.RawBytes (RawBytes) import Data.ByteArray (ByteArray) import Data.ByteArray as ByteArray -import Data.Maybe (Maybe) -import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) import Test.QuickCheck.Arbitrary (class Arbitrary) -- | An array of bytes containing CBOR data newtype CborBytes = CborBytes ByteArray instance Show CborBytes where - show rb = "(hexToCborBytesUnsafe " <> show (cborBytesToHex rb) <> - ")" + show = genericShow derive instance Newtype CborBytes _ +derive instance Generic CborBytes _ derive newtype instance Eq CborBytes derive newtype instance Ord CborBytes @@ -42,38 +29,3 @@ derive newtype instance Monoid CborBytes derive newtype instance EncodeAeson CborBytes derive newtype instance DecodeAeson CborBytes derive newtype instance Arbitrary CborBytes -derive newtype instance ToMetadata CborBytes -derive newtype instance FromMetadata CborBytes - -cborBytesToIntArray :: CborBytes -> Array Int -cborBytesToIntArray = ByteArray.byteArrayToIntArray <<< unwrap - -cborBytesFromIntArray :: Array Int -> Maybe CborBytes -cborBytesFromIntArray = map wrap <<< ByteArray.byteArrayFromIntArray - -cborBytesFromIntArrayUnsafe :: Array Int -> CborBytes -cborBytesFromIntArrayUnsafe = wrap <<< ByteArray.byteArrayFromIntArrayUnsafe - -cborBytesToHex :: CborBytes -> String -cborBytesToHex = ByteArray.byteArrayToHex <<< unwrap - -cborByteLength :: CborBytes -> Int -cborByteLength = ByteArray.byteLength <<< unwrap - -hexToCborBytes :: String -> Maybe CborBytes -hexToCborBytes = map wrap <<< ByteArray.hexToByteArray - -hexToCborBytesUnsafe :: String -> CborBytes -hexToCborBytesUnsafe = wrap <<< ByteArray.hexToByteArrayUnsafe - -cborBytesToByteArray :: CborBytes -> ByteArray -cborBytesToByteArray = unwrap - -cborBytesFromByteArray :: ByteArray -> CborBytes -cborBytesFromByteArray = wrap - -cborBytesFromAscii :: String -> Maybe CborBytes -cborBytesFromAscii = map wrap <<< ByteArray.byteArrayFromAscii - -rawBytesAsCborBytes :: RawBytes -> CborBytes -rawBytesAsCborBytes = wrap <<< unwrap diff --git a/src/Internal/Types/Chain.purs b/src/Internal/Types/Chain.purs index d400f576f..a085a5dd5 100644 --- a/src/Internal/Types/Chain.purs +++ b/src/Internal/Types/Chain.purs @@ -6,7 +6,7 @@ module Ctl.Internal.Types.Chain import Prelude -import Ctl.Internal.Serialization.Address (Slot) +import Cardano.Types.Slot (Slot) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) diff --git a/src/Internal/Types/Datum.purs b/src/Internal/Types/Datum.purs index ec3286207..0e29c2e27 100644 --- a/src/Internal/Types/Datum.purs +++ b/src/Internal/Types/Datum.purs @@ -7,9 +7,9 @@ module Ctl.Internal.Types.Datum import Prelude import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) +import Cardano.Types.PlutusData (PlutusData) import Ctl.Internal.FromData (class FromData) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.PlutusData (PlutusData) import Ctl.Internal.Types.Transaction (DataHash(DataHash)) as X import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap, wrap) diff --git a/src/Internal/Types/EraSummaries.purs b/src/Internal/Types/EraSummaries.purs index ae6cf387c..d54ed3a71 100644 --- a/src/Internal/Types/EraSummaries.purs +++ b/src/Internal/Types/EraSummaries.purs @@ -18,8 +18,8 @@ import Aeson , finiteNumber , getField ) +import Cardano.Types.Slot (Slot) import Ctl.Internal.Helpers (showWithParens) -import Ctl.Internal.Serialization.Address (Slot) import Ctl.Internal.Service.Helpers (aesonObject) import Ctl.Internal.Types.Epoch (Epoch) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/Types/Int.purs b/src/Internal/Types/Int.purs index 22a13cac6..de26a99b4 100644 --- a/src/Internal/Types/Int.purs +++ b/src/Internal/Types/Int.purs @@ -1,78 +1,4 @@ -- | `cardano-serialization-lib` Int type (can be positive or negative). -module Ctl.Internal.Types.Int - ( Int(Int) - , newPositive - , newNegative - , fromBigInt - , toBigInt - , fromInt - , toInt - , fromString - ) where +module Ctl.Internal.Types.Int (module X) where -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , decodeAeson - , encodeAeson - ) -import Cardano.Serialization.Lib (Int) as Csl -import Control.Alternative ((<|>)) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum (fromBigInt, fromInt) as BigNum -import Data.Either (note) -import Data.Function (on) -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (class Newtype) -import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) -import Prim as Prim - --- | Signed 128-bit integer -newtype Int = Int Csl.Int - -derive instance Newtype Int _ - -foreign import newPositive :: BigNum -> Int -foreign import newNegative :: BigNum -> Int -foreign import _intToStr :: Int -> Prim.String - -instance Eq Int where - eq = eq `on` _intToStr - -instance Ord Int where - compare = compare `on` toBigInt - -instance Show Int where - show = _intToStr - -instance EncodeAeson Int where - encodeAeson = encodeAeson <<< toBigInt - -instance DecodeAeson Int where - decodeAeson aeson = - decodeAeson aeson >>= note (TypeMismatch "Int") <<< fromBigInt - -fromBigInt :: BigInt.BigInt -> Maybe Int -fromBigInt bi = - (newPositive <$> BigNum.fromBigInt bi) <|> - (newNegative <$> BigNum.fromBigInt (negate bi)) - -toBigInt :: Int -> BigInt.BigInt -toBigInt int = - -- Assuming every Int can be represented as BigInt - unsafePartial $ fromJust $ BigInt.fromString $ _intToStr int - -fromInt :: Prim.Int -> Int -fromInt n - | n < 0 = newNegative $ BigNum.fromInt n - | otherwise = newPositive $ BigNum.fromInt n - -toInt :: Int -> Maybe Prim.Int -toInt = toBigInt >>> BigInt.toInt - -fromString :: Prim.String -> Maybe Int -fromString = fromBigInt <=< BigInt.fromString +import Cardano.Types.Int as X diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 740320eae..69d0867f6 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -77,17 +77,18 @@ import Aeson , isNull , (.:) ) +import Cardano.Types.BigNum (add, fromBigInt, maxValue, one, toBigInt, zero) as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr)) +import Cardano.Types.Slot (Slot(..)) import Control.Monad.Error.Class (throwError) import Control.Monad.Except (runExcept) import Ctl.Internal.FromData (class FromData, fromData, genericFromData) import Ctl.Internal.Helpers - ( contentsProp - , encodeTagged' + ( encodeTagged' , liftEither , liftM , mkErrorRecord , showWithParens - , tagProp ) import Ctl.Internal.Plutus.Types.DataSchema ( class HasPlutusSchema @@ -97,22 +98,12 @@ import Ctl.Internal.Plutus.Types.DataSchema , PNil ) import Ctl.Internal.QueryM.Ogmios (aesonObject, slotLengthFactor) -import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.ToData (class ToData, genericToData, toData) import Ctl.Internal.TypeLevel.Nat (S, Z) -import Ctl.Internal.Types.BigNum - ( add - , fromBigInt - , maxValue - , one - , toBigInt - , zero - ) as BigNum import Ctl.Internal.Types.EraSummaries ( EraSummaries(EraSummaries) , EraSummary(EraSummary) ) -import Ctl.Internal.Types.PlutusData (PlutusData(Constr)) import Ctl.Internal.Types.SystemStart (SystemStart, sysStartUnixTime) import Data.Argonaut.Encode.Encoders (encodeString) import Data.Array (find, head, index, length) @@ -1174,12 +1165,12 @@ instance (EncodeAeson a) => EncodeAeson (Extended a) where instance (DecodeAeson a) => DecodeAeson (Extended a) where decodeAeson a = lmap (Named "Extended") do obj <- decodeAeson a - tag <- obj .: tagProp + tag <- obj .: "tag" case tag of "NegInf" -> pure NegInf "PosInf" -> pure PosInf - "Finite" -> Finite <$> obj .: contentsProp - _ -> Left $ AtKey tagProp $ UnexpectedValue $ encodeString tag + "Finite" -> Finite <$> obj .: "contents" + _ -> Left $ AtKey "tag" $ UnexpectedValue $ encodeString tag toOnChainPosixTimeRangeErrorStr :: String toOnChainPosixTimeRangeErrorStr = "ToOnChainPosixTimeRangeError" diff --git a/src/Internal/Types/Natural.purs b/src/Internal/Types/Natural.purs index ac94710c0..7a29c7fac 100644 --- a/src/Internal/Types/Natural.purs +++ b/src/Internal/Types/Natural.purs @@ -15,11 +15,11 @@ module Ctl.Internal.Types.Natural import Prelude import Aeson (class DecodeAeson, JsonDecodeError(TypeMismatch), caseAesonBigInt) +import Cardano.Types.PlutusData (PlutusData(Integer)) import Ctl.Internal.FromData (class FromData) import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.PlutusData (PlutusData(Integer)) import Data.Either (Either(Left), note) import Data.Function (on) import Data.Maybe (Maybe(Nothing, Just), fromMaybe) diff --git a/src/Internal/Types/OutputDatum.purs b/src/Internal/Types/OutputDatum.purs index e1a9f8804..b4f2ed807 100644 --- a/src/Internal/Types/OutputDatum.purs +++ b/src/Internal/Types/OutputDatum.purs @@ -1,105 +1,5 @@ module Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - , outputDatumDataHash - , outputDatumDatum - , pprintOutputDatum + ( module X ) where -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) - , caseAesonObject - , fromString - , toStringifiedNumbersJson - , (.:) - ) -import Ctl.Internal.FromData (class FromData, genericFromData) -import Ctl.Internal.Helpers (encodeTagged') -import Ctl.Internal.Plutus.Types.DataSchema - ( class HasPlutusSchema - , type (:+) - , type (:=) - , type (@@) - , PNil - ) -import Ctl.Internal.ToData (class ToData, genericToData) -import Ctl.Internal.TypeLevel.Nat (S, Z) -import Ctl.Internal.Types.Datum (Datum) -import Ctl.Internal.Types.PlutusData (pprintPlutusData) -import Ctl.Internal.Types.Transaction (DataHash) -import Data.ByteArray (byteArrayToHex) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) -import Data.Show.Generic (genericShow) - -data OutputDatum = NoOutputDatum | OutputDatumHash DataHash | OutputDatum Datum - -derive instance Generic OutputDatum _ -derive instance Eq OutputDatum - -instance Show OutputDatum where - show = genericShow - -instance - HasPlutusSchema OutputDatum - ( "NoOutputDatum" := PNil @@ Z - :+ "OutputDatumHash" - := PNil - @@ (S Z) - :+ "OutputDatum" - := PNil - @@ (S (S Z)) - :+ PNil - ) - -instance ToData OutputDatum where - toData = genericToData - -instance FromData OutputDatum where - fromData = genericFromData - -instance EncodeAeson OutputDatum where - encodeAeson = case _ of - NoOutputDatum -> encodeTagged' "NoOutputDatum" {} - OutputDatumHash r -> encodeTagged' "OutputDatumHash" r - OutputDatum r -> encodeTagged' "OutputDatum" r - -instance DecodeAeson OutputDatum where - decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ - \obj -> do - tag <- obj .: "tag" - case tag of - "NoOutputDatum" -> - pure NoOutputDatum - "OutputDatumHash" -> do - dataHash <- obj .: "contents" - pure $ OutputDatumHash dataHash - "OutputDatum" -> do - datum <- obj .: "contents" - pure $ OutputDatum datum - tagValue -> do - Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString - tagValue - -pprintOutputDatum :: OutputDatum -> TagSet -pprintOutputDatum = TagSet.fromArray <<< case _ of - NoOutputDatum -> [ "datum" `tag` "none" ] - OutputDatumHash hash -> - [ "datumHash" `tag` byteArrayToHex (unwrap hash) ] - OutputDatum d -> - [ "datum" `tagSetTag` pprintPlutusData (unwrap d) ] - -outputDatumDataHash :: OutputDatum -> Maybe DataHash -outputDatumDataHash (OutputDatumHash hash) = Just hash -outputDatumDataHash _ = Nothing - -outputDatumDatum :: OutputDatum -> Maybe Datum -outputDatumDatum (OutputDatum datum) = Just datum -outputDatumDatum _ = Nothing +import Cardano.Types.OutputDatum as X diff --git a/src/Internal/Types/PaymentPubKey.purs b/src/Internal/Types/PaymentPubKey.purs index 4aa99cff0..cdef8372a 100644 --- a/src/Internal/Types/PaymentPubKey.purs +++ b/src/Internal/Types/PaymentPubKey.purs @@ -6,11 +6,6 @@ module Ctl.Internal.Types.PaymentPubKey import Prelude -import Ctl.Internal.Cardano.Types.Transaction - ( PublicKey - , RequiredSigner(RequiredSigner) - , Vkey(Vkey) - ) import Ctl.Internal.Serialization (publicKeyHash) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap) diff --git a/src/Internal/Types/PlutusData.purs b/src/Internal/Types/PlutusData.purs deleted file mode 100644 index 907d9025c..000000000 --- a/src/Internal/Types/PlutusData.purs +++ /dev/null @@ -1,133 +0,0 @@ -module Ctl.Internal.Types.PlutusData - ( PlutusData - ( Constr - , Map - , List - , Integer - , Bytes - ) - , pprintPlutusData - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(UnexpectedValue) - , decodeAeson - , encodeAeson - , toStringifiedNumbersJson - , (.:) - ) -import Control.Alt ((<|>)) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum as BigNum -import Data.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Show.Generic (genericShow) -import Data.Traversable (for) -import Data.Tuple (Tuple) -import Data.Tuple.Nested ((/\)) -import JS.BigInt (BigInt) -import JS.BigInt as BigInt - --- Doesn't distinguish "BuiltinData" and "Data" like Plutus: -data PlutusData - = Constr BigNum (Array PlutusData) - | Map (Array (Tuple PlutusData PlutusData)) - | List (Array PlutusData) - | Integer BigInt - | Bytes ByteArray - -derive instance Eq PlutusData -derive instance Ord PlutusData -derive instance Generic PlutusData _ - -instance Show PlutusData where - show x = genericShow x - --- Based off Ogmios Datum Cache Json format, although we no longer use ODC -instance DecodeAeson PlutusData where - decodeAeson aeson = decodeConstr - <|> decodeMap - <|> decodeList - <|> decodeInteger - <|> decodeBytes - where - decodeConstr :: Either JsonDecodeError PlutusData - decodeConstr = do - x <- decodeAeson aeson - constr <- x .: "constr" - fields <- x .: "fields" - pure $ Constr constr fields - - decodeMap :: Either JsonDecodeError PlutusData - decodeMap = do - obj <- decodeAeson aeson - map1 <- (obj .: "map" :: Either _ (Array _)) - kvs <- for map1 \entryJson -> do - key <- entryJson .: "key" - value <- entryJson .: "value" - pure $ key /\ value - pure $ Map kvs - - decodeList :: Either JsonDecodeError PlutusData - decodeList = do - List <$> decodeAeson aeson - - decodeInteger :: Either JsonDecodeError PlutusData - decodeInteger = do - Integer <$> decodeAeson aeson - - decodeBytes :: Either JsonDecodeError PlutusData - decodeBytes = do - bytesHex <- decodeAeson aeson - case hexToByteArray bytesHex of - Nothing -> Left $ UnexpectedValue $ toStringifiedNumbersJson $ - encodeAeson bytesHex - Just res -> pure $ Bytes res - -instance EncodeAeson PlutusData where - encodeAeson (Constr constr fields) = encodeAeson - { "constr": constr - , "fields": fields - } - encodeAeson (Map elems) = encodeAeson - { "map": encodeAeson $ map - ( \(k /\ v) -> - { "key": k - , "value": v - } - ) - elems - } - encodeAeson (List elems) = encodeAeson elems - encodeAeson (Integer bi) = encodeAeson bi - encodeAeson (Bytes ba) = encodeAeson ba - -pprintPlutusData :: PlutusData -> TagSet -pprintPlutusData (Constr n children) = TagSet.fromArray - [ ("Constr " <> BigInt.toString (BigNum.toBigInt n)) `tagSetTag` - TagSet.fromArray (pprintPlutusData <$> children) - ] -pprintPlutusData (Map entries) = TagSet.fromArray - [ tagSetTag "Map" $ TagSet.fromArray $ - entries <#> \(key /\ value) -> - TagSet.fromArray - [ "key" `tagSetTag` pprintPlutusData key - , "value" `tagSetTag` pprintPlutusData value - ] - ] -pprintPlutusData (List children) = TagSet.fromArray - [ tagSetTag "List" $ TagSet.fromArray $ - children <#> pprintPlutusData - ] -pprintPlutusData (Integer n) = TagSet.fromArray - [ "Integer" `tag` BigInt.toString n ] -pprintPlutusData (Bytes bytes) = TagSet.fromArray - [ "Bytes" `tag` byteArrayToHex bytes ] diff --git a/src/Internal/Types/PubKeyHash.purs b/src/Internal/Types/PubKeyHash.purs deleted file mode 100644 index ffb6398fe..000000000 --- a/src/Internal/Types/PubKeyHash.purs +++ /dev/null @@ -1,154 +0,0 @@ -module Ctl.Internal.Types.PubKeyHash - ( PaymentPubKeyHash(PaymentPubKeyHash) - , PubKeyHash(PubKeyHash) - , StakePubKeyHash(StakePubKeyHash) - , payPubKeyHashBaseAddress - , payPubKeyHashEnterpriseAddress - , payPubKeyHashRewardAddress - , pubKeyHashBaseAddress - , pubKeyHashEnterpriseAddress - , pubKeyHashRewardAddress - , stakePubKeyHashRewardAddress - , ed25519RewardAddress - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , decodeAeson - , encodeAeson - , (.:) - ) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.Serialization.Address - ( Address - , EnterpriseAddress - , NetworkId - , RewardAddress - , baseAddressToAddress - , enterpriseAddress - , enterpriseAddressToAddress - , keyHashCredential - , paymentKeyHashStakeKeyHashAddress - , rewardAddress - , rewardAddressToAddress - ) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) -import Ctl.Internal.ToData (class ToData) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) - -newtype PubKeyHash = PubKeyHash Ed25519KeyHash - -derive instance Generic PubKeyHash _ -derive instance Newtype PubKeyHash _ -derive newtype instance Eq PubKeyHash -derive newtype instance FromData PubKeyHash -derive newtype instance FromMetadata PubKeyHash -derive newtype instance Ord PubKeyHash -derive newtype instance ToData PubKeyHash -derive newtype instance ToMetadata PubKeyHash - -instance Show PubKeyHash where - show = genericShow - -instance EncodeAeson PubKeyHash where - encodeAeson x = encodeAeson { getPubKeyHash: unwrap x } - -instance DecodeAeson PubKeyHash where - decodeAeson a = do - obj <- decodeAeson a - wrap <$> obj .: "getPubKeyHash" - -ed25519EnterpriseAddress - :: forall (n :: Type) - . Newtype n Ed25519KeyHash - => NetworkId - -> n - -> EnterpriseAddress -ed25519EnterpriseAddress network pkh = - enterpriseAddress - { network - , paymentCred: keyHashCredential (unwrap pkh) - } - -ed25519RewardAddress - :: forall (n :: Type) - . Newtype n Ed25519KeyHash - => NetworkId - -> n - -> RewardAddress -ed25519RewardAddress network skh = - rewardAddress - { network - , paymentCred: keyHashCredential (unwrap skh) - } - -pubKeyHashBaseAddress :: NetworkId -> PubKeyHash -> StakePubKeyHash -> Address -pubKeyHashBaseAddress networkId pkh skh = - baseAddressToAddress $ paymentKeyHashStakeKeyHashAddress networkId - (unwrap pkh) - (unwrap $ unwrap skh) - -pubKeyHashRewardAddress :: NetworkId -> PubKeyHash -> Address -pubKeyHashRewardAddress networkId = - rewardAddressToAddress <<< ed25519RewardAddress networkId - -pubKeyHashEnterpriseAddress :: NetworkId -> PubKeyHash -> Address -pubKeyHashEnterpriseAddress networkId = - enterpriseAddressToAddress <<< ed25519EnterpriseAddress networkId - -newtype PaymentPubKeyHash = PaymentPubKeyHash PubKeyHash - -derive instance Generic PaymentPubKeyHash _ -derive instance Newtype PaymentPubKeyHash _ -derive newtype instance Eq PaymentPubKeyHash -derive newtype instance FromData PaymentPubKeyHash -derive newtype instance Ord PaymentPubKeyHash -derive newtype instance ToData PaymentPubKeyHash - -instance EncodeAeson PaymentPubKeyHash where - encodeAeson (PaymentPubKeyHash pkh) = encodeAeson - { "unPaymentPubKeyHash": pkh } - -instance DecodeAeson PaymentPubKeyHash where - decodeAeson json = do - obj <- decodeAeson json - PaymentPubKeyHash <<< PubKeyHash <$> obj .: "unPaymentPubKeyHash" - -instance Show PaymentPubKeyHash where - show = genericShow - -newtype StakePubKeyHash = StakePubKeyHash PubKeyHash - -derive instance Generic StakePubKeyHash _ -derive instance Newtype StakePubKeyHash _ -derive newtype instance Eq StakePubKeyHash -derive newtype instance FromData StakePubKeyHash -derive newtype instance Ord StakePubKeyHash -derive newtype instance ToData StakePubKeyHash - -instance Show StakePubKeyHash where - show = genericShow - -payPubKeyHashRewardAddress :: NetworkId -> PaymentPubKeyHash -> Address -payPubKeyHashRewardAddress networkId (PaymentPubKeyHash pkh) = - pubKeyHashRewardAddress networkId pkh - -payPubKeyHashBaseAddress - :: NetworkId -> PaymentPubKeyHash -> StakePubKeyHash -> Address -payPubKeyHashBaseAddress networkId (PaymentPubKeyHash pkh) skh = - pubKeyHashBaseAddress networkId pkh skh - -payPubKeyHashEnterpriseAddress :: NetworkId -> PaymentPubKeyHash -> Address -payPubKeyHashEnterpriseAddress networkId (PaymentPubKeyHash pkh) = - pubKeyHashEnterpriseAddress networkId pkh - -stakePubKeyHashRewardAddress :: NetworkId -> StakePubKeyHash -> Address -stakePubKeyHashRewardAddress networkId = - rewardAddressToAddress <<< ed25519RewardAddress networkId <<< unwrap diff --git a/src/Internal/Types/Rational.purs b/src/Internal/Types/Rational.purs index 4b7d940c2..e0d101aaf 100644 --- a/src/Internal/Types/Rational.purs +++ b/src/Internal/Types/Rational.purs @@ -20,12 +20,12 @@ import Aeson , toStringifiedNumbersJson , (.:) ) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr, Integer)) import Ctl.Internal.FromData (class FromData) import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.Natural (Natural) import Ctl.Internal.Types.Natural (fromBigInt', toBigInt) as Nat -import Ctl.Internal.Types.PlutusData (PlutusData(Constr, Integer)) import Data.Either (Either(Left)) import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Ratio (Ratio) diff --git a/src/Internal/Types/Redeemer.purs b/src/Internal/Types/Redeemer.purs index 559c216f4..301a3f937 100644 --- a/src/Internal/Types/Redeemer.purs +++ b/src/Internal/Types/Redeemer.purs @@ -8,11 +8,12 @@ module Ctl.Internal.Types.Redeemer import Prelude import Cardano.Serialization.Lib (toBytes) +import Cardano.Types.DataHash (DataHash(..)) +import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.PlutusData as PlutusData import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Hashing (hashPlutusData) -import Ctl.Internal.Serialization.PlutusData (convertPlutusData) +import Ctl.Internal.Hashing (plutusDataHash) import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.PlutusData (PlutusData) import Data.ByteArray (ByteArray(ByteArray)) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap, wrap) @@ -33,8 +34,7 @@ instance Show Redeemer where unitRedeemer :: Redeemer unitRedeemer = Redeemer (toData unit) --- We could also use `type RedeemerHash = DataHash`? -newtype RedeemerHash = RedeemerHash ByteArray +newtype RedeemerHash = RedeemerHash DataHash derive instance Generic RedeemerHash _ derive instance Newtype RedeemerHash _ @@ -50,5 +50,4 @@ instance Show RedeemerHash where -- | This is a duplicate of `datumHash`. redeemerHash :: Redeemer -> RedeemerHash redeemerHash = - wrap <<< toBytes <<< hashPlutusData <<< convertPlutusData <<< - unwrap + RedeemerHash <<< plutusDataHash <<< unwrap diff --git a/src/Internal/Types/RewardAddress.purs b/src/Internal/Types/RewardAddress.purs index 6e2150736..23efffc07 100644 --- a/src/Internal/Types/RewardAddress.purs +++ b/src/Internal/Types/RewardAddress.purs @@ -1,68 +1,5 @@ module Ctl.Internal.Types.RewardAddress - ( RewardAddress(RewardAddress) - , rewardAddressFromBytes - , rewardAddressToBytes - , rewardAddressFromBech32 - , rewardAddressToBech32 - , stakePubKeyHashRewardAddress - , stakeValidatorHashRewardAddress - , unRewardAddress + ( module X ) where -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Serialization.Address - ( keyHashCredential - , scriptHashCredential - ) -import Ctl.Internal.Serialization.Address as Csl -import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) -import Ctl.Internal.Types.Scripts (StakeValidatorHash) -import Data.ByteArray (ByteArray) -import Data.Maybe (Maybe) -import Data.Newtype (unwrap, wrap) - -newtype RewardAddress = RewardAddress Csl.RewardAddress - -derive newtype instance Eq RewardAddress -derive newtype instance Ord RewardAddress -derive newtype instance Show RewardAddress -derive newtype instance FromData RewardAddress -derive newtype instance ToData RewardAddress -derive newtype instance EncodeAeson RewardAddress -derive newtype instance DecodeAeson RewardAddress - -unRewardAddress :: RewardAddress -> Csl.RewardAddress -unRewardAddress (RewardAddress address) = address - -rewardAddressFromBytes :: ByteArray -> Maybe RewardAddress -rewardAddressFromBytes = wrap >>> Csl.rewardAddressFromBytes >>> map - RewardAddress - -rewardAddressFromBech32 :: Bech32String -> Maybe RewardAddress -rewardAddressFromBech32 = Csl.rewardAddressFromBech32 >>> map RewardAddress - -rewardAddressToBech32 :: RewardAddress -> Bech32String -rewardAddressToBech32 = unRewardAddress >>> Csl.rewardAddressBech32 - -rewardAddressToBytes :: RewardAddress -> CborBytes -rewardAddressToBytes = unRewardAddress >>> Csl.rewardAddressBytes - -stakePubKeyHashRewardAddress - :: Csl.NetworkId -> StakePubKeyHash -> RewardAddress -stakePubKeyHashRewardAddress networkId pkh = RewardAddress $ Csl.rewardAddress - { network: networkId - , paymentCred: keyHashCredential $ unwrap $ unwrap pkh - } - -stakeValidatorHashRewardAddress - :: Csl.NetworkId -> StakeValidatorHash -> RewardAddress -stakeValidatorHashRewardAddress networkId sh = RewardAddress $ Csl.rewardAddress - { network: networkId - , paymentCred: scriptHashCredential (unwrap sh) - } +import Cardano.Types.RewardAddress as X diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 677ddbce3..3b5abda7b 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -15,14 +15,13 @@ module Ctl.Internal.Types.ScriptLookups import Prelude hiding (join) +import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.Hashing (datumHash) as Hashing import Ctl.Internal.Helpers ((<\>)) import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus import Ctl.Internal.Types.Datum (DataHash, Datum) import Ctl.Internal.Types.PaymentPubKey (PaymentPubKey) -import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, StakePubKeyHash) import Ctl.Internal.Types.Scripts (MintingPolicy, Validator) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Array (singleton, union) as Array import Data.Generic.Rep (class Generic) import Data.Map (Map, empty, singleton, union) diff --git a/src/Internal/Types/Scripts.purs b/src/Internal/Types/Scripts.purs index 46081c3ee..e6c32c3bd 100644 --- a/src/Internal/Types/Scripts.purs +++ b/src/Internal/Types/Scripts.purs @@ -1,16 +1,13 @@ module Ctl.Internal.Types.Scripts ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) , MintingPolicyHash(MintingPolicyHash) - , PlutusScript(PlutusScript) , PlutusScriptStakeValidator(PlutusScriptStakeValidator) , NativeScriptStakeValidator(NativeScriptStakeValidator) , StakeValidatorHash(StakeValidatorHash) , Validator(Validator) , ValidatorHash(ValidatorHash) - , Language(PlutusV1, PlutusV2) - , plutusV1Script - , plutusV2Script , stakeValidatorHashToBech32 + , module X ) where import Prelude @@ -19,76 +16,31 @@ import Aeson ( class DecodeAeson , class EncodeAeson , Aeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) + , JsonDecodeError(TypeMismatch) , caseAesonObject - , caseAesonString , decodeAeson , encodeAeson - , fromString , getField - , toStringifiedNumbersJson ) +import Cardano.Types.Language (Language(..), fromCsl, toCsl) as X +import Cardano.Types.NativeScript (NativeScript) +import Cardano.Types.PlutusScript (PlutusScript(..)) import Control.Alt ((<|>)) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) import Ctl.Internal.FromData (class FromData) import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBech32Unsafe) import Ctl.Internal.ToData (class ToData) import Ctl.Internal.Types.Aliases (Bech32String) -import Data.ByteArray (ByteArray) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) -import Data.Tuple.Nested (type (/\), (/\)) - -data Language - = PlutusV1 - | PlutusV2 - -derive instance Eq Language -derive instance Ord Language -derive instance Generic Language _ - -instance DecodeAeson Language where - decodeAeson = caseAesonString - (Left $ TypeMismatch "Expected string") - case _ of - "PlutusV1" -> pure PlutusV1 - "PlutusV2" -> pure PlutusV2 - other -> Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString - other - -instance EncodeAeson Language where - encodeAeson = encodeAeson <<< case _ of - PlutusV1 -> "PlutusV1" - PlutusV2 -> "PlutusV2" - -instance Show Language where - show = genericShow +import Partial.Unsafe (unsafePartial) -------------------------------------------------------------------------------- -- `PlutusScript` newtypes and `TypedValidator` -------------------------------------------------------------------------------- --- | Corresponds to "Script" in Plutus -newtype PlutusScript = PlutusScript (ByteArray /\ Language) - -derive instance Generic PlutusScript _ -derive instance Newtype PlutusScript _ -derive newtype instance Eq PlutusScript -derive newtype instance Ord PlutusScript -derive newtype instance DecodeAeson PlutusScript -derive newtype instance EncodeAeson PlutusScript - -instance Show PlutusScript where - show = genericShow - -plutusV1Script :: ByteArray -> PlutusScript -plutusV1Script ba = PlutusScript (ba /\ PlutusV1) - -plutusV2Script :: ByteArray -> PlutusScript -plutusV2Script ba = PlutusScript (ba /\ PlutusV2) decodeAesonHelper :: ∀ (a :: Type) (b :: Type) @@ -230,4 +182,5 @@ instance Show StakeValidatorHash where show = genericShow stakeValidatorHashToBech32 :: StakeValidatorHash -> Bech32String -stakeValidatorHashToBech32 = unwrap >>> scriptHashToBech32Unsafe "script" +stakeValidatorHashToBech32 = unsafePartial $ unwrap >>> scriptHashToBech32Unsafe + "script" diff --git a/src/Internal/Types/TokenName.js b/src/Internal/Types/TokenName.js deleted file mode 100644 index f432d3927..000000000 --- a/src/Internal/Types/TokenName.js +++ /dev/null @@ -1,26 +0,0 @@ -/* global BROWSER_RUNTIME */ - -// `TextDecoder` is not available in `node`, use polyfill in that case -let OurTextDecoder; -if (typeof BROWSER_RUNTIME == "undefined" || !BROWSER_RUNTIME) { - const util = await import("util"); - OurTextDecoder = util.TextDecoder; -} else { - OurTextDecoder = TextDecoder; -} - -export function _decodeUtf8(buffer) { - return left => right => { - let decoder = new OurTextDecoder("utf-8", { fatal: true }); // Without fatal=true it never fails - - try { - return right(decoder.decode(buffer)); - } catch (err) { - return left(err.toString()); - } - }; -} - -// FIXME: https://github.com/Plutonomicon/cardano-transaction-lib/issues/548 -const call = property => object => object[property](); -export const assetNameName = call("name"); diff --git a/src/Internal/Types/TokenName.purs b/src/Internal/Types/TokenName.purs deleted file mode 100644 index d2b3edd4e..000000000 --- a/src/Internal/Types/TokenName.purs +++ /dev/null @@ -1,124 +0,0 @@ -module Ctl.Internal.Types.TokenName - ( TokenName - , adaToken - , getTokenName - , mkTokenName - , mkTokenNames - , tokenNameFromAssetName - , assetNameName - , fromTokenName - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , encodeAeson - , getField - ) -import Contract.Prim.ByteArray (hexToByteArray) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.Serialization.Types (AssetName) as CSL -import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) -import Data.ArrayBuffer.Types (Uint8Array) -import Data.Bitraversable (ltraverse) -import Data.ByteArray (ByteArray, byteArrayToHex, byteLength) -import Data.Either (Either(Right, Left), either, note) -import Data.Map (Map) -import Data.Map (fromFoldable) as Map -import Data.Maybe (Maybe(Nothing), fromJust) -import Data.Newtype (unwrap, wrap) -import Data.String.CodePoints (drop, take) -import Data.TextEncoder (encodeUtf8) -import Data.Traversable (class Traversable, traverse) -import Data.Tuple.Nested (type (/\)) -import JS.BigInt (BigInt) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) -import Test.QuickCheck.Gen (resize) - -newtype TokenName = TokenName RawBytes - -derive newtype instance Eq TokenName -derive newtype instance FromData TokenName -derive newtype instance FromMetadata TokenName -derive newtype instance ToMetadata TokenName -derive newtype instance Ord TokenName -derive newtype instance ToData TokenName - -instance Arbitrary TokenName where - arbitrary = unsafePartial fromJust <<< mkTokenName <$> resize 32 arbitrary - -foreign import _decodeUtf8 - :: forall (r :: Type). Uint8Array -> (String -> r) -> (String -> r) -> r - -fromTokenName - :: forall (r :: Type). (ByteArray -> r) -> (String -> r) -> TokenName -> r -fromTokenName arrayHandler stringHandler (TokenName (RawBytes ba)) = either - (const $ arrayHandler $ ba) - stringHandler - (_decodeUtf8 (unwrap ba) Left Right) - --- | Corresponds to the Haskell instance at https://github.com/input-output-hk/plutus/blob/4fd86930f1dc628a816adf5f5d854b3fec578312/plutus-ledger-api/src/Plutus/V1/Ledger/Value.hs#L155: -instance DecodeAeson TokenName where - decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ - \aes -> do - tkstr <- getField aes "unTokenName" - case take 3 tkstr of - "\x0000000x" -> do -- this is 3 characters '\NUL' '0' 'x' - let stripped = drop 3 tkstr -- strip the \NUL followed by "0x" - ba <- - note - (TypeMismatch $ "Expected base16 encoded string got " <> stripped) - $ hexToByteArray stripped - pure $ TokenName (wrap ba) - "\x0\x0\x0" -> Right $ tkFromStr (drop 2 tkstr) -- if the original started with \NUL, we prepended 2 additional \NULs - _ -> Right $ tkFromStr tkstr - where - tkFromStr :: String -> TokenName - tkFromStr = TokenName <<< wrap <<< wrap <<< encodeUtf8 - -instance EncodeAeson TokenName where - encodeAeson = encodeAeson <<< { "unTokenName": _ } <<< fromTokenName - (\ba -> "\x0" <> "0x" <> byteArrayToHex ba) - ( \s -> case take 1 s of - "\x0" -> "\x0\x0" <> s - _ -> s - ) - -instance Show TokenName where - show (TokenName tn) = "(TokenName " <> show tn <> ")" - -getTokenName :: TokenName -> ByteArray -getTokenName (TokenName tokenName) = unwrap tokenName - --- | The empty token name. -adaToken :: TokenName -adaToken = TokenName mempty - --- | Create a `TokenName` from a `ByteArray` since TokenName data constructor is --- | not exported -mkTokenName :: ByteArray -> Maybe TokenName -mkTokenName byteArr - | byteLength byteArr <= 32 = pure $ TokenName $ wrap byteArr - | otherwise = Nothing - -foreign import assetNameName :: CSL.AssetName -> ByteArray - -tokenNameFromAssetName :: CSL.AssetName -> TokenName -tokenNameFromAssetName = TokenName <<< wrap <<< assetNameName - --- | Creates a Map of `TokenName` and Big Integers from a `Traversable` of 2-tuple --- | `ByteArray` and Big Integers with the possibility of failure -mkTokenNames - :: forall (t :: Type -> Type) - . Traversable t - => t (ByteArray /\ BigInt) - -> Maybe (Map TokenName BigInt) -mkTokenNames = traverse (ltraverse mkTokenName) >>> map Map.fromFoldable diff --git a/src/Internal/Types/Transaction.purs b/src/Internal/Types/Transaction.purs index 9a309cb46..f9c5ebf37 100644 --- a/src/Internal/Types/Transaction.purs +++ b/src/Internal/Types/Transaction.purs @@ -1,128 +1,5 @@ --- | A module for shared types across Cardano.Types.Transaction and --- | Plutus.Types.Transaction. -module Ctl.Internal.Types.Transaction - ( DataHash(DataHash) - , TransactionHash(TransactionHash) - , TransactionInput(TransactionInput) - ) where +module Ctl.Internal.Types.Transaction (module X) where -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Cardano.Serialization.Lib as Csl -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Helpers (eqOrd, showFromBytes) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.BigNum (zero) as BigNum -import Ctl.Internal.Types.PlutusData (PlutusData(Constr)) -import Data.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe, byteArrayToHex) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Nothing), fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) -import Data.UInt (UInt, toInt) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary - ( class Arbitrary - , class Coarbitrary - , coarbitrary - ) -import Test.QuickCheck.Gen (chooseInt, vectorOf) - -newtype TransactionInput = TransactionInput - { transactionId :: TransactionHash - , index :: UInt - } - -derive instance Newtype TransactionInput _ -derive instance Generic TransactionInput _ -derive newtype instance Eq TransactionInput -derive newtype instance EncodeAeson TransactionInput -derive newtype instance DecodeAeson TransactionInput - --- Potential fix me: the below is based on a small sample of smart contract --- transactions, so fix this as required. --- Not newtype derived this because it is not lexicographical as `index` is tested --- before `transactionId`. We require lexicographical order over hexstring --- `TransactionHash`, then `index`, seemingly inline with Cardano/Plutus. -instance Ord TransactionInput where - compare (TransactionInput txInput) (TransactionInput txInput') = - case compare txInput.transactionId txInput'.transactionId of - EQ -> compare txInput.index txInput'.index - x -> x - -instance Show TransactionInput where - show = genericShow - --- `Constr` is used for indexing, and `TransactionInput` is always zero-indexed -instance FromData TransactionInput where - fromData (Constr n [ txId, idx ]) | n == BigNum.zero = - TransactionInput <$> - ({ transactionId: _, index: _ } <$> fromData txId <*> fromData idx) - fromData _ = Nothing - --- `Constr` is used for indexing, and `TransactionInput` is always zero-indexed -instance ToData TransactionInput where - toData (TransactionInput { transactionId, index }) = - Constr BigNum.zero [ toData transactionId, toData index ] - -instance Coarbitrary TransactionInput where - coarbitrary (TransactionInput input) generator = - coarbitrary (toInt input.index) $ coarbitrary input.transactionId generator - --- | 32-bytes blake2b256 hash of a tx body. --- | NOTE. Plutus docs might incorrectly state that it uses --- | SHA256 for this purposes. -newtype TransactionHash = TransactionHash Csl.TransactionHash - -derive instance Generic TransactionHash _ -derive instance Newtype TransactionHash _ -instance Eq TransactionHash where - eq = eqOrd - -derive newtype instance EncodeAeson TransactionHash -derive newtype instance DecodeAeson TransactionHash - --- This is not newtyped derived because it will be used for ordering a --- `TransactionInput`, we want lexicographical ordering on the hexstring. -instance Ord TransactionHash where - compare (TransactionHash h) (TransactionHash h') = - compare (byteArrayToHex $ toBytes h) (byteArrayToHex $ toBytes h') - -instance Show TransactionHash where - show = unwrap >>> showFromBytes "TransactionHash" - --- Plutus actually has this as a zero indexed record -instance FromData TransactionHash where - fromData (Constr n [ bytes ]) | n == BigNum.zero = TransactionHash <$> - (fromBytes =<< fromData bytes) - fromData _ = Nothing - --- Plutus actually has this as a zero indexed record -instance ToData TransactionHash where - toData (TransactionHash th) = Constr BigNum.zero [ toData $ toBytes th ] - -instance Arbitrary TransactionHash where - arbitrary = unsafePartial $ - wrap <<< fromJust <<< fromBytes <<< byteArrayFromIntArrayUnsafe <$> vectorOf - 32 - (chooseInt 0 255) - -instance Coarbitrary TransactionHash where - coarbitrary (TransactionHash th) generator = coarbitrary (toBytes th) - generator - -newtype DataHash = DataHash ByteArray - -derive instance Generic DataHash _ -derive instance Newtype DataHash _ -derive newtype instance Eq DataHash -derive newtype instance FromData DataHash -derive newtype instance Ord DataHash -derive newtype instance ToData DataHash -derive newtype instance DecodeAeson DataHash -derive newtype instance EncodeAeson DataHash - -instance Show DataHash where - show = genericShow +import Cardano.Types.DataHash as X +import Cardano.Types.TransactionHash as X +import Cardano.Types.TransactionInput as X diff --git a/src/Internal/Types/TransactionMetadata.purs b/src/Internal/Types/TransactionMetadata.purs index 95a8e3b40..3a967ef0f 100644 --- a/src/Internal/Types/TransactionMetadata.purs +++ b/src/Internal/Types/TransactionMetadata.purs @@ -88,4 +88,3 @@ instance EncodeAeson TransactionMetadatum where Int n -> encodeTagged' "Int" n Bytes bytes -> encodeTagged' "Bytes" bytes Text string -> encodeTagged' "Text" string - diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index a7f9ab229..3498c8e00 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -96,6 +96,13 @@ module Ctl.Internal.Types.TxConstraints import Prelude hiding (join) +import Cardano.Types.AssetName (AssetName) +import Cardano.Types.BigNum (BigNum(..)) +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash(..)) +import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.ScriptHash (ScriptHash(..)) +import Cardano.Types.StakePubKeyHash (StakePubKeyHash(..)) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) import Ctl.Internal.Cardano.Types.Transaction @@ -103,6 +110,7 @@ import Ctl.Internal.Cardano.Types.Transaction , PoolPubKeyHash , PoolRegistrationParams ) +import Ctl.Internal.Helpers (notImplemented) import Ctl.Internal.NativeScripts (NativeScriptHash) import Ctl.Internal.Plutus.Types.Credential (Credential) import Ctl.Internal.Plutus.Types.CurrencySymbol @@ -113,7 +121,7 @@ import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) import Ctl.Internal.Plutus.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) ) -import Ctl.Internal.Plutus.Types.Value (Value, flattenNonAdaAssets) +import Ctl.Internal.Plutus.Types.Value (Value, flattenMultiAssets) import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.Interval ( POSIXTimeRange @@ -121,8 +129,6 @@ import Ctl.Internal.Types.Interval , intersection , isEmpty ) -import Ctl.Internal.Types.PlutusData (PlutusData) -import Ctl.Internal.Types.PubKeyHash (PaymentPubKeyHash, StakePubKeyHash) import Ctl.Internal.Types.Redeemer (Redeemer, unitRedeemer) import Ctl.Internal.Types.Scripts ( MintingPolicyHash @@ -131,7 +137,6 @@ import Ctl.Internal.Types.Scripts , StakeValidatorHash , ValidatorHash ) -import Ctl.Internal.Types.TokenName (TokenName) import Ctl.Internal.Types.Transaction (DataHash, TransactionInput) import Data.Array as Array import Data.Foldable (class Foldable, foldMap, foldl, foldr) @@ -141,10 +146,9 @@ import Data.Map (Map, fromFoldableWith, toUnfoldable) import Data.Map (singleton) as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Monoid (guard) -import Data.Newtype (class Newtype, over, unwrap) +import Data.Newtype (class Newtype, over, unwrap, wrap) import Data.Show.Generic (genericShow) import Data.Tuple.Nested (type (/\), (/\)) -import JS.BigInt (BigInt) import Prim.TypeError (class Warn, Text) -------------------------------------------------------------------------------- @@ -165,9 +169,9 @@ data TxConstraint | MustSpendNativeScriptOutput TransactionInput NativeScript | MustSpendScriptOutput TransactionInput Redeemer (Maybe InputWithScriptRef) | MustReferenceOutput TransactionInput - | MustMintValue MintingPolicyHash Redeemer TokenName BigInt + | MustMintValue MintingPolicyHash Redeemer AssetName BigNum (Maybe InputWithScriptRef) - | MustMintValueUsingNativeScript NativeScript TokenName BigInt + | MustMintValueUsingNativeScript NativeScript AssetName BigNum | MustPayToPubKeyAddress PaymentPubKeyHash (Maybe StakePubKeyHash) (Maybe (Datum /\ DatumPresence)) (Maybe ScriptRef) @@ -482,24 +486,22 @@ mustMintValueWithRedeemer . Redeemer -> Value -> TxConstraints -mustMintValueWithRedeemer redeemer = - Array.fold <<< map tokenConstraint <<< flattenNonAdaAssets - where - tokenConstraint - :: CurrencySymbol /\ TokenName /\ BigInt -> TxConstraints - tokenConstraint (cs /\ tn /\ amount) = - let - mintingPolicyHash = currencyMPSHash cs - in - mustMintCurrencyWithRedeemer mintingPolicyHash redeemer tn amount +mustMintValueWithRedeemer redeemer = notImplemented -- TODO: replace with MultiAsset + +-- Array.fold <<< map tokenConstraint <<< MultiAsset.flatten +-- where +-- tokenConstraint +-- :: ScriptHash /\ AssetName /\ BigNum -> TxConstraints +-- tokenConstraint (cs /\ tn /\ amount) = +-- mustMintCurrencyWithRedeemer (wrap cs) redeemer tn amount -- | Create the given amount of the currency. -- | The amount to mint must not be zero. mustMintCurrency :: forall (i :: Type) (o :: Type) . MintingPolicyHash - -> TokenName - -> BigInt + -> AssetName + -> BigNum -> TxConstraints mustMintCurrency mph = mustMintCurrencyWithRedeemer mph unitRedeemer @@ -507,8 +509,8 @@ mustMintCurrency mph = mustMintCurrencyUsingNativeScript :: forall (i :: Type) (o :: Type) . NativeScript - -> TokenName - -> BigInt + -> AssetName + -> BigNum -> TxConstraints mustMintCurrencyUsingNativeScript ns tk i = singleton (MustMintValueUsingNativeScript ns tk i) @@ -518,8 +520,8 @@ mustMintCurrencyUsingNativeScript ns tk i = singleton mustMintCurrencyUsingScriptRef :: forall (i :: Type) (o :: Type) . MintingPolicyHash - -> TokenName - -> BigInt + -> AssetName + -> BigNum -> InputWithScriptRef -> TxConstraints mustMintCurrencyUsingScriptRef mph = @@ -531,8 +533,8 @@ mustMintCurrencyWithRedeemer :: forall (i :: Type) (o :: Type) . MintingPolicyHash -> Redeemer - -> TokenName - -> BigInt + -> AssetName + -> BigNum -> TxConstraints mustMintCurrencyWithRedeemer mph red tn amount = singleton (MustMintValue mph red tn amount Nothing) @@ -543,8 +545,8 @@ mustMintCurrencyWithRedeemerUsingScriptRef :: forall (i :: Type) (o :: Type) . MintingPolicyHash -> Redeemer - -> TokenName - -> BigInt + -> AssetName + -> BigNum -> InputWithScriptRef -> TxConstraints mustMintCurrencyWithRedeemerUsingScriptRef mph red tn amount = diff --git a/src/Internal/Types/UsedTxOuts.purs b/src/Internal/Types/UsedTxOuts.purs index abb8da6aa..6f8b807cd 100644 --- a/src/Internal/Types/UsedTxOuts.purs +++ b/src/Internal/Types/UsedTxOuts.purs @@ -18,6 +18,7 @@ module Ctl.Internal.Types.UsedTxOuts , withLockedTransactionInputs ) where +import Cardano.Types.TransactionHash (TransactionHash) import Control.Alt ((<$>)) import Control.Alternative (guard, pure) import Control.Applicative (unless) @@ -27,7 +28,6 @@ import Control.Monad.Error.Class (class MonadError, catchError, throwError) import Control.Monad.RWS (ask) import Control.Monad.Reader (class MonadAsk) import Ctl.Internal.Cardano.Types.Transaction (Transaction) -import Ctl.Internal.Types.Transaction (TransactionHash) import Data.Array (concatMap) import Data.Foldable (class Foldable, all, foldr) import Data.Function (($)) diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index cd3eb8841..0a6bbbf24 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -7,6 +7,12 @@ module Ctl.Internal.Wallet.Cip30 import Prelude import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Types.Address (Address) +import Cardano.Types.AsCbor (decodeCbor, encodeCbor) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOuput +import Cardano.Types.TransactionUnspentOutput as UnspentOutput +import Cardano.Types.Value as Value import Cardano.Wallet.Cip30 (Api) import Cardano.Wallet.Cip30.TypeSafe (APIError) import Cardano.Wallet.Cip30.TypeSafe as Cip30 @@ -20,24 +26,9 @@ import Ctl.Internal.Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput ) import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value) -import Ctl.Internal.Deserialization.UnspentOutput (convertValue) -import Ctl.Internal.Deserialization.UnspentOutput as Deserialization.UnspentOuput import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.Serialization (convertTransaction) as Serialization -import Ctl.Internal.Serialization.Address - ( Address - , baseAddressBytes - , baseAddressFromAddress - , enterpriseAddressBytes - , enterpriseAddressFromAddress - , pointerAddressBytes - , pointerAddressFromAddress - , rewardAddressBytes - , rewardAddressFromAddress - ) -import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.CborBytes (CborBytes, cborBytesToHex, hexToCborBytes) +import Ctl.Internal.Helpers (liftM, notImplemented) +import Ctl.Internal.Types.CborBytes (CborBytes(..)) import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesToHex) import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Maybe (Maybe(Nothing), maybe) @@ -120,10 +111,6 @@ mkCip30WalletAff connection = do -- Helper functions ------------------------------------------------------------------------------- -txToHex :: Transaction -> Effect String -txToHex = - map (byteArrayToHex <<< toBytes) <<< Serialization.convertTransaction - handleApiError :: forall a. Variant (apiError :: APIError, success :: a) -> Aff a handleApiError = match @@ -163,10 +150,10 @@ getUsedAddresses conn = do } hexStringToAddress :: String -> Maybe Address -hexStringToAddress = map wrap <<< fromBytes <=< hexToByteArray +hexStringToAddress = decodeCbor <=< map wrap <<< hexToByteArray defaultCollateralAmount :: Coin -defaultCollateralAmount = Coin $ BigInt.fromInt 5_000_000 +defaultCollateralAmount = Coin $ BigNum.fromInt 5_000_000 -- | Get collateral using CIP-30 `getCollateral` method. -- | Throws on `Promise` rejection by wallet, returns `Nothing` if no collateral @@ -177,9 +164,10 @@ getCollateral conn = do liftEffect $ for mbUtxoStrs \utxoStrs -> do for utxoStrs \utxoStr -> do liftM (error $ "CIP-30 getCollateral returned bad UTxO: " <> utxoStr) $ - Deserialization.UnspentOuput.convertUnspentOutput - =<< fromBytes - =<< hexToByteArray utxoStr + TransactionUnspentOuput.fromCsl <$> + ( fromBytes + =<< hexToByteArray utxoStr + ) getUtxos :: Api -> Aff (Maybe (Array TransactionUnspentOutput)) getUtxos conn = do @@ -188,8 +176,7 @@ getUtxos conn = do { success: \mbUtxoArray -> do liftEffect $ for mbUtxoArray $ \utxoArray -> for utxoArray \str -> do liftMaybe (error $ "CIP-30 getUtxos returned bad UTxO: " <> str) $ - hexToByteArray str >>= fromBytes >>= - Deserialization.UnspentOuput.convertUnspentOutput + (hexToByteArray str >>= fromBytes) <#> UnspentOutput.fromCsl , paginateError: show >>> throw >>> liftEffect , apiError: show >>> throw >>> liftEffect } @@ -211,6 +198,10 @@ signTx conn tx = do , txSignError: show >>> throw } where + + txToHex :: Transaction -> Effect String + txToHex = notImplemented + -- We have to combine the newly returned witness set with the existing one -- Otherwise, any datums, etc... won't be retained combineWitnessSet :: Transaction -> TransactionWitnessSet -> Transaction @@ -224,49 +215,31 @@ signTx conn tx = do -- | `PointerAddress` and `RewardAddress` signData :: Api -> Address -> RawBytes -> Aff DataSignature signData conn address dat = do - byteAddress <- - liftMaybe - (error "Can't convert Address to base, enterprise, pointer or reward") - (fromBase <|> fromEnterprise <|> fromPointer <|> fromReward) - result <- Cip30.signData conn (cborBytesToHex byteAddress) + -- TODO: forbid byron addresses + let byteAddress = encodeCbor address + result <- Cip30.signData conn (byteArrayToHex $ unwrap byteAddress) (rawBytesToHex dat) liftEffect $ result `flip match` { dataSignError: show >>> throw , apiError: show >>> throw , success: \signedData -> do - key <- liftM byteError $ hexToCborBytes signedData.key - signature <- liftM byteError $ hexToCborBytes signedData.signature - pure { key: key, signature: signature } + key <- liftM byteError $ hexToByteArray signedData.key + signature <- liftM byteError $ hexToByteArray signedData.signature + pure { key: wrap key, signature: wrap signature } } where byteError = error "signData: hexToCborBytes failure" - fromBase :: Maybe CborBytes - fromBase = baseAddressBytes <$> baseAddressFromAddress address - - fromEnterprise :: Maybe CborBytes - fromEnterprise = enterpriseAddressBytes <$> - enterpriseAddressFromAddress address - - fromPointer :: Maybe CborBytes - fromPointer = pointerAddressBytes <$> pointerAddressFromAddress address - - fromReward :: Maybe CborBytes - fromReward = rewardAddressBytes <$> rewardAddressFromAddress address - getBalance :: Api -> Aff Value getBalance conn = do Cip30.getBalance conn >>= handleApiError >>= liftM (error "CIP-30 getUsedAddresses returned non-address") <<< - (hexToByteArray >=> fromBytes >=> convertValue) + (hexToByteArray >=> fromBytes >>> map Value.fromCsl) getCip30Collateral :: Api -> Coin -> Aff (Maybe (Array String)) -getCip30Collateral conn requiredValue = do - bigNumValue <- liftEffect $ maybe (throw convertError) pure - $ BigNum.fromBigInt - $ unwrap requiredValue - let requiredValueStr = byteArrayToHex $ toBytes $ unwrap bigNumValue +getCip30Collateral conn (Coin requiredValue) = do + let requiredValueStr = byteArrayToHex $ toBytes $ unwrap requiredValue (Cip30.getCollateral conn requiredValueStr >>= handleApiError) `catchError` \err -> throwError $ error $ "Failed to call `getCollateral`: " <> show err diff --git a/src/Internal/Wallet/Cip30/SignData.purs b/src/Internal/Wallet/Cip30/SignData.purs index adfbcd2a8..901dba6fd 100644 --- a/src/Internal/Wallet/Cip30/SignData.purs +++ b/src/Internal/Wallet/Cip30/SignData.purs @@ -2,8 +2,8 @@ module Ctl.Internal.Wallet.Cip30.SignData (signData) where import Prelude -import Cardano.Serialization.Lib (toBytes) -import Ctl.Internal.Serialization.Address (Address) +import Cardano.Types.Address (Address) +import Cardano.Types.AsCbor (encodeCbor) import Ctl.Internal.Serialization.Keys ( bytesFromPublicKey , publicKeyFromPrivateKey @@ -13,7 +13,6 @@ import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) import Ctl.Internal.Wallet.Cip30 (DataSignature) import Data.ByteArray (ByteArray) -import Data.Newtype (unwrap, wrap) import Effect (Effect) foreign import data COSESign1Builder :: Type @@ -74,5 +73,5 @@ signData privatePaymentKey address (RawBytes payload) = protectedHeaders = do headerMap <- newHeaderMap setAlgHeaderToEdDsa headerMap - setAddressHeader (wrap $ toBytes $ unwrap address) headerMap + setAddressHeader (encodeCbor address) headerMap pure $ newProtectedHeaderMap headerMap diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 03cef3e23..ce2c3dc52 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -36,10 +36,6 @@ import Ctl.Internal.Serialization.Address import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) import Ctl.Internal.Serialization.WitnessSet (convertWitnessSet) import Ctl.Internal.Types.CborBytes (cborBytesFromByteArray, cborBytesToHex) -import Ctl.Internal.Types.PubKeyHash - ( PubKeyHash(PubKeyHash) - , StakePubKeyHash(StakePubKeyHash) - ) import Ctl.Internal.Types.RewardAddress ( rewardAddressToBytes , stakePubKeyHashRewardAddress diff --git a/src/Lib.js b/src/Lib.js new file mode 100644 index 000000000..7d6022916 --- /dev/null +++ b/src/Lib.js @@ -0,0 +1,883 @@ +"use strict"; + +import * as CSL from "@mlabs-haskell/cardano-serialization-lib-gc"; + +// Pass in a function and its list of arguments, that is expected to fail on evaluation, wraps in Either +function errorableToPurs(f, ...vars) { + try { + return f(...vars) || null; + } + catch (err) { + return null; + } + } + +// Address +export const address_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const address_fromBech32 = bech_str => errorableToPurs(CSL.Address.from_bech32, bech_str); +export const address_networkId = self => self.network_id.bind(self)(); + +// AssetName +export const assetName_new = name => CSL.AssetName.new(name); +export const assetName_name = self => self.name.bind(self)(); + +// AssetNames +export const assetNames_new = () => CSL.AssetNames.new(); + +// Assets +export const assets_new = () => CSL.Assets.new(); + +// AuxiliaryData +export const auxiliaryData_new = () => CSL.AuxiliaryData.new(); +export const auxiliaryData_metadata = self => self.metadata.bind(self)(); +export const auxiliaryData_setMetadata = self => metadata => () => self.set_metadata.bind(self)(metadata); +export const auxiliaryData_nativeScripts = self => self.native_scripts.bind(self)(); +export const auxiliaryData_setNativeScripts = self => native_scripts => () => self.set_native_scripts.bind(self)(native_scripts); +export const auxiliaryData_plutusScripts = self => self.plutus_scripts.bind(self)(); +export const auxiliaryData_setPlutusScripts = self => plutus_scripts => () => self.set_plutus_scripts.bind(self)(plutus_scripts); +export const auxiliaryData_preferAlonzoFormat = self => self.prefer_alonzo_format.bind(self)(); +export const auxiliaryData_setPreferAlonzoFormat = self => prefer => () => self.set_prefer_alonzo_format.bind(self)(prefer); + +// AuxiliaryDataHash +export const auxiliaryDataHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const auxiliaryDataHash_fromBech32 = bech_str => errorableToPurs(CSL.AuxiliaryDataHash.from_bech32, bech_str); + +// BaseAddress +export const baseAddress_new = network => payment => stake => CSL.BaseAddress.new(network, payment, stake); +export const baseAddress_paymentCred = self => self.payment_cred.bind(self)(); +export const baseAddress_stakeCred = self => self.stake_cred.bind(self)(); +export const baseAddress_toAddress = self => self.to_address.bind(self)(); +export const baseAddress_fromAddress = addr => CSL.BaseAddress.from_address(addr); + +// BigInt +export const bigInt_isZero = self => self.is_zero.bind(self)(); +export const bigInt_asU64 = self => self.as_u64.bind(self)(); +export const bigInt_asInt = self => self.as_int.bind(self)(); +export const bigInt_fromStr = text => errorableToPurs(CSL.BigInt.from_str, text); +export const bigInt_toStr = self => self.to_str.bind(self)(); +export const bigInt_mul = self => other => self.mul.bind(self)(other); +export const bigInt_one = CSL.BigInt.one(); +export const bigInt_increment = self => self.increment.bind(self)(); +export const bigInt_divCeil = self => other => self.div_ceil.bind(self)(other); + +// BigNum +export const bigNum_fromStr = string => errorableToPurs(CSL.BigNum.from_str, string); +export const bigNum_toStr = self => self.to_str.bind(self)(); +export const bigNum_zero = CSL.BigNum.zero(); +export const bigNum_one = CSL.BigNum.one(); +export const bigNum_isZero = self => self.is_zero.bind(self)(); +export const bigNum_divFloor = self => other => self.div_floor.bind(self)(other); +export const bigNum_checkedMul = self => other => errorableToPurs(self.checked_mul.bind(self), other); +export const bigNum_checkedAdd = self => other => errorableToPurs(self.checked_add.bind(self), other); +export const bigNum_checkedSub = self => other => errorableToPurs(self.checked_sub.bind(self), other); +export const bigNum_clampedSub = self => other => self.clamped_sub.bind(self)(other); +export const bigNum_compare = self => rhs_value => self.compare.bind(self)(rhs_value); +export const bigNum_lessThan = self => rhs_value => self.less_than.bind(self)(rhs_value); +export const bigNum_maxValue = CSL.BigNum.max_value(); +export const bigNum_max = a => b => CSL.BigNum.max(a, b); + +// Bip32PrivateKey +export const bip32PrivateKey_derive = self => index => self.derive.bind(self)(index); +export const bip32PrivateKey_from128Xprv = bytes => CSL.Bip32PrivateKey.from_128_xprv(bytes); +export const bip32PrivateKey_to128Xprv = self => self.to_128_xprv.bind(self)(); +export const bip32PrivateKey_generateEd25519Bip32 = CSL.Bip32PrivateKey.generate_ed25519_bip32(); +export const bip32PrivateKey_toRawKey = self => self.to_raw_key.bind(self)(); +export const bip32PrivateKey_toPublic = self => self.to_public.bind(self)(); +export const bip32PrivateKey_asBytes = self => self.as_bytes.bind(self)(); +export const bip32PrivateKey_fromBech32 = bech32_str => errorableToPurs(CSL.Bip32PrivateKey.from_bech32, bech32_str); +export const bip32PrivateKey_toBech32 = self => self.to_bech32.bind(self)(); +export const bip32PrivateKey_fromBip39Entropy = entropy => password => CSL.Bip32PrivateKey.from_bip39_entropy(entropy, password); +export const bip32PrivateKey_chaincode = self => self.chaincode.bind(self)(); + +// Bip32PublicKey +export const bip32PublicKey_derive = self => index => self.derive.bind(self)(index); +export const bip32PublicKey_toRawKey = self => self.to_raw_key.bind(self)(); +export const bip32PublicKey_asBytes = self => self.as_bytes.bind(self)(); +export const bip32PublicKey_fromBech32 = bech32_str => errorableToPurs(CSL.Bip32PublicKey.from_bech32, bech32_str); +export const bip32PublicKey_toBech32 = self => self.to_bech32.bind(self)(); +export const bip32PublicKey_chaincode = self => self.chaincode.bind(self)(); + +// BlockHash +export const blockHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const blockHash_fromBech32 = bech_str => errorableToPurs(CSL.BlockHash.from_bech32, bech_str); + +// BootstrapWitness +export const bootstrapWitness_vkey = self => self.vkey.bind(self)(); +export const bootstrapWitness_signature = self => self.signature.bind(self)(); +export const bootstrapWitness_chainCode = self => self.chain_code.bind(self)(); +export const bootstrapWitness_attributes = self => self.attributes.bind(self)(); +export const bootstrapWitness_new = vkey => signature => chain_code => attributes => CSL.BootstrapWitness.new(vkey, signature, chain_code, attributes); + +// BootstrapWitnesses +export const bootstrapWitnesses_new = () => CSL.BootstrapWitnesses.new(); + +// ByronAddress +export const byronAddress_toBase58 = self => self.to_base58.bind(self)(); +export const byronAddress_byronProtocolMagic = self => self.byron_protocol_magic.bind(self)(); +export const byronAddress_attributes = self => self.attributes.bind(self)(); +export const byronAddress_networkId = self => self.network_id.bind(self)(); +export const byronAddress_fromBase58 = s => errorableToPurs(CSL.ByronAddress.from_base58, s); +export const byronAddress_icarusFromKey = key => protocol_magic => CSL.ByronAddress.icarus_from_key(key, protocol_magic); +export const byronAddress_isValid = s => CSL.ByronAddress.is_valid(s); +export const byronAddress_toAddress = self => self.to_address.bind(self)(); +export const byronAddress_fromAddress = addr => CSL.ByronAddress.from_address(addr); + +// Certificate +export const certificate_newStakeRegistration = stake_registration => CSL.Certificate.new_stake_registration(stake_registration); +export const certificate_newStakeDeregistration = stake_deregistration => CSL.Certificate.new_stake_deregistration(stake_deregistration); +export const certificate_newStakeDelegation = stake_delegation => CSL.Certificate.new_stake_delegation(stake_delegation); +export const certificate_newPoolRegistration = pool_registration => CSL.Certificate.new_pool_registration(pool_registration); +export const certificate_newPoolRetirement = pool_retirement => CSL.Certificate.new_pool_retirement(pool_retirement); +export const certificate_newGenesisKeyDelegation = genesis_key_delegation => CSL.Certificate.new_genesis_key_delegation(genesis_key_delegation); +export const certificate_newMoveInstantaneousRewardsCert = move_instantaneous_rewards_cert => CSL.Certificate.new_move_instantaneous_rewards_cert(move_instantaneous_rewards_cert); +export const certificate_kind = self => self.kind.bind(self)(); +export const certificate_asStakeRegistration = self => self.as_stake_registration.bind(self)(); +export const certificate_asStakeDeregistration = self => self.as_stake_deregistration.bind(self)(); +export const certificate_asStakeDelegation = self => self.as_stake_delegation.bind(self)(); +export const certificate_asPoolRegistration = self => self.as_pool_registration.bind(self)(); +export const certificate_asPoolRetirement = self => self.as_pool_retirement.bind(self)(); +export const certificate_asGenesisKeyDelegation = self => self.as_genesis_key_delegation.bind(self)(); +export const certificate_asMoveInstantaneousRewardsCert = self => self.as_move_instantaneous_rewards_cert.bind(self)(); + +// Certificates +export const certificates_new = () => CSL.Certificates.new(); + +// ConstrPlutusData +export const constrPlutusData_alternative = self => self.alternative.bind(self)(); +export const constrPlutusData_data = self => self.data.bind(self)(); +export const constrPlutusData_new = alternative => data => CSL.ConstrPlutusData.new(alternative, data); + +// CostModel +export const costModel_free = self => errorableToPurs(self.free.bind(self), ); +export const costModel_toBytes = self => self.to_bytes.bind(self)(); +export const costModel_fromBytes = bytes => errorableToPurs(CSL.CostModel.from_bytes, bytes); +export const costModel_toHex = self => self.to_hex.bind(self)(); +export const costModel_fromHex = hex_str => errorableToPurs(CSL.CostModel.from_hex, hex_str); +export const costModel_toJson = self => self.to_json.bind(self)(); +export const costModel_fromJson = json => errorableToPurs(CSL.CostModel.from_json, json); +export const costModel_new = () => CSL.CostModel.new(); +export const costModel_set = self => operation => cost => () => self.set.bind(self)(operation, cost); +export const costModel_get = self => operation => () => self.get.bind(self)(operation); +export const costModel_len = self => () => self.len.bind(self)(); + +// Costmdls +export const costmdls_new = () => CSL.Costmdls.new(); +export const costmdls_retainLanguageVersions = self => languages => self.retain_language_versions.bind(self)(languages); + +// DNSRecordAorAAAA +export const dnsRecordAorAAAA_new = dns_name => CSL.DNSRecordAorAAAA.new(dns_name); +export const dnsRecordAorAAAA_record = self => self.record.bind(self)(); + +// DNSRecordSRV +export const dnsRecordSRV_new = dns_name => CSL.DNSRecordSRV.new(dns_name); +export const dnsRecordSRV_record = self => self.record.bind(self)(); + +// DataCost +export const dataCost_newCoinsPerWord = coins_per_word => CSL.DataCost.new_coins_per_word(coins_per_word); +export const dataCost_newCoinsPerByte = coins_per_byte => CSL.DataCost.new_coins_per_byte(coins_per_byte); +export const dataCost_coinsPerByte = self => self.coins_per_byte.bind(self)(); + +// DataHash +export const dataHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const dataHash_fromBech32 = bech_str => errorableToPurs(CSL.DataHash.from_bech32, bech_str); + +// DatumSource +export const datumSource_new = datum => CSL.DatumSource.new(datum); +export const datumSource_newRefInput = input => CSL.DatumSource.new_ref_input(input); + +// Ed25519KeyHash +export const ed25519KeyHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const ed25519KeyHash_fromBech32 = bech_str => errorableToPurs(CSL.Ed25519KeyHash.from_bech32, bech_str); + +// Ed25519KeyHashes +export const ed25519KeyHashes_new = CSL.Ed25519KeyHashes.new(); +export const ed25519KeyHashes_toOption = self => self.to_option.bind(self)(); + +// Ed25519Signature +export const ed25519Signature_toBech32 = self => self.to_bech32.bind(self)(); +export const ed25519Signature_fromBech32 = bech32_str => errorableToPurs(CSL.Ed25519Signature.from_bech32, bech32_str); + +// EnterpriseAddress +export const enterpriseAddress_new = network => payment => CSL.EnterpriseAddress.new(network, payment); +export const enterpriseAddress_paymentCred = self => self.payment_cred.bind(self)(); +export const enterpriseAddress_toAddress = self => self.to_address.bind(self)(); +export const enterpriseAddress_fromAddress = addr => CSL.EnterpriseAddress.from_address(addr); + +// ExUnitPrices +export const exUnitPrices_memPrice = self => self.mem_price.bind(self)(); +export const exUnitPrices_stepPrice = self => self.step_price.bind(self)(); +export const exUnitPrices_new = mem_price => step_price => CSL.ExUnitPrices.new(mem_price, step_price); + +// ExUnits +export const exUnits_mem = self => self.mem.bind(self)(); +export const exUnits_steps = self => self.steps.bind(self)(); +export const exUnits_new = mem => steps => CSL.ExUnits.new(mem, steps); + +// GeneralTransactionMetadata +export const generalTransactionMetadata_new = () => CSL.GeneralTransactionMetadata.new(); + +// GenesisDelegateHash +export const genesisDelegateHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const genesisDelegateHash_fromBech32 = bech_str => errorableToPurs(CSL.GenesisDelegateHash.from_bech32, bech_str); + +// GenesisHash +export const genesisHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const genesisHash_fromBech32 = bech_str => errorableToPurs(CSL.GenesisHash.from_bech32, bech_str); + +// GenesisHashes +export const genesisHashes_new = () => CSL.GenesisHashes.new(); + +// GenesisKeyDelegation +export const genesisKeyDelegation_genesishash = self => self.genesishash.bind(self)(); +export const genesisKeyDelegation_genesisDelegateHash = self => self.genesis_delegate_hash.bind(self)(); +export const genesisKeyDelegation_vrfKeyhash = self => self.vrf_keyhash.bind(self)(); +export const genesisKeyDelegation_new = genesishash => genesis_delegate_hash => vrf_keyhash => CSL.GenesisKeyDelegation.new(genesishash, genesis_delegate_hash, vrf_keyhash); + +// InputWithScriptWitness +export const inputWithScriptWitness_newWithNativeScriptWitness = input => witness => CSL.InputWithScriptWitness.new_with_native_script_witness(input, witness); +export const inputWithScriptWitness_newWithPlutusWitness = input => witness => CSL.InputWithScriptWitness.new_with_plutus_witness(input, witness); +export const inputWithScriptWitness_input = self => self.input.bind(self)(); + +// InputsWithScriptWitness +export const inputsWithScriptWitness_new = CSL.InputsWithScriptWitness.new(); + +// Int +export const int_new = x => CSL.Int.new(x); +export const int_newNegative = x => CSL.Int.new_negative(x); +export const int_newI32 = x => CSL.Int.new_i32(x); +export const int_isPositive = self => self.is_positive.bind(self)(); +export const int_asPositive = self => self.as_positive.bind(self)(); +export const int_asNegative = self => self.as_negative.bind(self)(); +export const int_asI32 = self => self.as_i32.bind(self)(); +export const int_asI32OrNothing = self => self.as_i32_or_nothing.bind(self)(); +export const int_asI32OrFail = self => self.as_i32_or_fail.bind(self)(); +export const int_toStr = self => self.to_str.bind(self)(); +export const int_fromStr = string => errorableToPurs(CSL.Int.from_str, string); + +// Ipv4 +export const ipv4_new = data => CSL.Ipv4.new(data); +export const ipv4_ip = self => self.ip.bind(self)(); + +// Ipv6 +export const ipv6_new = data => CSL.Ipv6.new(data); +export const ipv6_ip = self => self.ip.bind(self)(); + +// KESSignature + +// KESVKey +export const kesvKey_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const kesvKey_fromBech32 = bech_str => errorableToPurs(CSL.KESVKey.from_bech32, bech_str); + +// Language +export const language_newPlutusV1 = CSL.Language.new_plutus_v1(); +export const language_newPlutusV2 = CSL.Language.new_plutus_v2(); +export const language_kind = self => self.kind.bind(self)(); + +// Languages +export const languages_new = () => CSL.Languages.new(); +export const languages_list = CSL.Languages.list(); + +// LegacyDaedalusPrivateKey +export const legacyDaedalusPrivateKey_asBytes = self => self.as_bytes.bind(self)(); +export const legacyDaedalusPrivateKey_chaincode = self => self.chaincode.bind(self)(); + +// LinearFee +export const linearFee_constant = self => self.constant.bind(self)(); +export const linearFee_coefficient = self => self.coefficient.bind(self)(); +export const linearFee_new = coefficient => constant => CSL.LinearFee.new(coefficient, constant); + +// MIRToStakeCredentials +export const mirToStakeCredentials_new = () => CSL.MIRToStakeCredentials.new(); + +// MetadataList +export const metadataList_new = () => CSL.MetadataList.new(); + +// MetadataMap +export const metadataMap_new = () => CSL.MetadataMap.new(); +export const metadataMap_insertStr = self => key => value => () => self.insert_str.bind(self)(key, value); +export const metadataMap_insertI32 = self => key => value => () => self.insert_i32.bind(self)(key, value); +export const metadataMap_getStr = self => key => () => self.get_str.bind(self)(key); +export const metadataMap_getI32 = self => key => () => self.get_i32.bind(self)(key); +export const metadataMap_has = self => key => () => self.has.bind(self)(key); + +// Mint +export const mint_new = () => CSL.Mint.new(); +export const mint_newFromEntry = key => value => () => CSL.Mint.new_from_entry(key, value); +export const mint_getAll = self => key => self.get_all.bind(self)(key); +export const mint_asPositiveMultiasset = self => () => self.as_positive_multiasset.bind(self)(); +export const mint_asNegativeMultiasset = self => () => self.as_negative_multiasset.bind(self)(); + +// MintAssets +export const mintAssets_new = () => CSL.MintAssets.new(); +export const mintAssets_newFromEntry = key => value => CSL.MintAssets.new_from_entry(key, value); + +// MintWitness +export const mintWitness_newNativeScript = native_script => CSL.MintWitness.new_native_script(native_script); +export const mintWitness_newPlutusScript = plutus_script => redeemer => CSL.MintWitness.new_plutus_script(plutus_script, redeemer); + +// MintsAssets + +// MoveInstantaneousReward +export const moveInstantaneousReward_newToOtherPot = pot => amount => CSL.MoveInstantaneousReward.new_to_other_pot(pot, amount); +export const moveInstantaneousReward_newToStakeCreds = pot => amounts => CSL.MoveInstantaneousReward.new_to_stake_creds(pot, amounts); +export const moveInstantaneousReward_pot = self => self.pot.bind(self)(); +export const moveInstantaneousReward_kind = self => self.kind.bind(self)(); +export const moveInstantaneousReward_asToOtherPot = self => self.as_to_other_pot.bind(self)(); +export const moveInstantaneousReward_asToStakeCreds = self => self.as_to_stake_creds.bind(self)(); + +// MoveInstantaneousRewardsCert +export const moveInstantaneousRewardsCert_moveInstantaneousReward = self => self.move_instantaneous_reward.bind(self)(); +export const moveInstantaneousRewardsCert_new = move_instantaneous_reward => CSL.MoveInstantaneousRewardsCert.new(move_instantaneous_reward); + +// MultiAsset +export const multiAsset_new = () => CSL.MultiAsset.new(); +export const multiAsset_setAsset = self => policy_id => asset_name => value => () => self.set_asset.bind(self)(policy_id, asset_name, value); +export const multiAsset_getAsset = self => policy_id => asset_name => () => self.get_asset.bind(self)(policy_id, asset_name); +export const multiAsset_sub = self => rhs_ma => () => self.sub.bind(self)(rhs_ma); + +// MultiHostName +export const multiHostName_dnsName = self => self.dns_name.bind(self)(); +export const multiHostName_new = dns_name => CSL.MultiHostName.new(dns_name); + +// NativeScript +export const nativeScript_hash = self => self.hash.bind(self)(); +export const nativeScript_newScriptPubkey = script_pubkey => CSL.NativeScript.new_script_pubkey(script_pubkey); +export const nativeScript_newScriptAll = script_all => CSL.NativeScript.new_script_all(script_all); +export const nativeScript_newScriptAny = script_any => CSL.NativeScript.new_script_any(script_any); +export const nativeScript_newScriptNOfK = script_n_of_k => CSL.NativeScript.new_script_n_of_k(script_n_of_k); +export const nativeScript_newTimelockStart = timelock_start => CSL.NativeScript.new_timelock_start(timelock_start); +export const nativeScript_newTimelockExpiry = timelock_expiry => CSL.NativeScript.new_timelock_expiry(timelock_expiry); +export const nativeScript_kind = self => self.kind.bind(self)(); +export const nativeScript_asScriptPubkey = self => self.as_script_pubkey.bind(self)(); +export const nativeScript_asScriptAll = self => self.as_script_all.bind(self)(); +export const nativeScript_asScriptAny = self => self.as_script_any.bind(self)(); +export const nativeScript_asScriptNOfK = self => self.as_script_n_of_k.bind(self)(); +export const nativeScript_asTimelockStart = self => self.as_timelock_start.bind(self)(); +export const nativeScript_asTimelockExpiry = self => self.as_timelock_expiry.bind(self)(); +export const nativeScript_getRequiredSigners = self => self.get_required_signers.bind(self)(); + +// NativeScripts +export const nativeScripts_new = () => CSL.NativeScripts.new(); + +// NetworkId +export const networkId_testnet = CSL.NetworkId.testnet(); +export const networkId_mainnet = CSL.NetworkId.mainnet(); +export const networkId_kind = self => self.kind.bind(self)(); + +// NetworkInfo +export const networkInfo_new = network_id => protocol_magic => CSL.NetworkInfo.new(network_id, protocol_magic); +export const networkInfo_networkId = self => self.network_id.bind(self)(); +export const networkInfo_protocolMagic = self => self.protocol_magic.bind(self)(); +export const networkInfo_testnetPreview = CSL.NetworkInfo.testnet_preview(); +export const networkInfo_testnetPreprod = CSL.NetworkInfo.testnet_preprod(); +export const networkInfo_testnet = CSL.NetworkInfo.testnet(); +export const networkInfo_mainnet = CSL.NetworkInfo.mainnet(); + +// Nonce +export const nonce_newIdentity = CSL.Nonce.new_identity(); +export const nonce_newFromHash = hash => CSL.Nonce.new_from_hash(hash); +export const nonce_getHash = self => self.get_hash.bind(self)(); + +// OperationalCert +export const operationalCert_hotVkey = self => self.hot_vkey.bind(self)(); +export const operationalCert_sequenceNumber = self => self.sequence_number.bind(self)(); +export const operationalCert_kesPeriod = self => self.kes_period.bind(self)(); +export const operationalCert_sigma = self => self.sigma.bind(self)(); +export const operationalCert_new = hot_vkey => sequence_number => kes_period => sigma => CSL.OperationalCert.new(hot_vkey, sequence_number, kes_period, sigma); + +// OutputDatum +export const outputDatum_newDataHash = data_hash => CSL.OutputDatum.new_data_hash(data_hash); +export const outputDatum_newData = data => CSL.OutputDatum.new_data(data); +export const outputDatum_dataHash = self => self.data_hash.bind(self)(); +export const outputDatum_data = self => self.data.bind(self)(); + +// PlutusData +export const plutusData_newConstrPlutusData = constr_plutus_data => CSL.PlutusData.new_constr_plutus_data(constr_plutus_data); +export const plutusData_newEmptyConstrPlutusData = alternative => CSL.PlutusData.new_empty_constr_plutus_data(alternative); +export const plutusData_newSingleValueConstrPlutusData = alternative => plutus_data => CSL.PlutusData.new_single_value_constr_plutus_data(alternative, plutus_data); +export const plutusData_newMap = map => CSL.PlutusData.new_map(map); +export const plutusData_newList = list => CSL.PlutusData.new_list(list); +export const plutusData_newInteger = integer => CSL.PlutusData.new_integer(integer); +export const plutusData_newBytes = bytes => CSL.PlutusData.new_bytes(bytes); +export const plutusData_kind = self => self.kind.bind(self)(); +export const plutusData_asConstrPlutusData = self => self.as_constr_plutus_data.bind(self)(); +export const plutusData_asMap = self => self.as_map.bind(self)(); +export const plutusData_asList = self => self.as_list.bind(self)(); +export const plutusData_asInteger = self => self.as_integer.bind(self)(); +export const plutusData_asBytes = self => self.as_bytes.bind(self)(); +export const plutusData_fromAddress = address => CSL.PlutusData.from_address(address); + +// PlutusList +export const plutusList_new = () => CSL.PlutusList.new(); + +// PlutusMap +export const plutusMap_new = () => CSL.PlutusMap.new(); + +// PlutusScript +export const plutusScript_new = bytes => CSL.PlutusScript.new(bytes); +export const plutusScript_newV2 = bytes => CSL.PlutusScript.new_v2(bytes); +export const plutusScript_newWithVersion = bytes => language => CSL.PlutusScript.new_with_version(bytes, language); +export const plutusScript_bytes = self => self.bytes.bind(self)(); +export const plutusScript_fromBytesV2 = bytes => CSL.PlutusScript.from_bytes_v2(bytes); +export const plutusScript_fromBytesWithVersion = bytes => language => CSL.PlutusScript.from_bytes_with_version(bytes, language); +export const plutusScript_fromHexWithVersion = hex_str => language => CSL.PlutusScript.from_hex_with_version(hex_str, language); +export const plutusScript_hash = self => self.hash.bind(self)(); +export const plutusScript_languageVersion = self => self.language_version.bind(self)(); + +// PlutusScriptSource +export const plutusScriptSource_new = script => CSL.PlutusScriptSource.new(script); +export const plutusScriptSource_newRefInput = script_hash => input => CSL.PlutusScriptSource.new_ref_input(script_hash, input); +export const plutusScriptSource_newRefInputWithLangVer = script_hash => input => lang_ver => CSL.PlutusScriptSource.new_ref_input_with_lang_ver(script_hash, input, lang_ver); + +// PlutusScripts +export const plutusScripts_new = () => CSL.PlutusScripts.new(); + +// PlutusWitness +export const plutusWitness_new = script => datum => redeemer => CSL.PlutusWitness.new(script, datum, redeemer); +export const plutusWitness_newWithRef = script => datum => redeemer => CSL.PlutusWitness.new_with_ref(script, datum, redeemer); +export const plutusWitness_newWithoutDatum = script => redeemer => CSL.PlutusWitness.new_without_datum(script, redeemer); +export const plutusWitness_newWithRefWithoutDatum = script => redeemer => CSL.PlutusWitness.new_with_ref_without_datum(script, redeemer); +export const plutusWitness_script = self => self.script.bind(self)(); +export const plutusWitness_datum = self => self.datum.bind(self)(); +export const plutusWitness_redeemer = self => self.redeemer.bind(self)(); + +// PlutusWitnesses +export const plutusWitnesses_new = () => CSL.PlutusWitnesses.new(); + +// Pointer +export const pointer_new = slot => tx_index => cert_index => CSL.Pointer.new(slot, tx_index, cert_index); +export const pointer_newPointer = slot => tx_index => cert_index => CSL.Pointer.new_pointer(slot, tx_index, cert_index); +export const pointer_slot = self => self.slot.bind(self)(); +export const pointer_txIndex = self => self.tx_index.bind(self)(); +export const pointer_certIndex = self => self.cert_index.bind(self)(); +export const pointer_slotBignum = self => self.slot_bignum.bind(self)(); +export const pointer_txIndexBignum = self => self.tx_index_bignum.bind(self)(); +export const pointer_certIndexBignum = self => self.cert_index_bignum.bind(self)(); + +// PointerAddress +export const pointerAddress_new = network => payment => stake => CSL.PointerAddress.new(network, payment, stake); +export const pointerAddress_paymentCred = self => self.payment_cred.bind(self)(); +export const pointerAddress_stakePointer = self => self.stake_pointer.bind(self)(); +export const pointerAddress_toAddress = self => self.to_address.bind(self)(); +export const pointerAddress_fromAddress = addr => CSL.PointerAddress.from_address(addr); + +// PoolMetadata +export const poolMetadata_url = self => self.url.bind(self)(); +export const poolMetadata_poolMetadataHash = self => self.pool_metadata_hash.bind(self)(); +export const poolMetadata_new = url => pool_metadata_hash => CSL.PoolMetadata.new(url, pool_metadata_hash); + +// PoolMetadataHash +export const poolMetadataHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const poolMetadataHash_fromBech32 = bech_str => errorableToPurs(CSL.PoolMetadataHash.from_bech32, bech_str); + +// PoolParams +export const poolParams_operator = self => self.operator.bind(self)(); +export const poolParams_vrfKeyhash = self => self.vrf_keyhash.bind(self)(); +export const poolParams_pledge = self => self.pledge.bind(self)(); +export const poolParams_cost = self => self.cost.bind(self)(); +export const poolParams_margin = self => self.margin.bind(self)(); +export const poolParams_rewardAccount = self => self.reward_account.bind(self)(); +export const poolParams_poolOwners = self => self.pool_owners.bind(self)(); +export const poolParams_relays = self => self.relays.bind(self)(); +export const poolParams_poolMetadata = self => self.pool_metadata.bind(self)(); +export const poolParams_new = operator => vrf_keyhash => pledge => cost => margin => reward_account => pool_owners => relays => pool_metadata => CSL.PoolParams.new(operator, vrf_keyhash, pledge, cost, margin, reward_account, pool_owners, relays, pool_metadata); + +// PoolRegistration +export const poolRegistration_poolParams = self => self.pool_params.bind(self)(); +export const poolRegistration_new = pool_params => CSL.PoolRegistration.new(pool_params); + +// PoolRetirement +export const poolRetirement_poolKeyhash = self => self.pool_keyhash.bind(self)(); +export const poolRetirement_epoch = self => self.epoch.bind(self)(); +export const poolRetirement_new = pool_keyhash => epoch => CSL.PoolRetirement.new(pool_keyhash, epoch); + +// PrivateKey +export const privateKey_free = self => errorableToPurs(self.free.bind(self), ); +export const privateKey_toPublic = self => self.to_public.bind(self)(); +export const privateKey_generateEd25519 = CSL.PrivateKey.generate_ed25519(); +export const privateKey_generateEd25519extended = CSL.PrivateKey.generate_ed25519extended(); +export const privateKey_fromBech32 = bech32_str => errorableToPurs(CSL.PrivateKey.from_bech32, bech32_str); +export const privateKey_toBech32 = self => self.to_bech32.bind(self)(); +export const privateKey_asBytes = self => self.as_bytes.bind(self)(); +export const privateKey_fromExtendedBytes = bytes => errorableToPurs(CSL.PrivateKey.from_extended_bytes, bytes); +export const privateKey_fromNormalBytes = bytes => errorableToPurs(CSL.PrivateKey.from_normal_bytes, bytes); +export const privateKey_sign = self => message => self.sign.bind(self)(message); +export const privateKey_toHex = self => self.to_hex.bind(self)(); +export const privateKey_fromHex = hex_str => errorableToPurs(CSL.PrivateKey.from_hex, hex_str); + +// ProposedProtocolParameterUpdates +export const proposedProtocolParameterUpdates_new = () => CSL.ProposedProtocolParameterUpdates.new(); + +// ProtocolParamUpdate +export const protocolParamUpdate_setMinfeeA = self => minfee_a => () => self.set_minfee_a.bind(self)(minfee_a); +export const protocolParamUpdate_minfeeA = self => self.minfee_a.bind(self)(); +export const protocolParamUpdate_setMinfeeB = self => minfee_b => () => self.set_minfee_b.bind(self)(minfee_b); +export const protocolParamUpdate_minfeeB = self => self.minfee_b.bind(self)(); +export const protocolParamUpdate_setMaxBlockBodySize = self => max_block_body_size => () => self.set_max_block_body_size.bind(self)(max_block_body_size); +export const protocolParamUpdate_maxBlockBodySize = self => self.max_block_body_size.bind(self)(); +export const protocolParamUpdate_setMaxTxSize = self => max_tx_size => () => self.set_max_tx_size.bind(self)(max_tx_size); +export const protocolParamUpdate_maxTxSize = self => self.max_tx_size.bind(self)(); +export const protocolParamUpdate_setMaxBlockHeaderSize = self => max_block_header_size => () => self.set_max_block_header_size.bind(self)(max_block_header_size); +export const protocolParamUpdate_maxBlockHeaderSize = self => self.max_block_header_size.bind(self)(); +export const protocolParamUpdate_setKeyDeposit = self => key_deposit => () => self.set_key_deposit.bind(self)(key_deposit); +export const protocolParamUpdate_keyDeposit = self => self.key_deposit.bind(self)(); +export const protocolParamUpdate_setPoolDeposit = self => pool_deposit => () => self.set_pool_deposit.bind(self)(pool_deposit); +export const protocolParamUpdate_poolDeposit = self => self.pool_deposit.bind(self)(); +export const protocolParamUpdate_setMaxEpoch = self => max_epoch => () => self.set_max_epoch.bind(self)(max_epoch); +export const protocolParamUpdate_maxEpoch = self => self.max_epoch.bind(self)(); +export const protocolParamUpdate_setNOpt = self => n_opt => () => self.set_n_opt.bind(self)(n_opt); +export const protocolParamUpdate_nOpt = self => self.n_opt.bind(self)(); +export const protocolParamUpdate_setPoolPledgeInfluence = self => pool_pledge_influence => () => self.set_pool_pledge_influence.bind(self)(pool_pledge_influence); +export const protocolParamUpdate_poolPledgeInfluence = self => self.pool_pledge_influence.bind(self)(); +export const protocolParamUpdate_setExpansionRate = self => expansion_rate => () => self.set_expansion_rate.bind(self)(expansion_rate); +export const protocolParamUpdate_expansionRate = self => self.expansion_rate.bind(self)(); +export const protocolParamUpdate_setTreasuryGrowthRate = self => treasury_growth_rate => () => self.set_treasury_growth_rate.bind(self)(treasury_growth_rate); +export const protocolParamUpdate_treasuryGrowthRate = self => self.treasury_growth_rate.bind(self)(); +export const protocolParamUpdate_d = self => self.d.bind(self)(); +export const protocolParamUpdate_extraEntropy = self => self.extra_entropy.bind(self)(); +export const protocolParamUpdate_setProtocolVersion = self => protocol_version => () => self.set_protocol_version.bind(self)(protocol_version); +export const protocolParamUpdate_protocolVersion = self => self.protocol_version.bind(self)(); +export const protocolParamUpdate_setMinPoolCost = self => min_pool_cost => () => self.set_min_pool_cost.bind(self)(min_pool_cost); +export const protocolParamUpdate_minPoolCost = self => self.min_pool_cost.bind(self)(); +export const protocolParamUpdate_setAdaPerUtxoByte = self => ada_per_utxo_byte => () => self.set_ada_per_utxo_byte.bind(self)(ada_per_utxo_byte); +export const protocolParamUpdate_adaPerUtxoByte = self => self.ada_per_utxo_byte.bind(self)(); +export const protocolParamUpdate_setCostModels = self => cost_models => () => self.set_cost_models.bind(self)(cost_models); +export const protocolParamUpdate_costModels = self => self.cost_models.bind(self)(); +export const protocolParamUpdate_setExecutionCosts = self => execution_costs => () => self.set_execution_costs.bind(self)(execution_costs); +export const protocolParamUpdate_executionCosts = self => self.execution_costs.bind(self)(); +export const protocolParamUpdate_setMaxTxExUnits = self => max_tx_ex_units => () => self.set_max_tx_ex_units.bind(self)(max_tx_ex_units); +export const protocolParamUpdate_maxTxExUnits = self => self.max_tx_ex_units.bind(self)(); +export const protocolParamUpdate_setMaxBlockExUnits = self => max_block_ex_units => () => self.set_max_block_ex_units.bind(self)(max_block_ex_units); +export const protocolParamUpdate_maxBlockExUnits = self => self.max_block_ex_units.bind(self)(); +export const protocolParamUpdate_setMaxValueSize = self => max_value_size => () => self.set_max_value_size.bind(self)(max_value_size); +export const protocolParamUpdate_maxValueSize = self => self.max_value_size.bind(self)(); +export const protocolParamUpdate_setCollateralPercentage = self => collateral_percentage => () => self.set_collateral_percentage.bind(self)(collateral_percentage); +export const protocolParamUpdate_collateralPercentage = self => self.collateral_percentage.bind(self)(); +export const protocolParamUpdate_setMaxCollateralInputs = self => max_collateral_inputs => () => self.set_max_collateral_inputs.bind(self)(max_collateral_inputs); +export const protocolParamUpdate_maxCollateralInputs = self => self.max_collateral_inputs.bind(self)(); +export const protocolParamUpdate_new = CSL.ProtocolParamUpdate.new(); + +// ProtocolVersion +export const protocolVersion_major = self => self.major.bind(self)(); +export const protocolVersion_minor = self => self.minor.bind(self)(); +export const protocolVersion_new = major => minor => CSL.ProtocolVersion.new(major, minor); + +// PublicKey +export const publicKey_free = self => errorableToPurs(self.free.bind(self), ); +export const publicKey_fromBech32 = bech32_str => errorableToPurs(CSL.PublicKey.from_bech32, bech32_str); +export const publicKey_toBech32 = self => self.to_bech32.bind(self)(); +export const publicKey_asBytes = self => self.as_bytes.bind(self)(); +export const publicKey_fromBytes = bytes => errorableToPurs(CSL.PublicKey.from_bytes, bytes); +export const publicKey_verify = self => data => signature => self.verify.bind(self)(data, signature); +export const publicKey_hash = self => self.hash.bind(self)(); +export const publicKey_toHex = self => self.to_hex.bind(self)(); +export const publicKey_fromHex = hex_str => errorableToPurs(CSL.PublicKey.from_hex, hex_str); + +// Redeemer +export const redeemer_tag = self => self.tag.bind(self)(); +export const redeemer_index = self => self.index.bind(self)(); +export const redeemer_data = self => self.data.bind(self)(); +export const redeemer_exUnits = self => self.ex_units.bind(self)(); +export const redeemer_new = tag => index => data => ex_units => CSL.Redeemer.new(tag, index, data, ex_units); + +// RedeemerTag +export const redeemerTag_newSpend = CSL.RedeemerTag.new_spend(); +export const redeemerTag_newMint = CSL.RedeemerTag.new_mint(); +export const redeemerTag_newCert = CSL.RedeemerTag.new_cert(); +export const redeemerTag_newReward = CSL.RedeemerTag.new_reward(); +export const redeemerTag_kind = self => self.kind.bind(self)(); + +// Redeemers +export const redeemers_new = () => CSL.Redeemers.new(); +export const redeemers_totalExUnits = self => self.total_ex_units.bind(self)(); + +// Relay +export const relay_newSingleHostAddr = single_host_addr => CSL.Relay.new_single_host_addr(single_host_addr); +export const relay_newSingleHostName = single_host_name => CSL.Relay.new_single_host_name(single_host_name); +export const relay_newMultiHostName = multi_host_name => CSL.Relay.new_multi_host_name(multi_host_name); +export const relay_kind = self => self.kind.bind(self)(); +export const relay_asSingleHostAddr = self => self.as_single_host_addr.bind(self)(); +export const relay_asSingleHostName = self => self.as_single_host_name.bind(self)(); +export const relay_asMultiHostName = self => self.as_multi_host_name.bind(self)(); + +// Relays +export const relays_new = () => CSL.Relays.new(); + +// RewardAddress +export const rewardAddress_new = network => payment => CSL.RewardAddress.new(network, payment); +export const rewardAddress_paymentCred = self => self.payment_cred.bind(self)(); +export const rewardAddress_toAddress = self => self.to_address.bind(self)(); +export const rewardAddress_fromAddress = addr => CSL.RewardAddress.from_address(addr); + +// RewardAddresses +export const rewardAddresses_new = () => CSL.RewardAddresses.new(); + +// ScriptAll +export const scriptAll_nativeScripts = self => self.native_scripts.bind(self)(); +export const scriptAll_new = native_scripts => CSL.ScriptAll.new(native_scripts); + +// ScriptAny +export const scriptAny_nativeScripts = self => self.native_scripts.bind(self)(); +export const scriptAny_new = native_scripts => CSL.ScriptAny.new(native_scripts); + +// ScriptDataHash +export const scriptDataHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const scriptDataHash_fromBech32 = bech_str => errorableToPurs(CSL.ScriptDataHash.from_bech32, bech_str); + +// ScriptHash +export const scriptHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const scriptHash_fromBech32 = bech_str => errorableToPurs(CSL.ScriptHash.from_bech32, bech_str); + +// ScriptHashes +export const scriptHashes_new = () => CSL.ScriptHashes.new(); + +// ScriptNOfK +export const scriptNOfK_n = self => self.n.bind(self)(); +export const scriptNOfK_nativeScripts = self => self.native_scripts.bind(self)(); +export const scriptNOfK_new = n => native_scripts => CSL.ScriptNOfK.new(n, native_scripts); + +// ScriptPubkey +export const scriptPubkey_addrKeyhash = self => self.addr_keyhash.bind(self)(); +export const scriptPubkey_new = addr_keyhash => CSL.ScriptPubkey.new(addr_keyhash); + +// ScriptRef +export const scriptRef_newNativeScript = native_script => CSL.ScriptRef.new_native_script(native_script); +export const scriptRef_newPlutusScript = plutus_script => CSL.ScriptRef.new_plutus_script(plutus_script); +export const scriptRef_isNativeScript = self => self.is_native_script.bind(self)(); +export const scriptRef_isPlutusScript = self => self.is_plutus_script.bind(self)(); +export const scriptRef_nativeScript = self => self.native_script.bind(self)(); +export const scriptRef_plutusScript = self => self.plutus_script.bind(self)(); + +// SingleHostAddr +export const singleHostAddr_port = self => self.port.bind(self)(); +export const singleHostAddr_ipv4 = self => self.ipv4.bind(self)(); +export const singleHostAddr_ipv6 = self => self.ipv6.bind(self)(); +export const singleHostAddr_new = port => ipv4 => ipv6 => CSL.SingleHostAddr.new(port, ipv4, ipv6); + +// SingleHostName +export const singleHostName_port = self => self.port.bind(self)(); +export const singleHostName_dnsName = self => self.dns_name.bind(self)(); +export const singleHostName_new = port => dns_name => CSL.SingleHostName.new(port, dns_name); + +// StakeCredential +export const stakeCredential_fromKeyhash = hash => CSL.StakeCredential.from_keyhash(hash); +export const stakeCredential_fromScripthash = hash => CSL.StakeCredential.from_scripthash(hash); +export const stakeCredential_toKeyhash = self => self.to_keyhash.bind(self)(); +export const stakeCredential_toScripthash = self => self.to_scripthash.bind(self)(); +export const stakeCredential_kind = self => self.kind.bind(self)(); + +// StakeCredentials +export const stakeCredentials_new = () => CSL.StakeCredentials.new(); + +// StakeDelegation +export const stakeDelegation_stakeCredential = self => self.stake_credential.bind(self)(); +export const stakeDelegation_poolKeyhash = self => self.pool_keyhash.bind(self)(); +export const stakeDelegation_new = stake_credential => pool_keyhash => CSL.StakeDelegation.new(stake_credential, pool_keyhash); + +// StakeDeregistration +export const stakeDeregistration_stakeCredential = self => self.stake_credential.bind(self)(); +export const stakeDeregistration_new = stake_credential => CSL.StakeDeregistration.new(stake_credential); + +// StakeRegistration +export const stakeRegistration_stakeCredential = self => self.stake_credential.bind(self)(); +export const stakeRegistration_new = stake_credential => CSL.StakeRegistration.new(stake_credential); + +// TimelockExpiry +export const timelockExpiry_slot = self => self.slot.bind(self)(); +export const timelockExpiry_slotBignum = self => self.slot_bignum.bind(self)(); +export const timelockExpiry_new = slot => CSL.TimelockExpiry.new(slot); +export const timelockExpiry_newTimelockexpiry = slot => CSL.TimelockExpiry.new_timelockexpiry(slot); + +// TimelockStart +export const timelockStart_slot = self => self.slot.bind(self)(); +export const timelockStart_slotBignum = self => self.slot_bignum.bind(self)(); +export const timelockStart_new = slot => CSL.TimelockStart.new(slot); +export const timelockStart_newTimelockstart = slot => CSL.TimelockStart.new_timelockstart(slot); + +// Transaction +export const transaction_body = self => self.body.bind(self)(); +export const transaction_witnessSet = self => self.witness_set.bind(self)(); +export const transaction_isValid = self => self.is_valid.bind(self)(); +export const transaction_auxiliaryData = self => self.auxiliary_data.bind(self)(); +export const transaction_setIsValid = self => valid => () => self.set_is_valid.bind(self)(valid); +export const transaction_new = body => witness_set => auxiliary_data => CSL.Transaction.new(body, witness_set, auxiliary_data); + +// TransactionBatch + +// TransactionBatchList + +// TransactionBody +export const transactionBody_inputs = self => self.inputs.bind(self)(); +export const transactionBody_outputs = self => self.outputs.bind(self)(); +export const transactionBody_fee = self => self.fee.bind(self)(); +export const transactionBody_ttl = self => self.ttl.bind(self)(); +export const transactionBody_ttlBignum = self => self.ttl_bignum.bind(self)(); +export const transactionBody_setTtl = self => ttl => () => self.set_ttl.bind(self)(ttl); +export const transactionBody_removeTtl = self => errorableToPurs(self.remove_ttl.bind(self), ); +export const transactionBody_setCerts = self => certs => () => self.set_certs.bind(self)(certs); +export const transactionBody_certs = self => self.certs.bind(self)(); +export const transactionBody_setWithdrawals = self => withdrawals => () => self.set_withdrawals.bind(self)(withdrawals); +export const transactionBody_withdrawals = self => self.withdrawals.bind(self)(); +export const transactionBody_setUpdate = self => update => () => self.set_update.bind(self)(update); +export const transactionBody_update = self => self.update.bind(self)(); +export const transactionBody_setAuxiliaryDataHash = self => auxiliary_data_hash => () => self.set_auxiliary_data_hash.bind(self)(auxiliary_data_hash); +export const transactionBody_auxiliaryDataHash = self => self.auxiliary_data_hash.bind(self)(); +export const transactionBody_setValidityStartInterval = self => validity_start_interval => () => self.set_validity_start_interval.bind(self)(validity_start_interval); +export const transactionBody_setValidityStartIntervalBignum = self => validity_start_interval => () => self.set_validity_start_interval_bignum.bind(self)(validity_start_interval); +export const transactionBody_validityStartIntervalBignum = self => self.validity_start_interval_bignum.bind(self)(); +export const transactionBody_validityStartInterval = self => self.validity_start_interval.bind(self)(); +export const transactionBody_setMint = self => mint => () => self.set_mint.bind(self)(mint); +export const transactionBody_mint = self => self.mint.bind(self)(); +export const transactionBody_multiassets = self => self.multiassets.bind(self)(); +export const transactionBody_setReferenceInputs = self => reference_inputs => () => self.set_reference_inputs.bind(self)(reference_inputs); +export const transactionBody_referenceInputs = self => self.reference_inputs.bind(self)(); +export const transactionBody_setScriptDataHash = self => script_data_hash => () => self.set_script_data_hash.bind(self)(script_data_hash); +export const transactionBody_scriptDataHash = self => self.script_data_hash.bind(self)(); +export const transactionBody_setCollateral = self => collateral => () => self.set_collateral.bind(self)(collateral); +export const transactionBody_collateral = self => self.collateral.bind(self)(); +export const transactionBody_setRequiredSigners = self => required_signers => () => self.set_required_signers.bind(self)(required_signers); +export const transactionBody_requiredSigners = self => self.required_signers.bind(self)(); +export const transactionBody_setNetworkId = self => network_id => () => self.set_network_id.bind(self)(network_id); +export const transactionBody_networkId = self => self.network_id.bind(self)(); +export const transactionBody_setCollateralReturn = self => collateral_return => () => self.set_collateral_return.bind(self)(collateral_return); +export const transactionBody_collateralReturn = self => self.collateral_return.bind(self)(); +export const transactionBody_setTotalCollateral = self => total_collateral => () => self.set_total_collateral.bind(self)(total_collateral); +export const transactionBody_totalCollateral = self => self.total_collateral.bind(self)(); +export const transactionBody_new = inputs => outputs => fee => ttl => CSL.TransactionBody.new(inputs, outputs, fee, ttl); +export const transactionBody_newTxBody = inputs => outputs => fee => CSL.TransactionBody.new_tx_body(inputs, outputs, fee); + +// TransactionHash +export const transactionHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const transactionHash_fromBech32 = bech_str => errorableToPurs(CSL.TransactionHash.from_bech32, bech_str); + +// TransactionInput +export const transactionInput_transactionId = self => self.transaction_id.bind(self)(); +export const transactionInput_index = self => self.index.bind(self)(); +export const transactionInput_new = transaction_id => index => CSL.TransactionInput.new(transaction_id, index); + +// TransactionInputs +export const transactionInputs_new = () => CSL.TransactionInputs.new(); +export const transactionInputs_toOption = self => self.to_option.bind(self)(); + +// TransactionMetadatum +export const transactionMetadatum_newMap = map => CSL.TransactionMetadatum.new_map(map); +export const transactionMetadatum_newList = list => CSL.TransactionMetadatum.new_list(list); +export const transactionMetadatum_newInt = int => CSL.TransactionMetadatum.new_int(int); +export const transactionMetadatum_newBytes = bytes => CSL.TransactionMetadatum.new_bytes(bytes); +export const transactionMetadatum_newText = text => CSL.TransactionMetadatum.new_text(text); +export const transactionMetadatum_kind = self => self.kind.bind(self)(); +export const transactionMetadatum_asMap = self => errorableToPurs(self.as_map.bind(self), ); +export const transactionMetadatum_asList = self => errorableToPurs(self.as_list.bind(self), ); +export const transactionMetadatum_asInt = self => errorableToPurs(self.as_int.bind(self), ); +export const transactionMetadatum_asBytes = self => errorableToPurs(self.as_bytes.bind(self), ); +export const transactionMetadatum_asText = self => errorableToPurs(self.as_text.bind(self), ); + +// TransactionMetadatumLabels +export const transactionMetadatumLabels_new = () => CSL.TransactionMetadatumLabels.new(); + +// TransactionOutput +export const transactionOutput_address = self => self.address.bind(self)(); +export const transactionOutput_amount = self => self.amount.bind(self)(); +export const transactionOutput_dataHash = self => self.data_hash.bind(self)(); +export const transactionOutput_plutusData = self => self.plutus_data.bind(self)(); +export const transactionOutput_scriptRef = self => self.script_ref.bind(self)(); +export const transactionOutput_setScriptRef = self => script_ref => () => self.set_script_ref.bind(self)(script_ref); +export const transactionOutput_setPlutusData = self => data => () => self.set_plutus_data.bind(self)(data); +export const transactionOutput_setDataHash = self => data_hash => () => self.set_data_hash.bind(self)(data_hash); +export const transactionOutput_hasPlutusData = self => self.has_plutus_data.bind(self)(); +export const transactionOutput_hasDataHash = self => self.has_data_hash.bind(self)(); +export const transactionOutput_hasScriptRef = self => self.has_script_ref.bind(self)(); +export const transactionOutput_new = address => amount => CSL.TransactionOutput.new(address, amount); +export const transactionOutput_serializationFormat = self => self.serialization_format.bind(self)(); + +// TransactionOutputs +export const transactionOutputs_new = () => CSL.TransactionOutputs.new(); + +// TransactionUnspentOutput +export const transactionUnspentOutput_new = input => output => CSL.TransactionUnspentOutput.new(input, output); +export const transactionUnspentOutput_input = self => self.input.bind(self)(); +export const transactionUnspentOutput_output = self => self.output.bind(self)(); + +// TransactionUnspentOutputs +export const transactionUnspentOutputs_new = () => CSL.TransactionUnspentOutputs.new(); + +// TransactionWitnessSet +export const transactionWitnessSet_setVkeys = self => vkeys => () => self.set_vkeys.bind(self)(vkeys); +export const transactionWitnessSet_vkeys = self => () => self.vkeys.bind(self)(); +export const transactionWitnessSet_setNativeScripts = self => native_scripts => () => self.set_native_scripts.bind(self)(native_scripts); +export const transactionWitnessSet_nativeScripts = self => () => self.native_scripts.bind(self)(); +export const transactionWitnessSet_setBootstraps = self => bootstraps => () => self.set_bootstraps.bind(self)(bootstraps); +export const transactionWitnessSet_bootstraps = self => () => self.bootstraps.bind(self)(); +export const transactionWitnessSet_setPlutusScripts = self => plutus_scripts => () => self.set_plutus_scripts.bind(self)(plutus_scripts); +export const transactionWitnessSet_plutusScripts = self => () => self.plutus_scripts.bind(self)(); +export const transactionWitnessSet_setPlutusData = self => plutus_data => () => self.set_plutus_data.bind(self)(plutus_data); +export const transactionWitnessSet_plutusData = self => () => self.plutus_data.bind(self)(); +export const transactionWitnessSet_setRedeemers = self => redeemers => () => self.set_redeemers.bind(self)(redeemers); +export const transactionWitnessSet_redeemers = self => () => self.redeemers.bind(self)(); +export const transactionWitnessSet_new = () => CSL.TransactionWitnessSet.new(); + +// URL +export const url_new = url => CSL.URL.new(url); +export const url_url = self => self.url.bind(self)(); + +// UnitInterval +export const unitInterval_numerator = self => self.numerator.bind(self)(); +export const unitInterval_denominator = self => self.denominator.bind(self)(); +export const unitInterval_new = numerator => denominator => CSL.UnitInterval.new(numerator, denominator); + +// Update +export const update_proposedProtocolParameterUpdates = self => self.proposed_protocol_parameter_updates.bind(self)(); +export const update_epoch = self => self.epoch.bind(self)(); +export const update_new = proposed_protocol_parameter_updates => epoch => CSL.Update.new(proposed_protocol_parameter_updates, epoch); + +// VRFCert +export const vrfCert_output = self => self.output.bind(self)(); +export const vrfCert_proof = self => self.proof.bind(self)(); +export const vrfCert_new = output => proof => CSL.VRFCert.new(output, proof); + +// VRFKeyHash +export const vrfKeyHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const vrfKeyHash_fromBech32 = bech_str => errorableToPurs(CSL.VRFKeyHash.from_bech32, bech_str); + +// VRFVKey +export const vrfvKey_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); +export const vrfvKey_fromBech32 = bech_str => errorableToPurs(CSL.VRFVKey.from_bech32, bech_str); + +// Value +export const value_new = coin => CSL.Value.new(coin); +export const value_newFromAssets = multiasset => CSL.Value.new_from_assets(multiasset); +export const value_newWithAssets = coin => multiasset => CSL.Value.new_with_assets(coin, multiasset); +export const value_zero = CSL.Value.zero(); +export const value_isZero = self => self.is_zero.bind(self)(); +export const value_coin = self => self.coin.bind(self)(); +export const value_setCoin = self => coin => () => self.set_coin.bind(self)(coin); +export const value_multiasset = self => self.multiasset.bind(self)(); +export const value_setMultiasset = self => multiasset => () => self.set_multiasset.bind(self)(multiasset); +export const value_checkedAdd = self => rhs => errorableToPurs(self.checked_add.bind(self), rhs); +export const value_checkedSub = self => rhs_value => errorableToPurs(self.checked_sub.bind(self), rhs_value); +export const value_clampedSub = self => rhs_value => self.clamped_sub.bind(self)(rhs_value); +export const value_compare = self => rhs_value => self.compare.bind(self)(rhs_value); + +// Vkey +export const vkey_new = pk => CSL.Vkey.new(pk); +export const vkey_publicKey = self => self.public_key.bind(self)(); + +// Vkeys +export const vkeys_new = () => CSL.Vkeys.new(); + +// Vkeywitness +export const vkeywitness_new = vkey => signature => CSL.Vkeywitness.new(vkey, signature); +export const vkeywitness_vkey = self => self.vkey.bind(self)(); +export const vkeywitness_signature = self => self.signature.bind(self)(); + +// Vkeywitnesses +export const vkeywitnesses_new = () => CSL.Vkeywitnesses.new(); + +// Withdrawals +export const withdrawals_new = () => CSL.Withdrawals.new(); + + +export const hashTransaction = tx_body => CSL.hash_transaction(tx_body); +export const hashPlutusData = plutus_data => CSL.hash_plutus_data(plutus_data); +export const minAdaForOutput = output => data_cost => CSL.min_ada_for_output(output, data_cost); + diff --git a/src/Lib.purs b/src/Lib.purs new file mode 100644 index 000000000..132936504 --- /dev/null +++ b/src/Lib.purs @@ -0,0 +1,3185 @@ +module Cardano.Serialization.Lib + ( ForeignErrorable + , module X + , address_toBech32 + , address_fromBech32 + , address_networkId + , assetName_new + , assetName_name + , assetNames_new + , assets_new + , auxiliaryData_new + , auxiliaryData_metadata + , auxiliaryData_setMetadata + , auxiliaryData_nativeScripts + , auxiliaryData_setNativeScripts + , auxiliaryData_plutusScripts + , auxiliaryData_setPlutusScripts + , auxiliaryData_preferAlonzoFormat + , auxiliaryData_setPreferAlonzoFormat + , auxiliaryDataHash_toBech32 + , auxiliaryDataHash_fromBech32 + , baseAddress_new + , baseAddress_paymentCred + , baseAddress_stakeCred + , baseAddress_toAddress + , baseAddress_fromAddress + , bigInt_isZero + , bigInt_asU64 + , bigInt_asInt + , bigInt_fromStr + , bigInt_toStr + , bigInt_mul + , bigInt_one + , bigInt_increment + , bigInt_divCeil + , bigNum_fromStr + , bigNum_toStr + , bigNum_zero + , bigNum_one + , bigNum_isZero + , bigNum_divFloor + , bigNum_checkedMul + , bigNum_checkedAdd + , bigNum_checkedSub + , bigNum_clampedSub + , bigNum_compare + , bigNum_lessThan + , bigNum_maxValue + , bigNum_max + , bip32PrivateKey_derive + , bip32PrivateKey_from128Xprv + , bip32PrivateKey_to128Xprv + , bip32PrivateKey_generateEd25519Bip32 + , bip32PrivateKey_toRawKey + , bip32PrivateKey_toPublic + , bip32PrivateKey_asBytes + , bip32PrivateKey_fromBech32 + , bip32PrivateKey_toBech32 + , bip32PrivateKey_fromBip39Entropy + , bip32PrivateKey_chaincode + , bip32PublicKey_derive + , bip32PublicKey_toRawKey + , bip32PublicKey_asBytes + , bip32PublicKey_fromBech32 + , bip32PublicKey_toBech32 + , bip32PublicKey_chaincode + , blockHash_toBech32 + , blockHash_fromBech32 + , bootstrapWitness_vkey + , bootstrapWitness_signature + , bootstrapWitness_chainCode + , bootstrapWitness_attributes + , bootstrapWitness_new + , bootstrapWitnesses_new + , byronAddress_toBase58 + , byronAddress_byronProtocolMagic + , byronAddress_attributes + , byronAddress_networkId + , byronAddress_fromBase58 + , byronAddress_icarusFromKey + , byronAddress_isValid + , byronAddress_toAddress + , byronAddress_fromAddress + , certificate_newStakeRegistration + , certificate_newStakeDeregistration + , certificate_newStakeDelegation + , certificate_newPoolRegistration + , certificate_newPoolRetirement + , certificate_newGenesisKeyDelegation + , certificate_newMoveInstantaneousRewardsCert + , certificate_kind + , certificate_asStakeRegistration + , certificate_asStakeDeregistration + , certificate_asStakeDelegation + , certificate_asPoolRegistration + , certificate_asPoolRetirement + , certificate_asGenesisKeyDelegation + , certificate_asMoveInstantaneousRewardsCert + , certificates_new + , constrPlutusData_alternative + , constrPlutusData_data + , constrPlutusData_new + , costModel_free + , costModel_toBytes + , costModel_fromBytes + , costModel_toHex + , costModel_fromHex + , costModel_toJson + , costModel_fromJson + , costModel_new + , costModel_set + , costModel_get + , costModel_len + , costmdls_new + , costmdls_retainLanguageVersions + , dnsRecordAorAAAA_new + , dnsRecordAorAAAA_record + , dnsRecordSRV_new + , dnsRecordSRV_record + , dataCost_newCoinsPerWord + , dataCost_newCoinsPerByte + , dataCost_coinsPerByte + , dataHash_toBech32 + , dataHash_fromBech32 + , datumSource_new + , datumSource_newRefInput + , ed25519KeyHash_toBech32 + , ed25519KeyHash_fromBech32 + , ed25519KeyHashes_new + , ed25519KeyHashes_toOption + , ed25519Signature_toBech32 + , ed25519Signature_fromBech32 + , enterpriseAddress_new + , enterpriseAddress_paymentCred + , enterpriseAddress_toAddress + , enterpriseAddress_fromAddress + , exUnitPrices_memPrice + , exUnitPrices_stepPrice + , exUnitPrices_new + , exUnits_mem + , exUnits_steps + , exUnits_new + , generalTransactionMetadata_new + , genesisDelegateHash_toBech32 + , genesisDelegateHash_fromBech32 + , genesisHash_toBech32 + , genesisHash_fromBech32 + , genesisHashes_new + , genesisKeyDelegation_genesishash + , genesisKeyDelegation_genesisDelegateHash + , genesisKeyDelegation_vrfKeyhash + , genesisKeyDelegation_new + , inputWithScriptWitness_newWithNativeScriptWitness + , inputWithScriptWitness_newWithPlutusWitness + , inputWithScriptWitness_input + , inputsWithScriptWitness_new + , int_new + , int_newNegative + , int_newI32 + , int_isPositive + , int_asPositive + , int_asNegative + , int_asI32 + , int_asI32OrNothing + , int_asI32OrFail + , int_toStr + , int_fromStr + , ipv4_new + , ipv4_ip + , ipv6_new + , ipv6_ip + , kesvKey_toBech32 + , kesvKey_fromBech32 + , language_newPlutusV1 + , language_newPlutusV2 + , language_kind + , languages_new + , languages_list + , legacyDaedalusPrivateKey_asBytes + , legacyDaedalusPrivateKey_chaincode + , linearFee_constant + , linearFee_coefficient + , linearFee_new + , mirToStakeCredentials_new + , metadataList_new + , metadataMap_new + , metadataMap_insertStr + , metadataMap_insertI32 + , metadataMap_getStr + , metadataMap_getI32 + , metadataMap_has + , mint_new + , mint_newFromEntry + , mint_getAll + , mint_asPositiveMultiasset + , mint_asNegativeMultiasset + , mintAssets_new + , mintAssets_newFromEntry + , mintWitness_newNativeScript + , mintWitness_newPlutusScript + , moveInstantaneousReward_newToOtherPot + , moveInstantaneousReward_newToStakeCreds + , moveInstantaneousReward_pot + , moveInstantaneousReward_kind + , moveInstantaneousReward_asToOtherPot + , moveInstantaneousReward_asToStakeCreds + , moveInstantaneousRewardsCert_moveInstantaneousReward + , moveInstantaneousRewardsCert_new + , multiAsset_new + , multiAsset_setAsset + , multiAsset_getAsset + , multiAsset_sub + , multiHostName_dnsName + , multiHostName_new + , nativeScript_hash + , nativeScript_newScriptPubkey + , nativeScript_newScriptAll + , nativeScript_newScriptAny + , nativeScript_newScriptNOfK + , nativeScript_newTimelockStart + , nativeScript_newTimelockExpiry + , nativeScript_kind + , nativeScript_asScriptPubkey + , nativeScript_asScriptAll + , nativeScript_asScriptAny + , nativeScript_asScriptNOfK + , nativeScript_asTimelockStart + , nativeScript_asTimelockExpiry + , nativeScript_getRequiredSigners + , nativeScripts_new + , networkId_testnet + , networkId_mainnet + , networkId_kind + , networkInfo_new + , networkInfo_networkId + , networkInfo_protocolMagic + , networkInfo_testnetPreview + , networkInfo_testnetPreprod + , networkInfo_testnet + , networkInfo_mainnet + , nonce_newIdentity + , nonce_newFromHash + , nonce_getHash + , operationalCert_hotVkey + , operationalCert_sequenceNumber + , operationalCert_kesPeriod + , operationalCert_sigma + , operationalCert_new + , outputDatum_newDataHash + , outputDatum_newData + , outputDatum_dataHash + , outputDatum_data + , plutusData_newConstrPlutusData + , plutusData_newEmptyConstrPlutusData + , plutusData_newSingleValueConstrPlutusData + , plutusData_newMap + , plutusData_newList + , plutusData_newInteger + , plutusData_newBytes + , plutusData_kind + , plutusData_asConstrPlutusData + , plutusData_asMap + , plutusData_asList + , plutusData_asInteger + , plutusData_asBytes + , plutusData_fromAddress + , plutusList_new + , plutusMap_new + , plutusScript_new + , plutusScript_newV2 + , plutusScript_newWithVersion + , plutusScript_bytes + , plutusScript_fromBytesV2 + , plutusScript_fromBytesWithVersion + , plutusScript_fromHexWithVersion + , plutusScript_hash + , plutusScript_languageVersion + , plutusScriptSource_new + , plutusScriptSource_newRefInput + , plutusScriptSource_newRefInputWithLangVer + , plutusScripts_new + , plutusWitness_new + , plutusWitness_newWithRef + , plutusWitness_newWithoutDatum + , plutusWitness_newWithRefWithoutDatum + , plutusWitness_script + , plutusWitness_datum + , plutusWitness_redeemer + , plutusWitnesses_new + , pointer_new + , pointer_newPointer + , pointer_slot + , pointer_txIndex + , pointer_certIndex + , pointer_slotBignum + , pointer_txIndexBignum + , pointer_certIndexBignum + , pointerAddress_new + , pointerAddress_paymentCred + , pointerAddress_stakePointer + , pointerAddress_toAddress + , pointerAddress_fromAddress + , poolMetadata_url + , poolMetadata_poolMetadataHash + , poolMetadata_new + , poolMetadataHash_toBech32 + , poolMetadataHash_fromBech32 + , poolParams_operator + , poolParams_vrfKeyhash + , poolParams_pledge + , poolParams_cost + , poolParams_margin + , poolParams_rewardAccount + , poolParams_poolOwners + , poolParams_relays + , poolParams_poolMetadata + , poolParams_new + , poolRegistration_poolParams + , poolRegistration_new + , poolRetirement_poolKeyhash + , poolRetirement_epoch + , poolRetirement_new + , privateKey_free + , privateKey_toPublic + , privateKey_generateEd25519 + , privateKey_generateEd25519extended + , privateKey_fromBech32 + , privateKey_toBech32 + , privateKey_asBytes + , privateKey_fromExtendedBytes + , privateKey_fromNormalBytes + , privateKey_sign + , privateKey_toHex + , privateKey_fromHex + , proposedProtocolParameterUpdates_new + , protocolParamUpdate_setMinfeeA + , protocolParamUpdate_minfeeA + , protocolParamUpdate_setMinfeeB + , protocolParamUpdate_minfeeB + , protocolParamUpdate_setMaxBlockBodySize + , protocolParamUpdate_maxBlockBodySize + , protocolParamUpdate_setMaxTxSize + , protocolParamUpdate_maxTxSize + , protocolParamUpdate_setMaxBlockHeaderSize + , protocolParamUpdate_maxBlockHeaderSize + , protocolParamUpdate_setKeyDeposit + , protocolParamUpdate_keyDeposit + , protocolParamUpdate_setPoolDeposit + , protocolParamUpdate_poolDeposit + , protocolParamUpdate_setMaxEpoch + , protocolParamUpdate_maxEpoch + , protocolParamUpdate_setNOpt + , protocolParamUpdate_nOpt + , protocolParamUpdate_setPoolPledgeInfluence + , protocolParamUpdate_poolPledgeInfluence + , protocolParamUpdate_setExpansionRate + , protocolParamUpdate_expansionRate + , protocolParamUpdate_setTreasuryGrowthRate + , protocolParamUpdate_treasuryGrowthRate + , protocolParamUpdate_d + , protocolParamUpdate_extraEntropy + , protocolParamUpdate_setProtocolVersion + , protocolParamUpdate_protocolVersion + , protocolParamUpdate_setMinPoolCost + , protocolParamUpdate_minPoolCost + , protocolParamUpdate_setAdaPerUtxoByte + , protocolParamUpdate_adaPerUtxoByte + , protocolParamUpdate_setCostModels + , protocolParamUpdate_costModels + , protocolParamUpdate_setExecutionCosts + , protocolParamUpdate_executionCosts + , protocolParamUpdate_setMaxTxExUnits + , protocolParamUpdate_maxTxExUnits + , protocolParamUpdate_setMaxBlockExUnits + , protocolParamUpdate_maxBlockExUnits + , protocolParamUpdate_setMaxValueSize + , protocolParamUpdate_maxValueSize + , protocolParamUpdate_setCollateralPercentage + , protocolParamUpdate_collateralPercentage + , protocolParamUpdate_setMaxCollateralInputs + , protocolParamUpdate_maxCollateralInputs + , protocolParamUpdate_new + , protocolVersion_major + , protocolVersion_minor + , protocolVersion_new + , publicKey_free + , publicKey_fromBech32 + , publicKey_toBech32 + , publicKey_asBytes + , publicKey_fromBytes + , publicKey_verify + , publicKey_hash + , publicKey_toHex + , publicKey_fromHex + , redeemer_tag + , redeemer_index + , redeemer_data + , redeemer_exUnits + , redeemer_new + , redeemerTag_newSpend + , redeemerTag_newMint + , redeemerTag_newCert + , redeemerTag_newReward + , redeemerTag_kind + , redeemers_new + , redeemers_totalExUnits + , relay_newSingleHostAddr + , relay_newSingleHostName + , relay_newMultiHostName + , relay_kind + , relay_asSingleHostAddr + , relay_asSingleHostName + , relay_asMultiHostName + , relays_new + , rewardAddress_new + , rewardAddress_paymentCred + , rewardAddress_toAddress + , rewardAddress_fromAddress + , rewardAddresses_new + , scriptAll_nativeScripts + , scriptAll_new + , scriptAny_nativeScripts + , scriptAny_new + , scriptDataHash_toBech32 + , scriptDataHash_fromBech32 + , scriptHash_toBech32 + , scriptHash_fromBech32 + , scriptHashes_new + , scriptNOfK_n + , scriptNOfK_nativeScripts + , scriptNOfK_new + , scriptPubkey_addrKeyhash + , scriptPubkey_new + , scriptRef_newNativeScript + , scriptRef_newPlutusScript + , scriptRef_isNativeScript + , scriptRef_isPlutusScript + , scriptRef_nativeScript + , scriptRef_plutusScript + , singleHostAddr_port + , singleHostAddr_ipv4 + , singleHostAddr_ipv6 + , singleHostAddr_new + , singleHostName_port + , singleHostName_dnsName + , singleHostName_new + , stakeCredential_fromKeyhash + , stakeCredential_fromScripthash + , stakeCredential_toKeyhash + , stakeCredential_toScripthash + , stakeCredential_kind + , stakeCredentials_new + , stakeDelegation_stakeCredential + , stakeDelegation_poolKeyhash + , stakeDelegation_new + , stakeDeregistration_stakeCredential + , stakeDeregistration_new + , stakeRegistration_stakeCredential + , stakeRegistration_new + , timelockExpiry_slot + , timelockExpiry_slotBignum + , timelockExpiry_new + , timelockExpiry_newTimelockexpiry + , timelockStart_slot + , timelockStart_slotBignum + , timelockStart_new + , timelockStart_newTimelockstart + , transaction_body + , transaction_witnessSet + , transaction_isValid + , transaction_auxiliaryData + , transaction_setIsValid + , transaction_new + , transactionBody_inputs + , transactionBody_outputs + , transactionBody_fee + , transactionBody_ttl + , transactionBody_ttlBignum + , transactionBody_setTtl + , transactionBody_removeTtl + , transactionBody_setCerts + , transactionBody_certs + , transactionBody_setWithdrawals + , transactionBody_withdrawals + , transactionBody_setUpdate + , transactionBody_update + , transactionBody_setAuxiliaryDataHash + , transactionBody_auxiliaryDataHash + , transactionBody_setValidityStartInterval + , transactionBody_setValidityStartIntervalBignum + , transactionBody_validityStartIntervalBignum + , transactionBody_validityStartInterval + , transactionBody_setMint + , transactionBody_mint + , transactionBody_multiassets + , transactionBody_setReferenceInputs + , transactionBody_referenceInputs + , transactionBody_setScriptDataHash + , transactionBody_scriptDataHash + , transactionBody_setCollateral + , transactionBody_collateral + , transactionBody_setRequiredSigners + , transactionBody_requiredSigners + , transactionBody_setNetworkId + , transactionBody_networkId + , transactionBody_setCollateralReturn + , transactionBody_collateralReturn + , transactionBody_setTotalCollateral + , transactionBody_totalCollateral + , transactionBody_new + , transactionBody_newTxBody + , transactionHash_toBech32 + , transactionHash_fromBech32 + , transactionInput_transactionId + , transactionInput_index + , transactionInput_new + , transactionInputs_new + , transactionInputs_toOption + , transactionMetadatum_newMap + , transactionMetadatum_newList + , transactionMetadatum_newInt + , transactionMetadatum_newBytes + , transactionMetadatum_newText + , transactionMetadatum_kind + , transactionMetadatum_asMap + , transactionMetadatum_asList + , transactionMetadatum_asInt + , transactionMetadatum_asBytes + , transactionMetadatum_asText + , transactionMetadatumLabels_new + , transactionOutput_address + , transactionOutput_amount + , transactionOutput_dataHash + , transactionOutput_plutusData + , transactionOutput_scriptRef + , transactionOutput_setScriptRef + , transactionOutput_setPlutusData + , transactionOutput_setDataHash + , transactionOutput_hasPlutusData + , transactionOutput_hasDataHash + , transactionOutput_hasScriptRef + , transactionOutput_new + , transactionOutput_serializationFormat + , transactionOutputs_new + , transactionUnspentOutput_new + , transactionUnspentOutput_input + , transactionUnspentOutput_output + , transactionUnspentOutputs_new + , transactionWitnessSet_setVkeys + , transactionWitnessSet_vkeys + , transactionWitnessSet_setNativeScripts + , transactionWitnessSet_nativeScripts + , transactionWitnessSet_setBootstraps + , transactionWitnessSet_bootstraps + , transactionWitnessSet_setPlutusScripts + , transactionWitnessSet_plutusScripts + , transactionWitnessSet_setPlutusData + , transactionWitnessSet_plutusData + , transactionWitnessSet_setRedeemers + , transactionWitnessSet_redeemers + , transactionWitnessSet_new + , url_new + , url_url + , unitInterval_numerator + , unitInterval_denominator + , unitInterval_new + , update_proposedProtocolParameterUpdates + , update_epoch + , update_new + , vrfCert_output + , vrfCert_proof + , vrfCert_new + , vrfKeyHash_toBech32 + , vrfKeyHash_fromBech32 + , vrfvKey_toBech32 + , vrfvKey_fromBech32 + , value_new + , value_newFromAssets + , value_newWithAssets + , value_zero + , value_isZero + , value_coin + , value_setCoin + , value_multiasset + , value_setMultiasset + , value_checkedAdd + , value_checkedSub + , value_clampedSub + , value_compare + , vkey_new + , vkey_publicKey + , vkeys_new + , vkeywitness_new + , vkeywitness_vkey + , vkeywitness_signature + , vkeywitnesses_new + , withdrawals_new + , hashTransaction + , hashPlutusData + , minAdaForOutput + , Address + , AssetName + , AssetNames + , Assets + , AuxiliaryData + , AuxiliaryDataHash + , BaseAddress + , BigInt + , BigNum + , Bip32PrivateKey + , Bip32PublicKey + , BlockHash + , BootstrapWitness + , BootstrapWitnesses + , ByronAddress + , Certificate + , Certificates + , ConstrPlutusData + , CostModel + , Costmdls + , DNSRecordAorAAAA + , DNSRecordSRV + , DataCost + , DataHash + , DatumSource + , Ed25519KeyHash + , Ed25519KeyHashes + , Ed25519Signature + , EnterpriseAddress + , ExUnitPrices + , ExUnits + , GeneralTransactionMetadata + , GenesisDelegateHash + , GenesisHash + , GenesisHashes + , GenesisKeyDelegation + , InputWithScriptWitness + , InputsWithScriptWitness + , Int + , Ipv4 + , Ipv6 + , KESSignature + , KESVKey + , Language + , Languages + , LegacyDaedalusPrivateKey + , LinearFee + , MIRToStakeCredentials + , MetadataList + , MetadataMap + , Mint + , MintAssets + , MintWitness + , MintsAssets + , MoveInstantaneousReward + , MoveInstantaneousRewardsCert + , MultiAsset + , MultiHostName + , NativeScript + , NativeScripts + , NetworkId + , NetworkInfo + , Nonce + , OperationalCert + , OutputDatum + , PlutusData + , PlutusList + , PlutusMap + , PlutusScript + , PlutusScriptSource + , PlutusScripts + , PlutusWitness + , PlutusWitnesses + , Pointer + , PointerAddress + , PoolMetadata + , PoolMetadataHash + , PoolParams + , PoolRegistration + , PoolRetirement + , PrivateKey + , ProposedProtocolParameterUpdates + , ProtocolParamUpdate + , ProtocolVersion + , PublicKey + , Redeemer + , RedeemerTag + , Redeemers + , Relay + , Relays + , RewardAddress + , RewardAddresses + , ScriptAll + , ScriptAny + , ScriptDataHash + , ScriptHash + , ScriptHashes + , ScriptNOfK + , ScriptPubkey + , ScriptRef + , SingleHostAddr + , SingleHostName + , StakeCredential + , StakeCredentials + , StakeDelegation + , StakeDeregistration + , StakeRegistration + , TimelockExpiry + , TimelockStart + , Transaction + , TransactionBatch + , TransactionBatchList + , TransactionBody + , TransactionHash + , TransactionInput + , TransactionInputs + , TransactionMetadatum + , TransactionMetadatumLabels + , TransactionOutput + , TransactionOutputs + , TransactionUnspentOutput + , TransactionUnspentOutputs + , TransactionWitnessSet + , URL + , UnitInterval + , Update + , VRFCert + , VRFKeyHash + , VRFVKey + , Value + , Vkey + , Vkeys + , Vkeywitness + , Vkeywitnesses + , Withdrawals + ) where +import Prelude + +import Cardano.Serialization.Lib.Internal +import Cardano.Serialization.Lib.Internal + ( class IsBytes + , class IsCsl + , class IsJson + , toBytes + , fromBytes + , packListContainer + , packMapContainer + , packMapContainerFromMap + , unpackMapContainerToMapWith + , unpackMapContainer + , unpackListContainer + , cslFromAeson + , cslToAeson + , cslFromAesonViaBytes + , cslToAesonViaBytes + ) as X +import Effect +import Data.Nullable +import Aeson (Aeson, class DecodeAeson, encodeAeson, decodeAeson, class EncodeAeson, jsonToAeson, stringifyAeson) +import Data.ByteArray (ByteArray) +import Data.Argonaut (Json, JsonDecodeError(TypeMismatch), jsonParser) +import Data.Bifunctor (lmap) +import Data.Either (Either(Left, Right), note) +import Data.Map (Map) +import Data.Map as Map +import Data.Maybe (Maybe(Nothing, Just)) +import Data.Tuple (Tuple(Tuple)) +import Type.Proxy (Proxy(Proxy)) + +-- Utils for type conversions +type ForeignErrorable a = + (String -> Either String a) -> (a -> Either String a) -> Either String a + +runForeignErrorable :: forall (a :: Type). ForeignErrorable a -> Either String a +runForeignErrorable f = f Left Right + +class IsStr a where + fromStr :: String -> Maybe a + toStr :: a -> String + + +-- functions +-- | Hash transaction +-- > hashTransaction txBody +foreign import hashTransaction :: TransactionBody -> TransactionHash + +-- | Hash plutus data +-- > hashPlutusData plutusData +foreign import hashPlutusData :: PlutusData -> DataHash + +-- | Min ada for output +-- > minAdaForOutput output dataCost +foreign import minAdaForOutput :: TransactionOutput -> DataCost -> BigNum + + + +-- classes + + +------------------------------------------------------------------------------------- +-- Address + +foreign import data Address :: Type + +foreign import address_toBech32 :: Address -> String -> String +foreign import address_fromBech32 :: String -> Nullable Address +foreign import address_networkId :: Address -> Number + +instance IsCsl Address where + className _ = "Address" +instance IsBytes Address +instance IsJson Address +instance EncodeAeson Address where encodeAeson = cslToAeson +instance DecodeAeson Address where decodeAeson = cslFromAeson +instance Show Address where show = showViaJson + +------------------------------------------------------------------------------------- +-- Asset name + +foreign import data AssetName :: Type + +foreign import assetName_new :: ByteArray -> AssetName +foreign import assetName_name :: AssetName -> ByteArray + +instance IsCsl AssetName where + className _ = "AssetName" +instance IsBytes AssetName +instance IsJson AssetName +instance EncodeAeson AssetName where encodeAeson = cslToAeson +instance DecodeAeson AssetName where decodeAeson = cslFromAeson +instance Show AssetName where show = showViaJson + +------------------------------------------------------------------------------------- +-- Asset names + +foreign import data AssetNames :: Type + +foreign import assetNames_new :: Effect AssetNames + +instance IsCsl AssetNames where + className _ = "AssetNames" +instance IsBytes AssetNames +instance IsJson AssetNames +instance EncodeAeson AssetNames where encodeAeson = cslToAeson +instance DecodeAeson AssetNames where decodeAeson = cslFromAeson +instance Show AssetNames where show = showViaJson + +instance IsListContainer AssetNames AssetName + +------------------------------------------------------------------------------------- +-- Assets + +foreign import data Assets :: Type + +foreign import assets_new :: Effect Assets + +instance IsCsl Assets where + className _ = "Assets" +instance IsBytes Assets +instance IsJson Assets +instance EncodeAeson Assets where encodeAeson = cslToAeson +instance DecodeAeson Assets where decodeAeson = cslFromAeson +instance Show Assets where show = showViaJson + +instance IsMapContainer Assets AssetName BigNum + +------------------------------------------------------------------------------------- +-- Auxiliary data + +foreign import data AuxiliaryData :: Type + +foreign import auxiliaryData_new :: Effect AuxiliaryData +foreign import auxiliaryData_metadata :: AuxiliaryData -> Nullable GeneralTransactionMetadata +foreign import auxiliaryData_setMetadata :: AuxiliaryData -> GeneralTransactionMetadata -> Effect Unit +foreign import auxiliaryData_nativeScripts :: AuxiliaryData -> Nullable NativeScripts +foreign import auxiliaryData_setNativeScripts :: AuxiliaryData -> NativeScripts -> Effect Unit +foreign import auxiliaryData_plutusScripts :: AuxiliaryData -> Nullable PlutusScripts +foreign import auxiliaryData_setPlutusScripts :: AuxiliaryData -> PlutusScripts -> Effect Unit +foreign import auxiliaryData_preferAlonzoFormat :: AuxiliaryData -> Boolean +foreign import auxiliaryData_setPreferAlonzoFormat :: AuxiliaryData -> Boolean -> Effect Unit + +instance IsCsl AuxiliaryData where + className _ = "AuxiliaryData" +instance IsBytes AuxiliaryData +instance IsJson AuxiliaryData +instance EncodeAeson AuxiliaryData where encodeAeson = cslToAeson +instance DecodeAeson AuxiliaryData where decodeAeson = cslFromAeson +instance Show AuxiliaryData where show = showViaJson + +------------------------------------------------------------------------------------- +-- Auxiliary data hash + +foreign import data AuxiliaryDataHash :: Type + +foreign import auxiliaryDataHash_toBech32 :: AuxiliaryDataHash -> String -> String +foreign import auxiliaryDataHash_fromBech32 :: String -> Nullable AuxiliaryDataHash + +instance IsCsl AuxiliaryDataHash where + className _ = "AuxiliaryDataHash" +instance IsBytes AuxiliaryDataHash +instance EncodeAeson AuxiliaryDataHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson AuxiliaryDataHash where decodeAeson = cslFromAesonViaBytes +instance Show AuxiliaryDataHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Base address + +foreign import data BaseAddress :: Type + +foreign import baseAddress_new :: Number -> StakeCredential -> StakeCredential -> BaseAddress +foreign import baseAddress_paymentCred :: BaseAddress -> StakeCredential +foreign import baseAddress_stakeCred :: BaseAddress -> StakeCredential +foreign import baseAddress_toAddress :: BaseAddress -> Address +foreign import baseAddress_fromAddress :: Address -> Nullable BaseAddress + +instance IsCsl BaseAddress where + className _ = "BaseAddress" + +------------------------------------------------------------------------------------- +-- Big int + +foreign import data BigInt :: Type + +foreign import bigInt_isZero :: BigInt -> Boolean +foreign import bigInt_asU64 :: BigInt -> Nullable BigNum +foreign import bigInt_asInt :: BigInt -> Nullable Int +foreign import bigInt_fromStr :: String -> Nullable BigInt +foreign import bigInt_toStr :: BigInt -> String +foreign import bigInt_mul :: BigInt -> BigInt -> BigInt +foreign import bigInt_one :: BigInt +foreign import bigInt_increment :: BigInt -> BigInt +foreign import bigInt_divCeil :: BigInt -> BigInt -> BigInt + +instance IsCsl BigInt where + className _ = "BigInt" +instance IsBytes BigInt +instance IsJson BigInt +instance EncodeAeson BigInt where encodeAeson = cslToAeson +instance DecodeAeson BigInt where decodeAeson = cslFromAeson +instance Show BigInt where show = showViaJson + +------------------------------------------------------------------------------------- +-- Big num + +foreign import data BigNum :: Type + +foreign import bigNum_fromStr :: String -> Nullable BigNum +foreign import bigNum_toStr :: BigNum -> String +foreign import bigNum_zero :: BigNum +foreign import bigNum_one :: BigNum +foreign import bigNum_isZero :: BigNum -> Boolean +foreign import bigNum_divFloor :: BigNum -> BigNum -> BigNum +foreign import bigNum_checkedMul :: BigNum -> BigNum -> Nullable BigNum +foreign import bigNum_checkedAdd :: BigNum -> BigNum -> Nullable BigNum +foreign import bigNum_checkedSub :: BigNum -> BigNum -> Nullable BigNum +foreign import bigNum_clampedSub :: BigNum -> BigNum -> BigNum +foreign import bigNum_compare :: BigNum -> BigNum -> Number +foreign import bigNum_lessThan :: BigNum -> BigNum -> Boolean +foreign import bigNum_maxValue :: BigNum +foreign import bigNum_max :: BigNum -> BigNum -> BigNum + +instance IsCsl BigNum where + className _ = "BigNum" +instance IsBytes BigNum +instance IsJson BigNum +instance EncodeAeson BigNum where encodeAeson = cslToAeson +instance DecodeAeson BigNum where decodeAeson = cslFromAeson +instance Show BigNum where show = showViaJson + +------------------------------------------------------------------------------------- +-- Bip32 private key + +foreign import data Bip32PrivateKey :: Type + +foreign import bip32PrivateKey_derive :: Bip32PrivateKey -> Number -> Bip32PrivateKey +foreign import bip32PrivateKey_from128Xprv :: ByteArray -> Bip32PrivateKey +foreign import bip32PrivateKey_to128Xprv :: Bip32PrivateKey -> ByteArray +foreign import bip32PrivateKey_generateEd25519Bip32 :: Bip32PrivateKey +foreign import bip32PrivateKey_toRawKey :: Bip32PrivateKey -> PrivateKey +foreign import bip32PrivateKey_toPublic :: Bip32PrivateKey -> Bip32PublicKey +foreign import bip32PrivateKey_asBytes :: Bip32PrivateKey -> ByteArray +foreign import bip32PrivateKey_fromBech32 :: String -> Nullable Bip32PrivateKey +foreign import bip32PrivateKey_toBech32 :: Bip32PrivateKey -> String +foreign import bip32PrivateKey_fromBip39Entropy :: ByteArray -> ByteArray -> Bip32PrivateKey +foreign import bip32PrivateKey_chaincode :: Bip32PrivateKey -> ByteArray + +instance IsCsl Bip32PrivateKey where + className _ = "Bip32PrivateKey" + +------------------------------------------------------------------------------------- +-- Bip32 public key + +foreign import data Bip32PublicKey :: Type + +foreign import bip32PublicKey_derive :: Bip32PublicKey -> Number -> Bip32PublicKey +foreign import bip32PublicKey_toRawKey :: Bip32PublicKey -> PublicKey +foreign import bip32PublicKey_asBytes :: Bip32PublicKey -> ByteArray +foreign import bip32PublicKey_fromBech32 :: String -> Nullable Bip32PublicKey +foreign import bip32PublicKey_toBech32 :: Bip32PublicKey -> String +foreign import bip32PublicKey_chaincode :: Bip32PublicKey -> ByteArray + +instance IsCsl Bip32PublicKey where + className _ = "Bip32PublicKey" + +------------------------------------------------------------------------------------- +-- Block hash + +foreign import data BlockHash :: Type + +foreign import blockHash_toBech32 :: BlockHash -> String -> String +foreign import blockHash_fromBech32 :: String -> Nullable BlockHash + +instance IsCsl BlockHash where + className _ = "BlockHash" +instance IsBytes BlockHash +instance EncodeAeson BlockHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson BlockHash where decodeAeson = cslFromAesonViaBytes +instance Show BlockHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Bootstrap witness + +foreign import data BootstrapWitness :: Type + +foreign import bootstrapWitness_vkey :: BootstrapWitness -> Vkey +foreign import bootstrapWitness_signature :: BootstrapWitness -> Ed25519Signature +foreign import bootstrapWitness_chainCode :: BootstrapWitness -> ByteArray +foreign import bootstrapWitness_attributes :: BootstrapWitness -> ByteArray +foreign import bootstrapWitness_new :: Vkey -> Ed25519Signature -> ByteArray -> ByteArray -> BootstrapWitness + +instance IsCsl BootstrapWitness where + className _ = "BootstrapWitness" +instance IsBytes BootstrapWitness +instance IsJson BootstrapWitness +instance EncodeAeson BootstrapWitness where encodeAeson = cslToAeson +instance DecodeAeson BootstrapWitness where decodeAeson = cslFromAeson +instance Show BootstrapWitness where show = showViaJson + +------------------------------------------------------------------------------------- +-- Bootstrap witnesses + +foreign import data BootstrapWitnesses :: Type + +foreign import bootstrapWitnesses_new :: Effect BootstrapWitnesses + +instance IsCsl BootstrapWitnesses where + className _ = "BootstrapWitnesses" + +instance IsListContainer BootstrapWitnesses BootstrapWitness + +------------------------------------------------------------------------------------- +-- Byron address + +foreign import data ByronAddress :: Type + +foreign import byronAddress_toBase58 :: ByronAddress -> String +foreign import byronAddress_byronProtocolMagic :: ByronAddress -> Number +foreign import byronAddress_attributes :: ByronAddress -> ByteArray +foreign import byronAddress_networkId :: ByronAddress -> Number +foreign import byronAddress_fromBase58 :: String -> Nullable ByronAddress +foreign import byronAddress_icarusFromKey :: Bip32PublicKey -> Number -> ByronAddress +foreign import byronAddress_isValid :: String -> Boolean +foreign import byronAddress_toAddress :: ByronAddress -> Address +foreign import byronAddress_fromAddress :: Address -> Nullable ByronAddress + +instance IsCsl ByronAddress where + className _ = "ByronAddress" +instance IsBytes ByronAddress +instance EncodeAeson ByronAddress where encodeAeson = cslToAesonViaBytes +instance DecodeAeson ByronAddress where decodeAeson = cslFromAesonViaBytes +instance Show ByronAddress where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Certificate + +foreign import data Certificate :: Type + +foreign import certificate_newStakeRegistration :: StakeRegistration -> Certificate +foreign import certificate_newStakeDeregistration :: StakeDeregistration -> Certificate +foreign import certificate_newStakeDelegation :: StakeDelegation -> Certificate +foreign import certificate_newPoolRegistration :: PoolRegistration -> Certificate +foreign import certificate_newPoolRetirement :: PoolRetirement -> Certificate +foreign import certificate_newGenesisKeyDelegation :: GenesisKeyDelegation -> Certificate +foreign import certificate_newMoveInstantaneousRewardsCert :: MoveInstantaneousRewardsCert -> Certificate +foreign import certificate_kind :: Certificate -> Number +foreign import certificate_asStakeRegistration :: Certificate -> Nullable StakeRegistration +foreign import certificate_asStakeDeregistration :: Certificate -> Nullable StakeDeregistration +foreign import certificate_asStakeDelegation :: Certificate -> Nullable StakeDelegation +foreign import certificate_asPoolRegistration :: Certificate -> Nullable PoolRegistration +foreign import certificate_asPoolRetirement :: Certificate -> Nullable PoolRetirement +foreign import certificate_asGenesisKeyDelegation :: Certificate -> Nullable GenesisKeyDelegation +foreign import certificate_asMoveInstantaneousRewardsCert :: Certificate -> Nullable MoveInstantaneousRewardsCert + +instance IsCsl Certificate where + className _ = "Certificate" +instance IsBytes Certificate +instance IsJson Certificate +instance EncodeAeson Certificate where encodeAeson = cslToAeson +instance DecodeAeson Certificate where decodeAeson = cslFromAeson +instance Show Certificate where show = showViaJson + +------------------------------------------------------------------------------------- +-- Certificates + +foreign import data Certificates :: Type + +foreign import certificates_new :: Effect Certificates + +instance IsCsl Certificates where + className _ = "Certificates" +instance IsBytes Certificates +instance IsJson Certificates +instance EncodeAeson Certificates where encodeAeson = cslToAeson +instance DecodeAeson Certificates where decodeAeson = cslFromAeson +instance Show Certificates where show = showViaJson + +instance IsListContainer Certificates Certificate + +------------------------------------------------------------------------------------- +-- Constr plutus data + +foreign import data ConstrPlutusData :: Type + +foreign import constrPlutusData_alternative :: ConstrPlutusData -> BigNum +foreign import constrPlutusData_data :: ConstrPlutusData -> PlutusList +foreign import constrPlutusData_new :: BigNum -> PlutusList -> ConstrPlutusData + +instance IsCsl ConstrPlutusData where + className _ = "ConstrPlutusData" +instance IsBytes ConstrPlutusData +instance EncodeAeson ConstrPlutusData where encodeAeson = cslToAesonViaBytes +instance DecodeAeson ConstrPlutusData where decodeAeson = cslFromAesonViaBytes +instance Show ConstrPlutusData where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Cost model + +foreign import data CostModel :: Type + +foreign import costModel_free :: CostModel -> Nullable Unit +foreign import costModel_toBytes :: CostModel -> ByteArray +foreign import costModel_fromBytes :: ByteArray -> Nullable CostModel +foreign import costModel_toHex :: CostModel -> String +foreign import costModel_fromHex :: String -> Nullable CostModel +foreign import costModel_toJson :: CostModel -> String +foreign import costModel_fromJson :: String -> Nullable CostModel +foreign import costModel_new :: Effect CostModel +foreign import costModel_set :: CostModel -> Number -> Int -> Effect Int +foreign import costModel_get :: CostModel -> Number -> Effect Int +foreign import costModel_len :: CostModel -> Effect Number + +instance IsCsl CostModel where + className _ = "CostModel" +instance IsBytes CostModel +instance IsJson CostModel +instance EncodeAeson CostModel where encodeAeson = cslToAeson +instance DecodeAeson CostModel where decodeAeson = cslFromAeson +instance Show CostModel where show = showViaJson + +------------------------------------------------------------------------------------- +-- Costmdls + +foreign import data Costmdls :: Type + +foreign import costmdls_new :: Effect Costmdls +foreign import costmdls_retainLanguageVersions :: Costmdls -> Languages -> Costmdls + +instance IsCsl Costmdls where + className _ = "Costmdls" +instance IsBytes Costmdls +instance IsJson Costmdls +instance EncodeAeson Costmdls where encodeAeson = cslToAeson +instance DecodeAeson Costmdls where decodeAeson = cslFromAeson +instance Show Costmdls where show = showViaJson + +instance IsMapContainer Costmdls Language CostModel + +------------------------------------------------------------------------------------- +-- DNSRecord aor aaaa + +foreign import data DNSRecordAorAAAA :: Type + +foreign import dnsRecordAorAAAA_new :: String -> DNSRecordAorAAAA +foreign import dnsRecordAorAAAA_record :: DNSRecordAorAAAA -> String + +instance IsCsl DNSRecordAorAAAA where + className _ = "DNSRecordAorAAAA" +instance IsBytes DNSRecordAorAAAA +instance IsJson DNSRecordAorAAAA +instance EncodeAeson DNSRecordAorAAAA where encodeAeson = cslToAeson +instance DecodeAeson DNSRecordAorAAAA where decodeAeson = cslFromAeson +instance Show DNSRecordAorAAAA where show = showViaJson + +------------------------------------------------------------------------------------- +-- DNSRecord srv + +foreign import data DNSRecordSRV :: Type + +foreign import dnsRecordSRV_new :: String -> DNSRecordSRV +foreign import dnsRecordSRV_record :: DNSRecordSRV -> String + +instance IsCsl DNSRecordSRV where + className _ = "DNSRecordSRV" +instance IsBytes DNSRecordSRV +instance IsJson DNSRecordSRV +instance EncodeAeson DNSRecordSRV where encodeAeson = cslToAeson +instance DecodeAeson DNSRecordSRV where decodeAeson = cslFromAeson +instance Show DNSRecordSRV where show = showViaJson + +------------------------------------------------------------------------------------- +-- Data cost + +foreign import data DataCost :: Type + +foreign import dataCost_newCoinsPerWord :: BigNum -> DataCost +foreign import dataCost_newCoinsPerByte :: BigNum -> DataCost +foreign import dataCost_coinsPerByte :: DataCost -> BigNum + +instance IsCsl DataCost where + className _ = "DataCost" + +------------------------------------------------------------------------------------- +-- Data hash + +foreign import data DataHash :: Type + +foreign import dataHash_toBech32 :: DataHash -> String -> String +foreign import dataHash_fromBech32 :: String -> Nullable DataHash + +instance IsCsl DataHash where + className _ = "DataHash" +instance IsBytes DataHash +instance EncodeAeson DataHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson DataHash where decodeAeson = cslFromAesonViaBytes +instance Show DataHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Datum source + +foreign import data DatumSource :: Type + +foreign import datumSource_new :: PlutusData -> DatumSource +foreign import datumSource_newRefInput :: TransactionInput -> DatumSource + +instance IsCsl DatumSource where + className _ = "DatumSource" + +------------------------------------------------------------------------------------- +-- Ed25519 key hash + +foreign import data Ed25519KeyHash :: Type + +foreign import ed25519KeyHash_toBech32 :: Ed25519KeyHash -> String -> String +foreign import ed25519KeyHash_fromBech32 :: String -> Nullable Ed25519KeyHash + +instance IsCsl Ed25519KeyHash where + className _ = "Ed25519KeyHash" +instance IsBytes Ed25519KeyHash +instance EncodeAeson Ed25519KeyHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson Ed25519KeyHash where decodeAeson = cslFromAesonViaBytes +instance Show Ed25519KeyHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Ed25519 key hashes + +foreign import data Ed25519KeyHashes :: Type + +foreign import ed25519KeyHashes_new :: Ed25519KeyHashes +foreign import ed25519KeyHashes_toOption :: Ed25519KeyHashes -> Nullable Ed25519KeyHashes + +instance IsCsl Ed25519KeyHashes where + className _ = "Ed25519KeyHashes" +instance IsBytes Ed25519KeyHashes +instance IsJson Ed25519KeyHashes +instance EncodeAeson Ed25519KeyHashes where encodeAeson = cslToAeson +instance DecodeAeson Ed25519KeyHashes where decodeAeson = cslFromAeson +instance Show Ed25519KeyHashes where show = showViaJson + +instance IsListContainer Ed25519KeyHashes Ed25519KeyHash + +------------------------------------------------------------------------------------- +-- Ed25519 signature + +foreign import data Ed25519Signature :: Type + +foreign import ed25519Signature_toBech32 :: Ed25519Signature -> String +foreign import ed25519Signature_fromBech32 :: String -> Nullable Ed25519Signature + +instance IsCsl Ed25519Signature where + className _ = "Ed25519Signature" +instance IsBytes Ed25519Signature +instance EncodeAeson Ed25519Signature where encodeAeson = cslToAesonViaBytes +instance DecodeAeson Ed25519Signature where decodeAeson = cslFromAesonViaBytes +instance Show Ed25519Signature where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Enterprise address + +foreign import data EnterpriseAddress :: Type + +foreign import enterpriseAddress_new :: Number -> StakeCredential -> EnterpriseAddress +foreign import enterpriseAddress_paymentCred :: EnterpriseAddress -> StakeCredential +foreign import enterpriseAddress_toAddress :: EnterpriseAddress -> Address +foreign import enterpriseAddress_fromAddress :: Address -> Nullable EnterpriseAddress + +instance IsCsl EnterpriseAddress where + className _ = "EnterpriseAddress" + +------------------------------------------------------------------------------------- +-- Ex unit prices + +foreign import data ExUnitPrices :: Type + +foreign import exUnitPrices_memPrice :: ExUnitPrices -> UnitInterval +foreign import exUnitPrices_stepPrice :: ExUnitPrices -> UnitInterval +foreign import exUnitPrices_new :: UnitInterval -> UnitInterval -> ExUnitPrices + +instance IsCsl ExUnitPrices where + className _ = "ExUnitPrices" +instance IsBytes ExUnitPrices +instance IsJson ExUnitPrices +instance EncodeAeson ExUnitPrices where encodeAeson = cslToAeson +instance DecodeAeson ExUnitPrices where decodeAeson = cslFromAeson +instance Show ExUnitPrices where show = showViaJson + +------------------------------------------------------------------------------------- +-- Ex units + +foreign import data ExUnits :: Type + +foreign import exUnits_mem :: ExUnits -> BigNum +foreign import exUnits_steps :: ExUnits -> BigNum +foreign import exUnits_new :: BigNum -> BigNum -> ExUnits + +instance IsCsl ExUnits where + className _ = "ExUnits" +instance IsBytes ExUnits +instance IsJson ExUnits +instance EncodeAeson ExUnits where encodeAeson = cslToAeson +instance DecodeAeson ExUnits where decodeAeson = cslFromAeson +instance Show ExUnits where show = showViaJson + +------------------------------------------------------------------------------------- +-- General transaction metadata + +foreign import data GeneralTransactionMetadata :: Type + +foreign import generalTransactionMetadata_new :: Effect GeneralTransactionMetadata + +instance IsCsl GeneralTransactionMetadata where + className _ = "GeneralTransactionMetadata" +instance IsBytes GeneralTransactionMetadata +instance IsJson GeneralTransactionMetadata +instance EncodeAeson GeneralTransactionMetadata where encodeAeson = cslToAeson +instance DecodeAeson GeneralTransactionMetadata where decodeAeson = cslFromAeson +instance Show GeneralTransactionMetadata where show = showViaJson + +instance IsMapContainer GeneralTransactionMetadata BigNum TransactionMetadatum + +------------------------------------------------------------------------------------- +-- Genesis delegate hash + +foreign import data GenesisDelegateHash :: Type + +foreign import genesisDelegateHash_toBech32 :: GenesisDelegateHash -> String -> String +foreign import genesisDelegateHash_fromBech32 :: String -> Nullable GenesisDelegateHash + +instance IsCsl GenesisDelegateHash where + className _ = "GenesisDelegateHash" +instance IsBytes GenesisDelegateHash +instance EncodeAeson GenesisDelegateHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson GenesisDelegateHash where decodeAeson = cslFromAesonViaBytes +instance Show GenesisDelegateHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Genesis hash + +foreign import data GenesisHash :: Type + +foreign import genesisHash_toBech32 :: GenesisHash -> String -> String +foreign import genesisHash_fromBech32 :: String -> Nullable GenesisHash + +instance IsCsl GenesisHash where + className _ = "GenesisHash" +instance IsBytes GenesisHash +instance EncodeAeson GenesisHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson GenesisHash where decodeAeson = cslFromAesonViaBytes +instance Show GenesisHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Genesis hashes + +foreign import data GenesisHashes :: Type + +foreign import genesisHashes_new :: Effect GenesisHashes + +instance IsCsl GenesisHashes where + className _ = "GenesisHashes" +instance IsBytes GenesisHashes +instance IsJson GenesisHashes +instance EncodeAeson GenesisHashes where encodeAeson = cslToAeson +instance DecodeAeson GenesisHashes where decodeAeson = cslFromAeson +instance Show GenesisHashes where show = showViaJson + +instance IsListContainer GenesisHashes GenesisHash + +------------------------------------------------------------------------------------- +-- Genesis key delegation + +foreign import data GenesisKeyDelegation :: Type + +foreign import genesisKeyDelegation_genesishash :: GenesisKeyDelegation -> GenesisHash +foreign import genesisKeyDelegation_genesisDelegateHash :: GenesisKeyDelegation -> GenesisDelegateHash +foreign import genesisKeyDelegation_vrfKeyhash :: GenesisKeyDelegation -> VRFKeyHash +foreign import genesisKeyDelegation_new :: GenesisHash -> GenesisDelegateHash -> VRFKeyHash -> GenesisKeyDelegation + +instance IsCsl GenesisKeyDelegation where + className _ = "GenesisKeyDelegation" +instance IsBytes GenesisKeyDelegation +instance IsJson GenesisKeyDelegation +instance EncodeAeson GenesisKeyDelegation where encodeAeson = cslToAeson +instance DecodeAeson GenesisKeyDelegation where decodeAeson = cslFromAeson +instance Show GenesisKeyDelegation where show = showViaJson + +------------------------------------------------------------------------------------- +-- Input with script witness + +foreign import data InputWithScriptWitness :: Type + +foreign import inputWithScriptWitness_newWithNativeScriptWitness :: TransactionInput -> NativeScript -> InputWithScriptWitness +foreign import inputWithScriptWitness_newWithPlutusWitness :: TransactionInput -> PlutusWitness -> InputWithScriptWitness +foreign import inputWithScriptWitness_input :: InputWithScriptWitness -> TransactionInput + +instance IsCsl InputWithScriptWitness where + className _ = "InputWithScriptWitness" + +------------------------------------------------------------------------------------- +-- Inputs with script witness + +foreign import data InputsWithScriptWitness :: Type + +foreign import inputsWithScriptWitness_new :: InputsWithScriptWitness + +instance IsCsl InputsWithScriptWitness where + className _ = "InputsWithScriptWitness" + +instance IsListContainer InputsWithScriptWitness InputWithScriptWitness + +------------------------------------------------------------------------------------- +-- Int + +foreign import data Int :: Type + +foreign import int_new :: BigNum -> Int +foreign import int_newNegative :: BigNum -> Int +foreign import int_newI32 :: Number -> Int +foreign import int_isPositive :: Int -> Boolean +foreign import int_asPositive :: Int -> Nullable BigNum +foreign import int_asNegative :: Int -> Nullable BigNum +foreign import int_asI32 :: Int -> Nullable Number +foreign import int_asI32OrNothing :: Int -> Nullable Number +foreign import int_asI32OrFail :: Int -> Number +foreign import int_toStr :: Int -> String +foreign import int_fromStr :: String -> Nullable Int + +instance IsCsl Int where + className _ = "Int" +instance IsBytes Int +instance IsJson Int +instance EncodeAeson Int where encodeAeson = cslToAeson +instance DecodeAeson Int where decodeAeson = cslFromAeson +instance Show Int where show = showViaJson + +------------------------------------------------------------------------------------- +-- Ipv4 + +foreign import data Ipv4 :: Type + +foreign import ipv4_new :: ByteArray -> Ipv4 +foreign import ipv4_ip :: Ipv4 -> ByteArray + +instance IsCsl Ipv4 where + className _ = "Ipv4" +instance IsBytes Ipv4 +instance IsJson Ipv4 +instance EncodeAeson Ipv4 where encodeAeson = cslToAeson +instance DecodeAeson Ipv4 where decodeAeson = cslFromAeson +instance Show Ipv4 where show = showViaJson + +------------------------------------------------------------------------------------- +-- Ipv6 + +foreign import data Ipv6 :: Type + +foreign import ipv6_new :: ByteArray -> Ipv6 +foreign import ipv6_ip :: Ipv6 -> ByteArray + +instance IsCsl Ipv6 where + className _ = "Ipv6" +instance IsBytes Ipv6 +instance IsJson Ipv6 +instance EncodeAeson Ipv6 where encodeAeson = cslToAeson +instance DecodeAeson Ipv6 where decodeAeson = cslFromAeson +instance Show Ipv6 where show = showViaJson + +------------------------------------------------------------------------------------- +-- KESSignature + +foreign import data KESSignature :: Type + + + +instance IsCsl KESSignature where + className _ = "KESSignature" +instance IsBytes KESSignature +instance EncodeAeson KESSignature where encodeAeson = cslToAesonViaBytes +instance DecodeAeson KESSignature where decodeAeson = cslFromAesonViaBytes +instance Show KESSignature where show = showViaBytes + +------------------------------------------------------------------------------------- +-- KESVKey + +foreign import data KESVKey :: Type + +foreign import kesvKey_toBech32 :: KESVKey -> String -> String +foreign import kesvKey_fromBech32 :: String -> Nullable KESVKey + +instance IsCsl KESVKey where + className _ = "KESVKey" +instance IsBytes KESVKey +instance EncodeAeson KESVKey where encodeAeson = cslToAesonViaBytes +instance DecodeAeson KESVKey where decodeAeson = cslFromAesonViaBytes +instance Show KESVKey where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Language + +foreign import data Language :: Type + +foreign import language_newPlutusV1 :: Language +foreign import language_newPlutusV2 :: Language +foreign import language_kind :: Language -> Number + +instance IsCsl Language where + className _ = "Language" +instance IsBytes Language +instance IsJson Language +instance EncodeAeson Language where encodeAeson = cslToAeson +instance DecodeAeson Language where decodeAeson = cslFromAeson +instance Show Language where show = showViaJson + +------------------------------------------------------------------------------------- +-- Languages + +foreign import data Languages :: Type + +foreign import languages_new :: Effect Languages +foreign import languages_list :: Languages + +instance IsCsl Languages where + className _ = "Languages" + +instance IsListContainer Languages Language + +------------------------------------------------------------------------------------- +-- Legacy daedalus private key + +foreign import data LegacyDaedalusPrivateKey :: Type + +foreign import legacyDaedalusPrivateKey_asBytes :: LegacyDaedalusPrivateKey -> ByteArray +foreign import legacyDaedalusPrivateKey_chaincode :: LegacyDaedalusPrivateKey -> ByteArray + +instance IsCsl LegacyDaedalusPrivateKey where + className _ = "LegacyDaedalusPrivateKey" + +------------------------------------------------------------------------------------- +-- Linear fee + +foreign import data LinearFee :: Type + +foreign import linearFee_constant :: LinearFee -> BigNum +foreign import linearFee_coefficient :: LinearFee -> BigNum +foreign import linearFee_new :: BigNum -> BigNum -> LinearFee + +instance IsCsl LinearFee where + className _ = "LinearFee" + +------------------------------------------------------------------------------------- +-- MIRTo stake credentials + +foreign import data MIRToStakeCredentials :: Type + +foreign import mirToStakeCredentials_new :: Effect MIRToStakeCredentials + +instance IsCsl MIRToStakeCredentials where + className _ = "MIRToStakeCredentials" +instance IsBytes MIRToStakeCredentials +instance IsJson MIRToStakeCredentials +instance EncodeAeson MIRToStakeCredentials where encodeAeson = cslToAeson +instance DecodeAeson MIRToStakeCredentials where decodeAeson = cslFromAeson +instance Show MIRToStakeCredentials where show = showViaJson + +instance IsMapContainer MIRToStakeCredentials StakeCredential Int + +------------------------------------------------------------------------------------- +-- Metadata list + +foreign import data MetadataList :: Type + +foreign import metadataList_new :: Effect MetadataList + +instance IsCsl MetadataList where + className _ = "MetadataList" +instance IsBytes MetadataList +instance EncodeAeson MetadataList where encodeAeson = cslToAesonViaBytes +instance DecodeAeson MetadataList where decodeAeson = cslFromAesonViaBytes +instance Show MetadataList where show = showViaBytes + +instance IsListContainer MetadataList TransactionMetadatum + +------------------------------------------------------------------------------------- +-- Metadata map + +foreign import data MetadataMap :: Type + +foreign import metadataMap_new :: Effect MetadataMap +foreign import metadataMap_insertStr :: MetadataMap -> String -> TransactionMetadatum -> Effect ((Nullable TransactionMetadatum)) +foreign import metadataMap_insertI32 :: MetadataMap -> Number -> TransactionMetadatum -> Effect ((Nullable TransactionMetadatum)) +foreign import metadataMap_getStr :: MetadataMap -> String -> Effect TransactionMetadatum +foreign import metadataMap_getI32 :: MetadataMap -> Number -> Effect TransactionMetadatum +foreign import metadataMap_has :: MetadataMap -> TransactionMetadatum -> Effect Boolean + +instance IsCsl MetadataMap where + className _ = "MetadataMap" +instance IsBytes MetadataMap +instance EncodeAeson MetadataMap where encodeAeson = cslToAesonViaBytes +instance DecodeAeson MetadataMap where decodeAeson = cslFromAesonViaBytes +instance Show MetadataMap where show = showViaBytes + +instance IsMapContainer MetadataMap TransactionMetadatum TransactionMetadatum + +------------------------------------------------------------------------------------- +-- Mint + +foreign import data Mint :: Type + +foreign import mint_new :: Effect Mint +foreign import mint_newFromEntry :: ScriptHash -> MintAssets -> Effect Mint +foreign import mint_getAll :: Mint -> ScriptHash -> Nullable MintsAssets +foreign import mint_asPositiveMultiasset :: Mint -> Effect MultiAsset +foreign import mint_asNegativeMultiasset :: Mint -> Effect MultiAsset + +instance IsCsl Mint where + className _ = "Mint" +instance IsBytes Mint +instance IsJson Mint +instance EncodeAeson Mint where encodeAeson = cslToAeson +instance DecodeAeson Mint where decodeAeson = cslFromAeson +instance Show Mint where show = showViaJson + +instance IsMapContainer Mint ScriptHash MintAssets + +------------------------------------------------------------------------------------- +-- Mint assets + +foreign import data MintAssets :: Type + +foreign import mintAssets_new :: Effect MintAssets +foreign import mintAssets_newFromEntry :: AssetName -> Int -> MintAssets + +instance IsCsl MintAssets where + className _ = "MintAssets" + +instance IsMapContainer MintAssets AssetName Int + +------------------------------------------------------------------------------------- +-- Mint witness + +foreign import data MintWitness :: Type + +foreign import mintWitness_newNativeScript :: NativeScript -> MintWitness +foreign import mintWitness_newPlutusScript :: PlutusScriptSource -> Redeemer -> MintWitness + +instance IsCsl MintWitness where + className _ = "MintWitness" + +------------------------------------------------------------------------------------- +-- Mints assets + +foreign import data MintsAssets :: Type + + + +instance IsCsl MintsAssets where + className _ = "MintsAssets" + +------------------------------------------------------------------------------------- +-- Move instantaneous reward + +foreign import data MoveInstantaneousReward :: Type + +foreign import moveInstantaneousReward_newToOtherPot :: Number -> BigNum -> MoveInstantaneousReward +foreign import moveInstantaneousReward_newToStakeCreds :: Number -> MIRToStakeCredentials -> MoveInstantaneousReward +foreign import moveInstantaneousReward_pot :: MoveInstantaneousReward -> Number +foreign import moveInstantaneousReward_kind :: MoveInstantaneousReward -> Number +foreign import moveInstantaneousReward_asToOtherPot :: MoveInstantaneousReward -> Nullable BigNum +foreign import moveInstantaneousReward_asToStakeCreds :: MoveInstantaneousReward -> Nullable MIRToStakeCredentials + +instance IsCsl MoveInstantaneousReward where + className _ = "MoveInstantaneousReward" +instance IsBytes MoveInstantaneousReward +instance IsJson MoveInstantaneousReward +instance EncodeAeson MoveInstantaneousReward where encodeAeson = cslToAeson +instance DecodeAeson MoveInstantaneousReward where decodeAeson = cslFromAeson +instance Show MoveInstantaneousReward where show = showViaJson + +------------------------------------------------------------------------------------- +-- Move instantaneous rewards cert + +foreign import data MoveInstantaneousRewardsCert :: Type + +foreign import moveInstantaneousRewardsCert_moveInstantaneousReward :: MoveInstantaneousRewardsCert -> MoveInstantaneousReward +foreign import moveInstantaneousRewardsCert_new :: MoveInstantaneousReward -> MoveInstantaneousRewardsCert + +instance IsCsl MoveInstantaneousRewardsCert where + className _ = "MoveInstantaneousRewardsCert" +instance IsBytes MoveInstantaneousRewardsCert +instance IsJson MoveInstantaneousRewardsCert +instance EncodeAeson MoveInstantaneousRewardsCert where encodeAeson = cslToAeson +instance DecodeAeson MoveInstantaneousRewardsCert where decodeAeson = cslFromAeson +instance Show MoveInstantaneousRewardsCert where show = showViaJson + +------------------------------------------------------------------------------------- +-- Multi asset + +foreign import data MultiAsset :: Type + +foreign import multiAsset_new :: Effect MultiAsset +foreign import multiAsset_setAsset :: MultiAsset -> ScriptHash -> AssetName -> BigNum -> Effect ((Nullable BigNum)) +foreign import multiAsset_getAsset :: MultiAsset -> ScriptHash -> AssetName -> Effect BigNum +foreign import multiAsset_sub :: MultiAsset -> MultiAsset -> Effect MultiAsset + +instance IsCsl MultiAsset where + className _ = "MultiAsset" +instance IsBytes MultiAsset +instance IsJson MultiAsset +instance EncodeAeson MultiAsset where encodeAeson = cslToAeson +instance DecodeAeson MultiAsset where decodeAeson = cslFromAeson +instance Show MultiAsset where show = showViaJson + +instance IsMapContainer MultiAsset ScriptHash Assets + +------------------------------------------------------------------------------------- +-- Multi host name + +foreign import data MultiHostName :: Type + +foreign import multiHostName_dnsName :: MultiHostName -> DNSRecordSRV +foreign import multiHostName_new :: DNSRecordSRV -> MultiHostName + +instance IsCsl MultiHostName where + className _ = "MultiHostName" +instance IsBytes MultiHostName +instance IsJson MultiHostName +instance EncodeAeson MultiHostName where encodeAeson = cslToAeson +instance DecodeAeson MultiHostName where decodeAeson = cslFromAeson +instance Show MultiHostName where show = showViaJson + +------------------------------------------------------------------------------------- +-- Native script + +foreign import data NativeScript :: Type + +foreign import nativeScript_hash :: NativeScript -> ScriptHash +foreign import nativeScript_newScriptPubkey :: ScriptPubkey -> NativeScript +foreign import nativeScript_newScriptAll :: ScriptAll -> NativeScript +foreign import nativeScript_newScriptAny :: ScriptAny -> NativeScript +foreign import nativeScript_newScriptNOfK :: ScriptNOfK -> NativeScript +foreign import nativeScript_newTimelockStart :: TimelockStart -> NativeScript +foreign import nativeScript_newTimelockExpiry :: TimelockExpiry -> NativeScript +foreign import nativeScript_kind :: NativeScript -> Number +foreign import nativeScript_asScriptPubkey :: NativeScript -> Nullable ScriptPubkey +foreign import nativeScript_asScriptAll :: NativeScript -> Nullable ScriptAll +foreign import nativeScript_asScriptAny :: NativeScript -> Nullable ScriptAny +foreign import nativeScript_asScriptNOfK :: NativeScript -> Nullable ScriptNOfK +foreign import nativeScript_asTimelockStart :: NativeScript -> Nullable TimelockStart +foreign import nativeScript_asTimelockExpiry :: NativeScript -> Nullable TimelockExpiry +foreign import nativeScript_getRequiredSigners :: NativeScript -> Ed25519KeyHashes + +instance IsCsl NativeScript where + className _ = "NativeScript" +instance IsBytes NativeScript +instance IsJson NativeScript +instance EncodeAeson NativeScript where encodeAeson = cslToAeson +instance DecodeAeson NativeScript where decodeAeson = cslFromAeson +instance Show NativeScript where show = showViaJson + +------------------------------------------------------------------------------------- +-- Native scripts + +foreign import data NativeScripts :: Type + +foreign import nativeScripts_new :: Effect NativeScripts + +instance IsCsl NativeScripts where + className _ = "NativeScripts" + +instance IsListContainer NativeScripts NativeScript + +------------------------------------------------------------------------------------- +-- Network id + +foreign import data NetworkId :: Type + +foreign import networkId_testnet :: NetworkId +foreign import networkId_mainnet :: NetworkId +foreign import networkId_kind :: NetworkId -> Number + +instance IsCsl NetworkId where + className _ = "NetworkId" +instance IsBytes NetworkId +instance IsJson NetworkId +instance EncodeAeson NetworkId where encodeAeson = cslToAeson +instance DecodeAeson NetworkId where decodeAeson = cslFromAeson +instance Show NetworkId where show = showViaJson + +------------------------------------------------------------------------------------- +-- Network info + +foreign import data NetworkInfo :: Type + +foreign import networkInfo_new :: Number -> Number -> NetworkInfo +foreign import networkInfo_networkId :: NetworkInfo -> Number +foreign import networkInfo_protocolMagic :: NetworkInfo -> Number +foreign import networkInfo_testnetPreview :: NetworkInfo +foreign import networkInfo_testnetPreprod :: NetworkInfo +foreign import networkInfo_testnet :: NetworkInfo +foreign import networkInfo_mainnet :: NetworkInfo + +instance IsCsl NetworkInfo where + className _ = "NetworkInfo" + +------------------------------------------------------------------------------------- +-- Nonce + +foreign import data Nonce :: Type + +foreign import nonce_newIdentity :: Nonce +foreign import nonce_newFromHash :: ByteArray -> Nonce +foreign import nonce_getHash :: Nonce -> Nullable ByteArray + +instance IsCsl Nonce where + className _ = "Nonce" +instance IsBytes Nonce +instance IsJson Nonce +instance EncodeAeson Nonce where encodeAeson = cslToAeson +instance DecodeAeson Nonce where decodeAeson = cslFromAeson +instance Show Nonce where show = showViaJson + +------------------------------------------------------------------------------------- +-- Operational cert + +foreign import data OperationalCert :: Type + +foreign import operationalCert_hotVkey :: OperationalCert -> KESVKey +foreign import operationalCert_sequenceNumber :: OperationalCert -> Number +foreign import operationalCert_kesPeriod :: OperationalCert -> Number +foreign import operationalCert_sigma :: OperationalCert -> Ed25519Signature +foreign import operationalCert_new :: KESVKey -> Number -> Number -> Ed25519Signature -> OperationalCert + +instance IsCsl OperationalCert where + className _ = "OperationalCert" +instance IsBytes OperationalCert +instance IsJson OperationalCert +instance EncodeAeson OperationalCert where encodeAeson = cslToAeson +instance DecodeAeson OperationalCert where decodeAeson = cslFromAeson +instance Show OperationalCert where show = showViaJson + +------------------------------------------------------------------------------------- +-- Output datum + +foreign import data OutputDatum :: Type + +foreign import outputDatum_newDataHash :: DataHash -> OutputDatum +foreign import outputDatum_newData :: PlutusData -> OutputDatum +foreign import outputDatum_dataHash :: OutputDatum -> Nullable DataHash +foreign import outputDatum_data :: OutputDatum -> Nullable PlutusData + +instance IsCsl OutputDatum where + className _ = "OutputDatum" + +------------------------------------------------------------------------------------- +-- Plutus data + +foreign import data PlutusData :: Type + +foreign import plutusData_newConstrPlutusData :: ConstrPlutusData -> PlutusData +foreign import plutusData_newEmptyConstrPlutusData :: BigNum -> PlutusData +foreign import plutusData_newSingleValueConstrPlutusData :: BigNum -> PlutusData -> PlutusData +foreign import plutusData_newMap :: PlutusMap -> PlutusData +foreign import plutusData_newList :: PlutusList -> PlutusData +foreign import plutusData_newInteger :: BigInt -> PlutusData +foreign import plutusData_newBytes :: ByteArray -> PlutusData +foreign import plutusData_kind :: PlutusData -> Number +foreign import plutusData_asConstrPlutusData :: PlutusData -> Nullable ConstrPlutusData +foreign import plutusData_asMap :: PlutusData -> Nullable PlutusMap +foreign import plutusData_asList :: PlutusData -> Nullable PlutusList +foreign import plutusData_asInteger :: PlutusData -> Nullable BigInt +foreign import plutusData_asBytes :: PlutusData -> Nullable ByteArray +foreign import plutusData_fromAddress :: Address -> PlutusData + +instance IsCsl PlutusData where + className _ = "PlutusData" +instance IsBytes PlutusData +instance IsJson PlutusData +instance EncodeAeson PlutusData where encodeAeson = cslToAeson +instance DecodeAeson PlutusData where decodeAeson = cslFromAeson +instance Show PlutusData where show = showViaJson + +------------------------------------------------------------------------------------- +-- Plutus list + +foreign import data PlutusList :: Type + +foreign import plutusList_new :: Effect PlutusList + +instance IsCsl PlutusList where + className _ = "PlutusList" +instance IsBytes PlutusList +instance EncodeAeson PlutusList where encodeAeson = cslToAesonViaBytes +instance DecodeAeson PlutusList where decodeAeson = cslFromAesonViaBytes +instance Show PlutusList where show = showViaBytes + +instance IsListContainer PlutusList PlutusData + +------------------------------------------------------------------------------------- +-- Plutus map + +foreign import data PlutusMap :: Type + +foreign import plutusMap_new :: Effect PlutusMap + +instance IsCsl PlutusMap where + className _ = "PlutusMap" +instance IsBytes PlutusMap +instance EncodeAeson PlutusMap where encodeAeson = cslToAesonViaBytes +instance DecodeAeson PlutusMap where decodeAeson = cslFromAesonViaBytes +instance Show PlutusMap where show = showViaBytes + +instance IsMapContainer PlutusMap PlutusData PlutusData + +------------------------------------------------------------------------------------- +-- Plutus script + +foreign import data PlutusScript :: Type + +foreign import plutusScript_new :: ByteArray -> PlutusScript +foreign import plutusScript_newV2 :: ByteArray -> PlutusScript +foreign import plutusScript_newWithVersion :: ByteArray -> Language -> PlutusScript +foreign import plutusScript_bytes :: PlutusScript -> ByteArray +foreign import plutusScript_fromBytesV2 :: ByteArray -> PlutusScript +foreign import plutusScript_fromBytesWithVersion :: ByteArray -> Language -> PlutusScript +foreign import plutusScript_fromHexWithVersion :: String -> Language -> PlutusScript +foreign import plutusScript_hash :: PlutusScript -> ScriptHash +foreign import plutusScript_languageVersion :: PlutusScript -> Language + +instance IsCsl PlutusScript where + className _ = "PlutusScript" +instance IsBytes PlutusScript +instance EncodeAeson PlutusScript where encodeAeson = cslToAesonViaBytes +instance DecodeAeson PlutusScript where decodeAeson = cslFromAesonViaBytes +instance Show PlutusScript where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Plutus script source + +foreign import data PlutusScriptSource :: Type + +foreign import plutusScriptSource_new :: PlutusScript -> PlutusScriptSource +foreign import plutusScriptSource_newRefInput :: ScriptHash -> TransactionInput -> PlutusScriptSource +foreign import plutusScriptSource_newRefInputWithLangVer :: ScriptHash -> TransactionInput -> Language -> PlutusScriptSource + +instance IsCsl PlutusScriptSource where + className _ = "PlutusScriptSource" + +------------------------------------------------------------------------------------- +-- Plutus scripts + +foreign import data PlutusScripts :: Type + +foreign import plutusScripts_new :: Effect PlutusScripts + +instance IsCsl PlutusScripts where + className _ = "PlutusScripts" +instance IsBytes PlutusScripts +instance IsJson PlutusScripts +instance EncodeAeson PlutusScripts where encodeAeson = cslToAeson +instance DecodeAeson PlutusScripts where decodeAeson = cslFromAeson +instance Show PlutusScripts where show = showViaJson + +instance IsListContainer PlutusScripts PlutusScript + +------------------------------------------------------------------------------------- +-- Plutus witness + +foreign import data PlutusWitness :: Type + +foreign import plutusWitness_new :: PlutusScript -> PlutusData -> Redeemer -> PlutusWitness +foreign import plutusWitness_newWithRef :: PlutusScriptSource -> DatumSource -> Redeemer -> PlutusWitness +foreign import plutusWitness_newWithoutDatum :: PlutusScript -> Redeemer -> PlutusWitness +foreign import plutusWitness_newWithRefWithoutDatum :: PlutusScriptSource -> Redeemer -> PlutusWitness +foreign import plutusWitness_script :: PlutusWitness -> Nullable PlutusScript +foreign import plutusWitness_datum :: PlutusWitness -> Nullable PlutusData +foreign import plutusWitness_redeemer :: PlutusWitness -> Redeemer + +instance IsCsl PlutusWitness where + className _ = "PlutusWitness" + +------------------------------------------------------------------------------------- +-- Plutus witnesses + +foreign import data PlutusWitnesses :: Type + +foreign import plutusWitnesses_new :: Effect PlutusWitnesses + +instance IsCsl PlutusWitnesses where + className _ = "PlutusWitnesses" + +instance IsListContainer PlutusWitnesses PlutusWitness + +------------------------------------------------------------------------------------- +-- Pointer + +foreign import data Pointer :: Type + +foreign import pointer_new :: Number -> Number -> Number -> Pointer +foreign import pointer_newPointer :: BigNum -> BigNum -> BigNum -> Pointer +foreign import pointer_slot :: Pointer -> Number +foreign import pointer_txIndex :: Pointer -> Number +foreign import pointer_certIndex :: Pointer -> Number +foreign import pointer_slotBignum :: Pointer -> BigNum +foreign import pointer_txIndexBignum :: Pointer -> BigNum +foreign import pointer_certIndexBignum :: Pointer -> BigNum + +instance IsCsl Pointer where + className _ = "Pointer" + +------------------------------------------------------------------------------------- +-- Pointer address + +foreign import data PointerAddress :: Type + +foreign import pointerAddress_new :: Number -> StakeCredential -> Pointer -> PointerAddress +foreign import pointerAddress_paymentCred :: PointerAddress -> StakeCredential +foreign import pointerAddress_stakePointer :: PointerAddress -> Pointer +foreign import pointerAddress_toAddress :: PointerAddress -> Address +foreign import pointerAddress_fromAddress :: Address -> Nullable PointerAddress + +instance IsCsl PointerAddress where + className _ = "PointerAddress" + +------------------------------------------------------------------------------------- +-- Pool metadata + +foreign import data PoolMetadata :: Type + +foreign import poolMetadata_url :: PoolMetadata -> URL +foreign import poolMetadata_poolMetadataHash :: PoolMetadata -> PoolMetadataHash +foreign import poolMetadata_new :: URL -> PoolMetadataHash -> PoolMetadata + +instance IsCsl PoolMetadata where + className _ = "PoolMetadata" +instance IsBytes PoolMetadata +instance IsJson PoolMetadata +instance EncodeAeson PoolMetadata where encodeAeson = cslToAeson +instance DecodeAeson PoolMetadata where decodeAeson = cslFromAeson +instance Show PoolMetadata where show = showViaJson + +------------------------------------------------------------------------------------- +-- Pool metadata hash + +foreign import data PoolMetadataHash :: Type + +foreign import poolMetadataHash_toBech32 :: PoolMetadataHash -> String -> String +foreign import poolMetadataHash_fromBech32 :: String -> Nullable PoolMetadataHash + +instance IsCsl PoolMetadataHash where + className _ = "PoolMetadataHash" +instance IsBytes PoolMetadataHash +instance EncodeAeson PoolMetadataHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson PoolMetadataHash where decodeAeson = cslFromAesonViaBytes +instance Show PoolMetadataHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Pool params + +foreign import data PoolParams :: Type + +foreign import poolParams_operator :: PoolParams -> Ed25519KeyHash +foreign import poolParams_vrfKeyhash :: PoolParams -> VRFKeyHash +foreign import poolParams_pledge :: PoolParams -> BigNum +foreign import poolParams_cost :: PoolParams -> BigNum +foreign import poolParams_margin :: PoolParams -> UnitInterval +foreign import poolParams_rewardAccount :: PoolParams -> RewardAddress +foreign import poolParams_poolOwners :: PoolParams -> Ed25519KeyHashes +foreign import poolParams_relays :: PoolParams -> Relays +foreign import poolParams_poolMetadata :: PoolParams -> Nullable PoolMetadata +foreign import poolParams_new :: Ed25519KeyHash -> VRFKeyHash -> BigNum -> BigNum -> UnitInterval -> RewardAddress -> Ed25519KeyHashes -> Relays -> PoolMetadata -> PoolParams + +instance IsCsl PoolParams where + className _ = "PoolParams" +instance IsBytes PoolParams +instance IsJson PoolParams +instance EncodeAeson PoolParams where encodeAeson = cslToAeson +instance DecodeAeson PoolParams where decodeAeson = cslFromAeson +instance Show PoolParams where show = showViaJson + +------------------------------------------------------------------------------------- +-- Pool registration + +foreign import data PoolRegistration :: Type + +foreign import poolRegistration_poolParams :: PoolRegistration -> PoolParams +foreign import poolRegistration_new :: PoolParams -> PoolRegistration + +instance IsCsl PoolRegistration where + className _ = "PoolRegistration" +instance IsBytes PoolRegistration +instance IsJson PoolRegistration +instance EncodeAeson PoolRegistration where encodeAeson = cslToAeson +instance DecodeAeson PoolRegistration where decodeAeson = cslFromAeson +instance Show PoolRegistration where show = showViaJson + +------------------------------------------------------------------------------------- +-- Pool retirement + +foreign import data PoolRetirement :: Type + +foreign import poolRetirement_poolKeyhash :: PoolRetirement -> Ed25519KeyHash +foreign import poolRetirement_epoch :: PoolRetirement -> Number +foreign import poolRetirement_new :: Ed25519KeyHash -> Number -> PoolRetirement + +instance IsCsl PoolRetirement where + className _ = "PoolRetirement" +instance IsBytes PoolRetirement +instance IsJson PoolRetirement +instance EncodeAeson PoolRetirement where encodeAeson = cslToAeson +instance DecodeAeson PoolRetirement where decodeAeson = cslFromAeson +instance Show PoolRetirement where show = showViaJson + +------------------------------------------------------------------------------------- +-- Private key + +foreign import data PrivateKey :: Type + +foreign import privateKey_free :: PrivateKey -> Nullable Unit +foreign import privateKey_toPublic :: PrivateKey -> PublicKey +foreign import privateKey_generateEd25519 :: PrivateKey +foreign import privateKey_generateEd25519extended :: PrivateKey +foreign import privateKey_fromBech32 :: String -> Nullable PrivateKey +foreign import privateKey_toBech32 :: PrivateKey -> String +foreign import privateKey_asBytes :: PrivateKey -> ByteArray +foreign import privateKey_fromExtendedBytes :: ByteArray -> Nullable PrivateKey +foreign import privateKey_fromNormalBytes :: ByteArray -> Nullable PrivateKey +foreign import privateKey_sign :: PrivateKey -> ByteArray -> Ed25519Signature +foreign import privateKey_toHex :: PrivateKey -> String +foreign import privateKey_fromHex :: String -> Nullable PrivateKey + +instance IsCsl PrivateKey where + className _ = "PrivateKey" + +------------------------------------------------------------------------------------- +-- Proposed protocol parameter updates + +foreign import data ProposedProtocolParameterUpdates :: Type + +foreign import proposedProtocolParameterUpdates_new :: Effect ProposedProtocolParameterUpdates + +instance IsCsl ProposedProtocolParameterUpdates where + className _ = "ProposedProtocolParameterUpdates" +instance IsBytes ProposedProtocolParameterUpdates +instance IsJson ProposedProtocolParameterUpdates +instance EncodeAeson ProposedProtocolParameterUpdates where encodeAeson = cslToAeson +instance DecodeAeson ProposedProtocolParameterUpdates where decodeAeson = cslFromAeson +instance Show ProposedProtocolParameterUpdates where show = showViaJson + +instance IsMapContainer ProposedProtocolParameterUpdates GenesisHash ProtocolParamUpdate + +------------------------------------------------------------------------------------- +-- Protocol param update + +foreign import data ProtocolParamUpdate :: Type + +foreign import protocolParamUpdate_setMinfeeA :: ProtocolParamUpdate -> BigNum -> Effect Unit +foreign import protocolParamUpdate_minfeeA :: ProtocolParamUpdate -> Nullable BigNum +foreign import protocolParamUpdate_setMinfeeB :: ProtocolParamUpdate -> BigNum -> Effect Unit +foreign import protocolParamUpdate_minfeeB :: ProtocolParamUpdate -> Nullable BigNum +foreign import protocolParamUpdate_setMaxBlockBodySize :: ProtocolParamUpdate -> Number -> Effect Unit +foreign import protocolParamUpdate_maxBlockBodySize :: ProtocolParamUpdate -> Nullable Number +foreign import protocolParamUpdate_setMaxTxSize :: ProtocolParamUpdate -> Number -> Effect Unit +foreign import protocolParamUpdate_maxTxSize :: ProtocolParamUpdate -> Nullable Number +foreign import protocolParamUpdate_setMaxBlockHeaderSize :: ProtocolParamUpdate -> Number -> Effect Unit +foreign import protocolParamUpdate_maxBlockHeaderSize :: ProtocolParamUpdate -> Nullable Number +foreign import protocolParamUpdate_setKeyDeposit :: ProtocolParamUpdate -> BigNum -> Effect Unit +foreign import protocolParamUpdate_keyDeposit :: ProtocolParamUpdate -> Nullable BigNum +foreign import protocolParamUpdate_setPoolDeposit :: ProtocolParamUpdate -> BigNum -> Effect Unit +foreign import protocolParamUpdate_poolDeposit :: ProtocolParamUpdate -> Nullable BigNum +foreign import protocolParamUpdate_setMaxEpoch :: ProtocolParamUpdate -> Number -> Effect Unit +foreign import protocolParamUpdate_maxEpoch :: ProtocolParamUpdate -> Nullable Number +foreign import protocolParamUpdate_setNOpt :: ProtocolParamUpdate -> Number -> Effect Unit +foreign import protocolParamUpdate_nOpt :: ProtocolParamUpdate -> Nullable Number +foreign import protocolParamUpdate_setPoolPledgeInfluence :: ProtocolParamUpdate -> UnitInterval -> Effect Unit +foreign import protocolParamUpdate_poolPledgeInfluence :: ProtocolParamUpdate -> Nullable UnitInterval +foreign import protocolParamUpdate_setExpansionRate :: ProtocolParamUpdate -> UnitInterval -> Effect Unit +foreign import protocolParamUpdate_expansionRate :: ProtocolParamUpdate -> Nullable UnitInterval +foreign import protocolParamUpdate_setTreasuryGrowthRate :: ProtocolParamUpdate -> UnitInterval -> Effect Unit +foreign import protocolParamUpdate_treasuryGrowthRate :: ProtocolParamUpdate -> Nullable UnitInterval +foreign import protocolParamUpdate_d :: ProtocolParamUpdate -> Nullable UnitInterval +foreign import protocolParamUpdate_extraEntropy :: ProtocolParamUpdate -> Nullable Nonce +foreign import protocolParamUpdate_setProtocolVersion :: ProtocolParamUpdate -> ProtocolVersion -> Effect Unit +foreign import protocolParamUpdate_protocolVersion :: ProtocolParamUpdate -> Nullable ProtocolVersion +foreign import protocolParamUpdate_setMinPoolCost :: ProtocolParamUpdate -> BigNum -> Effect Unit +foreign import protocolParamUpdate_minPoolCost :: ProtocolParamUpdate -> Nullable BigNum +foreign import protocolParamUpdate_setAdaPerUtxoByte :: ProtocolParamUpdate -> BigNum -> Effect Unit +foreign import protocolParamUpdate_adaPerUtxoByte :: ProtocolParamUpdate -> Nullable BigNum +foreign import protocolParamUpdate_setCostModels :: ProtocolParamUpdate -> Costmdls -> Effect Unit +foreign import protocolParamUpdate_costModels :: ProtocolParamUpdate -> Nullable Costmdls +foreign import protocolParamUpdate_setExecutionCosts :: ProtocolParamUpdate -> ExUnitPrices -> Effect Unit +foreign import protocolParamUpdate_executionCosts :: ProtocolParamUpdate -> Nullable ExUnitPrices +foreign import protocolParamUpdate_setMaxTxExUnits :: ProtocolParamUpdate -> ExUnits -> Effect Unit +foreign import protocolParamUpdate_maxTxExUnits :: ProtocolParamUpdate -> Nullable ExUnits +foreign import protocolParamUpdate_setMaxBlockExUnits :: ProtocolParamUpdate -> ExUnits -> Effect Unit +foreign import protocolParamUpdate_maxBlockExUnits :: ProtocolParamUpdate -> Nullable ExUnits +foreign import protocolParamUpdate_setMaxValueSize :: ProtocolParamUpdate -> Number -> Effect Unit +foreign import protocolParamUpdate_maxValueSize :: ProtocolParamUpdate -> Nullable Number +foreign import protocolParamUpdate_setCollateralPercentage :: ProtocolParamUpdate -> Number -> Effect Unit +foreign import protocolParamUpdate_collateralPercentage :: ProtocolParamUpdate -> Nullable Number +foreign import protocolParamUpdate_setMaxCollateralInputs :: ProtocolParamUpdate -> Number -> Effect Unit +foreign import protocolParamUpdate_maxCollateralInputs :: ProtocolParamUpdate -> Nullable Number +foreign import protocolParamUpdate_new :: ProtocolParamUpdate + +instance IsCsl ProtocolParamUpdate where + className _ = "ProtocolParamUpdate" +instance IsBytes ProtocolParamUpdate +instance IsJson ProtocolParamUpdate +instance EncodeAeson ProtocolParamUpdate where encodeAeson = cslToAeson +instance DecodeAeson ProtocolParamUpdate where decodeAeson = cslFromAeson +instance Show ProtocolParamUpdate where show = showViaJson + +------------------------------------------------------------------------------------- +-- Protocol version + +foreign import data ProtocolVersion :: Type + +foreign import protocolVersion_major :: ProtocolVersion -> Number +foreign import protocolVersion_minor :: ProtocolVersion -> Number +foreign import protocolVersion_new :: Number -> Number -> ProtocolVersion + +instance IsCsl ProtocolVersion where + className _ = "ProtocolVersion" +instance IsBytes ProtocolVersion +instance IsJson ProtocolVersion +instance EncodeAeson ProtocolVersion where encodeAeson = cslToAeson +instance DecodeAeson ProtocolVersion where decodeAeson = cslFromAeson +instance Show ProtocolVersion where show = showViaJson + +------------------------------------------------------------------------------------- +-- Public key + +foreign import data PublicKey :: Type + +foreign import publicKey_free :: PublicKey -> Nullable Unit +foreign import publicKey_fromBech32 :: String -> Nullable PublicKey +foreign import publicKey_toBech32 :: PublicKey -> String +foreign import publicKey_asBytes :: PublicKey -> ByteArray +foreign import publicKey_fromBytes :: ByteArray -> Nullable PublicKey +foreign import publicKey_verify :: PublicKey -> ByteArray -> Ed25519Signature -> Boolean +foreign import publicKey_hash :: PublicKey -> Ed25519KeyHash +foreign import publicKey_toHex :: PublicKey -> String +foreign import publicKey_fromHex :: String -> Nullable PublicKey + +instance IsCsl PublicKey where + className _ = "PublicKey" + +------------------------------------------------------------------------------------- +-- Redeemer + +foreign import data Redeemer :: Type + +foreign import redeemer_tag :: Redeemer -> RedeemerTag +foreign import redeemer_index :: Redeemer -> BigNum +foreign import redeemer_data :: Redeemer -> PlutusData +foreign import redeemer_exUnits :: Redeemer -> ExUnits +foreign import redeemer_new :: RedeemerTag -> BigNum -> PlutusData -> ExUnits -> Redeemer + +instance IsCsl Redeemer where + className _ = "Redeemer" +instance IsBytes Redeemer +instance IsJson Redeemer +instance EncodeAeson Redeemer where encodeAeson = cslToAeson +instance DecodeAeson Redeemer where decodeAeson = cslFromAeson +instance Show Redeemer where show = showViaJson + +------------------------------------------------------------------------------------- +-- Redeemer tag + +foreign import data RedeemerTag :: Type + +foreign import redeemerTag_newSpend :: RedeemerTag +foreign import redeemerTag_newMint :: RedeemerTag +foreign import redeemerTag_newCert :: RedeemerTag +foreign import redeemerTag_newReward :: RedeemerTag +foreign import redeemerTag_kind :: RedeemerTag -> Number + +instance IsCsl RedeemerTag where + className _ = "RedeemerTag" +instance IsBytes RedeemerTag +instance IsJson RedeemerTag +instance EncodeAeson RedeemerTag where encodeAeson = cslToAeson +instance DecodeAeson RedeemerTag where decodeAeson = cslFromAeson +instance Show RedeemerTag where show = showViaJson + +------------------------------------------------------------------------------------- +-- Redeemers + +foreign import data Redeemers :: Type + +foreign import redeemers_new :: Effect Redeemers +foreign import redeemers_totalExUnits :: Redeemers -> ExUnits + +instance IsCsl Redeemers where + className _ = "Redeemers" +instance IsBytes Redeemers +instance IsJson Redeemers +instance EncodeAeson Redeemers where encodeAeson = cslToAeson +instance DecodeAeson Redeemers where decodeAeson = cslFromAeson +instance Show Redeemers where show = showViaJson + +instance IsListContainer Redeemers Redeemer + +------------------------------------------------------------------------------------- +-- Relay + +foreign import data Relay :: Type + +foreign import relay_newSingleHostAddr :: SingleHostAddr -> Relay +foreign import relay_newSingleHostName :: SingleHostName -> Relay +foreign import relay_newMultiHostName :: MultiHostName -> Relay +foreign import relay_kind :: Relay -> Number +foreign import relay_asSingleHostAddr :: Relay -> Nullable SingleHostAddr +foreign import relay_asSingleHostName :: Relay -> Nullable SingleHostName +foreign import relay_asMultiHostName :: Relay -> Nullable MultiHostName + +instance IsCsl Relay where + className _ = "Relay" +instance IsBytes Relay +instance IsJson Relay +instance EncodeAeson Relay where encodeAeson = cslToAeson +instance DecodeAeson Relay where decodeAeson = cslFromAeson +instance Show Relay where show = showViaJson + +------------------------------------------------------------------------------------- +-- Relays + +foreign import data Relays :: Type + +foreign import relays_new :: Effect Relays + +instance IsCsl Relays where + className _ = "Relays" +instance IsBytes Relays +instance IsJson Relays +instance EncodeAeson Relays where encodeAeson = cslToAeson +instance DecodeAeson Relays where decodeAeson = cslFromAeson +instance Show Relays where show = showViaJson + +instance IsListContainer Relays Relay + +------------------------------------------------------------------------------------- +-- Reward address + +foreign import data RewardAddress :: Type + +foreign import rewardAddress_new :: Number -> StakeCredential -> RewardAddress +foreign import rewardAddress_paymentCred :: RewardAddress -> StakeCredential +foreign import rewardAddress_toAddress :: RewardAddress -> Address +foreign import rewardAddress_fromAddress :: Address -> Nullable RewardAddress + +instance IsCsl RewardAddress where + className _ = "RewardAddress" + +------------------------------------------------------------------------------------- +-- Reward addresses + +foreign import data RewardAddresses :: Type + +foreign import rewardAddresses_new :: Effect RewardAddresses + +instance IsCsl RewardAddresses where + className _ = "RewardAddresses" +instance IsBytes RewardAddresses +instance IsJson RewardAddresses +instance EncodeAeson RewardAddresses where encodeAeson = cslToAeson +instance DecodeAeson RewardAddresses where decodeAeson = cslFromAeson +instance Show RewardAddresses where show = showViaJson + +instance IsListContainer RewardAddresses RewardAddress + +------------------------------------------------------------------------------------- +-- Script all + +foreign import data ScriptAll :: Type + +foreign import scriptAll_nativeScripts :: ScriptAll -> NativeScripts +foreign import scriptAll_new :: NativeScripts -> ScriptAll + +instance IsCsl ScriptAll where + className _ = "ScriptAll" +instance IsBytes ScriptAll +instance IsJson ScriptAll +instance EncodeAeson ScriptAll where encodeAeson = cslToAeson +instance DecodeAeson ScriptAll where decodeAeson = cslFromAeson +instance Show ScriptAll where show = showViaJson + +------------------------------------------------------------------------------------- +-- Script any + +foreign import data ScriptAny :: Type + +foreign import scriptAny_nativeScripts :: ScriptAny -> NativeScripts +foreign import scriptAny_new :: NativeScripts -> ScriptAny + +instance IsCsl ScriptAny where + className _ = "ScriptAny" +instance IsBytes ScriptAny +instance IsJson ScriptAny +instance EncodeAeson ScriptAny where encodeAeson = cslToAeson +instance DecodeAeson ScriptAny where decodeAeson = cslFromAeson +instance Show ScriptAny where show = showViaJson + +------------------------------------------------------------------------------------- +-- Script data hash + +foreign import data ScriptDataHash :: Type + +foreign import scriptDataHash_toBech32 :: ScriptDataHash -> String -> String +foreign import scriptDataHash_fromBech32 :: String -> Nullable ScriptDataHash + +instance IsCsl ScriptDataHash where + className _ = "ScriptDataHash" +instance IsBytes ScriptDataHash +instance EncodeAeson ScriptDataHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson ScriptDataHash where decodeAeson = cslFromAesonViaBytes +instance Show ScriptDataHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Script hash + +foreign import data ScriptHash :: Type + +foreign import scriptHash_toBech32 :: ScriptHash -> String -> String +foreign import scriptHash_fromBech32 :: String -> Nullable ScriptHash + +instance IsCsl ScriptHash where + className _ = "ScriptHash" +instance IsBytes ScriptHash +instance EncodeAeson ScriptHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson ScriptHash where decodeAeson = cslFromAesonViaBytes +instance Show ScriptHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Script hashes + +foreign import data ScriptHashes :: Type + +foreign import scriptHashes_new :: Effect ScriptHashes + +instance IsCsl ScriptHashes where + className _ = "ScriptHashes" +instance IsBytes ScriptHashes +instance IsJson ScriptHashes +instance EncodeAeson ScriptHashes where encodeAeson = cslToAeson +instance DecodeAeson ScriptHashes where decodeAeson = cslFromAeson +instance Show ScriptHashes where show = showViaJson + +instance IsListContainer ScriptHashes ScriptHash + +------------------------------------------------------------------------------------- +-- Script nOf k + +foreign import data ScriptNOfK :: Type + +foreign import scriptNOfK_n :: ScriptNOfK -> Number +foreign import scriptNOfK_nativeScripts :: ScriptNOfK -> NativeScripts +foreign import scriptNOfK_new :: Number -> NativeScripts -> ScriptNOfK + +instance IsCsl ScriptNOfK where + className _ = "ScriptNOfK" +instance IsBytes ScriptNOfK +instance IsJson ScriptNOfK +instance EncodeAeson ScriptNOfK where encodeAeson = cslToAeson +instance DecodeAeson ScriptNOfK where decodeAeson = cslFromAeson +instance Show ScriptNOfK where show = showViaJson + +------------------------------------------------------------------------------------- +-- Script pubkey + +foreign import data ScriptPubkey :: Type + +foreign import scriptPubkey_addrKeyhash :: ScriptPubkey -> Ed25519KeyHash +foreign import scriptPubkey_new :: Ed25519KeyHash -> ScriptPubkey + +instance IsCsl ScriptPubkey where + className _ = "ScriptPubkey" +instance IsBytes ScriptPubkey +instance IsJson ScriptPubkey +instance EncodeAeson ScriptPubkey where encodeAeson = cslToAeson +instance DecodeAeson ScriptPubkey where decodeAeson = cslFromAeson +instance Show ScriptPubkey where show = showViaJson + +------------------------------------------------------------------------------------- +-- Script ref + +foreign import data ScriptRef :: Type + +foreign import scriptRef_newNativeScript :: NativeScript -> ScriptRef +foreign import scriptRef_newPlutusScript :: PlutusScript -> ScriptRef +foreign import scriptRef_isNativeScript :: ScriptRef -> Boolean +foreign import scriptRef_isPlutusScript :: ScriptRef -> Boolean +foreign import scriptRef_nativeScript :: ScriptRef -> Nullable NativeScript +foreign import scriptRef_plutusScript :: ScriptRef -> Nullable PlutusScript + +instance IsCsl ScriptRef where + className _ = "ScriptRef" +instance IsBytes ScriptRef +instance IsJson ScriptRef +instance EncodeAeson ScriptRef where encodeAeson = cslToAeson +instance DecodeAeson ScriptRef where decodeAeson = cslFromAeson +instance Show ScriptRef where show = showViaJson + +------------------------------------------------------------------------------------- +-- Single host addr + +foreign import data SingleHostAddr :: Type + +foreign import singleHostAddr_port :: SingleHostAddr -> Nullable Number +foreign import singleHostAddr_ipv4 :: SingleHostAddr -> Nullable Ipv4 +foreign import singleHostAddr_ipv6 :: SingleHostAddr -> Nullable Ipv6 +foreign import singleHostAddr_new :: Number -> Ipv4 -> Ipv6 -> SingleHostAddr + +instance IsCsl SingleHostAddr where + className _ = "SingleHostAddr" +instance IsBytes SingleHostAddr +instance IsJson SingleHostAddr +instance EncodeAeson SingleHostAddr where encodeAeson = cslToAeson +instance DecodeAeson SingleHostAddr where decodeAeson = cslFromAeson +instance Show SingleHostAddr where show = showViaJson + +------------------------------------------------------------------------------------- +-- Single host name + +foreign import data SingleHostName :: Type + +foreign import singleHostName_port :: SingleHostName -> Nullable Number +foreign import singleHostName_dnsName :: SingleHostName -> DNSRecordAorAAAA +foreign import singleHostName_new :: Nullable Number -> DNSRecordAorAAAA -> SingleHostName + +instance IsCsl SingleHostName where + className _ = "SingleHostName" +instance IsBytes SingleHostName +instance IsJson SingleHostName +instance EncodeAeson SingleHostName where encodeAeson = cslToAeson +instance DecodeAeson SingleHostName where decodeAeson = cslFromAeson +instance Show SingleHostName where show = showViaJson + +------------------------------------------------------------------------------------- +-- Stake credential + +foreign import data StakeCredential :: Type + +foreign import stakeCredential_fromKeyhash :: Ed25519KeyHash -> StakeCredential +foreign import stakeCredential_fromScripthash :: ScriptHash -> StakeCredential +foreign import stakeCredential_toKeyhash :: StakeCredential -> Nullable Ed25519KeyHash +foreign import stakeCredential_toScripthash :: StakeCredential -> Nullable ScriptHash +foreign import stakeCredential_kind :: StakeCredential -> Number + +instance IsCsl StakeCredential where + className _ = "StakeCredential" +instance IsBytes StakeCredential +instance IsJson StakeCredential +instance EncodeAeson StakeCredential where encodeAeson = cslToAeson +instance DecodeAeson StakeCredential where decodeAeson = cslFromAeson +instance Show StakeCredential where show = showViaJson + +------------------------------------------------------------------------------------- +-- Stake credentials + +foreign import data StakeCredentials :: Type + +foreign import stakeCredentials_new :: Effect StakeCredentials + +instance IsCsl StakeCredentials where + className _ = "StakeCredentials" +instance IsBytes StakeCredentials +instance IsJson StakeCredentials +instance EncodeAeson StakeCredentials where encodeAeson = cslToAeson +instance DecodeAeson StakeCredentials where decodeAeson = cslFromAeson +instance Show StakeCredentials where show = showViaJson + +instance IsListContainer StakeCredentials StakeCredential + +------------------------------------------------------------------------------------- +-- Stake delegation + +foreign import data StakeDelegation :: Type + +foreign import stakeDelegation_stakeCredential :: StakeDelegation -> StakeCredential +foreign import stakeDelegation_poolKeyhash :: StakeDelegation -> Ed25519KeyHash +foreign import stakeDelegation_new :: StakeCredential -> Ed25519KeyHash -> StakeDelegation + +instance IsCsl StakeDelegation where + className _ = "StakeDelegation" +instance IsBytes StakeDelegation +instance IsJson StakeDelegation +instance EncodeAeson StakeDelegation where encodeAeson = cslToAeson +instance DecodeAeson StakeDelegation where decodeAeson = cslFromAeson +instance Show StakeDelegation where show = showViaJson + +------------------------------------------------------------------------------------- +-- Stake deregistration + +foreign import data StakeDeregistration :: Type + +foreign import stakeDeregistration_stakeCredential :: StakeDeregistration -> StakeCredential +foreign import stakeDeregistration_new :: StakeCredential -> StakeDeregistration + +instance IsCsl StakeDeregistration where + className _ = "StakeDeregistration" +instance IsBytes StakeDeregistration +instance IsJson StakeDeregistration +instance EncodeAeson StakeDeregistration where encodeAeson = cslToAeson +instance DecodeAeson StakeDeregistration where decodeAeson = cslFromAeson +instance Show StakeDeregistration where show = showViaJson + +------------------------------------------------------------------------------------- +-- Stake registration + +foreign import data StakeRegistration :: Type + +foreign import stakeRegistration_stakeCredential :: StakeRegistration -> StakeCredential +foreign import stakeRegistration_new :: StakeCredential -> StakeRegistration + +instance IsCsl StakeRegistration where + className _ = "StakeRegistration" +instance IsBytes StakeRegistration +instance IsJson StakeRegistration +instance EncodeAeson StakeRegistration where encodeAeson = cslToAeson +instance DecodeAeson StakeRegistration where decodeAeson = cslFromAeson +instance Show StakeRegistration where show = showViaJson + +------------------------------------------------------------------------------------- +-- Timelock expiry + +foreign import data TimelockExpiry :: Type + +foreign import timelockExpiry_slot :: TimelockExpiry -> Number +foreign import timelockExpiry_slotBignum :: TimelockExpiry -> BigNum +foreign import timelockExpiry_new :: Number -> TimelockExpiry +foreign import timelockExpiry_newTimelockexpiry :: BigNum -> TimelockExpiry + +instance IsCsl TimelockExpiry where + className _ = "TimelockExpiry" +instance IsBytes TimelockExpiry +instance IsJson TimelockExpiry +instance EncodeAeson TimelockExpiry where encodeAeson = cslToAeson +instance DecodeAeson TimelockExpiry where decodeAeson = cslFromAeson +instance Show TimelockExpiry where show = showViaJson + +------------------------------------------------------------------------------------- +-- Timelock start + +foreign import data TimelockStart :: Type + +foreign import timelockStart_slot :: TimelockStart -> Number +foreign import timelockStart_slotBignum :: TimelockStart -> BigNum +foreign import timelockStart_new :: Number -> TimelockStart +foreign import timelockStart_newTimelockstart :: BigNum -> TimelockStart + +instance IsCsl TimelockStart where + className _ = "TimelockStart" +instance IsBytes TimelockStart +instance IsJson TimelockStart +instance EncodeAeson TimelockStart where encodeAeson = cslToAeson +instance DecodeAeson TimelockStart where decodeAeson = cslFromAeson +instance Show TimelockStart where show = showViaJson + +------------------------------------------------------------------------------------- +-- Transaction + +foreign import data Transaction :: Type + +foreign import transaction_body :: Transaction -> TransactionBody +foreign import transaction_witnessSet :: Transaction -> TransactionWitnessSet +foreign import transaction_isValid :: Transaction -> Boolean +foreign import transaction_auxiliaryData :: Transaction -> Nullable AuxiliaryData +foreign import transaction_setIsValid :: Transaction -> Boolean -> Effect Unit +foreign import transaction_new :: TransactionBody -> TransactionWitnessSet -> AuxiliaryData -> Transaction + +instance IsCsl Transaction where + className _ = "Transaction" +instance IsBytes Transaction +instance IsJson Transaction +instance EncodeAeson Transaction where encodeAeson = cslToAeson +instance DecodeAeson Transaction where decodeAeson = cslFromAeson +instance Show Transaction where show = showViaJson + +------------------------------------------------------------------------------------- +-- Transaction batch + +foreign import data TransactionBatch :: Type + + + +instance IsCsl TransactionBatch where + className _ = "TransactionBatch" + +------------------------------------------------------------------------------------- +-- Transaction batch list + +foreign import data TransactionBatchList :: Type + + + +instance IsCsl TransactionBatchList where + className _ = "TransactionBatchList" + +------------------------------------------------------------------------------------- +-- Transaction body + +foreign import data TransactionBody :: Type + +foreign import transactionBody_inputs :: TransactionBody -> TransactionInputs +foreign import transactionBody_outputs :: TransactionBody -> TransactionOutputs +foreign import transactionBody_fee :: TransactionBody -> BigNum +foreign import transactionBody_ttl :: TransactionBody -> Nullable Number +foreign import transactionBody_ttlBignum :: TransactionBody -> Nullable BigNum +foreign import transactionBody_setTtl :: TransactionBody -> BigNum -> Effect Unit +foreign import transactionBody_removeTtl :: TransactionBody -> Nullable Unit +foreign import transactionBody_setCerts :: TransactionBody -> Certificates -> Effect Unit +foreign import transactionBody_certs :: TransactionBody -> Nullable Certificates +foreign import transactionBody_setWithdrawals :: TransactionBody -> Withdrawals -> Effect Unit +foreign import transactionBody_withdrawals :: TransactionBody -> Nullable Withdrawals +foreign import transactionBody_setUpdate :: TransactionBody -> Update -> Effect Unit +foreign import transactionBody_update :: TransactionBody -> Nullable Update +foreign import transactionBody_setAuxiliaryDataHash :: TransactionBody -> AuxiliaryDataHash -> Effect Unit +foreign import transactionBody_auxiliaryDataHash :: TransactionBody -> Nullable AuxiliaryDataHash +foreign import transactionBody_setValidityStartInterval :: TransactionBody -> Number -> Effect Unit +foreign import transactionBody_setValidityStartIntervalBignum :: TransactionBody -> BigNum -> Effect Unit +foreign import transactionBody_validityStartIntervalBignum :: TransactionBody -> Nullable BigNum +foreign import transactionBody_validityStartInterval :: TransactionBody -> Nullable Number +foreign import transactionBody_setMint :: TransactionBody -> Mint -> Effect Unit +foreign import transactionBody_mint :: TransactionBody -> Nullable Mint +foreign import transactionBody_multiassets :: TransactionBody -> Nullable Mint +foreign import transactionBody_setReferenceInputs :: TransactionBody -> TransactionInputs -> Effect Unit +foreign import transactionBody_referenceInputs :: TransactionBody -> Nullable TransactionInputs +foreign import transactionBody_setScriptDataHash :: TransactionBody -> ScriptDataHash -> Effect Unit +foreign import transactionBody_scriptDataHash :: TransactionBody -> Nullable ScriptDataHash +foreign import transactionBody_setCollateral :: TransactionBody -> TransactionInputs -> Effect Unit +foreign import transactionBody_collateral :: TransactionBody -> Nullable TransactionInputs +foreign import transactionBody_setRequiredSigners :: TransactionBody -> Ed25519KeyHashes -> Effect Unit +foreign import transactionBody_requiredSigners :: TransactionBody -> Nullable Ed25519KeyHashes +foreign import transactionBody_setNetworkId :: TransactionBody -> NetworkId -> Effect Unit +foreign import transactionBody_networkId :: TransactionBody -> Nullable NetworkId +foreign import transactionBody_setCollateralReturn :: TransactionBody -> TransactionOutput -> Effect Unit +foreign import transactionBody_collateralReturn :: TransactionBody -> Nullable TransactionOutput +foreign import transactionBody_setTotalCollateral :: TransactionBody -> BigNum -> Effect Unit +foreign import transactionBody_totalCollateral :: TransactionBody -> Nullable BigNum +foreign import transactionBody_new :: TransactionInputs -> TransactionOutputs -> BigNum -> Number -> TransactionBody +foreign import transactionBody_newTxBody :: TransactionInputs -> TransactionOutputs -> BigNum -> TransactionBody + +instance IsCsl TransactionBody where + className _ = "TransactionBody" +instance IsBytes TransactionBody +instance IsJson TransactionBody +instance EncodeAeson TransactionBody where encodeAeson = cslToAeson +instance DecodeAeson TransactionBody where decodeAeson = cslFromAeson +instance Show TransactionBody where show = showViaJson + +------------------------------------------------------------------------------------- +-- Transaction hash + +foreign import data TransactionHash :: Type + +foreign import transactionHash_toBech32 :: TransactionHash -> String -> String +foreign import transactionHash_fromBech32 :: String -> Nullable TransactionHash + +instance IsCsl TransactionHash where + className _ = "TransactionHash" +instance IsBytes TransactionHash +instance EncodeAeson TransactionHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson TransactionHash where decodeAeson = cslFromAesonViaBytes +instance Show TransactionHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Transaction input + +foreign import data TransactionInput :: Type + +foreign import transactionInput_transactionId :: TransactionInput -> TransactionHash +foreign import transactionInput_index :: TransactionInput -> Number +foreign import transactionInput_new :: TransactionHash -> Number -> TransactionInput + +instance IsCsl TransactionInput where + className _ = "TransactionInput" +instance IsBytes TransactionInput +instance IsJson TransactionInput +instance EncodeAeson TransactionInput where encodeAeson = cslToAeson +instance DecodeAeson TransactionInput where decodeAeson = cslFromAeson +instance Show TransactionInput where show = showViaJson + +------------------------------------------------------------------------------------- +-- Transaction inputs + +foreign import data TransactionInputs :: Type + +foreign import transactionInputs_new :: Effect TransactionInputs +foreign import transactionInputs_toOption :: TransactionInputs -> Nullable TransactionInputs + +instance IsCsl TransactionInputs where + className _ = "TransactionInputs" +instance IsBytes TransactionInputs +instance IsJson TransactionInputs +instance EncodeAeson TransactionInputs where encodeAeson = cslToAeson +instance DecodeAeson TransactionInputs where decodeAeson = cslFromAeson +instance Show TransactionInputs where show = showViaJson + +instance IsListContainer TransactionInputs TransactionInput + +------------------------------------------------------------------------------------- +-- Transaction metadatum + +foreign import data TransactionMetadatum :: Type + +foreign import transactionMetadatum_newMap :: MetadataMap -> TransactionMetadatum +foreign import transactionMetadatum_newList :: MetadataList -> TransactionMetadatum +foreign import transactionMetadatum_newInt :: Int -> TransactionMetadatum +foreign import transactionMetadatum_newBytes :: ByteArray -> TransactionMetadatum +foreign import transactionMetadatum_newText :: String -> TransactionMetadatum +foreign import transactionMetadatum_kind :: TransactionMetadatum -> Number +foreign import transactionMetadatum_asMap :: TransactionMetadatum -> Nullable MetadataMap +foreign import transactionMetadatum_asList :: TransactionMetadatum -> Nullable MetadataList +foreign import transactionMetadatum_asInt :: TransactionMetadatum -> Nullable Int +foreign import transactionMetadatum_asBytes :: TransactionMetadatum -> Nullable ByteArray +foreign import transactionMetadatum_asText :: TransactionMetadatum -> Nullable String + +instance IsCsl TransactionMetadatum where + className _ = "TransactionMetadatum" +instance IsBytes TransactionMetadatum +instance EncodeAeson TransactionMetadatum where encodeAeson = cslToAesonViaBytes +instance DecodeAeson TransactionMetadatum where decodeAeson = cslFromAesonViaBytes +instance Show TransactionMetadatum where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Transaction metadatum labels + +foreign import data TransactionMetadatumLabels :: Type + +foreign import transactionMetadatumLabels_new :: Effect TransactionMetadatumLabels + +instance IsCsl TransactionMetadatumLabels where + className _ = "TransactionMetadatumLabels" +instance IsBytes TransactionMetadatumLabels +instance EncodeAeson TransactionMetadatumLabels where encodeAeson = cslToAesonViaBytes +instance DecodeAeson TransactionMetadatumLabels where decodeAeson = cslFromAesonViaBytes +instance Show TransactionMetadatumLabels where show = showViaBytes + +instance IsListContainer TransactionMetadatumLabels BigNum + +------------------------------------------------------------------------------------- +-- Transaction output + +foreign import data TransactionOutput :: Type + +foreign import transactionOutput_address :: TransactionOutput -> Address +foreign import transactionOutput_amount :: TransactionOutput -> Value +foreign import transactionOutput_dataHash :: TransactionOutput -> Nullable DataHash +foreign import transactionOutput_plutusData :: TransactionOutput -> Nullable PlutusData +foreign import transactionOutput_scriptRef :: TransactionOutput -> Nullable ScriptRef +foreign import transactionOutput_setScriptRef :: TransactionOutput -> ScriptRef -> Effect Unit +foreign import transactionOutput_setPlutusData :: TransactionOutput -> PlutusData -> Effect Unit +foreign import transactionOutput_setDataHash :: TransactionOutput -> DataHash -> Effect Unit +foreign import transactionOutput_hasPlutusData :: TransactionOutput -> Boolean +foreign import transactionOutput_hasDataHash :: TransactionOutput -> Boolean +foreign import transactionOutput_hasScriptRef :: TransactionOutput -> Boolean +foreign import transactionOutput_new :: Address -> Value -> TransactionOutput +foreign import transactionOutput_serializationFormat :: TransactionOutput -> Nullable Number + +instance IsCsl TransactionOutput where + className _ = "TransactionOutput" +instance IsBytes TransactionOutput +instance IsJson TransactionOutput +instance EncodeAeson TransactionOutput where encodeAeson = cslToAeson +instance DecodeAeson TransactionOutput where decodeAeson = cslFromAeson +instance Show TransactionOutput where show = showViaJson + +------------------------------------------------------------------------------------- +-- Transaction outputs + +foreign import data TransactionOutputs :: Type + +foreign import transactionOutputs_new :: Effect TransactionOutputs + +instance IsCsl TransactionOutputs where + className _ = "TransactionOutputs" +instance IsBytes TransactionOutputs +instance IsJson TransactionOutputs +instance EncodeAeson TransactionOutputs where encodeAeson = cslToAeson +instance DecodeAeson TransactionOutputs where decodeAeson = cslFromAeson +instance Show TransactionOutputs where show = showViaJson + +instance IsListContainer TransactionOutputs TransactionOutput + +------------------------------------------------------------------------------------- +-- Transaction unspent output + +foreign import data TransactionUnspentOutput :: Type + +foreign import transactionUnspentOutput_new :: TransactionInput -> TransactionOutput -> TransactionUnspentOutput +foreign import transactionUnspentOutput_input :: TransactionUnspentOutput -> TransactionInput +foreign import transactionUnspentOutput_output :: TransactionUnspentOutput -> TransactionOutput + +instance IsCsl TransactionUnspentOutput where + className _ = "TransactionUnspentOutput" +instance IsBytes TransactionUnspentOutput +instance IsJson TransactionUnspentOutput +instance EncodeAeson TransactionUnspentOutput where encodeAeson = cslToAeson +instance DecodeAeson TransactionUnspentOutput where decodeAeson = cslFromAeson +instance Show TransactionUnspentOutput where show = showViaJson + +------------------------------------------------------------------------------------- +-- Transaction unspent outputs + +foreign import data TransactionUnspentOutputs :: Type + +foreign import transactionUnspentOutputs_new :: Effect TransactionUnspentOutputs + +instance IsCsl TransactionUnspentOutputs where + className _ = "TransactionUnspentOutputs" +instance IsJson TransactionUnspentOutputs +instance EncodeAeson TransactionUnspentOutputs where encodeAeson = cslToAeson +instance DecodeAeson TransactionUnspentOutputs where decodeAeson = cslFromAeson +instance Show TransactionUnspentOutputs where show = showViaJson + +instance IsListContainer TransactionUnspentOutputs TransactionUnspentOutput + +------------------------------------------------------------------------------------- +-- Transaction witness set + +foreign import data TransactionWitnessSet :: Type + +foreign import transactionWitnessSet_setVkeys :: TransactionWitnessSet -> Vkeywitnesses -> Effect Unit +foreign import transactionWitnessSet_vkeys :: TransactionWitnessSet -> Effect ((Nullable Vkeywitnesses)) +foreign import transactionWitnessSet_setNativeScripts :: TransactionWitnessSet -> NativeScripts -> Effect Unit +foreign import transactionWitnessSet_nativeScripts :: TransactionWitnessSet -> Effect ((Nullable NativeScripts)) +foreign import transactionWitnessSet_setBootstraps :: TransactionWitnessSet -> BootstrapWitnesses -> Effect Unit +foreign import transactionWitnessSet_bootstraps :: TransactionWitnessSet -> Effect ((Nullable BootstrapWitnesses)) +foreign import transactionWitnessSet_setPlutusScripts :: TransactionWitnessSet -> PlutusScripts -> Effect Unit +foreign import transactionWitnessSet_plutusScripts :: TransactionWitnessSet -> Effect ((Nullable PlutusScripts)) +foreign import transactionWitnessSet_setPlutusData :: TransactionWitnessSet -> PlutusList -> Effect Unit +foreign import transactionWitnessSet_plutusData :: TransactionWitnessSet -> Effect ((Nullable PlutusList)) +foreign import transactionWitnessSet_setRedeemers :: TransactionWitnessSet -> Redeemers -> Effect Unit +foreign import transactionWitnessSet_redeemers :: TransactionWitnessSet -> Effect ((Nullable Redeemers)) +foreign import transactionWitnessSet_new :: Effect TransactionWitnessSet + +instance IsCsl TransactionWitnessSet where + className _ = "TransactionWitnessSet" +instance IsBytes TransactionWitnessSet +instance IsJson TransactionWitnessSet +instance EncodeAeson TransactionWitnessSet where encodeAeson = cslToAeson +instance DecodeAeson TransactionWitnessSet where decodeAeson = cslFromAeson +instance Show TransactionWitnessSet where show = showViaJson + +------------------------------------------------------------------------------------- +-- URL + +foreign import data URL :: Type + +foreign import url_new :: String -> URL +foreign import url_url :: URL -> String + +instance IsCsl URL where + className _ = "URL" +instance IsBytes URL +instance IsJson URL +instance EncodeAeson URL where encodeAeson = cslToAeson +instance DecodeAeson URL where decodeAeson = cslFromAeson +instance Show URL where show = showViaJson + +------------------------------------------------------------------------------------- +-- Unit interval + +foreign import data UnitInterval :: Type + +foreign import unitInterval_numerator :: UnitInterval -> BigNum +foreign import unitInterval_denominator :: UnitInterval -> BigNum +foreign import unitInterval_new :: BigNum -> BigNum -> UnitInterval + +instance IsCsl UnitInterval where + className _ = "UnitInterval" +instance IsBytes UnitInterval +instance IsJson UnitInterval +instance EncodeAeson UnitInterval where encodeAeson = cslToAeson +instance DecodeAeson UnitInterval where decodeAeson = cslFromAeson +instance Show UnitInterval where show = showViaJson + +------------------------------------------------------------------------------------- +-- Update + +foreign import data Update :: Type + +foreign import update_proposedProtocolParameterUpdates :: Update -> ProposedProtocolParameterUpdates +foreign import update_epoch :: Update -> Number +foreign import update_new :: ProposedProtocolParameterUpdates -> Number -> Update + +instance IsCsl Update where + className _ = "Update" +instance IsBytes Update +instance IsJson Update +instance EncodeAeson Update where encodeAeson = cslToAeson +instance DecodeAeson Update where decodeAeson = cslFromAeson +instance Show Update where show = showViaJson + +------------------------------------------------------------------------------------- +-- VRFCert + +foreign import data VRFCert :: Type + +foreign import vrfCert_output :: VRFCert -> ByteArray +foreign import vrfCert_proof :: VRFCert -> ByteArray +foreign import vrfCert_new :: ByteArray -> ByteArray -> VRFCert + +instance IsCsl VRFCert where + className _ = "VRFCert" +instance IsBytes VRFCert +instance IsJson VRFCert +instance EncodeAeson VRFCert where encodeAeson = cslToAeson +instance DecodeAeson VRFCert where decodeAeson = cslFromAeson +instance Show VRFCert where show = showViaJson + +------------------------------------------------------------------------------------- +-- VRFKey hash + +foreign import data VRFKeyHash :: Type + +foreign import vrfKeyHash_toBech32 :: VRFKeyHash -> String -> String +foreign import vrfKeyHash_fromBech32 :: String -> Nullable VRFKeyHash + +instance IsCsl VRFKeyHash where + className _ = "VRFKeyHash" +instance IsBytes VRFKeyHash +instance EncodeAeson VRFKeyHash where encodeAeson = cslToAesonViaBytes +instance DecodeAeson VRFKeyHash where decodeAeson = cslFromAesonViaBytes +instance Show VRFKeyHash where show = showViaBytes + +------------------------------------------------------------------------------------- +-- VRFVKey + +foreign import data VRFVKey :: Type + +foreign import vrfvKey_toBech32 :: VRFVKey -> String -> String +foreign import vrfvKey_fromBech32 :: String -> Nullable VRFVKey + +instance IsCsl VRFVKey where + className _ = "VRFVKey" +instance IsBytes VRFVKey +instance EncodeAeson VRFVKey where encodeAeson = cslToAesonViaBytes +instance DecodeAeson VRFVKey where decodeAeson = cslFromAesonViaBytes +instance Show VRFVKey where show = showViaBytes + +------------------------------------------------------------------------------------- +-- Value + +foreign import data Value :: Type + +foreign import value_new :: BigNum -> Value +foreign import value_newFromAssets :: MultiAsset -> Value +foreign import value_newWithAssets :: BigNum -> MultiAsset -> Value +foreign import value_zero :: Value +foreign import value_isZero :: Value -> Boolean +foreign import value_coin :: Value -> BigNum +foreign import value_setCoin :: Value -> BigNum -> Effect Unit +foreign import value_multiasset :: Value -> Nullable MultiAsset +foreign import value_setMultiasset :: Value -> MultiAsset -> Effect Unit +foreign import value_checkedAdd :: Value -> Value -> Nullable Value +foreign import value_checkedSub :: Value -> Value -> Nullable Value +foreign import value_clampedSub :: Value -> Value -> Value +foreign import value_compare :: Value -> Value -> Nullable Number + +instance IsCsl Value where + className _ = "Value" +instance IsBytes Value +instance IsJson Value +instance EncodeAeson Value where encodeAeson = cslToAeson +instance DecodeAeson Value where decodeAeson = cslFromAeson +instance Show Value where show = showViaJson + +------------------------------------------------------------------------------------- +-- Vkey + +foreign import data Vkey :: Type + +foreign import vkey_new :: PublicKey -> Vkey +foreign import vkey_publicKey :: Vkey -> PublicKey + +instance IsCsl Vkey where + className _ = "Vkey" +instance IsBytes Vkey +instance IsJson Vkey +instance EncodeAeson Vkey where encodeAeson = cslToAeson +instance DecodeAeson Vkey where decodeAeson = cslFromAeson +instance Show Vkey where show = showViaJson + +------------------------------------------------------------------------------------- +-- Vkeys + +foreign import data Vkeys :: Type + +foreign import vkeys_new :: Effect Vkeys + +instance IsCsl Vkeys where + className _ = "Vkeys" + +instance IsListContainer Vkeys Vkey + +------------------------------------------------------------------------------------- +-- Vkeywitness + +foreign import data Vkeywitness :: Type + +foreign import vkeywitness_new :: Vkey -> Ed25519Signature -> Vkeywitness +foreign import vkeywitness_vkey :: Vkeywitness -> Vkey +foreign import vkeywitness_signature :: Vkeywitness -> Ed25519Signature + +instance IsCsl Vkeywitness where + className _ = "Vkeywitness" +instance IsBytes Vkeywitness +instance IsJson Vkeywitness +instance EncodeAeson Vkeywitness where encodeAeson = cslToAeson +instance DecodeAeson Vkeywitness where decodeAeson = cslFromAeson +instance Show Vkeywitness where show = showViaJson + +------------------------------------------------------------------------------------- +-- Vkeywitnesses + +foreign import data Vkeywitnesses :: Type + +foreign import vkeywitnesses_new :: Effect Vkeywitnesses + +instance IsCsl Vkeywitnesses where + className _ = "Vkeywitnesses" +instance IsBytes Vkeywitnesses +instance IsJson Vkeywitnesses +instance EncodeAeson Vkeywitnesses where encodeAeson = cslToAeson +instance DecodeAeson Vkeywitnesses where decodeAeson = cslFromAeson +instance Show Vkeywitnesses where show = showViaJson + +instance IsListContainer Vkeywitnesses Vkeywitness + +------------------------------------------------------------------------------------- +-- Withdrawals + +foreign import data Withdrawals :: Type + +foreign import withdrawals_new :: Effect Withdrawals + +instance IsCsl Withdrawals where + className _ = "Withdrawals" +instance IsBytes Withdrawals +instance IsJson Withdrawals +instance EncodeAeson Withdrawals where encodeAeson = cslToAeson +instance DecodeAeson Withdrawals where decodeAeson = cslFromAeson +instance Show Withdrawals where show = showViaJson + +instance IsMapContainer Withdrawals RewardAddress BigNum + diff --git a/src/Plutus/PubKeyHash.purs b/src/Plutus/PubKeyHash.purs new file mode 100644 index 000000000..4eb8cbe70 --- /dev/null +++ b/src/Plutus/PubKeyHash.purs @@ -0,0 +1,41 @@ +module Cardano.Plutus.Types.PubKeyHash where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , decodeAeson + , encodeAeson + , (.:) + ) +import Ctl.Internal.FromData (class FromData) +import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) +import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) +import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) +import Ctl.Internal.ToData (class ToData) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Show.Generic (genericShow) + +newtype PubKeyHash = PubKeyHash Ed25519KeyHash + +derive instance Generic PubKeyHash _ +derive instance Newtype PubKeyHash _ +derive newtype instance Eq PubKeyHash +derive newtype instance FromData PubKeyHash +derive newtype instance FromMetadata PubKeyHash +derive newtype instance Ord PubKeyHash +derive newtype instance ToData PubKeyHash +derive newtype instance ToMetadata PubKeyHash + +instance Show PubKeyHash where + show = genericShow + +instance EncodeAeson PubKeyHash where + encodeAeson x = encodeAeson { getPubKeyHash: unwrap x } + +instance DecodeAeson PubKeyHash where + decodeAeson a = do + obj <- decodeAeson a + wrap <$> obj .: "getPubKeyHash" diff --git a/src/Types/Address.purs b/src/Types/Address.purs index a84bb85c4..0e0eb0be6 100644 --- a/src/Types/Address.purs +++ b/src/Types/Address.purs @@ -2,15 +2,37 @@ module Cardano.Types.Address where import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), decodeAeson, encodeAeson) -import Cardano.Serialization.Lib (address_fromBech32, address_networkId, address_toBech32, baseAddress_fromAddress, baseAddress_toAddress, byronAddress_fromAddress, byronAddress_toAddress, enterpriseAddress_fromAddress, enterpriseAddress_new, enterpriseAddress_paymentCred, enterpriseAddress_toAddress, fromBytes, pointerAddress_fromAddress, pointerAddress_toAddress, rewardAddress_fromAddress, rewardAddress_toAddress, toBytes) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(..) + , decodeAeson + , encodeAeson + ) +import Cardano.Serialization.Lib + ( address_fromBech32 + , address_networkId + , address_toBech32 + , baseAddress_fromAddress + , baseAddress_toAddress + , byronAddress_fromAddress + , byronAddress_toAddress + , enterpriseAddress_fromAddress + , enterpriseAddress_toAddress + , fromBytes + , pointerAddress_fromAddress + , pointerAddress_toAddress + , rewardAddress_fromAddress + , rewardAddress_toAddress + , toBytes + ) import Cardano.Serialization.Lib as Csl import Cardano.Types.AsCbor (class AsCbor) -import Cardano.Types.BaseAddress as BA -import Cardano.Types.ByronAddress (ByronAddress) +import Cardano.Types.BaseAddress (BaseAddress, fromCsl, toCsl) as BA +import Cardano.Types.ByronAddress (ByronAddress) as BA +import Cardano.Types.EnterpriseAddress as EA import Cardano.Types.NetworkId (NetworkId) import Cardano.Types.NetworkId as NetworkId -import Cardano.Types.PaymentCredential (PaymentCredential) import Cardano.Types.PointerAddress (PointerAddress) as PA import Cardano.Types.RewardAddress as RA import Control.Alt ((<|>)) @@ -28,8 +50,8 @@ import Unsafe.Coerce (unsafeCoerce) data Address = BaseAddress BA.BaseAddress - | ByronAddress ByronAddress - | EnterpriseAddress NetworkId PaymentCredential + | ByronAddress BA.ByronAddress + | EnterpriseAddress EA.EnterpriseAddress | RewardAddress RA.RewardAddress | PointerAddress PA.PointerAddress @@ -50,6 +72,12 @@ instance AsCbor Address where encodeCbor = toCsl >>> toBytes >>> wrap decodeCbor = unwrap >>> fromBytes >>> map fromCsl +addressNetworkId :: Address -> NetworkId +addressNetworkId = unsafePartial $ + toCsl >>> address_networkId >>> Int.fromNumber >>> fromJust + >>> NetworkId.fromInt + >>> fromJust + toBech32 :: Address -> Bech32String toBech32 = toCsl >>> flip address_toBech32 (unsafeCoerce undefined) @@ -60,26 +88,28 @@ toCsl :: Address -> Csl.Address toCsl = case _ of BaseAddress ba -> baseAddress_toAddress $ BA.toCsl ba - ByronAddress ba -> byronAddress_toAddress $ unwrap ba - EnterpriseAddress nid pc -> - enterpriseAddress_toAddress $ enterpriseAddress_new (Int.toNumber $ NetworkId.toInt nid) (unwrap pc) + ByronAddress ba -> + byronAddress_toAddress $ unwrap ba + EnterpriseAddress ea -> + enterpriseAddress_toAddress $ EA.toCsl ea RewardAddress ra -> rewardAddress_toAddress $ RA.toCsl ra - PointerAddress pc -> pointerAddress_toAddress $ unwrap pc + PointerAddress pc -> + pointerAddress_toAddress $ unwrap pc fromCsl :: Csl.Address -> Address fromCsl addr = unsafePartial $ fromJust $ - asBaseAddress <|> asByronAddress <|> asEnterpriseAddress <|> asRewardAddress <|> asPointerAddress + asBaseAddress <|> asByronAddress <|> asEnterpriseAddress <|> asRewardAddress + <|> asPointerAddress where - networkId :: NetworkId - networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust $ Int.fromNumber $ address_networkId addr - asBaseAddress = - toMaybe (baseAddress_fromAddress addr) <#> - BaseAddress <<< BA.fromCsl - asByronAddress = ByronAddress <<< wrap <$> toMaybe (byronAddress_fromAddress addr) - asEnterpriseAddress = toMaybe (enterpriseAddress_fromAddress addr) <#> \cslEnterpriseAddress -> - EnterpriseAddress networkId (wrap $ enterpriseAddress_paymentCred cslEnterpriseAddress) - asRewardAddress = toMaybe (rewardAddress_fromAddress addr) <#> - RewardAddress <<< RA.fromCsl - asPointerAddress = toMaybe (pointerAddress_fromAddress addr) <#> PointerAddress <<< wrap + asBaseAddress = toMaybe (baseAddress_fromAddress addr) <#> + BaseAddress <<< BA.fromCsl + asByronAddress = toMaybe (byronAddress_fromAddress addr) <#> + ByronAddress <<< wrap + asEnterpriseAddress = toMaybe (enterpriseAddress_fromAddress addr) <#> + EnterpriseAddress <<< EA.fromCsl + asRewardAddress = toMaybe (rewardAddress_fromAddress addr) <#> + RewardAddress <<< RA.fromCsl + asPointerAddress = toMaybe (pointerAddress_fromAddress addr) <#> + PointerAddress <<< wrap diff --git a/src/Types/AsCbor.purs b/src/Types/AsCbor.purs deleted file mode 100644 index 747292095..000000000 --- a/src/Types/AsCbor.purs +++ /dev/null @@ -1,58 +0,0 @@ -module Cardano.Types.AsCbor where - -import Prelude - -import Cardano.Serialization.Lib (class IsBytes, fromBytes, toBytes) -import Cardano.Serialization.Lib.Internal (class IsCsl) -import Ctl.Internal.Types.CborBytes (CborBytes) -import Data.Maybe (Maybe) -import Data.Newtype (unwrap, wrap) - --- AsCsl/AsCborBytes machinery - -class - IsCsl cslType <= - AsCsl (cslType :: Type) (cardanoType :: Type) - | cardanoType -> cslType - , cslType -> cardanoType where - fromCsl :: cslType -> cardanoType - toCsl :: cardanoType -> cslType - --- this typeclass must be here for the code to pass orphan instance check -class AsCbor a where - encodeCbor :: a -> CborBytes - decodeCbor :: CborBytes -> Maybe a - -encodeCborViaCsl - :: forall csl cardano - . IsBytes csl - => IsCsl csl - => AsCsl csl cardano - => cardano - -> CborBytes -encodeCborViaCsl = wrap <<< toBytes <<< toCsl - -decodeCborViaCsl - :: forall csl cardano - . IsBytes csl - => IsCsl csl - => AsCsl csl cardano - => CborBytes - -> Maybe cardano -decodeCborViaCsl = map fromCsl <<< fromBytes <<< unwrap - -encodeCbor' - :: forall csl cardano - . AsCsl csl cardano - => IsBytes csl - => cardano - -> CborBytes -encodeCbor' = toCsl >>> toBytes >>> wrap - -decodeCbor' - :: forall csl cardano - . AsCsl csl cardano - => IsBytes csl - => CborBytes - -> Maybe cardano -decodeCbor' = unwrap >>> fromBytes >>> map fromCsl diff --git a/src/Types/Asset.purs b/src/Types/Asset.purs index c1e27aadf..22e143906 100644 --- a/src/Types/Asset.purs +++ b/src/Types/Asset.purs @@ -23,7 +23,8 @@ instance Show Asset where show = genericShow instance Arbitrary Asset where - arbitrary = oneOf $ cons' (pure AdaAsset) [ Asset <$> arbitrary <*> arbitrary ] + arbitrary = oneOf $ cons' (pure AdaAsset) + [ Asset <$> arbitrary <*> arbitrary ] fromAssetClass :: AssetClass -> Asset fromAssetClass (AssetClass sh tn) = Asset sh tn diff --git a/src/Types/AssetClass.purs b/src/Types/AssetClass.purs index 265767af2..b2d8c2d67 100644 --- a/src/Types/AssetClass.purs +++ b/src/Types/AssetClass.purs @@ -1,12 +1,16 @@ module Cardano.Types.AssetClass where - import Prelude hiding (join) import Aeson (class EncodeAeson, encodeAeson) import Cardano.Types.AssetName (AssetName) import Cardano.Types.Coin (Coin(Coin)) -import Cardano.Types.MultiAsset (MultiAsset(..), pprintMultiAsset, unionNonAda, unionWithNonAda) +import Cardano.Types.MultiAsset + ( MultiAsset(..) + , pprintMultiAsset + , unionNonAda + , unionWithNonAda + ) import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.ScriptHash (ScriptHash) import Ctl.Internal.Partition (class Equipartition, equipartition) diff --git a/src/Types/AssetName.purs b/src/Types/AssetName.purs index 6b0b4893b..e219f2ee6 100644 --- a/src/Types/AssetName.purs +++ b/src/Types/AssetName.purs @@ -2,7 +2,6 @@ module Cardano.Types.AssetName where import Prelude -import Test.QuickCheck (class Arbitrary, arbitrary) import Aeson ( class DecodeAeson , class EncodeAeson @@ -31,6 +30,7 @@ import Data.Newtype (class Newtype, unwrap, wrap) import Data.String as String import Data.TextEncoder (encodeUtf8) import Partial.Unsafe (unsafePartial) +import Test.QuickCheck (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (resize) newtype AssetName = AssetName Csl.AssetName diff --git a/src/Types/AuxiliaryData.purs b/src/Types/AuxiliaryData.purs index 0ee37f40d..f5ef93893 100644 --- a/src/Types/AuxiliaryData.purs +++ b/src/Types/AuxiliaryData.purs @@ -3,10 +3,12 @@ module Cardano.Types.AuxiliaryData where import Prelude import Aeson (class EncodeAeson) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.GeneralTransactionMetadata (GeneralTransactionMetadata(..)) +import Cardano.Types.NativeScript (NativeScript) +import Cardano.Types.PlutusScript (PlutusScript(..)) import Control.Apply (lift2) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) -import Ctl.Internal.Types.Scripts (PlutusScript) -import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) +import Ctl.Internal.Helpers (notImplemented) import Data.Array (union) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe(Nothing)) @@ -41,3 +43,23 @@ instance Monoid AuxiliaryData where , nativeScripts: Nothing , plutusScripts: Nothing } + +toCsl :: AuxiliaryData -> Csl.AuxiliaryData +toCsl + (AuxiliaryData { metadata, nativeScripts, plutusScripts }) = + notImplemented + +-- ad <- newAuxiliaryData +-- for_ metadata $ +-- convertGeneralTransactionMetadata >=> +-- setAuxiliaryDataGeneralTransactionMetadata ad +-- for_ nativeScripts $ +-- convertNativeScripts >>> setAuxiliaryDataNativeScripts ad +-- for_ plutusScripts \ps -> do +-- scripts <- newPlutusScripts +-- for_ ps (convertPlutusScript >>> addPlutusScript scripts) +-- setAuxiliaryDataPlutusScripts ad scripts +-- pure ad + +fromCsl :: Csl.AuxiliaryData -> AuxiliaryData +fromCsl = notImplemented diff --git a/src/Types/BaseAddress.purs b/src/Types/BaseAddress.purs index 04fe9efdc..768e91ab7 100644 --- a/src/Types/BaseAddress.purs +++ b/src/Types/BaseAddress.purs @@ -2,9 +2,25 @@ module Cardano.Types.BaseAddress where import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), decodeAeson, encodeAeson) -import Cardano.Serialization.Lib (address_fromBech32, address_networkId, address_toBech32, baseAddress_fromAddress, baseAddress_new, baseAddress_paymentCred, baseAddress_stakeCred, baseAddress_toAddress) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(..) + , decodeAeson + , encodeAeson + ) +import Cardano.Serialization.Lib + ( address_fromBech32 + , address_networkId + , address_toBech32 + , baseAddress_fromAddress + , baseAddress_new + , baseAddress_paymentCred + , baseAddress_stakeCred + , baseAddress_toAddress + ) import Cardano.Serialization.Lib as Csl +import Cardano.Types.Credential as Credential import Cardano.Types.NetworkId (NetworkId) import Cardano.Types.NetworkId as NetworkId import Cardano.Types.PaymentCredential (PaymentCredential) @@ -33,26 +49,35 @@ instance Show BaseAddress where -- no AsCbor instance, because there is no to_bytes method in CSL instance EncodeAeson BaseAddress where - encodeAeson = toCsl >>> baseAddress_toAddress >>> flip address_toBech32 (unsafeCoerce undefined) >>> encodeAeson + encodeAeson = toCsl >>> baseAddress_toAddress + >>> flip address_toBech32 (unsafeCoerce undefined) + >>> encodeAeson instance DecodeAeson BaseAddress where - decodeAeson = note (TypeMismatch "BaseAddress") <<< decodeBech32 <=< decodeAeson + decodeAeson = note (TypeMismatch "BaseAddress") <<< decodeBech32 <=< + decodeAeson where - decodeBech32 = map fromCsl <<< toMaybe <<< baseAddress_fromAddress <=< fromBech32 - fromBech32 :: Bech32String -> Maybe Csl.Address - fromBech32 = toMaybe <<< address_fromBech32 + decodeBech32 = map fromCsl <<< toMaybe <<< baseAddress_fromAddress <=< + fromBech32 + + fromBech32 :: Bech32String -> Maybe Csl.Address + fromBech32 = toMaybe <<< address_fromBech32 toCsl :: BaseAddress -> Csl.BaseAddress toCsl (BaseAddress nid pc sc) = - baseAddress_new - (Int.toNumber $ NetworkId.toInt nid) - (unwrap pc) - (unwrap sc) + baseAddress_new + (Int.toNumber $ NetworkId.toInt nid) + (Credential.toCsl $ unwrap pc) + (Credential.toCsl $ unwrap sc) fromCsl :: Csl.BaseAddress -> BaseAddress -fromCsl addr = - BaseAddress networkId (wrap $ baseAddress_paymentCred addr) - (wrap $ baseAddress_stakeCred addr) +fromCsl addr = BaseAddress + networkId + (wrap $ Credential.fromCsl $ baseAddress_paymentCred addr) + (wrap $ Credential.fromCsl $ baseAddress_stakeCred addr) where - networkId :: NetworkId - networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust $ Int.fromNumber $ address_networkId $ baseAddress_toAddress addr + networkId :: NetworkId + networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust + $ Int.fromNumber + $ address_networkId + $ baseAddress_toAddress addr diff --git a/src/Types/BigInt.purs b/src/Types/BigInt.purs index 57f87079e..e59765723 100644 --- a/src/Types/BigInt.purs +++ b/src/Types/BigInt.purs @@ -1,10 +1,9 @@ module Cardano.Types.BigInt - ( module X - , fromCsl - , toCsl - , divCeil - ) -where + ( module X + , fromCsl + , toCsl + , divCeil + ) where import Prelude @@ -13,8 +12,37 @@ import Cardano.Serialization.Lib as Csl import Data.Maybe (fromJust) import Data.Nullable (toMaybe) import JS.BigInt (BigInt) +import JS.BigInt + ( BigInt + , Parity(Even, Odd) + , Radix + , and + , asIntN + , asUintN + , binary + , decimal + , even + , fromInt + , fromNumber + , fromString + , fromStringAs + , fromTLInt + , hexadecimal + , not + , octal + , odd + , or + , parity + , pow + , shl + , shr + , toInt + , toNumber + , toString + , toStringAs + , xor + ) as X import JS.BigInt as BigInt -import JS.BigInt (BigInt, Parity(Even, Odd), Radix, and, asIntN, asUintN, binary, decimal, even, fromInt, fromNumber, fromString, fromStringAs, fromTLInt, hexadecimal, not, octal, odd, or, parity, pow, shl, shr, toInt, toNumber, toString, toStringAs, xor) as X import Partial.Unsafe (unsafePartial) toCsl :: BigInt -> Csl.BigInt diff --git a/src/Types/BigNum.purs b/src/Types/BigNum.purs index 67aa95207..ab5d5af5b 100644 --- a/src/Types/BigNum.purs +++ b/src/Types/BigNum.purs @@ -9,7 +9,7 @@ module Cardano.Types.BigNum , fromUInt , maxValue , mul - , minus + , sub , one , toBigInt , toInt @@ -17,22 +17,43 @@ module Cardano.Types.BigNum , toString , toUInt , zero + , max + , abs ) where import Prelude -import Aeson (JsonDecodeError(TypeMismatch)) as Aeson import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) -import Cardano.Serialization.Lib (bigNum_checkedAdd, bigNum_checkedMul, bigNum_checkedSub, bigNum_compare, bigNum_divFloor, bigNum_fromStr, bigNum_maxValue, bigNum_one, bigNum_toStr, bigNum_zero, fromBytes, toBytes) +import Aeson (JsonDecodeError(TypeMismatch)) as Aeson +import Cardano.Serialization.Lib + ( bigNum_checkedAdd + , bigNum_checkedMul + , bigNum_checkedSub + , bigNum_compare + , bigNum_divFloor + , bigNum_fromStr + , bigNum_max + , bigNum_maxValue + , bigNum_one + , bigNum_toStr + , bigNum_zero + , fromBytes + , toBytes + ) import Cardano.Serialization.Lib as Csl import Cardano.Types.AsCbor (class AsCbor) import Ctl.Internal.Deserialization.Error (FromCslRepError, fromCslRepError) import Ctl.Internal.Error (E, noteE) import Ctl.Internal.Helpers (eqOrd) -import Ctl.Internal.Partition (class Equipartition, class Partition, equipartition, partition) +import Ctl.Internal.Partition + ( class Equipartition + , class Partition + , equipartition + , partition + ) import Data.Either (note) import Data.Int (fromString) as Int -import Data.Maybe (Maybe, fromJust) +import Data.Maybe (Maybe, fromJust, fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Nullable (toMaybe) import Data.UInt (UInt) @@ -80,7 +101,7 @@ instance Partition BigNum where instance Equipartition BigNum where equipartition bn = unsafePartial $ map (fromJust <<< fromBigInt) - <<< equipartition (toBigInt bn) + <<< equipartition (toBigInt bn) -- Semiring cannot be implemented, because add and mul returns Maybe BigNum @@ -96,8 +117,14 @@ add (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedAdd a b mul :: BigNum -> BigNum -> Maybe BigNum mul (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedMul a b -minus :: BigNum -> BigNum -> Maybe BigNum -minus (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedSub a b +sub :: BigNum -> BigNum -> Maybe BigNum +sub (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedSub a b + +max :: BigNum -> BigNum -> BigNum +max = coerce bigNum_max + +abs :: BigNum -> BigNum +abs n = max n (fromMaybe zero $ sub zero n) divFloor :: BigNum -> BigNum -> BigNum divFloor (BigNum a) (BigNum b) = BigNum $ bigNum_divFloor a b diff --git a/src/Types/ByronAddress.purs b/src/Types/ByronAddress.purs index 8b243fa13..72b2d1d54 100644 --- a/src/Types/ByronAddress.purs +++ b/src/Types/ByronAddress.purs @@ -7,7 +7,12 @@ module Cardano.Types.ByronAddress import Prelude import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Serialization.Lib (byronAddress_fromBase58, byronAddress_toBase58, fromBytes, toBytes) +import Cardano.Serialization.Lib + ( byronAddress_fromBase58 + , byronAddress_toBase58 + , fromBytes + , toBytes + ) import Cardano.Serialization.Lib as Csl import Cardano.Types.AsCbor (class AsCbor) import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd, showFromBytes) diff --git a/src/Types/Coin.purs b/src/Types/Coin.purs index 599ebfd28..2f6d4d37e 100644 --- a/src/Types/Coin.purs +++ b/src/Types/Coin.purs @@ -9,8 +9,10 @@ import Ctl.Internal.Helpers (showWithParens) import Ctl.Internal.Partition (class Equipartition, class Partition) import Data.Generic.Rep (class Generic) import Data.Lattice (class JoinSemilattice, class MeetSemilattice) +import Data.Maybe (Maybe) import Data.Newtype (class Newtype) import Data.Semiring as Num +import Safe.Coerce (coerce) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (suchThat) @@ -42,3 +44,6 @@ fromInt = Coin <<< BigNum.fromInt zero :: Coin zero = Coin BigNum.zero + +add :: Coin -> Coin -> Maybe Coin +add = coerce BigNum.add diff --git a/src/Types/Credential.purs b/src/Types/Credential.purs index dc4ad892c..3d71c5950 100644 --- a/src/Types/Credential.purs +++ b/src/Types/Credential.purs @@ -1,20 +1,79 @@ module Cardano.Types.Credential where - import Prelude -import Cardano.Types.ByronAddress (ByronAddress) -import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash(..)) -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.ScriptHash (ScriptHash(..)) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch) + , caseAesonObject + , (.:) + ) +import Cardano.Serialization.Lib + ( fromBytes + , stakeCredential_fromKeyhash + , stakeCredential_fromScripthash + , stakeCredential_toKeyhash + , stakeCredential_toScripthash + , toBytes + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash) +import Cardano.Types.ScriptHash (ScriptHash) +import Control.Alt ((<|>)) +import Ctl.Internal.Helpers (encodeTagged') +import Ctl.Internal.Metadata.Helpers (errExpectedObject) +import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) +import Data.Maybe (fromJust) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) import Data.Show.Generic (genericShow) +import Partial.Unsafe (unsafePartial) -data Credential = PubKeyHashCredential Ed25519KeyHash | ScriptHashCredential ScriptHash +-- In CSL, this type is called StakeCredential. They reuse it for Payment Credentials as well. +data Credential + = PubKeyHashCredential Ed25519KeyHash + | ScriptHashCredential ScriptHash derive instance Generic Credential _ derive instance Eq Credential derive instance Ord Credential +instance EncodeAeson Credential where + encodeAeson = case _ of + PubKeyHashCredential kh -> encodeTagged' "PubKeyHashCredential" kh + ScriptHashCredential sh -> encodeTagged' "ScriptHashCredential" sh + +instance DecodeAeson Credential where + decodeAeson = caseAesonObject errExpectedObject $ \obj -> do + tag <- obj .: "tag" + let + aesonContents + :: forall (a :: Type). DecodeAeson a => Either JsonDecodeError a + aesonContents = obj .: "content" + case tag of + "PubKeyHashCredential" -> PubKeyHashCredential <$> aesonContents + "ScriptHashCredential" -> ScriptHashCredential <$> aesonContents + _ -> Left $ TypeMismatch ("Unknown tag: " <> tag) + instance Show Credential where show = genericShow + +instance AsCbor Credential where + encodeCbor = toCsl >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map fromCsl + +toCsl :: Credential -> Csl.StakeCredential +toCsl = case _ of + PubKeyHashCredential kh -> stakeCredential_fromKeyhash (unwrap kh) + ScriptHashCredential sh -> stakeCredential_fromScripthash (unwrap sh) + +fromCsl :: Csl.StakeCredential -> Credential +fromCsl sc = unsafePartial $ fromJust $ + (map (PubKeyHashCredential <<< wrap) $ toMaybe $ stakeCredential_toKeyhash sc) + <|> + ( map (ScriptHashCredential <<< wrap) $ toMaybe $ + stakeCredential_toScripthash sc + ) diff --git a/src/Types/Ed25519KeyHash.purs b/src/Types/Ed25519KeyHash.purs index d47333b38..da046a112 100644 --- a/src/Types/Ed25519KeyHash.purs +++ b/src/Types/Ed25519KeyHash.purs @@ -16,6 +16,7 @@ import Cardano.Serialization.Lib , toBytes ) import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) import Cardano.Types.PlutusData (PlutusData(Bytes)) import Ctl.Internal.FfiHelpers (partialToMaybe) import Ctl.Internal.FromData (class FromData) @@ -51,6 +52,10 @@ instance Show Ed25519KeyHash where <> show (ed25519KeyHashToBech32 "pool" edkh) <> ")" +instance AsCbor Ed25519KeyHash where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap + instance ToData Ed25519KeyHash where toData = toData <<< unwrap <<< ed25519KeyHashToBytes diff --git a/src/Types/Ed25519Signature.purs b/src/Types/Ed25519Signature.purs new file mode 100644 index 000000000..1835b642a --- /dev/null +++ b/src/Types/Ed25519Signature.purs @@ -0,0 +1,32 @@ +module Cardano.Types.Ed25519Signature where + +import Prelude + +import Aeson (class EncodeAeson, encodeAeson) +import Cardano.Serialization.Lib (ed25519Signature_toBech32, fromBytes, toBytes) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Data.Function (on) +import Data.Newtype (class Newtype, unwrap, wrap) + +newtype Ed25519Signature = Ed25519Signature Csl.Ed25519Signature + +derive instance Newtype Ed25519Signature _ + +instance Eq Ed25519Signature where + eq a b = compare a b == EQ + +instance Ord Ed25519Signature where + compare = compare `on` (unwrap >>> toBytes) + +instance EncodeAeson Ed25519Signature where + encodeAeson = unwrap >>> toBytes >>> encodeAeson + +instance Show Ed25519Signature where + show sig = "(Ed25519Signature " + <> show (ed25519Signature_toBech32 <<< unwrap $ sig) + <> ")" + +instance AsCbor Ed25519Signature where + encodeCbor = unwrap >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map wrap diff --git a/src/Types/EnterpriseAddress.purs b/src/Types/EnterpriseAddress.purs new file mode 100644 index 000000000..43a9a9e00 --- /dev/null +++ b/src/Types/EnterpriseAddress.purs @@ -0,0 +1,79 @@ +module Cardano.Types.EnterpriseAddress where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(..) + , decodeAeson + , encodeAeson + ) +import Cardano.Serialization.Lib + ( address_fromBech32 + , address_networkId + , address_toBech32 + , enterpriseAddress_fromAddress + , enterpriseAddress_new + , enterpriseAddress_paymentCred + , enterpriseAddress_toAddress + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.Credential as Credential +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.NetworkId as NetworkId +import Cardano.Types.PaymentCredential (PaymentCredential) +import Ctl.Internal.Types.Aliases (Bech32String) +import Data.Either (note) +import Data.Generic.Rep (class Generic) +import Data.Int as Int +import Data.Maybe (Maybe, fromJust) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) +import Data.Show.Generic (genericShow) +import Literals.Undefined (undefined) +import Partial.Unsafe (unsafePartial) +import Unsafe.Coerce (unsafeCoerce) + +data EnterpriseAddress = EnterpriseAddress NetworkId PaymentCredential + +derive instance Generic EnterpriseAddress _ +derive instance Ord EnterpriseAddress +derive instance Eq EnterpriseAddress + +instance Show EnterpriseAddress where + show = genericShow + +-- no AsCbor instance, because there is no to_bytes method in CSL + +instance EncodeAeson EnterpriseAddress where + encodeAeson = toCsl >>> enterpriseAddress_toAddress + >>> flip address_toBech32 (unsafeCoerce undefined) + >>> encodeAeson + +instance DecodeAeson EnterpriseAddress where + decodeAeson = note (TypeMismatch "EnterpriseAddress") <<< decodeBech32 <=< + decodeAeson + where + decodeBech32 = map fromCsl <<< toMaybe <<< enterpriseAddress_fromAddress <=< + fromBech32 + + fromBech32 :: Bech32String -> Maybe Csl.Address + fromBech32 = toMaybe <<< address_fromBech32 + +toCsl :: EnterpriseAddress -> Csl.EnterpriseAddress +toCsl = case _ of + EnterpriseAddress nid sc -> + enterpriseAddress_new (Int.toNumber $ NetworkId.toInt nid) + (Credential.toCsl $ unwrap sc) + +fromCsl :: Csl.EnterpriseAddress -> EnterpriseAddress +fromCsl addr = + EnterpriseAddress networkId + (wrap $ Credential.fromCsl $ enterpriseAddress_paymentCred addr) + where + networkId :: NetworkId + networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust + $ Int.fromNumber + $ address_networkId + $ enterpriseAddress_toAddress addr diff --git a/src/Types/GeneralTransactionMetadata.purs b/src/Types/GeneralTransactionMetadata.purs new file mode 100644 index 000000000..a8daf2798 --- /dev/null +++ b/src/Types/GeneralTransactionMetadata.purs @@ -0,0 +1,40 @@ +module Cardano.Types.GeneralTransactionMetadata where + +import Prelude + +import Aeson (class EncodeAeson) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.TransactionMetadatum (TransactionMetadatum) +import Ctl.Internal.Helpers (appendRightMap, encodeMap) +import Data.Generic.Rep (class Generic) +import Data.Map (Map) +import Data.Map as Map +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype GeneralTransactionMetadata = + GeneralTransactionMetadata + (Map BigNum TransactionMetadatum) + +derive instance Newtype GeneralTransactionMetadata _ + +derive newtype instance Eq GeneralTransactionMetadata +derive instance Generic GeneralTransactionMetadata _ + +instance Show GeneralTransactionMetadata where + show = genericShow + +instance EncodeAeson GeneralTransactionMetadata where + encodeAeson (GeneralTransactionMetadata m) = encodeMap m + +-- This Semigroup instance simply takes the Last value for duplicate keys +-- to avoid a Semigroup instance for TransactionMetadatum. +-- Do we want to avoid a Semigroup instance for TransactionMetadatum? Recursion +-- is fine but how to combine Text with Bytes for example? One would have to take +-- precedence and replace the other. +instance Semigroup GeneralTransactionMetadata where + append (GeneralTransactionMetadata hm) (GeneralTransactionMetadata hm') = + GeneralTransactionMetadata $ hm `appendRightMap` hm' + +instance Monoid GeneralTransactionMetadata where + mempty = GeneralTransactionMetadata Map.empty diff --git a/src/Types/Language.purs b/src/Types/Language.purs new file mode 100644 index 000000000..708fec2ba --- /dev/null +++ b/src/Types/Language.purs @@ -0,0 +1,72 @@ +module Cardano.Types.Language where + +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , Aeson + , JsonDecodeError(TypeMismatch, UnexpectedValue) + , caseAesonObject + , caseAesonString + , decodeAeson + , encodeAeson + , fromString + , getField + , toStringifiedNumbersJson + ) +import Cardano.Serialization.Lib + ( language_kind + , language_newPlutusV1 + , language_newPlutusV2 + ) +import Cardano.Serialization.Lib as Csl +import Control.Alt ((<|>)) +import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) +import Ctl.Internal.FromData (class FromData) +import Ctl.Internal.Helpers (notImplemented) +import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) +import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) +import Data.Either (Either(Left)) +import Data.Generic.Rep (class Generic) +import Data.Show.Generic (genericShow) +import Effect.Exception (throw) +import Effect.Unsafe (unsafePerformEffect) +import Partial.Unsafe (unsafePartial) + +data Language + = PlutusV1 + | PlutusV2 + +derive instance Eq Language +derive instance Ord Language +derive instance Generic Language _ + +instance DecodeAeson Language where + decodeAeson = caseAesonString + (Left $ TypeMismatch "Expected string") + case _ of + "PlutusV1" -> pure PlutusV1 + "PlutusV2" -> pure PlutusV2 + other -> Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString + other + +instance EncodeAeson Language where + encodeAeson = encodeAeson <<< case _ of + PlutusV1 -> "PlutusV1" + PlutusV2 -> "PlutusV2" + +instance Show Language where + show = genericShow + +fromCsl :: Csl.Language -> Language +fromCsl lang = + case language_kind lang of + 0.0 -> PlutusV1 + 1.1 -> PlutusV2 + _ -> unsafePerformEffect $ throw + "Cardano.Types.Language.fromCsl: unknown kind" + +toCsl :: Language -> Csl.Language +toCsl PlutusV1 = language_newPlutusV1 +toCsl PlutusV2 = language_newPlutusV2 diff --git a/src/Types/MultiAsset.purs b/src/Types/MultiAsset.purs index e7a8caa86..3528d5b58 100644 --- a/src/Types/MultiAsset.purs +++ b/src/Types/MultiAsset.purs @@ -9,10 +9,11 @@ import Cardano.Types.AsCbor (encodeCbor) import Cardano.Types.AssetName (AssetName, fromAssetName) import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum as BigNum +import Control.Bind (bindFlipped) import Ctl.Internal.Helpers (decodeMap, encodeMap) import Ctl.Internal.Partition (class Equipartition, equipartition) import Ctl.Internal.Serialization.Hash (ScriptHash) -import Data.Array (filter) +import Data.Array (filter, foldr) import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (replicate, zipWith) as NEArray import Data.ByteArray (byteArrayToHex) @@ -74,6 +75,7 @@ instance Equipartition MultiAsset where (flatten nonAdaAssets) where append' a b = unsafePartial $ fromJust $ add a b + accumulate :: NonEmptyArray MultiAsset -> (ScriptHash /\ AssetName /\ BigNum) @@ -89,6 +91,9 @@ empty = MultiAsset Map.empty add :: MultiAsset -> MultiAsset -> Maybe MultiAsset add = unionWithNonAda BigNum.add +sum :: Array MultiAsset -> Maybe MultiAsset +sum = foldr (bindFlipped <<< add) (Just empty) + flatten :: MultiAsset -> Array (ScriptHash /\ AssetName /\ BigNum) flatten (MultiAsset mp) = Map.toUnfoldable mp >>= \(sh /\ mp') -> do @@ -98,8 +103,8 @@ unflatten :: Array (ScriptHash /\ AssetName /\ BigNum) -> Maybe MultiAsset unflatten = foldM accumulate empty where - uncurry2 f (a /\ b /\ c) = f a b c - accumulate ma = unionWithNonAda BigNum.add ma <<< uncurry2 singleton + uncurry2 f (a /\ b /\ c) = f a b c + accumulate ma = unionWithNonAda BigNum.add ma <<< uncurry2 singleton singleton :: ScriptHash -> AssetName -> BigNum -> MultiAsset singleton sh tn amount = MultiAsset $ Map.singleton sh $ Map.singleton tn amount @@ -192,12 +197,14 @@ union l r = Map.fromFoldable (ls' <> rs'') toCsl :: MultiAsset -> Csl.MultiAsset -toCsl (MultiAsset mp) = packMapContainer $ map (unwrap *** assetsToCsl) $ Map.toUnfoldable mp +toCsl (MultiAsset mp) = packMapContainer $ map (unwrap *** assetsToCsl) $ + Map.toUnfoldable mp where - assetsToCsl :: Map AssetName BigNum -> Csl.Assets - assetsToCsl assets = packMapContainer $ map (unwrap *** unwrap) $ Map.toUnfoldable assets + assetsToCsl :: Map AssetName BigNum -> Csl.Assets + assetsToCsl assets = packMapContainer $ map (unwrap *** unwrap) $ + Map.toUnfoldable assets fromCsl :: Csl.MultiAsset -> MultiAsset fromCsl multiAsset = MultiAsset $ Map.fromFoldable $ unpackMapContainer multiAsset <#> wrap *** \asset -> - Map.fromFoldable (unpackMapContainer asset <#> wrap *** wrap) + Map.fromFoldable (unpackMapContainer asset <#> wrap *** wrap) diff --git a/src/Types/NativeScript.purs b/src/Types/NativeScript.purs index 1175b3b8a..1807b8e97 100644 --- a/src/Types/NativeScript.purs +++ b/src/Types/NativeScript.purs @@ -42,21 +42,16 @@ import Cardano.Serialization.Lib.Internal ( packListContainer , unpackListContainer ) +import Cardano.Types.AsCbor (decodeCbor, encodeCbor) import Cardano.Types.BigNum (fromString) import Cardano.Types.BigNum as BigNum +import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash(..)) import Cardano.Types.Slot (Slot(..)) import Control.Alt ((<|>)) import Ctl.Internal.Helpers (encodeTagged') import Ctl.Internal.Metadata.Helpers (errExpectedObject) -import Ctl.Internal.Serialization.Address (Slot) -import Ctl.Internal.Serialization.Hash - ( Ed25519KeyHash - , ed25519KeyHashFromBytes - , ed25519KeyHashToBytes - ) -import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Data.Array.NonEmpty (fromFoldable) -import Data.ByteArray (hexToByteArrayUnsafe) +import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) import Data.Int as Int @@ -102,9 +97,10 @@ instance Arbitrary NativeScript where ] where pk :: Ed25519KeyHash - pk = unsafePartial $ fromJust $ ed25519KeyHashFromBytes $ - hexToByteArrayUnsafe - "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" + pk = unsafePartial $ fromJust $ decodeCbor + $ wrap + $ hexToByteArrayUnsafe + "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" instance DecodeAeson NativeScript where decodeAeson = caseAesonObject errExpectedObject $ \obj -> do @@ -138,7 +134,7 @@ instance EncodeAeson NativeScript where pprintNativeScript :: NativeScript -> TagSet pprintNativeScript = case _ of ScriptPubkey kh -> TagSet.fromArray - [ "PubKey" `tag` rawBytesToHex (ed25519KeyHashToBytes kh) ] + [ "PubKey" `tag` byteArrayToHex (unwrap $ encodeCbor kh) ] ScriptAll scripts -> "All of" `tagSetTag` TagSet.fromArray (pprintNativeScript <$> scripts) ScriptAny scripts -> "Any of" `tagSetTag` TagSet.fromArray diff --git a/src/Types/NetworkId.purs b/src/Types/NetworkId.purs index c1227b315..a5b1945b2 100644 --- a/src/Types/NetworkId.purs +++ b/src/Types/NetworkId.purs @@ -3,7 +3,13 @@ module Cardano.Types.NetworkId where import Prelude import Aeson (class EncodeAeson) -import Cardano.Serialization.Lib (fromBytes, networkId_kind, networkId_mainnet, networkId_testnet, toBytes) +import Cardano.Serialization.Lib + ( fromBytes + , networkId_kind + , networkId_mainnet + , networkId_testnet + , toBytes + ) import Cardano.Serialization.Lib as Csl import Cardano.Types.AsCbor (class AsCbor) import Ctl.Internal.Helpers (encodeTagged') @@ -59,5 +65,6 @@ toCsl = case _ of MainnetId -> networkId_mainnet fromCsl :: Csl.NetworkId -> NetworkId -fromCsl cslNetworkId = unsafePartial $ fromJust $ - fromInt <=< Int.fromNumber $ networkId_kind cslNetworkId +fromCsl cslNetworkId = unsafePartial $ fromJust + $ fromInt <=< Int.fromNumber + $ networkId_kind cslNetworkId diff --git a/src/Types/OutputDatum.purs b/src/Types/OutputDatum.purs index a0787355c..e9e6965f8 100644 --- a/src/Types/OutputDatum.purs +++ b/src/Types/OutputDatum.purs @@ -1,5 +1,5 @@ module Cardano.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) + ( OutputDatum(OutputDatumHash, OutputDatum) , outputDatumDataHash , outputDatumDatum , pprintOutputDatum @@ -18,7 +18,7 @@ import Aeson ) import Cardano.Types.AsCbor (encodeCbor) import Cardano.Types.DataHash (DataHash) -import Cardano.Types.PlutusData (pprintPlutusData) +import Cardano.Types.PlutusData (PlutusData, pprintPlutusData) import Ctl.Internal.FromData (class FromData, genericFromData) import Ctl.Internal.Helpers (encodeTagged') import Ctl.Internal.Plutus.Types.DataSchema @@ -40,7 +40,7 @@ import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap) import Data.Show.Generic (genericShow) -data OutputDatum = NoOutputDatum | OutputDatumHash DataHash | OutputDatum Datum +data OutputDatum = OutputDatumHash DataHash | OutputDatum PlutusData derive instance Generic OutputDatum _ derive instance Eq OutputDatum @@ -50,13 +50,12 @@ instance Show OutputDatum where instance HasPlutusSchema OutputDatum - ( "NoOutputDatum" := PNil @@ Z - :+ "OutputDatumHash" + ( "OutputDatumHash" := PNil - @@ (S Z) + @@ Z :+ "OutputDatum" := PNil - @@ (S (S Z)) + @@ (S Z) :+ PNil ) @@ -68,7 +67,6 @@ instance FromData OutputDatum where instance EncodeAeson OutputDatum where encodeAeson = case _ of - NoOutputDatum -> encodeTagged' "NoOutputDatum" {} OutputDatumHash r -> encodeTagged' "OutputDatumHash" r OutputDatum r -> encodeTagged' "OutputDatum" r @@ -77,8 +75,6 @@ instance DecodeAeson OutputDatum where \obj -> do tag <- obj .: "tag" case tag of - "NoOutputDatum" -> - pure NoOutputDatum "OutputDatumHash" -> do dataHash <- obj .: "contents" pure $ OutputDatumHash dataHash @@ -91,16 +87,15 @@ instance DecodeAeson OutputDatum where pprintOutputDatum :: OutputDatum -> TagSet pprintOutputDatum = TagSet.fromArray <<< case _ of - NoOutputDatum -> [ "datum" `tag` "none" ] OutputDatumHash hash -> [ "datumHash" `tag` byteArrayToHex (unwrap $ encodeCbor hash) ] OutputDatum d -> - [ "datum" `tagSetTag` pprintPlutusData (unwrap d) ] + [ "datum" `tagSetTag` pprintPlutusData d ] outputDatumDataHash :: OutputDatum -> Maybe DataHash outputDatumDataHash (OutputDatumHash hash) = Just hash outputDatumDataHash _ = Nothing -outputDatumDatum :: OutputDatum -> Maybe Datum +outputDatumDatum :: OutputDatum -> Maybe PlutusData outputDatumDatum (OutputDatum datum) = Just datum outputDatumDatum _ = Nothing diff --git a/src/Types/PaymentCredential.purs b/src/Types/PaymentCredential.purs index b777410a4..1794c4386 100644 --- a/src/Types/PaymentCredential.purs +++ b/src/Types/PaymentCredential.purs @@ -1,28 +1,34 @@ module Cardano.Types.PaymentCredential where + import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), caseAesonString, encodeAeson) -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Data.Function (on) -import Data.Newtype (class Newtype, unwrap, wrap) -import Cardano.Serialization.Lib as Csl +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(..) + , caseAesonString + , encodeAeson + ) import Cardano.Types.AsCbor (class AsCbor, decodeCbor, encodeCbor) +import Cardano.Types.Credential (Credential) import Data.ByteArray (hexToByteArray) import Data.Either (Either(..)) +import Data.Function (on) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe(..), maybe) +import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) -- in CSL, StakeCredential and PaymentCredential are the same type, because they are -- literally the same, but we treat them differently as domain types -newtype PaymentCredential = PaymentCredential Csl.StakeCredential +newtype PaymentCredential = PaymentCredential Credential derive instance Newtype PaymentCredential _ derive instance Generic PaymentCredential _ instance AsCbor PaymentCredential where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap + encodeCbor = unwrap >>> encodeCbor + decodeCbor = decodeCbor >>> map wrap instance Eq PaymentCredential where eq = eq `on` encodeCbor @@ -36,8 +42,10 @@ instance Show PaymentCredential where -- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances instance DecodeAeson PaymentCredential where decodeAeson = do - maybe (Left $ TypeMismatch "Expected hex-encoded PaymentCredential") Right <<< - caseAesonString Nothing (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) + maybe (Left $ TypeMismatch "Expected hex-encoded PaymentCredential") Right + <<< + caseAesonString Nothing + (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) instance EncodeAeson PaymentCredential where encodeAeson sh = encodeAeson $ encodeCbor sh diff --git a/src/Types/PaymentPubKeyHash.purs b/src/Types/PaymentPubKeyHash.purs new file mode 100644 index 000000000..0a4b2bda6 --- /dev/null +++ b/src/Types/PaymentPubKeyHash.purs @@ -0,0 +1,22 @@ +module Cardano.Types.PaymentPubKeyHash where + +import Prelude + +import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash(Ed25519KeyHash)) +import Ctl.Internal.FromData (class FromData) +import Ctl.Internal.ToData (class ToData) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype PaymentPubKeyHash = PaymentPubKeyHash Ed25519KeyHash + +derive instance Generic PaymentPubKeyHash _ +derive instance Newtype PaymentPubKeyHash _ +derive newtype instance Eq PaymentPubKeyHash +derive newtype instance FromData PaymentPubKeyHash +derive newtype instance Ord PaymentPubKeyHash +derive newtype instance ToData PaymentPubKeyHash + +instance Show PaymentPubKeyHash where + show = genericShow diff --git a/src/Types/PlutusScript.purs b/src/Types/PlutusScript.purs new file mode 100644 index 000000000..91c54a2ab --- /dev/null +++ b/src/Types/PlutusScript.purs @@ -0,0 +1,52 @@ +module Cardano.Types.PlutusScript where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Serialization.Lib + ( fromBytes + , plutusScript_bytes + , plutusScript_languageVersion + , plutusScript_newWithVersion + , toBytes + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Cardano.Types.Language (Language(PlutusV1, PlutusV2)) +import Cardano.Types.Language as Language +import Data.ByteArray (ByteArray) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Show.Generic (genericShow) +import Data.Tuple.Nested (type (/\), (/\)) + +-- | Corresponds to "Script" in Plutus +newtype PlutusScript = PlutusScript (ByteArray /\ Language) + +derive instance Generic PlutusScript _ +derive instance Newtype PlutusScript _ +derive newtype instance Eq PlutusScript +derive newtype instance Ord PlutusScript +derive newtype instance DecodeAeson PlutusScript +derive newtype instance EncodeAeson PlutusScript + +instance Show PlutusScript where + show = genericShow + +plutusV1Script :: ByteArray -> PlutusScript +plutusV1Script ba = PlutusScript (ba /\ PlutusV1) + +plutusV2Script :: ByteArray -> PlutusScript +plutusV2Script ba = PlutusScript (ba /\ PlutusV2) + +instance AsCbor PlutusScript where + encodeCbor = toCsl >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map fromCsl + +toCsl :: PlutusScript -> Csl.PlutusScript +toCsl (PlutusScript (bytes /\ lang)) = plutusScript_newWithVersion bytes $ + Language.toCsl lang + +fromCsl :: Csl.PlutusScript -> PlutusScript +fromCsl ps = PlutusScript + (plutusScript_bytes ps /\ Language.fromCsl (plutusScript_languageVersion ps)) diff --git a/src/Types/Pointer.purs b/src/Types/Pointer.purs index 085eb22ee..96aa50bfd 100644 --- a/src/Types/Pointer.purs +++ b/src/Types/Pointer.purs @@ -9,7 +9,8 @@ import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) -newtype Pointer = Pointer { slot :: Slot, txIndex :: BigNum, certIndex :: BigNum } +newtype Pointer = Pointer + { slot :: Slot, txIndex :: BigNum, certIndex :: BigNum } derive instance Eq Pointer derive instance Ord Pointer diff --git a/src/Types/PointerAddress.purs b/src/Types/PointerAddress.purs index 194f1a255..120fb51a3 100644 --- a/src/Types/PointerAddress.purs +++ b/src/Types/PointerAddress.purs @@ -2,23 +2,27 @@ module Cardano.Types.PointerAddress where import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), decodeAeson, encodeAeson) -import Cardano.Serialization.Lib (byronAddress_fromBase58, byronAddress_toBase58, fromBytes, pointerAddress_fromAddress, pointerAddress_toAddress, toBytes) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch) + , decodeAeson + , encodeAeson + ) +import Cardano.Serialization.Lib + ( fromBytes + , pointerAddress_fromAddress + , pointerAddress_toAddress + , toBytes + ) import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd, showFromBytes) -import Ctl.Internal.Types.Aliases (Base58String) -import Data.ByteArray (byteArrayFromIntArrayUnsafe, byteArrayToHex) +import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd) +import Data.ByteArray (byteArrayToHex) import Data.Either (note) import Data.Function (on) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Newtype (class Newtype, unwrap) import Data.Nullable (toMaybe) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck (class Coarbitrary, coarbitrary) -import Test.QuickCheck.Arbitrary (class Arbitrary) -import Test.QuickCheck.Gen (chooseInt, vectorOf) newtype PointerAddress = PointerAddress Csl.PointerAddress @@ -33,7 +37,8 @@ instance Ord PointerAddress where instance Show PointerAddress where -- TODO: make this instance lawful - show addr = show $ byteArrayToHex $ toBytes $ pointerAddress_toAddress (unwrap addr) + show addr = show $ byteArrayToHex $ toBytes $ pointerAddress_toAddress + (unwrap addr) instance EncodeAeson PointerAddress where encodeAeson = encodeAeson <<< toBytes <<< pointerAddress_toAddress <<< unwrap diff --git a/src/Types/PrivateKey.purs b/src/Types/PrivateKey.purs new file mode 100644 index 000000000..c8e49d8fe --- /dev/null +++ b/src/Types/PrivateKey.purs @@ -0,0 +1,35 @@ +module Cardano.Types.PrivateKey where + +import Prelude + +import Aeson (class EncodeAeson, encodeAeson) +import Cardano.Serialization.Lib + ( privateKey_asBytes + , privateKey_toBech32 + , publicKey_asBytes + , publicKey_fromBytes + , publicKey_toBech32 + ) +import Cardano.Serialization.Lib as Csl +import Ctl.Internal.FromData (class FromData, fromData) +import Ctl.Internal.Helpers (eqOrd) +import Ctl.Internal.ToData (class ToData, toData) +import Data.Function (on) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) + +newtype PrivateKey = PrivateKey Csl.PrivateKey + +derive instance Newtype PrivateKey _ + +instance Eq PrivateKey where + eq = eqOrd + +instance Ord PrivateKey where + compare = compare `on` (unwrap >>> privateKey_asBytes) + +instance EncodeAeson PrivateKey where + encodeAeson = unwrap >>> privateKey_asBytes >>> encodeAeson + +instance Show PrivateKey where + show pk = "(PrivateKey " <> (privateKey_toBech32 <<< unwrap $ pk) <> ")" diff --git a/src/Types/PublicKey.purs b/src/Types/PublicKey.purs new file mode 100644 index 000000000..2dbdb77e6 --- /dev/null +++ b/src/Types/PublicKey.purs @@ -0,0 +1,39 @@ +module Cardano.Types.PublicKey where + +import Prelude + +import Aeson (class EncodeAeson, encodeAeson) +import Cardano.Serialization.Lib + ( publicKey_asBytes + , publicKey_fromBytes + , publicKey_toBech32 + ) +import Cardano.Serialization.Lib as Csl +import Ctl.Internal.FromData (class FromData, fromData) +import Ctl.Internal.Helpers (eqOrd) +import Ctl.Internal.ToData (class ToData, toData) +import Data.Function (on) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) + +newtype PublicKey = PublicKey Csl.PublicKey + +derive instance Newtype PublicKey _ + +instance Eq PublicKey where + eq = eqOrd + +instance Ord PublicKey where + compare = compare `on` (unwrap >>> publicKey_asBytes) + +instance EncodeAeson PublicKey where + encodeAeson = unwrap >>> publicKey_asBytes >>> encodeAeson + +instance ToData PublicKey where + toData (PublicKey pk) = toData $ publicKey_asBytes pk + +instance FromData PublicKey where + fromData = map wrap <<< toMaybe <<< publicKey_fromBytes <=< fromData + +instance Show PublicKey where + show pk = "(PublicKey " <> (publicKey_toBech32 <<< unwrap $ pk) <> ")" diff --git a/src/Types/RewardAddress.purs b/src/Types/RewardAddress.purs index 887bdb250..278979193 100644 --- a/src/Types/RewardAddress.purs +++ b/src/Types/RewardAddress.purs @@ -2,9 +2,24 @@ module Cardano.Types.RewardAddress where import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), decodeAeson, encodeAeson) -import Cardano.Serialization.Lib (address_fromBech32, address_networkId, address_toBech32, rewardAddress_fromAddress, rewardAddress_new, rewardAddress_paymentCred, rewardAddress_toAddress) +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(..) + , decodeAeson + , encodeAeson + ) +import Cardano.Serialization.Lib + ( address_fromBech32 + , address_networkId + , address_toBech32 + , rewardAddress_fromAddress + , rewardAddress_new + , rewardAddress_paymentCred + , rewardAddress_toAddress + ) import Cardano.Serialization.Lib as Csl +import Cardano.Types.Credential as Credential import Cardano.Types.NetworkId (NetworkId) import Cardano.Types.NetworkId as NetworkId import Cardano.Types.StakeCredential (StakeCredential) @@ -32,23 +47,35 @@ instance Show RewardAddress where -- no AsCbor instance, because there is no to_bytes method in CSL instance EncodeAeson RewardAddress where - encodeAeson = toCsl >>> rewardAddress_toAddress >>> flip address_toBech32 (unsafeCoerce undefined) >>> encodeAeson + encodeAeson = toCsl >>> rewardAddress_toAddress + >>> flip address_toBech32 (unsafeCoerce undefined) + >>> encodeAeson instance DecodeAeson RewardAddress where - decodeAeson = note (TypeMismatch "RewardAddress") <<< decodeBech32 <=< decodeAeson - where - decodeBech32 = map fromCsl <<< toMaybe <<< rewardAddress_fromAddress <=< fromBech32 - fromBech32 :: Bech32String -> Maybe Csl.Address - fromBech32 = toMaybe <<< address_fromBech32 + decodeAeson = note (TypeMismatch "RewardAddress") <<< fromBech32 <=< + decodeAeson + +toBech32 :: RewardAddress -> Bech32String +toBech32 = toCsl >>> rewardAddress_toAddress >>> flip address_toBech32 + (unsafeCoerce undefined) + +fromBech32 :: Bech32String -> Maybe RewardAddress +fromBech32 = map fromCsl <<< toMaybe <<< rewardAddress_fromAddress <=< + toMaybe <<< address_fromBech32 toCsl :: RewardAddress -> Csl.RewardAddress toCsl = case _ of RewardAddress nid sc -> - rewardAddress_new (Int.toNumber $ NetworkId.toInt nid) (unwrap sc) + rewardAddress_new (Int.toNumber $ NetworkId.toInt nid) + (Credential.toCsl $ unwrap sc) fromCsl :: Csl.RewardAddress -> RewardAddress fromCsl addr = - RewardAddress networkId (wrap $ rewardAddress_paymentCred addr) + RewardAddress networkId + (wrap $ Credential.fromCsl $ rewardAddress_paymentCred addr) where - networkId :: NetworkId - networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust $ Int.fromNumber $ address_networkId $ rewardAddress_toAddress addr + networkId :: NetworkId + networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust + $ Int.fromNumber + $ address_networkId + $ rewardAddress_toAddress addr diff --git a/src/Types/ScriptRef.purs b/src/Types/ScriptRef.purs index dda5a77b0..0fe75cf12 100644 --- a/src/Types/ScriptRef.purs +++ b/src/Types/ScriptRef.purs @@ -11,16 +11,32 @@ import Aeson , toStringifiedNumbersJson , (.:) ) +import Cardano.Serialization.Lib + ( fromBytes + , scriptRef_nativeScript + , scriptRef_newNativeScript + , scriptRef_newPlutusScript + , scriptRef_plutusScript + , toBytes + ) +import Cardano.Serialization.Lib as Csl +import Cardano.Types.AsCbor (class AsCbor) +import Cardano.Types.NativeScript as NativeScript +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.PlutusScript as PlutusScript +import Control.Alt ((<|>)) import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) import Ctl.Internal.Helpers (encodeTagged') import Ctl.Internal.Types.Scripts ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) - , PlutusScript ) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing)) +import Data.Maybe (Maybe(Just, Nothing), fromJust) +import Data.Newtype (unwrap, wrap) +import Data.Nullable (toMaybe) import Data.Show.Generic (genericShow) +import Partial.Unsafe (unsafePartial) data ScriptRef = NativeScriptRef NativeScript | PlutusScriptRef PlutusScript @@ -35,6 +51,10 @@ derive instance Generic ScriptRef _ instance Show ScriptRef where show = genericShow +instance AsCbor ScriptRef where + encodeCbor = toCsl >>> toBytes >>> wrap + decodeCbor = unwrap >>> fromBytes >>> map fromCsl + instance EncodeAeson ScriptRef where encodeAeson = case _ of NativeScriptRef r -> encodeTagged' "NativeScriptRef" r @@ -62,3 +82,17 @@ getNativeScript _ = Nothing getPlutusScript :: ScriptRef -> Maybe PlutusScript getPlutusScript (PlutusScriptRef plutusScript) = Just plutusScript getPlutusScript _ = Nothing + +toCsl :: ScriptRef -> Csl.ScriptRef +toCsl = case _ of + NativeScriptRef ns -> scriptRef_newNativeScript $ NativeScript.toCsl ns + PlutusScriptRef ps -> scriptRef_newPlutusScript $ PlutusScript.toCsl ps + +fromCsl :: Csl.ScriptRef -> ScriptRef +fromCsl sr = unsafePartial $ fromJust $ + ( NativeScriptRef <<< NativeScript.fromCsl <$> toMaybe + (scriptRef_nativeScript sr) + ) <|> + ( PlutusScriptRef <<< PlutusScript.fromCsl <$> toMaybe + (scriptRef_plutusScript sr) + ) diff --git a/src/Types/StakeCredential.purs b/src/Types/StakeCredential.purs index b94a36fe4..3234a325e 100644 --- a/src/Types/StakeCredential.purs +++ b/src/Types/StakeCredential.purs @@ -1,26 +1,32 @@ module Cardano.Types.StakeCredential where + import Prelude -import Aeson (class DecodeAeson, class EncodeAeson, JsonDecodeError(..), caseAesonString, encodeAeson) -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Data.Function (on) -import Data.Newtype (class Newtype, unwrap, wrap) -import Cardano.Serialization.Lib as Csl +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(..) + , caseAesonString + , encodeAeson + ) import Cardano.Types.AsCbor (class AsCbor, decodeCbor, encodeCbor) +import Cardano.Types.Credential (Credential) import Data.ByteArray (hexToByteArray) import Data.Either (Either(..)) +import Data.Function (on) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe(..), maybe) +import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) -newtype StakeCredential = StakeCredential Csl.StakeCredential +newtype StakeCredential = StakeCredential Credential derive instance Newtype StakeCredential _ derive instance Generic StakeCredential _ instance AsCbor StakeCredential where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap + encodeCbor = unwrap >>> encodeCbor + decodeCbor = decodeCbor >>> map wrap instance Eq StakeCredential where eq = eq `on` encodeCbor @@ -35,7 +41,8 @@ instance Show StakeCredential where instance DecodeAeson StakeCredential where decodeAeson = do maybe (Left $ TypeMismatch "Expected hex-encoded StakeCredential") Right <<< - caseAesonString Nothing (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) + caseAesonString Nothing + (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) instance EncodeAeson StakeCredential where encodeAeson sh = encodeAeson $ encodeCbor sh diff --git a/src/Types/StakePubKeyHash.purs b/src/Types/StakePubKeyHash.purs new file mode 100644 index 000000000..262f8a1ff --- /dev/null +++ b/src/Types/StakePubKeyHash.purs @@ -0,0 +1,22 @@ +module Cardano.Types.StakePubKeyHash where + +import Prelude + +import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash(Ed25519KeyHash)) +import Ctl.Internal.FromData (class FromData) +import Ctl.Internal.ToData (class ToData) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype StakePubKeyHash = StakePubKeyHash Ed25519KeyHash + +derive instance Generic StakePubKeyHash _ +derive instance Newtype StakePubKeyHash _ +derive newtype instance Eq StakePubKeyHash +derive newtype instance FromData StakePubKeyHash +derive newtype instance Ord StakePubKeyHash +derive newtype instance ToData StakePubKeyHash + +instance Show StakePubKeyHash where + show = genericShow diff --git a/src/Types/TransactionOutput.purs b/src/Types/TransactionOutput.purs index 932835b04..073afceab 100644 --- a/src/Types/TransactionOutput.purs +++ b/src/Types/TransactionOutput.purs @@ -3,20 +3,43 @@ module Cardano.Types.TransactionOutput where import Prelude import Aeson (class EncodeAeson) +import Cardano.Serialization.Lib + ( transactionOutput_address + , transactionOutput_amount + , transactionOutput_dataHash + , transactionOutput_new + , transactionOutput_plutusData + , transactionOutput_scriptRef + , transactionOutput_setDataHash + , transactionOutput_setPlutusData + , transactionOutput_setScriptRef + ) +import Cardano.Serialization.Lib as Csl import Cardano.Types.Address (Address) -import Cardano.Types.OutputDatum (OutputDatum(..)) +import Cardano.Types.Address as Address +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.OutputDatum (OutputDatum(..), pprintOutputDatum) +import Cardano.Types.PlutusData as PlutusData import Cardano.Types.ScriptRef (ScriptRef) -import Cardano.Types.Value (Value(..)) +import Cardano.Types.ScriptRef as ScriptRef +import Cardano.Types.Value (Value, pprintValue) +import Cardano.Types.Value as Value +import Control.Alt ((<|>)) +import Data.ByteArray (byteArrayToHex) +import Data.Foldable (for_) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe) -import Data.Newtype (class Newtype) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet +import Data.Maybe (Maybe, maybe) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Nullable (toMaybe) import Data.Show.Generic (genericShow) - +import Effect.Unsafe (unsafePerformEffect) newtype TransactionOutput = TransactionOutput { address :: Address , amount :: Value - , datum :: OutputDatum + , datum :: Maybe OutputDatum , scriptRef :: Maybe ScriptRef } @@ -27,3 +50,45 @@ derive newtype instance EncodeAeson TransactionOutput instance Show TransactionOutput where show = genericShow + +pprintTransactionOutput :: TransactionOutput -> TagSet +pprintTransactionOutput + (TransactionOutput { address, amount, datum, scriptRef }) = + TagSet.fromArray $ + [ "address" `tag` show address + , "amount" `tagSetTag` pprintValue amount + ] <> outputDatumTagSet <> referenceScriptTagSet + where + outputDatumTagSet = maybe [] (pure <<< pprintOutputDatum) datum + referenceScriptTagSet = maybe [] + ( pure <<< tag "referenceScript" <<< byteArrayToHex <<< unwrap <<< + encodeCbor + ) + scriptRef + +fromCsl :: Csl.TransactionOutput -> TransactionOutput +fromCsl to = + TransactionOutput { address, amount, datum, scriptRef } + where + address = Address.fromCsl $ transactionOutput_address to + amount = Value.fromCsl $ transactionOutput_amount to + datum = + ( OutputDatum <<< PlutusData.fromCsl <$> toMaybe + (transactionOutput_plutusData to) + ) <|> + (OutputDatumHash <<< wrap <$> toMaybe (transactionOutput_dataHash to)) + scriptRef = ScriptRef.fromCsl <$> toMaybe (transactionOutput_scriptRef to) + +toCsl :: TransactionOutput -> Csl.TransactionOutput +toCsl (TransactionOutput { address, amount, datum, scriptRef }) = + unsafePerformEffect do + let + cslOutput = transactionOutput_new (Address.toCsl address) + (Value.toCsl amount) + for_ datum case _ of + OutputDatumHash dh -> transactionOutput_setDataHash cslOutput $ unwrap dh + OutputDatum dt -> transactionOutput_setPlutusData cslOutput $ + PlutusData.toCsl dt + for_ scriptRef $ transactionOutput_setScriptRef cslOutput <<< + ScriptRef.toCsl + pure cslOutput diff --git a/src/Types/TransactionUnspentOutput.purs b/src/Types/TransactionUnspentOutput.purs index 268501fad..6bf08468e 100644 --- a/src/Types/TransactionUnspentOutput.purs +++ b/src/Types/TransactionUnspentOutput.purs @@ -1,16 +1,23 @@ module Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) , transactionUnspentOutputsToUtxoMap + , fromCsl ) where import Prelude import Aeson (class EncodeAeson) -import Cardano.Serialization.Lib (transactionUnspentOutput_input) +import Cardano.Serialization.Lib + ( transactionUnspentOutput_input + , transactionUnspentOutput_new + , transactionUnspentOutput_output + ) import Cardano.Serialization.Lib as Csl import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionInput as TransactionInput -import Ctl.Internal.Cardano.Types.Transaction (TransactionOutput, UtxoMap) +import Cardano.Types.TransactionOutput (TransactionOutput) +import Cardano.Types.TransactionOutput as TransactionOutput +import Cardano.Types.UtxoMap (UtxoMap) import Data.Generic.Rep (class Generic) import Data.Map as Map import Data.Newtype (class Newtype) @@ -40,4 +47,9 @@ fromCsl tuo = do let input = TransactionInput.fromCsl $ transactionUnspentOutput_input tuo output = TransactionOutput.fromCsl $ transactionUnspentOutput_output tuo - T.TransactionUnspentOutput { input, output } + TransactionUnspentOutput { input, output } + +toCsl :: TransactionUnspentOutput -> Csl.TransactionUnspentOutput +toCsl (TransactionUnspentOutput { input, output }) = + transactionUnspentOutput_new (TransactionInput.toCsl input) + (TransactionOutput.toCsl output) diff --git a/src/Types/UtxoMap.purs b/src/Types/UtxoMap.purs new file mode 100644 index 000000000..bb50c9011 --- /dev/null +++ b/src/Types/UtxoMap.purs @@ -0,0 +1,57 @@ +module Cardano.Types.UtxoMap where + +import Prelude + +import Cardano.Serialization.Lib (toBytes) +import Cardano.Types.Address as Address +import Cardano.Types.AsCbor (encodeCbor) +import Cardano.Types.OutputDatum (OutputDatum(..)) +import Cardano.Types.PlutusData (pprintPlutusData) +import Cardano.Types.TransactionInput (TransactionInput(TransactionInput)) +import Cardano.Types.TransactionOutput (TransactionOutput(TransactionOutput)) +import Cardano.Types.Value (pprintValue) +import Data.ByteArray (byteArrayToHex) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet +import Data.Map (Map) +import Data.Map as Map +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (unwrap) +import Data.Tuple.Nested ((/\)) +import Data.UInt as UInt + +type UtxoMap = Map TransactionInput TransactionOutput + +pprintUtxoMap :: UtxoMap -> TagSet +pprintUtxoMap utxos = TagSet.fromArray $ + Map.toUnfoldable utxos <#> + \( TransactionInput { transactionId, index } /\ + TransactionOutput { address, amount, datum, scriptRef } + ) -> + let + datumTagSets = case datum of + Nothing -> [] + Just (OutputDatumHash datumHash) -> + [ TagSet.fromArray + [ "datum hash" `tag` byteArrayToHex + (unwrap $ encodeCbor datumHash) + ] + ] + Just (OutputDatum plutusData) -> + [ TagSet.fromArray + [ "datum" `tagSetTag` pprintPlutusData plutusData ] + ] + scriptRefTagSets = case scriptRef of + Nothing -> [] + Just ref -> [ "Script Reference" `tag` show ref ] + outputTagSet = + [ "amount" `tagSetTag` pprintValue amount + , "address" `tag` Address.toBech32 address + ] + <> datumTagSets + <> scriptRefTagSets + in + ( byteArrayToHex (toBytes $ unwrap transactionId) <> "#" <> + UInt.toString index + ) + `tagSetTag` TagSet.fromArray outputTagSet diff --git a/src/Types/Value.purs b/src/Types/Value.purs index 1902e692e..2b7249041 100644 --- a/src/Types/Value.purs +++ b/src/Types/Value.purs @@ -3,7 +3,11 @@ module Cardano.Types.Value where import Prelude hiding (join) import Aeson (class EncodeAeson, encodeAeson) -import Cardano.Serialization.Lib (value_coin, value_multiasset) +import Cardano.Serialization.Lib + ( value_coin + , value_multiasset + , value_newWithAssets + ) import Cardano.Serialization.Lib as Csl import Cardano.Types.Asset (Asset(Asset, AdaAsset)) import Cardano.Types.AssetClass (AssetClass(AssetClass)) @@ -13,7 +17,12 @@ import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum as BigNum import Cardano.Types.Coin (Coin(Coin)) import Cardano.Types.Coin as Coin -import Cardano.Types.MultiAsset (MultiAsset(MultiAsset), pprintMultiAsset, unionNonAda, unionWithNonAda) +import Cardano.Types.MultiAsset + ( MultiAsset(MultiAsset) + , pprintMultiAsset + , unionNonAda + , unionWithNonAda + ) import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.ScriptHash (ScriptHash) import Ctl.Internal.Partition (class Equipartition, equipartition) @@ -36,6 +45,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import JS.BigInt (BigInt) import JS.BigInt as BigInt import Partial.Unsafe (unsafePartial) +import Prelude as Prelude import Test.QuickCheck (class Arbitrary, arbitrary) -- | In Plutus, Ada is is stored inside the map (with currency symbol and token @@ -70,6 +80,12 @@ instance Equipartition Value where (equipartition coin numParts) (equipartition nonAdaAssets numParts) +zero :: Value +zero = Value Coin.zero MultiAsset.empty + +add :: Value -> Value -> Maybe Value +add = unionWith BigNum.add + -- for compatibility with older CTL mkValue :: Coin -> MultiAsset -> Value mkValue = Value @@ -132,7 +148,8 @@ equipartitionAssetsWithTokenQuantityUpperBound :: MultiAsset -> BigInt -> NonEmptyArray MultiAsset /\ Int equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity = case - maxTokenQuantity <= zero || BigNum.toBigInt currentMaxTokenQuantity <= maxTokenQuantity + maxTokenQuantity <= Prelude.zero || BigNum.toBigInt currentMaxTokenQuantity + <= maxTokenQuantity of true -> NEArray.singleton nonAdaAssets /\ one @@ -151,7 +168,6 @@ equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity = foldl (\quantity tn -> quantity `max` tokenQuantity tn) BigNum.zero (MultiAsset.flatten nonAdaAssets) - -- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#geq -- | Check whether one `Value` is greater than or equal to another. See `Value` for an explanation of how operations on `Value`s work. geq :: Value -> Value -> Boolean @@ -181,7 +197,10 @@ lt l r = not (isZero l && isZero r) && checkBinRel (<) l r -- inequality is redundant. So we use strict equality instead. -- | Checks if every asset has positive quantity isPositive :: Value -> Boolean -isPositive val = (all (\(_ /\ _ /\ a) -> a > BigNum.zero) $ MultiAsset.flatten $ getMultiAsset val) && valueOf AdaAsset val > BigNum.zero +isPositive val = + ( all (\(_ /\ _ /\ a) -> a > BigNum.zero) $ MultiAsset.flatten $ getMultiAsset + val + ) && valueOf AdaAsset val > BigNum.zero -- From https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#isZero -- | Check whether a `Value` is zero. @@ -213,7 +232,7 @@ checkBinRel f l r = checkPred unThese l r minus :: Value -> Value -> Maybe Value -minus = unionWith BigNum.minus +minus = unionWith BigNum.sub assetToValue :: AssetClass -> BigNum -> Value assetToValue (AssetClass cs tn) quantity = @@ -247,6 +266,10 @@ valueToCoin = Coin <<< valueOf AdaAsset fromCsl :: Csl.Value -> Value fromCsl value = Value coin multiAsset where - coin = Coin $ wrap $ value_coin value - multiAsset = fromMaybe MultiAsset.empty $ - MultiAsset.fromCsl <$> toMaybe (value_multiasset value) + coin = Coin $ wrap $ value_coin value + multiAsset = fromMaybe MultiAsset.empty $ + MultiAsset.fromCsl <$> toMaybe (value_multiasset value) + +toCsl :: Value -> Csl.Value +toCsl (Value coin multiAsset) = + value_newWithAssets (unwrap $ unwrap coin) (MultiAsset.toCsl multiAsset) diff --git a/src/Types/Vkey.purs b/src/Types/Vkey.purs new file mode 100644 index 000000000..4870ecc9d --- /dev/null +++ b/src/Types/Vkey.purs @@ -0,0 +1,20 @@ +module Cardano.Types.Vkey where + +import Prelude + +import Aeson (class EncodeAeson) +import Cardano.Types.PublicKey (PublicKey(..)) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype Vkey = Vkey PublicKey + +derive instance Generic Vkey _ +derive instance Newtype Vkey _ +derive newtype instance Eq Vkey +derive newtype instance Ord Vkey +derive newtype instance EncodeAeson Vkey + +instance Show Vkey where + show = genericShow From fa6ce71cae2dd8bedaab362344a02cc73f9b15ac Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 18:30:23 +0400 Subject: [PATCH 027/373] WIP --- test/BalanceTx/Time.purs | 4 +-- test/CoinSelection/CoinSelection.purs | 4 +-- test/CoinSelection/RoundRobin.purs | 2 +- test/CoinSelection/UtxoIndex.purs | 2 +- test/Data.purs | 4 +-- test/Deserialization.purs | 10 +++----- test/Fixtures.purs | 8 ++---- test/Hashing.purs | 4 +-- test/Ogmios/Address.purs | 35 --------------------------- test/Plutus/Time.purs | 2 +- test/Serialization.purs | 4 +-- test/Serialization/Address.purs | 2 +- test/Transaction.purs | 2 +- test/Types/Interval.purs | 2 +- test/Types/TokenName.purs | 2 +- test/Unit.purs | 2 -- test/UsedTxOuts.purs | 2 +- 17 files changed, 23 insertions(+), 68 deletions(-) delete mode 100644 test/Ogmios/Address.purs diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index c1fe6e8dc..4eef74b05 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -2,6 +2,8 @@ module Test.Ctl.BalanceTx.Time (suite) where import Contract.Prelude +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum (fromInt, toInt) as BigNum import Contract.Config (testnetConfig) import Contract.Monad (Contract, runContract) import Contract.ScriptLookups @@ -26,8 +28,6 @@ import Contract.TxConstraints (mustValidateIn) import Contract.UnbalancedTx (mkUnbalancedTxE) import Control.Monad.Except (throwError) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.BigNum (BigNum) -import Ctl.Internal.Types.BigNum (fromInt, toInt) as BigNum import Ctl.Internal.Types.Interval (Interval) import Effect.Aff (Aff) import Effect.Exception (error) diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index b395f4759..3d9cf35a0 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -2,6 +2,8 @@ module Test.Ctl.CoinSelection (suite) where import Prelude +import Cardano.Types.AssetName (TokenName, mkTokenName) +import Cardano.Types.TransactionInput (TransactionInput) import Control.Monad.Error.Class (class MonadThrow) import Ctl.Internal.BalanceTx.CoinSelection ( SelectionStrategy(SelectionStrategyMinimal, SelectionStrategyOptimal) @@ -26,8 +28,6 @@ import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex import Ctl.Internal.Hashing (blake2b224Hash) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum)) -import Ctl.Internal.Types.TokenName (TokenName, mkTokenName) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.ByteArray (byteArrayFromAscii) import Data.Foldable (fold, foldMap) import Data.Generic.Rep (class Generic) diff --git a/test/CoinSelection/RoundRobin.purs b/test/CoinSelection/RoundRobin.purs index 13e95b621..f0e7715b6 100644 --- a/test/CoinSelection/RoundRobin.purs +++ b/test/CoinSelection/RoundRobin.purs @@ -2,9 +2,9 @@ module Test.Ctl.CoinSelection.RoundRobin where import Prelude +import Cardano.Types.AssetName (TokenName) import Ctl.Internal.BalanceTx.CoinSelection (runRoundRobinM) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.TokenName (TokenName) import Data.Foldable (all, foldl, sum) import Data.Function (on) import Data.Generic.Rep (class Generic) diff --git a/test/CoinSelection/UtxoIndex.purs b/test/CoinSelection/UtxoIndex.purs index 7def380df..a96d4b5df 100644 --- a/test/CoinSelection/UtxoIndex.purs +++ b/test/CoinSelection/UtxoIndex.purs @@ -2,6 +2,7 @@ module Test.Ctl.CoinSelection.UtxoIndex (suite) where import Prelude +import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.CoinSelection.UtxoIndex ( SelectionFilter , UtxoIndex @@ -18,7 +19,6 @@ import Ctl.Internal.CoinSelection.UtxoIndex , utxoIndexPartition ) as UtxoIndex import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.Transaction (TransactionInput) import Data.Map (empty) as Map import Data.Maybe (Maybe(Nothing, Just)) import Data.Newtype (unwrap) diff --git a/test/Data.purs b/test/Data.purs index 83b7362b4..db39af52b 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -5,6 +5,8 @@ import Prelude hiding (conj) import Aeson (JsonDecodeError(TypeMismatch), decodeAeson, encodeAeson) import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr, Integer)) import Control.Lazy (fix) import Control.Monad.Error.Class (class MonadThrow) import Ctl.Internal.Deserialization.PlutusData as PDD @@ -29,8 +31,6 @@ import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed , ConsI , NilI ) -import Ctl.Internal.Types.BigNum as BigNum -import Ctl.Internal.Types.PlutusData (PlutusData(Constr, Integer)) import Data.Array.NonEmpty (fromNonEmpty) as NEArray import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) diff --git a/test/Deserialization.purs b/test/Deserialization.purs index cae82ed8a..2d0462f94 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -4,6 +4,9 @@ import Prelude import Aeson (decodeAeson, parseJsonStringToAeson) import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Types.BigNum (fromBigInt, toBigInt) as BigNum +import Cardano.Types.NativeScript (toCsl) as NSS +import Cardano.Types.TransactionInput (TransactionInput) as T import Contract.CborBytes (hexToCborBytesUnsafe) import Contract.Keys (privateKeyFromBytes) import Contract.Prim.ByteArray (ByteArray) @@ -23,24 +26,17 @@ import Ctl.Internal.Deserialization.BigInt as DB import Ctl.Internal.Deserialization.NativeScript as NSD import Ctl.Internal.Deserialization.PlutusData as DPD import Ctl.Internal.Deserialization.Transaction (convertTransaction) as TD -import Ctl.Internal.Deserialization.UnspentOutput - ( convertUnspentOutput - , mkTransactionUnspentOutput - ) import Ctl.Internal.Deserialization.WitnessSet (convertWitnessSet) import Ctl.Internal.Plutip.Types (StartClusterResponse) import Ctl.Internal.Serialization (convertTransaction) as TS import Ctl.Internal.Serialization (convertTxInput, convertTxOutput) as Serialization import Ctl.Internal.Serialization.BigInt as SB -import Ctl.Internal.Serialization.NativeScript (convertNativeScript) as NSS import Ctl.Internal.Serialization.PlutusData as SPD import Ctl.Internal.Serialization.Types (TransactionUnspentOutput) import Ctl.Internal.Serialization.Types (Vkeywitness) as Serialization import Ctl.Internal.Serialization.WitnessSet (convertVkeywitness) as Serialization import Ctl.Internal.Serialization.WitnessSet as SW import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.BigNum (fromBigInt, toBigInt) as BigNum -import Ctl.Internal.Types.Transaction (TransactionInput) as T import Data.Array as Array import Data.Either (Either, hush, isRight) import Data.Foldable (fold) diff --git a/test/Fixtures.purs b/test/Fixtures.purs index d105e10fd..1d1f0afbb 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -83,6 +83,8 @@ import Prelude import Aeson (Aeson, aesonNull, decodeAeson, fromString, parseJsonStringToAeson) import Cardano.Serialization.Lib (fromBytes) +import Cardano.Types.AssetName (TokenName, mkTokenName) +import Cardano.Types.PlutusData as PD import Contract.Keys (publicKeyFromBech32) import Contract.Numeric.BigNum (BigNum) import Contract.Numeric.BigNum (fromBigInt, fromInt, one, zero) as BigNum @@ -177,11 +179,6 @@ import Ctl.Internal.Serialization.Hash import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.Int as Int import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) -import Ctl.Internal.Types.PlutusData as PD -import Ctl.Internal.Types.PubKeyHash - ( PaymentPubKeyHash(PaymentPubKeyHash) - , PubKeyHash(PubKeyHash) - ) import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend)) import Ctl.Internal.Types.RewardAddress (RewardAddress(RewardAddress)) import Ctl.Internal.Types.Scripts @@ -191,7 +188,6 @@ import Ctl.Internal.Types.Scripts , plutusV1Script , plutusV2Script ) -import Ctl.Internal.Types.TokenName (TokenName, mkTokenName) import Ctl.Internal.Types.Transaction ( TransactionHash(TransactionHash) , TransactionInput(TransactionInput) diff --git a/test/Hashing.purs b/test/Hashing.purs index 67c226ed3..3ef538322 100644 --- a/test/Hashing.purs +++ b/test/Hashing.purs @@ -2,6 +2,8 @@ module Test.Ctl.Hashing (suite) where import Prelude +import Cardano.Types.DataHash (DataHash) +import Cardano.Types.PlutusData (PlutusData(Integer)) import Ctl.Internal.Hashing ( blake2b256Hash , blake2b256HashHex @@ -14,9 +16,7 @@ import Ctl.Internal.Hashing ) as Hashing import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashFromBytes) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.PlutusData (PlutusData(Integer)) import Ctl.Internal.Types.Scripts (PlutusScript, plutusV1Script, plutusV2Script) -import Ctl.Internal.Types.Transaction (DataHash) import Data.ByteArray ( ByteArray , byteArrayFromAscii diff --git a/test/Ogmios/Address.purs b/test/Ogmios/Address.purs deleted file mode 100644 index 1708f24b0..000000000 --- a/test/Ogmios/Address.purs +++ /dev/null @@ -1,35 +0,0 @@ -module Test.Ctl.Ogmios.Address (suite) where - -import Prelude - -import Control.Monad.Except (throwError) -import Ctl.Internal.Address (addressToOgmiosAddress, ogmiosAddressToAddress) -import Ctl.Internal.QueryM.Ogmios (OgmiosAddress) -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Data.Maybe (Maybe(Just, Nothing)) -import Effect.Aff (Aff, error) -import Mote (group, test) -import Test.Spec.Assertions (shouldEqual) - -testnetAddrFixture1 :: OgmiosAddress -testnetAddrFixture1 = - "addr_test1qr7g8nrv76fc7k4ueqwecljxx9jfwvsgawhl55hck3n8uwaz26mpcwu58zdkhpdnc6nuq3fa8vylc8ak9qvns7r2dsysp7ll4d" - -addrFixture1 :: OgmiosAddress -addrFixture1 = - "addr1qyc0kwu98x23ufhsxjgs5k3h7gktn8v5682qna5amwh2juguztcrc8hjay66es67ctn0jmr9plfmlw37je2s2px4xdssgvxerq" - -suite :: TestPlanM (Aff Unit) Unit -suite = do - -- Test inverse in one direction. - group "Address loop" do - test "Ogmios Address to Address & back Testnet" - $ testFromOgmiosAddress testnetAddrFixture1 - test "Ogmios Address to Address & back non-Testnet" - $ testFromOgmiosAddress addrFixture1 - -testFromOgmiosAddress :: OgmiosAddress -> Aff Unit -testFromOgmiosAddress testAddr = do - case ogmiosAddressToAddress testAddr of - Nothing -> throwError $ error "Failed Address loop" - Just addr -> addressToOgmiosAddress addr `shouldEqual` testAddr diff --git a/test/Plutus/Time.purs b/test/Plutus/Time.purs index 41e92e977..6cfa8ce2a 100644 --- a/test/Plutus/Time.purs +++ b/test/Plutus/Time.purs @@ -4,13 +4,13 @@ module Test.Ctl.Internal.Plutus.Time import Prelude +import Cardano.Types.BigNum as BigNum import Ctl.Internal.QueryM.Ogmios ( OgmiosEraSummaries(OgmiosEraSummaries) , OgmiosSystemStart ) import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.BigNum as BigNum import Ctl.Internal.Types.Epoch (Epoch(Epoch)) import Ctl.Internal.Types.EraSummaries ( EpochLength(EpochLength) diff --git a/test/Serialization.purs b/test/Serialization.purs index 563b25d4f..bcda78bb2 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -3,6 +3,8 @@ module Test.Ctl.Serialization (suite) where import Prelude import Cardano.Serialization.Lib (fromBytes, publicKey_fromBytes, toBytes) +import Cardano.Types.BigNum (fromString, one) as BN +import Cardano.Types.PlutusData as PD import Contract.Keys (publicKeyFromBech32) import Ctl.Internal.Cardano.Types.Transaction (PublicKey, Transaction) import Ctl.Internal.Deserialization.Transaction (convertTransaction) as TD @@ -13,9 +15,7 @@ import Ctl.Internal.Serialization.Keys (bytesFromPublicKey) import Ctl.Internal.Serialization.PlutusData (convertPlutusData) import Ctl.Internal.Serialization.Types (TransactionHash) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.BigNum (fromString, one) as BN import Ctl.Internal.Types.CborBytes (cborBytesToHex) -import Ctl.Internal.Types.PlutusData as PD import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Data.Either (hush) import Data.Maybe (Maybe, isJust, isNothing) diff --git a/test/Serialization/Address.purs b/test/Serialization/Address.purs index ca33d06b5..91dd1911f 100644 --- a/test/Serialization/Address.purs +++ b/test/Serialization/Address.purs @@ -3,6 +3,7 @@ module Test.Ctl.Serialization.Address (suite) where import Prelude import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Types.BigNum (fromInt, fromStringUnsafe) as BigNum import Contract.Address (addressWithNetworkTagFromBech32) import Ctl.Internal.Serialization.Address ( NetworkId(MainnetId, TestnetId) @@ -40,7 +41,6 @@ import Ctl.Internal.Serialization.Hash ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.BigNum (fromInt, fromStringUnsafe) as BigNum import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (Maybe(Nothing)) import Data.Newtype (unwrap, wrap) diff --git a/test/Transaction.purs b/test/Transaction.purs index 4ad595fdb..84f64c35d 100644 --- a/test/Transaction.purs +++ b/test/Transaction.purs @@ -2,6 +2,7 @@ module Test.Ctl.Transaction (suite) where import Prelude +import Cardano.Types.PlutusData (PlutusData(Integer)) import Contract.Keys (publicKeyFromBech32) import Ctl.Internal.Cardano.Types.Transaction ( Redeemer(Redeemer) @@ -23,7 +24,6 @@ import Ctl.Internal.Transaction , setScriptDataHash ) import Ctl.Internal.Types.Datum (Datum(Datum)) -import Ctl.Internal.Types.PlutusData (PlutusData(Integer)) import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend)) import Ctl.Internal.Types.Scripts ( Language(PlutusV1, PlutusV2) diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index 3ec7e5b9c..20c60fc06 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -7,12 +7,12 @@ module Test.Ctl.Types.Interval import Prelude import Aeson (class DecodeAeson, decodeJsonString, printJsonDecodeError) +import Cardano.Types.BigNum (fromInt) as BigNum import Control.Monad.Error.Class (liftEither) import Control.Monad.Except (throwError) import Ctl.Internal.QueryM.Ogmios (OgmiosEraSummaries, OgmiosSystemStart) import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.BigNum (fromInt) as BigNum import Ctl.Internal.Types.EraSummaries (EraSummaries) import Ctl.Internal.Types.Interval ( Interval diff --git a/test/Types/TokenName.purs b/test/Types/TokenName.purs index c0ca65e61..9d4052a87 100644 --- a/test/Types/TokenName.purs +++ b/test/Types/TokenName.purs @@ -2,8 +2,8 @@ module Test.Ctl.Types.TokenName (suite) where import Prelude +import Cardano.Types.AssetName (mkTokenName) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.TokenName (mkTokenName) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (isJust) import Data.Traversable (for_) diff --git a/test/Unit.purs b/test/Unit.purs index a1b7daf91..b554a7822 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -27,7 +27,6 @@ import Test.Ctl.Internal.Plutus.Time as Plutus.Time import Test.Ctl.Metadata.Cip25 as Cip25 import Test.Ctl.MustSpendTotal as MustSpendTotal import Test.Ctl.NativeScript as NativeScript -import Test.Ctl.Ogmios.Address as Ogmios.Address import Test.Ctl.Ogmios.Aeson as Ogmios.Aeson import Test.Ctl.Ogmios.EvaluateTx as Ogmios.EvaluateTx import Test.Ctl.Partition as Partition @@ -74,7 +73,6 @@ testPlan = do Serialization.Hash.suite Transaction.suite UsedTxOuts.suite - Ogmios.Address.suite Ogmios.Aeson.suite Ogmios.EvaluateTx.suite ProtocolParams.suite diff --git a/test/UsedTxOuts.purs b/test/UsedTxOuts.purs index 8d1d8c1d9..3737e6a48 100644 --- a/test/UsedTxOuts.purs +++ b/test/UsedTxOuts.purs @@ -2,10 +2,10 @@ module Test.Ctl.UsedTxOuts (suite) where import Prelude +import Cardano.Types.TransactionHash (TransactionHash) import Control.Monad.Reader (runReaderT) import Ctl.Internal.Cardano.Types.Transaction (Transaction) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.Transaction (TransactionHash) import Ctl.Internal.Types.UsedTxOuts ( isTxOutRefUsed , lockTransactionInputs From aac3736387dec3d22c7a3222d46244911b283856 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 19:04:34 +0400 Subject: [PATCH 028/373] Switch to cardano-serialization-lib-gc (instead of separate browser/nodejs versions of CSL). --- package-lock.json | 43 ++++++------------- package.json | 3 +- src/Internal/ApplyArgs.js | 5 +-- src/Internal/BalanceTx/UtxoMinAda.js | 9 +--- src/Internal/Deserialization/FromBytes.js | 9 +--- src/Internal/Deserialization/Keys.js | 9 +--- src/Internal/Deserialization/Language.js | 9 +--- src/Internal/Deserialization/NativeScript.js | 9 +--- src/Internal/Deserialization/PlutusData.js | 9 +--- src/Internal/Deserialization/Transaction.js | 9 +--- src/Internal/Deserialization/UnspentOutput.js | 9 +--- src/Internal/Hashing.js | 11 +---- src/Internal/Serialization.js | 9 +--- src/Internal/Serialization/Address.js | 9 +--- src/Internal/Serialization/AuxiliaryData.js | 9 +--- src/Internal/Serialization/BigInt.js | 9 +--- src/Internal/Serialization/Hash.js | 9 +--- src/Internal/Serialization/Keys.js | 2 - src/Internal/Serialization/MinFee.js | 9 +--- src/Internal/Serialization/NativeScript.js | 9 +--- src/Internal/Serialization/PlutusData.js | 9 +--- src/Internal/Serialization/PlutusScript.js | 9 +--- src/Internal/Serialization/WitnessSet.js | 9 +--- src/Internal/Types/BigNum.js | 10 +---- src/Internal/Types/Int.js | 9 +--- src/Internal/Wallet/Bip32.js | 10 +---- test/Wallet/Cip30/SignData.js | 9 ++-- 27 files changed, 41 insertions(+), 223 deletions(-) diff --git a/package-lock.json b/package-lock.json index d5ef3adaa..1b1ee7005 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", @@ -494,22 +493,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "dependencies": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { @@ -6618,22 +6609,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "requires": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "@mlabs-haskell/csl-gc-wrapper": { diff --git a/package.json b/package.json index 0a1985266..a4e3b1372 100755 --- a/package.json +++ b/package.json @@ -36,8 +36,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js index 9ff670298..bc93f773d 100644 --- a/src/Internal/ApplyArgs.js +++ b/src/Internal/ApplyArgs.js @@ -1,12 +1,11 @@ /* global BROWSER_RUNTIME */ -let lib; +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; + let apply_args; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); apply_args = await import("apply-args-browser"); } else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); apply_args = await import("apply-args-nodejs"); } diff --git a/src/Internal/BalanceTx/UtxoMinAda.js b/src/Internal/BalanceTx/UtxoMinAda.js index 5b6910c84..c26911f91 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.js +++ b/src/Internal/BalanceTx/UtxoMinAda.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function minAdaForOutput(maybe) { return txOutput => dataCost => { diff --git a/src/Internal/Deserialization/FromBytes.js b/src/Internal/Deserialization/FromBytes.js index f7b57ae04..985f7ca88 100644 --- a/src/Internal/Deserialization/FromBytes.js +++ b/src/Internal/Deserialization/FromBytes.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _fromBytes(helper) { return name => bytes => { diff --git a/src/Internal/Deserialization/Keys.js b/src/Internal/Deserialization/Keys.js index 4beb728a4..60f8e7c65 100644 --- a/src/Internal/Deserialization/Keys.js +++ b/src/Internal/Deserialization/Keys.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function freshPrivateKey() { return lib.PrivateKey.generate_ed25519(); diff --git a/src/Internal/Deserialization/Language.js b/src/Internal/Deserialization/Language.js index e39c2a5aa..c299f8434 100644 --- a/src/Internal/Deserialization/Language.js +++ b/src/Internal/Deserialization/Language.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _convertLanguage(langCtors) { return cslLang => { diff --git a/src/Internal/Deserialization/NativeScript.js b/src/Internal/Deserialization/NativeScript.js index 4ef2dc16b..9cccf27f8 100644 --- a/src/Internal/Deserialization/NativeScript.js +++ b/src/Internal/Deserialization/NativeScript.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _convertNativeScript(handler) { return ns => { diff --git a/src/Internal/Deserialization/PlutusData.js b/src/Internal/Deserialization/PlutusData.js index 3d0c28805..44425ea4e 100644 --- a/src/Internal/Deserialization/PlutusData.js +++ b/src/Internal/Deserialization/PlutusData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _convertPlutusData(handle) { return pd => { diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js index 57faa3572..2347ef92f 100644 --- a/src/Internal/Deserialization/Transaction.js +++ b/src/Internal/Deserialization/Transaction.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Deserialization/UnspentOutput.js b/src/Internal/Deserialization/UnspentOutput.js index 61f5ecbee..3af30f47e 100644 --- a/src/Internal/Deserialization/UnspentOutput.js +++ b/src/Internal/Deserialization/UnspentOutput.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const call = property => object => object[property](); const callMaybe = property => maybe => object => { diff --git a/src/Internal/Hashing.js b/src/Internal/Hashing.js index 0b647d6da..c251e3c01 100644 --- a/src/Internal/Hashing.js +++ b/src/Internal/Hashing.js @@ -1,16 +1,7 @@ -/* global BROWSER_RUNTIME */ - import Blake2 from "blakejs"; - import SHA256 from "jssha/sha256"; import SHA3 from "jssha/sha3"; - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function blake2b224Hash(bytesToHash) { return Blake2.blake2b(bytesToHash, null, 28); diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js index ee93d49db..d74552660 100644 --- a/src/Internal/Serialization.js +++ b/src/Internal/Serialization.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js index 083ece7f8..78800fccd 100644 --- a/src/Internal/Serialization/Address.js +++ b/src/Internal/Serialization/Address.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const callClassStaticMaybe = (classname, functionname) => maybe => input => { let ret = null; diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js index 33fd344de..367ec0b6c 100644 --- a/src/Internal/Serialization/AuxiliaryData.js +++ b/src/Internal/Serialization/AuxiliaryData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const setter = prop => obj => value => () => obj["set_" + prop](value); diff --git a/src/Internal/Serialization/BigInt.js b/src/Internal/Serialization/BigInt.js index dc61768cc..ad30d665c 100644 --- a/src/Internal/Serialization/BigInt.js +++ b/src/Internal/Serialization/BigInt.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _BigInt_from_str(helper) { return str => { diff --git a/src/Internal/Serialization/Hash.js b/src/Internal/Serialization/Hash.js index 1ac1b8c79..93d34250d 100644 --- a/src/Internal/Serialization/Hash.js +++ b/src/Internal/Serialization/Hash.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function hashToBytes(hash) { return hash.to_bytes(); diff --git a/src/Internal/Serialization/Keys.js b/src/Internal/Serialization/Keys.js index 3c80c09b4..9d80aa7ec 100644 --- a/src/Internal/Serialization/Keys.js +++ b/src/Internal/Serialization/Keys.js @@ -1,5 +1,3 @@ -/* global BROWSER_RUNTIME */ - const bytesFromKey = key => key.as_bytes(); export { bytesFromKey as bytesFromPublicKey }; diff --git a/src/Internal/Serialization/MinFee.js b/src/Internal/Serialization/MinFee.js index 52e0732ad..195564dc7 100644 --- a/src/Internal/Serialization/MinFee.js +++ b/src/Internal/Serialization/MinFee.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _minFee(maybe) { return tx => txFeeFixed => txFeePerByte => { diff --git a/src/Internal/Serialization/NativeScript.js b/src/Internal/Serialization/NativeScript.js index 810331fa7..030278d6c 100644 --- a/src/Internal/Serialization/NativeScript.js +++ b/src/Internal/Serialization/NativeScript.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; const mkScript = prop => arg => lib.NativeScript[prop](arg); diff --git a/src/Internal/Serialization/PlutusData.js b/src/Internal/Serialization/PlutusData.js index 9c642c773..ff29181d8 100644 --- a/src/Internal/Serialization/PlutusData.js +++ b/src/Internal/Serialization/PlutusData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function _mkPlutusData_bytes(bytes) { return lib.PlutusData.new_bytes(bytes); diff --git a/src/Internal/Serialization/PlutusScript.js b/src/Internal/Serialization/PlutusScript.js index ab48270fe..01933a33e 100644 --- a/src/Internal/Serialization/PlutusScript.js +++ b/src/Internal/Serialization/PlutusScript.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function newPlutusV1Script(bytes) { return lib.PlutusScript.new(bytes); diff --git a/src/Internal/Serialization/WitnessSet.js b/src/Internal/Serialization/WitnessSet.js index 96b8fd2cd..d916f7a67 100644 --- a/src/Internal/Serialization/WitnessSet.js +++ b/src/Internal/Serialization/WitnessSet.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function newTransactionWitnessSet() { return lib.TransactionWitnessSet.new(); diff --git a/src/Internal/Types/BigNum.js b/src/Internal/Types/BigNum.js index 5514c3054..df50fcd94 100644 --- a/src/Internal/Types/BigNum.js +++ b/src/Internal/Types/BigNum.js @@ -1,12 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); - // lib = (await import("../../../../cardano-serialization-lib-gc/nodejs/index.js")); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export function bnCompare(lhs) { return rhs => lhs.compare(rhs); diff --git a/src/Internal/Types/Int.js b/src/Internal/Types/Int.js index 8110b53cb..0451643da 100644 --- a/src/Internal/Types/Int.js +++ b/src/Internal/Types/Int.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; export const newPositive = lib.Int.new; export const newNegative = lib.Int.new_negative; diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js index 9518c9697..cb573568f 100644 --- a/src/Internal/Wallet/Bip32.js +++ b/src/Internal/Wallet/Bip32.js @@ -1,12 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} - +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; import bip39 from "bip39"; const HARDENED = 0x80000000; diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index 7d99800c5..20554c46c 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -1,16 +1,13 @@ /* global BROWSER_RUNTIME */ -let lib, csl; +import * as csl from "@mlabs-haskell/cardano-serialization-lib-gc"; + +let lib; if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { lib = await import("@emurgo/cardano-message-signing-browser"); - csl = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); } else { lib = await import("@emurgo/cardano-message-signing-nodejs"); - csl = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); } -// import gcWrapper from "@mlabs-haskell/csl-gc-wrapper"; -// lib = gcWrapper(lib); -// csl = gcWrapper(csl); function opt_chain(maybe, obj) { const isNothing = x => x === null || x === undefined; From bddb8c0069c8f85bba9e1a30c057074edbbfe712 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 19:16:57 +0400 Subject: [PATCH 029/373] Update the template --- templates/ctl-scaffold/flake.lock | 8 ++--- templates/ctl-scaffold/package-lock.json | 44 +++++++---------------- templates/ctl-scaffold/package.json | 4 +-- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 ++-- 5 files changed, 22 insertions(+), 42 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 1c4daa222..f2c866866 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1702645636, - "narHash": "sha256-GiSImwp0QoKheOhX7aftGpYayPdRdu3W1TcXY1GMUuk=", + "lastModified": 1703100799, + "narHash": "sha256-sFd2BgGbBxs/Qr0/dMfXLtZs3hQ87HZlHMU6L1WW7HI=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a742692d605aabd75043aee9eef0ecdfec63eacc", + "rev": "7d533241367081fa69ec5f0ec8f50e00c39430c2", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a742692d605aabd75043aee9eef0ecdfec63eacc", + "rev": "7d533241367081fa69ec5f0ec8f50e00c39430c2", "type": "github" } }, diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 866cbc71a..5ac6f4f09 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -11,9 +11,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -493,22 +491,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "node_modules/@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "dependencies": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { @@ -5761,22 +5751,14 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, - "@mlabs-haskell/cardano-serialization-lib-gc-browser": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-browser/-/cardano-serialization-lib-gc-browser-1.0.6.tgz", - "integrity": "sha512-b7dLrrhjUJSdsmjzariCZO734NB+M/ONLGBiQ/TQzMRtsMydqSFQg6WbMdwYPustoNmQOg6a8bm9+RgllqdmFw==", + "@mlabs-haskell/cardano-serialization-lib-gc": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" - } - }, - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc-nodejs/-/cardano-serialization-lib-gc-nodejs-1.0.6.tgz", - "integrity": "sha512-I1FqhjEHgib+y0+6K1tSqvrtldRvqjrM5mL+TW9224ezEDScQeCroPWbgGBwwi6rjkN9YpS8Uz6gC0vo8lua1A==", - "requires": { - "@emurgo/cardano-serialization-lib-nodejs": "^11.4.0", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "@mlabs-haskell/csl-gc-wrapper": { diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 62583c99f..fbaf0c66d 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -27,9 +27,7 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc-browser": "^1.0.6", - "@mlabs-haskell/cardano-serialization-lib-gc-nodejs": "^1.0.6", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index d6d88c4d7..436bf579c 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -298,7 +298,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "7d533241367081fa69ec5f0ec8f50e00c39430c2" + , version = "aac3736387dec3d22c7a3222d46244911b283856" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 5c9a5b894..d6a1bba1a 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -199,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; + version = "aac3736387dec3d22c7a3222d46244911b283856"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; - sha256 = "0wpcjrajyfn53ijpdv1w2kg6rmifsz3p8gxx88zin1wv0437cmxh"; + rev = "aac3736387dec3d22c7a3222d46244911b283856"; + sha256 = "03x8yrhkfxlifv5g2sw4nmhysra1mwff4zwrqq04mxq840m0mm95"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From d027c9d1176d62043b874fb394197d28c9924d7a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 19:26:18 +0400 Subject: [PATCH 030/373] Update flake.nix in the template --- package-lock.json | 1 - package.json | 1 - templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- test/CslGc.js | 8 +------- 5 files changed, 6 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1b1ee7005..7de19f48f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/package.json b/package.json index a4e3b1372..277485738 100755 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.2", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index f2c866866..6f82969c7 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1703100799, - "narHash": "sha256-sFd2BgGbBxs/Qr0/dMfXLtZs3hQ87HZlHMU6L1WW7HI=", + "lastModified": 1707923074, + "narHash": "sha256-JdUKKiAI90oAxpl/4hyvQWXtYbWEa/HKdpF2N2H2qA8=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "7d533241367081fa69ec5f0ec8f50e00c39430c2", + "rev": "aac3736387dec3d22c7a3222d46244911b283856", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "7d533241367081fa69ec5f0ec8f50e00c39430c2", + "rev": "aac3736387dec3d22c7a3222d46244911b283856", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index c1104f2e7..3c04a2753 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; + rev = "aac3736387dec3d22c7a3222d46244911b283856"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/test/CslGc.js b/test/CslGc.js index 1f5cda5ae..bac78951b 100644 --- a/test/CslGc.js +++ b/test/CslGc.js @@ -1,11 +1,5 @@ /* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-browser"); -} else { - lib = await import("@mlabs-haskell/cardano-serialization-lib-gc-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; import process from "process"; From 2493eb510d3361f6e064d8efe812acf8cf2f3776 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Feb 2024 19:50:07 +0400 Subject: [PATCH 031/373] Update CHANGELOG --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d451909cc..e9acf3d44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed +- WebAssembly memory leaks (`csl-gc-wrapper` used to depend on unstable `wasm-bidngen` API [that got changed](https://github.com/mlabs-haskell/csl-gc-wrapper/commit/2dea38228b77f7c904aafef12eece7e5af195977)) ([#1595](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1595)) + ### Removed - `ModifyTx` error: made conversion functions total and removed the need to handle it From ce37f0f0aa1e1083425d4379c0136880e2109181 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Feb 2024 17:11:38 +0400 Subject: [PATCH 032/373] Move types to ps-cardano-types --- doc/comparisons.md | 5 +- packages.dhall | 71 + spago.dhall | 1 + src/Internal.js | 57 - src/Internal.purs | 186 -- src/Internal/BalanceTx/CoinSelection.purs | 2 +- src/Internal/Cardano/Types/Transaction.purs | 2 +- src/Internal/Metadata/Cip25/V2.purs | 2 +- src/Internal/Plutus/Conversion/Value.purs | 2 +- src/Internal/Plutus/Types/Transaction.purs | 2 +- src/Internal/ProcessConstraints/Error.purs | 2 +- src/Internal/QueryM/Ogmios.purs | 2 +- src/Internal/Serialization/Address.js | 170 - src/Internal/Serialization/Address.purs | 109 - src/Internal/Serialization/AuxiliaryData.js | 46 - src/Internal/Serialization/Hash.purs | 2 +- src/Internal/Service/Helpers.purs | 2 +- src/Internal/TxOutput.purs | 2 +- src/Internal/Wallet/Cip30.purs | 2 +- src/Internal/Wallet/Cip30/SignData.purs | 2 +- src/Lib.js | 883 ----- src/Lib.purs | 3185 ------------------- src/Types/Address.purs | 115 - src/Types/Asset.purs | 30 - src/Types/AssetClass.purs | 50 - src/Types/AssetName.js | 26 - src/Types/AssetName.purs | 115 - src/Types/AuxiliaryData.purs | 65 - src/Types/BaseAddress.purs | 83 - src/Types/BigInt.purs | 56 - src/Types/BigNum.purs | 172 - src/Types/ByronAddress.purs | 58 - src/Types/Coin.purs | 49 - src/Types/Credential.purs | 79 - src/Types/DataHash.purs | 64 - src/Types/Ed25519KeyHash.purs | 112 - src/Types/Ed25519Signature.purs | 32 - src/Types/EnterpriseAddress.purs | 79 - src/Types/GeneralTransactionMetadata.purs | 40 - src/Types/Int.purs | 84 - src/Types/Language.purs | 72 - src/Types/MultiAsset.purs | 210 -- src/Types/NativeScript.purs | 211 -- src/Types/NetworkId.purs | 70 - src/Types/OutputDatum.purs | 101 - src/Types/PaymentCredential.purs | 51 - src/Types/PaymentPubKeyHash.purs | 22 - src/Types/PlutusData.purs | 216 -- src/Types/PlutusScript.purs | 52 - src/Types/Pointer.purs | 24 - src/Types/PointerAddress.purs | 50 - src/Types/PrivateKey.purs | 35 - src/Types/PublicKey.purs | 39 - src/Types/RewardAddress.purs | 81 - src/Types/ScriptHash.purs | 97 - src/Types/ScriptRef.purs | 98 - src/Types/Slot.purs | 25 - src/Types/StakeCredential.purs | 48 - src/Types/StakePubKeyHash.purs | 22 - src/Types/TransactionHash.purs | 70 - src/Types/TransactionInput.purs | 83 - src/Types/TransactionMetadatum.purs | 58 - src/Types/TransactionOutput.purs | 94 - src/Types/TransactionUnspentOutput.purs | 55 - src/Types/UtxoMap.purs | 57 - src/Types/VRFKeyHash.purs | 63 - src/Types/Value.purs | 275 -- src/Types/Vkey.purs | 20 - test/Types/TokenName.purs | 8 +- 69 files changed, 90 insertions(+), 8263 deletions(-) delete mode 100644 src/Internal.js delete mode 100644 src/Internal.purs delete mode 100644 src/Internal/Serialization/Address.js delete mode 100644 src/Internal/Serialization/Address.purs delete mode 100644 src/Internal/Serialization/AuxiliaryData.js delete mode 100644 src/Lib.js delete mode 100644 src/Lib.purs delete mode 100644 src/Types/Address.purs delete mode 100644 src/Types/Asset.purs delete mode 100644 src/Types/AssetClass.purs delete mode 100644 src/Types/AssetName.js delete mode 100644 src/Types/AssetName.purs delete mode 100644 src/Types/AuxiliaryData.purs delete mode 100644 src/Types/BaseAddress.purs delete mode 100644 src/Types/BigInt.purs delete mode 100644 src/Types/BigNum.purs delete mode 100644 src/Types/ByronAddress.purs delete mode 100644 src/Types/Coin.purs delete mode 100644 src/Types/Credential.purs delete mode 100644 src/Types/DataHash.purs delete mode 100644 src/Types/Ed25519KeyHash.purs delete mode 100644 src/Types/Ed25519Signature.purs delete mode 100644 src/Types/EnterpriseAddress.purs delete mode 100644 src/Types/GeneralTransactionMetadata.purs delete mode 100644 src/Types/Int.purs delete mode 100644 src/Types/Language.purs delete mode 100644 src/Types/MultiAsset.purs delete mode 100644 src/Types/NativeScript.purs delete mode 100644 src/Types/NetworkId.purs delete mode 100644 src/Types/OutputDatum.purs delete mode 100644 src/Types/PaymentCredential.purs delete mode 100644 src/Types/PaymentPubKeyHash.purs delete mode 100644 src/Types/PlutusData.purs delete mode 100644 src/Types/PlutusScript.purs delete mode 100644 src/Types/Pointer.purs delete mode 100644 src/Types/PointerAddress.purs delete mode 100644 src/Types/PrivateKey.purs delete mode 100644 src/Types/PublicKey.purs delete mode 100644 src/Types/RewardAddress.purs delete mode 100644 src/Types/ScriptHash.purs delete mode 100644 src/Types/ScriptRef.purs delete mode 100644 src/Types/Slot.purs delete mode 100644 src/Types/StakeCredential.purs delete mode 100644 src/Types/StakePubKeyHash.purs delete mode 100644 src/Types/TransactionHash.purs delete mode 100644 src/Types/TransactionInput.purs delete mode 100644 src/Types/TransactionMetadatum.purs delete mode 100644 src/Types/TransactionOutput.purs delete mode 100644 src/Types/TransactionUnspentOutput.purs delete mode 100644 src/Types/UtxoMap.purs delete mode 100644 src/Types/VRFKeyHash.purs delete mode 100644 src/Types/Value.purs delete mode 100644 src/Types/Vkey.purs diff --git a/doc/comparisons.md b/doc/comparisons.md index 0a362e010..2914dff21 100644 --- a/doc/comparisons.md +++ b/doc/comparisons.md @@ -20,7 +20,6 @@ This document highlights key differences between CTL and other Cardano offchain ### Wallet support -- Lucid supports any CIP-30 compatible wallet. CTL supports a pre-defined list of wallets (however, the list can be extended easily). - Both CTL and Lucid support using [seed phrases and private keys](./key-management.md). - Lucid allows to use any address without a private key for querying - CTL does not allow that, but it's still possible to build transactions for other wallets to sign via [other means](./balancing.md). @@ -43,7 +42,7 @@ Lucid, on the other hand, provides a way to get a UTxO that contains a specified ### Supported backends - Both CTL and Lucid support [Blockfrost](./blockfrost.md) and [Kupo+Ogmios](./runtime.md) -- Lucid supports [Maestro](https://www.gomaestro.org/) +- Lucid also supports [Maestro](https://www.gomaestro.org/) - Both CTL and Lucid allow for custom backends - Lucid via `Provider` interface implementation, and CTL via a custom `QueryHandle`. ### Staking support @@ -58,7 +57,7 @@ Additionally, CTL supports [testing with real wallets](./e2e-testing.md) via hea ### API design -Lucid aims for simplicity, while CTL allows more fine-grained control over transaction building process. +Lucid aims for simplicity, while CTL allows more fine-grained control over transaction building process without losing the benefits of declarativeness. - CTL uses [`cardano-serialization-lib`](https://github.com/Emurgo/cardano-serialization-lib/), while Lucid uses a fork of [`cardano-multiplatform-lib`](https://github.com/berry-pool/cardano-multiplatform-lib). Lucid allows to use CML's `TxBuilder` or [call CML directly](https://lucid.spacebudz.io/docs/advanced/cml/), while CTL allows to alter the transaction arbitrarily as PureScript data type either before or after balancing. In CTL, CSL types and method wrappers are a part of the internal interface, but technically they can be used as well. - Plutus Data conversion is handled via a [schema-enabled API](https://lucid.spacebudz.io/docs/advanced/type-casting/) in Lucid. CTL allows for automatic `ToData` / `FromData` deriving for some types, via `HasPlutusSchema`. diff --git a/packages.dhall b/packages.dhall index 45744ab9b..ca6a3dbe5 100644 --- a/packages.dhall +++ b/packages.dhall @@ -262,6 +262,77 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-bytearrays" , version = "e3991d562a04d8825472551d91a06407ad9c9112" } + , cardano-serialization-lib = + { dependencies = + [ "aeson" + , "argonaut" + , "bifunctors" + , "bytearrays" + , "effect" + , "either" + , "maybe" + , "nullable" + , "ordered-collections" + , "prelude" + , "profunctor" + , "tuples" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" + , version = "bdf3133ca08290c9c7e6c9e65c46096354c74898" + } + , cardano-plutus-data-schema = + { dependencies = [ "prelude" ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema" + , version = "351003d931990949ce3d73f399a179e4a0fa40f1" + } + , cardano-types = + { dependencies = + [ "aeson" + , "arraybuffer-types" + , "arrays" + , "bifunctors" + , "bytearrays" + , "cardano-plutus-data-schema" + , "cardano-serialization-lib" + , "console" + , "control" + , "effect" + , "either" + , "encoding" + , "exceptions" + , "foldable-traversable" + , "foreign-object" + , "integers" + , "js-bigints" + , "lattice" + , "lists" + , "literals" + , "maybe" + , "monad-logger" + , "newtype" + , "nonempty" + , "nullable" + , "ordered-collections" + , "partial" + , "prelude" + , "profunctor" + , "quickcheck" + , "rationals" + , "record" + , "safe-coerce" + , "strings" + , "these" + , "tuples" + , "typelevel-prelude" + , "uint" + , "unfoldable" + , "unsafe-coerce" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" + , version = "db0ca1ee2cf6a2cbbe282d49a3bf9daa696ebdee" + } } in upstream // additions diff --git a/spago.dhall b/spago.dhall index fa4cb17bf..57af87b8d 100644 --- a/spago.dhall +++ b/spago.dhall @@ -18,6 +18,7 @@ You can edit this file as you like. , "bifunctors" , "bignumber" , "bytearrays" + , "cardano-types" , "checked-exceptions" , "cip30" , "cip30-typesafe" diff --git a/src/Internal.js b/src/Internal.js deleted file mode 100644 index c7b01788c..000000000 --- a/src/Internal.js +++ /dev/null @@ -1,57 +0,0 @@ -import * as csl from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export const _toBytes = x => x.to_bytes(); -export const _fromBytes = key => nothing => just => bytes => { - try { - return just(csl[key].from_bytes(bytes)); - } catch (_) { - return nothing; - } -}; - -export const _packListContainer = containerClass => elems => { - const container = csl[containerClass].new(); - for (let elem of elems) { - container.add(elem); - } - return container; -}; - -export const _unpackListContainer = container => { - const res = []; - const len = container.len(); - for (let i = 0; i < len; i++) { - res.push(container.get(i)); - } - return res; -}; - -export const _packMapContainer = containerClass => elems => { - const container = csl[containerClass].new(); - for (let elem of elems) { - container.insert(elem.key, elem.value); - } - console.log(container.to_json()); - return container; -}; - -export const _unpackMapContainer = container => { - const keys = _unpackListContainer(container.keys()); - console.log("keys", keys); - const res = []; - for (let key of keys) { - res.push({ key, value: container.get(key) }); - } - console.log("unpack", res); - return res; -}; - -export const _cslFromJson = className => nothing => just => json => { - try { - return just(csl[className].from_json(json)); - } catch (e) { - return nothing; - } -}; - -export const _cslToJson = x => x.to_json(); diff --git a/src/Internal.purs b/src/Internal.purs deleted file mode 100644 index b77395113..000000000 --- a/src/Internal.purs +++ /dev/null @@ -1,186 +0,0 @@ -module Cardano.Serialization.Lib.Internal where - -import Prelude - -import Aeson (Aeson, decodeAeson, encodeAeson, jsonToAeson, stringifyAeson) -import Data.Argonaut - ( Json - , JsonDecodeError(TypeMismatch) - , jsonParser - , stringify - ) -import Data.Bifunctor (lmap) -import Data.ByteArray (ByteArray) -import Data.Either (Either, note) -import Data.Map (Map) -import Data.Map as Map -import Data.Maybe (Maybe(Nothing, Just)) -import Data.Profunctor.Strong ((***)) -import Data.Tuple (Tuple(Tuple)) -import Data.Tuple.Nested (type (/\), (/\)) -import Type.Proxy (Proxy(Proxy)) - --- all types - -class IsCsl (a :: Type) where - className :: Proxy a -> String - --- byte-representable types - -class IsCsl a <= IsBytes (a :: Type) - -toBytes :: forall a. IsCsl a => IsBytes a => a -> ByteArray -toBytes = _toBytes - -fromBytes :: forall a. IsCsl a => IsBytes a => ByteArray -> Maybe a -fromBytes = _fromBytes (className (Proxy :: Proxy a)) Nothing Just - -foreign import _toBytes :: forall a. a -> ByteArray - -foreign import _fromBytes - :: forall b - . String - -> (forall a. Maybe a) - -> (forall a. a -> Maybe a) - -> ByteArray - -> Maybe b - --- json - -class IsCsl a <= IsJson (a :: Type) - --- containers - -class IsListContainer (c :: Type) (e :: Type) | c -> e - -packListContainer :: forall c e. IsCsl c => IsListContainer c e => Array e -> c -packListContainer = _packListContainer (className (Proxy :: Proxy c)) - -unpackListContainer :: forall c e. IsListContainer c e => c -> Array e -unpackListContainer = _unpackListContainer - -foreign import _packListContainer :: forall c e. String -> Array e -> c -foreign import _unpackListContainer :: forall c e. c -> Array e - -class IsMapContainer (c :: Type) (k :: Type) (v :: Type) | c -> k, c -> v - -packMapContainer - :: forall c k v - . IsMapContainer c k v - => IsCsl c - => Array (k /\ v) - -> c -packMapContainer = map toKeyValues >>> _packMapContainer - (className (Proxy :: Proxy c)) - where - toKeyValues (Tuple key value) = { key, value } - -packMapContainerFromMap - :: forall c k v - . IsMapContainer c k v - => IsCsl c - => IsCsl k - => IsCsl v - => Map k v - -> c -packMapContainerFromMap = packMapContainer <<< Map.toUnfoldable - -unpackMapContainer - :: forall c k v - . IsMapContainer c k v - => c - -> Array (k /\ v) -unpackMapContainer = _unpackMapContainer >>> map fromKV - where - fromKV { key, value } = key /\ value - -unpackMapContainerToMapWith - :: forall c k v k1 v1 - . IsMapContainer c k v - => Ord k1 - => (k -> k1) - -> (v -> v1) - -> c - -> Map k1 v1 -unpackMapContainerToMapWith mapKey mapValue container = - unpackMapContainer container - # map (mapKey *** mapValue) >>> Map.fromFoldable - -foreign import _packMapContainer - :: forall c k v - . String - -> Array { key :: k, value :: v } - -> c - -foreign import _unpackMapContainer - :: forall c k v - . c - -> Array { key :: k, value :: v } - --- Aeson - -cslFromAeson - :: forall a - . IsJson a - => Aeson - -> Either JsonDecodeError a -cslFromAeson aeson = - (lmap (const $ TypeMismatch "JSON") $ jsonParser $ stringifyAeson aeson) - >>= cslFromJson >>> note (TypeMismatch $ className (Proxy :: Proxy a)) - -cslToAeson - :: forall a - . IsJson a - => a - -> Aeson -cslToAeson = _cslToJson >>> jsonToAeson - -cslToAesonViaBytes - :: forall a - . IsBytes a - => a - -> Aeson -cslToAesonViaBytes = toBytes >>> encodeAeson - -cslFromAesonViaBytes - :: forall a - . IsBytes a - => Aeson - -> Either JsonDecodeError a -cslFromAesonViaBytes aeson = do - bytes <- decodeAeson aeson - note (TypeMismatch $ className (Proxy :: Proxy a)) $ fromBytes bytes - --- Show - -showViaBytes - :: forall a - . IsBytes a - => a - -> String -showViaBytes a = "(unsafePartial $ fromJust $ fromBytes " <> show (toBytes a) <> - ")" - -showViaJson - :: forall a - . IsJson a - => a - -> String -showViaJson a = "(unsafePartial $ fromJust $ cslFromJson $ jsonParser " - <> show (stringify (_cslToJson a)) - <> ")" - ---- Json - -cslFromJson :: forall a. IsCsl a => IsJson a => Json -> Maybe a -cslFromJson = _cslFromJson (className (Proxy :: Proxy a)) Nothing Just - -foreign import _cslFromJson - :: forall b - . String - -> (forall a. Maybe a) - -> (forall a. a -> Maybe a) - -> Json - -> Maybe b - -foreign import _cslToJson :: forall a. a -> Json diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index 1b41b9497..df1007767 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -21,7 +21,7 @@ module Ctl.Internal.BalanceTx.CoinSelection import Prelude -import Cardano.Types.AsCbor (encodeCbor) +import Cardano.AsCbor (encodeCbor) import Cardano.Types.Asset (Asset(..)) import Cardano.Types.AssetName (unAssetName) as AssetName import Cardano.Types.BigNum (BigNum(..)) diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs index 43fd65929..f8ec7535c 100644 --- a/src/Internal/Cardano/Types/Transaction.purs +++ b/src/Internal/Cardano/Types/Transaction.purs @@ -99,7 +99,7 @@ import Cardano.Serialization.Lib ) import Cardano.Serialization.Lib as Csl import Cardano.Types.Address as Address -import Cardano.Types.AsCbor (encodeCbor) +import Cardano.AsCbor (encodeCbor) import Cardano.Types.BigNum (BigNum) import Cardano.Types.Coin (Coin) import Cardano.Types.Ed25519Signature (Ed25519Signature(..)) diff --git a/src/Internal/Metadata/Cip25/V2.purs b/src/Internal/Metadata/Cip25/V2.purs index 532acbaaa..0bafaf302 100644 --- a/src/Internal/Metadata/Cip25/V2.purs +++ b/src/Internal/Metadata/Cip25/V2.purs @@ -27,7 +27,7 @@ import Aeson , (.:?) ) import Aeson as Aeson -import Cardano.Types.AsCbor (decodeCbor, encodeCbor) +import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Types.AssetName (mkAssetName, unAssetName) import Cardano.Types.PlutusData (PlutusData(Map, Integer)) import Control.Alt ((<|>)) diff --git a/src/Internal/Plutus/Conversion/Value.purs b/src/Internal/Plutus/Conversion/Value.purs index fbadf6f19..0d68103f9 100644 --- a/src/Internal/Plutus/Conversion/Value.purs +++ b/src/Internal/Plutus/Conversion/Value.purs @@ -5,7 +5,7 @@ module Ctl.Internal.Plutus.Conversion.Value import Prelude -import Cardano.Types.AsCbor (encodeCbor) +import Cardano.AsCbor (encodeCbor) import Cardano.Types.AssetName (unAssetName) import Cardano.Types.BigNum as BigNum import Cardano.Types.MultiAsset (MultiAsset(MultiAsset)) diff --git a/src/Internal/Plutus/Types/Transaction.purs b/src/Internal/Plutus/Types/Transaction.purs index 0a0856d67..2f0de6944 100644 --- a/src/Internal/Plutus/Types/Transaction.purs +++ b/src/Internal/Plutus/Types/Transaction.purs @@ -12,7 +12,7 @@ module Ctl.Internal.Plutus.Types.Transaction import Prelude import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Types.AsCbor (encodeCbor) +import Cardano.AsCbor (encodeCbor) import Cardano.Types.BigNum as BigNum import Cardano.Types.PlutusData (PlutusData(Constr)) import Cardano.Types.TransactionInput (TransactionInput) diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 51f739176..4074349d0 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -5,7 +5,7 @@ import Prelude import Cardano.Serialization.Lib (toBytes) import Cardano.Types.Address (Address) import Cardano.Types.Address as Address -import Cardano.Types.AsCbor (encodeCbor) +import Cardano.AsCbor (encodeCbor) import Cardano.Types.AssetName (AssetName, fromAssetName) import Cardano.Types.PlutusScript (PlutusScript(..)) import Cardano.Types.StakePubKeyHash (StakePubKeyHash(..)) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 3212cd2ef..e3af14d74 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -95,7 +95,7 @@ import Aeson , (.:?) ) import Cardano.Serialization.Lib (fromBytes) -import Cardano.Types.AsCbor (encodeCbor) +import Cardano.AsCbor (encodeCbor) import Cardano.Types.AssetName (unAssetName) import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum (fromBigInt, fromString) as BigNum diff --git a/src/Internal/Serialization/Address.js b/src/Internal/Serialization/Address.js deleted file mode 100644 index 78800fccd..000000000 --- a/src/Internal/Serialization/Address.js +++ /dev/null @@ -1,170 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -const callClassStaticMaybe = (classname, functionname) => maybe => input => { - let ret = null; - try { - ret = lib[classname][functionname](input); - } catch (_) { - // ignored - } - if (ret == null) { - return maybe.nothing; - } - return maybe.just(ret); -}; - -const callMethodParameterless = methodname => object => { - return object[methodname](); -}; -const callToAddress = callMethodParameterless("to_address"); -const callToBytes = callMethodParameterless("to_bytes"); -const callToBech32 = callMethodParameterless("to_bech32"); -const callNetworkId = callMethodParameterless("network_id"); -const callPaymentCred = callMethodParameterless("payment_cred"); -const callStakeCred = callMethodParameterless("stake_cred"); - -export function withStakeCredential(cbObj) { - return stakeCred => { - return stakeCred.kind() == lib.StakeCredKind.Key - ? cbObj.onKeyHash(stakeCred.to_keyhash()) - : cbObj.onScriptHash(stakeCred.to_scripthash()); - }; -} - -export const keyHashCredential = lib.StakeCredential.from_keyhash; -export const scriptHashCredential = lib.StakeCredential.from_scripthash; -export { callToBytes as addressBytes }; -export { callToBytes as byronAddressBytes }; -export { callToBytes as stakeCredentialToBytes }; -export { callToBech32 as addressBech32 }; - -export function _addressNetworkId(toAdt) { - return addr => { - return toAdt(callNetworkId(addr)); - }; -} - -export function _byronAddressNetworkId(toAdt) { - return addr => { - return toAdt(callNetworkId(addr)); - }; -} - -export const _addressFromBytes = callClassStaticMaybe("Address", "from_bytes"); - -export const _stakeCredentialFromBytes = callClassStaticMaybe( - "StakeCredential", - "from_bytes" -); - -export const _byronAddressFromBytes = callClassStaticMaybe( - "ByronAddress", - "from_bytes" -); - -export const _addressFromBech32 = callClassStaticMaybe( - "Address", - "from_bech32" -); - -export const _byronAddressFromBase58 = callClassStaticMaybe( - "ByronAddress", - "from_base58" -); - -export const _baseAddressFromAddress = callClassStaticMaybe( - "BaseAddress", - "from_address" -); - -export const _byronAddressFromAddress = callClassStaticMaybe( - "ByronAddress", - "from_address" -); - -export const _enterpriseAddressFromAddress = callClassStaticMaybe( - "EnterpriseAddress", - "from_address" -); - -export const _pointerAddressFromAddress = callClassStaticMaybe( - "PointerAddress", - "from_address" -); - -export const _rewardAddressFromAddress = callClassStaticMaybe( - "RewardAddress", - "from_address" -); - -export { callToAddress as baseAddressToAddress }; -export { callToAddress as byronAddressToAddress }; -export { callToAddress as enterpriseAddressToAddress }; -export { callToAddress as pointerAddressToAddress }; -export { callToAddress as rewardAddressToAddress }; -export { callPaymentCred as baseAddressPaymentCred }; -export { callPaymentCred as rewardAddressPaymentCred }; -export { callPaymentCred as enterpriseAddressPaymentCred }; -export { callPaymentCred as pointerAddressPaymentCred }; -export { callStakeCred as baseAddressDelegationCred }; -export const byronAddressAttributes = callMethodParameterless("attributes"); -export const byronAddressIsValid = lib.ByronAddress.is_valid; -export const byronAddressToBase58 = callMethodParameterless("to_base58"); -export const byronProtocolMagic = callMethodParameterless( - "byron_protocol_magic" -); - -export function icarusFromKey(bip32pubkey) { - return byronProtocolMagic => { - return lib.ByronAddress.icarus_from_key(bip32pubkey, byronProtocolMagic); - }; -} - -export function pointerAddressStakePointer(pa) { - const pointerForeign = pa.stake_pointer(); - return { - slot: pointerForeign.slot_bignum(), - txIx: pointerForeign.tx_index_bignum(), - certIx: pointerForeign.cert_index_bignum() - }; -} - -export function _enterpriseAddress(netIdToInt) { - return inpRec => { - return lib.EnterpriseAddress.new( - netIdToInt(inpRec.network), - inpRec.paymentCred - ); - }; -} - -export function _rewardAddress(netIdToInt) { - return inpRec => { - return lib.RewardAddress.new( - netIdToInt(inpRec.network), - inpRec.paymentCred - ); - }; -} - -export function _baseAddress(netIdToInt) { - return inpRec => { - return lib.BaseAddress.new( - netIdToInt(inpRec.network), - inpRec.paymentCred, - inpRec.delegationCred - ); - }; -} - -export function _pointerAddress(netIdToInt) { - return inpRec => { - const p = inpRec.stakePointer; - const pointerForeign = lib.Pointer.new_pointer(p.slot, p.txIx, p.certIx); - return lib.PointerAddress.new( - netIdToInt(inpRec.network), - inpRec.paymentCred, - pointerForeign - ); - }; -} diff --git a/src/Internal/Serialization/Address.purs b/src/Internal/Serialization/Address.purs deleted file mode 100644 index 16bb49e64..000000000 --- a/src/Internal/Serialization/Address.purs +++ /dev/null @@ -1,109 +0,0 @@ -module Ctl.Internal.Serialization.Address - ( BlockId(BlockId) - , TransactionIndex(TransactionIndex) - , CertificateIndex(CertificateIndex) - -- , addressBech32 - -- , addressNetworkId - -- , keyHashCredential - -- , scriptHashCredential - -- , withStakeCredential - -- , baseAddress - -- , baseAddressPaymentCred - -- , baseAddressDelegationCred - -- , baseAddressToAddress - , ByronProtocolMagic(ByronProtocolMagic) - ) where - -import Cardano.Types.NetworkId -import Cardano.Types.Slot -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , decodeAeson - , encodeAeson - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.BaseAddress as X -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.ByronAddress as X -import Cardano.Types.EnterpriseAddress as X -import Cardano.Types.NetworkId as NetworkId -import Cardano.Types.NetworkId as X -import Cardano.Types.PlutusData (PlutusData(Bytes)) -import Cardano.Types.Pointer as X -import Cardano.Types.PointerAddress as X -import Cardano.Types.RewardAddress as X -import Cardano.Types.Slot as X -import Cardano.Types.StakeCredential as X -import Control.Alt ((<|>)) -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Helpers (encodeTagged') -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash) -import Ctl.Internal.Serialization.Types (Bip32PublicKey) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.Aliases (Base58String, Bech32String) -import Ctl.Internal.Types.CborBytes (CborBytes) -import Data.ByteArray (ByteArray) -import Data.Either (note) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) -import Data.UInt (UInt) -import Partial.Unsafe (unsafePartial) - --- it is an integer in ogmios --- bytestring in plutus --- uint32 in csl -newtype BlockId = BlockId UInt - -derive newtype instance Eq BlockId -derive instance Newtype BlockId _ -derive instance Generic BlockId _ - -instance EncodeAeson BlockId where - encodeAeson (BlockId id) = encodeAeson id - -instance Show BlockId where - show = genericShow - -newtype TransactionIndex = TransactionIndex BigNum - -derive instance Eq TransactionIndex -derive instance Ord TransactionIndex -derive instance Newtype TransactionIndex _ -derive instance Generic TransactionIndex _ -derive newtype instance DecodeAeson TransactionIndex -derive newtype instance EncodeAeson TransactionIndex -derive newtype instance ToData TransactionIndex -derive newtype instance FromData TransactionIndex - -instance Show TransactionIndex where - show = genericShow - -newtype CertificateIndex = CertificateIndex BigNum - -derive instance Eq CertificateIndex -derive instance Ord CertificateIndex -derive instance Newtype CertificateIndex _ -derive instance Generic CertificateIndex _ -derive newtype instance DecodeAeson CertificateIndex -derive newtype instance EncodeAeson CertificateIndex -derive newtype instance ToData CertificateIndex -derive newtype instance FromData CertificateIndex - -instance Show CertificateIndex where - show = genericShow - -type Pointer = - { slot :: Slot - , txIx :: TransactionIndex - , certIx :: CertificateIndex - } - -newtype ByronProtocolMagic = ByronProtocolMagic UInt diff --git a/src/Internal/Serialization/AuxiliaryData.js b/src/Internal/Serialization/AuxiliaryData.js deleted file mode 100644 index 367ec0b6c..000000000 --- a/src/Internal/Serialization/AuxiliaryData.js +++ /dev/null @@ -1,46 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -const setter = prop => obj => value => () => obj["set_" + prop](value); - -export function newAuxiliaryData() { - return lib.AuxiliaryData.new(); -} - -export function _hashAuxiliaryData(auxiliaryData) { - return lib.hash_auxiliary_data(auxiliaryData); -} - -export const setAuxiliaryDataNativeScripts = setter("native_scripts"); -export const setAuxiliaryDataPlutusScripts = setter("plutus_scripts"); -export const setAuxiliaryDataGeneralTransactionMetadata = setter("metadata"); - -export function newGeneralTransactionMetadata(containerHelper) { - return entries => () => - containerHelper.packMap(lib.GeneralTransactionMetadata, entries); -} - -export function newMetadataMap(containerHelper) { - return entries => () => - lib.TransactionMetadatum.new_map( - containerHelper.packMap(lib.MetadataMap, entries) - ); -} - -export function newMetadataList(containerHelper) { - return entries => () => - lib.TransactionMetadatum.new_list( - containerHelper.pack(lib.MetadataList, entries) - ); -} - -export function newMetadataInt(int) { - return () => lib.TransactionMetadatum.new_int(int); -} - -export function newMetadataBytes(bytes) { - return () => lib.TransactionMetadatum.new_bytes(bytes); -} - -export function newMetadataText(text) { - return () => lib.TransactionMetadatum.new_text(text); -} diff --git a/src/Internal/Serialization/Hash.purs b/src/Internal/Serialization/Hash.purs index 896a452f1..07501dc57 100644 --- a/src/Internal/Serialization/Hash.purs +++ b/src/Internal/Serialization/Hash.purs @@ -16,7 +16,7 @@ import Aeson import Cardano.Serialization.Lib (fromBytes, nativeScript_hash, toBytes) import Cardano.Serialization.Lib as CSL import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (decodeCbor, encodeCbor) +import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Types.Ed25519KeyHash as X import Cardano.Types.PlutusData (PlutusData(Bytes)) import Cardano.Types.ScriptHash as X diff --git a/src/Internal/Service/Helpers.purs b/src/Internal/Service/Helpers.purs index 0166bed19..a8fa09dab 100644 --- a/src/Internal/Service/Helpers.purs +++ b/src/Internal/Service/Helpers.purs @@ -14,7 +14,7 @@ import Aeson , caseAesonObject , caseAesonString ) -import Cardano.Types.AsCbor (decodeCbor) +import Cardano.AsCbor (decodeCbor) import Cardano.Types.AssetName (AssetName, mkAssetName) import Cardano.Types.ScriptHash (ScriptHash) import Control.Apply (lift2) diff --git a/src/Internal/TxOutput.purs b/src/Internal/TxOutput.purs index 6a1edbf47..ce22b4f8b 100644 --- a/src/Internal/TxOutput.purs +++ b/src/Internal/TxOutput.purs @@ -11,7 +11,7 @@ import Prelude import Cardano.Serialization.Lib (fromBytes, toBytes) import Cardano.Types.Address as Address -import Cardano.Types.AsCbor (decodeCbor, encodeCbor) +import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Types.OutputDatum ( OutputDatum(..) , outputDatumDataHash diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index 0a6bbbf24..f42b63cf0 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -8,7 +8,7 @@ import Prelude import Cardano.Serialization.Lib (fromBytes, toBytes) import Cardano.Types.Address (Address) -import Cardano.Types.AsCbor (decodeCbor, encodeCbor) +import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Types.BigNum as BigNum import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOuput import Cardano.Types.TransactionUnspentOutput as UnspentOutput diff --git a/src/Internal/Wallet/Cip30/SignData.purs b/src/Internal/Wallet/Cip30/SignData.purs index 901dba6fd..3bd63a236 100644 --- a/src/Internal/Wallet/Cip30/SignData.purs +++ b/src/Internal/Wallet/Cip30/SignData.purs @@ -3,7 +3,7 @@ module Ctl.Internal.Wallet.Cip30.SignData (signData) where import Prelude import Cardano.Types.Address (Address) -import Cardano.Types.AsCbor (encodeCbor) +import Cardano.AsCbor (encodeCbor) import Ctl.Internal.Serialization.Keys ( bytesFromPublicKey , publicKeyFromPrivateKey diff --git a/src/Lib.js b/src/Lib.js deleted file mode 100644 index 7d6022916..000000000 --- a/src/Lib.js +++ /dev/null @@ -1,883 +0,0 @@ -"use strict"; - -import * as CSL from "@mlabs-haskell/cardano-serialization-lib-gc"; - -// Pass in a function and its list of arguments, that is expected to fail on evaluation, wraps in Either -function errorableToPurs(f, ...vars) { - try { - return f(...vars) || null; - } - catch (err) { - return null; - } - } - -// Address -export const address_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const address_fromBech32 = bech_str => errorableToPurs(CSL.Address.from_bech32, bech_str); -export const address_networkId = self => self.network_id.bind(self)(); - -// AssetName -export const assetName_new = name => CSL.AssetName.new(name); -export const assetName_name = self => self.name.bind(self)(); - -// AssetNames -export const assetNames_new = () => CSL.AssetNames.new(); - -// Assets -export const assets_new = () => CSL.Assets.new(); - -// AuxiliaryData -export const auxiliaryData_new = () => CSL.AuxiliaryData.new(); -export const auxiliaryData_metadata = self => self.metadata.bind(self)(); -export const auxiliaryData_setMetadata = self => metadata => () => self.set_metadata.bind(self)(metadata); -export const auxiliaryData_nativeScripts = self => self.native_scripts.bind(self)(); -export const auxiliaryData_setNativeScripts = self => native_scripts => () => self.set_native_scripts.bind(self)(native_scripts); -export const auxiliaryData_plutusScripts = self => self.plutus_scripts.bind(self)(); -export const auxiliaryData_setPlutusScripts = self => plutus_scripts => () => self.set_plutus_scripts.bind(self)(plutus_scripts); -export const auxiliaryData_preferAlonzoFormat = self => self.prefer_alonzo_format.bind(self)(); -export const auxiliaryData_setPreferAlonzoFormat = self => prefer => () => self.set_prefer_alonzo_format.bind(self)(prefer); - -// AuxiliaryDataHash -export const auxiliaryDataHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const auxiliaryDataHash_fromBech32 = bech_str => errorableToPurs(CSL.AuxiliaryDataHash.from_bech32, bech_str); - -// BaseAddress -export const baseAddress_new = network => payment => stake => CSL.BaseAddress.new(network, payment, stake); -export const baseAddress_paymentCred = self => self.payment_cred.bind(self)(); -export const baseAddress_stakeCred = self => self.stake_cred.bind(self)(); -export const baseAddress_toAddress = self => self.to_address.bind(self)(); -export const baseAddress_fromAddress = addr => CSL.BaseAddress.from_address(addr); - -// BigInt -export const bigInt_isZero = self => self.is_zero.bind(self)(); -export const bigInt_asU64 = self => self.as_u64.bind(self)(); -export const bigInt_asInt = self => self.as_int.bind(self)(); -export const bigInt_fromStr = text => errorableToPurs(CSL.BigInt.from_str, text); -export const bigInt_toStr = self => self.to_str.bind(self)(); -export const bigInt_mul = self => other => self.mul.bind(self)(other); -export const bigInt_one = CSL.BigInt.one(); -export const bigInt_increment = self => self.increment.bind(self)(); -export const bigInt_divCeil = self => other => self.div_ceil.bind(self)(other); - -// BigNum -export const bigNum_fromStr = string => errorableToPurs(CSL.BigNum.from_str, string); -export const bigNum_toStr = self => self.to_str.bind(self)(); -export const bigNum_zero = CSL.BigNum.zero(); -export const bigNum_one = CSL.BigNum.one(); -export const bigNum_isZero = self => self.is_zero.bind(self)(); -export const bigNum_divFloor = self => other => self.div_floor.bind(self)(other); -export const bigNum_checkedMul = self => other => errorableToPurs(self.checked_mul.bind(self), other); -export const bigNum_checkedAdd = self => other => errorableToPurs(self.checked_add.bind(self), other); -export const bigNum_checkedSub = self => other => errorableToPurs(self.checked_sub.bind(self), other); -export const bigNum_clampedSub = self => other => self.clamped_sub.bind(self)(other); -export const bigNum_compare = self => rhs_value => self.compare.bind(self)(rhs_value); -export const bigNum_lessThan = self => rhs_value => self.less_than.bind(self)(rhs_value); -export const bigNum_maxValue = CSL.BigNum.max_value(); -export const bigNum_max = a => b => CSL.BigNum.max(a, b); - -// Bip32PrivateKey -export const bip32PrivateKey_derive = self => index => self.derive.bind(self)(index); -export const bip32PrivateKey_from128Xprv = bytes => CSL.Bip32PrivateKey.from_128_xprv(bytes); -export const bip32PrivateKey_to128Xprv = self => self.to_128_xprv.bind(self)(); -export const bip32PrivateKey_generateEd25519Bip32 = CSL.Bip32PrivateKey.generate_ed25519_bip32(); -export const bip32PrivateKey_toRawKey = self => self.to_raw_key.bind(self)(); -export const bip32PrivateKey_toPublic = self => self.to_public.bind(self)(); -export const bip32PrivateKey_asBytes = self => self.as_bytes.bind(self)(); -export const bip32PrivateKey_fromBech32 = bech32_str => errorableToPurs(CSL.Bip32PrivateKey.from_bech32, bech32_str); -export const bip32PrivateKey_toBech32 = self => self.to_bech32.bind(self)(); -export const bip32PrivateKey_fromBip39Entropy = entropy => password => CSL.Bip32PrivateKey.from_bip39_entropy(entropy, password); -export const bip32PrivateKey_chaincode = self => self.chaincode.bind(self)(); - -// Bip32PublicKey -export const bip32PublicKey_derive = self => index => self.derive.bind(self)(index); -export const bip32PublicKey_toRawKey = self => self.to_raw_key.bind(self)(); -export const bip32PublicKey_asBytes = self => self.as_bytes.bind(self)(); -export const bip32PublicKey_fromBech32 = bech32_str => errorableToPurs(CSL.Bip32PublicKey.from_bech32, bech32_str); -export const bip32PublicKey_toBech32 = self => self.to_bech32.bind(self)(); -export const bip32PublicKey_chaincode = self => self.chaincode.bind(self)(); - -// BlockHash -export const blockHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const blockHash_fromBech32 = bech_str => errorableToPurs(CSL.BlockHash.from_bech32, bech_str); - -// BootstrapWitness -export const bootstrapWitness_vkey = self => self.vkey.bind(self)(); -export const bootstrapWitness_signature = self => self.signature.bind(self)(); -export const bootstrapWitness_chainCode = self => self.chain_code.bind(self)(); -export const bootstrapWitness_attributes = self => self.attributes.bind(self)(); -export const bootstrapWitness_new = vkey => signature => chain_code => attributes => CSL.BootstrapWitness.new(vkey, signature, chain_code, attributes); - -// BootstrapWitnesses -export const bootstrapWitnesses_new = () => CSL.BootstrapWitnesses.new(); - -// ByronAddress -export const byronAddress_toBase58 = self => self.to_base58.bind(self)(); -export const byronAddress_byronProtocolMagic = self => self.byron_protocol_magic.bind(self)(); -export const byronAddress_attributes = self => self.attributes.bind(self)(); -export const byronAddress_networkId = self => self.network_id.bind(self)(); -export const byronAddress_fromBase58 = s => errorableToPurs(CSL.ByronAddress.from_base58, s); -export const byronAddress_icarusFromKey = key => protocol_magic => CSL.ByronAddress.icarus_from_key(key, protocol_magic); -export const byronAddress_isValid = s => CSL.ByronAddress.is_valid(s); -export const byronAddress_toAddress = self => self.to_address.bind(self)(); -export const byronAddress_fromAddress = addr => CSL.ByronAddress.from_address(addr); - -// Certificate -export const certificate_newStakeRegistration = stake_registration => CSL.Certificate.new_stake_registration(stake_registration); -export const certificate_newStakeDeregistration = stake_deregistration => CSL.Certificate.new_stake_deregistration(stake_deregistration); -export const certificate_newStakeDelegation = stake_delegation => CSL.Certificate.new_stake_delegation(stake_delegation); -export const certificate_newPoolRegistration = pool_registration => CSL.Certificate.new_pool_registration(pool_registration); -export const certificate_newPoolRetirement = pool_retirement => CSL.Certificate.new_pool_retirement(pool_retirement); -export const certificate_newGenesisKeyDelegation = genesis_key_delegation => CSL.Certificate.new_genesis_key_delegation(genesis_key_delegation); -export const certificate_newMoveInstantaneousRewardsCert = move_instantaneous_rewards_cert => CSL.Certificate.new_move_instantaneous_rewards_cert(move_instantaneous_rewards_cert); -export const certificate_kind = self => self.kind.bind(self)(); -export const certificate_asStakeRegistration = self => self.as_stake_registration.bind(self)(); -export const certificate_asStakeDeregistration = self => self.as_stake_deregistration.bind(self)(); -export const certificate_asStakeDelegation = self => self.as_stake_delegation.bind(self)(); -export const certificate_asPoolRegistration = self => self.as_pool_registration.bind(self)(); -export const certificate_asPoolRetirement = self => self.as_pool_retirement.bind(self)(); -export const certificate_asGenesisKeyDelegation = self => self.as_genesis_key_delegation.bind(self)(); -export const certificate_asMoveInstantaneousRewardsCert = self => self.as_move_instantaneous_rewards_cert.bind(self)(); - -// Certificates -export const certificates_new = () => CSL.Certificates.new(); - -// ConstrPlutusData -export const constrPlutusData_alternative = self => self.alternative.bind(self)(); -export const constrPlutusData_data = self => self.data.bind(self)(); -export const constrPlutusData_new = alternative => data => CSL.ConstrPlutusData.new(alternative, data); - -// CostModel -export const costModel_free = self => errorableToPurs(self.free.bind(self), ); -export const costModel_toBytes = self => self.to_bytes.bind(self)(); -export const costModel_fromBytes = bytes => errorableToPurs(CSL.CostModel.from_bytes, bytes); -export const costModel_toHex = self => self.to_hex.bind(self)(); -export const costModel_fromHex = hex_str => errorableToPurs(CSL.CostModel.from_hex, hex_str); -export const costModel_toJson = self => self.to_json.bind(self)(); -export const costModel_fromJson = json => errorableToPurs(CSL.CostModel.from_json, json); -export const costModel_new = () => CSL.CostModel.new(); -export const costModel_set = self => operation => cost => () => self.set.bind(self)(operation, cost); -export const costModel_get = self => operation => () => self.get.bind(self)(operation); -export const costModel_len = self => () => self.len.bind(self)(); - -// Costmdls -export const costmdls_new = () => CSL.Costmdls.new(); -export const costmdls_retainLanguageVersions = self => languages => self.retain_language_versions.bind(self)(languages); - -// DNSRecordAorAAAA -export const dnsRecordAorAAAA_new = dns_name => CSL.DNSRecordAorAAAA.new(dns_name); -export const dnsRecordAorAAAA_record = self => self.record.bind(self)(); - -// DNSRecordSRV -export const dnsRecordSRV_new = dns_name => CSL.DNSRecordSRV.new(dns_name); -export const dnsRecordSRV_record = self => self.record.bind(self)(); - -// DataCost -export const dataCost_newCoinsPerWord = coins_per_word => CSL.DataCost.new_coins_per_word(coins_per_word); -export const dataCost_newCoinsPerByte = coins_per_byte => CSL.DataCost.new_coins_per_byte(coins_per_byte); -export const dataCost_coinsPerByte = self => self.coins_per_byte.bind(self)(); - -// DataHash -export const dataHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const dataHash_fromBech32 = bech_str => errorableToPurs(CSL.DataHash.from_bech32, bech_str); - -// DatumSource -export const datumSource_new = datum => CSL.DatumSource.new(datum); -export const datumSource_newRefInput = input => CSL.DatumSource.new_ref_input(input); - -// Ed25519KeyHash -export const ed25519KeyHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const ed25519KeyHash_fromBech32 = bech_str => errorableToPurs(CSL.Ed25519KeyHash.from_bech32, bech_str); - -// Ed25519KeyHashes -export const ed25519KeyHashes_new = CSL.Ed25519KeyHashes.new(); -export const ed25519KeyHashes_toOption = self => self.to_option.bind(self)(); - -// Ed25519Signature -export const ed25519Signature_toBech32 = self => self.to_bech32.bind(self)(); -export const ed25519Signature_fromBech32 = bech32_str => errorableToPurs(CSL.Ed25519Signature.from_bech32, bech32_str); - -// EnterpriseAddress -export const enterpriseAddress_new = network => payment => CSL.EnterpriseAddress.new(network, payment); -export const enterpriseAddress_paymentCred = self => self.payment_cred.bind(self)(); -export const enterpriseAddress_toAddress = self => self.to_address.bind(self)(); -export const enterpriseAddress_fromAddress = addr => CSL.EnterpriseAddress.from_address(addr); - -// ExUnitPrices -export const exUnitPrices_memPrice = self => self.mem_price.bind(self)(); -export const exUnitPrices_stepPrice = self => self.step_price.bind(self)(); -export const exUnitPrices_new = mem_price => step_price => CSL.ExUnitPrices.new(mem_price, step_price); - -// ExUnits -export const exUnits_mem = self => self.mem.bind(self)(); -export const exUnits_steps = self => self.steps.bind(self)(); -export const exUnits_new = mem => steps => CSL.ExUnits.new(mem, steps); - -// GeneralTransactionMetadata -export const generalTransactionMetadata_new = () => CSL.GeneralTransactionMetadata.new(); - -// GenesisDelegateHash -export const genesisDelegateHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const genesisDelegateHash_fromBech32 = bech_str => errorableToPurs(CSL.GenesisDelegateHash.from_bech32, bech_str); - -// GenesisHash -export const genesisHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const genesisHash_fromBech32 = bech_str => errorableToPurs(CSL.GenesisHash.from_bech32, bech_str); - -// GenesisHashes -export const genesisHashes_new = () => CSL.GenesisHashes.new(); - -// GenesisKeyDelegation -export const genesisKeyDelegation_genesishash = self => self.genesishash.bind(self)(); -export const genesisKeyDelegation_genesisDelegateHash = self => self.genesis_delegate_hash.bind(self)(); -export const genesisKeyDelegation_vrfKeyhash = self => self.vrf_keyhash.bind(self)(); -export const genesisKeyDelegation_new = genesishash => genesis_delegate_hash => vrf_keyhash => CSL.GenesisKeyDelegation.new(genesishash, genesis_delegate_hash, vrf_keyhash); - -// InputWithScriptWitness -export const inputWithScriptWitness_newWithNativeScriptWitness = input => witness => CSL.InputWithScriptWitness.new_with_native_script_witness(input, witness); -export const inputWithScriptWitness_newWithPlutusWitness = input => witness => CSL.InputWithScriptWitness.new_with_plutus_witness(input, witness); -export const inputWithScriptWitness_input = self => self.input.bind(self)(); - -// InputsWithScriptWitness -export const inputsWithScriptWitness_new = CSL.InputsWithScriptWitness.new(); - -// Int -export const int_new = x => CSL.Int.new(x); -export const int_newNegative = x => CSL.Int.new_negative(x); -export const int_newI32 = x => CSL.Int.new_i32(x); -export const int_isPositive = self => self.is_positive.bind(self)(); -export const int_asPositive = self => self.as_positive.bind(self)(); -export const int_asNegative = self => self.as_negative.bind(self)(); -export const int_asI32 = self => self.as_i32.bind(self)(); -export const int_asI32OrNothing = self => self.as_i32_or_nothing.bind(self)(); -export const int_asI32OrFail = self => self.as_i32_or_fail.bind(self)(); -export const int_toStr = self => self.to_str.bind(self)(); -export const int_fromStr = string => errorableToPurs(CSL.Int.from_str, string); - -// Ipv4 -export const ipv4_new = data => CSL.Ipv4.new(data); -export const ipv4_ip = self => self.ip.bind(self)(); - -// Ipv6 -export const ipv6_new = data => CSL.Ipv6.new(data); -export const ipv6_ip = self => self.ip.bind(self)(); - -// KESSignature - -// KESVKey -export const kesvKey_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const kesvKey_fromBech32 = bech_str => errorableToPurs(CSL.KESVKey.from_bech32, bech_str); - -// Language -export const language_newPlutusV1 = CSL.Language.new_plutus_v1(); -export const language_newPlutusV2 = CSL.Language.new_plutus_v2(); -export const language_kind = self => self.kind.bind(self)(); - -// Languages -export const languages_new = () => CSL.Languages.new(); -export const languages_list = CSL.Languages.list(); - -// LegacyDaedalusPrivateKey -export const legacyDaedalusPrivateKey_asBytes = self => self.as_bytes.bind(self)(); -export const legacyDaedalusPrivateKey_chaincode = self => self.chaincode.bind(self)(); - -// LinearFee -export const linearFee_constant = self => self.constant.bind(self)(); -export const linearFee_coefficient = self => self.coefficient.bind(self)(); -export const linearFee_new = coefficient => constant => CSL.LinearFee.new(coefficient, constant); - -// MIRToStakeCredentials -export const mirToStakeCredentials_new = () => CSL.MIRToStakeCredentials.new(); - -// MetadataList -export const metadataList_new = () => CSL.MetadataList.new(); - -// MetadataMap -export const metadataMap_new = () => CSL.MetadataMap.new(); -export const metadataMap_insertStr = self => key => value => () => self.insert_str.bind(self)(key, value); -export const metadataMap_insertI32 = self => key => value => () => self.insert_i32.bind(self)(key, value); -export const metadataMap_getStr = self => key => () => self.get_str.bind(self)(key); -export const metadataMap_getI32 = self => key => () => self.get_i32.bind(self)(key); -export const metadataMap_has = self => key => () => self.has.bind(self)(key); - -// Mint -export const mint_new = () => CSL.Mint.new(); -export const mint_newFromEntry = key => value => () => CSL.Mint.new_from_entry(key, value); -export const mint_getAll = self => key => self.get_all.bind(self)(key); -export const mint_asPositiveMultiasset = self => () => self.as_positive_multiasset.bind(self)(); -export const mint_asNegativeMultiasset = self => () => self.as_negative_multiasset.bind(self)(); - -// MintAssets -export const mintAssets_new = () => CSL.MintAssets.new(); -export const mintAssets_newFromEntry = key => value => CSL.MintAssets.new_from_entry(key, value); - -// MintWitness -export const mintWitness_newNativeScript = native_script => CSL.MintWitness.new_native_script(native_script); -export const mintWitness_newPlutusScript = plutus_script => redeemer => CSL.MintWitness.new_plutus_script(plutus_script, redeemer); - -// MintsAssets - -// MoveInstantaneousReward -export const moveInstantaneousReward_newToOtherPot = pot => amount => CSL.MoveInstantaneousReward.new_to_other_pot(pot, amount); -export const moveInstantaneousReward_newToStakeCreds = pot => amounts => CSL.MoveInstantaneousReward.new_to_stake_creds(pot, amounts); -export const moveInstantaneousReward_pot = self => self.pot.bind(self)(); -export const moveInstantaneousReward_kind = self => self.kind.bind(self)(); -export const moveInstantaneousReward_asToOtherPot = self => self.as_to_other_pot.bind(self)(); -export const moveInstantaneousReward_asToStakeCreds = self => self.as_to_stake_creds.bind(self)(); - -// MoveInstantaneousRewardsCert -export const moveInstantaneousRewardsCert_moveInstantaneousReward = self => self.move_instantaneous_reward.bind(self)(); -export const moveInstantaneousRewardsCert_new = move_instantaneous_reward => CSL.MoveInstantaneousRewardsCert.new(move_instantaneous_reward); - -// MultiAsset -export const multiAsset_new = () => CSL.MultiAsset.new(); -export const multiAsset_setAsset = self => policy_id => asset_name => value => () => self.set_asset.bind(self)(policy_id, asset_name, value); -export const multiAsset_getAsset = self => policy_id => asset_name => () => self.get_asset.bind(self)(policy_id, asset_name); -export const multiAsset_sub = self => rhs_ma => () => self.sub.bind(self)(rhs_ma); - -// MultiHostName -export const multiHostName_dnsName = self => self.dns_name.bind(self)(); -export const multiHostName_new = dns_name => CSL.MultiHostName.new(dns_name); - -// NativeScript -export const nativeScript_hash = self => self.hash.bind(self)(); -export const nativeScript_newScriptPubkey = script_pubkey => CSL.NativeScript.new_script_pubkey(script_pubkey); -export const nativeScript_newScriptAll = script_all => CSL.NativeScript.new_script_all(script_all); -export const nativeScript_newScriptAny = script_any => CSL.NativeScript.new_script_any(script_any); -export const nativeScript_newScriptNOfK = script_n_of_k => CSL.NativeScript.new_script_n_of_k(script_n_of_k); -export const nativeScript_newTimelockStart = timelock_start => CSL.NativeScript.new_timelock_start(timelock_start); -export const nativeScript_newTimelockExpiry = timelock_expiry => CSL.NativeScript.new_timelock_expiry(timelock_expiry); -export const nativeScript_kind = self => self.kind.bind(self)(); -export const nativeScript_asScriptPubkey = self => self.as_script_pubkey.bind(self)(); -export const nativeScript_asScriptAll = self => self.as_script_all.bind(self)(); -export const nativeScript_asScriptAny = self => self.as_script_any.bind(self)(); -export const nativeScript_asScriptNOfK = self => self.as_script_n_of_k.bind(self)(); -export const nativeScript_asTimelockStart = self => self.as_timelock_start.bind(self)(); -export const nativeScript_asTimelockExpiry = self => self.as_timelock_expiry.bind(self)(); -export const nativeScript_getRequiredSigners = self => self.get_required_signers.bind(self)(); - -// NativeScripts -export const nativeScripts_new = () => CSL.NativeScripts.new(); - -// NetworkId -export const networkId_testnet = CSL.NetworkId.testnet(); -export const networkId_mainnet = CSL.NetworkId.mainnet(); -export const networkId_kind = self => self.kind.bind(self)(); - -// NetworkInfo -export const networkInfo_new = network_id => protocol_magic => CSL.NetworkInfo.new(network_id, protocol_magic); -export const networkInfo_networkId = self => self.network_id.bind(self)(); -export const networkInfo_protocolMagic = self => self.protocol_magic.bind(self)(); -export const networkInfo_testnetPreview = CSL.NetworkInfo.testnet_preview(); -export const networkInfo_testnetPreprod = CSL.NetworkInfo.testnet_preprod(); -export const networkInfo_testnet = CSL.NetworkInfo.testnet(); -export const networkInfo_mainnet = CSL.NetworkInfo.mainnet(); - -// Nonce -export const nonce_newIdentity = CSL.Nonce.new_identity(); -export const nonce_newFromHash = hash => CSL.Nonce.new_from_hash(hash); -export const nonce_getHash = self => self.get_hash.bind(self)(); - -// OperationalCert -export const operationalCert_hotVkey = self => self.hot_vkey.bind(self)(); -export const operationalCert_sequenceNumber = self => self.sequence_number.bind(self)(); -export const operationalCert_kesPeriod = self => self.kes_period.bind(self)(); -export const operationalCert_sigma = self => self.sigma.bind(self)(); -export const operationalCert_new = hot_vkey => sequence_number => kes_period => sigma => CSL.OperationalCert.new(hot_vkey, sequence_number, kes_period, sigma); - -// OutputDatum -export const outputDatum_newDataHash = data_hash => CSL.OutputDatum.new_data_hash(data_hash); -export const outputDatum_newData = data => CSL.OutputDatum.new_data(data); -export const outputDatum_dataHash = self => self.data_hash.bind(self)(); -export const outputDatum_data = self => self.data.bind(self)(); - -// PlutusData -export const plutusData_newConstrPlutusData = constr_plutus_data => CSL.PlutusData.new_constr_plutus_data(constr_plutus_data); -export const plutusData_newEmptyConstrPlutusData = alternative => CSL.PlutusData.new_empty_constr_plutus_data(alternative); -export const plutusData_newSingleValueConstrPlutusData = alternative => plutus_data => CSL.PlutusData.new_single_value_constr_plutus_data(alternative, plutus_data); -export const plutusData_newMap = map => CSL.PlutusData.new_map(map); -export const plutusData_newList = list => CSL.PlutusData.new_list(list); -export const plutusData_newInteger = integer => CSL.PlutusData.new_integer(integer); -export const plutusData_newBytes = bytes => CSL.PlutusData.new_bytes(bytes); -export const plutusData_kind = self => self.kind.bind(self)(); -export const plutusData_asConstrPlutusData = self => self.as_constr_plutus_data.bind(self)(); -export const plutusData_asMap = self => self.as_map.bind(self)(); -export const plutusData_asList = self => self.as_list.bind(self)(); -export const plutusData_asInteger = self => self.as_integer.bind(self)(); -export const plutusData_asBytes = self => self.as_bytes.bind(self)(); -export const plutusData_fromAddress = address => CSL.PlutusData.from_address(address); - -// PlutusList -export const plutusList_new = () => CSL.PlutusList.new(); - -// PlutusMap -export const plutusMap_new = () => CSL.PlutusMap.new(); - -// PlutusScript -export const plutusScript_new = bytes => CSL.PlutusScript.new(bytes); -export const plutusScript_newV2 = bytes => CSL.PlutusScript.new_v2(bytes); -export const plutusScript_newWithVersion = bytes => language => CSL.PlutusScript.new_with_version(bytes, language); -export const plutusScript_bytes = self => self.bytes.bind(self)(); -export const plutusScript_fromBytesV2 = bytes => CSL.PlutusScript.from_bytes_v2(bytes); -export const plutusScript_fromBytesWithVersion = bytes => language => CSL.PlutusScript.from_bytes_with_version(bytes, language); -export const plutusScript_fromHexWithVersion = hex_str => language => CSL.PlutusScript.from_hex_with_version(hex_str, language); -export const plutusScript_hash = self => self.hash.bind(self)(); -export const plutusScript_languageVersion = self => self.language_version.bind(self)(); - -// PlutusScriptSource -export const plutusScriptSource_new = script => CSL.PlutusScriptSource.new(script); -export const plutusScriptSource_newRefInput = script_hash => input => CSL.PlutusScriptSource.new_ref_input(script_hash, input); -export const plutusScriptSource_newRefInputWithLangVer = script_hash => input => lang_ver => CSL.PlutusScriptSource.new_ref_input_with_lang_ver(script_hash, input, lang_ver); - -// PlutusScripts -export const plutusScripts_new = () => CSL.PlutusScripts.new(); - -// PlutusWitness -export const plutusWitness_new = script => datum => redeemer => CSL.PlutusWitness.new(script, datum, redeemer); -export const plutusWitness_newWithRef = script => datum => redeemer => CSL.PlutusWitness.new_with_ref(script, datum, redeemer); -export const plutusWitness_newWithoutDatum = script => redeemer => CSL.PlutusWitness.new_without_datum(script, redeemer); -export const plutusWitness_newWithRefWithoutDatum = script => redeemer => CSL.PlutusWitness.new_with_ref_without_datum(script, redeemer); -export const plutusWitness_script = self => self.script.bind(self)(); -export const plutusWitness_datum = self => self.datum.bind(self)(); -export const plutusWitness_redeemer = self => self.redeemer.bind(self)(); - -// PlutusWitnesses -export const plutusWitnesses_new = () => CSL.PlutusWitnesses.new(); - -// Pointer -export const pointer_new = slot => tx_index => cert_index => CSL.Pointer.new(slot, tx_index, cert_index); -export const pointer_newPointer = slot => tx_index => cert_index => CSL.Pointer.new_pointer(slot, tx_index, cert_index); -export const pointer_slot = self => self.slot.bind(self)(); -export const pointer_txIndex = self => self.tx_index.bind(self)(); -export const pointer_certIndex = self => self.cert_index.bind(self)(); -export const pointer_slotBignum = self => self.slot_bignum.bind(self)(); -export const pointer_txIndexBignum = self => self.tx_index_bignum.bind(self)(); -export const pointer_certIndexBignum = self => self.cert_index_bignum.bind(self)(); - -// PointerAddress -export const pointerAddress_new = network => payment => stake => CSL.PointerAddress.new(network, payment, stake); -export const pointerAddress_paymentCred = self => self.payment_cred.bind(self)(); -export const pointerAddress_stakePointer = self => self.stake_pointer.bind(self)(); -export const pointerAddress_toAddress = self => self.to_address.bind(self)(); -export const pointerAddress_fromAddress = addr => CSL.PointerAddress.from_address(addr); - -// PoolMetadata -export const poolMetadata_url = self => self.url.bind(self)(); -export const poolMetadata_poolMetadataHash = self => self.pool_metadata_hash.bind(self)(); -export const poolMetadata_new = url => pool_metadata_hash => CSL.PoolMetadata.new(url, pool_metadata_hash); - -// PoolMetadataHash -export const poolMetadataHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const poolMetadataHash_fromBech32 = bech_str => errorableToPurs(CSL.PoolMetadataHash.from_bech32, bech_str); - -// PoolParams -export const poolParams_operator = self => self.operator.bind(self)(); -export const poolParams_vrfKeyhash = self => self.vrf_keyhash.bind(self)(); -export const poolParams_pledge = self => self.pledge.bind(self)(); -export const poolParams_cost = self => self.cost.bind(self)(); -export const poolParams_margin = self => self.margin.bind(self)(); -export const poolParams_rewardAccount = self => self.reward_account.bind(self)(); -export const poolParams_poolOwners = self => self.pool_owners.bind(self)(); -export const poolParams_relays = self => self.relays.bind(self)(); -export const poolParams_poolMetadata = self => self.pool_metadata.bind(self)(); -export const poolParams_new = operator => vrf_keyhash => pledge => cost => margin => reward_account => pool_owners => relays => pool_metadata => CSL.PoolParams.new(operator, vrf_keyhash, pledge, cost, margin, reward_account, pool_owners, relays, pool_metadata); - -// PoolRegistration -export const poolRegistration_poolParams = self => self.pool_params.bind(self)(); -export const poolRegistration_new = pool_params => CSL.PoolRegistration.new(pool_params); - -// PoolRetirement -export const poolRetirement_poolKeyhash = self => self.pool_keyhash.bind(self)(); -export const poolRetirement_epoch = self => self.epoch.bind(self)(); -export const poolRetirement_new = pool_keyhash => epoch => CSL.PoolRetirement.new(pool_keyhash, epoch); - -// PrivateKey -export const privateKey_free = self => errorableToPurs(self.free.bind(self), ); -export const privateKey_toPublic = self => self.to_public.bind(self)(); -export const privateKey_generateEd25519 = CSL.PrivateKey.generate_ed25519(); -export const privateKey_generateEd25519extended = CSL.PrivateKey.generate_ed25519extended(); -export const privateKey_fromBech32 = bech32_str => errorableToPurs(CSL.PrivateKey.from_bech32, bech32_str); -export const privateKey_toBech32 = self => self.to_bech32.bind(self)(); -export const privateKey_asBytes = self => self.as_bytes.bind(self)(); -export const privateKey_fromExtendedBytes = bytes => errorableToPurs(CSL.PrivateKey.from_extended_bytes, bytes); -export const privateKey_fromNormalBytes = bytes => errorableToPurs(CSL.PrivateKey.from_normal_bytes, bytes); -export const privateKey_sign = self => message => self.sign.bind(self)(message); -export const privateKey_toHex = self => self.to_hex.bind(self)(); -export const privateKey_fromHex = hex_str => errorableToPurs(CSL.PrivateKey.from_hex, hex_str); - -// ProposedProtocolParameterUpdates -export const proposedProtocolParameterUpdates_new = () => CSL.ProposedProtocolParameterUpdates.new(); - -// ProtocolParamUpdate -export const protocolParamUpdate_setMinfeeA = self => minfee_a => () => self.set_minfee_a.bind(self)(minfee_a); -export const protocolParamUpdate_minfeeA = self => self.minfee_a.bind(self)(); -export const protocolParamUpdate_setMinfeeB = self => minfee_b => () => self.set_minfee_b.bind(self)(minfee_b); -export const protocolParamUpdate_minfeeB = self => self.minfee_b.bind(self)(); -export const protocolParamUpdate_setMaxBlockBodySize = self => max_block_body_size => () => self.set_max_block_body_size.bind(self)(max_block_body_size); -export const protocolParamUpdate_maxBlockBodySize = self => self.max_block_body_size.bind(self)(); -export const protocolParamUpdate_setMaxTxSize = self => max_tx_size => () => self.set_max_tx_size.bind(self)(max_tx_size); -export const protocolParamUpdate_maxTxSize = self => self.max_tx_size.bind(self)(); -export const protocolParamUpdate_setMaxBlockHeaderSize = self => max_block_header_size => () => self.set_max_block_header_size.bind(self)(max_block_header_size); -export const protocolParamUpdate_maxBlockHeaderSize = self => self.max_block_header_size.bind(self)(); -export const protocolParamUpdate_setKeyDeposit = self => key_deposit => () => self.set_key_deposit.bind(self)(key_deposit); -export const protocolParamUpdate_keyDeposit = self => self.key_deposit.bind(self)(); -export const protocolParamUpdate_setPoolDeposit = self => pool_deposit => () => self.set_pool_deposit.bind(self)(pool_deposit); -export const protocolParamUpdate_poolDeposit = self => self.pool_deposit.bind(self)(); -export const protocolParamUpdate_setMaxEpoch = self => max_epoch => () => self.set_max_epoch.bind(self)(max_epoch); -export const protocolParamUpdate_maxEpoch = self => self.max_epoch.bind(self)(); -export const protocolParamUpdate_setNOpt = self => n_opt => () => self.set_n_opt.bind(self)(n_opt); -export const protocolParamUpdate_nOpt = self => self.n_opt.bind(self)(); -export const protocolParamUpdate_setPoolPledgeInfluence = self => pool_pledge_influence => () => self.set_pool_pledge_influence.bind(self)(pool_pledge_influence); -export const protocolParamUpdate_poolPledgeInfluence = self => self.pool_pledge_influence.bind(self)(); -export const protocolParamUpdate_setExpansionRate = self => expansion_rate => () => self.set_expansion_rate.bind(self)(expansion_rate); -export const protocolParamUpdate_expansionRate = self => self.expansion_rate.bind(self)(); -export const protocolParamUpdate_setTreasuryGrowthRate = self => treasury_growth_rate => () => self.set_treasury_growth_rate.bind(self)(treasury_growth_rate); -export const protocolParamUpdate_treasuryGrowthRate = self => self.treasury_growth_rate.bind(self)(); -export const protocolParamUpdate_d = self => self.d.bind(self)(); -export const protocolParamUpdate_extraEntropy = self => self.extra_entropy.bind(self)(); -export const protocolParamUpdate_setProtocolVersion = self => protocol_version => () => self.set_protocol_version.bind(self)(protocol_version); -export const protocolParamUpdate_protocolVersion = self => self.protocol_version.bind(self)(); -export const protocolParamUpdate_setMinPoolCost = self => min_pool_cost => () => self.set_min_pool_cost.bind(self)(min_pool_cost); -export const protocolParamUpdate_minPoolCost = self => self.min_pool_cost.bind(self)(); -export const protocolParamUpdate_setAdaPerUtxoByte = self => ada_per_utxo_byte => () => self.set_ada_per_utxo_byte.bind(self)(ada_per_utxo_byte); -export const protocolParamUpdate_adaPerUtxoByte = self => self.ada_per_utxo_byte.bind(self)(); -export const protocolParamUpdate_setCostModels = self => cost_models => () => self.set_cost_models.bind(self)(cost_models); -export const protocolParamUpdate_costModels = self => self.cost_models.bind(self)(); -export const protocolParamUpdate_setExecutionCosts = self => execution_costs => () => self.set_execution_costs.bind(self)(execution_costs); -export const protocolParamUpdate_executionCosts = self => self.execution_costs.bind(self)(); -export const protocolParamUpdate_setMaxTxExUnits = self => max_tx_ex_units => () => self.set_max_tx_ex_units.bind(self)(max_tx_ex_units); -export const protocolParamUpdate_maxTxExUnits = self => self.max_tx_ex_units.bind(self)(); -export const protocolParamUpdate_setMaxBlockExUnits = self => max_block_ex_units => () => self.set_max_block_ex_units.bind(self)(max_block_ex_units); -export const protocolParamUpdate_maxBlockExUnits = self => self.max_block_ex_units.bind(self)(); -export const protocolParamUpdate_setMaxValueSize = self => max_value_size => () => self.set_max_value_size.bind(self)(max_value_size); -export const protocolParamUpdate_maxValueSize = self => self.max_value_size.bind(self)(); -export const protocolParamUpdate_setCollateralPercentage = self => collateral_percentage => () => self.set_collateral_percentage.bind(self)(collateral_percentage); -export const protocolParamUpdate_collateralPercentage = self => self.collateral_percentage.bind(self)(); -export const protocolParamUpdate_setMaxCollateralInputs = self => max_collateral_inputs => () => self.set_max_collateral_inputs.bind(self)(max_collateral_inputs); -export const protocolParamUpdate_maxCollateralInputs = self => self.max_collateral_inputs.bind(self)(); -export const protocolParamUpdate_new = CSL.ProtocolParamUpdate.new(); - -// ProtocolVersion -export const protocolVersion_major = self => self.major.bind(self)(); -export const protocolVersion_minor = self => self.minor.bind(self)(); -export const protocolVersion_new = major => minor => CSL.ProtocolVersion.new(major, minor); - -// PublicKey -export const publicKey_free = self => errorableToPurs(self.free.bind(self), ); -export const publicKey_fromBech32 = bech32_str => errorableToPurs(CSL.PublicKey.from_bech32, bech32_str); -export const publicKey_toBech32 = self => self.to_bech32.bind(self)(); -export const publicKey_asBytes = self => self.as_bytes.bind(self)(); -export const publicKey_fromBytes = bytes => errorableToPurs(CSL.PublicKey.from_bytes, bytes); -export const publicKey_verify = self => data => signature => self.verify.bind(self)(data, signature); -export const publicKey_hash = self => self.hash.bind(self)(); -export const publicKey_toHex = self => self.to_hex.bind(self)(); -export const publicKey_fromHex = hex_str => errorableToPurs(CSL.PublicKey.from_hex, hex_str); - -// Redeemer -export const redeemer_tag = self => self.tag.bind(self)(); -export const redeemer_index = self => self.index.bind(self)(); -export const redeemer_data = self => self.data.bind(self)(); -export const redeemer_exUnits = self => self.ex_units.bind(self)(); -export const redeemer_new = tag => index => data => ex_units => CSL.Redeemer.new(tag, index, data, ex_units); - -// RedeemerTag -export const redeemerTag_newSpend = CSL.RedeemerTag.new_spend(); -export const redeemerTag_newMint = CSL.RedeemerTag.new_mint(); -export const redeemerTag_newCert = CSL.RedeemerTag.new_cert(); -export const redeemerTag_newReward = CSL.RedeemerTag.new_reward(); -export const redeemerTag_kind = self => self.kind.bind(self)(); - -// Redeemers -export const redeemers_new = () => CSL.Redeemers.new(); -export const redeemers_totalExUnits = self => self.total_ex_units.bind(self)(); - -// Relay -export const relay_newSingleHostAddr = single_host_addr => CSL.Relay.new_single_host_addr(single_host_addr); -export const relay_newSingleHostName = single_host_name => CSL.Relay.new_single_host_name(single_host_name); -export const relay_newMultiHostName = multi_host_name => CSL.Relay.new_multi_host_name(multi_host_name); -export const relay_kind = self => self.kind.bind(self)(); -export const relay_asSingleHostAddr = self => self.as_single_host_addr.bind(self)(); -export const relay_asSingleHostName = self => self.as_single_host_name.bind(self)(); -export const relay_asMultiHostName = self => self.as_multi_host_name.bind(self)(); - -// Relays -export const relays_new = () => CSL.Relays.new(); - -// RewardAddress -export const rewardAddress_new = network => payment => CSL.RewardAddress.new(network, payment); -export const rewardAddress_paymentCred = self => self.payment_cred.bind(self)(); -export const rewardAddress_toAddress = self => self.to_address.bind(self)(); -export const rewardAddress_fromAddress = addr => CSL.RewardAddress.from_address(addr); - -// RewardAddresses -export const rewardAddresses_new = () => CSL.RewardAddresses.new(); - -// ScriptAll -export const scriptAll_nativeScripts = self => self.native_scripts.bind(self)(); -export const scriptAll_new = native_scripts => CSL.ScriptAll.new(native_scripts); - -// ScriptAny -export const scriptAny_nativeScripts = self => self.native_scripts.bind(self)(); -export const scriptAny_new = native_scripts => CSL.ScriptAny.new(native_scripts); - -// ScriptDataHash -export const scriptDataHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const scriptDataHash_fromBech32 = bech_str => errorableToPurs(CSL.ScriptDataHash.from_bech32, bech_str); - -// ScriptHash -export const scriptHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const scriptHash_fromBech32 = bech_str => errorableToPurs(CSL.ScriptHash.from_bech32, bech_str); - -// ScriptHashes -export const scriptHashes_new = () => CSL.ScriptHashes.new(); - -// ScriptNOfK -export const scriptNOfK_n = self => self.n.bind(self)(); -export const scriptNOfK_nativeScripts = self => self.native_scripts.bind(self)(); -export const scriptNOfK_new = n => native_scripts => CSL.ScriptNOfK.new(n, native_scripts); - -// ScriptPubkey -export const scriptPubkey_addrKeyhash = self => self.addr_keyhash.bind(self)(); -export const scriptPubkey_new = addr_keyhash => CSL.ScriptPubkey.new(addr_keyhash); - -// ScriptRef -export const scriptRef_newNativeScript = native_script => CSL.ScriptRef.new_native_script(native_script); -export const scriptRef_newPlutusScript = plutus_script => CSL.ScriptRef.new_plutus_script(plutus_script); -export const scriptRef_isNativeScript = self => self.is_native_script.bind(self)(); -export const scriptRef_isPlutusScript = self => self.is_plutus_script.bind(self)(); -export const scriptRef_nativeScript = self => self.native_script.bind(self)(); -export const scriptRef_plutusScript = self => self.plutus_script.bind(self)(); - -// SingleHostAddr -export const singleHostAddr_port = self => self.port.bind(self)(); -export const singleHostAddr_ipv4 = self => self.ipv4.bind(self)(); -export const singleHostAddr_ipv6 = self => self.ipv6.bind(self)(); -export const singleHostAddr_new = port => ipv4 => ipv6 => CSL.SingleHostAddr.new(port, ipv4, ipv6); - -// SingleHostName -export const singleHostName_port = self => self.port.bind(self)(); -export const singleHostName_dnsName = self => self.dns_name.bind(self)(); -export const singleHostName_new = port => dns_name => CSL.SingleHostName.new(port, dns_name); - -// StakeCredential -export const stakeCredential_fromKeyhash = hash => CSL.StakeCredential.from_keyhash(hash); -export const stakeCredential_fromScripthash = hash => CSL.StakeCredential.from_scripthash(hash); -export const stakeCredential_toKeyhash = self => self.to_keyhash.bind(self)(); -export const stakeCredential_toScripthash = self => self.to_scripthash.bind(self)(); -export const stakeCredential_kind = self => self.kind.bind(self)(); - -// StakeCredentials -export const stakeCredentials_new = () => CSL.StakeCredentials.new(); - -// StakeDelegation -export const stakeDelegation_stakeCredential = self => self.stake_credential.bind(self)(); -export const stakeDelegation_poolKeyhash = self => self.pool_keyhash.bind(self)(); -export const stakeDelegation_new = stake_credential => pool_keyhash => CSL.StakeDelegation.new(stake_credential, pool_keyhash); - -// StakeDeregistration -export const stakeDeregistration_stakeCredential = self => self.stake_credential.bind(self)(); -export const stakeDeregistration_new = stake_credential => CSL.StakeDeregistration.new(stake_credential); - -// StakeRegistration -export const stakeRegistration_stakeCredential = self => self.stake_credential.bind(self)(); -export const stakeRegistration_new = stake_credential => CSL.StakeRegistration.new(stake_credential); - -// TimelockExpiry -export const timelockExpiry_slot = self => self.slot.bind(self)(); -export const timelockExpiry_slotBignum = self => self.slot_bignum.bind(self)(); -export const timelockExpiry_new = slot => CSL.TimelockExpiry.new(slot); -export const timelockExpiry_newTimelockexpiry = slot => CSL.TimelockExpiry.new_timelockexpiry(slot); - -// TimelockStart -export const timelockStart_slot = self => self.slot.bind(self)(); -export const timelockStart_slotBignum = self => self.slot_bignum.bind(self)(); -export const timelockStart_new = slot => CSL.TimelockStart.new(slot); -export const timelockStart_newTimelockstart = slot => CSL.TimelockStart.new_timelockstart(slot); - -// Transaction -export const transaction_body = self => self.body.bind(self)(); -export const transaction_witnessSet = self => self.witness_set.bind(self)(); -export const transaction_isValid = self => self.is_valid.bind(self)(); -export const transaction_auxiliaryData = self => self.auxiliary_data.bind(self)(); -export const transaction_setIsValid = self => valid => () => self.set_is_valid.bind(self)(valid); -export const transaction_new = body => witness_set => auxiliary_data => CSL.Transaction.new(body, witness_set, auxiliary_data); - -// TransactionBatch - -// TransactionBatchList - -// TransactionBody -export const transactionBody_inputs = self => self.inputs.bind(self)(); -export const transactionBody_outputs = self => self.outputs.bind(self)(); -export const transactionBody_fee = self => self.fee.bind(self)(); -export const transactionBody_ttl = self => self.ttl.bind(self)(); -export const transactionBody_ttlBignum = self => self.ttl_bignum.bind(self)(); -export const transactionBody_setTtl = self => ttl => () => self.set_ttl.bind(self)(ttl); -export const transactionBody_removeTtl = self => errorableToPurs(self.remove_ttl.bind(self), ); -export const transactionBody_setCerts = self => certs => () => self.set_certs.bind(self)(certs); -export const transactionBody_certs = self => self.certs.bind(self)(); -export const transactionBody_setWithdrawals = self => withdrawals => () => self.set_withdrawals.bind(self)(withdrawals); -export const transactionBody_withdrawals = self => self.withdrawals.bind(self)(); -export const transactionBody_setUpdate = self => update => () => self.set_update.bind(self)(update); -export const transactionBody_update = self => self.update.bind(self)(); -export const transactionBody_setAuxiliaryDataHash = self => auxiliary_data_hash => () => self.set_auxiliary_data_hash.bind(self)(auxiliary_data_hash); -export const transactionBody_auxiliaryDataHash = self => self.auxiliary_data_hash.bind(self)(); -export const transactionBody_setValidityStartInterval = self => validity_start_interval => () => self.set_validity_start_interval.bind(self)(validity_start_interval); -export const transactionBody_setValidityStartIntervalBignum = self => validity_start_interval => () => self.set_validity_start_interval_bignum.bind(self)(validity_start_interval); -export const transactionBody_validityStartIntervalBignum = self => self.validity_start_interval_bignum.bind(self)(); -export const transactionBody_validityStartInterval = self => self.validity_start_interval.bind(self)(); -export const transactionBody_setMint = self => mint => () => self.set_mint.bind(self)(mint); -export const transactionBody_mint = self => self.mint.bind(self)(); -export const transactionBody_multiassets = self => self.multiassets.bind(self)(); -export const transactionBody_setReferenceInputs = self => reference_inputs => () => self.set_reference_inputs.bind(self)(reference_inputs); -export const transactionBody_referenceInputs = self => self.reference_inputs.bind(self)(); -export const transactionBody_setScriptDataHash = self => script_data_hash => () => self.set_script_data_hash.bind(self)(script_data_hash); -export const transactionBody_scriptDataHash = self => self.script_data_hash.bind(self)(); -export const transactionBody_setCollateral = self => collateral => () => self.set_collateral.bind(self)(collateral); -export const transactionBody_collateral = self => self.collateral.bind(self)(); -export const transactionBody_setRequiredSigners = self => required_signers => () => self.set_required_signers.bind(self)(required_signers); -export const transactionBody_requiredSigners = self => self.required_signers.bind(self)(); -export const transactionBody_setNetworkId = self => network_id => () => self.set_network_id.bind(self)(network_id); -export const transactionBody_networkId = self => self.network_id.bind(self)(); -export const transactionBody_setCollateralReturn = self => collateral_return => () => self.set_collateral_return.bind(self)(collateral_return); -export const transactionBody_collateralReturn = self => self.collateral_return.bind(self)(); -export const transactionBody_setTotalCollateral = self => total_collateral => () => self.set_total_collateral.bind(self)(total_collateral); -export const transactionBody_totalCollateral = self => self.total_collateral.bind(self)(); -export const transactionBody_new = inputs => outputs => fee => ttl => CSL.TransactionBody.new(inputs, outputs, fee, ttl); -export const transactionBody_newTxBody = inputs => outputs => fee => CSL.TransactionBody.new_tx_body(inputs, outputs, fee); - -// TransactionHash -export const transactionHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const transactionHash_fromBech32 = bech_str => errorableToPurs(CSL.TransactionHash.from_bech32, bech_str); - -// TransactionInput -export const transactionInput_transactionId = self => self.transaction_id.bind(self)(); -export const transactionInput_index = self => self.index.bind(self)(); -export const transactionInput_new = transaction_id => index => CSL.TransactionInput.new(transaction_id, index); - -// TransactionInputs -export const transactionInputs_new = () => CSL.TransactionInputs.new(); -export const transactionInputs_toOption = self => self.to_option.bind(self)(); - -// TransactionMetadatum -export const transactionMetadatum_newMap = map => CSL.TransactionMetadatum.new_map(map); -export const transactionMetadatum_newList = list => CSL.TransactionMetadatum.new_list(list); -export const transactionMetadatum_newInt = int => CSL.TransactionMetadatum.new_int(int); -export const transactionMetadatum_newBytes = bytes => CSL.TransactionMetadatum.new_bytes(bytes); -export const transactionMetadatum_newText = text => CSL.TransactionMetadatum.new_text(text); -export const transactionMetadatum_kind = self => self.kind.bind(self)(); -export const transactionMetadatum_asMap = self => errorableToPurs(self.as_map.bind(self), ); -export const transactionMetadatum_asList = self => errorableToPurs(self.as_list.bind(self), ); -export const transactionMetadatum_asInt = self => errorableToPurs(self.as_int.bind(self), ); -export const transactionMetadatum_asBytes = self => errorableToPurs(self.as_bytes.bind(self), ); -export const transactionMetadatum_asText = self => errorableToPurs(self.as_text.bind(self), ); - -// TransactionMetadatumLabels -export const transactionMetadatumLabels_new = () => CSL.TransactionMetadatumLabels.new(); - -// TransactionOutput -export const transactionOutput_address = self => self.address.bind(self)(); -export const transactionOutput_amount = self => self.amount.bind(self)(); -export const transactionOutput_dataHash = self => self.data_hash.bind(self)(); -export const transactionOutput_plutusData = self => self.plutus_data.bind(self)(); -export const transactionOutput_scriptRef = self => self.script_ref.bind(self)(); -export const transactionOutput_setScriptRef = self => script_ref => () => self.set_script_ref.bind(self)(script_ref); -export const transactionOutput_setPlutusData = self => data => () => self.set_plutus_data.bind(self)(data); -export const transactionOutput_setDataHash = self => data_hash => () => self.set_data_hash.bind(self)(data_hash); -export const transactionOutput_hasPlutusData = self => self.has_plutus_data.bind(self)(); -export const transactionOutput_hasDataHash = self => self.has_data_hash.bind(self)(); -export const transactionOutput_hasScriptRef = self => self.has_script_ref.bind(self)(); -export const transactionOutput_new = address => amount => CSL.TransactionOutput.new(address, amount); -export const transactionOutput_serializationFormat = self => self.serialization_format.bind(self)(); - -// TransactionOutputs -export const transactionOutputs_new = () => CSL.TransactionOutputs.new(); - -// TransactionUnspentOutput -export const transactionUnspentOutput_new = input => output => CSL.TransactionUnspentOutput.new(input, output); -export const transactionUnspentOutput_input = self => self.input.bind(self)(); -export const transactionUnspentOutput_output = self => self.output.bind(self)(); - -// TransactionUnspentOutputs -export const transactionUnspentOutputs_new = () => CSL.TransactionUnspentOutputs.new(); - -// TransactionWitnessSet -export const transactionWitnessSet_setVkeys = self => vkeys => () => self.set_vkeys.bind(self)(vkeys); -export const transactionWitnessSet_vkeys = self => () => self.vkeys.bind(self)(); -export const transactionWitnessSet_setNativeScripts = self => native_scripts => () => self.set_native_scripts.bind(self)(native_scripts); -export const transactionWitnessSet_nativeScripts = self => () => self.native_scripts.bind(self)(); -export const transactionWitnessSet_setBootstraps = self => bootstraps => () => self.set_bootstraps.bind(self)(bootstraps); -export const transactionWitnessSet_bootstraps = self => () => self.bootstraps.bind(self)(); -export const transactionWitnessSet_setPlutusScripts = self => plutus_scripts => () => self.set_plutus_scripts.bind(self)(plutus_scripts); -export const transactionWitnessSet_plutusScripts = self => () => self.plutus_scripts.bind(self)(); -export const transactionWitnessSet_setPlutusData = self => plutus_data => () => self.set_plutus_data.bind(self)(plutus_data); -export const transactionWitnessSet_plutusData = self => () => self.plutus_data.bind(self)(); -export const transactionWitnessSet_setRedeemers = self => redeemers => () => self.set_redeemers.bind(self)(redeemers); -export const transactionWitnessSet_redeemers = self => () => self.redeemers.bind(self)(); -export const transactionWitnessSet_new = () => CSL.TransactionWitnessSet.new(); - -// URL -export const url_new = url => CSL.URL.new(url); -export const url_url = self => self.url.bind(self)(); - -// UnitInterval -export const unitInterval_numerator = self => self.numerator.bind(self)(); -export const unitInterval_denominator = self => self.denominator.bind(self)(); -export const unitInterval_new = numerator => denominator => CSL.UnitInterval.new(numerator, denominator); - -// Update -export const update_proposedProtocolParameterUpdates = self => self.proposed_protocol_parameter_updates.bind(self)(); -export const update_epoch = self => self.epoch.bind(self)(); -export const update_new = proposed_protocol_parameter_updates => epoch => CSL.Update.new(proposed_protocol_parameter_updates, epoch); - -// VRFCert -export const vrfCert_output = self => self.output.bind(self)(); -export const vrfCert_proof = self => self.proof.bind(self)(); -export const vrfCert_new = output => proof => CSL.VRFCert.new(output, proof); - -// VRFKeyHash -export const vrfKeyHash_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const vrfKeyHash_fromBech32 = bech_str => errorableToPurs(CSL.VRFKeyHash.from_bech32, bech_str); - -// VRFVKey -export const vrfvKey_toBech32 = self => prefix => self.to_bech32.bind(self)(prefix); -export const vrfvKey_fromBech32 = bech_str => errorableToPurs(CSL.VRFVKey.from_bech32, bech_str); - -// Value -export const value_new = coin => CSL.Value.new(coin); -export const value_newFromAssets = multiasset => CSL.Value.new_from_assets(multiasset); -export const value_newWithAssets = coin => multiasset => CSL.Value.new_with_assets(coin, multiasset); -export const value_zero = CSL.Value.zero(); -export const value_isZero = self => self.is_zero.bind(self)(); -export const value_coin = self => self.coin.bind(self)(); -export const value_setCoin = self => coin => () => self.set_coin.bind(self)(coin); -export const value_multiasset = self => self.multiasset.bind(self)(); -export const value_setMultiasset = self => multiasset => () => self.set_multiasset.bind(self)(multiasset); -export const value_checkedAdd = self => rhs => errorableToPurs(self.checked_add.bind(self), rhs); -export const value_checkedSub = self => rhs_value => errorableToPurs(self.checked_sub.bind(self), rhs_value); -export const value_clampedSub = self => rhs_value => self.clamped_sub.bind(self)(rhs_value); -export const value_compare = self => rhs_value => self.compare.bind(self)(rhs_value); - -// Vkey -export const vkey_new = pk => CSL.Vkey.new(pk); -export const vkey_publicKey = self => self.public_key.bind(self)(); - -// Vkeys -export const vkeys_new = () => CSL.Vkeys.new(); - -// Vkeywitness -export const vkeywitness_new = vkey => signature => CSL.Vkeywitness.new(vkey, signature); -export const vkeywitness_vkey = self => self.vkey.bind(self)(); -export const vkeywitness_signature = self => self.signature.bind(self)(); - -// Vkeywitnesses -export const vkeywitnesses_new = () => CSL.Vkeywitnesses.new(); - -// Withdrawals -export const withdrawals_new = () => CSL.Withdrawals.new(); - - -export const hashTransaction = tx_body => CSL.hash_transaction(tx_body); -export const hashPlutusData = plutus_data => CSL.hash_plutus_data(plutus_data); -export const minAdaForOutput = output => data_cost => CSL.min_ada_for_output(output, data_cost); - diff --git a/src/Lib.purs b/src/Lib.purs deleted file mode 100644 index 132936504..000000000 --- a/src/Lib.purs +++ /dev/null @@ -1,3185 +0,0 @@ -module Cardano.Serialization.Lib - ( ForeignErrorable - , module X - , address_toBech32 - , address_fromBech32 - , address_networkId - , assetName_new - , assetName_name - , assetNames_new - , assets_new - , auxiliaryData_new - , auxiliaryData_metadata - , auxiliaryData_setMetadata - , auxiliaryData_nativeScripts - , auxiliaryData_setNativeScripts - , auxiliaryData_plutusScripts - , auxiliaryData_setPlutusScripts - , auxiliaryData_preferAlonzoFormat - , auxiliaryData_setPreferAlonzoFormat - , auxiliaryDataHash_toBech32 - , auxiliaryDataHash_fromBech32 - , baseAddress_new - , baseAddress_paymentCred - , baseAddress_stakeCred - , baseAddress_toAddress - , baseAddress_fromAddress - , bigInt_isZero - , bigInt_asU64 - , bigInt_asInt - , bigInt_fromStr - , bigInt_toStr - , bigInt_mul - , bigInt_one - , bigInt_increment - , bigInt_divCeil - , bigNum_fromStr - , bigNum_toStr - , bigNum_zero - , bigNum_one - , bigNum_isZero - , bigNum_divFloor - , bigNum_checkedMul - , bigNum_checkedAdd - , bigNum_checkedSub - , bigNum_clampedSub - , bigNum_compare - , bigNum_lessThan - , bigNum_maxValue - , bigNum_max - , bip32PrivateKey_derive - , bip32PrivateKey_from128Xprv - , bip32PrivateKey_to128Xprv - , bip32PrivateKey_generateEd25519Bip32 - , bip32PrivateKey_toRawKey - , bip32PrivateKey_toPublic - , bip32PrivateKey_asBytes - , bip32PrivateKey_fromBech32 - , bip32PrivateKey_toBech32 - , bip32PrivateKey_fromBip39Entropy - , bip32PrivateKey_chaincode - , bip32PublicKey_derive - , bip32PublicKey_toRawKey - , bip32PublicKey_asBytes - , bip32PublicKey_fromBech32 - , bip32PublicKey_toBech32 - , bip32PublicKey_chaincode - , blockHash_toBech32 - , blockHash_fromBech32 - , bootstrapWitness_vkey - , bootstrapWitness_signature - , bootstrapWitness_chainCode - , bootstrapWitness_attributes - , bootstrapWitness_new - , bootstrapWitnesses_new - , byronAddress_toBase58 - , byronAddress_byronProtocolMagic - , byronAddress_attributes - , byronAddress_networkId - , byronAddress_fromBase58 - , byronAddress_icarusFromKey - , byronAddress_isValid - , byronAddress_toAddress - , byronAddress_fromAddress - , certificate_newStakeRegistration - , certificate_newStakeDeregistration - , certificate_newStakeDelegation - , certificate_newPoolRegistration - , certificate_newPoolRetirement - , certificate_newGenesisKeyDelegation - , certificate_newMoveInstantaneousRewardsCert - , certificate_kind - , certificate_asStakeRegistration - , certificate_asStakeDeregistration - , certificate_asStakeDelegation - , certificate_asPoolRegistration - , certificate_asPoolRetirement - , certificate_asGenesisKeyDelegation - , certificate_asMoveInstantaneousRewardsCert - , certificates_new - , constrPlutusData_alternative - , constrPlutusData_data - , constrPlutusData_new - , costModel_free - , costModel_toBytes - , costModel_fromBytes - , costModel_toHex - , costModel_fromHex - , costModel_toJson - , costModel_fromJson - , costModel_new - , costModel_set - , costModel_get - , costModel_len - , costmdls_new - , costmdls_retainLanguageVersions - , dnsRecordAorAAAA_new - , dnsRecordAorAAAA_record - , dnsRecordSRV_new - , dnsRecordSRV_record - , dataCost_newCoinsPerWord - , dataCost_newCoinsPerByte - , dataCost_coinsPerByte - , dataHash_toBech32 - , dataHash_fromBech32 - , datumSource_new - , datumSource_newRefInput - , ed25519KeyHash_toBech32 - , ed25519KeyHash_fromBech32 - , ed25519KeyHashes_new - , ed25519KeyHashes_toOption - , ed25519Signature_toBech32 - , ed25519Signature_fromBech32 - , enterpriseAddress_new - , enterpriseAddress_paymentCred - , enterpriseAddress_toAddress - , enterpriseAddress_fromAddress - , exUnitPrices_memPrice - , exUnitPrices_stepPrice - , exUnitPrices_new - , exUnits_mem - , exUnits_steps - , exUnits_new - , generalTransactionMetadata_new - , genesisDelegateHash_toBech32 - , genesisDelegateHash_fromBech32 - , genesisHash_toBech32 - , genesisHash_fromBech32 - , genesisHashes_new - , genesisKeyDelegation_genesishash - , genesisKeyDelegation_genesisDelegateHash - , genesisKeyDelegation_vrfKeyhash - , genesisKeyDelegation_new - , inputWithScriptWitness_newWithNativeScriptWitness - , inputWithScriptWitness_newWithPlutusWitness - , inputWithScriptWitness_input - , inputsWithScriptWitness_new - , int_new - , int_newNegative - , int_newI32 - , int_isPositive - , int_asPositive - , int_asNegative - , int_asI32 - , int_asI32OrNothing - , int_asI32OrFail - , int_toStr - , int_fromStr - , ipv4_new - , ipv4_ip - , ipv6_new - , ipv6_ip - , kesvKey_toBech32 - , kesvKey_fromBech32 - , language_newPlutusV1 - , language_newPlutusV2 - , language_kind - , languages_new - , languages_list - , legacyDaedalusPrivateKey_asBytes - , legacyDaedalusPrivateKey_chaincode - , linearFee_constant - , linearFee_coefficient - , linearFee_new - , mirToStakeCredentials_new - , metadataList_new - , metadataMap_new - , metadataMap_insertStr - , metadataMap_insertI32 - , metadataMap_getStr - , metadataMap_getI32 - , metadataMap_has - , mint_new - , mint_newFromEntry - , mint_getAll - , mint_asPositiveMultiasset - , mint_asNegativeMultiasset - , mintAssets_new - , mintAssets_newFromEntry - , mintWitness_newNativeScript - , mintWitness_newPlutusScript - , moveInstantaneousReward_newToOtherPot - , moveInstantaneousReward_newToStakeCreds - , moveInstantaneousReward_pot - , moveInstantaneousReward_kind - , moveInstantaneousReward_asToOtherPot - , moveInstantaneousReward_asToStakeCreds - , moveInstantaneousRewardsCert_moveInstantaneousReward - , moveInstantaneousRewardsCert_new - , multiAsset_new - , multiAsset_setAsset - , multiAsset_getAsset - , multiAsset_sub - , multiHostName_dnsName - , multiHostName_new - , nativeScript_hash - , nativeScript_newScriptPubkey - , nativeScript_newScriptAll - , nativeScript_newScriptAny - , nativeScript_newScriptNOfK - , nativeScript_newTimelockStart - , nativeScript_newTimelockExpiry - , nativeScript_kind - , nativeScript_asScriptPubkey - , nativeScript_asScriptAll - , nativeScript_asScriptAny - , nativeScript_asScriptNOfK - , nativeScript_asTimelockStart - , nativeScript_asTimelockExpiry - , nativeScript_getRequiredSigners - , nativeScripts_new - , networkId_testnet - , networkId_mainnet - , networkId_kind - , networkInfo_new - , networkInfo_networkId - , networkInfo_protocolMagic - , networkInfo_testnetPreview - , networkInfo_testnetPreprod - , networkInfo_testnet - , networkInfo_mainnet - , nonce_newIdentity - , nonce_newFromHash - , nonce_getHash - , operationalCert_hotVkey - , operationalCert_sequenceNumber - , operationalCert_kesPeriod - , operationalCert_sigma - , operationalCert_new - , outputDatum_newDataHash - , outputDatum_newData - , outputDatum_dataHash - , outputDatum_data - , plutusData_newConstrPlutusData - , plutusData_newEmptyConstrPlutusData - , plutusData_newSingleValueConstrPlutusData - , plutusData_newMap - , plutusData_newList - , plutusData_newInteger - , plutusData_newBytes - , plutusData_kind - , plutusData_asConstrPlutusData - , plutusData_asMap - , plutusData_asList - , plutusData_asInteger - , plutusData_asBytes - , plutusData_fromAddress - , plutusList_new - , plutusMap_new - , plutusScript_new - , plutusScript_newV2 - , plutusScript_newWithVersion - , plutusScript_bytes - , plutusScript_fromBytesV2 - , plutusScript_fromBytesWithVersion - , plutusScript_fromHexWithVersion - , plutusScript_hash - , plutusScript_languageVersion - , plutusScriptSource_new - , plutusScriptSource_newRefInput - , plutusScriptSource_newRefInputWithLangVer - , plutusScripts_new - , plutusWitness_new - , plutusWitness_newWithRef - , plutusWitness_newWithoutDatum - , plutusWitness_newWithRefWithoutDatum - , plutusWitness_script - , plutusWitness_datum - , plutusWitness_redeemer - , plutusWitnesses_new - , pointer_new - , pointer_newPointer - , pointer_slot - , pointer_txIndex - , pointer_certIndex - , pointer_slotBignum - , pointer_txIndexBignum - , pointer_certIndexBignum - , pointerAddress_new - , pointerAddress_paymentCred - , pointerAddress_stakePointer - , pointerAddress_toAddress - , pointerAddress_fromAddress - , poolMetadata_url - , poolMetadata_poolMetadataHash - , poolMetadata_new - , poolMetadataHash_toBech32 - , poolMetadataHash_fromBech32 - , poolParams_operator - , poolParams_vrfKeyhash - , poolParams_pledge - , poolParams_cost - , poolParams_margin - , poolParams_rewardAccount - , poolParams_poolOwners - , poolParams_relays - , poolParams_poolMetadata - , poolParams_new - , poolRegistration_poolParams - , poolRegistration_new - , poolRetirement_poolKeyhash - , poolRetirement_epoch - , poolRetirement_new - , privateKey_free - , privateKey_toPublic - , privateKey_generateEd25519 - , privateKey_generateEd25519extended - , privateKey_fromBech32 - , privateKey_toBech32 - , privateKey_asBytes - , privateKey_fromExtendedBytes - , privateKey_fromNormalBytes - , privateKey_sign - , privateKey_toHex - , privateKey_fromHex - , proposedProtocolParameterUpdates_new - , protocolParamUpdate_setMinfeeA - , protocolParamUpdate_minfeeA - , protocolParamUpdate_setMinfeeB - , protocolParamUpdate_minfeeB - , protocolParamUpdate_setMaxBlockBodySize - , protocolParamUpdate_maxBlockBodySize - , protocolParamUpdate_setMaxTxSize - , protocolParamUpdate_maxTxSize - , protocolParamUpdate_setMaxBlockHeaderSize - , protocolParamUpdate_maxBlockHeaderSize - , protocolParamUpdate_setKeyDeposit - , protocolParamUpdate_keyDeposit - , protocolParamUpdate_setPoolDeposit - , protocolParamUpdate_poolDeposit - , protocolParamUpdate_setMaxEpoch - , protocolParamUpdate_maxEpoch - , protocolParamUpdate_setNOpt - , protocolParamUpdate_nOpt - , protocolParamUpdate_setPoolPledgeInfluence - , protocolParamUpdate_poolPledgeInfluence - , protocolParamUpdate_setExpansionRate - , protocolParamUpdate_expansionRate - , protocolParamUpdate_setTreasuryGrowthRate - , protocolParamUpdate_treasuryGrowthRate - , protocolParamUpdate_d - , protocolParamUpdate_extraEntropy - , protocolParamUpdate_setProtocolVersion - , protocolParamUpdate_protocolVersion - , protocolParamUpdate_setMinPoolCost - , protocolParamUpdate_minPoolCost - , protocolParamUpdate_setAdaPerUtxoByte - , protocolParamUpdate_adaPerUtxoByte - , protocolParamUpdate_setCostModels - , protocolParamUpdate_costModels - , protocolParamUpdate_setExecutionCosts - , protocolParamUpdate_executionCosts - , protocolParamUpdate_setMaxTxExUnits - , protocolParamUpdate_maxTxExUnits - , protocolParamUpdate_setMaxBlockExUnits - , protocolParamUpdate_maxBlockExUnits - , protocolParamUpdate_setMaxValueSize - , protocolParamUpdate_maxValueSize - , protocolParamUpdate_setCollateralPercentage - , protocolParamUpdate_collateralPercentage - , protocolParamUpdate_setMaxCollateralInputs - , protocolParamUpdate_maxCollateralInputs - , protocolParamUpdate_new - , protocolVersion_major - , protocolVersion_minor - , protocolVersion_new - , publicKey_free - , publicKey_fromBech32 - , publicKey_toBech32 - , publicKey_asBytes - , publicKey_fromBytes - , publicKey_verify - , publicKey_hash - , publicKey_toHex - , publicKey_fromHex - , redeemer_tag - , redeemer_index - , redeemer_data - , redeemer_exUnits - , redeemer_new - , redeemerTag_newSpend - , redeemerTag_newMint - , redeemerTag_newCert - , redeemerTag_newReward - , redeemerTag_kind - , redeemers_new - , redeemers_totalExUnits - , relay_newSingleHostAddr - , relay_newSingleHostName - , relay_newMultiHostName - , relay_kind - , relay_asSingleHostAddr - , relay_asSingleHostName - , relay_asMultiHostName - , relays_new - , rewardAddress_new - , rewardAddress_paymentCred - , rewardAddress_toAddress - , rewardAddress_fromAddress - , rewardAddresses_new - , scriptAll_nativeScripts - , scriptAll_new - , scriptAny_nativeScripts - , scriptAny_new - , scriptDataHash_toBech32 - , scriptDataHash_fromBech32 - , scriptHash_toBech32 - , scriptHash_fromBech32 - , scriptHashes_new - , scriptNOfK_n - , scriptNOfK_nativeScripts - , scriptNOfK_new - , scriptPubkey_addrKeyhash - , scriptPubkey_new - , scriptRef_newNativeScript - , scriptRef_newPlutusScript - , scriptRef_isNativeScript - , scriptRef_isPlutusScript - , scriptRef_nativeScript - , scriptRef_plutusScript - , singleHostAddr_port - , singleHostAddr_ipv4 - , singleHostAddr_ipv6 - , singleHostAddr_new - , singleHostName_port - , singleHostName_dnsName - , singleHostName_new - , stakeCredential_fromKeyhash - , stakeCredential_fromScripthash - , stakeCredential_toKeyhash - , stakeCredential_toScripthash - , stakeCredential_kind - , stakeCredentials_new - , stakeDelegation_stakeCredential - , stakeDelegation_poolKeyhash - , stakeDelegation_new - , stakeDeregistration_stakeCredential - , stakeDeregistration_new - , stakeRegistration_stakeCredential - , stakeRegistration_new - , timelockExpiry_slot - , timelockExpiry_slotBignum - , timelockExpiry_new - , timelockExpiry_newTimelockexpiry - , timelockStart_slot - , timelockStart_slotBignum - , timelockStart_new - , timelockStart_newTimelockstart - , transaction_body - , transaction_witnessSet - , transaction_isValid - , transaction_auxiliaryData - , transaction_setIsValid - , transaction_new - , transactionBody_inputs - , transactionBody_outputs - , transactionBody_fee - , transactionBody_ttl - , transactionBody_ttlBignum - , transactionBody_setTtl - , transactionBody_removeTtl - , transactionBody_setCerts - , transactionBody_certs - , transactionBody_setWithdrawals - , transactionBody_withdrawals - , transactionBody_setUpdate - , transactionBody_update - , transactionBody_setAuxiliaryDataHash - , transactionBody_auxiliaryDataHash - , transactionBody_setValidityStartInterval - , transactionBody_setValidityStartIntervalBignum - , transactionBody_validityStartIntervalBignum - , transactionBody_validityStartInterval - , transactionBody_setMint - , transactionBody_mint - , transactionBody_multiassets - , transactionBody_setReferenceInputs - , transactionBody_referenceInputs - , transactionBody_setScriptDataHash - , transactionBody_scriptDataHash - , transactionBody_setCollateral - , transactionBody_collateral - , transactionBody_setRequiredSigners - , transactionBody_requiredSigners - , transactionBody_setNetworkId - , transactionBody_networkId - , transactionBody_setCollateralReturn - , transactionBody_collateralReturn - , transactionBody_setTotalCollateral - , transactionBody_totalCollateral - , transactionBody_new - , transactionBody_newTxBody - , transactionHash_toBech32 - , transactionHash_fromBech32 - , transactionInput_transactionId - , transactionInput_index - , transactionInput_new - , transactionInputs_new - , transactionInputs_toOption - , transactionMetadatum_newMap - , transactionMetadatum_newList - , transactionMetadatum_newInt - , transactionMetadatum_newBytes - , transactionMetadatum_newText - , transactionMetadatum_kind - , transactionMetadatum_asMap - , transactionMetadatum_asList - , transactionMetadatum_asInt - , transactionMetadatum_asBytes - , transactionMetadatum_asText - , transactionMetadatumLabels_new - , transactionOutput_address - , transactionOutput_amount - , transactionOutput_dataHash - , transactionOutput_plutusData - , transactionOutput_scriptRef - , transactionOutput_setScriptRef - , transactionOutput_setPlutusData - , transactionOutput_setDataHash - , transactionOutput_hasPlutusData - , transactionOutput_hasDataHash - , transactionOutput_hasScriptRef - , transactionOutput_new - , transactionOutput_serializationFormat - , transactionOutputs_new - , transactionUnspentOutput_new - , transactionUnspentOutput_input - , transactionUnspentOutput_output - , transactionUnspentOutputs_new - , transactionWitnessSet_setVkeys - , transactionWitnessSet_vkeys - , transactionWitnessSet_setNativeScripts - , transactionWitnessSet_nativeScripts - , transactionWitnessSet_setBootstraps - , transactionWitnessSet_bootstraps - , transactionWitnessSet_setPlutusScripts - , transactionWitnessSet_plutusScripts - , transactionWitnessSet_setPlutusData - , transactionWitnessSet_plutusData - , transactionWitnessSet_setRedeemers - , transactionWitnessSet_redeemers - , transactionWitnessSet_new - , url_new - , url_url - , unitInterval_numerator - , unitInterval_denominator - , unitInterval_new - , update_proposedProtocolParameterUpdates - , update_epoch - , update_new - , vrfCert_output - , vrfCert_proof - , vrfCert_new - , vrfKeyHash_toBech32 - , vrfKeyHash_fromBech32 - , vrfvKey_toBech32 - , vrfvKey_fromBech32 - , value_new - , value_newFromAssets - , value_newWithAssets - , value_zero - , value_isZero - , value_coin - , value_setCoin - , value_multiasset - , value_setMultiasset - , value_checkedAdd - , value_checkedSub - , value_clampedSub - , value_compare - , vkey_new - , vkey_publicKey - , vkeys_new - , vkeywitness_new - , vkeywitness_vkey - , vkeywitness_signature - , vkeywitnesses_new - , withdrawals_new - , hashTransaction - , hashPlutusData - , minAdaForOutput - , Address - , AssetName - , AssetNames - , Assets - , AuxiliaryData - , AuxiliaryDataHash - , BaseAddress - , BigInt - , BigNum - , Bip32PrivateKey - , Bip32PublicKey - , BlockHash - , BootstrapWitness - , BootstrapWitnesses - , ByronAddress - , Certificate - , Certificates - , ConstrPlutusData - , CostModel - , Costmdls - , DNSRecordAorAAAA - , DNSRecordSRV - , DataCost - , DataHash - , DatumSource - , Ed25519KeyHash - , Ed25519KeyHashes - , Ed25519Signature - , EnterpriseAddress - , ExUnitPrices - , ExUnits - , GeneralTransactionMetadata - , GenesisDelegateHash - , GenesisHash - , GenesisHashes - , GenesisKeyDelegation - , InputWithScriptWitness - , InputsWithScriptWitness - , Int - , Ipv4 - , Ipv6 - , KESSignature - , KESVKey - , Language - , Languages - , LegacyDaedalusPrivateKey - , LinearFee - , MIRToStakeCredentials - , MetadataList - , MetadataMap - , Mint - , MintAssets - , MintWitness - , MintsAssets - , MoveInstantaneousReward - , MoveInstantaneousRewardsCert - , MultiAsset - , MultiHostName - , NativeScript - , NativeScripts - , NetworkId - , NetworkInfo - , Nonce - , OperationalCert - , OutputDatum - , PlutusData - , PlutusList - , PlutusMap - , PlutusScript - , PlutusScriptSource - , PlutusScripts - , PlutusWitness - , PlutusWitnesses - , Pointer - , PointerAddress - , PoolMetadata - , PoolMetadataHash - , PoolParams - , PoolRegistration - , PoolRetirement - , PrivateKey - , ProposedProtocolParameterUpdates - , ProtocolParamUpdate - , ProtocolVersion - , PublicKey - , Redeemer - , RedeemerTag - , Redeemers - , Relay - , Relays - , RewardAddress - , RewardAddresses - , ScriptAll - , ScriptAny - , ScriptDataHash - , ScriptHash - , ScriptHashes - , ScriptNOfK - , ScriptPubkey - , ScriptRef - , SingleHostAddr - , SingleHostName - , StakeCredential - , StakeCredentials - , StakeDelegation - , StakeDeregistration - , StakeRegistration - , TimelockExpiry - , TimelockStart - , Transaction - , TransactionBatch - , TransactionBatchList - , TransactionBody - , TransactionHash - , TransactionInput - , TransactionInputs - , TransactionMetadatum - , TransactionMetadatumLabels - , TransactionOutput - , TransactionOutputs - , TransactionUnspentOutput - , TransactionUnspentOutputs - , TransactionWitnessSet - , URL - , UnitInterval - , Update - , VRFCert - , VRFKeyHash - , VRFVKey - , Value - , Vkey - , Vkeys - , Vkeywitness - , Vkeywitnesses - , Withdrawals - ) where -import Prelude - -import Cardano.Serialization.Lib.Internal -import Cardano.Serialization.Lib.Internal - ( class IsBytes - , class IsCsl - , class IsJson - , toBytes - , fromBytes - , packListContainer - , packMapContainer - , packMapContainerFromMap - , unpackMapContainerToMapWith - , unpackMapContainer - , unpackListContainer - , cslFromAeson - , cslToAeson - , cslFromAesonViaBytes - , cslToAesonViaBytes - ) as X -import Effect -import Data.Nullable -import Aeson (Aeson, class DecodeAeson, encodeAeson, decodeAeson, class EncodeAeson, jsonToAeson, stringifyAeson) -import Data.ByteArray (ByteArray) -import Data.Argonaut (Json, JsonDecodeError(TypeMismatch), jsonParser) -import Data.Bifunctor (lmap) -import Data.Either (Either(Left, Right), note) -import Data.Map (Map) -import Data.Map as Map -import Data.Maybe (Maybe(Nothing, Just)) -import Data.Tuple (Tuple(Tuple)) -import Type.Proxy (Proxy(Proxy)) - --- Utils for type conversions -type ForeignErrorable a = - (String -> Either String a) -> (a -> Either String a) -> Either String a - -runForeignErrorable :: forall (a :: Type). ForeignErrorable a -> Either String a -runForeignErrorable f = f Left Right - -class IsStr a where - fromStr :: String -> Maybe a - toStr :: a -> String - - --- functions --- | Hash transaction --- > hashTransaction txBody -foreign import hashTransaction :: TransactionBody -> TransactionHash - --- | Hash plutus data --- > hashPlutusData plutusData -foreign import hashPlutusData :: PlutusData -> DataHash - --- | Min ada for output --- > minAdaForOutput output dataCost -foreign import minAdaForOutput :: TransactionOutput -> DataCost -> BigNum - - - --- classes - - -------------------------------------------------------------------------------------- --- Address - -foreign import data Address :: Type - -foreign import address_toBech32 :: Address -> String -> String -foreign import address_fromBech32 :: String -> Nullable Address -foreign import address_networkId :: Address -> Number - -instance IsCsl Address where - className _ = "Address" -instance IsBytes Address -instance IsJson Address -instance EncodeAeson Address where encodeAeson = cslToAeson -instance DecodeAeson Address where decodeAeson = cslFromAeson -instance Show Address where show = showViaJson - -------------------------------------------------------------------------------------- --- Asset name - -foreign import data AssetName :: Type - -foreign import assetName_new :: ByteArray -> AssetName -foreign import assetName_name :: AssetName -> ByteArray - -instance IsCsl AssetName where - className _ = "AssetName" -instance IsBytes AssetName -instance IsJson AssetName -instance EncodeAeson AssetName where encodeAeson = cslToAeson -instance DecodeAeson AssetName where decodeAeson = cslFromAeson -instance Show AssetName where show = showViaJson - -------------------------------------------------------------------------------------- --- Asset names - -foreign import data AssetNames :: Type - -foreign import assetNames_new :: Effect AssetNames - -instance IsCsl AssetNames where - className _ = "AssetNames" -instance IsBytes AssetNames -instance IsJson AssetNames -instance EncodeAeson AssetNames where encodeAeson = cslToAeson -instance DecodeAeson AssetNames where decodeAeson = cslFromAeson -instance Show AssetNames where show = showViaJson - -instance IsListContainer AssetNames AssetName - -------------------------------------------------------------------------------------- --- Assets - -foreign import data Assets :: Type - -foreign import assets_new :: Effect Assets - -instance IsCsl Assets where - className _ = "Assets" -instance IsBytes Assets -instance IsJson Assets -instance EncodeAeson Assets where encodeAeson = cslToAeson -instance DecodeAeson Assets where decodeAeson = cslFromAeson -instance Show Assets where show = showViaJson - -instance IsMapContainer Assets AssetName BigNum - -------------------------------------------------------------------------------------- --- Auxiliary data - -foreign import data AuxiliaryData :: Type - -foreign import auxiliaryData_new :: Effect AuxiliaryData -foreign import auxiliaryData_metadata :: AuxiliaryData -> Nullable GeneralTransactionMetadata -foreign import auxiliaryData_setMetadata :: AuxiliaryData -> GeneralTransactionMetadata -> Effect Unit -foreign import auxiliaryData_nativeScripts :: AuxiliaryData -> Nullable NativeScripts -foreign import auxiliaryData_setNativeScripts :: AuxiliaryData -> NativeScripts -> Effect Unit -foreign import auxiliaryData_plutusScripts :: AuxiliaryData -> Nullable PlutusScripts -foreign import auxiliaryData_setPlutusScripts :: AuxiliaryData -> PlutusScripts -> Effect Unit -foreign import auxiliaryData_preferAlonzoFormat :: AuxiliaryData -> Boolean -foreign import auxiliaryData_setPreferAlonzoFormat :: AuxiliaryData -> Boolean -> Effect Unit - -instance IsCsl AuxiliaryData where - className _ = "AuxiliaryData" -instance IsBytes AuxiliaryData -instance IsJson AuxiliaryData -instance EncodeAeson AuxiliaryData where encodeAeson = cslToAeson -instance DecodeAeson AuxiliaryData where decodeAeson = cslFromAeson -instance Show AuxiliaryData where show = showViaJson - -------------------------------------------------------------------------------------- --- Auxiliary data hash - -foreign import data AuxiliaryDataHash :: Type - -foreign import auxiliaryDataHash_toBech32 :: AuxiliaryDataHash -> String -> String -foreign import auxiliaryDataHash_fromBech32 :: String -> Nullable AuxiliaryDataHash - -instance IsCsl AuxiliaryDataHash where - className _ = "AuxiliaryDataHash" -instance IsBytes AuxiliaryDataHash -instance EncodeAeson AuxiliaryDataHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson AuxiliaryDataHash where decodeAeson = cslFromAesonViaBytes -instance Show AuxiliaryDataHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Base address - -foreign import data BaseAddress :: Type - -foreign import baseAddress_new :: Number -> StakeCredential -> StakeCredential -> BaseAddress -foreign import baseAddress_paymentCred :: BaseAddress -> StakeCredential -foreign import baseAddress_stakeCred :: BaseAddress -> StakeCredential -foreign import baseAddress_toAddress :: BaseAddress -> Address -foreign import baseAddress_fromAddress :: Address -> Nullable BaseAddress - -instance IsCsl BaseAddress where - className _ = "BaseAddress" - -------------------------------------------------------------------------------------- --- Big int - -foreign import data BigInt :: Type - -foreign import bigInt_isZero :: BigInt -> Boolean -foreign import bigInt_asU64 :: BigInt -> Nullable BigNum -foreign import bigInt_asInt :: BigInt -> Nullable Int -foreign import bigInt_fromStr :: String -> Nullable BigInt -foreign import bigInt_toStr :: BigInt -> String -foreign import bigInt_mul :: BigInt -> BigInt -> BigInt -foreign import bigInt_one :: BigInt -foreign import bigInt_increment :: BigInt -> BigInt -foreign import bigInt_divCeil :: BigInt -> BigInt -> BigInt - -instance IsCsl BigInt where - className _ = "BigInt" -instance IsBytes BigInt -instance IsJson BigInt -instance EncodeAeson BigInt where encodeAeson = cslToAeson -instance DecodeAeson BigInt where decodeAeson = cslFromAeson -instance Show BigInt where show = showViaJson - -------------------------------------------------------------------------------------- --- Big num - -foreign import data BigNum :: Type - -foreign import bigNum_fromStr :: String -> Nullable BigNum -foreign import bigNum_toStr :: BigNum -> String -foreign import bigNum_zero :: BigNum -foreign import bigNum_one :: BigNum -foreign import bigNum_isZero :: BigNum -> Boolean -foreign import bigNum_divFloor :: BigNum -> BigNum -> BigNum -foreign import bigNum_checkedMul :: BigNum -> BigNum -> Nullable BigNum -foreign import bigNum_checkedAdd :: BigNum -> BigNum -> Nullable BigNum -foreign import bigNum_checkedSub :: BigNum -> BigNum -> Nullable BigNum -foreign import bigNum_clampedSub :: BigNum -> BigNum -> BigNum -foreign import bigNum_compare :: BigNum -> BigNum -> Number -foreign import bigNum_lessThan :: BigNum -> BigNum -> Boolean -foreign import bigNum_maxValue :: BigNum -foreign import bigNum_max :: BigNum -> BigNum -> BigNum - -instance IsCsl BigNum where - className _ = "BigNum" -instance IsBytes BigNum -instance IsJson BigNum -instance EncodeAeson BigNum where encodeAeson = cslToAeson -instance DecodeAeson BigNum where decodeAeson = cslFromAeson -instance Show BigNum where show = showViaJson - -------------------------------------------------------------------------------------- --- Bip32 private key - -foreign import data Bip32PrivateKey :: Type - -foreign import bip32PrivateKey_derive :: Bip32PrivateKey -> Number -> Bip32PrivateKey -foreign import bip32PrivateKey_from128Xprv :: ByteArray -> Bip32PrivateKey -foreign import bip32PrivateKey_to128Xprv :: Bip32PrivateKey -> ByteArray -foreign import bip32PrivateKey_generateEd25519Bip32 :: Bip32PrivateKey -foreign import bip32PrivateKey_toRawKey :: Bip32PrivateKey -> PrivateKey -foreign import bip32PrivateKey_toPublic :: Bip32PrivateKey -> Bip32PublicKey -foreign import bip32PrivateKey_asBytes :: Bip32PrivateKey -> ByteArray -foreign import bip32PrivateKey_fromBech32 :: String -> Nullable Bip32PrivateKey -foreign import bip32PrivateKey_toBech32 :: Bip32PrivateKey -> String -foreign import bip32PrivateKey_fromBip39Entropy :: ByteArray -> ByteArray -> Bip32PrivateKey -foreign import bip32PrivateKey_chaincode :: Bip32PrivateKey -> ByteArray - -instance IsCsl Bip32PrivateKey where - className _ = "Bip32PrivateKey" - -------------------------------------------------------------------------------------- --- Bip32 public key - -foreign import data Bip32PublicKey :: Type - -foreign import bip32PublicKey_derive :: Bip32PublicKey -> Number -> Bip32PublicKey -foreign import bip32PublicKey_toRawKey :: Bip32PublicKey -> PublicKey -foreign import bip32PublicKey_asBytes :: Bip32PublicKey -> ByteArray -foreign import bip32PublicKey_fromBech32 :: String -> Nullable Bip32PublicKey -foreign import bip32PublicKey_toBech32 :: Bip32PublicKey -> String -foreign import bip32PublicKey_chaincode :: Bip32PublicKey -> ByteArray - -instance IsCsl Bip32PublicKey where - className _ = "Bip32PublicKey" - -------------------------------------------------------------------------------------- --- Block hash - -foreign import data BlockHash :: Type - -foreign import blockHash_toBech32 :: BlockHash -> String -> String -foreign import blockHash_fromBech32 :: String -> Nullable BlockHash - -instance IsCsl BlockHash where - className _ = "BlockHash" -instance IsBytes BlockHash -instance EncodeAeson BlockHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson BlockHash where decodeAeson = cslFromAesonViaBytes -instance Show BlockHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Bootstrap witness - -foreign import data BootstrapWitness :: Type - -foreign import bootstrapWitness_vkey :: BootstrapWitness -> Vkey -foreign import bootstrapWitness_signature :: BootstrapWitness -> Ed25519Signature -foreign import bootstrapWitness_chainCode :: BootstrapWitness -> ByteArray -foreign import bootstrapWitness_attributes :: BootstrapWitness -> ByteArray -foreign import bootstrapWitness_new :: Vkey -> Ed25519Signature -> ByteArray -> ByteArray -> BootstrapWitness - -instance IsCsl BootstrapWitness where - className _ = "BootstrapWitness" -instance IsBytes BootstrapWitness -instance IsJson BootstrapWitness -instance EncodeAeson BootstrapWitness where encodeAeson = cslToAeson -instance DecodeAeson BootstrapWitness where decodeAeson = cslFromAeson -instance Show BootstrapWitness where show = showViaJson - -------------------------------------------------------------------------------------- --- Bootstrap witnesses - -foreign import data BootstrapWitnesses :: Type - -foreign import bootstrapWitnesses_new :: Effect BootstrapWitnesses - -instance IsCsl BootstrapWitnesses where - className _ = "BootstrapWitnesses" - -instance IsListContainer BootstrapWitnesses BootstrapWitness - -------------------------------------------------------------------------------------- --- Byron address - -foreign import data ByronAddress :: Type - -foreign import byronAddress_toBase58 :: ByronAddress -> String -foreign import byronAddress_byronProtocolMagic :: ByronAddress -> Number -foreign import byronAddress_attributes :: ByronAddress -> ByteArray -foreign import byronAddress_networkId :: ByronAddress -> Number -foreign import byronAddress_fromBase58 :: String -> Nullable ByronAddress -foreign import byronAddress_icarusFromKey :: Bip32PublicKey -> Number -> ByronAddress -foreign import byronAddress_isValid :: String -> Boolean -foreign import byronAddress_toAddress :: ByronAddress -> Address -foreign import byronAddress_fromAddress :: Address -> Nullable ByronAddress - -instance IsCsl ByronAddress where - className _ = "ByronAddress" -instance IsBytes ByronAddress -instance EncodeAeson ByronAddress where encodeAeson = cslToAesonViaBytes -instance DecodeAeson ByronAddress where decodeAeson = cslFromAesonViaBytes -instance Show ByronAddress where show = showViaBytes - -------------------------------------------------------------------------------------- --- Certificate - -foreign import data Certificate :: Type - -foreign import certificate_newStakeRegistration :: StakeRegistration -> Certificate -foreign import certificate_newStakeDeregistration :: StakeDeregistration -> Certificate -foreign import certificate_newStakeDelegation :: StakeDelegation -> Certificate -foreign import certificate_newPoolRegistration :: PoolRegistration -> Certificate -foreign import certificate_newPoolRetirement :: PoolRetirement -> Certificate -foreign import certificate_newGenesisKeyDelegation :: GenesisKeyDelegation -> Certificate -foreign import certificate_newMoveInstantaneousRewardsCert :: MoveInstantaneousRewardsCert -> Certificate -foreign import certificate_kind :: Certificate -> Number -foreign import certificate_asStakeRegistration :: Certificate -> Nullable StakeRegistration -foreign import certificate_asStakeDeregistration :: Certificate -> Nullable StakeDeregistration -foreign import certificate_asStakeDelegation :: Certificate -> Nullable StakeDelegation -foreign import certificate_asPoolRegistration :: Certificate -> Nullable PoolRegistration -foreign import certificate_asPoolRetirement :: Certificate -> Nullable PoolRetirement -foreign import certificate_asGenesisKeyDelegation :: Certificate -> Nullable GenesisKeyDelegation -foreign import certificate_asMoveInstantaneousRewardsCert :: Certificate -> Nullable MoveInstantaneousRewardsCert - -instance IsCsl Certificate where - className _ = "Certificate" -instance IsBytes Certificate -instance IsJson Certificate -instance EncodeAeson Certificate where encodeAeson = cslToAeson -instance DecodeAeson Certificate where decodeAeson = cslFromAeson -instance Show Certificate where show = showViaJson - -------------------------------------------------------------------------------------- --- Certificates - -foreign import data Certificates :: Type - -foreign import certificates_new :: Effect Certificates - -instance IsCsl Certificates where - className _ = "Certificates" -instance IsBytes Certificates -instance IsJson Certificates -instance EncodeAeson Certificates where encodeAeson = cslToAeson -instance DecodeAeson Certificates where decodeAeson = cslFromAeson -instance Show Certificates where show = showViaJson - -instance IsListContainer Certificates Certificate - -------------------------------------------------------------------------------------- --- Constr plutus data - -foreign import data ConstrPlutusData :: Type - -foreign import constrPlutusData_alternative :: ConstrPlutusData -> BigNum -foreign import constrPlutusData_data :: ConstrPlutusData -> PlutusList -foreign import constrPlutusData_new :: BigNum -> PlutusList -> ConstrPlutusData - -instance IsCsl ConstrPlutusData where - className _ = "ConstrPlutusData" -instance IsBytes ConstrPlutusData -instance EncodeAeson ConstrPlutusData where encodeAeson = cslToAesonViaBytes -instance DecodeAeson ConstrPlutusData where decodeAeson = cslFromAesonViaBytes -instance Show ConstrPlutusData where show = showViaBytes - -------------------------------------------------------------------------------------- --- Cost model - -foreign import data CostModel :: Type - -foreign import costModel_free :: CostModel -> Nullable Unit -foreign import costModel_toBytes :: CostModel -> ByteArray -foreign import costModel_fromBytes :: ByteArray -> Nullable CostModel -foreign import costModel_toHex :: CostModel -> String -foreign import costModel_fromHex :: String -> Nullable CostModel -foreign import costModel_toJson :: CostModel -> String -foreign import costModel_fromJson :: String -> Nullable CostModel -foreign import costModel_new :: Effect CostModel -foreign import costModel_set :: CostModel -> Number -> Int -> Effect Int -foreign import costModel_get :: CostModel -> Number -> Effect Int -foreign import costModel_len :: CostModel -> Effect Number - -instance IsCsl CostModel where - className _ = "CostModel" -instance IsBytes CostModel -instance IsJson CostModel -instance EncodeAeson CostModel where encodeAeson = cslToAeson -instance DecodeAeson CostModel where decodeAeson = cslFromAeson -instance Show CostModel where show = showViaJson - -------------------------------------------------------------------------------------- --- Costmdls - -foreign import data Costmdls :: Type - -foreign import costmdls_new :: Effect Costmdls -foreign import costmdls_retainLanguageVersions :: Costmdls -> Languages -> Costmdls - -instance IsCsl Costmdls where - className _ = "Costmdls" -instance IsBytes Costmdls -instance IsJson Costmdls -instance EncodeAeson Costmdls where encodeAeson = cslToAeson -instance DecodeAeson Costmdls where decodeAeson = cslFromAeson -instance Show Costmdls where show = showViaJson - -instance IsMapContainer Costmdls Language CostModel - -------------------------------------------------------------------------------------- --- DNSRecord aor aaaa - -foreign import data DNSRecordAorAAAA :: Type - -foreign import dnsRecordAorAAAA_new :: String -> DNSRecordAorAAAA -foreign import dnsRecordAorAAAA_record :: DNSRecordAorAAAA -> String - -instance IsCsl DNSRecordAorAAAA where - className _ = "DNSRecordAorAAAA" -instance IsBytes DNSRecordAorAAAA -instance IsJson DNSRecordAorAAAA -instance EncodeAeson DNSRecordAorAAAA where encodeAeson = cslToAeson -instance DecodeAeson DNSRecordAorAAAA where decodeAeson = cslFromAeson -instance Show DNSRecordAorAAAA where show = showViaJson - -------------------------------------------------------------------------------------- --- DNSRecord srv - -foreign import data DNSRecordSRV :: Type - -foreign import dnsRecordSRV_new :: String -> DNSRecordSRV -foreign import dnsRecordSRV_record :: DNSRecordSRV -> String - -instance IsCsl DNSRecordSRV where - className _ = "DNSRecordSRV" -instance IsBytes DNSRecordSRV -instance IsJson DNSRecordSRV -instance EncodeAeson DNSRecordSRV where encodeAeson = cslToAeson -instance DecodeAeson DNSRecordSRV where decodeAeson = cslFromAeson -instance Show DNSRecordSRV where show = showViaJson - -------------------------------------------------------------------------------------- --- Data cost - -foreign import data DataCost :: Type - -foreign import dataCost_newCoinsPerWord :: BigNum -> DataCost -foreign import dataCost_newCoinsPerByte :: BigNum -> DataCost -foreign import dataCost_coinsPerByte :: DataCost -> BigNum - -instance IsCsl DataCost where - className _ = "DataCost" - -------------------------------------------------------------------------------------- --- Data hash - -foreign import data DataHash :: Type - -foreign import dataHash_toBech32 :: DataHash -> String -> String -foreign import dataHash_fromBech32 :: String -> Nullable DataHash - -instance IsCsl DataHash where - className _ = "DataHash" -instance IsBytes DataHash -instance EncodeAeson DataHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson DataHash where decodeAeson = cslFromAesonViaBytes -instance Show DataHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Datum source - -foreign import data DatumSource :: Type - -foreign import datumSource_new :: PlutusData -> DatumSource -foreign import datumSource_newRefInput :: TransactionInput -> DatumSource - -instance IsCsl DatumSource where - className _ = "DatumSource" - -------------------------------------------------------------------------------------- --- Ed25519 key hash - -foreign import data Ed25519KeyHash :: Type - -foreign import ed25519KeyHash_toBech32 :: Ed25519KeyHash -> String -> String -foreign import ed25519KeyHash_fromBech32 :: String -> Nullable Ed25519KeyHash - -instance IsCsl Ed25519KeyHash where - className _ = "Ed25519KeyHash" -instance IsBytes Ed25519KeyHash -instance EncodeAeson Ed25519KeyHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson Ed25519KeyHash where decodeAeson = cslFromAesonViaBytes -instance Show Ed25519KeyHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Ed25519 key hashes - -foreign import data Ed25519KeyHashes :: Type - -foreign import ed25519KeyHashes_new :: Ed25519KeyHashes -foreign import ed25519KeyHashes_toOption :: Ed25519KeyHashes -> Nullable Ed25519KeyHashes - -instance IsCsl Ed25519KeyHashes where - className _ = "Ed25519KeyHashes" -instance IsBytes Ed25519KeyHashes -instance IsJson Ed25519KeyHashes -instance EncodeAeson Ed25519KeyHashes where encodeAeson = cslToAeson -instance DecodeAeson Ed25519KeyHashes where decodeAeson = cslFromAeson -instance Show Ed25519KeyHashes where show = showViaJson - -instance IsListContainer Ed25519KeyHashes Ed25519KeyHash - -------------------------------------------------------------------------------------- --- Ed25519 signature - -foreign import data Ed25519Signature :: Type - -foreign import ed25519Signature_toBech32 :: Ed25519Signature -> String -foreign import ed25519Signature_fromBech32 :: String -> Nullable Ed25519Signature - -instance IsCsl Ed25519Signature where - className _ = "Ed25519Signature" -instance IsBytes Ed25519Signature -instance EncodeAeson Ed25519Signature where encodeAeson = cslToAesonViaBytes -instance DecodeAeson Ed25519Signature where decodeAeson = cslFromAesonViaBytes -instance Show Ed25519Signature where show = showViaBytes - -------------------------------------------------------------------------------------- --- Enterprise address - -foreign import data EnterpriseAddress :: Type - -foreign import enterpriseAddress_new :: Number -> StakeCredential -> EnterpriseAddress -foreign import enterpriseAddress_paymentCred :: EnterpriseAddress -> StakeCredential -foreign import enterpriseAddress_toAddress :: EnterpriseAddress -> Address -foreign import enterpriseAddress_fromAddress :: Address -> Nullable EnterpriseAddress - -instance IsCsl EnterpriseAddress where - className _ = "EnterpriseAddress" - -------------------------------------------------------------------------------------- --- Ex unit prices - -foreign import data ExUnitPrices :: Type - -foreign import exUnitPrices_memPrice :: ExUnitPrices -> UnitInterval -foreign import exUnitPrices_stepPrice :: ExUnitPrices -> UnitInterval -foreign import exUnitPrices_new :: UnitInterval -> UnitInterval -> ExUnitPrices - -instance IsCsl ExUnitPrices where - className _ = "ExUnitPrices" -instance IsBytes ExUnitPrices -instance IsJson ExUnitPrices -instance EncodeAeson ExUnitPrices where encodeAeson = cslToAeson -instance DecodeAeson ExUnitPrices where decodeAeson = cslFromAeson -instance Show ExUnitPrices where show = showViaJson - -------------------------------------------------------------------------------------- --- Ex units - -foreign import data ExUnits :: Type - -foreign import exUnits_mem :: ExUnits -> BigNum -foreign import exUnits_steps :: ExUnits -> BigNum -foreign import exUnits_new :: BigNum -> BigNum -> ExUnits - -instance IsCsl ExUnits where - className _ = "ExUnits" -instance IsBytes ExUnits -instance IsJson ExUnits -instance EncodeAeson ExUnits where encodeAeson = cslToAeson -instance DecodeAeson ExUnits where decodeAeson = cslFromAeson -instance Show ExUnits where show = showViaJson - -------------------------------------------------------------------------------------- --- General transaction metadata - -foreign import data GeneralTransactionMetadata :: Type - -foreign import generalTransactionMetadata_new :: Effect GeneralTransactionMetadata - -instance IsCsl GeneralTransactionMetadata where - className _ = "GeneralTransactionMetadata" -instance IsBytes GeneralTransactionMetadata -instance IsJson GeneralTransactionMetadata -instance EncodeAeson GeneralTransactionMetadata where encodeAeson = cslToAeson -instance DecodeAeson GeneralTransactionMetadata where decodeAeson = cslFromAeson -instance Show GeneralTransactionMetadata where show = showViaJson - -instance IsMapContainer GeneralTransactionMetadata BigNum TransactionMetadatum - -------------------------------------------------------------------------------------- --- Genesis delegate hash - -foreign import data GenesisDelegateHash :: Type - -foreign import genesisDelegateHash_toBech32 :: GenesisDelegateHash -> String -> String -foreign import genesisDelegateHash_fromBech32 :: String -> Nullable GenesisDelegateHash - -instance IsCsl GenesisDelegateHash where - className _ = "GenesisDelegateHash" -instance IsBytes GenesisDelegateHash -instance EncodeAeson GenesisDelegateHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson GenesisDelegateHash where decodeAeson = cslFromAesonViaBytes -instance Show GenesisDelegateHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Genesis hash - -foreign import data GenesisHash :: Type - -foreign import genesisHash_toBech32 :: GenesisHash -> String -> String -foreign import genesisHash_fromBech32 :: String -> Nullable GenesisHash - -instance IsCsl GenesisHash where - className _ = "GenesisHash" -instance IsBytes GenesisHash -instance EncodeAeson GenesisHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson GenesisHash where decodeAeson = cslFromAesonViaBytes -instance Show GenesisHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Genesis hashes - -foreign import data GenesisHashes :: Type - -foreign import genesisHashes_new :: Effect GenesisHashes - -instance IsCsl GenesisHashes where - className _ = "GenesisHashes" -instance IsBytes GenesisHashes -instance IsJson GenesisHashes -instance EncodeAeson GenesisHashes where encodeAeson = cslToAeson -instance DecodeAeson GenesisHashes where decodeAeson = cslFromAeson -instance Show GenesisHashes where show = showViaJson - -instance IsListContainer GenesisHashes GenesisHash - -------------------------------------------------------------------------------------- --- Genesis key delegation - -foreign import data GenesisKeyDelegation :: Type - -foreign import genesisKeyDelegation_genesishash :: GenesisKeyDelegation -> GenesisHash -foreign import genesisKeyDelegation_genesisDelegateHash :: GenesisKeyDelegation -> GenesisDelegateHash -foreign import genesisKeyDelegation_vrfKeyhash :: GenesisKeyDelegation -> VRFKeyHash -foreign import genesisKeyDelegation_new :: GenesisHash -> GenesisDelegateHash -> VRFKeyHash -> GenesisKeyDelegation - -instance IsCsl GenesisKeyDelegation where - className _ = "GenesisKeyDelegation" -instance IsBytes GenesisKeyDelegation -instance IsJson GenesisKeyDelegation -instance EncodeAeson GenesisKeyDelegation where encodeAeson = cslToAeson -instance DecodeAeson GenesisKeyDelegation where decodeAeson = cslFromAeson -instance Show GenesisKeyDelegation where show = showViaJson - -------------------------------------------------------------------------------------- --- Input with script witness - -foreign import data InputWithScriptWitness :: Type - -foreign import inputWithScriptWitness_newWithNativeScriptWitness :: TransactionInput -> NativeScript -> InputWithScriptWitness -foreign import inputWithScriptWitness_newWithPlutusWitness :: TransactionInput -> PlutusWitness -> InputWithScriptWitness -foreign import inputWithScriptWitness_input :: InputWithScriptWitness -> TransactionInput - -instance IsCsl InputWithScriptWitness where - className _ = "InputWithScriptWitness" - -------------------------------------------------------------------------------------- --- Inputs with script witness - -foreign import data InputsWithScriptWitness :: Type - -foreign import inputsWithScriptWitness_new :: InputsWithScriptWitness - -instance IsCsl InputsWithScriptWitness where - className _ = "InputsWithScriptWitness" - -instance IsListContainer InputsWithScriptWitness InputWithScriptWitness - -------------------------------------------------------------------------------------- --- Int - -foreign import data Int :: Type - -foreign import int_new :: BigNum -> Int -foreign import int_newNegative :: BigNum -> Int -foreign import int_newI32 :: Number -> Int -foreign import int_isPositive :: Int -> Boolean -foreign import int_asPositive :: Int -> Nullable BigNum -foreign import int_asNegative :: Int -> Nullable BigNum -foreign import int_asI32 :: Int -> Nullable Number -foreign import int_asI32OrNothing :: Int -> Nullable Number -foreign import int_asI32OrFail :: Int -> Number -foreign import int_toStr :: Int -> String -foreign import int_fromStr :: String -> Nullable Int - -instance IsCsl Int where - className _ = "Int" -instance IsBytes Int -instance IsJson Int -instance EncodeAeson Int where encodeAeson = cslToAeson -instance DecodeAeson Int where decodeAeson = cslFromAeson -instance Show Int where show = showViaJson - -------------------------------------------------------------------------------------- --- Ipv4 - -foreign import data Ipv4 :: Type - -foreign import ipv4_new :: ByteArray -> Ipv4 -foreign import ipv4_ip :: Ipv4 -> ByteArray - -instance IsCsl Ipv4 where - className _ = "Ipv4" -instance IsBytes Ipv4 -instance IsJson Ipv4 -instance EncodeAeson Ipv4 where encodeAeson = cslToAeson -instance DecodeAeson Ipv4 where decodeAeson = cslFromAeson -instance Show Ipv4 where show = showViaJson - -------------------------------------------------------------------------------------- --- Ipv6 - -foreign import data Ipv6 :: Type - -foreign import ipv6_new :: ByteArray -> Ipv6 -foreign import ipv6_ip :: Ipv6 -> ByteArray - -instance IsCsl Ipv6 where - className _ = "Ipv6" -instance IsBytes Ipv6 -instance IsJson Ipv6 -instance EncodeAeson Ipv6 where encodeAeson = cslToAeson -instance DecodeAeson Ipv6 where decodeAeson = cslFromAeson -instance Show Ipv6 where show = showViaJson - -------------------------------------------------------------------------------------- --- KESSignature - -foreign import data KESSignature :: Type - - - -instance IsCsl KESSignature where - className _ = "KESSignature" -instance IsBytes KESSignature -instance EncodeAeson KESSignature where encodeAeson = cslToAesonViaBytes -instance DecodeAeson KESSignature where decodeAeson = cslFromAesonViaBytes -instance Show KESSignature where show = showViaBytes - -------------------------------------------------------------------------------------- --- KESVKey - -foreign import data KESVKey :: Type - -foreign import kesvKey_toBech32 :: KESVKey -> String -> String -foreign import kesvKey_fromBech32 :: String -> Nullable KESVKey - -instance IsCsl KESVKey where - className _ = "KESVKey" -instance IsBytes KESVKey -instance EncodeAeson KESVKey where encodeAeson = cslToAesonViaBytes -instance DecodeAeson KESVKey where decodeAeson = cslFromAesonViaBytes -instance Show KESVKey where show = showViaBytes - -------------------------------------------------------------------------------------- --- Language - -foreign import data Language :: Type - -foreign import language_newPlutusV1 :: Language -foreign import language_newPlutusV2 :: Language -foreign import language_kind :: Language -> Number - -instance IsCsl Language where - className _ = "Language" -instance IsBytes Language -instance IsJson Language -instance EncodeAeson Language where encodeAeson = cslToAeson -instance DecodeAeson Language where decodeAeson = cslFromAeson -instance Show Language where show = showViaJson - -------------------------------------------------------------------------------------- --- Languages - -foreign import data Languages :: Type - -foreign import languages_new :: Effect Languages -foreign import languages_list :: Languages - -instance IsCsl Languages where - className _ = "Languages" - -instance IsListContainer Languages Language - -------------------------------------------------------------------------------------- --- Legacy daedalus private key - -foreign import data LegacyDaedalusPrivateKey :: Type - -foreign import legacyDaedalusPrivateKey_asBytes :: LegacyDaedalusPrivateKey -> ByteArray -foreign import legacyDaedalusPrivateKey_chaincode :: LegacyDaedalusPrivateKey -> ByteArray - -instance IsCsl LegacyDaedalusPrivateKey where - className _ = "LegacyDaedalusPrivateKey" - -------------------------------------------------------------------------------------- --- Linear fee - -foreign import data LinearFee :: Type - -foreign import linearFee_constant :: LinearFee -> BigNum -foreign import linearFee_coefficient :: LinearFee -> BigNum -foreign import linearFee_new :: BigNum -> BigNum -> LinearFee - -instance IsCsl LinearFee where - className _ = "LinearFee" - -------------------------------------------------------------------------------------- --- MIRTo stake credentials - -foreign import data MIRToStakeCredentials :: Type - -foreign import mirToStakeCredentials_new :: Effect MIRToStakeCredentials - -instance IsCsl MIRToStakeCredentials where - className _ = "MIRToStakeCredentials" -instance IsBytes MIRToStakeCredentials -instance IsJson MIRToStakeCredentials -instance EncodeAeson MIRToStakeCredentials where encodeAeson = cslToAeson -instance DecodeAeson MIRToStakeCredentials where decodeAeson = cslFromAeson -instance Show MIRToStakeCredentials where show = showViaJson - -instance IsMapContainer MIRToStakeCredentials StakeCredential Int - -------------------------------------------------------------------------------------- --- Metadata list - -foreign import data MetadataList :: Type - -foreign import metadataList_new :: Effect MetadataList - -instance IsCsl MetadataList where - className _ = "MetadataList" -instance IsBytes MetadataList -instance EncodeAeson MetadataList where encodeAeson = cslToAesonViaBytes -instance DecodeAeson MetadataList where decodeAeson = cslFromAesonViaBytes -instance Show MetadataList where show = showViaBytes - -instance IsListContainer MetadataList TransactionMetadatum - -------------------------------------------------------------------------------------- --- Metadata map - -foreign import data MetadataMap :: Type - -foreign import metadataMap_new :: Effect MetadataMap -foreign import metadataMap_insertStr :: MetadataMap -> String -> TransactionMetadatum -> Effect ((Nullable TransactionMetadatum)) -foreign import metadataMap_insertI32 :: MetadataMap -> Number -> TransactionMetadatum -> Effect ((Nullable TransactionMetadatum)) -foreign import metadataMap_getStr :: MetadataMap -> String -> Effect TransactionMetadatum -foreign import metadataMap_getI32 :: MetadataMap -> Number -> Effect TransactionMetadatum -foreign import metadataMap_has :: MetadataMap -> TransactionMetadatum -> Effect Boolean - -instance IsCsl MetadataMap where - className _ = "MetadataMap" -instance IsBytes MetadataMap -instance EncodeAeson MetadataMap where encodeAeson = cslToAesonViaBytes -instance DecodeAeson MetadataMap where decodeAeson = cslFromAesonViaBytes -instance Show MetadataMap where show = showViaBytes - -instance IsMapContainer MetadataMap TransactionMetadatum TransactionMetadatum - -------------------------------------------------------------------------------------- --- Mint - -foreign import data Mint :: Type - -foreign import mint_new :: Effect Mint -foreign import mint_newFromEntry :: ScriptHash -> MintAssets -> Effect Mint -foreign import mint_getAll :: Mint -> ScriptHash -> Nullable MintsAssets -foreign import mint_asPositiveMultiasset :: Mint -> Effect MultiAsset -foreign import mint_asNegativeMultiasset :: Mint -> Effect MultiAsset - -instance IsCsl Mint where - className _ = "Mint" -instance IsBytes Mint -instance IsJson Mint -instance EncodeAeson Mint where encodeAeson = cslToAeson -instance DecodeAeson Mint where decodeAeson = cslFromAeson -instance Show Mint where show = showViaJson - -instance IsMapContainer Mint ScriptHash MintAssets - -------------------------------------------------------------------------------------- --- Mint assets - -foreign import data MintAssets :: Type - -foreign import mintAssets_new :: Effect MintAssets -foreign import mintAssets_newFromEntry :: AssetName -> Int -> MintAssets - -instance IsCsl MintAssets where - className _ = "MintAssets" - -instance IsMapContainer MintAssets AssetName Int - -------------------------------------------------------------------------------------- --- Mint witness - -foreign import data MintWitness :: Type - -foreign import mintWitness_newNativeScript :: NativeScript -> MintWitness -foreign import mintWitness_newPlutusScript :: PlutusScriptSource -> Redeemer -> MintWitness - -instance IsCsl MintWitness where - className _ = "MintWitness" - -------------------------------------------------------------------------------------- --- Mints assets - -foreign import data MintsAssets :: Type - - - -instance IsCsl MintsAssets where - className _ = "MintsAssets" - -------------------------------------------------------------------------------------- --- Move instantaneous reward - -foreign import data MoveInstantaneousReward :: Type - -foreign import moveInstantaneousReward_newToOtherPot :: Number -> BigNum -> MoveInstantaneousReward -foreign import moveInstantaneousReward_newToStakeCreds :: Number -> MIRToStakeCredentials -> MoveInstantaneousReward -foreign import moveInstantaneousReward_pot :: MoveInstantaneousReward -> Number -foreign import moveInstantaneousReward_kind :: MoveInstantaneousReward -> Number -foreign import moveInstantaneousReward_asToOtherPot :: MoveInstantaneousReward -> Nullable BigNum -foreign import moveInstantaneousReward_asToStakeCreds :: MoveInstantaneousReward -> Nullable MIRToStakeCredentials - -instance IsCsl MoveInstantaneousReward where - className _ = "MoveInstantaneousReward" -instance IsBytes MoveInstantaneousReward -instance IsJson MoveInstantaneousReward -instance EncodeAeson MoveInstantaneousReward where encodeAeson = cslToAeson -instance DecodeAeson MoveInstantaneousReward where decodeAeson = cslFromAeson -instance Show MoveInstantaneousReward where show = showViaJson - -------------------------------------------------------------------------------------- --- Move instantaneous rewards cert - -foreign import data MoveInstantaneousRewardsCert :: Type - -foreign import moveInstantaneousRewardsCert_moveInstantaneousReward :: MoveInstantaneousRewardsCert -> MoveInstantaneousReward -foreign import moveInstantaneousRewardsCert_new :: MoveInstantaneousReward -> MoveInstantaneousRewardsCert - -instance IsCsl MoveInstantaneousRewardsCert where - className _ = "MoveInstantaneousRewardsCert" -instance IsBytes MoveInstantaneousRewardsCert -instance IsJson MoveInstantaneousRewardsCert -instance EncodeAeson MoveInstantaneousRewardsCert where encodeAeson = cslToAeson -instance DecodeAeson MoveInstantaneousRewardsCert where decodeAeson = cslFromAeson -instance Show MoveInstantaneousRewardsCert where show = showViaJson - -------------------------------------------------------------------------------------- --- Multi asset - -foreign import data MultiAsset :: Type - -foreign import multiAsset_new :: Effect MultiAsset -foreign import multiAsset_setAsset :: MultiAsset -> ScriptHash -> AssetName -> BigNum -> Effect ((Nullable BigNum)) -foreign import multiAsset_getAsset :: MultiAsset -> ScriptHash -> AssetName -> Effect BigNum -foreign import multiAsset_sub :: MultiAsset -> MultiAsset -> Effect MultiAsset - -instance IsCsl MultiAsset where - className _ = "MultiAsset" -instance IsBytes MultiAsset -instance IsJson MultiAsset -instance EncodeAeson MultiAsset where encodeAeson = cslToAeson -instance DecodeAeson MultiAsset where decodeAeson = cslFromAeson -instance Show MultiAsset where show = showViaJson - -instance IsMapContainer MultiAsset ScriptHash Assets - -------------------------------------------------------------------------------------- --- Multi host name - -foreign import data MultiHostName :: Type - -foreign import multiHostName_dnsName :: MultiHostName -> DNSRecordSRV -foreign import multiHostName_new :: DNSRecordSRV -> MultiHostName - -instance IsCsl MultiHostName where - className _ = "MultiHostName" -instance IsBytes MultiHostName -instance IsJson MultiHostName -instance EncodeAeson MultiHostName where encodeAeson = cslToAeson -instance DecodeAeson MultiHostName where decodeAeson = cslFromAeson -instance Show MultiHostName where show = showViaJson - -------------------------------------------------------------------------------------- --- Native script - -foreign import data NativeScript :: Type - -foreign import nativeScript_hash :: NativeScript -> ScriptHash -foreign import nativeScript_newScriptPubkey :: ScriptPubkey -> NativeScript -foreign import nativeScript_newScriptAll :: ScriptAll -> NativeScript -foreign import nativeScript_newScriptAny :: ScriptAny -> NativeScript -foreign import nativeScript_newScriptNOfK :: ScriptNOfK -> NativeScript -foreign import nativeScript_newTimelockStart :: TimelockStart -> NativeScript -foreign import nativeScript_newTimelockExpiry :: TimelockExpiry -> NativeScript -foreign import nativeScript_kind :: NativeScript -> Number -foreign import nativeScript_asScriptPubkey :: NativeScript -> Nullable ScriptPubkey -foreign import nativeScript_asScriptAll :: NativeScript -> Nullable ScriptAll -foreign import nativeScript_asScriptAny :: NativeScript -> Nullable ScriptAny -foreign import nativeScript_asScriptNOfK :: NativeScript -> Nullable ScriptNOfK -foreign import nativeScript_asTimelockStart :: NativeScript -> Nullable TimelockStart -foreign import nativeScript_asTimelockExpiry :: NativeScript -> Nullable TimelockExpiry -foreign import nativeScript_getRequiredSigners :: NativeScript -> Ed25519KeyHashes - -instance IsCsl NativeScript where - className _ = "NativeScript" -instance IsBytes NativeScript -instance IsJson NativeScript -instance EncodeAeson NativeScript where encodeAeson = cslToAeson -instance DecodeAeson NativeScript where decodeAeson = cslFromAeson -instance Show NativeScript where show = showViaJson - -------------------------------------------------------------------------------------- --- Native scripts - -foreign import data NativeScripts :: Type - -foreign import nativeScripts_new :: Effect NativeScripts - -instance IsCsl NativeScripts where - className _ = "NativeScripts" - -instance IsListContainer NativeScripts NativeScript - -------------------------------------------------------------------------------------- --- Network id - -foreign import data NetworkId :: Type - -foreign import networkId_testnet :: NetworkId -foreign import networkId_mainnet :: NetworkId -foreign import networkId_kind :: NetworkId -> Number - -instance IsCsl NetworkId where - className _ = "NetworkId" -instance IsBytes NetworkId -instance IsJson NetworkId -instance EncodeAeson NetworkId where encodeAeson = cslToAeson -instance DecodeAeson NetworkId where decodeAeson = cslFromAeson -instance Show NetworkId where show = showViaJson - -------------------------------------------------------------------------------------- --- Network info - -foreign import data NetworkInfo :: Type - -foreign import networkInfo_new :: Number -> Number -> NetworkInfo -foreign import networkInfo_networkId :: NetworkInfo -> Number -foreign import networkInfo_protocolMagic :: NetworkInfo -> Number -foreign import networkInfo_testnetPreview :: NetworkInfo -foreign import networkInfo_testnetPreprod :: NetworkInfo -foreign import networkInfo_testnet :: NetworkInfo -foreign import networkInfo_mainnet :: NetworkInfo - -instance IsCsl NetworkInfo where - className _ = "NetworkInfo" - -------------------------------------------------------------------------------------- --- Nonce - -foreign import data Nonce :: Type - -foreign import nonce_newIdentity :: Nonce -foreign import nonce_newFromHash :: ByteArray -> Nonce -foreign import nonce_getHash :: Nonce -> Nullable ByteArray - -instance IsCsl Nonce where - className _ = "Nonce" -instance IsBytes Nonce -instance IsJson Nonce -instance EncodeAeson Nonce where encodeAeson = cslToAeson -instance DecodeAeson Nonce where decodeAeson = cslFromAeson -instance Show Nonce where show = showViaJson - -------------------------------------------------------------------------------------- --- Operational cert - -foreign import data OperationalCert :: Type - -foreign import operationalCert_hotVkey :: OperationalCert -> KESVKey -foreign import operationalCert_sequenceNumber :: OperationalCert -> Number -foreign import operationalCert_kesPeriod :: OperationalCert -> Number -foreign import operationalCert_sigma :: OperationalCert -> Ed25519Signature -foreign import operationalCert_new :: KESVKey -> Number -> Number -> Ed25519Signature -> OperationalCert - -instance IsCsl OperationalCert where - className _ = "OperationalCert" -instance IsBytes OperationalCert -instance IsJson OperationalCert -instance EncodeAeson OperationalCert where encodeAeson = cslToAeson -instance DecodeAeson OperationalCert where decodeAeson = cslFromAeson -instance Show OperationalCert where show = showViaJson - -------------------------------------------------------------------------------------- --- Output datum - -foreign import data OutputDatum :: Type - -foreign import outputDatum_newDataHash :: DataHash -> OutputDatum -foreign import outputDatum_newData :: PlutusData -> OutputDatum -foreign import outputDatum_dataHash :: OutputDatum -> Nullable DataHash -foreign import outputDatum_data :: OutputDatum -> Nullable PlutusData - -instance IsCsl OutputDatum where - className _ = "OutputDatum" - -------------------------------------------------------------------------------------- --- Plutus data - -foreign import data PlutusData :: Type - -foreign import plutusData_newConstrPlutusData :: ConstrPlutusData -> PlutusData -foreign import plutusData_newEmptyConstrPlutusData :: BigNum -> PlutusData -foreign import plutusData_newSingleValueConstrPlutusData :: BigNum -> PlutusData -> PlutusData -foreign import plutusData_newMap :: PlutusMap -> PlutusData -foreign import plutusData_newList :: PlutusList -> PlutusData -foreign import plutusData_newInteger :: BigInt -> PlutusData -foreign import plutusData_newBytes :: ByteArray -> PlutusData -foreign import plutusData_kind :: PlutusData -> Number -foreign import plutusData_asConstrPlutusData :: PlutusData -> Nullable ConstrPlutusData -foreign import plutusData_asMap :: PlutusData -> Nullable PlutusMap -foreign import plutusData_asList :: PlutusData -> Nullable PlutusList -foreign import plutusData_asInteger :: PlutusData -> Nullable BigInt -foreign import plutusData_asBytes :: PlutusData -> Nullable ByteArray -foreign import plutusData_fromAddress :: Address -> PlutusData - -instance IsCsl PlutusData where - className _ = "PlutusData" -instance IsBytes PlutusData -instance IsJson PlutusData -instance EncodeAeson PlutusData where encodeAeson = cslToAeson -instance DecodeAeson PlutusData where decodeAeson = cslFromAeson -instance Show PlutusData where show = showViaJson - -------------------------------------------------------------------------------------- --- Plutus list - -foreign import data PlutusList :: Type - -foreign import plutusList_new :: Effect PlutusList - -instance IsCsl PlutusList where - className _ = "PlutusList" -instance IsBytes PlutusList -instance EncodeAeson PlutusList where encodeAeson = cslToAesonViaBytes -instance DecodeAeson PlutusList where decodeAeson = cslFromAesonViaBytes -instance Show PlutusList where show = showViaBytes - -instance IsListContainer PlutusList PlutusData - -------------------------------------------------------------------------------------- --- Plutus map - -foreign import data PlutusMap :: Type - -foreign import plutusMap_new :: Effect PlutusMap - -instance IsCsl PlutusMap where - className _ = "PlutusMap" -instance IsBytes PlutusMap -instance EncodeAeson PlutusMap where encodeAeson = cslToAesonViaBytes -instance DecodeAeson PlutusMap where decodeAeson = cslFromAesonViaBytes -instance Show PlutusMap where show = showViaBytes - -instance IsMapContainer PlutusMap PlutusData PlutusData - -------------------------------------------------------------------------------------- --- Plutus script - -foreign import data PlutusScript :: Type - -foreign import plutusScript_new :: ByteArray -> PlutusScript -foreign import plutusScript_newV2 :: ByteArray -> PlutusScript -foreign import plutusScript_newWithVersion :: ByteArray -> Language -> PlutusScript -foreign import plutusScript_bytes :: PlutusScript -> ByteArray -foreign import plutusScript_fromBytesV2 :: ByteArray -> PlutusScript -foreign import plutusScript_fromBytesWithVersion :: ByteArray -> Language -> PlutusScript -foreign import plutusScript_fromHexWithVersion :: String -> Language -> PlutusScript -foreign import plutusScript_hash :: PlutusScript -> ScriptHash -foreign import plutusScript_languageVersion :: PlutusScript -> Language - -instance IsCsl PlutusScript where - className _ = "PlutusScript" -instance IsBytes PlutusScript -instance EncodeAeson PlutusScript where encodeAeson = cslToAesonViaBytes -instance DecodeAeson PlutusScript where decodeAeson = cslFromAesonViaBytes -instance Show PlutusScript where show = showViaBytes - -------------------------------------------------------------------------------------- --- Plutus script source - -foreign import data PlutusScriptSource :: Type - -foreign import plutusScriptSource_new :: PlutusScript -> PlutusScriptSource -foreign import plutusScriptSource_newRefInput :: ScriptHash -> TransactionInput -> PlutusScriptSource -foreign import plutusScriptSource_newRefInputWithLangVer :: ScriptHash -> TransactionInput -> Language -> PlutusScriptSource - -instance IsCsl PlutusScriptSource where - className _ = "PlutusScriptSource" - -------------------------------------------------------------------------------------- --- Plutus scripts - -foreign import data PlutusScripts :: Type - -foreign import plutusScripts_new :: Effect PlutusScripts - -instance IsCsl PlutusScripts where - className _ = "PlutusScripts" -instance IsBytes PlutusScripts -instance IsJson PlutusScripts -instance EncodeAeson PlutusScripts where encodeAeson = cslToAeson -instance DecodeAeson PlutusScripts where decodeAeson = cslFromAeson -instance Show PlutusScripts where show = showViaJson - -instance IsListContainer PlutusScripts PlutusScript - -------------------------------------------------------------------------------------- --- Plutus witness - -foreign import data PlutusWitness :: Type - -foreign import plutusWitness_new :: PlutusScript -> PlutusData -> Redeemer -> PlutusWitness -foreign import plutusWitness_newWithRef :: PlutusScriptSource -> DatumSource -> Redeemer -> PlutusWitness -foreign import plutusWitness_newWithoutDatum :: PlutusScript -> Redeemer -> PlutusWitness -foreign import plutusWitness_newWithRefWithoutDatum :: PlutusScriptSource -> Redeemer -> PlutusWitness -foreign import plutusWitness_script :: PlutusWitness -> Nullable PlutusScript -foreign import plutusWitness_datum :: PlutusWitness -> Nullable PlutusData -foreign import plutusWitness_redeemer :: PlutusWitness -> Redeemer - -instance IsCsl PlutusWitness where - className _ = "PlutusWitness" - -------------------------------------------------------------------------------------- --- Plutus witnesses - -foreign import data PlutusWitnesses :: Type - -foreign import plutusWitnesses_new :: Effect PlutusWitnesses - -instance IsCsl PlutusWitnesses where - className _ = "PlutusWitnesses" - -instance IsListContainer PlutusWitnesses PlutusWitness - -------------------------------------------------------------------------------------- --- Pointer - -foreign import data Pointer :: Type - -foreign import pointer_new :: Number -> Number -> Number -> Pointer -foreign import pointer_newPointer :: BigNum -> BigNum -> BigNum -> Pointer -foreign import pointer_slot :: Pointer -> Number -foreign import pointer_txIndex :: Pointer -> Number -foreign import pointer_certIndex :: Pointer -> Number -foreign import pointer_slotBignum :: Pointer -> BigNum -foreign import pointer_txIndexBignum :: Pointer -> BigNum -foreign import pointer_certIndexBignum :: Pointer -> BigNum - -instance IsCsl Pointer where - className _ = "Pointer" - -------------------------------------------------------------------------------------- --- Pointer address - -foreign import data PointerAddress :: Type - -foreign import pointerAddress_new :: Number -> StakeCredential -> Pointer -> PointerAddress -foreign import pointerAddress_paymentCred :: PointerAddress -> StakeCredential -foreign import pointerAddress_stakePointer :: PointerAddress -> Pointer -foreign import pointerAddress_toAddress :: PointerAddress -> Address -foreign import pointerAddress_fromAddress :: Address -> Nullable PointerAddress - -instance IsCsl PointerAddress where - className _ = "PointerAddress" - -------------------------------------------------------------------------------------- --- Pool metadata - -foreign import data PoolMetadata :: Type - -foreign import poolMetadata_url :: PoolMetadata -> URL -foreign import poolMetadata_poolMetadataHash :: PoolMetadata -> PoolMetadataHash -foreign import poolMetadata_new :: URL -> PoolMetadataHash -> PoolMetadata - -instance IsCsl PoolMetadata where - className _ = "PoolMetadata" -instance IsBytes PoolMetadata -instance IsJson PoolMetadata -instance EncodeAeson PoolMetadata where encodeAeson = cslToAeson -instance DecodeAeson PoolMetadata where decodeAeson = cslFromAeson -instance Show PoolMetadata where show = showViaJson - -------------------------------------------------------------------------------------- --- Pool metadata hash - -foreign import data PoolMetadataHash :: Type - -foreign import poolMetadataHash_toBech32 :: PoolMetadataHash -> String -> String -foreign import poolMetadataHash_fromBech32 :: String -> Nullable PoolMetadataHash - -instance IsCsl PoolMetadataHash where - className _ = "PoolMetadataHash" -instance IsBytes PoolMetadataHash -instance EncodeAeson PoolMetadataHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson PoolMetadataHash where decodeAeson = cslFromAesonViaBytes -instance Show PoolMetadataHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Pool params - -foreign import data PoolParams :: Type - -foreign import poolParams_operator :: PoolParams -> Ed25519KeyHash -foreign import poolParams_vrfKeyhash :: PoolParams -> VRFKeyHash -foreign import poolParams_pledge :: PoolParams -> BigNum -foreign import poolParams_cost :: PoolParams -> BigNum -foreign import poolParams_margin :: PoolParams -> UnitInterval -foreign import poolParams_rewardAccount :: PoolParams -> RewardAddress -foreign import poolParams_poolOwners :: PoolParams -> Ed25519KeyHashes -foreign import poolParams_relays :: PoolParams -> Relays -foreign import poolParams_poolMetadata :: PoolParams -> Nullable PoolMetadata -foreign import poolParams_new :: Ed25519KeyHash -> VRFKeyHash -> BigNum -> BigNum -> UnitInterval -> RewardAddress -> Ed25519KeyHashes -> Relays -> PoolMetadata -> PoolParams - -instance IsCsl PoolParams where - className _ = "PoolParams" -instance IsBytes PoolParams -instance IsJson PoolParams -instance EncodeAeson PoolParams where encodeAeson = cslToAeson -instance DecodeAeson PoolParams where decodeAeson = cslFromAeson -instance Show PoolParams where show = showViaJson - -------------------------------------------------------------------------------------- --- Pool registration - -foreign import data PoolRegistration :: Type - -foreign import poolRegistration_poolParams :: PoolRegistration -> PoolParams -foreign import poolRegistration_new :: PoolParams -> PoolRegistration - -instance IsCsl PoolRegistration where - className _ = "PoolRegistration" -instance IsBytes PoolRegistration -instance IsJson PoolRegistration -instance EncodeAeson PoolRegistration where encodeAeson = cslToAeson -instance DecodeAeson PoolRegistration where decodeAeson = cslFromAeson -instance Show PoolRegistration where show = showViaJson - -------------------------------------------------------------------------------------- --- Pool retirement - -foreign import data PoolRetirement :: Type - -foreign import poolRetirement_poolKeyhash :: PoolRetirement -> Ed25519KeyHash -foreign import poolRetirement_epoch :: PoolRetirement -> Number -foreign import poolRetirement_new :: Ed25519KeyHash -> Number -> PoolRetirement - -instance IsCsl PoolRetirement where - className _ = "PoolRetirement" -instance IsBytes PoolRetirement -instance IsJson PoolRetirement -instance EncodeAeson PoolRetirement where encodeAeson = cslToAeson -instance DecodeAeson PoolRetirement where decodeAeson = cslFromAeson -instance Show PoolRetirement where show = showViaJson - -------------------------------------------------------------------------------------- --- Private key - -foreign import data PrivateKey :: Type - -foreign import privateKey_free :: PrivateKey -> Nullable Unit -foreign import privateKey_toPublic :: PrivateKey -> PublicKey -foreign import privateKey_generateEd25519 :: PrivateKey -foreign import privateKey_generateEd25519extended :: PrivateKey -foreign import privateKey_fromBech32 :: String -> Nullable PrivateKey -foreign import privateKey_toBech32 :: PrivateKey -> String -foreign import privateKey_asBytes :: PrivateKey -> ByteArray -foreign import privateKey_fromExtendedBytes :: ByteArray -> Nullable PrivateKey -foreign import privateKey_fromNormalBytes :: ByteArray -> Nullable PrivateKey -foreign import privateKey_sign :: PrivateKey -> ByteArray -> Ed25519Signature -foreign import privateKey_toHex :: PrivateKey -> String -foreign import privateKey_fromHex :: String -> Nullable PrivateKey - -instance IsCsl PrivateKey where - className _ = "PrivateKey" - -------------------------------------------------------------------------------------- --- Proposed protocol parameter updates - -foreign import data ProposedProtocolParameterUpdates :: Type - -foreign import proposedProtocolParameterUpdates_new :: Effect ProposedProtocolParameterUpdates - -instance IsCsl ProposedProtocolParameterUpdates where - className _ = "ProposedProtocolParameterUpdates" -instance IsBytes ProposedProtocolParameterUpdates -instance IsJson ProposedProtocolParameterUpdates -instance EncodeAeson ProposedProtocolParameterUpdates where encodeAeson = cslToAeson -instance DecodeAeson ProposedProtocolParameterUpdates where decodeAeson = cslFromAeson -instance Show ProposedProtocolParameterUpdates where show = showViaJson - -instance IsMapContainer ProposedProtocolParameterUpdates GenesisHash ProtocolParamUpdate - -------------------------------------------------------------------------------------- --- Protocol param update - -foreign import data ProtocolParamUpdate :: Type - -foreign import protocolParamUpdate_setMinfeeA :: ProtocolParamUpdate -> BigNum -> Effect Unit -foreign import protocolParamUpdate_minfeeA :: ProtocolParamUpdate -> Nullable BigNum -foreign import protocolParamUpdate_setMinfeeB :: ProtocolParamUpdate -> BigNum -> Effect Unit -foreign import protocolParamUpdate_minfeeB :: ProtocolParamUpdate -> Nullable BigNum -foreign import protocolParamUpdate_setMaxBlockBodySize :: ProtocolParamUpdate -> Number -> Effect Unit -foreign import protocolParamUpdate_maxBlockBodySize :: ProtocolParamUpdate -> Nullable Number -foreign import protocolParamUpdate_setMaxTxSize :: ProtocolParamUpdate -> Number -> Effect Unit -foreign import protocolParamUpdate_maxTxSize :: ProtocolParamUpdate -> Nullable Number -foreign import protocolParamUpdate_setMaxBlockHeaderSize :: ProtocolParamUpdate -> Number -> Effect Unit -foreign import protocolParamUpdate_maxBlockHeaderSize :: ProtocolParamUpdate -> Nullable Number -foreign import protocolParamUpdate_setKeyDeposit :: ProtocolParamUpdate -> BigNum -> Effect Unit -foreign import protocolParamUpdate_keyDeposit :: ProtocolParamUpdate -> Nullable BigNum -foreign import protocolParamUpdate_setPoolDeposit :: ProtocolParamUpdate -> BigNum -> Effect Unit -foreign import protocolParamUpdate_poolDeposit :: ProtocolParamUpdate -> Nullable BigNum -foreign import protocolParamUpdate_setMaxEpoch :: ProtocolParamUpdate -> Number -> Effect Unit -foreign import protocolParamUpdate_maxEpoch :: ProtocolParamUpdate -> Nullable Number -foreign import protocolParamUpdate_setNOpt :: ProtocolParamUpdate -> Number -> Effect Unit -foreign import protocolParamUpdate_nOpt :: ProtocolParamUpdate -> Nullable Number -foreign import protocolParamUpdate_setPoolPledgeInfluence :: ProtocolParamUpdate -> UnitInterval -> Effect Unit -foreign import protocolParamUpdate_poolPledgeInfluence :: ProtocolParamUpdate -> Nullable UnitInterval -foreign import protocolParamUpdate_setExpansionRate :: ProtocolParamUpdate -> UnitInterval -> Effect Unit -foreign import protocolParamUpdate_expansionRate :: ProtocolParamUpdate -> Nullable UnitInterval -foreign import protocolParamUpdate_setTreasuryGrowthRate :: ProtocolParamUpdate -> UnitInterval -> Effect Unit -foreign import protocolParamUpdate_treasuryGrowthRate :: ProtocolParamUpdate -> Nullable UnitInterval -foreign import protocolParamUpdate_d :: ProtocolParamUpdate -> Nullable UnitInterval -foreign import protocolParamUpdate_extraEntropy :: ProtocolParamUpdate -> Nullable Nonce -foreign import protocolParamUpdate_setProtocolVersion :: ProtocolParamUpdate -> ProtocolVersion -> Effect Unit -foreign import protocolParamUpdate_protocolVersion :: ProtocolParamUpdate -> Nullable ProtocolVersion -foreign import protocolParamUpdate_setMinPoolCost :: ProtocolParamUpdate -> BigNum -> Effect Unit -foreign import protocolParamUpdate_minPoolCost :: ProtocolParamUpdate -> Nullable BigNum -foreign import protocolParamUpdate_setAdaPerUtxoByte :: ProtocolParamUpdate -> BigNum -> Effect Unit -foreign import protocolParamUpdate_adaPerUtxoByte :: ProtocolParamUpdate -> Nullable BigNum -foreign import protocolParamUpdate_setCostModels :: ProtocolParamUpdate -> Costmdls -> Effect Unit -foreign import protocolParamUpdate_costModels :: ProtocolParamUpdate -> Nullable Costmdls -foreign import protocolParamUpdate_setExecutionCosts :: ProtocolParamUpdate -> ExUnitPrices -> Effect Unit -foreign import protocolParamUpdate_executionCosts :: ProtocolParamUpdate -> Nullable ExUnitPrices -foreign import protocolParamUpdate_setMaxTxExUnits :: ProtocolParamUpdate -> ExUnits -> Effect Unit -foreign import protocolParamUpdate_maxTxExUnits :: ProtocolParamUpdate -> Nullable ExUnits -foreign import protocolParamUpdate_setMaxBlockExUnits :: ProtocolParamUpdate -> ExUnits -> Effect Unit -foreign import protocolParamUpdate_maxBlockExUnits :: ProtocolParamUpdate -> Nullable ExUnits -foreign import protocolParamUpdate_setMaxValueSize :: ProtocolParamUpdate -> Number -> Effect Unit -foreign import protocolParamUpdate_maxValueSize :: ProtocolParamUpdate -> Nullable Number -foreign import protocolParamUpdate_setCollateralPercentage :: ProtocolParamUpdate -> Number -> Effect Unit -foreign import protocolParamUpdate_collateralPercentage :: ProtocolParamUpdate -> Nullable Number -foreign import protocolParamUpdate_setMaxCollateralInputs :: ProtocolParamUpdate -> Number -> Effect Unit -foreign import protocolParamUpdate_maxCollateralInputs :: ProtocolParamUpdate -> Nullable Number -foreign import protocolParamUpdate_new :: ProtocolParamUpdate - -instance IsCsl ProtocolParamUpdate where - className _ = "ProtocolParamUpdate" -instance IsBytes ProtocolParamUpdate -instance IsJson ProtocolParamUpdate -instance EncodeAeson ProtocolParamUpdate where encodeAeson = cslToAeson -instance DecodeAeson ProtocolParamUpdate where decodeAeson = cslFromAeson -instance Show ProtocolParamUpdate where show = showViaJson - -------------------------------------------------------------------------------------- --- Protocol version - -foreign import data ProtocolVersion :: Type - -foreign import protocolVersion_major :: ProtocolVersion -> Number -foreign import protocolVersion_minor :: ProtocolVersion -> Number -foreign import protocolVersion_new :: Number -> Number -> ProtocolVersion - -instance IsCsl ProtocolVersion where - className _ = "ProtocolVersion" -instance IsBytes ProtocolVersion -instance IsJson ProtocolVersion -instance EncodeAeson ProtocolVersion where encodeAeson = cslToAeson -instance DecodeAeson ProtocolVersion where decodeAeson = cslFromAeson -instance Show ProtocolVersion where show = showViaJson - -------------------------------------------------------------------------------------- --- Public key - -foreign import data PublicKey :: Type - -foreign import publicKey_free :: PublicKey -> Nullable Unit -foreign import publicKey_fromBech32 :: String -> Nullable PublicKey -foreign import publicKey_toBech32 :: PublicKey -> String -foreign import publicKey_asBytes :: PublicKey -> ByteArray -foreign import publicKey_fromBytes :: ByteArray -> Nullable PublicKey -foreign import publicKey_verify :: PublicKey -> ByteArray -> Ed25519Signature -> Boolean -foreign import publicKey_hash :: PublicKey -> Ed25519KeyHash -foreign import publicKey_toHex :: PublicKey -> String -foreign import publicKey_fromHex :: String -> Nullable PublicKey - -instance IsCsl PublicKey where - className _ = "PublicKey" - -------------------------------------------------------------------------------------- --- Redeemer - -foreign import data Redeemer :: Type - -foreign import redeemer_tag :: Redeemer -> RedeemerTag -foreign import redeemer_index :: Redeemer -> BigNum -foreign import redeemer_data :: Redeemer -> PlutusData -foreign import redeemer_exUnits :: Redeemer -> ExUnits -foreign import redeemer_new :: RedeemerTag -> BigNum -> PlutusData -> ExUnits -> Redeemer - -instance IsCsl Redeemer where - className _ = "Redeemer" -instance IsBytes Redeemer -instance IsJson Redeemer -instance EncodeAeson Redeemer where encodeAeson = cslToAeson -instance DecodeAeson Redeemer where decodeAeson = cslFromAeson -instance Show Redeemer where show = showViaJson - -------------------------------------------------------------------------------------- --- Redeemer tag - -foreign import data RedeemerTag :: Type - -foreign import redeemerTag_newSpend :: RedeemerTag -foreign import redeemerTag_newMint :: RedeemerTag -foreign import redeemerTag_newCert :: RedeemerTag -foreign import redeemerTag_newReward :: RedeemerTag -foreign import redeemerTag_kind :: RedeemerTag -> Number - -instance IsCsl RedeemerTag where - className _ = "RedeemerTag" -instance IsBytes RedeemerTag -instance IsJson RedeemerTag -instance EncodeAeson RedeemerTag where encodeAeson = cslToAeson -instance DecodeAeson RedeemerTag where decodeAeson = cslFromAeson -instance Show RedeemerTag where show = showViaJson - -------------------------------------------------------------------------------------- --- Redeemers - -foreign import data Redeemers :: Type - -foreign import redeemers_new :: Effect Redeemers -foreign import redeemers_totalExUnits :: Redeemers -> ExUnits - -instance IsCsl Redeemers where - className _ = "Redeemers" -instance IsBytes Redeemers -instance IsJson Redeemers -instance EncodeAeson Redeemers where encodeAeson = cslToAeson -instance DecodeAeson Redeemers where decodeAeson = cslFromAeson -instance Show Redeemers where show = showViaJson - -instance IsListContainer Redeemers Redeemer - -------------------------------------------------------------------------------------- --- Relay - -foreign import data Relay :: Type - -foreign import relay_newSingleHostAddr :: SingleHostAddr -> Relay -foreign import relay_newSingleHostName :: SingleHostName -> Relay -foreign import relay_newMultiHostName :: MultiHostName -> Relay -foreign import relay_kind :: Relay -> Number -foreign import relay_asSingleHostAddr :: Relay -> Nullable SingleHostAddr -foreign import relay_asSingleHostName :: Relay -> Nullable SingleHostName -foreign import relay_asMultiHostName :: Relay -> Nullable MultiHostName - -instance IsCsl Relay where - className _ = "Relay" -instance IsBytes Relay -instance IsJson Relay -instance EncodeAeson Relay where encodeAeson = cslToAeson -instance DecodeAeson Relay where decodeAeson = cslFromAeson -instance Show Relay where show = showViaJson - -------------------------------------------------------------------------------------- --- Relays - -foreign import data Relays :: Type - -foreign import relays_new :: Effect Relays - -instance IsCsl Relays where - className _ = "Relays" -instance IsBytes Relays -instance IsJson Relays -instance EncodeAeson Relays where encodeAeson = cslToAeson -instance DecodeAeson Relays where decodeAeson = cslFromAeson -instance Show Relays where show = showViaJson - -instance IsListContainer Relays Relay - -------------------------------------------------------------------------------------- --- Reward address - -foreign import data RewardAddress :: Type - -foreign import rewardAddress_new :: Number -> StakeCredential -> RewardAddress -foreign import rewardAddress_paymentCred :: RewardAddress -> StakeCredential -foreign import rewardAddress_toAddress :: RewardAddress -> Address -foreign import rewardAddress_fromAddress :: Address -> Nullable RewardAddress - -instance IsCsl RewardAddress where - className _ = "RewardAddress" - -------------------------------------------------------------------------------------- --- Reward addresses - -foreign import data RewardAddresses :: Type - -foreign import rewardAddresses_new :: Effect RewardAddresses - -instance IsCsl RewardAddresses where - className _ = "RewardAddresses" -instance IsBytes RewardAddresses -instance IsJson RewardAddresses -instance EncodeAeson RewardAddresses where encodeAeson = cslToAeson -instance DecodeAeson RewardAddresses where decodeAeson = cslFromAeson -instance Show RewardAddresses where show = showViaJson - -instance IsListContainer RewardAddresses RewardAddress - -------------------------------------------------------------------------------------- --- Script all - -foreign import data ScriptAll :: Type - -foreign import scriptAll_nativeScripts :: ScriptAll -> NativeScripts -foreign import scriptAll_new :: NativeScripts -> ScriptAll - -instance IsCsl ScriptAll where - className _ = "ScriptAll" -instance IsBytes ScriptAll -instance IsJson ScriptAll -instance EncodeAeson ScriptAll where encodeAeson = cslToAeson -instance DecodeAeson ScriptAll where decodeAeson = cslFromAeson -instance Show ScriptAll where show = showViaJson - -------------------------------------------------------------------------------------- --- Script any - -foreign import data ScriptAny :: Type - -foreign import scriptAny_nativeScripts :: ScriptAny -> NativeScripts -foreign import scriptAny_new :: NativeScripts -> ScriptAny - -instance IsCsl ScriptAny where - className _ = "ScriptAny" -instance IsBytes ScriptAny -instance IsJson ScriptAny -instance EncodeAeson ScriptAny where encodeAeson = cslToAeson -instance DecodeAeson ScriptAny where decodeAeson = cslFromAeson -instance Show ScriptAny where show = showViaJson - -------------------------------------------------------------------------------------- --- Script data hash - -foreign import data ScriptDataHash :: Type - -foreign import scriptDataHash_toBech32 :: ScriptDataHash -> String -> String -foreign import scriptDataHash_fromBech32 :: String -> Nullable ScriptDataHash - -instance IsCsl ScriptDataHash where - className _ = "ScriptDataHash" -instance IsBytes ScriptDataHash -instance EncodeAeson ScriptDataHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson ScriptDataHash where decodeAeson = cslFromAesonViaBytes -instance Show ScriptDataHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Script hash - -foreign import data ScriptHash :: Type - -foreign import scriptHash_toBech32 :: ScriptHash -> String -> String -foreign import scriptHash_fromBech32 :: String -> Nullable ScriptHash - -instance IsCsl ScriptHash where - className _ = "ScriptHash" -instance IsBytes ScriptHash -instance EncodeAeson ScriptHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson ScriptHash where decodeAeson = cslFromAesonViaBytes -instance Show ScriptHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Script hashes - -foreign import data ScriptHashes :: Type - -foreign import scriptHashes_new :: Effect ScriptHashes - -instance IsCsl ScriptHashes where - className _ = "ScriptHashes" -instance IsBytes ScriptHashes -instance IsJson ScriptHashes -instance EncodeAeson ScriptHashes where encodeAeson = cslToAeson -instance DecodeAeson ScriptHashes where decodeAeson = cslFromAeson -instance Show ScriptHashes where show = showViaJson - -instance IsListContainer ScriptHashes ScriptHash - -------------------------------------------------------------------------------------- --- Script nOf k - -foreign import data ScriptNOfK :: Type - -foreign import scriptNOfK_n :: ScriptNOfK -> Number -foreign import scriptNOfK_nativeScripts :: ScriptNOfK -> NativeScripts -foreign import scriptNOfK_new :: Number -> NativeScripts -> ScriptNOfK - -instance IsCsl ScriptNOfK where - className _ = "ScriptNOfK" -instance IsBytes ScriptNOfK -instance IsJson ScriptNOfK -instance EncodeAeson ScriptNOfK where encodeAeson = cslToAeson -instance DecodeAeson ScriptNOfK where decodeAeson = cslFromAeson -instance Show ScriptNOfK where show = showViaJson - -------------------------------------------------------------------------------------- --- Script pubkey - -foreign import data ScriptPubkey :: Type - -foreign import scriptPubkey_addrKeyhash :: ScriptPubkey -> Ed25519KeyHash -foreign import scriptPubkey_new :: Ed25519KeyHash -> ScriptPubkey - -instance IsCsl ScriptPubkey where - className _ = "ScriptPubkey" -instance IsBytes ScriptPubkey -instance IsJson ScriptPubkey -instance EncodeAeson ScriptPubkey where encodeAeson = cslToAeson -instance DecodeAeson ScriptPubkey where decodeAeson = cslFromAeson -instance Show ScriptPubkey where show = showViaJson - -------------------------------------------------------------------------------------- --- Script ref - -foreign import data ScriptRef :: Type - -foreign import scriptRef_newNativeScript :: NativeScript -> ScriptRef -foreign import scriptRef_newPlutusScript :: PlutusScript -> ScriptRef -foreign import scriptRef_isNativeScript :: ScriptRef -> Boolean -foreign import scriptRef_isPlutusScript :: ScriptRef -> Boolean -foreign import scriptRef_nativeScript :: ScriptRef -> Nullable NativeScript -foreign import scriptRef_plutusScript :: ScriptRef -> Nullable PlutusScript - -instance IsCsl ScriptRef where - className _ = "ScriptRef" -instance IsBytes ScriptRef -instance IsJson ScriptRef -instance EncodeAeson ScriptRef where encodeAeson = cslToAeson -instance DecodeAeson ScriptRef where decodeAeson = cslFromAeson -instance Show ScriptRef where show = showViaJson - -------------------------------------------------------------------------------------- --- Single host addr - -foreign import data SingleHostAddr :: Type - -foreign import singleHostAddr_port :: SingleHostAddr -> Nullable Number -foreign import singleHostAddr_ipv4 :: SingleHostAddr -> Nullable Ipv4 -foreign import singleHostAddr_ipv6 :: SingleHostAddr -> Nullable Ipv6 -foreign import singleHostAddr_new :: Number -> Ipv4 -> Ipv6 -> SingleHostAddr - -instance IsCsl SingleHostAddr where - className _ = "SingleHostAddr" -instance IsBytes SingleHostAddr -instance IsJson SingleHostAddr -instance EncodeAeson SingleHostAddr where encodeAeson = cslToAeson -instance DecodeAeson SingleHostAddr where decodeAeson = cslFromAeson -instance Show SingleHostAddr where show = showViaJson - -------------------------------------------------------------------------------------- --- Single host name - -foreign import data SingleHostName :: Type - -foreign import singleHostName_port :: SingleHostName -> Nullable Number -foreign import singleHostName_dnsName :: SingleHostName -> DNSRecordAorAAAA -foreign import singleHostName_new :: Nullable Number -> DNSRecordAorAAAA -> SingleHostName - -instance IsCsl SingleHostName where - className _ = "SingleHostName" -instance IsBytes SingleHostName -instance IsJson SingleHostName -instance EncodeAeson SingleHostName where encodeAeson = cslToAeson -instance DecodeAeson SingleHostName where decodeAeson = cslFromAeson -instance Show SingleHostName where show = showViaJson - -------------------------------------------------------------------------------------- --- Stake credential - -foreign import data StakeCredential :: Type - -foreign import stakeCredential_fromKeyhash :: Ed25519KeyHash -> StakeCredential -foreign import stakeCredential_fromScripthash :: ScriptHash -> StakeCredential -foreign import stakeCredential_toKeyhash :: StakeCredential -> Nullable Ed25519KeyHash -foreign import stakeCredential_toScripthash :: StakeCredential -> Nullable ScriptHash -foreign import stakeCredential_kind :: StakeCredential -> Number - -instance IsCsl StakeCredential where - className _ = "StakeCredential" -instance IsBytes StakeCredential -instance IsJson StakeCredential -instance EncodeAeson StakeCredential where encodeAeson = cslToAeson -instance DecodeAeson StakeCredential where decodeAeson = cslFromAeson -instance Show StakeCredential where show = showViaJson - -------------------------------------------------------------------------------------- --- Stake credentials - -foreign import data StakeCredentials :: Type - -foreign import stakeCredentials_new :: Effect StakeCredentials - -instance IsCsl StakeCredentials where - className _ = "StakeCredentials" -instance IsBytes StakeCredentials -instance IsJson StakeCredentials -instance EncodeAeson StakeCredentials where encodeAeson = cslToAeson -instance DecodeAeson StakeCredentials where decodeAeson = cslFromAeson -instance Show StakeCredentials where show = showViaJson - -instance IsListContainer StakeCredentials StakeCredential - -------------------------------------------------------------------------------------- --- Stake delegation - -foreign import data StakeDelegation :: Type - -foreign import stakeDelegation_stakeCredential :: StakeDelegation -> StakeCredential -foreign import stakeDelegation_poolKeyhash :: StakeDelegation -> Ed25519KeyHash -foreign import stakeDelegation_new :: StakeCredential -> Ed25519KeyHash -> StakeDelegation - -instance IsCsl StakeDelegation where - className _ = "StakeDelegation" -instance IsBytes StakeDelegation -instance IsJson StakeDelegation -instance EncodeAeson StakeDelegation where encodeAeson = cslToAeson -instance DecodeAeson StakeDelegation where decodeAeson = cslFromAeson -instance Show StakeDelegation where show = showViaJson - -------------------------------------------------------------------------------------- --- Stake deregistration - -foreign import data StakeDeregistration :: Type - -foreign import stakeDeregistration_stakeCredential :: StakeDeregistration -> StakeCredential -foreign import stakeDeregistration_new :: StakeCredential -> StakeDeregistration - -instance IsCsl StakeDeregistration where - className _ = "StakeDeregistration" -instance IsBytes StakeDeregistration -instance IsJson StakeDeregistration -instance EncodeAeson StakeDeregistration where encodeAeson = cslToAeson -instance DecodeAeson StakeDeregistration where decodeAeson = cslFromAeson -instance Show StakeDeregistration where show = showViaJson - -------------------------------------------------------------------------------------- --- Stake registration - -foreign import data StakeRegistration :: Type - -foreign import stakeRegistration_stakeCredential :: StakeRegistration -> StakeCredential -foreign import stakeRegistration_new :: StakeCredential -> StakeRegistration - -instance IsCsl StakeRegistration where - className _ = "StakeRegistration" -instance IsBytes StakeRegistration -instance IsJson StakeRegistration -instance EncodeAeson StakeRegistration where encodeAeson = cslToAeson -instance DecodeAeson StakeRegistration where decodeAeson = cslFromAeson -instance Show StakeRegistration where show = showViaJson - -------------------------------------------------------------------------------------- --- Timelock expiry - -foreign import data TimelockExpiry :: Type - -foreign import timelockExpiry_slot :: TimelockExpiry -> Number -foreign import timelockExpiry_slotBignum :: TimelockExpiry -> BigNum -foreign import timelockExpiry_new :: Number -> TimelockExpiry -foreign import timelockExpiry_newTimelockexpiry :: BigNum -> TimelockExpiry - -instance IsCsl TimelockExpiry where - className _ = "TimelockExpiry" -instance IsBytes TimelockExpiry -instance IsJson TimelockExpiry -instance EncodeAeson TimelockExpiry where encodeAeson = cslToAeson -instance DecodeAeson TimelockExpiry where decodeAeson = cslFromAeson -instance Show TimelockExpiry where show = showViaJson - -------------------------------------------------------------------------------------- --- Timelock start - -foreign import data TimelockStart :: Type - -foreign import timelockStart_slot :: TimelockStart -> Number -foreign import timelockStart_slotBignum :: TimelockStart -> BigNum -foreign import timelockStart_new :: Number -> TimelockStart -foreign import timelockStart_newTimelockstart :: BigNum -> TimelockStart - -instance IsCsl TimelockStart where - className _ = "TimelockStart" -instance IsBytes TimelockStart -instance IsJson TimelockStart -instance EncodeAeson TimelockStart where encodeAeson = cslToAeson -instance DecodeAeson TimelockStart where decodeAeson = cslFromAeson -instance Show TimelockStart where show = showViaJson - -------------------------------------------------------------------------------------- --- Transaction - -foreign import data Transaction :: Type - -foreign import transaction_body :: Transaction -> TransactionBody -foreign import transaction_witnessSet :: Transaction -> TransactionWitnessSet -foreign import transaction_isValid :: Transaction -> Boolean -foreign import transaction_auxiliaryData :: Transaction -> Nullable AuxiliaryData -foreign import transaction_setIsValid :: Transaction -> Boolean -> Effect Unit -foreign import transaction_new :: TransactionBody -> TransactionWitnessSet -> AuxiliaryData -> Transaction - -instance IsCsl Transaction where - className _ = "Transaction" -instance IsBytes Transaction -instance IsJson Transaction -instance EncodeAeson Transaction where encodeAeson = cslToAeson -instance DecodeAeson Transaction where decodeAeson = cslFromAeson -instance Show Transaction where show = showViaJson - -------------------------------------------------------------------------------------- --- Transaction batch - -foreign import data TransactionBatch :: Type - - - -instance IsCsl TransactionBatch where - className _ = "TransactionBatch" - -------------------------------------------------------------------------------------- --- Transaction batch list - -foreign import data TransactionBatchList :: Type - - - -instance IsCsl TransactionBatchList where - className _ = "TransactionBatchList" - -------------------------------------------------------------------------------------- --- Transaction body - -foreign import data TransactionBody :: Type - -foreign import transactionBody_inputs :: TransactionBody -> TransactionInputs -foreign import transactionBody_outputs :: TransactionBody -> TransactionOutputs -foreign import transactionBody_fee :: TransactionBody -> BigNum -foreign import transactionBody_ttl :: TransactionBody -> Nullable Number -foreign import transactionBody_ttlBignum :: TransactionBody -> Nullable BigNum -foreign import transactionBody_setTtl :: TransactionBody -> BigNum -> Effect Unit -foreign import transactionBody_removeTtl :: TransactionBody -> Nullable Unit -foreign import transactionBody_setCerts :: TransactionBody -> Certificates -> Effect Unit -foreign import transactionBody_certs :: TransactionBody -> Nullable Certificates -foreign import transactionBody_setWithdrawals :: TransactionBody -> Withdrawals -> Effect Unit -foreign import transactionBody_withdrawals :: TransactionBody -> Nullable Withdrawals -foreign import transactionBody_setUpdate :: TransactionBody -> Update -> Effect Unit -foreign import transactionBody_update :: TransactionBody -> Nullable Update -foreign import transactionBody_setAuxiliaryDataHash :: TransactionBody -> AuxiliaryDataHash -> Effect Unit -foreign import transactionBody_auxiliaryDataHash :: TransactionBody -> Nullable AuxiliaryDataHash -foreign import transactionBody_setValidityStartInterval :: TransactionBody -> Number -> Effect Unit -foreign import transactionBody_setValidityStartIntervalBignum :: TransactionBody -> BigNum -> Effect Unit -foreign import transactionBody_validityStartIntervalBignum :: TransactionBody -> Nullable BigNum -foreign import transactionBody_validityStartInterval :: TransactionBody -> Nullable Number -foreign import transactionBody_setMint :: TransactionBody -> Mint -> Effect Unit -foreign import transactionBody_mint :: TransactionBody -> Nullable Mint -foreign import transactionBody_multiassets :: TransactionBody -> Nullable Mint -foreign import transactionBody_setReferenceInputs :: TransactionBody -> TransactionInputs -> Effect Unit -foreign import transactionBody_referenceInputs :: TransactionBody -> Nullable TransactionInputs -foreign import transactionBody_setScriptDataHash :: TransactionBody -> ScriptDataHash -> Effect Unit -foreign import transactionBody_scriptDataHash :: TransactionBody -> Nullable ScriptDataHash -foreign import transactionBody_setCollateral :: TransactionBody -> TransactionInputs -> Effect Unit -foreign import transactionBody_collateral :: TransactionBody -> Nullable TransactionInputs -foreign import transactionBody_setRequiredSigners :: TransactionBody -> Ed25519KeyHashes -> Effect Unit -foreign import transactionBody_requiredSigners :: TransactionBody -> Nullable Ed25519KeyHashes -foreign import transactionBody_setNetworkId :: TransactionBody -> NetworkId -> Effect Unit -foreign import transactionBody_networkId :: TransactionBody -> Nullable NetworkId -foreign import transactionBody_setCollateralReturn :: TransactionBody -> TransactionOutput -> Effect Unit -foreign import transactionBody_collateralReturn :: TransactionBody -> Nullable TransactionOutput -foreign import transactionBody_setTotalCollateral :: TransactionBody -> BigNum -> Effect Unit -foreign import transactionBody_totalCollateral :: TransactionBody -> Nullable BigNum -foreign import transactionBody_new :: TransactionInputs -> TransactionOutputs -> BigNum -> Number -> TransactionBody -foreign import transactionBody_newTxBody :: TransactionInputs -> TransactionOutputs -> BigNum -> TransactionBody - -instance IsCsl TransactionBody where - className _ = "TransactionBody" -instance IsBytes TransactionBody -instance IsJson TransactionBody -instance EncodeAeson TransactionBody where encodeAeson = cslToAeson -instance DecodeAeson TransactionBody where decodeAeson = cslFromAeson -instance Show TransactionBody where show = showViaJson - -------------------------------------------------------------------------------------- --- Transaction hash - -foreign import data TransactionHash :: Type - -foreign import transactionHash_toBech32 :: TransactionHash -> String -> String -foreign import transactionHash_fromBech32 :: String -> Nullable TransactionHash - -instance IsCsl TransactionHash where - className _ = "TransactionHash" -instance IsBytes TransactionHash -instance EncodeAeson TransactionHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson TransactionHash where decodeAeson = cslFromAesonViaBytes -instance Show TransactionHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- Transaction input - -foreign import data TransactionInput :: Type - -foreign import transactionInput_transactionId :: TransactionInput -> TransactionHash -foreign import transactionInput_index :: TransactionInput -> Number -foreign import transactionInput_new :: TransactionHash -> Number -> TransactionInput - -instance IsCsl TransactionInput where - className _ = "TransactionInput" -instance IsBytes TransactionInput -instance IsJson TransactionInput -instance EncodeAeson TransactionInput where encodeAeson = cslToAeson -instance DecodeAeson TransactionInput where decodeAeson = cslFromAeson -instance Show TransactionInput where show = showViaJson - -------------------------------------------------------------------------------------- --- Transaction inputs - -foreign import data TransactionInputs :: Type - -foreign import transactionInputs_new :: Effect TransactionInputs -foreign import transactionInputs_toOption :: TransactionInputs -> Nullable TransactionInputs - -instance IsCsl TransactionInputs where - className _ = "TransactionInputs" -instance IsBytes TransactionInputs -instance IsJson TransactionInputs -instance EncodeAeson TransactionInputs where encodeAeson = cslToAeson -instance DecodeAeson TransactionInputs where decodeAeson = cslFromAeson -instance Show TransactionInputs where show = showViaJson - -instance IsListContainer TransactionInputs TransactionInput - -------------------------------------------------------------------------------------- --- Transaction metadatum - -foreign import data TransactionMetadatum :: Type - -foreign import transactionMetadatum_newMap :: MetadataMap -> TransactionMetadatum -foreign import transactionMetadatum_newList :: MetadataList -> TransactionMetadatum -foreign import transactionMetadatum_newInt :: Int -> TransactionMetadatum -foreign import transactionMetadatum_newBytes :: ByteArray -> TransactionMetadatum -foreign import transactionMetadatum_newText :: String -> TransactionMetadatum -foreign import transactionMetadatum_kind :: TransactionMetadatum -> Number -foreign import transactionMetadatum_asMap :: TransactionMetadatum -> Nullable MetadataMap -foreign import transactionMetadatum_asList :: TransactionMetadatum -> Nullable MetadataList -foreign import transactionMetadatum_asInt :: TransactionMetadatum -> Nullable Int -foreign import transactionMetadatum_asBytes :: TransactionMetadatum -> Nullable ByteArray -foreign import transactionMetadatum_asText :: TransactionMetadatum -> Nullable String - -instance IsCsl TransactionMetadatum where - className _ = "TransactionMetadatum" -instance IsBytes TransactionMetadatum -instance EncodeAeson TransactionMetadatum where encodeAeson = cslToAesonViaBytes -instance DecodeAeson TransactionMetadatum where decodeAeson = cslFromAesonViaBytes -instance Show TransactionMetadatum where show = showViaBytes - -------------------------------------------------------------------------------------- --- Transaction metadatum labels - -foreign import data TransactionMetadatumLabels :: Type - -foreign import transactionMetadatumLabels_new :: Effect TransactionMetadatumLabels - -instance IsCsl TransactionMetadatumLabels where - className _ = "TransactionMetadatumLabels" -instance IsBytes TransactionMetadatumLabels -instance EncodeAeson TransactionMetadatumLabels where encodeAeson = cslToAesonViaBytes -instance DecodeAeson TransactionMetadatumLabels where decodeAeson = cslFromAesonViaBytes -instance Show TransactionMetadatumLabels where show = showViaBytes - -instance IsListContainer TransactionMetadatumLabels BigNum - -------------------------------------------------------------------------------------- --- Transaction output - -foreign import data TransactionOutput :: Type - -foreign import transactionOutput_address :: TransactionOutput -> Address -foreign import transactionOutput_amount :: TransactionOutput -> Value -foreign import transactionOutput_dataHash :: TransactionOutput -> Nullable DataHash -foreign import transactionOutput_plutusData :: TransactionOutput -> Nullable PlutusData -foreign import transactionOutput_scriptRef :: TransactionOutput -> Nullable ScriptRef -foreign import transactionOutput_setScriptRef :: TransactionOutput -> ScriptRef -> Effect Unit -foreign import transactionOutput_setPlutusData :: TransactionOutput -> PlutusData -> Effect Unit -foreign import transactionOutput_setDataHash :: TransactionOutput -> DataHash -> Effect Unit -foreign import transactionOutput_hasPlutusData :: TransactionOutput -> Boolean -foreign import transactionOutput_hasDataHash :: TransactionOutput -> Boolean -foreign import transactionOutput_hasScriptRef :: TransactionOutput -> Boolean -foreign import transactionOutput_new :: Address -> Value -> TransactionOutput -foreign import transactionOutput_serializationFormat :: TransactionOutput -> Nullable Number - -instance IsCsl TransactionOutput where - className _ = "TransactionOutput" -instance IsBytes TransactionOutput -instance IsJson TransactionOutput -instance EncodeAeson TransactionOutput where encodeAeson = cslToAeson -instance DecodeAeson TransactionOutput where decodeAeson = cslFromAeson -instance Show TransactionOutput where show = showViaJson - -------------------------------------------------------------------------------------- --- Transaction outputs - -foreign import data TransactionOutputs :: Type - -foreign import transactionOutputs_new :: Effect TransactionOutputs - -instance IsCsl TransactionOutputs where - className _ = "TransactionOutputs" -instance IsBytes TransactionOutputs -instance IsJson TransactionOutputs -instance EncodeAeson TransactionOutputs where encodeAeson = cslToAeson -instance DecodeAeson TransactionOutputs where decodeAeson = cslFromAeson -instance Show TransactionOutputs where show = showViaJson - -instance IsListContainer TransactionOutputs TransactionOutput - -------------------------------------------------------------------------------------- --- Transaction unspent output - -foreign import data TransactionUnspentOutput :: Type - -foreign import transactionUnspentOutput_new :: TransactionInput -> TransactionOutput -> TransactionUnspentOutput -foreign import transactionUnspentOutput_input :: TransactionUnspentOutput -> TransactionInput -foreign import transactionUnspentOutput_output :: TransactionUnspentOutput -> TransactionOutput - -instance IsCsl TransactionUnspentOutput where - className _ = "TransactionUnspentOutput" -instance IsBytes TransactionUnspentOutput -instance IsJson TransactionUnspentOutput -instance EncodeAeson TransactionUnspentOutput where encodeAeson = cslToAeson -instance DecodeAeson TransactionUnspentOutput where decodeAeson = cslFromAeson -instance Show TransactionUnspentOutput where show = showViaJson - -------------------------------------------------------------------------------------- --- Transaction unspent outputs - -foreign import data TransactionUnspentOutputs :: Type - -foreign import transactionUnspentOutputs_new :: Effect TransactionUnspentOutputs - -instance IsCsl TransactionUnspentOutputs where - className _ = "TransactionUnspentOutputs" -instance IsJson TransactionUnspentOutputs -instance EncodeAeson TransactionUnspentOutputs where encodeAeson = cslToAeson -instance DecodeAeson TransactionUnspentOutputs where decodeAeson = cslFromAeson -instance Show TransactionUnspentOutputs where show = showViaJson - -instance IsListContainer TransactionUnspentOutputs TransactionUnspentOutput - -------------------------------------------------------------------------------------- --- Transaction witness set - -foreign import data TransactionWitnessSet :: Type - -foreign import transactionWitnessSet_setVkeys :: TransactionWitnessSet -> Vkeywitnesses -> Effect Unit -foreign import transactionWitnessSet_vkeys :: TransactionWitnessSet -> Effect ((Nullable Vkeywitnesses)) -foreign import transactionWitnessSet_setNativeScripts :: TransactionWitnessSet -> NativeScripts -> Effect Unit -foreign import transactionWitnessSet_nativeScripts :: TransactionWitnessSet -> Effect ((Nullable NativeScripts)) -foreign import transactionWitnessSet_setBootstraps :: TransactionWitnessSet -> BootstrapWitnesses -> Effect Unit -foreign import transactionWitnessSet_bootstraps :: TransactionWitnessSet -> Effect ((Nullable BootstrapWitnesses)) -foreign import transactionWitnessSet_setPlutusScripts :: TransactionWitnessSet -> PlutusScripts -> Effect Unit -foreign import transactionWitnessSet_plutusScripts :: TransactionWitnessSet -> Effect ((Nullable PlutusScripts)) -foreign import transactionWitnessSet_setPlutusData :: TransactionWitnessSet -> PlutusList -> Effect Unit -foreign import transactionWitnessSet_plutusData :: TransactionWitnessSet -> Effect ((Nullable PlutusList)) -foreign import transactionWitnessSet_setRedeemers :: TransactionWitnessSet -> Redeemers -> Effect Unit -foreign import transactionWitnessSet_redeemers :: TransactionWitnessSet -> Effect ((Nullable Redeemers)) -foreign import transactionWitnessSet_new :: Effect TransactionWitnessSet - -instance IsCsl TransactionWitnessSet where - className _ = "TransactionWitnessSet" -instance IsBytes TransactionWitnessSet -instance IsJson TransactionWitnessSet -instance EncodeAeson TransactionWitnessSet where encodeAeson = cslToAeson -instance DecodeAeson TransactionWitnessSet where decodeAeson = cslFromAeson -instance Show TransactionWitnessSet where show = showViaJson - -------------------------------------------------------------------------------------- --- URL - -foreign import data URL :: Type - -foreign import url_new :: String -> URL -foreign import url_url :: URL -> String - -instance IsCsl URL where - className _ = "URL" -instance IsBytes URL -instance IsJson URL -instance EncodeAeson URL where encodeAeson = cslToAeson -instance DecodeAeson URL where decodeAeson = cslFromAeson -instance Show URL where show = showViaJson - -------------------------------------------------------------------------------------- --- Unit interval - -foreign import data UnitInterval :: Type - -foreign import unitInterval_numerator :: UnitInterval -> BigNum -foreign import unitInterval_denominator :: UnitInterval -> BigNum -foreign import unitInterval_new :: BigNum -> BigNum -> UnitInterval - -instance IsCsl UnitInterval where - className _ = "UnitInterval" -instance IsBytes UnitInterval -instance IsJson UnitInterval -instance EncodeAeson UnitInterval where encodeAeson = cslToAeson -instance DecodeAeson UnitInterval where decodeAeson = cslFromAeson -instance Show UnitInterval where show = showViaJson - -------------------------------------------------------------------------------------- --- Update - -foreign import data Update :: Type - -foreign import update_proposedProtocolParameterUpdates :: Update -> ProposedProtocolParameterUpdates -foreign import update_epoch :: Update -> Number -foreign import update_new :: ProposedProtocolParameterUpdates -> Number -> Update - -instance IsCsl Update where - className _ = "Update" -instance IsBytes Update -instance IsJson Update -instance EncodeAeson Update where encodeAeson = cslToAeson -instance DecodeAeson Update where decodeAeson = cslFromAeson -instance Show Update where show = showViaJson - -------------------------------------------------------------------------------------- --- VRFCert - -foreign import data VRFCert :: Type - -foreign import vrfCert_output :: VRFCert -> ByteArray -foreign import vrfCert_proof :: VRFCert -> ByteArray -foreign import vrfCert_new :: ByteArray -> ByteArray -> VRFCert - -instance IsCsl VRFCert where - className _ = "VRFCert" -instance IsBytes VRFCert -instance IsJson VRFCert -instance EncodeAeson VRFCert where encodeAeson = cslToAeson -instance DecodeAeson VRFCert where decodeAeson = cslFromAeson -instance Show VRFCert where show = showViaJson - -------------------------------------------------------------------------------------- --- VRFKey hash - -foreign import data VRFKeyHash :: Type - -foreign import vrfKeyHash_toBech32 :: VRFKeyHash -> String -> String -foreign import vrfKeyHash_fromBech32 :: String -> Nullable VRFKeyHash - -instance IsCsl VRFKeyHash where - className _ = "VRFKeyHash" -instance IsBytes VRFKeyHash -instance EncodeAeson VRFKeyHash where encodeAeson = cslToAesonViaBytes -instance DecodeAeson VRFKeyHash where decodeAeson = cslFromAesonViaBytes -instance Show VRFKeyHash where show = showViaBytes - -------------------------------------------------------------------------------------- --- VRFVKey - -foreign import data VRFVKey :: Type - -foreign import vrfvKey_toBech32 :: VRFVKey -> String -> String -foreign import vrfvKey_fromBech32 :: String -> Nullable VRFVKey - -instance IsCsl VRFVKey where - className _ = "VRFVKey" -instance IsBytes VRFVKey -instance EncodeAeson VRFVKey where encodeAeson = cslToAesonViaBytes -instance DecodeAeson VRFVKey where decodeAeson = cslFromAesonViaBytes -instance Show VRFVKey where show = showViaBytes - -------------------------------------------------------------------------------------- --- Value - -foreign import data Value :: Type - -foreign import value_new :: BigNum -> Value -foreign import value_newFromAssets :: MultiAsset -> Value -foreign import value_newWithAssets :: BigNum -> MultiAsset -> Value -foreign import value_zero :: Value -foreign import value_isZero :: Value -> Boolean -foreign import value_coin :: Value -> BigNum -foreign import value_setCoin :: Value -> BigNum -> Effect Unit -foreign import value_multiasset :: Value -> Nullable MultiAsset -foreign import value_setMultiasset :: Value -> MultiAsset -> Effect Unit -foreign import value_checkedAdd :: Value -> Value -> Nullable Value -foreign import value_checkedSub :: Value -> Value -> Nullable Value -foreign import value_clampedSub :: Value -> Value -> Value -foreign import value_compare :: Value -> Value -> Nullable Number - -instance IsCsl Value where - className _ = "Value" -instance IsBytes Value -instance IsJson Value -instance EncodeAeson Value where encodeAeson = cslToAeson -instance DecodeAeson Value where decodeAeson = cslFromAeson -instance Show Value where show = showViaJson - -------------------------------------------------------------------------------------- --- Vkey - -foreign import data Vkey :: Type - -foreign import vkey_new :: PublicKey -> Vkey -foreign import vkey_publicKey :: Vkey -> PublicKey - -instance IsCsl Vkey where - className _ = "Vkey" -instance IsBytes Vkey -instance IsJson Vkey -instance EncodeAeson Vkey where encodeAeson = cslToAeson -instance DecodeAeson Vkey where decodeAeson = cslFromAeson -instance Show Vkey where show = showViaJson - -------------------------------------------------------------------------------------- --- Vkeys - -foreign import data Vkeys :: Type - -foreign import vkeys_new :: Effect Vkeys - -instance IsCsl Vkeys where - className _ = "Vkeys" - -instance IsListContainer Vkeys Vkey - -------------------------------------------------------------------------------------- --- Vkeywitness - -foreign import data Vkeywitness :: Type - -foreign import vkeywitness_new :: Vkey -> Ed25519Signature -> Vkeywitness -foreign import vkeywitness_vkey :: Vkeywitness -> Vkey -foreign import vkeywitness_signature :: Vkeywitness -> Ed25519Signature - -instance IsCsl Vkeywitness where - className _ = "Vkeywitness" -instance IsBytes Vkeywitness -instance IsJson Vkeywitness -instance EncodeAeson Vkeywitness where encodeAeson = cslToAeson -instance DecodeAeson Vkeywitness where decodeAeson = cslFromAeson -instance Show Vkeywitness where show = showViaJson - -------------------------------------------------------------------------------------- --- Vkeywitnesses - -foreign import data Vkeywitnesses :: Type - -foreign import vkeywitnesses_new :: Effect Vkeywitnesses - -instance IsCsl Vkeywitnesses where - className _ = "Vkeywitnesses" -instance IsBytes Vkeywitnesses -instance IsJson Vkeywitnesses -instance EncodeAeson Vkeywitnesses where encodeAeson = cslToAeson -instance DecodeAeson Vkeywitnesses where decodeAeson = cslFromAeson -instance Show Vkeywitnesses where show = showViaJson - -instance IsListContainer Vkeywitnesses Vkeywitness - -------------------------------------------------------------------------------------- --- Withdrawals - -foreign import data Withdrawals :: Type - -foreign import withdrawals_new :: Effect Withdrawals - -instance IsCsl Withdrawals where - className _ = "Withdrawals" -instance IsBytes Withdrawals -instance IsJson Withdrawals -instance EncodeAeson Withdrawals where encodeAeson = cslToAeson -instance DecodeAeson Withdrawals where decodeAeson = cslFromAeson -instance Show Withdrawals where show = showViaJson - -instance IsMapContainer Withdrawals RewardAddress BigNum - diff --git a/src/Types/Address.purs b/src/Types/Address.purs deleted file mode 100644 index 0e0eb0be6..000000000 --- a/src/Types/Address.purs +++ /dev/null @@ -1,115 +0,0 @@ -module Cardano.Types.Address where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(..) - , decodeAeson - , encodeAeson - ) -import Cardano.Serialization.Lib - ( address_fromBech32 - , address_networkId - , address_toBech32 - , baseAddress_fromAddress - , baseAddress_toAddress - , byronAddress_fromAddress - , byronAddress_toAddress - , enterpriseAddress_fromAddress - , enterpriseAddress_toAddress - , fromBytes - , pointerAddress_fromAddress - , pointerAddress_toAddress - , rewardAddress_fromAddress - , rewardAddress_toAddress - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Cardano.Types.BaseAddress (BaseAddress, fromCsl, toCsl) as BA -import Cardano.Types.ByronAddress (ByronAddress) as BA -import Cardano.Types.EnterpriseAddress as EA -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.NetworkId as NetworkId -import Cardano.Types.PointerAddress (PointerAddress) as PA -import Cardano.Types.RewardAddress as RA -import Control.Alt ((<|>)) -import Ctl.Internal.Types.Aliases (Bech32String) -import Data.Either (note) -import Data.Generic.Rep (class Generic) -import Data.Int as Int -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Show.Generic (genericShow) -import Literals.Undefined (undefined) -import Partial.Unsafe (unsafePartial) -import Unsafe.Coerce (unsafeCoerce) - -data Address - = BaseAddress BA.BaseAddress - | ByronAddress BA.ByronAddress - | EnterpriseAddress EA.EnterpriseAddress - | RewardAddress RA.RewardAddress - | PointerAddress PA.PointerAddress - -derive instance Generic Address _ -derive instance Eq Address -derive instance Ord Address - -instance EncodeAeson Address where - encodeAeson = encodeAeson <<< toBech32 - -instance DecodeAeson Address where - decodeAeson = decodeAeson >=> fromBech32 >>> note (TypeMismatch "Address") - -instance Show Address where - show = genericShow - -instance AsCbor Address where - encodeCbor = toCsl >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map fromCsl - -addressNetworkId :: Address -> NetworkId -addressNetworkId = unsafePartial $ - toCsl >>> address_networkId >>> Int.fromNumber >>> fromJust - >>> NetworkId.fromInt - >>> fromJust - -toBech32 :: Address -> Bech32String -toBech32 = toCsl >>> flip address_toBech32 (unsafeCoerce undefined) - -fromBech32 :: Bech32String -> Maybe Address -fromBech32 = map fromCsl <<< toMaybe <<< address_fromBech32 - -toCsl :: Address -> Csl.Address -toCsl = case _ of - BaseAddress ba -> - baseAddress_toAddress $ BA.toCsl ba - ByronAddress ba -> - byronAddress_toAddress $ unwrap ba - EnterpriseAddress ea -> - enterpriseAddress_toAddress $ EA.toCsl ea - RewardAddress ra -> - rewardAddress_toAddress $ RA.toCsl ra - PointerAddress pc -> - pointerAddress_toAddress $ unwrap pc - -fromCsl :: Csl.Address -> Address -fromCsl addr = - unsafePartial $ fromJust $ - asBaseAddress <|> asByronAddress <|> asEnterpriseAddress <|> asRewardAddress - <|> asPointerAddress - where - asBaseAddress = toMaybe (baseAddress_fromAddress addr) <#> - BaseAddress <<< BA.fromCsl - asByronAddress = toMaybe (byronAddress_fromAddress addr) <#> - ByronAddress <<< wrap - asEnterpriseAddress = toMaybe (enterpriseAddress_fromAddress addr) <#> - EnterpriseAddress <<< EA.fromCsl - asRewardAddress = toMaybe (rewardAddress_fromAddress addr) <#> - RewardAddress <<< RA.fromCsl - asPointerAddress = toMaybe (pointerAddress_fromAddress addr) <#> - PointerAddress <<< wrap diff --git a/src/Types/Asset.purs b/src/Types/Asset.purs deleted file mode 100644 index 22e143906..000000000 --- a/src/Types/Asset.purs +++ /dev/null @@ -1,30 +0,0 @@ -module Cardano.Types.Asset where - -import Prelude - -import Cardano.Types.AssetClass (AssetClass(..)) -import Cardano.Types.AssetName (AssetName) -import Ctl.Internal.Serialization.Hash (ScriptHash) -import Data.Array.NonEmpty (cons') -import Data.Generic.Rep (class Generic) -import Data.Show.Generic (genericShow) -import Test.QuickCheck (class Arbitrary, arbitrary) -import Test.QuickCheck.Gen (oneOf) - --- Inspired by cardano-wallet: --- https://github.com/input-output-hk/cardano-wallet/blob/791541da69b9b3f434bb9ead43de406cc18b0373/lib/primitive/lib/Cardano/Wallet/Primitive/Types/UTxOIndex/Internal.hs#L485 -data Asset = Asset ScriptHash AssetName | AdaAsset - -derive instance Eq Asset -derive instance Ord Asset -derive instance Generic Asset _ - -instance Show Asset where - show = genericShow - -instance Arbitrary Asset where - arbitrary = oneOf $ cons' (pure AdaAsset) - [ Asset <$> arbitrary <*> arbitrary ] - -fromAssetClass :: AssetClass -> Asset -fromAssetClass (AssetClass sh tn) = Asset sh tn diff --git a/src/Types/AssetClass.purs b/src/Types/AssetClass.purs deleted file mode 100644 index b2d8c2d67..000000000 --- a/src/Types/AssetClass.purs +++ /dev/null @@ -1,50 +0,0 @@ -module Cardano.Types.AssetClass where - -import Prelude hiding (join) - -import Aeson (class EncodeAeson, encodeAeson) -import Cardano.Types.AssetName (AssetName) -import Cardano.Types.Coin (Coin(Coin)) -import Cardano.Types.MultiAsset - ( MultiAsset(..) - , pprintMultiAsset - , unionNonAda - , unionWithNonAda - ) -import Cardano.Types.MultiAsset as MultiAsset -import Cardano.Types.ScriptHash (ScriptHash) -import Ctl.Internal.Partition (class Equipartition, equipartition) -import Data.Array.NonEmpty (NonEmptyArray) -import Data.Array.NonEmpty as NEArray -import Data.Foldable (all, foldl) -import Data.Generic.Rep (class Generic) -import Data.Int as Int -import Data.Lattice (class JoinSemilattice, class MeetSemilattice, join, meet) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Map (Map) -import Data.Map as Map -import Data.Maybe (fromMaybe) -import Data.Newtype (unwrap) -import Data.Show.Generic (genericShow) -import Data.These (These(Both, That, This)) -import Data.Tuple.Nested (type (/\), (/\)) -import JS.BigInt (BigInt) -import JS.BigInt as BigInt -import Test.QuickCheck (class Arbitrary, arbitrary) - --------------------------------------------------------------------------------- --- AssetClass --------------------------------------------------------------------------------- - -data AssetClass = AssetClass ScriptHash AssetName - -derive instance Generic AssetClass _ -derive instance Eq AssetClass -derive instance Ord AssetClass - -instance Arbitrary AssetClass where - arbitrary = AssetClass <$> arbitrary <*> arbitrary - -instance Show AssetClass where - show = genericShow diff --git a/src/Types/AssetName.js b/src/Types/AssetName.js deleted file mode 100644 index f432d3927..000000000 --- a/src/Types/AssetName.js +++ /dev/null @@ -1,26 +0,0 @@ -/* global BROWSER_RUNTIME */ - -// `TextDecoder` is not available in `node`, use polyfill in that case -let OurTextDecoder; -if (typeof BROWSER_RUNTIME == "undefined" || !BROWSER_RUNTIME) { - const util = await import("util"); - OurTextDecoder = util.TextDecoder; -} else { - OurTextDecoder = TextDecoder; -} - -export function _decodeUtf8(buffer) { - return left => right => { - let decoder = new OurTextDecoder("utf-8", { fatal: true }); // Without fatal=true it never fails - - try { - return right(decoder.decode(buffer)); - } catch (err) { - return left(err.toString()); - } - }; -} - -// FIXME: https://github.com/Plutonomicon/cardano-transaction-lib/issues/548 -const call = property => object => object[property](); -export const assetNameName = call("name"); diff --git a/src/Types/AssetName.purs b/src/Types/AssetName.purs deleted file mode 100644 index e219f2ee6..000000000 --- a/src/Types/AssetName.purs +++ /dev/null @@ -1,115 +0,0 @@ -module Cardano.Types.AssetName where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(..) - , caseAesonObject - , encodeAeson - , getField - ) -import Cardano.Serialization.Lib - ( assetName_name - , assetName_new - , fromBytes - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor, encodeCbor) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata, fromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) -import Ctl.Internal.ToData (class ToData, toData) -import Data.ByteArray (ByteArray, byteArrayToHex, byteLength, hexToByteArray) -import Data.Either (Either(..), either, note) -import Data.Function (on) -import Data.Maybe (Maybe(..), fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.String as String -import Data.TextEncoder (encodeUtf8) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck (class Arbitrary, arbitrary) -import Test.QuickCheck.Gen (resize) - -newtype AssetName = AssetName Csl.AssetName - -derive instance Newtype AssetName _ - -instance Eq AssetName where - eq = eq `on` encodeCbor - -instance Ord AssetName where - compare = compare `on` encodeCbor - -instance AsCbor AssetName where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap - -instance ToData AssetName where - toData = unAssetName >>> toData - -instance FromData AssetName where - fromData = mkAssetName <=< fromData - -instance ToMetadata AssetName where - toMetadata = toMetadata <<< unAssetName - -instance FromMetadata AssetName where - fromMetadata = mkAssetName <=< fromMetadata - -instance Arbitrary AssetName where - arbitrary = unsafePartial fromJust <<< mkAssetName <$> resize 32 arbitrary - -foreign import _decodeUtf8 - :: forall (r :: Type). ByteArray -> (String -> r) -> (String -> r) -> r - -unAssetName :: AssetName -> ByteArray -unAssetName = unwrap >>> assetName_name - -fromAssetName - :: forall (r :: Type). (ByteArray -> r) -> (String -> r) -> AssetName -> r -fromAssetName arrayHandler stringHandler (AssetName assetNameCsl) = either - (const $ arrayHandler bs) - stringHandler - (_decodeUtf8 bs Left Right) - where - bs = assetName_name assetNameCsl - --- | Corresponds to the Haskell instance at https://github.com/input-output-hk/plutus/blob/4fd86930f1dc628a816adf5f5d854b3fec578312/plutus-ledger-api/src/Plutus/V1/Ledger/Value.hs#L155: -instance DecodeAeson AssetName where - decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ - \aes -> do - tkstr <- getField aes "unAssetName" - case String.take 3 tkstr of - "\x0000000x" -> do -- this is 3 characters '\NUL' '0' 'x' - let stripped = String.drop 3 tkstr -- strip the \NUL followed by "0x" - ba <- - note - (TypeMismatch $ "Expected base16 encoded string got " <> stripped) - $ hexToByteArray stripped - pure $ AssetName $ assetName_new ba - "\x0\x0\x0" -> Right $ tkFromStr (String.drop 2 tkstr) -- if the original started with \NUL, we prepended 2 additional \NULs - _ -> Right $ tkFromStr tkstr - where - tkFromStr :: String -> AssetName - tkFromStr = AssetName <<< assetName_new <<< wrap <<< encodeUtf8 - -instance EncodeAeson AssetName where - encodeAeson = encodeAeson <<< { "unAssetName": _ } <<< fromAssetName - (\ba -> "\x0" <> "0x" <> byteArrayToHex ba) - ( \s -> case String.take 1 s of - "\x0" -> "\x0\x0" <> s - _ -> s - ) - -instance Show AssetName where - show (AssetName tn) = "(AssetName " <> show tn <> ")" - --- | Create a `AssetName` from a `ByteArray` since AssetName data constructor is --- | not exported -mkAssetName :: ByteArray -> Maybe AssetName -mkAssetName byteArr - | byteLength byteArr <= 32 = Just $ AssetName $ assetName_new byteArr - | otherwise = Nothing diff --git a/src/Types/AuxiliaryData.purs b/src/Types/AuxiliaryData.purs deleted file mode 100644 index f5ef93893..000000000 --- a/src/Types/AuxiliaryData.purs +++ /dev/null @@ -1,65 +0,0 @@ -module Cardano.Types.AuxiliaryData where - -import Prelude - -import Aeson (class EncodeAeson) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.GeneralTransactionMetadata (GeneralTransactionMetadata(..)) -import Cardano.Types.NativeScript (NativeScript) -import Cardano.Types.PlutusScript (PlutusScript(..)) -import Control.Apply (lift2) -import Ctl.Internal.Helpers (notImplemented) -import Data.Array (union) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Nothing)) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype AuxiliaryData = AuxiliaryData - { metadata :: Maybe GeneralTransactionMetadata - , nativeScripts :: Maybe (Array NativeScript) - , plutusScripts :: Maybe (Array PlutusScript) - } - -derive instance Generic AuxiliaryData _ -derive instance Newtype AuxiliaryData _ -derive newtype instance Eq AuxiliaryData -derive newtype instance EncodeAeson AuxiliaryData - -instance Show AuxiliaryData where - show = genericShow - -instance Semigroup AuxiliaryData where - append (AuxiliaryData ad) (AuxiliaryData ad') = - AuxiliaryData - { metadata: ad.metadata <> ad'.metadata - , nativeScripts: lift2 union ad.nativeScripts ad'.nativeScripts - , plutusScripts: lift2 union ad.plutusScripts ad'.plutusScripts - } - -instance Monoid AuxiliaryData where - mempty = AuxiliaryData - { metadata: Nothing - , nativeScripts: Nothing - , plutusScripts: Nothing - } - -toCsl :: AuxiliaryData -> Csl.AuxiliaryData -toCsl - (AuxiliaryData { metadata, nativeScripts, plutusScripts }) = - notImplemented - --- ad <- newAuxiliaryData --- for_ metadata $ --- convertGeneralTransactionMetadata >=> --- setAuxiliaryDataGeneralTransactionMetadata ad --- for_ nativeScripts $ --- convertNativeScripts >>> setAuxiliaryDataNativeScripts ad --- for_ plutusScripts \ps -> do --- scripts <- newPlutusScripts --- for_ ps (convertPlutusScript >>> addPlutusScript scripts) --- setAuxiliaryDataPlutusScripts ad scripts --- pure ad - -fromCsl :: Csl.AuxiliaryData -> AuxiliaryData -fromCsl = notImplemented diff --git a/src/Types/BaseAddress.purs b/src/Types/BaseAddress.purs deleted file mode 100644 index 768e91ab7..000000000 --- a/src/Types/BaseAddress.purs +++ /dev/null @@ -1,83 +0,0 @@ -module Cardano.Types.BaseAddress where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(..) - , decodeAeson - , encodeAeson - ) -import Cardano.Serialization.Lib - ( address_fromBech32 - , address_networkId - , address_toBech32 - , baseAddress_fromAddress - , baseAddress_new - , baseAddress_paymentCred - , baseAddress_stakeCred - , baseAddress_toAddress - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.Credential as Credential -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.NetworkId as NetworkId -import Cardano.Types.PaymentCredential (PaymentCredential) -import Cardano.Types.StakeCredential (StakeCredential) -import Ctl.Internal.Types.Aliases (Bech32String) -import Data.Either (note) -import Data.Generic.Rep (class Generic) -import Data.Int as Int -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Show.Generic (genericShow) -import Literals.Undefined (undefined) -import Partial.Unsafe (unsafePartial) -import Unsafe.Coerce (unsafeCoerce) - -data BaseAddress = BaseAddress NetworkId PaymentCredential StakeCredential - -derive instance Generic BaseAddress _ -derive instance Eq BaseAddress -derive instance Ord BaseAddress - -instance Show BaseAddress where - show = genericShow - --- no AsCbor instance, because there is no to_bytes method in CSL - -instance EncodeAeson BaseAddress where - encodeAeson = toCsl >>> baseAddress_toAddress - >>> flip address_toBech32 (unsafeCoerce undefined) - >>> encodeAeson - -instance DecodeAeson BaseAddress where - decodeAeson = note (TypeMismatch "BaseAddress") <<< decodeBech32 <=< - decodeAeson - where - decodeBech32 = map fromCsl <<< toMaybe <<< baseAddress_fromAddress <=< - fromBech32 - - fromBech32 :: Bech32String -> Maybe Csl.Address - fromBech32 = toMaybe <<< address_fromBech32 - -toCsl :: BaseAddress -> Csl.BaseAddress -toCsl (BaseAddress nid pc sc) = - baseAddress_new - (Int.toNumber $ NetworkId.toInt nid) - (Credential.toCsl $ unwrap pc) - (Credential.toCsl $ unwrap sc) - -fromCsl :: Csl.BaseAddress -> BaseAddress -fromCsl addr = BaseAddress - networkId - (wrap $ Credential.fromCsl $ baseAddress_paymentCred addr) - (wrap $ Credential.fromCsl $ baseAddress_stakeCred addr) - where - networkId :: NetworkId - networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust - $ Int.fromNumber - $ address_networkId - $ baseAddress_toAddress addr diff --git a/src/Types/BigInt.purs b/src/Types/BigInt.purs deleted file mode 100644 index e59765723..000000000 --- a/src/Types/BigInt.purs +++ /dev/null @@ -1,56 +0,0 @@ -module Cardano.Types.BigInt - ( module X - , fromCsl - , toCsl - , divCeil - ) where - -import Prelude - -import Cardano.Serialization.Lib (bigInt_divCeil, bigInt_fromStr, bigInt_toStr) -import Cardano.Serialization.Lib as Csl -import Data.Maybe (fromJust) -import Data.Nullable (toMaybe) -import JS.BigInt (BigInt) -import JS.BigInt - ( BigInt - , Parity(Even, Odd) - , Radix - , and - , asIntN - , asUintN - , binary - , decimal - , even - , fromInt - , fromNumber - , fromString - , fromStringAs - , fromTLInt - , hexadecimal - , not - , octal - , odd - , or - , parity - , pow - , shl - , shr - , toInt - , toNumber - , toString - , toStringAs - , xor - ) as X -import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) - -toCsl :: BigInt -> Csl.BigInt -toCsl bi = unsafePartial $ fromJust $ toMaybe $ bigInt_fromStr $ - BigInt.toString bi - -fromCsl :: Csl.BigInt -> BigInt -fromCsl bi = unsafePartial $ fromJust $ BigInt.fromString $ bigInt_toStr bi - -divCeil :: BigInt -> BigInt -> BigInt -divCeil a b = fromCsl $ bigInt_divCeil (toCsl a) (toCsl b) diff --git a/src/Types/BigNum.purs b/src/Types/BigNum.purs deleted file mode 100644 index ab5d5af5b..000000000 --- a/src/Types/BigNum.purs +++ /dev/null @@ -1,172 +0,0 @@ -module Cardano.Types.BigNum - ( BigNum(BigNum) - , add - , divFloor - , fromBigInt - , fromInt - , fromString - , fromStringUnsafe - , fromUInt - , maxValue - , mul - , sub - , one - , toBigInt - , toInt - , toInt' - , toString - , toUInt - , zero - , max - , abs - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) -import Aeson (JsonDecodeError(TypeMismatch)) as Aeson -import Cardano.Serialization.Lib - ( bigNum_checkedAdd - , bigNum_checkedMul - , bigNum_checkedSub - , bigNum_compare - , bigNum_divFloor - , bigNum_fromStr - , bigNum_max - , bigNum_maxValue - , bigNum_one - , bigNum_toStr - , bigNum_zero - , fromBytes - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Ctl.Internal.Deserialization.Error (FromCslRepError, fromCslRepError) -import Ctl.Internal.Error (E, noteE) -import Ctl.Internal.Helpers (eqOrd) -import Ctl.Internal.Partition - ( class Equipartition - , class Partition - , equipartition - , partition - ) -import Data.Either (note) -import Data.Int (fromString) as Int -import Data.Maybe (Maybe, fromJust, fromMaybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.UInt (UInt) -import Data.UInt (fromInt, fromString, toString) as UInt -import JS.BigInt (BigInt) -import JS.BigInt (fromString, toString) as BigInt -import Partial.Unsafe (unsafePartial) -import Safe.Coerce (coerce) -import Type.Row (type (+)) - -newtype BigNum = BigNum Csl.BigNum - -derive instance Newtype BigNum _ - -instance Eq BigNum where - eq = eqOrd - -instance Ord BigNum where - compare (BigNum lhs) (BigNum rhs) = - case bigNum_compare lhs rhs of - 1.0 -> GT - 0.0 -> EQ - _ -> LT - -instance Show BigNum where - show bn = "fromString \"" <> toString bn <> "\"" - -instance DecodeAeson BigNum where - decodeAeson = - note (Aeson.TypeMismatch "Couldn't convert `BigInt` to `BigNum`") - <<< fromBigInt <=< decodeAeson - -instance EncodeAeson BigNum where - encodeAeson = encodeAeson <<< toBigInt - -instance AsCbor BigNum where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap - -instance Partition BigNum where - partition bigNum = unsafePartial $ map toBigInt - >>> partition (toBigInt bigNum) - >>> map (map $ fromJust <<< fromBigInt) - -instance Equipartition BigNum where - equipartition bn = unsafePartial - $ map (fromJust <<< fromBigInt) - <<< equipartition (toBigInt bn) - --- Semiring cannot be implemented, because add and mul returns Maybe BigNum - -one :: BigNum -one = BigNum bigNum_one - -zero :: BigNum -zero = BigNum bigNum_zero - -add :: BigNum -> BigNum -> Maybe BigNum -add (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedAdd a b - -mul :: BigNum -> BigNum -> Maybe BigNum -mul (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedMul a b - -sub :: BigNum -> BigNum -> Maybe BigNum -sub (BigNum a) (BigNum b) = coerce $ toMaybe $ bigNum_checkedSub a b - -max :: BigNum -> BigNum -> BigNum -max = coerce bigNum_max - -abs :: BigNum -> BigNum -abs n = max n (fromMaybe zero $ sub zero n) - -divFloor :: BigNum -> BigNum -> BigNum -divFloor (BigNum a) (BigNum b) = BigNum $ bigNum_divFloor a b - -fromBigInt :: BigInt -> Maybe BigNum -fromBigInt = fromString <<< BigInt.toString - -toBigInt :: BigNum -> BigInt -toBigInt = - -- Converting uint64 to an arbitrary length integer should never fail. - unsafePartial fromJust <<< BigInt.fromString <<< toString - -toInt :: BigNum -> Maybe Int -toInt = Int.fromString <<< toString - -toInt' - :: forall (r :: Row Type). String -> BigNum -> E (FromCslRepError + r) Int -toInt' nm bn = - noteE (fromCslRepError (nm <> ": CSL.BigNum (" <> show bn <> ") -> Int ")) $ - toInt bn - --- | Converts an `Int` to a `BigNum` turning negative `Int`s into `BigNum`s --- | in range from `2^31` to `2^32-1`. -fromInt :: Int -> BigNum -fromInt = - -- Converting `UInt` (u32) to a `BigNum` (u64) should never fail. - fromStringUnsafe <<< UInt.toString <<< UInt.fromInt - -toString :: BigNum -> String -toString = unwrap >>> bigNum_toStr - -fromString :: String -> Maybe BigNum -fromString = map wrap <<< toMaybe <<< bigNum_fromStr - -fromStringUnsafe :: String -> BigNum -fromStringUnsafe = unsafePartial fromJust <<< fromString - -maxValue :: BigNum -maxValue = BigNum bigNum_maxValue - -fromUInt :: UInt -> BigNum -fromUInt = fromStringUnsafe <<< UInt.toString - -toUInt :: BigNum -> Maybe UInt -toUInt = toString >>> UInt.fromString diff --git a/src/Types/ByronAddress.purs b/src/Types/ByronAddress.purs deleted file mode 100644 index 72b2d1d54..000000000 --- a/src/Types/ByronAddress.purs +++ /dev/null @@ -1,58 +0,0 @@ -module Cardano.Types.ByronAddress - ( ByronAddress(ByronAddress) - , fromBase58 - , toBase58 - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Serialization.Lib - ( byronAddress_fromBase58 - , byronAddress_toBase58 - , fromBytes - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd, showFromBytes) -import Ctl.Internal.Types.Aliases (Base58String) -import Data.ByteArray (byteArrayFromIntArrayUnsafe) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Nullable (toMaybe) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck (class Coarbitrary, coarbitrary) -import Test.QuickCheck.Arbitrary (class Arbitrary) -import Test.QuickCheck.Gen (chooseInt, vectorOf) - -newtype ByronAddress = ByronAddress Csl.ByronAddress - -derive instance Generic ByronAddress _ -derive instance Newtype ByronAddress _ - -instance Eq ByronAddress where - eq = eqOrd - --- This is not newtyped derived because it will be used for ordering a --- `TransactionInput`, we want lexicographical ordering on the hexstring. -instance Ord ByronAddress where - compare = compareViaCslBytes `on` unwrap - -instance Show ByronAddress where - show = unwrap >>> showFromBytes "ByronAddress" - -instance AsCbor ByronAddress where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap - -derive newtype instance EncodeAeson ByronAddress -derive newtype instance DecodeAeson ByronAddress - -fromBase58 :: Base58String -> Maybe ByronAddress -fromBase58 = map wrap <<< toMaybe <<< byronAddress_fromBase58 - -toBase58 :: ByronAddress -> Base58String -toBase58 = unwrap >>> byronAddress_toBase58 diff --git a/src/Types/Coin.purs b/src/Types/Coin.purs deleted file mode 100644 index 2f6d4d37e..000000000 --- a/src/Types/Coin.purs +++ /dev/null @@ -1,49 +0,0 @@ -module Cardano.Types.Coin where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Types.BigNum (BigNum(BigNum)) -import Cardano.Types.BigNum as BigNum -import Ctl.Internal.Helpers (showWithParens) -import Ctl.Internal.Partition (class Equipartition, class Partition) -import Data.Generic.Rep (class Generic) -import Data.Lattice (class JoinSemilattice, class MeetSemilattice) -import Data.Maybe (Maybe) -import Data.Newtype (class Newtype) -import Data.Semiring as Num -import Safe.Coerce (coerce) -import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) -import Test.QuickCheck.Gen (suchThat) - -newtype Coin = Coin BigNum - -derive instance Generic Coin _ -derive instance Newtype Coin _ -derive newtype instance Eq Coin -derive newtype instance Ord Coin -derive newtype instance DecodeAeson Coin -derive newtype instance EncodeAeson Coin -derive newtype instance Partition Coin -derive newtype instance Equipartition Coin - -instance Arbitrary Coin where - arbitrary = Coin <<< BigNum.fromInt <$> suchThat arbitrary (_ >= Num.zero) - -instance Show Coin where - show (Coin c) = showWithParens "Coin" c - -instance JoinSemilattice Coin where - join (Coin c1) (Coin c2) = Coin (max c1 c2) - -instance MeetSemilattice Coin where - meet (Coin c1) (Coin c2) = Coin (min c1 c2) - -fromInt :: Int -> Coin -fromInt = Coin <<< BigNum.fromInt - -zero :: Coin -zero = Coin BigNum.zero - -add :: Coin -> Coin -> Maybe Coin -add = coerce BigNum.add diff --git a/src/Types/Credential.purs b/src/Types/Credential.purs deleted file mode 100644 index 3d71c5950..000000000 --- a/src/Types/Credential.purs +++ /dev/null @@ -1,79 +0,0 @@ -module Cardano.Types.Credential where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , (.:) - ) -import Cardano.Serialization.Lib - ( fromBytes - , stakeCredential_fromKeyhash - , stakeCredential_fromScripthash - , stakeCredential_toKeyhash - , stakeCredential_toScripthash - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash) -import Cardano.Types.ScriptHash (ScriptHash) -import Control.Alt ((<|>)) -import Ctl.Internal.Helpers (encodeTagged') -import Ctl.Internal.Metadata.Helpers (errExpectedObject) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Maybe (fromJust) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Show.Generic (genericShow) -import Partial.Unsafe (unsafePartial) - --- In CSL, this type is called StakeCredential. They reuse it for Payment Credentials as well. -data Credential - = PubKeyHashCredential Ed25519KeyHash - | ScriptHashCredential ScriptHash - -derive instance Generic Credential _ -derive instance Eq Credential -derive instance Ord Credential - -instance EncodeAeson Credential where - encodeAeson = case _ of - PubKeyHashCredential kh -> encodeTagged' "PubKeyHashCredential" kh - ScriptHashCredential sh -> encodeTagged' "ScriptHashCredential" sh - -instance DecodeAeson Credential where - decodeAeson = caseAesonObject errExpectedObject $ \obj -> do - tag <- obj .: "tag" - let - aesonContents - :: forall (a :: Type). DecodeAeson a => Either JsonDecodeError a - aesonContents = obj .: "content" - case tag of - "PubKeyHashCredential" -> PubKeyHashCredential <$> aesonContents - "ScriptHashCredential" -> ScriptHashCredential <$> aesonContents - _ -> Left $ TypeMismatch ("Unknown tag: " <> tag) - -instance Show Credential where - show = genericShow - -instance AsCbor Credential where - encodeCbor = toCsl >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map fromCsl - -toCsl :: Credential -> Csl.StakeCredential -toCsl = case _ of - PubKeyHashCredential kh -> stakeCredential_fromKeyhash (unwrap kh) - ScriptHashCredential sh -> stakeCredential_fromScripthash (unwrap sh) - -fromCsl :: Csl.StakeCredential -> Credential -fromCsl sc = unsafePartial $ fromJust $ - (map (PubKeyHashCredential <<< wrap) $ toMaybe $ stakeCredential_toKeyhash sc) - <|> - ( map (ScriptHashCredential <<< wrap) $ toMaybe $ - stakeCredential_toScripthash sc - ) diff --git a/src/Types/DataHash.purs b/src/Types/DataHash.purs deleted file mode 100644 index b452fb619..000000000 --- a/src/Types/DataHash.purs +++ /dev/null @@ -1,64 +0,0 @@ -module Cardano.Types.DataHash where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.PlutusData (PlutusData(Constr)) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd, showFromCbor) -import Ctl.Internal.ToData (class ToData, toData) -import Data.ByteArray (byteArrayFromIntArrayUnsafe) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(..), fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck (class Arbitrary, class Coarbitrary, coarbitrary) -import Test.QuickCheck.Gen (chooseInt, vectorOf) - -newtype DataHash = DataHash Csl.DataHash - -derive instance Generic DataHash _ -derive instance Newtype DataHash _ - -instance Eq DataHash where - eq = eqOrd - -instance AsCbor DataHash where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap - -derive newtype instance EncodeAeson DataHash -derive newtype instance DecodeAeson DataHash - --- This is not newtyped derived because it will be used for ordering a --- `TransactionInput`, we want lexicographical ordering on the hexstring. -instance Ord DataHash where - compare = compareViaCslBytes `on` unwrap - -instance Show DataHash where - show = unwrap >>> showFromCbor "DataHash" - --- Plutus actually has this as a zero indexed record -instance FromData DataHash where - fromData (Constr n [ bytes ]) | n == BigNum.zero = DataHash <$> - (fromBytes =<< fromData bytes) - fromData _ = Nothing - --- Plutus actually has this as a zero indexed record -instance ToData DataHash where - toData (DataHash th) = Constr BigNum.zero [ toData $ toBytes th ] - -instance Arbitrary DataHash where - arbitrary = unsafePartial $ - wrap <<< fromJust <<< fromBytes <<< byteArrayFromIntArrayUnsafe <$> vectorOf - 32 - (chooseInt 0 255) - -instance Coarbitrary DataHash where - coarbitrary (DataHash th) generator = coarbitrary (toBytes th) - generator diff --git a/src/Types/Ed25519KeyHash.purs b/src/Types/Ed25519KeyHash.purs deleted file mode 100644 index da046a112..000000000 --- a/src/Types/Ed25519KeyHash.purs +++ /dev/null @@ -1,112 +0,0 @@ -module Cardano.Types.Ed25519KeyHash where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonString - , encodeAeson - ) -import Cardano.Serialization.Lib - ( ed25519KeyHash_fromBech32 - , ed25519KeyHash_toBech32 - , fromBytes - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Cardano.Types.PlutusData (PlutusData(Bytes)) -import Ctl.Internal.FfiHelpers (partialToMaybe) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.RawBytes (RawBytes, rawBytesToHex) -import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Bytes)) as Metadata -import Data.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe, hexToByteArray) -import Data.Either (Either(Left), note) -import Data.Function (on) -import Data.Maybe (Maybe(Nothing), fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Nullable (toMaybe) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (class Arbitrary) -import Test.QuickCheck.Gen (chooseInt, vectorOf) - -newtype Ed25519KeyHash = Ed25519KeyHash Csl.Ed25519KeyHash - -derive instance Newtype Ed25519KeyHash _ - -instance Eq Ed25519KeyHash where - eq = eq `on` ed25519KeyHashToBytes - -instance Ord Ed25519KeyHash where - compare = compare `on` ed25519KeyHashToBytes - -instance Show Ed25519KeyHash where - show edkh = - "(Ed25519KeyHash $ unsafePartial $ fromJust $ ed25519KeyHashFromBech32 " - <> show (ed25519KeyHashToBech32 "pool" edkh) - <> ")" - -instance AsCbor Ed25519KeyHash where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap - -instance ToData Ed25519KeyHash where - toData = toData <<< unwrap <<< ed25519KeyHashToBytes - -instance FromData Ed25519KeyHash where - fromData (Bytes kh) = ed25519KeyHashFromBytes kh - fromData _ = Nothing - -instance ToMetadata Ed25519KeyHash where - toMetadata = toMetadata <<< ed25519KeyHashToBytes - -instance FromMetadata Ed25519KeyHash where - fromMetadata (Metadata.Bytes kh) = ed25519KeyHashFromBytes kh - fromMetadata _ = Nothing - --- This is needed for `ApplyArgs`. -instance DecodeAeson Ed25519KeyHash where - -- ed25519KeyHashFromBech32 goes from Bech32String directly although this - -- feels unsafe. - decodeAeson = caseAesonString - (Left $ TypeMismatch "Expected Plutus BuiltinByteString") - ( note (TypeMismatch "Invalid Ed25519KeyHash") <<< ed25519KeyHashFromBytes - <=< note (TypeMismatch "Invalid ByteArray") <<< hexToByteArray - ) - -instance EncodeAeson Ed25519KeyHash where - encodeAeson = encodeAeson <<< rawBytesToHex <<< ed25519KeyHashToBytes - -instance Arbitrary Ed25519KeyHash where - arbitrary = - unsafePartial fromJust <<< ed25519KeyHashFromBytes <<< - byteArrayFromIntArrayUnsafe <$> vectorOf 28 (chooseInt 0 255) - --- | Convert ed25519KeyHash to Bech32 representation with given prefix. --- | Will crash if prefix is invalid (length, mixed-case, etc) --- | More on prefixes: https://cips.cardano.org/cips/cip5 -ed25519KeyHashToBech32Unsafe ∷ Partial => String → Ed25519KeyHash → Bech32String -ed25519KeyHashToBech32Unsafe prefix kh = ed25519KeyHash_toBech32 (unwrap kh) - prefix - -ed25519KeyHashToBytes :: Ed25519KeyHash -> RawBytes -ed25519KeyHashToBytes = wrap <<< toBytes <<< unwrap - -ed25519KeyHashFromBytes :: ByteArray -> Maybe Ed25519KeyHash -ed25519KeyHashFromBytes = map wrap <<< fromBytes - -ed25519KeyHashFromBech32 :: Bech32String -> Maybe Ed25519KeyHash -ed25519KeyHashFromBech32 = map wrap <<< toMaybe <<< ed25519KeyHash_fromBech32 - --- | Convert ed25519KeyHash to Bech32 representation with given prefix. --- | Will return Nothing if prefix is invalid (length, mixed-case, etc) --- | More on prefixes: https://cips.cardano.org/cips/cip5 -ed25519KeyHashToBech32 :: String -> Ed25519KeyHash -> Maybe Bech32String -ed25519KeyHashToBech32 prefix kh = partialToMaybe \_ -> - ed25519KeyHashToBech32Unsafe prefix kh diff --git a/src/Types/Ed25519Signature.purs b/src/Types/Ed25519Signature.purs deleted file mode 100644 index 1835b642a..000000000 --- a/src/Types/Ed25519Signature.purs +++ /dev/null @@ -1,32 +0,0 @@ -module Cardano.Types.Ed25519Signature where - -import Prelude - -import Aeson (class EncodeAeson, encodeAeson) -import Cardano.Serialization.Lib (ed25519Signature_toBech32, fromBytes, toBytes) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Data.Function (on) -import Data.Newtype (class Newtype, unwrap, wrap) - -newtype Ed25519Signature = Ed25519Signature Csl.Ed25519Signature - -derive instance Newtype Ed25519Signature _ - -instance Eq Ed25519Signature where - eq a b = compare a b == EQ - -instance Ord Ed25519Signature where - compare = compare `on` (unwrap >>> toBytes) - -instance EncodeAeson Ed25519Signature where - encodeAeson = unwrap >>> toBytes >>> encodeAeson - -instance Show Ed25519Signature where - show sig = "(Ed25519Signature " - <> show (ed25519Signature_toBech32 <<< unwrap $ sig) - <> ")" - -instance AsCbor Ed25519Signature where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap diff --git a/src/Types/EnterpriseAddress.purs b/src/Types/EnterpriseAddress.purs deleted file mode 100644 index 43a9a9e00..000000000 --- a/src/Types/EnterpriseAddress.purs +++ /dev/null @@ -1,79 +0,0 @@ -module Cardano.Types.EnterpriseAddress where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(..) - , decodeAeson - , encodeAeson - ) -import Cardano.Serialization.Lib - ( address_fromBech32 - , address_networkId - , address_toBech32 - , enterpriseAddress_fromAddress - , enterpriseAddress_new - , enterpriseAddress_paymentCred - , enterpriseAddress_toAddress - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.Credential as Credential -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.NetworkId as NetworkId -import Cardano.Types.PaymentCredential (PaymentCredential) -import Ctl.Internal.Types.Aliases (Bech32String) -import Data.Either (note) -import Data.Generic.Rep (class Generic) -import Data.Int as Int -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Show.Generic (genericShow) -import Literals.Undefined (undefined) -import Partial.Unsafe (unsafePartial) -import Unsafe.Coerce (unsafeCoerce) - -data EnterpriseAddress = EnterpriseAddress NetworkId PaymentCredential - -derive instance Generic EnterpriseAddress _ -derive instance Ord EnterpriseAddress -derive instance Eq EnterpriseAddress - -instance Show EnterpriseAddress where - show = genericShow - --- no AsCbor instance, because there is no to_bytes method in CSL - -instance EncodeAeson EnterpriseAddress where - encodeAeson = toCsl >>> enterpriseAddress_toAddress - >>> flip address_toBech32 (unsafeCoerce undefined) - >>> encodeAeson - -instance DecodeAeson EnterpriseAddress where - decodeAeson = note (TypeMismatch "EnterpriseAddress") <<< decodeBech32 <=< - decodeAeson - where - decodeBech32 = map fromCsl <<< toMaybe <<< enterpriseAddress_fromAddress <=< - fromBech32 - - fromBech32 :: Bech32String -> Maybe Csl.Address - fromBech32 = toMaybe <<< address_fromBech32 - -toCsl :: EnterpriseAddress -> Csl.EnterpriseAddress -toCsl = case _ of - EnterpriseAddress nid sc -> - enterpriseAddress_new (Int.toNumber $ NetworkId.toInt nid) - (Credential.toCsl $ unwrap sc) - -fromCsl :: Csl.EnterpriseAddress -> EnterpriseAddress -fromCsl addr = - EnterpriseAddress networkId - (wrap $ Credential.fromCsl $ enterpriseAddress_paymentCred addr) - where - networkId :: NetworkId - networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust - $ Int.fromNumber - $ address_networkId - $ enterpriseAddress_toAddress addr diff --git a/src/Types/GeneralTransactionMetadata.purs b/src/Types/GeneralTransactionMetadata.purs deleted file mode 100644 index a8daf2798..000000000 --- a/src/Types/GeneralTransactionMetadata.purs +++ /dev/null @@ -1,40 +0,0 @@ -module Cardano.Types.GeneralTransactionMetadata where - -import Prelude - -import Aeson (class EncodeAeson) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.TransactionMetadatum (TransactionMetadatum) -import Ctl.Internal.Helpers (appendRightMap, encodeMap) -import Data.Generic.Rep (class Generic) -import Data.Map (Map) -import Data.Map as Map -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype GeneralTransactionMetadata = - GeneralTransactionMetadata - (Map BigNum TransactionMetadatum) - -derive instance Newtype GeneralTransactionMetadata _ - -derive newtype instance Eq GeneralTransactionMetadata -derive instance Generic GeneralTransactionMetadata _ - -instance Show GeneralTransactionMetadata where - show = genericShow - -instance EncodeAeson GeneralTransactionMetadata where - encodeAeson (GeneralTransactionMetadata m) = encodeMap m - --- This Semigroup instance simply takes the Last value for duplicate keys --- to avoid a Semigroup instance for TransactionMetadatum. --- Do we want to avoid a Semigroup instance for TransactionMetadatum? Recursion --- is fine but how to combine Text with Bytes for example? One would have to take --- precedence and replace the other. -instance Semigroup GeneralTransactionMetadata where - append (GeneralTransactionMetadata hm) (GeneralTransactionMetadata hm') = - GeneralTransactionMetadata $ hm `appendRightMap` hm' - -instance Monoid GeneralTransactionMetadata where - mempty = GeneralTransactionMetadata Map.empty diff --git a/src/Types/Int.purs b/src/Types/Int.purs deleted file mode 100644 index 9717733a9..000000000 --- a/src/Types/Int.purs +++ /dev/null @@ -1,84 +0,0 @@ -module Cardano.Types.Int - ( Int(Int) - , newPositive - , newNegative - , fromBigInt - , toBigInt - , fromInt - , toInt - , fromString - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , decodeAeson - , encodeAeson - ) -import Cardano.Serialization.Lib (Int) as Csl -import Cardano.Serialization.Lib (int_new, int_newNegative, int_toStr) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum (fromBigInt, fromInt) as BigNum -import Control.Alternative ((<|>)) -import Data.Either (note) -import Data.Function (on) -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) -import Prim (String) -import Prim as Prim - --- | Signed 128-bit integer -newtype Int = Int Csl.Int - -derive instance Newtype Int _ - -instance Eq Int where - eq = eq `on` toString - -instance Ord Int where - compare = compare `on` toBigInt - -instance Show Int where - show int = "(fromString " <> show (toString int) <> ")" - -instance EncodeAeson Int where - encodeAeson = encodeAeson <<< toBigInt - -instance DecodeAeson Int where - decodeAeson aeson = - decodeAeson aeson >>= note (TypeMismatch "Int") <<< fromBigInt - -fromBigInt :: BigInt.BigInt -> Maybe Int -fromBigInt bi = - (newPositive <$> BigNum.fromBigInt bi) <|> - (newNegative <$> BigNum.fromBigInt (negate bi)) - -toBigInt :: Int -> BigInt.BigInt -toBigInt int = - -- Assuming every Int can be represented as BigInt - unsafePartial $ fromJust $ BigInt.fromString $ int_toStr $ unwrap int - -fromInt :: Prim.Int -> Int -fromInt n - | n < 0 = newNegative $ BigNum.fromInt n - | otherwise = newPositive $ BigNum.fromInt n - -toInt :: Int -> Maybe Prim.Int -toInt = toBigInt >>> BigInt.toInt - -toString :: Int -> String -toString = unwrap >>> int_toStr - -fromString :: String -> Maybe Int -fromString = fromBigInt <=< BigInt.fromString - -newPositive :: BigNum -> Int -newPositive = unwrap >>> int_new >>> wrap - -newNegative :: BigNum -> Int -newNegative = unwrap >>> int_newNegative >>> wrap diff --git a/src/Types/Language.purs b/src/Types/Language.purs deleted file mode 100644 index 708fec2ba..000000000 --- a/src/Types/Language.purs +++ /dev/null @@ -1,72 +0,0 @@ -module Cardano.Types.Language where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , Aeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) - , caseAesonObject - , caseAesonString - , decodeAeson - , encodeAeson - , fromString - , getField - , toStringifiedNumbersJson - ) -import Cardano.Serialization.Lib - ( language_kind - , language_newPlutusV1 - , language_newPlutusV2 - ) -import Cardano.Serialization.Lib as Csl -import Control.Alt ((<|>)) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Helpers (notImplemented) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Show.Generic (genericShow) -import Effect.Exception (throw) -import Effect.Unsafe (unsafePerformEffect) -import Partial.Unsafe (unsafePartial) - -data Language - = PlutusV1 - | PlutusV2 - -derive instance Eq Language -derive instance Ord Language -derive instance Generic Language _ - -instance DecodeAeson Language where - decodeAeson = caseAesonString - (Left $ TypeMismatch "Expected string") - case _ of - "PlutusV1" -> pure PlutusV1 - "PlutusV2" -> pure PlutusV2 - other -> Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString - other - -instance EncodeAeson Language where - encodeAeson = encodeAeson <<< case _ of - PlutusV1 -> "PlutusV1" - PlutusV2 -> "PlutusV2" - -instance Show Language where - show = genericShow - -fromCsl :: Csl.Language -> Language -fromCsl lang = - case language_kind lang of - 0.0 -> PlutusV1 - 1.1 -> PlutusV2 - _ -> unsafePerformEffect $ throw - "Cardano.Types.Language.fromCsl: unknown kind" - -toCsl :: Language -> Csl.Language -toCsl PlutusV1 = language_newPlutusV1 -toCsl PlutusV2 = language_newPlutusV2 diff --git a/src/Types/MultiAsset.purs b/src/Types/MultiAsset.purs deleted file mode 100644 index 3528d5b58..000000000 --- a/src/Types/MultiAsset.purs +++ /dev/null @@ -1,210 +0,0 @@ -module Cardano.Types.MultiAsset where - -import Prelude hiding (add) - -import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) -import Cardano.Serialization.Lib (packMapContainer, unpackMapContainer) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (encodeCbor) -import Cardano.Types.AssetName (AssetName, fromAssetName) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum as BigNum -import Control.Bind (bindFlipped) -import Ctl.Internal.Helpers (decodeMap, encodeMap) -import Ctl.Internal.Partition (class Equipartition, equipartition) -import Ctl.Internal.Serialization.Hash (ScriptHash) -import Data.Array (filter, foldr) -import Data.Array.NonEmpty (NonEmptyArray) -import Data.Array.NonEmpty (replicate, zipWith) as NEArray -import Data.ByteArray (byteArrayToHex) -import Data.Foldable (any, foldM, foldl) -import Data.Lattice (class JoinSemilattice, class MeetSemilattice) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Map (Map) -import Data.Map as Map -import Data.Map.Gen (genMap) -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Profunctor.Strong ((***)) -import Data.These (These(Both, That, This)) -import Data.Traversable (for, traverse) -import Data.Tuple.Nested (type (/\), (/\)) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) -import Test.QuickCheck.Gen (Gen, suchThat) - -newtype MultiAsset = MultiAsset (Map ScriptHash (Map AssetName BigNum)) - -derive newtype instance Eq MultiAsset -derive instance Newtype MultiAsset _ - -instance Arbitrary MultiAsset where - arbitrary = - MultiAsset <$> - genMap - (arbitrary :: Gen ScriptHash) - ( flip suchThat (not Map.isEmpty) $ - genMap - (arbitrary :: Gen AssetName) - (BigNum.fromInt <$> suchThat arbitrary (_ >= one) :: Gen BigNum) - ) - -instance Show MultiAsset where - show (MultiAsset nonAdaAsset) = "(MultiAsset " <> show nonAdaAsset <> ")" - -instance JoinSemilattice MultiAsset where - -- `max` can't overflow - join a b = unsafePartial $ fromJust $ unionWithNonAda (map Just <<< max) a b - -instance MeetSemilattice MultiAsset where - -- `min` can't overflow - meet a b = unsafePartial $ fromJust $ unionWithNonAda (map Just <<< min) a b - -instance EncodeAeson MultiAsset where - encodeAeson (MultiAsset m) = encodeAeson $ encodeMap $ encodeMap <$> m - -instance DecodeAeson MultiAsset where - decodeAeson aeson = do - mapAesons <- decodeMap aeson - MultiAsset <$> for mapAesons decodeMap - -instance Equipartition MultiAsset where - equipartition nonAdaAssets numParts = - foldl accumulate (NEArray.replicate numParts empty) - (flatten nonAdaAssets) - where - append' a b = unsafePartial $ fromJust $ add a b - - accumulate - :: NonEmptyArray MultiAsset - -> (ScriptHash /\ AssetName /\ BigNum) - -> NonEmptyArray MultiAsset - accumulate xs (cs /\ tn /\ tokenQuantity) = - NEArray.zipWith append' xs $ - map (singleton cs tn) - (equipartition tokenQuantity numParts) - -empty :: MultiAsset -empty = MultiAsset Map.empty - -add :: MultiAsset -> MultiAsset -> Maybe MultiAsset -add = unionWithNonAda BigNum.add - -sum :: Array MultiAsset -> Maybe MultiAsset -sum = foldr (bindFlipped <<< add) (Just empty) - -flatten :: MultiAsset -> Array (ScriptHash /\ AssetName /\ BigNum) -flatten (MultiAsset mp) = - Map.toUnfoldable mp >>= \(sh /\ mp') -> do - Map.toUnfoldable mp' >>= \(tn /\ amount) -> pure (sh /\ tn /\ amount) - -unflatten :: Array (ScriptHash /\ AssetName /\ BigNum) -> Maybe MultiAsset -unflatten = - foldM accumulate empty - where - uncurry2 f (a /\ b /\ c) = f a b c - accumulate ma = unionWithNonAda BigNum.add ma <<< uncurry2 singleton - -singleton :: ScriptHash -> AssetName -> BigNum -> MultiAsset -singleton sh tn amount = MultiAsset $ Map.singleton sh $ Map.singleton tn amount - -pprintMultiAsset :: MultiAsset -> TagSet -pprintMultiAsset mp = TagSet.fromArray $ - Map.toUnfoldable (unwrap mp) <#> \(scriptHash /\ tokens) -> - byteArrayToHex (unwrap $ encodeCbor scriptHash) `tagSetTag` TagSet.fromArray - ( Map.toUnfoldable tokens <#> \(assetName /\ amount) -> - fromAssetName byteArrayToHex show assetName `tag` BigNum.toString - amount - ) - --- | Normalize `MultiAsset` so that it doesn't contain zero-valued tokens. -normalizeMultiAsset :: MultiAsset -> MultiAsset -normalizeMultiAsset = filterMultiAsset (notEq BigNum.zero) - -filterMultiAsset :: (BigNum -> Boolean) -> MultiAsset -> MultiAsset -filterMultiAsset p (MultiAsset mp) = - MultiAsset $ Map.filter (not Map.isEmpty) $ Map.filter p <$> mp - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionWith --- | Same as `unionWith` but specifically for `MultiAsset` -unionWithNonAda - :: (BigNum -> BigNum -> Maybe BigNum) - -> MultiAsset - -> MultiAsset - -> Maybe MultiAsset -unionWithNonAda f ls rs = - let - combined :: Map ScriptHash (Map AssetName (These BigNum BigNum)) - combined = unionNonAda ls rs - - unBoth :: These BigNum BigNum -> Maybe BigNum - unBoth k' = case k' of - This a -> f a BigNum.zero - That b -> f BigNum.zero b - Both a b -> f a b - in - normalizeMultiAsset <<< MultiAsset <$> traverse (traverse unBoth) combined - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionVal --- | Combine two `MultiAsset` maps -unionNonAda - :: MultiAsset - -> MultiAsset - -> Map ScriptHash (Map AssetName (These BigNum BigNum)) -unionNonAda (MultiAsset l) (MultiAsset r) = - let - combined - :: Map ScriptHash - (These (Map AssetName BigNum) (Map AssetName BigNum)) - combined = union l r - - unBoth - :: These (Map AssetName BigNum) (Map AssetName BigNum) - -> Map AssetName (These BigNum BigNum) - unBoth k = case k of - This a -> This <$> a - That b -> That <$> b - Both a b -> union a b - in - unBoth <$> combined - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-tx/html/src/PlutusTx.AssocMap.html#union --- | Combine two `Map`s. -union :: ∀ k v r. Ord k => Map k v -> Map k r -> Map k (These v r) -union l r = - let - ls :: Array (k /\ v) - ls = Map.toUnfoldable l - - rs :: Array (k /\ r) - rs = Map.toUnfoldable r - - f :: v -> Maybe r -> These v r - f a b' = case b' of - Nothing -> This a - Just b -> Both a b - - ls' :: Array (k /\ These v r) - ls' = map (\(c /\ i) -> (c /\ f i (Map.lookup c (Map.fromFoldable rs)))) ls - - rs' :: Array (k /\ r) - rs' = filter (\(c /\ _) -> not (any (\(c' /\ _) -> c' == c) ls)) rs - - rs'' :: Array (k /\ These v r) - rs'' = map (map That) rs' - in - Map.fromFoldable (ls' <> rs'') - -toCsl :: MultiAsset -> Csl.MultiAsset -toCsl (MultiAsset mp) = packMapContainer $ map (unwrap *** assetsToCsl) $ - Map.toUnfoldable mp - where - assetsToCsl :: Map AssetName BigNum -> Csl.Assets - assetsToCsl assets = packMapContainer $ map (unwrap *** unwrap) $ - Map.toUnfoldable assets - -fromCsl :: Csl.MultiAsset -> MultiAsset -fromCsl multiAsset = MultiAsset $ Map.fromFoldable $ - unpackMapContainer multiAsset <#> wrap *** \asset -> - Map.fromFoldable (unpackMapContainer asset <#> wrap *** wrap) diff --git a/src/Types/NativeScript.purs b/src/Types/NativeScript.purs deleted file mode 100644 index 1807b8e97..000000000 --- a/src/Types/NativeScript.purs +++ /dev/null @@ -1,211 +0,0 @@ -module Cardano.Types.NativeScript where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , getField - , (.:) - ) -import Cardano.Serialization.Lib - ( nativeScript_asScriptAll - , nativeScript_asScriptAny - , nativeScript_asScriptNOfK - , nativeScript_asScriptPubkey - , nativeScript_asTimelockExpiry - , nativeScript_asTimelockStart - , nativeScript_newScriptAll - , nativeScript_newScriptAny - , nativeScript_newScriptNOfK - , nativeScript_newScriptPubkey - , nativeScript_newTimelockExpiry - , nativeScript_newTimelockStart - , scriptAll_nativeScripts - , scriptAll_new - , scriptAny_nativeScripts - , scriptAny_new - , scriptNOfK_n - , scriptNOfK_nativeScripts - , scriptNOfK_new - , scriptPubkey_addrKeyhash - , scriptPubkey_new - , timelockExpiry_newTimelockexpiry - , timelockExpiry_slotBignum - , timelockStart_newTimelockstart - , timelockStart_slotBignum - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Serialization.Lib.Internal - ( packListContainer - , unpackListContainer - ) -import Cardano.Types.AsCbor (decodeCbor, encodeCbor) -import Cardano.Types.BigNum (fromString) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash(..)) -import Cardano.Types.Slot (Slot(..)) -import Control.Alt ((<|>)) -import Ctl.Internal.Helpers (encodeTagged') -import Ctl.Internal.Metadata.Helpers (errExpectedObject) -import Data.Array.NonEmpty (fromFoldable) -import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Int as Int -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Maybe (fromJust) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Show.Generic (genericShow) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck (class Arbitrary) -import Test.QuickCheck.Arbitrary (arbitrary) -import Test.QuickCheck.Gen (Gen, oneOf, resize, sized, suchThat) - -data NativeScript - = ScriptPubkey Ed25519KeyHash - | ScriptAll (Array NativeScript) - | ScriptAny (Array NativeScript) - | ScriptNOfK Int (Array NativeScript) - | TimelockStart Slot -- spend after - | TimelockExpiry Slot -- spend before - -derive instance Eq NativeScript -derive instance Generic NativeScript _ - -instance Show NativeScript where - show x = genericShow x - -instance Arbitrary NativeScript where - arbitrary = oneOf $ unsafePartial $ fromJust $ fromFoldable - [ ScriptPubkey <$> (pure pk) - , ScriptAll <$> sized (\i -> resize (i `div` 2) arbitrary) - , ScriptAny <$> sized (\i -> resize (i `div` 2) arbitrary) - , ScriptNOfK - <$> suchThat (arbitrary :: Gen Int) (_ >= 0) - <*> sized (\i -> resize (i `div` 2) arbitrary) - , TimelockStart <$> map - (wrap <<< (unsafePartial $ fromJust <<< fromString <<< show)) - (suchThat (arbitrary :: Gen Int) (_ > 0)) - , TimelockExpiry <$> map - (wrap <<< (unsafePartial $ fromJust <<< fromString <<< show)) - (suchThat (arbitrary :: Gen Int) (_ > 0)) - ] - where - pk :: Ed25519KeyHash - pk = unsafePartial $ fromJust $ decodeCbor - $ wrap - $ hexToByteArrayUnsafe - "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" - -instance DecodeAeson NativeScript where - decodeAeson = caseAesonObject errExpectedObject $ \obj -> do - tag <- obj .: "tag" - let - aesonContents - :: forall (a :: Type). DecodeAeson a => Either JsonDecodeError a - aesonContents = obj .: "contents" - case tag of - "ScriptPubkey" -> ScriptPubkey <$> aesonContents - "ScriptAll" -> ScriptAll <$> aesonContents - "ScriptAny" -> ScriptAny <$> aesonContents - "TimelockStart" -> TimelockStart <$> aesonContents - "TimelockExpiry" -> TimelockExpiry <$> aesonContents - "ScriptNOfK" -> ScriptNOfK - <$> (flip getField "n" =<< aesonContents) - <*> (flip getField "nativeScripts" =<< aesonContents) - - _ -> Left $ TypeMismatch ("Unknown tag: " <> tag) - -instance EncodeAeson NativeScript where - encodeAeson = case _ of - ScriptPubkey r -> encodeTagged' "ScriptPubkey" r - ScriptAll r -> encodeTagged' "ScriptAll" r - ScriptAny r -> encodeTagged' "ScriptAny" r - ScriptNOfK n nativeScripts -> encodeTagged' "ScriptNOfK" - { n, nativeScripts } - TimelockStart r -> encodeTagged' "TimelockStart" r - TimelockExpiry r -> encodeTagged' "TimelockExpiry" r - -pprintNativeScript :: NativeScript -> TagSet -pprintNativeScript = case _ of - ScriptPubkey kh -> TagSet.fromArray - [ "PubKey" `tag` byteArrayToHex (unwrap $ encodeCbor kh) ] - ScriptAll scripts -> "All of" `tagSetTag` TagSet.fromArray - (pprintNativeScript <$> scripts) - ScriptAny scripts -> "Any of" `tagSetTag` TagSet.fromArray - (pprintNativeScript <$> scripts) - ScriptNOfK n scripts -> ("At least " <> show n <> " of ") - `tagSetTag` TagSet.fromArray (pprintNativeScript <$> scripts) - TimelockStart slot -> "Timelock start" `tag` BigNum.toString (unwrap slot) - TimelockExpiry slot -> "Timelock expiry" `tag` BigNum.toString (unwrap slot) - -toCslMany :: Array NativeScript -> Csl.NativeScripts -toCslMany = packListContainer <<< map toCsl - -fromCsl :: Csl.NativeScript -> NativeScript -fromCsl ns = unsafePartial $ fromJust $ - convertScriptPubkey <$> toMaybe (nativeScript_asScriptPubkey ns) - <|> convertScriptAll <$> toMaybe (nativeScript_asScriptAll ns) - <|> convertScriptAny <$> toMaybe (nativeScript_asScriptAny ns) - <|> convertScriptNOfK <$> toMaybe (nativeScript_asScriptNOfK ns) - <|> convertScriptTimelockStart <$> toMaybe (nativeScript_asTimelockStart ns) - <|> - convertScriptTimelockExpiry <$> toMaybe (nativeScript_asTimelockExpiry ns) - where - convertScriptPubkey = scriptPubkey_addrKeyhash >>> wrap >>> ScriptPubkey - convertScriptAll = - scriptAll_nativeScripts >>> unpackListContainer >>> map fromCsl >>> - ScriptAll - convertScriptAny = - scriptAny_nativeScripts >>> unpackListContainer >>> map fromCsl >>> - ScriptAny - convertScriptNOfK nOfK = ScriptNOfK - (unsafePartial $ fromJust $ Int.fromNumber $ scriptNOfK_n nOfK) - (map fromCsl $ unpackListContainer $ scriptNOfK_nativeScripts nOfK) - convertScriptTimelockStart = - timelockStart_slotBignum >>> wrap >>> Slot >>> TimelockStart - convertScriptTimelockExpiry = - timelockExpiry_slotBignum >>> wrap >>> Slot >>> TimelockExpiry - --- | Note: unbounded recursion here. -toCsl :: NativeScript -> Csl.NativeScript -toCsl = case _ of - ScriptPubkey keyHash -> convertScriptPubkey keyHash - ScriptAll nss -> convertScriptAll nss - ScriptAny nss -> convertScriptAny nss - ScriptNOfK n nss -> convertScriptNOfK n nss - TimelockStart slot -> convertTimelockStart slot - TimelockExpiry slot -> convertTimelockExpiry slot - where - convertScriptPubkey :: Ed25519KeyHash -> Csl.NativeScript - convertScriptPubkey hash = do - nativeScript_newScriptPubkey $ scriptPubkey_new (unwrap hash) - - convertScriptAll :: Array NativeScript -> Csl.NativeScript - convertScriptAll nss = - nativeScript_newScriptAll <<< scriptAll_new <<< - packListContainer $ map toCsl nss - - convertScriptAny :: Array NativeScript -> Csl.NativeScript - convertScriptAny nss = - nativeScript_newScriptAny <<< scriptAny_new <<< - packListContainer $ map toCsl nss - - convertScriptNOfK :: Int -> Array NativeScript -> Csl.NativeScript - convertScriptNOfK n nss = - nativeScript_newScriptNOfK <<< scriptNOfK_new (Int.toNumber n) <<< - packListContainer $ map toCsl nss - - convertTimelockStart :: Slot -> Csl.NativeScript - convertTimelockStart (Slot slot) = - nativeScript_newTimelockStart (timelockStart_newTimelockstart $ unwrap slot) - - convertTimelockExpiry :: Slot -> Csl.NativeScript - convertTimelockExpiry (Slot slot) = - nativeScript_newTimelockExpiry - (timelockExpiry_newTimelockexpiry $ unwrap slot) diff --git a/src/Types/NetworkId.purs b/src/Types/NetworkId.purs deleted file mode 100644 index a5b1945b2..000000000 --- a/src/Types/NetworkId.purs +++ /dev/null @@ -1,70 +0,0 @@ -module Cardano.Types.NetworkId where - -import Prelude - -import Aeson (class EncodeAeson) -import Cardano.Serialization.Lib - ( fromBytes - , networkId_kind - , networkId_mainnet - , networkId_testnet - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Ctl.Internal.Helpers (encodeTagged') -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Int as Int -import Data.Maybe (Maybe(Nothing, Just), fromJust, fromMaybe) -import Data.Newtype (unwrap, wrap) -import Data.Show.Generic (genericShow) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (class Arbitrary) -import Test.QuickCheck.Gen (chooseInt) - -data NetworkId - = TestnetId - | MainnetId - -instance EncodeAeson NetworkId where - encodeAeson = case _ of - TestnetId -> encodeTagged' "TestnetId" {} - MainnetId -> encodeTagged' "MainnetId" {} - -instance Ord NetworkId where - compare = compare `on` toInt - -toInt :: NetworkId -> Int -toInt = case _ of - TestnetId -> 0 - MainnetId -> 1 - -derive instance Eq NetworkId -derive instance Generic NetworkId _ - -instance Show NetworkId where - show = genericShow - -instance Arbitrary NetworkId where - arbitrary = fromMaybe MainnetId <<< fromInt <$> chooseInt 0 1 - -fromInt :: Int -> Maybe NetworkId -fromInt = case _ of - 0 -> Just TestnetId - 1 -> Just MainnetId - _ -> Nothing - -instance AsCbor NetworkId where - encodeCbor = toCsl >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map fromCsl - -toCsl :: NetworkId -> Csl.NetworkId -toCsl = case _ of - TestnetId -> networkId_testnet - MainnetId -> networkId_mainnet - -fromCsl :: Csl.NetworkId -> NetworkId -fromCsl cslNetworkId = unsafePartial $ fromJust - $ fromInt <=< Int.fromNumber - $ networkId_kind cslNetworkId diff --git a/src/Types/OutputDatum.purs b/src/Types/OutputDatum.purs deleted file mode 100644 index e9e6965f8..000000000 --- a/src/Types/OutputDatum.purs +++ /dev/null @@ -1,101 +0,0 @@ -module Cardano.Types.OutputDatum - ( OutputDatum(OutputDatumHash, OutputDatum) - , outputDatumDataHash - , outputDatumDatum - , pprintOutputDatum - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) - , caseAesonObject - , fromString - , toStringifiedNumbersJson - , (.:) - ) -import Cardano.Types.AsCbor (encodeCbor) -import Cardano.Types.DataHash (DataHash) -import Cardano.Types.PlutusData (PlutusData, pprintPlutusData) -import Ctl.Internal.FromData (class FromData, genericFromData) -import Ctl.Internal.Helpers (encodeTagged') -import Ctl.Internal.Plutus.Types.DataSchema - ( class HasPlutusSchema - , type (:+) - , type (:=) - , type (@@) - , PNil - ) -import Ctl.Internal.ToData (class ToData, genericToData) -import Ctl.Internal.TypeLevel.Nat (S, Z) -import Ctl.Internal.Types.Datum (Datum) -import Data.ByteArray (byteArrayToHex) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) -import Data.Show.Generic (genericShow) - -data OutputDatum = OutputDatumHash DataHash | OutputDatum PlutusData - -derive instance Generic OutputDatum _ -derive instance Eq OutputDatum - -instance Show OutputDatum where - show = genericShow - -instance - HasPlutusSchema OutputDatum - ( "OutputDatumHash" - := PNil - @@ Z - :+ "OutputDatum" - := PNil - @@ (S Z) - :+ PNil - ) - -instance ToData OutputDatum where - toData = genericToData - -instance FromData OutputDatum where - fromData = genericFromData - -instance EncodeAeson OutputDatum where - encodeAeson = case _ of - OutputDatumHash r -> encodeTagged' "OutputDatumHash" r - OutputDatum r -> encodeTagged' "OutputDatum" r - -instance DecodeAeson OutputDatum where - decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ - \obj -> do - tag <- obj .: "tag" - case tag of - "OutputDatumHash" -> do - dataHash <- obj .: "contents" - pure $ OutputDatumHash dataHash - "OutputDatum" -> do - datum <- obj .: "contents" - pure $ OutputDatum datum - tagValue -> do - Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString - tagValue - -pprintOutputDatum :: OutputDatum -> TagSet -pprintOutputDatum = TagSet.fromArray <<< case _ of - OutputDatumHash hash -> - [ "datumHash" `tag` byteArrayToHex (unwrap $ encodeCbor hash) ] - OutputDatum d -> - [ "datum" `tagSetTag` pprintPlutusData d ] - -outputDatumDataHash :: OutputDatum -> Maybe DataHash -outputDatumDataHash (OutputDatumHash hash) = Just hash -outputDatumDataHash _ = Nothing - -outputDatumDatum :: OutputDatum -> Maybe PlutusData -outputDatumDatum (OutputDatum datum) = Just datum -outputDatumDatum _ = Nothing diff --git a/src/Types/PaymentCredential.purs b/src/Types/PaymentCredential.purs deleted file mode 100644 index 1794c4386..000000000 --- a/src/Types/PaymentCredential.purs +++ /dev/null @@ -1,51 +0,0 @@ -module Cardano.Types.PaymentCredential where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(..) - , caseAesonString - , encodeAeson - ) -import Cardano.Types.AsCbor (class AsCbor, decodeCbor, encodeCbor) -import Cardano.Types.Credential (Credential) -import Data.ByteArray (hexToByteArray) -import Data.Either (Either(..)) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(..), maybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) - --- in CSL, StakeCredential and PaymentCredential are the same type, because they are --- literally the same, but we treat them differently as domain types -newtype PaymentCredential = PaymentCredential Credential - -derive instance Newtype PaymentCredential _ -derive instance Generic PaymentCredential _ - -instance AsCbor PaymentCredential where - encodeCbor = unwrap >>> encodeCbor - decodeCbor = decodeCbor >>> map wrap - -instance Eq PaymentCredential where - eq = eq `on` encodeCbor - -instance Ord PaymentCredential where - compare = compare `on` encodeCbor - -instance Show PaymentCredential where - show = genericShow - --- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances -instance DecodeAeson PaymentCredential where - decodeAeson = do - maybe (Left $ TypeMismatch "Expected hex-encoded PaymentCredential") Right - <<< - caseAesonString Nothing - (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) - -instance EncodeAeson PaymentCredential where - encodeAeson sh = encodeAeson $ encodeCbor sh diff --git a/src/Types/PaymentPubKeyHash.purs b/src/Types/PaymentPubKeyHash.purs deleted file mode 100644 index 0a4b2bda6..000000000 --- a/src/Types/PaymentPubKeyHash.purs +++ /dev/null @@ -1,22 +0,0 @@ -module Cardano.Types.PaymentPubKeyHash where - -import Prelude - -import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash(Ed25519KeyHash)) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.ToData (class ToData) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype PaymentPubKeyHash = PaymentPubKeyHash Ed25519KeyHash - -derive instance Generic PaymentPubKeyHash _ -derive instance Newtype PaymentPubKeyHash _ -derive newtype instance Eq PaymentPubKeyHash -derive newtype instance FromData PaymentPubKeyHash -derive newtype instance Ord PaymentPubKeyHash -derive newtype instance ToData PaymentPubKeyHash - -instance Show PaymentPubKeyHash where - show = genericShow diff --git a/src/Types/PlutusData.purs b/src/Types/PlutusData.purs deleted file mode 100644 index 357aab003..000000000 --- a/src/Types/PlutusData.purs +++ /dev/null @@ -1,216 +0,0 @@ -module Cardano.Types.PlutusData - ( PlutusData - ( Constr - , Map - , List - , Integer - , Bytes - ) - , pprintPlutusData - , toCsl - , fromCsl - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(UnexpectedValue) - , decodeAeson - , encodeAeson - , toStringifiedNumbersJson - , (.:) - ) -import Cardano.Serialization.Lib - ( constrPlutusData_alternative - , constrPlutusData_data - , constrPlutusData_new - , packMapContainer - , plutusData_asBytes - , plutusData_asConstrPlutusData - , plutusData_asInteger - , plutusData_asList - , plutusData_asMap - , plutusData_newBytes - , plutusData_newConstrPlutusData - , plutusData_newInteger - , plutusData_newList - , plutusData_newMap - , unpackMapContainer - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Serialization.Lib.Internal - ( packListContainer - , unpackListContainer - ) -import Cardano.Types.BigInt (fromCsl, toCsl) as BigInt -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum as BigNum -import Control.Alt ((<|>)) -import Data.ByteArray (ByteArray, byteArrayToHex, hexToByteArray) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Profunctor.Strong ((***)) -import Data.Show.Generic (genericShow) -import Data.Traversable (for) -import Data.Tuple (Tuple) -import Data.Tuple.Nested (type (/\), (/\)) -import JS.BigInt (BigInt) -import JS.BigInt (toString) as BigInt -import Partial.Unsafe (unsafePartial) - --- Doesn't distinguish "BuiltinData" and "Data", unlike Plutus: -data PlutusData - = Constr BigNum (Array PlutusData) - | Map (Array (Tuple PlutusData PlutusData)) - | List (Array PlutusData) - | Integer BigInt - | Bytes ByteArray - -derive instance Eq PlutusData -derive instance Ord PlutusData -derive instance Generic PlutusData _ - -instance Show PlutusData where - show x = genericShow x - --- Based off Ogmios Datum Cache Json format, although we no longer use ODC -instance DecodeAeson PlutusData where - decodeAeson aeson = decodeConstr - <|> decodeMap - <|> decodeList - <|> decodeInteger - <|> decodeBytes - where - decodeConstr :: Either JsonDecodeError PlutusData - decodeConstr = do - x <- decodeAeson aeson - constr <- x .: "constr" - fields <- x .: "fields" - pure $ Constr constr fields - - decodeMap :: Either JsonDecodeError PlutusData - decodeMap = do - obj <- decodeAeson aeson - map1 <- (obj .: "map" :: Either _ (Array _)) - kvs <- for map1 \entryJson -> do - key <- entryJson .: "key" - value <- entryJson .: "value" - pure $ key /\ value - pure $ Map kvs - - decodeList :: Either JsonDecodeError PlutusData - decodeList = do - List <$> decodeAeson aeson - - decodeInteger :: Either JsonDecodeError PlutusData - decodeInteger = do - Integer <$> decodeAeson aeson - - decodeBytes :: Either JsonDecodeError PlutusData - decodeBytes = do - bytesHex <- decodeAeson aeson - case hexToByteArray bytesHex of - Nothing -> Left $ UnexpectedValue $ toStringifiedNumbersJson $ - encodeAeson bytesHex - Just res -> pure $ Bytes res - -instance EncodeAeson PlutusData where - encodeAeson (Constr constr fields) = encodeAeson - { "constr": constr - , "fields": fields - } - encodeAeson (Map elems) = encodeAeson - { "map": encodeAeson $ map - ( \(k /\ v) -> - { "key": k - , "value": v - } - ) - elems - } - encodeAeson (List elems) = encodeAeson elems - encodeAeson (Integer bi) = encodeAeson bi - encodeAeson (Bytes ba) = encodeAeson ba - -pprintPlutusData :: PlutusData -> TagSet -pprintPlutusData (Constr n children) = TagSet.fromArray - [ ("Constr " <> BigInt.toString (BigNum.toBigInt n)) `tagSetTag` - TagSet.fromArray (pprintPlutusData <$> children) - ] -pprintPlutusData (Map entries) = TagSet.fromArray - [ tagSetTag "Map" $ TagSet.fromArray $ - entries <#> \(key /\ value) -> - TagSet.fromArray - [ "key" `tagSetTag` pprintPlutusData key - , "value" `tagSetTag` pprintPlutusData value - ] - ] -pprintPlutusData (List children) = TagSet.fromArray - [ tagSetTag "List" $ TagSet.fromArray $ - children <#> pprintPlutusData - ] -pprintPlutusData (Integer n) = TagSet.fromArray - [ "Integer" `tag` BigInt.toString n ] -pprintPlutusData (Bytes bytes) = TagSet.fromArray - [ "Bytes" `tag` byteArrayToHex bytes ] - --- serialization - -toCsl :: PlutusData -> Csl.PlutusData -toCsl = case _ of - Constr alt list -> convertConstr alt list - Map mp -> convertPlutusMap mp - List lst -> convertPlutusList lst - Integer n -> convertPlutusInteger n - Bytes b -> plutusData_newBytes b - where - convertConstr :: BigNum -> Array PlutusData -> Csl.PlutusData - convertConstr alt list = - plutusData_newConstrPlutusData $ constrPlutusData_new (unwrap alt) - (packListContainer $ map toCsl list) - - convertPlutusList :: Array PlutusData -> Csl.PlutusData - convertPlutusList pd = - plutusData_newList <<< packListContainer $ map toCsl pd - - convertPlutusMap :: Array (PlutusData /\ PlutusData) -> Csl.PlutusData - convertPlutusMap mp = - plutusData_newMap $ packMapContainer $ map (toCsl *** toCsl) mp - - convertPlutusInteger :: BigInt -> Csl.PlutusData - convertPlutusInteger = - plutusData_newInteger <<< BigInt.toCsl - --- deserialization -fromCsl :: Csl.PlutusData -> PlutusData -fromCsl pd = unsafePartial $ fromJust $ - (convertPlutusConstr <$> toMaybe (plutusData_asConstrPlutusData pd)) - <|> (convertPlutusMap <$> toMaybe (plutusData_asMap pd)) - <|> (convertPlutusList <$> toMaybe (plutusData_asList pd)) - <|> (convertPlutusInteger <$> toMaybe (plutusData_asInteger pd)) - <|> - (Bytes <$> toMaybe (plutusData_asBytes pd)) - where - convertPlutusConstr :: Csl.ConstrPlutusData -> PlutusData - convertPlutusConstr constr = do - let - datas = unpackListContainer $ constrPlutusData_data constr - alt = constrPlutusData_alternative constr - Constr (wrap alt) $ map fromCsl datas - - convertPlutusMap :: Csl.PlutusMap -> PlutusData - convertPlutusMap pm = - Map $ map (fromCsl *** fromCsl) $ unpackMapContainer pm - - convertPlutusList :: Csl.PlutusList -> PlutusData - convertPlutusList = unpackListContainer >>> map fromCsl >>> List - - convertPlutusInteger :: Csl.BigInt -> PlutusData - convertPlutusInteger = Integer <<< BigInt.fromCsl diff --git a/src/Types/PlutusScript.purs b/src/Types/PlutusScript.purs deleted file mode 100644 index 91c54a2ab..000000000 --- a/src/Types/PlutusScript.purs +++ /dev/null @@ -1,52 +0,0 @@ -module Cardano.Types.PlutusScript where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Serialization.Lib - ( fromBytes - , plutusScript_bytes - , plutusScript_languageVersion - , plutusScript_newWithVersion - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Cardano.Types.Language (Language(PlutusV1, PlutusV2)) -import Cardano.Types.Language as Language -import Data.ByteArray (ByteArray) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) -import Data.Tuple.Nested (type (/\), (/\)) - --- | Corresponds to "Script" in Plutus -newtype PlutusScript = PlutusScript (ByteArray /\ Language) - -derive instance Generic PlutusScript _ -derive instance Newtype PlutusScript _ -derive newtype instance Eq PlutusScript -derive newtype instance Ord PlutusScript -derive newtype instance DecodeAeson PlutusScript -derive newtype instance EncodeAeson PlutusScript - -instance Show PlutusScript where - show = genericShow - -plutusV1Script :: ByteArray -> PlutusScript -plutusV1Script ba = PlutusScript (ba /\ PlutusV1) - -plutusV2Script :: ByteArray -> PlutusScript -plutusV2Script ba = PlutusScript (ba /\ PlutusV2) - -instance AsCbor PlutusScript where - encodeCbor = toCsl >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map fromCsl - -toCsl :: PlutusScript -> Csl.PlutusScript -toCsl (PlutusScript (bytes /\ lang)) = plutusScript_newWithVersion bytes $ - Language.toCsl lang - -fromCsl :: Csl.PlutusScript -> PlutusScript -fromCsl ps = PlutusScript - (plutusScript_bytes ps /\ Language.fromCsl (plutusScript_languageVersion ps)) diff --git a/src/Types/Pointer.purs b/src/Types/Pointer.purs deleted file mode 100644 index 96aa50bfd..000000000 --- a/src/Types/Pointer.purs +++ /dev/null @@ -1,24 +0,0 @@ -module Cardano.Types.Pointer where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.Slot (Slot) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype Pointer = Pointer - { slot :: Slot, txIndex :: BigNum, certIndex :: BigNum } - -derive instance Eq Pointer -derive instance Ord Pointer -derive instance Generic Pointer _ -derive instance Newtype Pointer _ - -instance Show Pointer where - show = genericShow - -derive newtype instance EncodeAeson Pointer -derive newtype instance DecodeAeson Pointer diff --git a/src/Types/PointerAddress.purs b/src/Types/PointerAddress.purs deleted file mode 100644 index 120fb51a3..000000000 --- a/src/Types/PointerAddress.purs +++ /dev/null @@ -1,50 +0,0 @@ -module Cardano.Types.PointerAddress where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , decodeAeson - , encodeAeson - ) -import Cardano.Serialization.Lib - ( fromBytes - , pointerAddress_fromAddress - , pointerAddress_toAddress - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd) -import Data.ByteArray (byteArrayToHex) -import Data.Either (note) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap) -import Data.Nullable (toMaybe) - -newtype PointerAddress = PointerAddress Csl.PointerAddress - -derive instance Generic PointerAddress _ -derive instance Newtype PointerAddress _ - -instance Eq PointerAddress where - eq = eqOrd - -instance Ord PointerAddress where - compare = compareViaCslBytes `on` (unwrap >>> pointerAddress_toAddress) - -instance Show PointerAddress where - -- TODO: make this instance lawful - show addr = show $ byteArrayToHex $ toBytes $ pointerAddress_toAddress - (unwrap addr) - -instance EncodeAeson PointerAddress where - encodeAeson = encodeAeson <<< toBytes <<< pointerAddress_toAddress <<< unwrap - -instance DecodeAeson PointerAddress where - decodeAeson addr = decodeAeson addr >>= \bytes -> - note (TypeMismatch "PointerAddress") $ PointerAddress <$> do - address <- fromBytes bytes - toMaybe $ pointerAddress_fromAddress address diff --git a/src/Types/PrivateKey.purs b/src/Types/PrivateKey.purs deleted file mode 100644 index c8e49d8fe..000000000 --- a/src/Types/PrivateKey.purs +++ /dev/null @@ -1,35 +0,0 @@ -module Cardano.Types.PrivateKey where - -import Prelude - -import Aeson (class EncodeAeson, encodeAeson) -import Cardano.Serialization.Lib - ( privateKey_asBytes - , privateKey_toBech32 - , publicKey_asBytes - , publicKey_fromBytes - , publicKey_toBech32 - ) -import Cardano.Serialization.Lib as Csl -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Helpers (eqOrd) -import Ctl.Internal.ToData (class ToData, toData) -import Data.Function (on) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Nullable (toMaybe) - -newtype PrivateKey = PrivateKey Csl.PrivateKey - -derive instance Newtype PrivateKey _ - -instance Eq PrivateKey where - eq = eqOrd - -instance Ord PrivateKey where - compare = compare `on` (unwrap >>> privateKey_asBytes) - -instance EncodeAeson PrivateKey where - encodeAeson = unwrap >>> privateKey_asBytes >>> encodeAeson - -instance Show PrivateKey where - show pk = "(PrivateKey " <> (privateKey_toBech32 <<< unwrap $ pk) <> ")" diff --git a/src/Types/PublicKey.purs b/src/Types/PublicKey.purs deleted file mode 100644 index 2dbdb77e6..000000000 --- a/src/Types/PublicKey.purs +++ /dev/null @@ -1,39 +0,0 @@ -module Cardano.Types.PublicKey where - -import Prelude - -import Aeson (class EncodeAeson, encodeAeson) -import Cardano.Serialization.Lib - ( publicKey_asBytes - , publicKey_fromBytes - , publicKey_toBech32 - ) -import Cardano.Serialization.Lib as Csl -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Helpers (eqOrd) -import Ctl.Internal.ToData (class ToData, toData) -import Data.Function (on) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Nullable (toMaybe) - -newtype PublicKey = PublicKey Csl.PublicKey - -derive instance Newtype PublicKey _ - -instance Eq PublicKey where - eq = eqOrd - -instance Ord PublicKey where - compare = compare `on` (unwrap >>> publicKey_asBytes) - -instance EncodeAeson PublicKey where - encodeAeson = unwrap >>> publicKey_asBytes >>> encodeAeson - -instance ToData PublicKey where - toData (PublicKey pk) = toData $ publicKey_asBytes pk - -instance FromData PublicKey where - fromData = map wrap <<< toMaybe <<< publicKey_fromBytes <=< fromData - -instance Show PublicKey where - show pk = "(PublicKey " <> (publicKey_toBech32 <<< unwrap $ pk) <> ")" diff --git a/src/Types/RewardAddress.purs b/src/Types/RewardAddress.purs deleted file mode 100644 index 278979193..000000000 --- a/src/Types/RewardAddress.purs +++ /dev/null @@ -1,81 +0,0 @@ -module Cardano.Types.RewardAddress where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(..) - , decodeAeson - , encodeAeson - ) -import Cardano.Serialization.Lib - ( address_fromBech32 - , address_networkId - , address_toBech32 - , rewardAddress_fromAddress - , rewardAddress_new - , rewardAddress_paymentCred - , rewardAddress_toAddress - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.Credential as Credential -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.NetworkId as NetworkId -import Cardano.Types.StakeCredential (StakeCredential) -import Ctl.Internal.Types.Aliases (Bech32String) -import Data.Either (note) -import Data.Generic.Rep (class Generic) -import Data.Int as Int -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Show.Generic (genericShow) -import Literals.Undefined (undefined) -import Partial.Unsafe (unsafePartial) -import Unsafe.Coerce (unsafeCoerce) - -data RewardAddress = RewardAddress NetworkId StakeCredential - -derive instance Generic RewardAddress _ -derive instance Ord RewardAddress -derive instance Eq RewardAddress - -instance Show RewardAddress where - show = genericShow - --- no AsCbor instance, because there is no to_bytes method in CSL - -instance EncodeAeson RewardAddress where - encodeAeson = toCsl >>> rewardAddress_toAddress - >>> flip address_toBech32 (unsafeCoerce undefined) - >>> encodeAeson - -instance DecodeAeson RewardAddress where - decodeAeson = note (TypeMismatch "RewardAddress") <<< fromBech32 <=< - decodeAeson - -toBech32 :: RewardAddress -> Bech32String -toBech32 = toCsl >>> rewardAddress_toAddress >>> flip address_toBech32 - (unsafeCoerce undefined) - -fromBech32 :: Bech32String -> Maybe RewardAddress -fromBech32 = map fromCsl <<< toMaybe <<< rewardAddress_fromAddress <=< - toMaybe <<< address_fromBech32 - -toCsl :: RewardAddress -> Csl.RewardAddress -toCsl = case _ of - RewardAddress nid sc -> - rewardAddress_new (Int.toNumber $ NetworkId.toInt nid) - (Credential.toCsl $ unwrap sc) - -fromCsl :: Csl.RewardAddress -> RewardAddress -fromCsl addr = - RewardAddress networkId - (wrap $ Credential.fromCsl $ rewardAddress_paymentCred addr) - where - networkId :: NetworkId - networkId = unsafePartial $ fromJust $ NetworkId.fromInt $ fromJust - $ Int.fromNumber - $ address_networkId - $ rewardAddress_toAddress addr diff --git a/src/Types/ScriptHash.purs b/src/Types/ScriptHash.purs deleted file mode 100644 index fa3f3b7ef..000000000 --- a/src/Types/ScriptHash.purs +++ /dev/null @@ -1,97 +0,0 @@ -module Cardano.Types.ScriptHash where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonString - , encodeAeson - ) -import Cardano.Serialization.Lib - ( fromBytes - , scriptHash_fromBech32 - , scriptHash_toBech32 - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor, decodeCbor, encodeCbor) -import Cardano.Types.PlutusData (PlutusData(Bytes)) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Bytes)) as Metadata -import Data.ByteArray - ( byteArrayFromIntArrayUnsafe - , byteArrayToHex - , hexToByteArray - ) -import Data.Either (Either(Right, Left)) -import Data.Function (on) -import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Nullable (toMaybe) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck (class Arbitrary) -import Test.QuickCheck.Gen (chooseInt, vectorOf) - --- | blake2b-224 hash digests of serialized monetary scripts -newtype ScriptHash = ScriptHash Csl.ScriptHash - -derive instance Newtype ScriptHash _ - -instance Eq ScriptHash where - eq = eq `on` encodeCbor - -instance Ord ScriptHash where - compare = compare `on` encodeCbor - -instance Show ScriptHash where - show edkh = "(ScriptHash " <> byteArrayToHex (unwrap $ encodeCbor edkh) <> ")" - -instance Arbitrary ScriptHash where - arbitrary = - unsafePartial $ - fromJust <<< decodeCbor <<< wrap <<< byteArrayFromIntArrayUnsafe - <$> vectorOf 28 (chooseInt 0 255) - -instance AsCbor ScriptHash where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap - -instance ToData ScriptHash where - toData = toData <<< unwrap <<< toBytes <<< unwrap - -instance FromData ScriptHash where - fromData (Bytes bytes) = decodeCbor $ wrap bytes - fromData _ = Nothing - -instance ToMetadata ScriptHash where - toMetadata = toMetadata <<< toBytes <<< unwrap - -instance FromMetadata ScriptHash where - fromMetadata (Metadata.Bytes bytes) = decodeCbor $ wrap bytes - fromMetadata _ = Nothing - --- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances -instance DecodeAeson ScriptHash where - decodeAeson = do - maybe (Left $ TypeMismatch "Expected hex-encoded script hash") Right <<< - caseAesonString Nothing - (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) - -instance EncodeAeson ScriptHash where - encodeAeson sh = encodeAeson $ encodeCbor sh - --- | Decodes a script hash from its Bech32 representation -scriptHashFromBech32 :: Bech32String -> Maybe ScriptHash -scriptHashFromBech32 = map wrap <<< toMaybe <<< scriptHash_fromBech32 - --- | Convert scriptHash to Bech32 representation with given prefix. --- | Will return `Nothing` if prefix is invalid (length, mixed-case, etc) --- | More on prefixes: https://cips.cardano.org/cips/cip5 -scriptHashToBech32Unsafe :: Partial => String -> ScriptHash -> Bech32String -scriptHashToBech32Unsafe prefix = unwrap >>> flip scriptHash_toBech32 prefix diff --git a/src/Types/ScriptRef.purs b/src/Types/ScriptRef.purs deleted file mode 100644 index 0fe75cf12..000000000 --- a/src/Types/ScriptRef.purs +++ /dev/null @@ -1,98 +0,0 @@ -module Cardano.Types.ScriptRef where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(UnexpectedValue, TypeMismatch) - , caseAesonObject - , fromString - , toStringifiedNumbersJson - , (.:) - ) -import Cardano.Serialization.Lib - ( fromBytes - , scriptRef_nativeScript - , scriptRef_newNativeScript - , scriptRef_newPlutusScript - , scriptRef_plutusScript - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Cardano.Types.NativeScript as NativeScript -import Cardano.Types.PlutusScript (PlutusScript) -import Cardano.Types.PlutusScript as PlutusScript -import Control.Alt ((<|>)) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) -import Ctl.Internal.Helpers (encodeTagged') -import Ctl.Internal.Types.Scripts - ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) - ) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Show.Generic (genericShow) -import Partial.Unsafe (unsafePartial) - -data ScriptRef = NativeScriptRef NativeScript | PlutusScriptRef PlutusScript - -scriptRefFromMintingPolicy :: MintingPolicy -> ScriptRef -scriptRefFromMintingPolicy = case _ of - PlutusMintingPolicy ps -> PlutusScriptRef ps - NativeMintingPolicy ns -> NativeScriptRef ns - -derive instance Eq ScriptRef -derive instance Generic ScriptRef _ - -instance Show ScriptRef where - show = genericShow - -instance AsCbor ScriptRef where - encodeCbor = toCsl >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map fromCsl - -instance EncodeAeson ScriptRef where - encodeAeson = case _ of - NativeScriptRef r -> encodeTagged' "NativeScriptRef" r - PlutusScriptRef r -> encodeTagged' "PlutusScriptRef" r - -instance DecodeAeson ScriptRef where - decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ - \obj -> do - tag <- obj .: "tag" - case tag of - "NativeScriptRef" -> do - nativeScript <- obj .: "contents" - pure $ NativeScriptRef nativeScript - "PlutusScriptRef" -> do - plutusScript <- obj .: "contents" - pure $ PlutusScriptRef plutusScript - tagValue -> do - Left $ UnexpectedValue $ toStringifiedNumbersJson $ fromString - tagValue - -getNativeScript :: ScriptRef -> Maybe NativeScript -getNativeScript (NativeScriptRef nativeScript) = Just nativeScript -getNativeScript _ = Nothing - -getPlutusScript :: ScriptRef -> Maybe PlutusScript -getPlutusScript (PlutusScriptRef plutusScript) = Just plutusScript -getPlutusScript _ = Nothing - -toCsl :: ScriptRef -> Csl.ScriptRef -toCsl = case _ of - NativeScriptRef ns -> scriptRef_newNativeScript $ NativeScript.toCsl ns - PlutusScriptRef ps -> scriptRef_newPlutusScript $ PlutusScript.toCsl ps - -fromCsl :: Csl.ScriptRef -> ScriptRef -fromCsl sr = unsafePartial $ fromJust $ - ( NativeScriptRef <<< NativeScript.fromCsl <$> toMaybe - (scriptRef_nativeScript sr) - ) <|> - ( PlutusScriptRef <<< PlutusScript.fromCsl <$> toMaybe - (scriptRef_plutusScript sr) - ) diff --git a/src/Types/Slot.purs b/src/Types/Slot.purs deleted file mode 100644 index 9e954d26b..000000000 --- a/src/Types/Slot.purs +++ /dev/null @@ -1,25 +0,0 @@ -module Cardano.Types.Slot (Slot(Slot)) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Types.BigNum (BigNum) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.ToData (class ToData) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype Slot = Slot BigNum - -derive instance Newtype Slot _ -derive instance Generic Slot _ -derive newtype instance Eq Slot -derive newtype instance Ord Slot -derive newtype instance DecodeAeson Slot -derive newtype instance EncodeAeson Slot -derive newtype instance FromData Slot -derive newtype instance ToData Slot - -instance Show Slot where - show = genericShow diff --git a/src/Types/StakeCredential.purs b/src/Types/StakeCredential.purs deleted file mode 100644 index 3234a325e..000000000 --- a/src/Types/StakeCredential.purs +++ /dev/null @@ -1,48 +0,0 @@ -module Cardano.Types.StakeCredential where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(..) - , caseAesonString - , encodeAeson - ) -import Cardano.Types.AsCbor (class AsCbor, decodeCbor, encodeCbor) -import Cardano.Types.Credential (Credential) -import Data.ByteArray (hexToByteArray) -import Data.Either (Either(..)) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(..), maybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) - -newtype StakeCredential = StakeCredential Credential - -derive instance Newtype StakeCredential _ -derive instance Generic StakeCredential _ - -instance AsCbor StakeCredential where - encodeCbor = unwrap >>> encodeCbor - decodeCbor = decodeCbor >>> map wrap - -instance Eq StakeCredential where - eq = eq `on` encodeCbor - -instance Ord StakeCredential where - compare = compare `on` encodeCbor - -instance Show StakeCredential where - show = genericShow - --- Corresponds to Plutus' `Plutus.V1.Ledger.Api.Script` Aeson instances -instance DecodeAeson StakeCredential where - decodeAeson = do - maybe (Left $ TypeMismatch "Expected hex-encoded StakeCredential") Right <<< - caseAesonString Nothing - (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) - -instance EncodeAeson StakeCredential where - encodeAeson sh = encodeAeson $ encodeCbor sh diff --git a/src/Types/StakePubKeyHash.purs b/src/Types/StakePubKeyHash.purs deleted file mode 100644 index 262f8a1ff..000000000 --- a/src/Types/StakePubKeyHash.purs +++ /dev/null @@ -1,22 +0,0 @@ -module Cardano.Types.StakePubKeyHash where - -import Prelude - -import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash(Ed25519KeyHash)) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.ToData (class ToData) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype StakePubKeyHash = StakePubKeyHash Ed25519KeyHash - -derive instance Generic StakePubKeyHash _ -derive instance Newtype StakePubKeyHash _ -derive newtype instance Eq StakePubKeyHash -derive newtype instance FromData StakePubKeyHash -derive newtype instance Ord StakePubKeyHash -derive newtype instance ToData StakePubKeyHash - -instance Show StakePubKeyHash where - show = genericShow diff --git a/src/Types/TransactionHash.purs b/src/Types/TransactionHash.purs deleted file mode 100644 index a8edf0b67..000000000 --- a/src/Types/TransactionHash.purs +++ /dev/null @@ -1,70 +0,0 @@ -module Cardano.Types.TransactionHash - ( TransactionHash(TransactionHash) - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor) -import Cardano.Types.BigNum (zero) as BigNum -import Cardano.Types.PlutusData (PlutusData(Constr)) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd, showFromBytes) -import Ctl.Internal.ToData (class ToData, toData) -import Data.ByteArray (byteArrayFromIntArrayUnsafe) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Nothing), fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck (class Coarbitrary, coarbitrary) -import Test.QuickCheck.Arbitrary (class Arbitrary) -import Test.QuickCheck.Gen (chooseInt, vectorOf) - --- | 32-bytes blake2b256 hash of a tx body. --- | NOTE. Plutus docs might incorrectly state that it uses --- | SHA256 for this purposes. -newtype TransactionHash = TransactionHash Csl.TransactionHash - -derive instance Generic TransactionHash _ -derive instance Newtype TransactionHash _ - -instance Eq TransactionHash where - eq = eqOrd - --- This is not newtyped derived because it will be used for ordering a --- `TransactionInput`, we want lexicographical ordering on the hexstring. -instance Ord TransactionHash where - compare = compareViaCslBytes `on` unwrap - -instance Show TransactionHash where - show = unwrap >>> showFromBytes "TransactionHash" - -instance Arbitrary TransactionHash where - arbitrary = unsafePartial $ - wrap <<< fromJust <<< fromBytes <<< byteArrayFromIntArrayUnsafe <$> vectorOf - 32 - (chooseInt 0 255) - -instance Coarbitrary TransactionHash where - coarbitrary (TransactionHash th) generator = coarbitrary (toBytes th) - generator - --- Plutus actually has this as a zero indexed record -instance FromData TransactionHash where - fromData (Constr n [ bytes ]) | n == BigNum.zero = TransactionHash <$> - (fromBytes =<< fromData bytes) - fromData _ = Nothing - --- Plutus actually has this as a zero indexed record -instance ToData TransactionHash where - toData (TransactionHash th) = Constr BigNum.zero [ toData $ toBytes th ] - -instance AsCbor TransactionHash where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap - -derive newtype instance EncodeAeson TransactionHash -derive newtype instance DecodeAeson TransactionHash diff --git a/src/Types/TransactionInput.purs b/src/Types/TransactionInput.purs deleted file mode 100644 index 6d80459df..000000000 --- a/src/Types/TransactionInput.purs +++ /dev/null @@ -1,83 +0,0 @@ -module Cardano.Types.TransactionInput - ( TransactionInput(TransactionInput) - , fromCsl - , toCsl - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.Serialization.Lib - ( transactionInput_index - , transactionInput_new - , transactionInput_transactionId - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.BigNum (zero) as BigNum -import Cardano.Types.PlutusData (PlutusData(Constr)) -import Cardano.Types.TransactionHash (TransactionHash(TransactionHash)) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.ToData (class ToData, toData) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Nothing)) -import Data.Newtype (class Newtype, unwrap) -import Data.Show.Generic (genericShow) -import Data.UInt (UInt, toInt) -import Data.UInt as UInt -import Test.QuickCheck.Arbitrary (class Coarbitrary, coarbitrary) - -newtype TransactionInput = TransactionInput - { transactionId :: TransactionHash - , index :: UInt - } - -derive instance Newtype TransactionInput _ -derive instance Generic TransactionInput _ -derive newtype instance Eq TransactionInput -derive newtype instance EncodeAeson TransactionInput -derive newtype instance DecodeAeson TransactionInput - --- Potential fix me: the below is based on a small sample of smart contract --- transactions, so fix this as required. --- Not newtype derived this because it is not lexicographical as `index` is tested --- before `transactionId`. We require lexicographical order over hexstring --- `TransactionHash`, then `index`, seemingly inline with Cardano/Plutus. -instance Ord TransactionInput where - compare (TransactionInput txInput) (TransactionInput txInput') = - case compare txInput.transactionId txInput'.transactionId of - EQ -> compare txInput.index txInput'.index - x -> x - -instance Show TransactionInput where - show = genericShow - --- `Constr` is used for indexing, and `TransactionInput` is always zero-indexed -instance FromData TransactionInput where - fromData (Constr n [ txId, idx ]) | n == BigNum.zero = - TransactionInput <$> - ({ transactionId: _, index: _ } <$> fromData txId <*> fromData idx) - fromData _ = Nothing - --- `Constr` is used for indexing, and `TransactionInput` is always zero-indexed -instance ToData TransactionInput where - toData (TransactionInput { transactionId, index }) = - Constr BigNum.zero [ toData transactionId, toData index ] - -instance Coarbitrary TransactionInput where - coarbitrary (TransactionInput input) generator = - coarbitrary (toInt input.index) $ coarbitrary input.transactionId generator - -fromCsl :: Csl.TransactionInput -> TransactionInput -fromCsl input = - let - index = UInt.fromNumber $ transactionInput_index input - transactionId = TransactionHash $ transactionInput_transactionId input - in - TransactionInput - { transactionId - , index - } - -toCsl :: TransactionInput -> Csl.TransactionInput -toCsl (TransactionInput { transactionId, index }) = do - transactionInput_new (unwrap transactionId) (UInt.toNumber index) diff --git a/src/Types/TransactionMetadatum.purs b/src/Types/TransactionMetadatum.purs deleted file mode 100644 index 97919634f..000000000 --- a/src/Types/TransactionMetadatum.purs +++ /dev/null @@ -1,58 +0,0 @@ -module Cardano.Types.TransactionMetadatum where - -import Prelude - -import Aeson (class EncodeAeson) -import Cardano.Serialization.Lib - ( packMapContainer - , transactionMetadatum_newBytes - , transactionMetadatum_newInt - , transactionMetadatum_newList - , transactionMetadatum_newMap - , transactionMetadatum_newText - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Serialization.Lib.Internal (packListContainer) -import Cardano.Types.Int (Int) as Int -import Ctl.Internal.Helpers (encodeMap, encodeTagged') -import Data.ByteArray (ByteArray) -import Data.Generic.Rep (class Generic) -import Data.Map (Map) -import Data.Map (toUnfoldable) as Map -import Data.Newtype (unwrap) -import Data.Profunctor.Strong ((***)) -import Data.Show.Generic (genericShow) - -data TransactionMetadatum - = MetadataMap (Map TransactionMetadatum TransactionMetadatum) - | MetadataList (Array TransactionMetadatum) - | Int Int.Int - | Bytes ByteArray - | Text String - -derive instance Eq TransactionMetadatum -derive instance Ord TransactionMetadatum -derive instance Generic TransactionMetadatum _ - -instance Show TransactionMetadatum where - show x = genericShow x - -instance EncodeAeson TransactionMetadatum where - encodeAeson = case _ of - MetadataMap m -> encodeTagged' "MetadataMap" $ encodeMap m - MetadataList arr -> encodeTagged' "MetadataList" arr - Int n -> encodeTagged' "Int" n - Bytes bytes -> encodeTagged' "Bytes" bytes - Text string -> encodeTagged' "Text" string - -toCsl - :: TransactionMetadatum -> Csl.TransactionMetadatum -toCsl = case _ of - MetadataMap mp -> - transactionMetadatum_newMap $ packMapContainer $ map (toCsl *** toCsl) $ - Map.toUnfoldable mp - MetadataList l -> - transactionMetadatum_newList $ packListContainer $ map toCsl l - Int int -> transactionMetadatum_newInt $ unwrap int - Bytes bytes -> transactionMetadatum_newBytes bytes - Text text -> transactionMetadatum_newText text diff --git a/src/Types/TransactionOutput.purs b/src/Types/TransactionOutput.purs deleted file mode 100644 index 073afceab..000000000 --- a/src/Types/TransactionOutput.purs +++ /dev/null @@ -1,94 +0,0 @@ -module Cardano.Types.TransactionOutput where - -import Prelude - -import Aeson (class EncodeAeson) -import Cardano.Serialization.Lib - ( transactionOutput_address - , transactionOutput_amount - , transactionOutput_dataHash - , transactionOutput_new - , transactionOutput_plutusData - , transactionOutput_scriptRef - , transactionOutput_setDataHash - , transactionOutput_setPlutusData - , transactionOutput_setScriptRef - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.Address (Address) -import Cardano.Types.Address as Address -import Cardano.Types.AsCbor (encodeCbor) -import Cardano.Types.OutputDatum (OutputDatum(..), pprintOutputDatum) -import Cardano.Types.PlutusData as PlutusData -import Cardano.Types.ScriptRef (ScriptRef) -import Cardano.Types.ScriptRef as ScriptRef -import Cardano.Types.Value (Value, pprintValue) -import Cardano.Types.Value as Value -import Control.Alt ((<|>)) -import Data.ByteArray (byteArrayToHex) -import Data.Foldable (for_) -import Data.Generic.Rep (class Generic) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Maybe (Maybe, maybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Show.Generic (genericShow) -import Effect.Unsafe (unsafePerformEffect) - -newtype TransactionOutput = TransactionOutput - { address :: Address - , amount :: Value - , datum :: Maybe OutputDatum - , scriptRef :: Maybe ScriptRef - } - -derive instance Generic TransactionOutput _ -derive instance Newtype TransactionOutput _ -derive newtype instance Eq TransactionOutput -derive newtype instance EncodeAeson TransactionOutput - -instance Show TransactionOutput where - show = genericShow - -pprintTransactionOutput :: TransactionOutput -> TagSet -pprintTransactionOutput - (TransactionOutput { address, amount, datum, scriptRef }) = - TagSet.fromArray $ - [ "address" `tag` show address - , "amount" `tagSetTag` pprintValue amount - ] <> outputDatumTagSet <> referenceScriptTagSet - where - outputDatumTagSet = maybe [] (pure <<< pprintOutputDatum) datum - referenceScriptTagSet = maybe [] - ( pure <<< tag "referenceScript" <<< byteArrayToHex <<< unwrap <<< - encodeCbor - ) - scriptRef - -fromCsl :: Csl.TransactionOutput -> TransactionOutput -fromCsl to = - TransactionOutput { address, amount, datum, scriptRef } - where - address = Address.fromCsl $ transactionOutput_address to - amount = Value.fromCsl $ transactionOutput_amount to - datum = - ( OutputDatum <<< PlutusData.fromCsl <$> toMaybe - (transactionOutput_plutusData to) - ) <|> - (OutputDatumHash <<< wrap <$> toMaybe (transactionOutput_dataHash to)) - scriptRef = ScriptRef.fromCsl <$> toMaybe (transactionOutput_scriptRef to) - -toCsl :: TransactionOutput -> Csl.TransactionOutput -toCsl (TransactionOutput { address, amount, datum, scriptRef }) = - unsafePerformEffect do - let - cslOutput = transactionOutput_new (Address.toCsl address) - (Value.toCsl amount) - for_ datum case _ of - OutputDatumHash dh -> transactionOutput_setDataHash cslOutput $ unwrap dh - OutputDatum dt -> transactionOutput_setPlutusData cslOutput $ - PlutusData.toCsl dt - for_ scriptRef $ transactionOutput_setScriptRef cslOutput <<< - ScriptRef.toCsl - pure cslOutput diff --git a/src/Types/TransactionUnspentOutput.purs b/src/Types/TransactionUnspentOutput.purs deleted file mode 100644 index 6bf08468e..000000000 --- a/src/Types/TransactionUnspentOutput.purs +++ /dev/null @@ -1,55 +0,0 @@ -module Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - , transactionUnspentOutputsToUtxoMap - , fromCsl - ) where - -import Prelude - -import Aeson (class EncodeAeson) -import Cardano.Serialization.Lib - ( transactionUnspentOutput_input - , transactionUnspentOutput_new - , transactionUnspentOutput_output - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.TransactionInput (TransactionInput) -import Cardano.Types.TransactionInput as TransactionInput -import Cardano.Types.TransactionOutput (TransactionOutput) -import Cardano.Types.TransactionOutput as TransactionOutput -import Cardano.Types.UtxoMap (UtxoMap) -import Data.Generic.Rep (class Generic) -import Data.Map as Map -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) -import Data.Tuple (Tuple(Tuple)) - -newtype TransactionUnspentOutput = TransactionUnspentOutput - { input :: TransactionInput - , output :: TransactionOutput - } - -derive instance Generic TransactionUnspentOutput _ -derive instance Newtype TransactionUnspentOutput _ -derive newtype instance Eq TransactionUnspentOutput -derive newtype instance EncodeAeson TransactionUnspentOutput - -instance Show TransactionUnspentOutput where - show = genericShow - -transactionUnspentOutputsToUtxoMap :: Array TransactionUnspentOutput -> UtxoMap -transactionUnspentOutputsToUtxoMap = Map.fromFoldable <<< map - \(TransactionUnspentOutput { input, output }) -> Tuple input output - -fromCsl - :: Csl.TransactionUnspentOutput -> TransactionUnspentOutput -fromCsl tuo = do - let - input = TransactionInput.fromCsl $ transactionUnspentOutput_input tuo - output = TransactionOutput.fromCsl $ transactionUnspentOutput_output tuo - TransactionUnspentOutput { input, output } - -toCsl :: TransactionUnspentOutput -> Csl.TransactionUnspentOutput -toCsl (TransactionUnspentOutput { input, output }) = - transactionUnspentOutput_new (TransactionInput.toCsl input) - (TransactionOutput.toCsl output) diff --git a/src/Types/UtxoMap.purs b/src/Types/UtxoMap.purs deleted file mode 100644 index bb50c9011..000000000 --- a/src/Types/UtxoMap.purs +++ /dev/null @@ -1,57 +0,0 @@ -module Cardano.Types.UtxoMap where - -import Prelude - -import Cardano.Serialization.Lib (toBytes) -import Cardano.Types.Address as Address -import Cardano.Types.AsCbor (encodeCbor) -import Cardano.Types.OutputDatum (OutputDatum(..)) -import Cardano.Types.PlutusData (pprintPlutusData) -import Cardano.Types.TransactionInput (TransactionInput(TransactionInput)) -import Cardano.Types.TransactionOutput (TransactionOutput(TransactionOutput)) -import Cardano.Types.Value (pprintValue) -import Data.ByteArray (byteArrayToHex) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Map (Map) -import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) -import Data.Tuple.Nested ((/\)) -import Data.UInt as UInt - -type UtxoMap = Map TransactionInput TransactionOutput - -pprintUtxoMap :: UtxoMap -> TagSet -pprintUtxoMap utxos = TagSet.fromArray $ - Map.toUnfoldable utxos <#> - \( TransactionInput { transactionId, index } /\ - TransactionOutput { address, amount, datum, scriptRef } - ) -> - let - datumTagSets = case datum of - Nothing -> [] - Just (OutputDatumHash datumHash) -> - [ TagSet.fromArray - [ "datum hash" `tag` byteArrayToHex - (unwrap $ encodeCbor datumHash) - ] - ] - Just (OutputDatum plutusData) -> - [ TagSet.fromArray - [ "datum" `tagSetTag` pprintPlutusData plutusData ] - ] - scriptRefTagSets = case scriptRef of - Nothing -> [] - Just ref -> [ "Script Reference" `tag` show ref ] - outputTagSet = - [ "amount" `tagSetTag` pprintValue amount - , "address" `tag` Address.toBech32 address - ] - <> datumTagSets - <> scriptRefTagSets - in - ( byteArrayToHex (toBytes $ unwrap transactionId) <> "#" <> - UInt.toString index - ) - `tagSetTag` TagSet.fromArray outputTagSet diff --git a/src/Types/VRFKeyHash.purs b/src/Types/VRFKeyHash.purs deleted file mode 100644 index 9b12be8fa..000000000 --- a/src/Types/VRFKeyHash.purs +++ /dev/null @@ -1,63 +0,0 @@ -module Cardano.Types.VRFKeyHash where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonString - , encodeAeson - ) -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.AsCbor (class AsCbor, decodeCbor) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.PlutusData (PlutusData(Constr)) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Helpers (compareViaCslBytes, eqOrd) -import Ctl.Internal.ToData (class ToData, toData) -import Data.ByteArray (byteArrayToHex, hexToByteArray) -import Data.Either (Either(Left, Right)) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing), maybe) -import Data.Newtype (class Newtype, unwrap, wrap) - -newtype VRFKeyHash = VRFKeyHash Csl.VRFKeyHash - -derive instance Newtype VRFKeyHash _ -derive instance Generic VRFKeyHash _ - -instance Show VRFKeyHash where - show = unwrap >>> toBytes >>> byteArrayToHex - -instance Eq VRFKeyHash where - eq = eqOrd - -instance Ord VRFKeyHash where - compare = compareViaCslBytes `on` unwrap - -instance FromData VRFKeyHash where - fromData (Constr n [ bytes ]) - | n == BigNum.zero = VRFKeyHash <$> - (fromBytes =<< fromData bytes) - fromData _ = Nothing - -instance ToData VRFKeyHash where - toData (VRFKeyHash th) = Constr BigNum.zero [ toData $ toBytes th ] - -instance EncodeAeson VRFKeyHash where - encodeAeson = unwrap >>> toBytes >>> byteArrayToHex >>> encodeAeson - -instance DecodeAeson VRFKeyHash where - decodeAeson = do - maybe (Left $ TypeMismatch "Expected hex-encoded VRFKeyHash") Right <<< - caseAesonString Nothing - (Just <=< decodeCbor <=< map wrap <<< hexToByteArray) - -instance AsCbor VRFKeyHash where - encodeCbor = unwrap >>> toBytes >>> wrap - decodeCbor = unwrap >>> fromBytes >>> map wrap - --- TODO: DecodeAeson diff --git a/src/Types/Value.purs b/src/Types/Value.purs deleted file mode 100644 index 2b7249041..000000000 --- a/src/Types/Value.purs +++ /dev/null @@ -1,275 +0,0 @@ -module Cardano.Types.Value where - -import Prelude hiding (join) - -import Aeson (class EncodeAeson, encodeAeson) -import Cardano.Serialization.Lib - ( value_coin - , value_multiasset - , value_newWithAssets - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.Asset (Asset(Asset, AdaAsset)) -import Cardano.Types.AssetClass (AssetClass(AssetClass)) -import Cardano.Types.AssetName (AssetName) -import Cardano.Types.BigInt (divCeil) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.Coin (Coin(Coin)) -import Cardano.Types.Coin as Coin -import Cardano.Types.MultiAsset - ( MultiAsset(MultiAsset) - , pprintMultiAsset - , unionNonAda - , unionWithNonAda - ) -import Cardano.Types.MultiAsset as MultiAsset -import Cardano.Types.ScriptHash (ScriptHash) -import Ctl.Internal.Partition (class Equipartition, equipartition) -import Data.Array.NonEmpty (NonEmptyArray) -import Data.Array.NonEmpty as NEArray -import Data.Foldable (all, foldl) -import Data.Generic.Rep (class Generic) -import Data.Lattice (class JoinSemilattice, class MeetSemilattice, join, meet) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Map (Map) -import Data.Map as Map -import Data.Maybe (Maybe, fromJust, fromMaybe) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Show.Generic (genericShow) -import Data.These (These(Both, That, This)) -import Data.Tuple (fst) -import Data.Tuple.Nested (type (/\), (/\)) -import JS.BigInt (BigInt) -import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) -import Prelude as Prelude -import Test.QuickCheck (class Arbitrary, arbitrary) - --- | In Plutus, Ada is is stored inside the map (with currency symbol and token --- | name being empty bytestrings). cardano-serialization-lib makes semantic --- | distinction between native tokens and Ada, and we follow this convention. -data Value = Value Coin MultiAsset - -derive instance Generic Value _ -derive instance Eq Value - -instance Arbitrary Value where - arbitrary = Value <$> arbitrary <*> arbitrary - -instance Show Value where - show = genericShow - -instance JoinSemilattice Value where - join (Value c1 m1) (Value c2 m2) = Value (c1 `join` c2) (m1 `join` m2) - -instance MeetSemilattice Value where - meet (Value c1 m1) (Value c2 m2) = Value (c1 `meet` c2) (m1 `meet` m2) - -instance EncodeAeson Value where - encodeAeson (Value coin nonAdaAsset) = encodeAeson - { coin - , nonAdaAsset - } - -instance Equipartition Value where - equipartition (Value coin nonAdaAssets) numParts = - NEArray.zipWith Value - (equipartition coin numParts) - (equipartition nonAdaAssets numParts) - -zero :: Value -zero = Value Coin.zero MultiAsset.empty - -add :: Value -> Value -> Maybe Value -add = unionWith BigNum.add - --- for compatibility with older CTL -mkValue :: Coin -> MultiAsset -> Value -mkValue = Value - -pprintValue :: Value -> TagSet -pprintValue value = TagSet.fromArray $ - [ "Lovelace" `tag` BigNum.toString (valueOf AdaAsset value) ] - <> - if nonAdaAssets /= MultiAsset.empty then - [ "Assets" `tagSetTag` pprintMultiAsset nonAdaAssets ] - else [] - where - nonAdaAssets = getMultiAsset value - -valueOf :: Asset -> Value -> BigNum -valueOf AdaAsset (Value coin _) = unwrap coin -valueOf (Asset sh tn) (Value _ (MultiAsset mp)) = fromMaybe BigNum.zero $ - Map.lookup sh mp >>= Map.lookup tn - -getCoin :: Value -> Coin -getCoin (Value coin _) = coin - -getMultiAsset :: Value -> MultiAsset -getMultiAsset (Value _ nonAdaAsset) = nonAdaAsset - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionWith --- | Combines `Value` with a binary function on `BigInt`s. -unionWith - :: (BigNum -> BigNum -> Maybe BigNum) - -> Value - -> Value - -> Maybe Value -unionWith f (Value (Coin c) na) (Value (Coin c') na') = - Value <$> (Coin <$> f c c') <*> unionWithNonAda f na na' - --- | Partitions a `Value` into smaller `Value`s, where the Ada amount and the --- | quantity of each token is equipartitioned across the resultant `Value`s, --- | with the goal that no token quantity in any of the resultant `Value`s --- | exceeds the given upper bound. --- | Taken from cardano-wallet: --- | https://github.com/input-output-hk/cardano-wallet/blob/d4b30de073f2b5eddb25bf12c2453abb42e8b352/lib/wallet/src/Cardano/Wallet/Primitive/Types/TokenBundle.hs#L381 -equipartitionValueWithTokenQuantityUpperBound - :: BigInt -> Value -> NonEmptyArray Value -equipartitionValueWithTokenQuantityUpperBound maxTokenQuantity value = - let - Value coin nonAdaAssets = value - ms /\ numParts = - equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets - maxTokenQuantity - in - NEArray.zipWith Value (equipartition coin numParts) ms - --- | Partitions a `MultiAsset` into smaller `MultiAsset`s, where the --- | quantity of each token is equipartitioned across the resultant --- | `MultiAsset`s, with the goal that no token quantity in any of the --- | resultant `MultiAsset`s exceeds the given upper bound. --- | Taken from cardano-wallet: --- | https://github.com/input-output-hk/cardano-wallet/blob/d4b30de073f2b5eddb25bf12c2453abb42e8b352/lib/wallet/src/Cardano/Wallet/Primitive/Types/TokenMap.hs#L780 -equipartitionAssetsWithTokenQuantityUpperBound - :: MultiAsset -> BigInt -> NonEmptyArray MultiAsset /\ Int -equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity = - case - maxTokenQuantity <= Prelude.zero || BigNum.toBigInt currentMaxTokenQuantity - <= maxTokenQuantity - of - true -> - NEArray.singleton nonAdaAssets /\ one - false -> - equipartition nonAdaAssets numParts /\ numParts - where - numParts :: Int - numParts = unsafePartial $ fromJust $ BigInt.toInt $ - divCeil (BigNum.toBigInt currentMaxTokenQuantity) maxTokenQuantity - - tokenQuantity :: (ScriptHash /\ AssetName /\ BigNum) -> BigNum - tokenQuantity (_ /\ _ /\ quantity) = quantity - - currentMaxTokenQuantity :: BigNum - currentMaxTokenQuantity = - foldl (\quantity tn -> quantity `max` tokenQuantity tn) BigNum.zero - (MultiAsset.flatten nonAdaAssets) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#geq --- | Check whether one `Value` is greater than or equal to another. See `Value` for an explanation of how operations on `Value`s work. -geq :: Value -> Value -> Boolean --- If both are zero then checkBinRel will be vacuously true, but this is fine. -geq = checkBinRel (>=) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#gt --- | Check whether one `Value` is strictly greater than another. See `Value` for an explanation of how operations on `Value`s work. -gt :: Value -> Value -> Boolean --- If both are zero then checkBinRel will be vacuously true. So we have a special case. -gt l r = not (isZero l && isZero r) && checkBinRel (>) l r - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#leq --- | Check whether one `Value` is less than or equal to another. See `Value` for an explanation of how operations on `Value`s work. -leq :: Value -> Value -> Boolean --- If both are zero then checkBinRel will be vacuously true, but this is fine. -leq = checkBinRel (<=) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#lt --- | Check whether one `Value` is strictly less than another. See `Value` for an explanation of how operations on `Value`s work. -lt :: Value -> Value -> Boolean --- If both are zero then checkBinRel will be vacuously true. So we have a special case. -lt l r = not (isZero l && isZero r) && checkBinRel (<) l r - --- From https://github.com/mlabs-haskell/bot-plutus-interface/blob/master/src/BotPlutusInterface/PreBalance.hs --- "isValueNat" uses unsafeFlattenValue which guards against zeros, so non-strict --- inequality is redundant. So we use strict equality instead. --- | Checks if every asset has positive quantity -isPositive :: Value -> Boolean -isPositive val = - ( all (\(_ /\ _ /\ a) -> a > BigNum.zero) $ MultiAsset.flatten $ getMultiAsset - val - ) && valueOf AdaAsset val > BigNum.zero - --- From https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#isZero --- | Check whether a `Value` is zero. -isZero :: Value -> Boolean -isZero (Value coin (MultiAsset nonAdaAsset)) = - all (all ((==) BigNum.zero)) nonAdaAsset && coin == Coin.zero - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkPred -checkPred :: (These BigNum BigNum -> Boolean) -> Value -> Value -> Boolean -checkPred f (Value (Coin l) ls) (Value (Coin r) rs) = - let - inner :: Map AssetName (These BigNum BigNum) -> Boolean - inner = all f -- this "all" may need to be checked? - in - f (Both l r) && all inner (unionNonAda ls rs) -- this "all" may need to be checked? - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkBinRel --- Check whether a binary relation holds for value pairs of two `Value` maps, --- supplying 0 where a key is only present in one of them. -checkBinRel :: (BigNum -> BigNum -> Boolean) -> Value -> Value -> Boolean -checkBinRel f l r = - let - unThese :: These BigNum BigNum -> Boolean - unThese k' = case k' of - This a -> f a BigNum.zero - That b -> f BigNum.zero b - Both a b -> f a b - in - checkPred unThese l r - -minus :: Value -> Value -> Maybe Value -minus = unionWith BigNum.sub - -assetToValue :: AssetClass -> BigNum -> Value -assetToValue (AssetClass cs tn) quantity = - Value Coin.zero (MultiAsset.singleton cs tn quantity) - -getAssetQuantity :: AssetClass -> Value -> BigNum -getAssetQuantity (AssetClass cs tn) = valueOf (Asset cs tn) - -valueAssets :: Value -> Array (AssetClass /\ BigNum) -valueAssets (Value _ assets) = - MultiAsset.flatten assets - <#> \(cs /\ tn /\ quantity) -> AssetClass cs tn /\ quantity - -valueAssetClasses :: Value -> Array AssetClass -valueAssetClasses = map fst <<< valueAssets - --- coin coversion - --- | Convert a `BigInt` to Ada-only `Value` -lovelaceValueOf :: BigNum -> Value -lovelaceValueOf = flip (Value <<< Coin) MultiAsset.empty - --- | Create a `Value` containing only the given `Coin`. -coinToValue :: Coin -> Value -coinToValue (Coin i) = lovelaceValueOf i - --- | Get the `Coin` in the given `Value`. -valueToCoin :: Value -> Coin -valueToCoin = Coin <<< valueOf AdaAsset - -fromCsl :: Csl.Value -> Value -fromCsl value = Value coin multiAsset - where - coin = Coin $ wrap $ value_coin value - multiAsset = fromMaybe MultiAsset.empty $ - MultiAsset.fromCsl <$> toMaybe (value_multiasset value) - -toCsl :: Value -> Csl.Value -toCsl (Value coin multiAsset) = - value_newWithAssets (unwrap $ unwrap coin) (MultiAsset.toCsl multiAsset) diff --git a/src/Types/Vkey.purs b/src/Types/Vkey.purs deleted file mode 100644 index 4870ecc9d..000000000 --- a/src/Types/Vkey.purs +++ /dev/null @@ -1,20 +0,0 @@ -module Cardano.Types.Vkey where - -import Prelude - -import Aeson (class EncodeAeson) -import Cardano.Types.PublicKey (PublicKey(..)) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype Vkey = Vkey PublicKey - -derive instance Generic Vkey _ -derive instance Newtype Vkey _ -derive newtype instance Eq Vkey -derive newtype instance Ord Vkey -derive newtype instance EncodeAeson Vkey - -instance Show Vkey where - show = genericShow diff --git a/test/Types/TokenName.purs b/test/Types/TokenName.purs index 9d4052a87..4e15b46bb 100644 --- a/test/Types/TokenName.purs +++ b/test/Types/TokenName.purs @@ -2,7 +2,7 @@ module Test.Ctl.Types.TokenName (suite) where import Prelude -import Cardano.Types.AssetName (mkTokenName) +import Cardano.Types.AssetName (mkAssetName) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (isJust) @@ -25,10 +25,10 @@ suite = do mayTkName `shouldSatisfy` isJust toFromAesonTest "Should roundtrip successfully" mayTkName toFromAesonTest "\\NUL\\NUL\\NUL Should roundtrip successfully" - (mkTokenNameFromHex "\x0\x0\x0") + (mkAssetNameFromHex "\x0\x0\x0") where - mkTokenNameFromHex = mkTokenName <<< hexToByteArrayUnsafe - tkNamesWithInvalidUtf8 = mkTokenNameFromHex <$> + mkAssetNameFromHex = mkAssetName <<< hexToByteArrayUnsafe + tkNamesWithInvalidUtf8 = mkAssetNameFromHex <$> [ "388178ead6628e2ff3faae2148ec906eb686b3661549c8581cd427433ffd9cf3" -- NOTE: Adopted from https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php#54805 , "c328" From ef66eb0cff707b74f02a97310a751586b3fc4b28 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Feb 2024 17:35:39 +0400 Subject: [PATCH 033/373] Reorganize the docs, link them from the changelog --- CHANGELOG.md | 2 +- doc/plutip-testing.md | 89 +++++++++++++++++++----------------- test/Plutip/SameWallets.purs | 7 ++- 3 files changed, 52 insertions(+), 46 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7b6a5e91..6ff03ff42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,7 +66,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added -- Sharing wallets between Plutip tests ([#1585](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1585)) +- Sharing wallets between Plutip tests - see [the docs for this feature](./doc/plutip-testing.md#sharing-wallet-state-between-tests) ([#1585](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1585)) - `runPlutipTestPlan` is a new function that executes a `ContractTestPlan`. - `sameWallets` is a new function that creates a `ContractTestPlan` from a `UtxoDistribution` and a `TestPlanM` of the same wallets running different `Contract`s. diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 49e2c4974..39f223080 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -13,6 +13,7 @@ - [Using Mote testing interface](#using-mote-testing-interface) - [Internal implementation overview](#internal-implementation-overview) - [Testing in Aff context](#testing-in-aff-context) + - [Sharing wallet state between tests](#sharing-wallet-state-between-tests) - [Writing checks in tests](#writing-checks-in-tests) - [Note on running clusters](#note-on-running-clusters) - [Note on SIGINT](#note-on-sigint) @@ -151,49 +152,6 @@ See the comments in the [`Ctl.Internal.Plutip.Server` module](../src/Internal/Pl In complicated protocols you might want to execute some `Contract`s in one test and then execute other `Contract`s which depend on some wallet-dependent state set up by the first batch of contracts, e.g. some authorization token is present at some wallet. Keeping these steps in separate sequential tests allows to pinpoint where things failed much easier, but currently CTL uses separate wallets for each test without an easy way to refer to wallets in other tests, so you have to call first batch of contracts again to replicate the state of the wallets, which in turn might fail or mess up your protocol, because the chain state is shared between tests for each top-level group. -To execute tests that share the same wallet state, the use of `Contract.Test.Plutip.runPlutipTestPlan` is suggested, which has a type of: - -```purescript -runPlutipTestPlan - :: PlutipConfig - -> ContractTestPlan - -> TestPlanM (Aff Unit) Unit -``` - -`runPlutipTestPlan` uses the exact same logic to perform `testPlutipContracts`, except it requires that wallets are pre-allocated inside of the second parameter, which has a type of `ContractTestPlan`. `Contract.Test.Plutip.sameWallets` is a helper function that can be used to create a `ContractTestPlan` where all of the tests use the same wallets that are defined in the `UtxoDistribution`, this function has a type of: - -```purescript -sameWallets - :: forall (distr :: Type) (wallets :: Type) - . UtxoDistribution distr wallets - => distr - -> TestPlanM (wallets -> Contract Unit) Unit - -> ContractTestPlan -``` - -Usage of `runPlutipTestPlan` is similar to that of `testPlutipContracts`, except that the distributions are handled slightly differently. Here's an example, while using `sameWallets`: - -```purescript -suite :: TestPlanM (Aff Unit) Unit -suite = runPlutipTestPlan config do - let - distribution :: Array BigInt /\ Array BigInt - distribution = ... - - sameWallets distribution $ - group "Test Plan" do - test "Test 1" \(alice /\ bob /\ charlie) -> do - ... - - test "Test 2" \(alice /\ bob /\ charlie) -> do - ... - - test "Test 3" \(alice /\ bob /\ charlie) -> do - ... -``` - -Another example for using `sameWallets` can be found [here](../test/Plutip/SameWallets.purs). - ### Testing in Aff context Second approach is to use the `Contract.Test.Plutip.runPlutipContract` function, which takes a single `Contract`, launches a Plutip cluster and executes the passed contract. @@ -261,6 +219,51 @@ In most cases at least two UTxOs per wallet are needed (one of which will be use Internally `runPlutipContract` runs a contract in an `Aff.bracket`, which creates a Plutip cluster on setup and terminates it during the shutdown or in case of an exception. Logs will be printed in case of an error. +### Sharing wallet state between tests + +To execute tests that share the same wallet state, the use of `Contract.Test.Plutip.runPlutipTestPlan` is suggested, which has a type of: + +```purescript +runPlutipTestPlan + :: PlutipConfig + -> ContractTestPlan + -> TestPlanM (Aff Unit) Unit +``` + +`runPlutipTestPlan` uses the exact same logic to perform `testPlutipContracts`, except it requires that wallets are pre-allocated inside of the second parameter, which has a type of `ContractTestPlan`. `Contract.Test.Plutip.sameWallets` is a helper function that can be used to create a `ContractTestPlan` where all of the tests use the same wallets that are defined in the `UtxoDistribution`, this function has a type of: + +```purescript +sameWallets + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution distr wallets + => distr + -> TestPlanM (wallets -> Contract Unit) Unit + -> ContractTestPlan +``` + +Usage of `runPlutipTestPlan` is similar to that of `testPlutipContracts`, except that the distributions are handled slightly differently. Here's an example of using `sameWallets`: + +```purescript +suite :: TestPlanM (Aff Unit) Unit +suite = runPlutipTestPlan config do + let + distribution :: Array BigInt /\ Array BigInt + distribution = ... + + sameWallets distribution $ + group "Test Plan" do + test "Test 1" \(alice /\ bob /\ charlie) -> do + ... + + test "Test 2" \(alice /\ bob /\ charlie) -> do + ... + + test "Test 3" \(alice /\ bob /\ charlie) -> do + ... +``` + +Another example for using `sameWallets` can be found [here](../test/Plutip/SameWallets.purs). + ### Writing checks in tests CTL will run contracts in your test bodies and will print errors for any failed tests. diff --git a/test/Plutip/SameWallets.purs b/test/Plutip/SameWallets.purs index 076cdab0c..0295cc393 100644 --- a/test/Plutip/SameWallets.purs +++ b/test/Plutip/SameWallets.purs @@ -24,8 +24,11 @@ suite :: PlutipTestPlan suite = let distribution :: InitialUTxOs /\ InitialUTxOs - distribution = [ BigInt.fromInt 1_000_000_000 ] /\ - [ BigInt.fromInt 1_000_000_000 ] + distribution = + -- Alice + [ BigInt.fromInt 1_000_000_000 ] /\ + -- Bob + [ BigInt.fromInt 1_000_000_000 ] tokenNameAscii :: String tokenNameAscii = "CTLNFT" From dacb1839fff1e0dc8cbd484ae5cc8163f26caaeb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Feb 2024 17:49:27 +0400 Subject: [PATCH 034/373] Simplify re-exports in Contract.Test.Plutip --- src/Contract/Test/Plutip.purs | 30 +++++++----------------------- src/Internal/Plutip/Server.purs | 2 ++ 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/src/Contract/Test/Plutip.purs b/src/Contract/Test/Plutip.purs index 010cc0390..755df6bd0 100644 --- a/src/Contract/Test/Plutip.purs +++ b/src/Contract/Test/Plutip.purs @@ -5,21 +5,21 @@ module Contract.Test.Plutip , PlutipTestPlan , defaultPlutipConfig , module X - , runPlutipTestPlan - , testPlutipContracts ) where -import Prelude - import Contract.Monad (runContractInEnv) as X import Contract.Wallet (withKeyWallet) as X import Ctl.Internal.Contract.Hooks (emptyHooks) -import Ctl.Internal.Plutip.Server (runPlutipContract, withPlutipContractEnv) as X -import Ctl.Internal.Plutip.Server (runPlutipTestPlan, testPlutipContracts) as Server +import Ctl.Internal.Plutip.Server + ( runPlutipContract + , withPlutipContractEnv + , runPlutipTestPlan + , testPlutipContracts + ) as X import Ctl.Internal.Plutip.Types (PlutipConfig) import Ctl.Internal.Plutip.Types (PlutipConfig) as X import Ctl.Internal.Test.ContractTest (ContractTest) -import Ctl.Internal.Test.ContractTest (ContractTest, ContractTestPlan) as Server +import Ctl.Internal.Test.ContractTest (ContractTestPlan) as Server import Ctl.Internal.Test.ContractTest ( noWallet , sameWallets @@ -37,22 +37,6 @@ import Data.Log.Level (LogLevel(Trace)) import Data.Maybe (Maybe(Nothing)) import Data.Time.Duration (Seconds(Seconds)) import Data.UInt as UInt -import Effect.Aff (Aff) -import Mote (MoteT) - --- | Run `Contract`s in tests in a single Plutip instance. -testPlutipContracts - :: PlutipConfig - -> MoteT Aff Server.ContractTest Aff Unit - -> MoteT Aff (Aff Unit) Aff Unit -testPlutipContracts = Server.testPlutipContracts - --- | Run `ContractTestPlan` tests in a single Plutip instance. -runPlutipTestPlan - :: PlutipConfig - -> Server.ContractTestPlan - -> MoteT Aff (Aff Unit) Aff Unit -runPlutipTestPlan = Server.runPlutipTestPlan -- | Type synonym for backwards compatibility. type PlutipTest = ContractTest diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index d943d0774..e2c2c8aff 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -162,6 +162,8 @@ testPlutipContracts plutipCfg tp = do runPlutipTestPlan plutipCfg plutipTestPlan -- | Run a `ContractTestPlan` in a (single) Plutip environment. +-- | Supports wallet reuse - see docs on sharing wallet state between +-- | wallets in `doc/plutip-testing.md`. runPlutipTestPlan :: PlutipConfig -> ContractTestPlan From db44bb25ae5193cf438755ddcb1a666fa36631df Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Feb 2024 17:53:58 +0400 Subject: [PATCH 035/373] Formatting --- src/Contract/Test/Plutip.purs | 2 +- src/Internal/BalanceTx/Error.purs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Contract/Test/Plutip.purs b/src/Contract/Test/Plutip.purs index 755df6bd0..459fd40f7 100644 --- a/src/Contract/Test/Plutip.purs +++ b/src/Contract/Test/Plutip.purs @@ -12,9 +12,9 @@ import Contract.Wallet (withKeyWallet) as X import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Plutip.Server ( runPlutipContract - , withPlutipContractEnv , runPlutipTestPlan , testPlutipContracts + , withPlutipContractEnv ) as X import Ctl.Internal.Plutip.Types (PlutipConfig) import Ctl.Internal.Plutip.Types (PlutipConfig) as X diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index fd230e96c..e04c96771 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -119,7 +119,7 @@ explainBalanceTxError = case _ of <> "\nTransaction output: " <> show txOut ExUnitsEvaluationFailed _ err -> - "Script evaluation failure while trying to estimate ExUnits: \n" <> show err + "Script evaluation failure while trying to estimate ExUnits:\n" <> show err InsufficientUtxoBalanceToCoverAsset asset -> "Insufficient UTxO balance to cover asset named " <> asset From d6dcd1abc8874922603bbe9199a8498750ae2ddc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 15 Feb 2024 19:01:38 +0400 Subject: [PATCH 036/373] Add success logging to all examples we serve in ByUrl --- examples/ByUrl.purs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index e4f75e7e1..e5aa8f68c 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -30,6 +30,7 @@ import Contract.Config , testnetNamiConfig , testnetNuFiConfig ) +import Contract.Log (logInfo') import Contract.Monad (Contract) import Contract.Test.E2E (E2EConfigName, E2ETestName, addLinks, route) import Ctl.Examples.AdditionalUtxos as AdditionalUtxos @@ -195,7 +196,7 @@ mkBlockfrostPreprodConfig apiKey = } examples :: Map E2ETestName (Contract Unit) -examples = Map.fromFoldable +examples = addSuccessLog <$> Map.fromFoldable [ "AdditionalUtxos" /\ AdditionalUtxos.contract false , "AlwaysMints" /\ AlwaysMints.contract , "NativeScriptMints" /\ NativeScriptMints.contract @@ -227,3 +228,6 @@ examples = Map.fromFoldable , "ChangeGeneration1-3" /\ ChangeGeneration.checkChangeOutputsDistribution 1 3 7 ] + +addSuccessLog :: Contract Unit -> Contract Unit +addSuccessLog contract = contract *> logInfo' "Success!" From 93584fba743293f590dd9cf17d25e947a819d770 Mon Sep 17 00:00:00 2001 From: Ilia Rodionov <103441514+euonymos@users.noreply.github.com> Date: Fri, 16 Feb 2024 15:38:17 -0600 Subject: [PATCH 037/373] docs: note on reference script example --- examples/PlutusV2/ReferenceScripts.purs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs index a52783f7a..3612f1615 100644 --- a/examples/PlutusV2/ReferenceScripts.purs +++ b/examples/PlutusV2/ReferenceScripts.purs @@ -43,6 +43,9 @@ example :: ContractParams -> Effect Unit example cfg = launchAff_ do runContract cfg contract +-- NOTE: If you are looking for an example of the most common case of +-- using reference scripts by referencing an output and not spending it, +-- you likely need to look at the example in `ReferenceInputsAndScripts.purs`. contract :: Contract Unit contract = do logInfo' "Running Examples.PlutusV2.ReferenceScripts" From 877f0ca15b7ecdd6ae02f5e3d48676827da059f3 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 20:22:57 +0400 Subject: [PATCH 038/373] Use @mlabs-haskell/uplc-apply-args --- package-lock.json | 21 +++++++++++++++++++-- package.json | 3 +-- src/Internal/ApplyArgs.js | 10 +--------- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7de19f48f..1d84d350d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,8 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", + "@mlabs-haskell/uplc-apply-args": "1.0.0", "@noble/secp256k1": "^1.7.0", - "apply-args-browser": "0.0.1", - "apply-args-nodejs": "0.0.1", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", @@ -512,6 +511,15 @@ "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, + "node_modules/@mlabs-haskell/uplc-apply-args": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.0.tgz", + "integrity": "sha512-jygKgElPSmrjBifiec8lLAjcKAPDOvDTv0hCW6jfX+/hnlaI8p9w5amv6jeCMmnr3/ncRzE9JrcuVJoB5lBwLA==", + "dependencies": { + "apply-args-browser": "^0.0.1", + "apply-args-nodejs": "^0.0.1" + } + }, "node_modules/@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -6628,6 +6636,15 @@ "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, + "@mlabs-haskell/uplc-apply-args": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.0.tgz", + "integrity": "sha512-jygKgElPSmrjBifiec8lLAjcKAPDOvDTv0hCW6jfX+/hnlaI8p9w5amv6jeCMmnr3/ncRzE9JrcuVJoB5lBwLA==", + "requires": { + "apply-args-browser": "^0.0.1", + "apply-args-nodejs": "^0.0.1" + } + }, "@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", diff --git a/package.json b/package.json index 277485738..beabb53ab 100755 --- a/package.json +++ b/package.json @@ -39,8 +39,7 @@ "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", - "apply-args-browser": "0.0.1", - "apply-args-nodejs": "0.0.1", + "@mlabs-haskell/uplc-apply-args": "1.0.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js index bc93f773d..5866d7bf7 100644 --- a/src/Internal/ApplyArgs.js +++ b/src/Internal/ApplyArgs.js @@ -1,13 +1,5 @@ -/* global BROWSER_RUNTIME */ - import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -let apply_args; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - apply_args = await import("apply-args-browser"); -} else { - apply_args = await import("apply-args-nodejs"); -} +import * as apply_args from "@mlabs-haskell/uplc-apply-args"; /** * @param {} left From ecf69d5105b2803648f996e208f399012d2705fe Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 20:28:29 +0400 Subject: [PATCH 039/373] Update the template --- templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/package-lock.json | 21 +++++++++++++++++++-- templates/ctl-scaffold/package.json | 3 +-- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 6f82969c7..c020cc0ea 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1707923074, - "narHash": "sha256-JdUKKiAI90oAxpl/4hyvQWXtYbWEa/HKdpF2N2H2qA8=", + "lastModified": 1708446177, + "narHash": "sha256-rdEhIHHaczHTifqG5Yz2FH43TR3XVwsfr66D8hSZQAs=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "aac3736387dec3d22c7a3222d46244911b283856", + "rev": "877f0ca15b7ecdd6ae02f5e3d48676827da059f3", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "aac3736387dec3d22c7a3222d46244911b283856", + "rev": "877f0ca15b7ecdd6ae02f5e3d48676827da059f3", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 3c04a2753..fbd502cda 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "aac3736387dec3d22c7a3222d46244911b283856"; + rev = "877f0ca15b7ecdd6ae02f5e3d48676827da059f3"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 5ac6f4f09..7cc5a9151 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -13,9 +13,8 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", + "@mlabs-haskell/uplc-apply-args": "1.0.0", "@noble/secp256k1": "^1.7.0", - "apply-args-browser": "0.0.1", - "apply-args-nodejs": "0.0.1", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", @@ -511,6 +510,15 @@ "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, + "node_modules/@mlabs-haskell/uplc-apply-args": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.0.tgz", + "integrity": "sha512-jygKgElPSmrjBifiec8lLAjcKAPDOvDTv0hCW6jfX+/hnlaI8p9w5amv6jeCMmnr3/ncRzE9JrcuVJoB5lBwLA==", + "dependencies": { + "apply-args-browser": "^0.0.1", + "apply-args-nodejs": "^0.0.1" + } + }, "node_modules/@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -5771,6 +5779,15 @@ "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, + "@mlabs-haskell/uplc-apply-args": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.0.tgz", + "integrity": "sha512-jygKgElPSmrjBifiec8lLAjcKAPDOvDTv0hCW6jfX+/hnlaI8p9w5amv6jeCMmnr3/ncRzE9JrcuVJoB5lBwLA==", + "requires": { + "apply-args-browser": "^0.0.1", + "apply-args-nodejs": "^0.0.1" + } + }, "@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index fbaf0c66d..a91bdfa7e 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -29,9 +29,8 @@ "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", + "@mlabs-haskell/uplc-apply-args": "1.0.0", "@noble/secp256k1": "^1.7.0", - "apply-args-browser": "0.0.1", - "apply-args-nodejs": "0.0.1", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 436bf579c..4524848be 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -298,7 +298,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "aac3736387dec3d22c7a3222d46244911b283856" + , version = "877f0ca15b7ecdd6ae02f5e3d48676827da059f3" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index d6a1bba1a..e67d6d01a 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -199,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "aac3736387dec3d22c7a3222d46244911b283856"; + version = "877f0ca15b7ecdd6ae02f5e3d48676827da059f3"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "aac3736387dec3d22c7a3222d46244911b283856"; - sha256 = "03x8yrhkfxlifv5g2sw4nmhysra1mwff4zwrqq04mxq840m0mm95"; + rev = "877f0ca15b7ecdd6ae02f5e3d48676827da059f3"; + sha256 = "02s0k4ag50xfmwghnmyp3m6kfzhlys6fb1psi79k2wysf4h23ldd"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From f2b3ee138496a70d170fa2ac39950a726b6cbfa5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 21:55:00 +0400 Subject: [PATCH 040/373] Use vendored cardano-message-signing --- package-lock.json | 21 +++++++++++++++++++-- package.json | 5 ++--- src/Internal/Wallet/Cip30/SignData.js | 9 +-------- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1d84d350d..14fd32136 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,7 @@ "version": "5.0.0", "license": "MIT", "dependencies": { - "@emurgo/cardano-message-signing-browser": "1.0.1", - "@emurgo/cardano-message-signing-nodejs": "1.0.1", + "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "1.0.0", @@ -491,6 +490,15 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "node_modules/@mlabs-haskell/cardano-message-signing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-message-signing/-/cardano-message-signing-1.0.1.tgz", + "integrity": "sha512-LNX+Msq1rJ86d5mmaR2Om5tUqB0ZthfE69fpsZcxOYDHNw5s+qtcCyNEmzAWfHC+uIJ4NDEJA8Gk2RfWto7ChA==", + "dependencies": { + "@emurgo/cardano-message-signing-browser": "^1.0.1", + "@emurgo/cardano-message-signing-nodejs": "^1.0.1" + } + }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", @@ -6616,6 +6624,15 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "@mlabs-haskell/cardano-message-signing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-message-signing/-/cardano-message-signing-1.0.1.tgz", + "integrity": "sha512-LNX+Msq1rJ86d5mmaR2Om5tUqB0ZthfE69fpsZcxOYDHNw5s+qtcCyNEmzAWfHC+uIJ4NDEJA8Gk2RfWto7ChA==", + "requires": { + "@emurgo/cardano-message-signing-browser": "^1.0.1", + "@emurgo/cardano-message-signing-nodejs": "^1.0.1" + } + }, "@mlabs-haskell/cardano-serialization-lib-gc": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", diff --git a/package.json b/package.json index beabb53ab..59abc9ea5 100755 --- a/package.json +++ b/package.json @@ -34,12 +34,11 @@ "author": "", "license": "MIT", "dependencies": { - "@emurgo/cardano-message-signing-browser": "1.0.1", - "@emurgo/cardano-message-signing-nodejs": "1.0.1", + "@mlabs-haskell/cardano-message-signing": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", - "@noble/secp256k1": "^1.7.0", "@mlabs-haskell/uplc-apply-args": "1.0.0", + "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", diff --git a/src/Internal/Wallet/Cip30/SignData.js b/src/Internal/Wallet/Cip30/SignData.js index b105a9ee3..ee0d75d58 100644 --- a/src/Internal/Wallet/Cip30/SignData.js +++ b/src/Internal/Wallet/Cip30/SignData.js @@ -1,11 +1,4 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-message-signing-browser"); -} else { - lib = await import("@emurgo/cardano-message-signing-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-message-signing"; // ----------------------------------------------------------------------------- // COSESign1Builder From 52aafc9ade9d9ed2a39a186a77d1fbf3e763269e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 21:58:42 +0400 Subject: [PATCH 041/373] Update the template --- templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/package-lock.json | 21 +++++++++++++++++++-- templates/ctl-scaffold/package.json | 3 +-- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index c020cc0ea..d33f73937 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1708446177, - "narHash": "sha256-rdEhIHHaczHTifqG5Yz2FH43TR3XVwsfr66D8hSZQAs=", + "lastModified": 1708451700, + "narHash": "sha256-8OwXx/06Eb3E1ODew4602MAJ+tsAiQle1AJyuc3JL/M=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "877f0ca15b7ecdd6ae02f5e3d48676827da059f3", + "rev": "f2b3ee138496a70d170fa2ac39950a726b6cbfa5", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "877f0ca15b7ecdd6ae02f5e3d48676827da059f3", + "rev": "f2b3ee138496a70d170fa2ac39950a726b6cbfa5", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index fbd502cda..1c9ad81ac 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "877f0ca15b7ecdd6ae02f5e3d48676827da059f3"; + rev = "f2b3ee138496a70d170fa2ac39950a726b6cbfa5"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 7cc5a9151..a0bf60004 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -9,8 +9,7 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@emurgo/cardano-message-signing-browser": "1.0.1", - "@emurgo/cardano-message-signing-nodejs": "1.0.1", + "@mlabs-haskell/cardano-message-signing": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "1.0.0", @@ -490,6 +489,15 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "node_modules/@mlabs-haskell/cardano-message-signing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-message-signing/-/cardano-message-signing-1.0.1.tgz", + "integrity": "sha512-LNX+Msq1rJ86d5mmaR2Om5tUqB0ZthfE69fpsZcxOYDHNw5s+qtcCyNEmzAWfHC+uIJ4NDEJA8Gk2RfWto7ChA==", + "dependencies": { + "@emurgo/cardano-message-signing-browser": "^1.0.1", + "@emurgo/cardano-message-signing-nodejs": "^1.0.1" + } + }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", @@ -5759,6 +5767,15 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "@mlabs-haskell/cardano-message-signing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-message-signing/-/cardano-message-signing-1.0.1.tgz", + "integrity": "sha512-LNX+Msq1rJ86d5mmaR2Om5tUqB0ZthfE69fpsZcxOYDHNw5s+qtcCyNEmzAWfHC+uIJ4NDEJA8Gk2RfWto7ChA==", + "requires": { + "@emurgo/cardano-message-signing-browser": "^1.0.1", + "@emurgo/cardano-message-signing-nodejs": "^1.0.1" + } + }, "@mlabs-haskell/cardano-serialization-lib-gc": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index a91bdfa7e..3f22c694a 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -25,8 +25,7 @@ "author": "", "license": "MIT", "dependencies": { - "@emurgo/cardano-message-signing-browser": "1.0.1", - "@emurgo/cardano-message-signing-nodejs": "1.0.1", + "@mlabs-haskell/cardano-message-signing": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "1.0.0", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 4524848be..289eb29f7 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -298,7 +298,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "877f0ca15b7ecdd6ae02f5e3d48676827da059f3" + , version = "f2b3ee138496a70d170fa2ac39950a726b6cbfa5" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index e67d6d01a..b47e3ac34 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -199,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "877f0ca15b7ecdd6ae02f5e3d48676827da059f3"; + version = "f2b3ee138496a70d170fa2ac39950a726b6cbfa5"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "877f0ca15b7ecdd6ae02f5e3d48676827da059f3"; - sha256 = "02s0k4ag50xfmwghnmyp3m6kfzhlys6fb1psi79k2wysf4h23ldd"; + rev = "f2b3ee138496a70d170fa2ac39950a726b6cbfa5"; + sha256 = "1wrgr76vjwh2sig0k280vgx0kh6qnj7c7pp0sk2bs49szp3igv7h"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From a183bca633f635d97e081cc76b8080958b8d5613 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 22:12:21 +0400 Subject: [PATCH 042/373] Use nodejs affjax driver for the browser as well --- src/Internal/Affjax.js | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/Internal/Affjax.js b/src/Internal/Affjax.js index 83a9091df..d48f45ccf 100644 --- a/src/Internal/Affjax.js +++ b/src/Internal/Affjax.js @@ -1,21 +1,15 @@ -/* global BROWSER_RUNTIME */ +export const driver = nodeDriver; -export const driver = async () => { - if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - return browserDriver; - } else { - return await nodeDriver(); - } -}; +// we rely on the bundler to inject polyfills for the browser -const browserDriver = { - newXHR: function () { - return new XMLHttpRequest(); - }, - fixupUrl: function (url) { - return url || "/"; - } -}; +// const browserDriver = { +// newXHR: function () { +// return new XMLHttpRequest(); +// }, +// fixupUrl: function (url) { +// return url || "/"; +// } +// }; async function nodeDriver() { const { default: XHR } = await import("xhr2"); From c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 22:29:12 +0400 Subject: [PATCH 043/373] Use web-encoding pkg instead of TextDecoder from utils --- package-lock.json | 77 +++++++++++++++++---------------- package.json | 1 + src/Internal/Types/TokenName.js | 13 +----- 3 files changed, 42 insertions(+), 49 deletions(-) diff --git a/package-lock.json b/package-lock.json index 14fd32136..3ccead1b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", "utf-8-validate": "^5.0.10", + "web-encoding": "^1.1.5", "ws": "8.4.0", "xhr2": "0.2.1" }, @@ -986,6 +987,12 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "optional": true + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -1191,7 +1198,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -1617,7 +1623,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -2747,7 +2752,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -2812,14 +2816,12 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/get-intrinsic": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -2885,7 +2887,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -2909,7 +2910,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -2942,7 +2942,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2954,7 +2953,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2966,7 +2964,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -3328,7 +3325,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3379,7 +3375,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -3437,7 +3432,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3532,7 +3526,6 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, "dependencies": { "which-typed-array": "^1.1.11" }, @@ -5812,7 +5805,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -5911,6 +5903,17 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "dependencies": { + "util": "^0.12.3" + }, + "optionalDependencies": { + "@zxing/text-encoding": "0.9.0" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -6299,7 +6302,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -7085,6 +7087,12 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "optional": true + }, "abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -7249,8 +7257,7 @@ "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "bail": { "version": "1.0.5", @@ -7572,7 +7579,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -8456,7 +8462,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "requires": { "is-callable": "^1.1.3" } @@ -8505,14 +8510,12 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-intrinsic": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -8560,7 +8563,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "requires": { "get-intrinsic": "^1.1.3" } @@ -8581,7 +8583,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -8604,20 +8605,17 @@ "has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -8883,7 +8881,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -8907,8 +8904,7 @@ "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-core-module": { "version": "2.13.0", @@ -8941,7 +8937,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -9002,7 +8997,6 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, "requires": { "which-typed-array": "^1.1.11" } @@ -10732,7 +10726,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -10811,6 +10804,15 @@ "minimalistic-assert": "^1.0.0" } }, + "web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "requires": { + "@zxing/text-encoding": "0.9.0", + "util": "^0.12.3" + } + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -11072,7 +11074,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", diff --git a/package.json b/package.json index 59abc9ea5..5f3019edc 100755 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", "utf-8-validate": "^5.0.10", + "web-encoding": "^1.1.5", "ws": "8.4.0", "xhr2": "0.2.1" }, diff --git a/src/Internal/Types/TokenName.js b/src/Internal/Types/TokenName.js index f432d3927..06d29c9c9 100644 --- a/src/Internal/Types/TokenName.js +++ b/src/Internal/Types/TokenName.js @@ -1,17 +1,8 @@ -/* global BROWSER_RUNTIME */ - -// `TextDecoder` is not available in `node`, use polyfill in that case -let OurTextDecoder; -if (typeof BROWSER_RUNTIME == "undefined" || !BROWSER_RUNTIME) { - const util = await import("util"); - OurTextDecoder = util.TextDecoder; -} else { - OurTextDecoder = TextDecoder; -} +import { TextDecoder } from "web-encoding"; export function _decodeUtf8(buffer) { return left => right => { - let decoder = new OurTextDecoder("utf-8", { fatal: true }); // Without fatal=true it never fails + let decoder = new TextDecoder("utf-8", { fatal: true }); // Without fatal=true it never fails try { return right(decoder.decode(buffer)); From 5e95ab0b9b43e0407618373c26fa03b0292c5fb8 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 22:32:11 +0400 Subject: [PATCH 044/373] Update the template --- templates/ctl-scaffold/flake.lock | 8 +-- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/package-lock.json | 77 ++++++++++++----------- templates/ctl-scaffold/package.json | 1 + templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +- 6 files changed, 49 insertions(+), 47 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index d33f73937..ee817b693 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1708451700, - "narHash": "sha256-8OwXx/06Eb3E1ODew4602MAJ+tsAiQle1AJyuc3JL/M=", + "lastModified": 1708453752, + "narHash": "sha256-n/6Q1UBAUkZwa9YufvVaDxTfUypvqakl3h4nSqRlepw=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "f2b3ee138496a70d170fa2ac39950a726b6cbfa5", + "rev": "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "f2b3ee138496a70d170fa2ac39950a726b6cbfa5", + "rev": "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 1c9ad81ac..fa94bee8e 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "f2b3ee138496a70d170fa2ac39950a726b6cbfa5"; + rev = "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index a0bf60004..1e37778cf 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -24,6 +24,7 @@ "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", "utf-8-validate": "^5.0.10", + "web-encoding": "^1.1.5", "ws": "8.4.0", "xhr2": "0.2.1" }, @@ -947,6 +948,12 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "optional": true + }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -1143,7 +1150,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -1559,7 +1565,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -2519,7 +2524,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -2575,14 +2579,12 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/get-intrinsic": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -2648,7 +2650,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -2672,7 +2673,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -2705,7 +2705,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2717,7 +2716,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -2729,7 +2727,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -3048,7 +3045,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -3076,7 +3072,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -3124,7 +3119,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -3200,7 +3194,6 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, "dependencies": { "which-typed-array": "^1.1.11" }, @@ -4995,7 +4988,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -5064,6 +5056,17 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "dependencies": { + "util": "^0.12.3" + }, + "optionalDependencies": { + "@zxing/text-encoding": "0.9.0" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -5452,7 +5455,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -6190,6 +6192,12 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "@zxing/text-encoding": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", + "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "optional": true + }, "abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -6345,8 +6353,7 @@ "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, "balanced-match": { "version": "1.0.2", @@ -6662,7 +6669,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -7430,7 +7436,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "requires": { "is-callable": "^1.1.3" } @@ -7473,14 +7478,12 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-intrinsic": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -7528,7 +7531,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "requires": { "get-intrinsic": "^1.1.3" } @@ -7549,7 +7551,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -7572,20 +7573,17 @@ "has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "has-tostringtag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -7823,7 +7821,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7841,8 +7838,7 @@ "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-core-module": { "version": "2.13.0", @@ -7869,7 +7865,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -7918,7 +7913,6 @@ "version": "1.1.12", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, "requires": { "which-typed-array": "^1.1.11" } @@ -9306,7 +9300,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -9363,6 +9356,15 @@ "minimalistic-assert": "^1.0.0" } }, + "web-encoding": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", + "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "requires": { + "@zxing/text-encoding": "0.9.0", + "util": "^0.12.3" + } + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -9624,7 +9626,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 3f22c694a..a56be9882 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -40,6 +40,7 @@ "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", "utf-8-validate": "^5.0.10", + "web-encoding": "^1.1.5", "ws": "8.4.0", "xhr2": "0.2.1" }, diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 289eb29f7..cee0df395 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -298,7 +298,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "f2b3ee138496a70d170fa2ac39950a726b6cbfa5" + , version = "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index b47e3ac34..52f637526 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -199,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "f2b3ee138496a70d170fa2ac39950a726b6cbfa5"; + version = "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "f2b3ee138496a70d170fa2ac39950a726b6cbfa5"; - sha256 = "1wrgr76vjwh2sig0k280vgx0kh6qnj7c7pp0sk2bs49szp3igv7h"; + rev = "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0"; + sha256 = "173scnj4l9qyvqjskabg599xy50gbbspwbnnddq4clj083ar1zlz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 84057b758fa53816fc1db921d81534050835bd79 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 23:11:19 +0400 Subject: [PATCH 045/373] Use isomorphic-js instead of DefinePlugin-based bundling --- package-lock.json | 61 +++++++++++++++---------------------- package.json | 3 +- src/Internal/JsWebSocket.js | 22 +++---------- 3 files changed, 31 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3ccead1b6..e15792edb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "5.0.0", "license": "MIT", "dependencies": { - "@mlabs-haskell/cardano-message-signing": "^1.0.1", + "@mlabs-haskell/cardano-message-signing": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "1.0.0", @@ -19,13 +19,14 @@ "bip39": "^3.1.0", "blakejs": "1.2.1", "bufferutil": "4.0.5", + "isomorphic-ws": "^5.0.0", "jssha": "3.2.0", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", "utf-8-validate": "^5.0.10", "web-encoding": "^1.1.5", - "ws": "8.4.0", + "ws": "^8.16.0", "xhr2": "0.2.1" }, "devDependencies": { @@ -3569,6 +3570,14 @@ "node": ">=0.10.0" } }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -6208,27 +6217,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/webpack-merge": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", @@ -6328,15 +6316,15 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9028,6 +9016,12 @@ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, + "isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "requires": {} + }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -11009,13 +11003,6 @@ "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } - }, - "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "requires": {} } } }, @@ -11094,9 +11081,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "requires": {} }, "xhr2": { diff --git a/package.json b/package.json index 5f3019edc..2a4240b91 100755 --- a/package.json +++ b/package.json @@ -44,13 +44,14 @@ "bip39": "^3.1.0", "blakejs": "1.2.1", "bufferutil": "4.0.5", + "isomorphic-ws": "^5.0.0", "jssha": "3.2.0", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", "utf-8-validate": "^5.0.10", "web-encoding": "^1.1.5", - "ws": "8.4.0", + "ws": "^8.16.0", "xhr2": "0.2.1" }, "devDependencies": { diff --git a/src/Internal/JsWebSocket.js b/src/Internal/JsWebSocket.js index f48f4465c..ac34edbb1 100644 --- a/src/Internal/JsWebSocket.js +++ b/src/Internal/JsWebSocket.js @@ -1,16 +1,9 @@ /* global BROWSER_RUNTIME */ import ReconnectingWebSocket from "reconnecting-websocket"; +import WebSocket from "isomorphic-ws"; -let OurWebSocket; -if (typeof BROWSER_RUNTIME == "undefined" || !BROWSER_RUNTIME) { - const { default: WebSocket } = await import("ws"); - OurWebSocket = WebSocket; -} else { - OurWebSocket = WebSocket; -} - -class NoPerMessageDeflateWebSocket extends OurWebSocket { +class NoPerMessageDeflateWebSocket extends WebSocket { constructor(url, protocols, options) { options = options || {}; options.perMessageDeflate = false; @@ -21,14 +14,9 @@ class NoPerMessageDeflateWebSocket extends OurWebSocket { export function _mkWebSocket(logger) { return url => () => { try { - let ws; - if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - ws = new ReconnectingWebSocket(url); - } else { - ws = new ReconnectingWebSocket(url, [], { - WebSocket: NoPerMessageDeflateWebSocket - }); - } + const ws = new ReconnectingWebSocket(url, [], { + WebSocket: NoPerMessageDeflateWebSocket + }); ws.finalizers = []; logger("Created a new WebSocket")(); return ws; From 20535070047381bea129a4130aaee23db2439fa6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 23:13:11 +0400 Subject: [PATCH 046/373] Remove DefinePlugin dependency from the tests --- src/Internal/JsWebSocket.js | 2 -- test/CslGc.js | 1 - test/Wallet/Cip30/SignData.js | 10 +--------- 3 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/Internal/JsWebSocket.js b/src/Internal/JsWebSocket.js index ac34edbb1..e05ce2748 100644 --- a/src/Internal/JsWebSocket.js +++ b/src/Internal/JsWebSocket.js @@ -1,5 +1,3 @@ -/* global BROWSER_RUNTIME */ - import ReconnectingWebSocket from "reconnecting-websocket"; import WebSocket from "isomorphic-ws"; diff --git a/test/CslGc.js b/test/CslGc.js index bac78951b..43539ec39 100644 --- a/test/CslGc.js +++ b/test/CslGc.js @@ -1,4 +1,3 @@ -/* global BROWSER_RUNTIME */ import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; import process from "process"; diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js index 20554c46c..353135d76 100644 --- a/test/Wallet/Cip30/SignData.js +++ b/test/Wallet/Cip30/SignData.js @@ -1,13 +1,5 @@ -/* global BROWSER_RUNTIME */ - import * as csl from "@mlabs-haskell/cardano-serialization-lib-gc"; - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-message-signing-browser"); -} else { - lib = await import("@emurgo/cardano-message-signing-nodejs"); -} +import * as lib from "@mlabs-haskell/cardano-message-signing"; function opt_chain(maybe, obj) { const isNothing = x => x === null || x === undefined; From bfd3588fe109b4c068ac714a1deba4b043cdced7 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 23:27:59 +0400 Subject: [PATCH 047/373] Update the template --- templates/ctl-scaffold/flake.lock | 8 +-- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/package-lock.json | 59 +++++++++-------------- templates/ctl-scaffold/package.json | 3 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +-- 6 files changed, 34 insertions(+), 46 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index ee817b693..787950979 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1708453752, - "narHash": "sha256-n/6Q1UBAUkZwa9YufvVaDxTfUypvqakl3h4nSqRlepw=", + "lastModified": 1708456391, + "narHash": "sha256-NpdCzU5ZrN+appoytN/H0V9tWjo6SrGL3krYKIzqYfo=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0", + "rev": "20535070047381bea129a4130aaee23db2439fa6", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0", + "rev": "20535070047381bea129a4130aaee23db2439fa6", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index fa94bee8e..eb263393c 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0"; + rev = "20535070047381bea129a4130aaee23db2439fa6"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 1e37778cf..1d0aec0d4 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -19,13 +19,14 @@ "bip39": "^3.1.0", "blakejs": "1.2.1", "bufferutil": "4.0.5", + "isomorphic-ws": "^5.0.0", "jssha": "3.2.0", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", "utf-8-validate": "^5.0.10", "web-encoding": "^1.1.5", - "ws": "8.4.0", + "ws": "^8.16.0", "xhr2": "0.2.1" }, "devDependencies": { @@ -3237,6 +3238,14 @@ "node": ">=0.10.0" } }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "peerDependencies": { + "ws": "*" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -5361,27 +5370,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/webpack-merge": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", @@ -5481,15 +5469,15 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -7944,6 +7932,12 @@ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true }, + "isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "requires": {} + }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -9561,13 +9555,6 @@ "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } - }, - "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "requires": {} } } }, @@ -9646,9 +9633,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "ws": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz", - "integrity": "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "requires": {} }, "xhr2": { diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index a56be9882..70d04ec36 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -35,13 +35,14 @@ "bip39": "^3.1.0", "blakejs": "1.2.1", "bufferutil": "4.0.5", + "isomorphic-ws": "^5.0.0", "jssha": "3.2.0", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", "utf-8-validate": "^5.0.10", "web-encoding": "^1.1.5", - "ws": "8.4.0", + "ws": "^8.16.0", "xhr2": "0.2.1" }, "devDependencies": { diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index cee0df395..dd2cb6a93 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -298,7 +298,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0" + , version = "20535070047381bea129a4130aaee23db2439fa6" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 52f637526..f193eb6b6 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -199,11 +199,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0"; + version = "20535070047381bea129a4130aaee23db2439fa6"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "c4dd41c0e6fe1392ee9a88fa26b4f94db99eadb0"; - sha256 = "173scnj4l9qyvqjskabg599xy50gbbspwbnnddq4clj083ar1zlz"; + rev = "20535070047381bea129a4130aaee23db2439fa6"; + sha256 = "1yk1xa62in2avs5v2jis79d6spyiqzgv8clslsddzb2r9v6l55rn"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 7d7748de4c4a9cd7d8beb86e949dd2cc68d7d98a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 23:31:49 +0400 Subject: [PATCH 048/373] Disable DefinePlugin everywhere --- esbuild/config.js | 3 --- templates/ctl-scaffold/esbuild/config.js | 3 --- templates/ctl-scaffold/webpack.config.cjs | 3 --- webpack.config.cjs | 3 --- 4 files changed, 12 deletions(-) diff --git a/esbuild/config.js b/esbuild/config.js index 0ed3d593e..3b9599305 100644 --- a/esbuild/config.js +++ b/esbuild/config.js @@ -7,9 +7,6 @@ export const buildOptions = ({ entryPoint, outfile }) => { const config = { entryPoints: [entryPoint], outfile: outfile, - define: { - BROWSER_RUNTIME: isBrowser ? "true" : '""' - }, plugins: [ wasmLoader({ mode: "deferred" diff --git a/templates/ctl-scaffold/esbuild/config.js b/templates/ctl-scaffold/esbuild/config.js index 996ca4335..8bb0e96c3 100755 --- a/templates/ctl-scaffold/esbuild/config.js +++ b/templates/ctl-scaffold/esbuild/config.js @@ -7,9 +7,6 @@ export const buildOptions = ({ entryPoint, outfile }) => { const config = { entryPoints: [entryPoint], outfile: outfile, - define: { - BROWSER_RUNTIME: isBrowser ? "true" : '""', - }, plugins: [ wasmLoader({ mode: "deferred", diff --git a/templates/ctl-scaffold/webpack.config.cjs b/templates/ctl-scaffold/webpack.config.cjs index d5fcdf1c6..564796e3e 100644 --- a/templates/ctl-scaffold/webpack.config.cjs +++ b/templates/ctl-scaffold/webpack.config.cjs @@ -58,9 +58,6 @@ module.exports = env => { }, plugins: [ - new webpack.DefinePlugin({ - BROWSER_RUNTIME: isBrowser, - }), new webpack.LoaderOptionsPlugin({ debug: true, }), diff --git a/webpack.config.cjs b/webpack.config.cjs index 31f7f3ba7..a0219fe9e 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -58,9 +58,6 @@ module.exports = env => { }, plugins: [ - new webpack.DefinePlugin({ - BROWSER_RUNTIME: isBrowser - }), new webpack.LoaderOptionsPlugin({ debug: true }), From 70c9d7fc1e62c31b2821e05d9d049db8ad1c83e2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 20 Feb 2024 23:40:56 +0400 Subject: [PATCH 049/373] Disable markdown-link-check for stackoverflow (403) --- .mlc_config.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.mlc_config.json b/.mlc_config.json index b7e3f107c..531256fdf 100644 --- a/.mlc_config.json +++ b/.mlc_config.json @@ -3,6 +3,9 @@ { "pattern": "^https://gerowallet.io" }, + { + "pattern": "^https://stackoverflow.com" + }, { "pattern": "^https://singularitynet.io" }, From 30caa53d4df66d290c88b3de00ad5eb0a021b34f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 21 Feb 2024 18:59:04 +0400 Subject: [PATCH 050/373] Update the docs and CHANGELOG --- CHANGELOG.md | 37 +++++ Makefile | 3 +- doc/ctl-as-dependency.md | 14 +- doc/development.md | 10 +- doc/faq.md | 4 +- doc/importing-scripts.md | 92 +------------ doc/using-from-js.md | 160 ++++------------------ esbuild/config.js | 2 + src/Internal/Affjax.js | 9 -- templates/ctl-scaffold/Makefile | 3 +- templates/ctl-scaffold/esbuild/config.js | 2 + templates/ctl-scaffold/package.json | 2 +- templates/ctl-scaffold/webpack.config.cjs | 1 + webpack.config.cjs | 1 + 14 files changed, 94 insertions(+), 246 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 152e986ef..0b6e0dbbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,43 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Removed +- **[IMPORTANT]** Removed use of conditional code rewriting based on `BROWSER_RUNTIME` env variable during bundling ([#1595](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1598)) + +This change simplifies the bundling process, but it requires a number of updates for all CTL-dependent projects: + + - WebPack users should make this change to the webpack config: + +```diff + plugins: [ +- new webpack.DefinePlugin({ +- BROWSER_RUNTIME: isBrowser +- }), +``` + - Esbuild users should make this change: + +```diff + const config = { + ... +- define: { +- BROWSER_RUNTIME: isBrowser ? "true" : '""' +- }, +``` + + - All users should update the runtime dependencies: + +```diff +- "@emurgo/cardano-message-signing-browser": "1.0.1", +- "@emurgo/cardano-message-signing-nodejs": "1.0.1", ++ "@mlabs-haskell/cardano-message-signing": "1.0.1", +- "apply-args-browser": "0.0.1", +- "apply-args-nodejs": "0.0.1", ++ "@mlabs-haskell/uplc-apply-args": "1.0.0", ++ "isomorphic-ws": "^5.0.0", +- "ws": "8.4.0", ++ "ws": "^8.16.0", ++ "web-encoding": "^1.1.5", +``` + - `ModifyTx` error: made conversion functions total and removed the need to handle it ## [v7.0.0] diff --git a/Makefile b/Makefile index 5519cd407..29741d7e3 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,8 @@ js-sources := $(shell fd --no-ignore-parent -ejs -ecjs) ps-entrypoint := Ctl.Examples.ByUrl # The entry point function in the main PureScript module ps-entrypoint-function := main -# Whether to bundle for the browser +# Whether to bundle for the browser ("1") or the node ("") +# NOTE: bundling for the node is not necessary, see https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/using-from-js.md browser-runtime := 1 # Use "1" for true and "" for false preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r '.[0].Mountpoint') diff --git a/doc/ctl-as-dependency.md b/doc/ctl-as-dependency.md index 0be2285ae..4893cb935 100644 --- a/doc/ctl-as-dependency.md +++ b/doc/ctl-as-dependency.md @@ -6,25 +6,17 @@ CTL can be imported as an additional dependency into a Purescript project built -- [Caveats](#caveats) - [Using CTL's overlays](#using-ctls-overlays) - [Upgrading CTL](#upgrading-ctl) - [See also](#see-also) -## Caveats - -The following caveats alway applies when using CTL from your project: - -1. Only bundling with Webpack is supported (this is due to our internal dependency on `cardano-serialization-lib` which uses WASM with top-level `await`; only Webpack is reliably capable of bundling this properly) -2. The environment variable `BROWSER_RUNTIME` determines which version of `cardano-serialization-lib` is loaded by CTL, so you must use it as well (i.e. set it to `1` for the browser; leave it unset for NodeJS) - ## Using CTL's overlays CTL exposes two `overlay`s from its flake. You can use these in the Nix setup of your own project to use the same setup as we do, e.g. the same packages and PS builders: -- `overlays.purescript` contains Purescript builders to compile Purescript sources, build bundles with Webpack (`bundlePursProject`), run unit tests using NodeJS (`runPursTest`), and run CTL contracts on a private testnet using Plutip (`runPlutipTest`). +- `overlays.purescript` contains Purescript builders to compile Purescript sources, build bundles with Webpack/esbuild (`bundlePursProject`), run unit tests using NodeJS (`runPursTest`), and run CTL contracts on a private testnet using Plutip (`runPlutipTest`). - `overlays.runtime` contains various packages and other tools used in CTL's runtime, including `ogmios`, `kupo`, and `plutip-server`. It also defines `buildCtlRuntime` and `launchCtlRuntime` to help you quickly launch all runtime services (see the [runtime docs](./runtime.md)) We've split the overlays into two components to allow users to more easily choose which parts of CTL's Nix infrastructure they would like to directly consume. For example, some users do not require a pre-packaged runtime and would prefer to build it themselves with more control over its components (e.g. by directly using `ogmios` from their own `inputs`). Such users might still like to use our `purescript` overlay -- splitting the `overlays` allows us to support this. `overlays.runtime` also contains several haskell.nix packages which may cause issues with `hackage.nix` versions in your own project. @@ -80,9 +72,9 @@ Make sure to perform **all** of the following steps, otherwise you **will** enco - That is, avoid using the `~` or `^` prefixes (e.g use versions like `"1.6.51"` instead of `"^1.6.51"`) - If you're using a `package-lock.json` (which is _highly_ recommended), you can update the lockfile with `npm i --package-lock-only` -4. **Update your webpack config** +4. **Update your webpack/esbuild config** -- Sometimes the WebPack configuration also comes with breaking changes. Common source of problems are changes to `resolve.fallback`, `plugins` and `experiments` fields of the WebPack config. Use `git diff old-revision new-revision webpack.config.js` in the root of a cloned CTL repo, or use `git blame`. +- Sometimes the WebPack or esbuild configuration also comes with breaking changes. Use `git diff old-revision new-revision webpack.config.cjs` in the root of a cloned CTL repo, or use `git blame`. ## See also diff --git a/doc/development.md b/doc/development.md index 8928d5c6a..6ffc51091 100644 --- a/doc/development.md +++ b/doc/development.md @@ -77,7 +77,7 @@ To **build** the project **without bundling and for a NodeJS environment**: - `npm run staking-test` to run [Plutip](./plutip-testing.md)-powered tests for ADA staking functionality - [entry point](../test/Plutip/Staking.purs) - `npm run blockfrost-test` for [Blockfrost-powered tests](./blockfrost.md) (does not require a runtime, but needs [some setup](./blockfrost.md#setting-up-a-blockfrost-powered-test-suite)) - [entry point](../test/Blockfrost/Contract.purs) - `npm run blockfrost-local-test` for self-hosted [Blockfrost-powered tests](./blockfrost.md) (requires a [local Blockfrost runtime](./blockfrost.md#running-blockfrost-locally)) - [entry point](../test/Blockfrost/Contract.purs) -- `npm run e2e-test` for [tests with a headless browser](./e2e-testing.md) (requires a runtime and the tests served via HTTP: `npm run start-runtime` and `npm run webpack-serve` or `esbuild-serve`) +- `npm run e2e-test` for [tests with a headless browser](./e2e-testing.md) (requires a runtime and the tests served via HTTP: `npm run start-runtime` and `npm run e2e-serve` or `esbuild-serve`) #### With Nix @@ -100,14 +100,14 @@ Here and below, `` should be replaced with [one of the supported systems To run or build/bundle the project for the browser: -- `npm run webpack-serve` will start a Webpack development server at `localhost:4008`, which is required for [E2E tests](./e2e-testing.md) +- `npm run {webpack|esbuild}-serve` will start a Webpack development server at `localhost:4008`, which is required for [E2E tests](./e2e-testing.md) - `npm run {webpack|esbuild}-bundle` will output a bundled example module to `dist` (or `nix build -L .#ctl-example-bundle-web-{webpack|esbuild}` to build an example module using Nix into `./result/`) -By default, Webpack will build a [Purescript module](../examples/ByUrl.purs) that serves multiple example `Contract`s depending on URL (see [here](./e2e-testing.md#serving-the-contract-to-be-tested)). You can point Webpack to another Purescript entrypoint by changing the `ps-bundle` variable in the Makefile or in the `main` argument in the flake's `packages.ctl-examples-bundle-web`. +By default, the bundler will build a [Purescript module](../examples/ByUrl.purs) that serves multiple example `Contract`s depending on URL (see [here](./e2e-testing.md#serving-the-contract-to-be-tested)). You can point the bundler to another Purescript entrypoint by changing the `ps-bundle` variable in the Makefile or in the `main` argument in the flake's `packages.ctl-examples-bundle-web`. -You will also need a light wallet extension pre-configured to run a `Contract`. +You will also need a light wallet extension pre-configured for the correct Cardano network to run a `Contract`. -**Note**: The `BROWSER_RUNTIME` environment variable must be set to `1` in order to build/bundle the project properly for the browser (e.g. `BROWSER_RUNTIME=1 webpack ...`). For Node environments, leave this variable unset. +**Note**: The `BROWSER_RUNTIME` environment variable must be set to `1` in order to build/bundle the project properly for the browser (e.g. `BROWSER_RUNTIME=1 webpack ...`). For NodeJS environments, leave this variable unset. **Note**: The `KUPO_HOST` environment variable must be set to the base URL of the Kupo service in order to successfully serve the project for the browser (by default, `KUPO_HOST=http://localhost:1442`). diff --git a/doc/faq.md b/doc/faq.md index e92226e6d..01f6627be 100644 --- a/doc/faq.md +++ b/doc/faq.md @@ -78,7 +78,9 @@ Another thing to keep in mind is that due to [min-ada requirements](https://docs CTL does not consume wallet collateral normally, but it still can happen. -In order to get the collateral UTxO, CTL uses the wallet and then marks the returned UTxO as locked internally. But some wallets (e.g. Gero) do not return the collateral the moment it is set, waiting for Tx confirmation first. In case a collateral is set right before the contract is started, CTL can accidentally spend the collateral, because we rely on CTL's own query layer to get a list of available UTxOs, and the wallet state may lag behind it, not returning the collateral to filter out at that moment. +In order to get the collateral UTxO, CTL uses the wallet and then marks the returned UTxO as "locked" internally. But some wallets (e.g. Gero) do not return the collateral the moment it is set, waiting for Tx confirmation first. In case a collateral is set right before the contract is started, CTL can accidentally spend the collateral, because we rely on CTL's own query layer to get a list of available UTxOs without consulting with the wallet [in some cases](./query-layers.md), and the wallet state may lag behind the backend state. + +It is impossible to lose the collateral UTxO funds completely, though, because CTL always uses [CIP-40 collateral return](https://cips.cardano.org/cip/CIP-0040). ## Time-related diff --git a/doc/importing-scripts.md b/doc/importing-scripts.md index 0e44ae237..5d6461789 100644 --- a/doc/importing-scripts.md +++ b/doc/importing-scripts.md @@ -6,11 +6,11 @@ - [Exporting scripts from Plutus or Plutarch](#exporting-scripts-from-plutus-or-plutarch) - [Using Plutonomy](#using-plutonomy) -- [Importing serialized scripts](#importing-serialized-scripts) - [Serializing Plutus scripts](#serializing-plutus-scripts) - [PlutusTx](#plutustx) - [Plutarch](#plutarch) - [plutarch-ctl-bridge](#plutarch-ctl-bridge) +- [Importing serialized scripts](#importing-serialized-scripts) @@ -31,7 +31,6 @@ The output file should be a Cardano envelope: - An example of a Plutus exporter can be found [here](https://github.com/Mr-Andersen/ctl-multisign-mre/blob/main/onchain/exporter/Main.hs). - For Plutarch, see [the-plutus-scaffold](https://github.com/mlabs-haskell/the-plutus-scaffold)'s [exporter](https://github.com/mlabs-haskell/the-plutus-scaffold/tree/main/onchain/exporter). - ### Using Plutonomy It makes sense to use [Plutonomy](https://github.com/well-typed/plutonomy) (an optimizer for UPLC) in the exporter: @@ -44,91 +43,6 @@ script = fromCompiledCode $ optimizeUPLCWith aggressiveOptimizerOptions $$(PlutusTx.compile [||policy||]) ``` -## Importing serialized scripts - -To use your own scripts, compile them to any subdirectory in the root of your project (where `webpack.config.js` is located) and add a relative path to `webpack.config.js` under the `resolve.alias` section. In CTL, we have the `Scripts` alias for this purpose. Note the capitalization of `Scripts`: it is necessary to disambiguate it from local folders. - -First, in your `webpack.config.js`, define an `alias` under `module.exports.resolve.alias` in order to `require` the compiled scripts from JS modules: - -```javascript -const path = require("path"); - -module.exports = { - // ... - resolve: { - modules: [process.env.NODE_PATH], - extensions: [".js"], - fallback: { - // ... - }, - alias: { - // You should update this path to the location of your compiled scripts, - // relative to `webpack.config.js` - Scripts: path.resolve(__dirname, "fixtures/scripts"), - }, - }, -}; -``` - -You must also add the following to `module.exports.module.rules`: - -```javascript -module.exports = { - // ... - module: { - rules: [ - { - test: /\.plutus$/i, - type: "asset/source", - }, - // ... - ], - }, -}; -``` - -This enables inlining your serialized scripts in `.js` files, to then be loaded in Purescript via the FFI: - -```javascript -// inline .plutus file as a string -exports.myscript = require("Scripts/myscript.plutus"); -``` - -And on the purescript side, the script can be loaded like so: - -```purescript -foreign import myscript :: String - -parseValidator :: Contract Validator -parseValidator = liftMaybe (error "Error decoding myscript") do - envelope <- decodeTextEnvelope myscript - Validator <$> Contract.TextEnvelope.plutusScriptV1FromEnvelope envelope -myContract cfg = runContract_ cfg $ do - validator <- parseValidator - ... -``` - -This way you avoid hardcoding your scripts directly to .purs files which could lead to synchronization issues should your scripts change. - -**Note**: The `alias` method above will only work in the browser when bundling with Webpack. In order to load the scripts for both browser and NodeJS environments, you can use the `BROWSER_RUNTIME` environment variable like so: - -```javascript -let script; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - script = require("Scripts/my-script.plutus"); -} else { - const fs = require("fs"); - const path = require("path"); - script = fs.readFileSync( - path.resolve(__dirname, "../../fixtures/scripts/my-script.plutus"), - "utf8" - ); -} -exports.myScript = script; -``` - -Note that the relative path passed to `path.resolve` for the NodeJS case starts from the `output` directory that the Purescript compiler produces. - ## Serializing Plutus scripts ### PlutusTx @@ -176,3 +90,7 @@ You can use [`ply`](https://github.com/mlabs-haskell/ply) and [`ply-ctl`](https: ### plutarch-ctl-bridge You can use [`plutarch-ctl-bridge`](https://github.com/mlabs-haskell/plutarch-ctl-bridge) to generate Purescript types from your Haskell type definitions and typed script wrappers from parametrized Plutarch scripts. See [example module](https://github.com/mlabs-haskell/plutarch-ctl-bridge/blob/main/example/Main.hs). + +## Importing serialized scripts + +To use your own scripts, compile them to any subdirectory in the root of your project and either dynamically load them from file (NodeJS) or use your bundler to include them as fixtures into the bundle ([instructions for WebPack](https://webpack.js.org/guides/asset-modules/), [for esbuild](https://esbuild.github.io/content-types/#external-file)). diff --git a/doc/using-from-js.md b/doc/using-from-js.md index 4c977528d..151b44b56 100644 --- a/doc/using-from-js.md +++ b/doc/using-from-js.md @@ -1,30 +1,42 @@ -- [JavaScript SDKs](#javascript-sdks) - - [Defining APIs in PureScript](#defining-apis-in-purescript) - - [Using from NodeJS](#using-from-nodejs) - - [Bundling for NodeJS](#bundling-for-nodejs) - - [Calling from NodeJS](#calling-from-nodejs) - - [Using from the browser](#using-from-the-browser) - - [Bundling for the browser](#bundling-for-the-browser) - - [WebAssembly and conditional imports](#webassembly-and-conditional-imports) - - [Calling in the browser](#calling-in-the-browser) +- [Building JavaScript SDKs with CTL](#building-javascript-sdks-with-ctl) + - [SDK packaging for NodeJS](#sdk-packaging-for-nodejs) + - [SDK bundling for the browser](#sdk-bundling-for-the-browser) + - [Defining SDK APIs in PureScript](#defining-sdk-apis-in-purescript) + - [Calling the SDK API](#calling-the-sdk-api) - [See also](#see-also) -# JavaScript SDKs +# Building JavaScript SDKs with CTL Normally, dApps involve three parts: -- on-chain logic (Plutus or Plutarch scripts) -- off-chain logic (in our case, implemented using CTL) +- on-chain logic (Plutus, Plutarch or Aiken scripts) +- **off-chain logic** (in our case, implemented using CTL) - user interface -Building CTL-based JavaScript SDKs is the simplest way to connect user interfaces (most commonly, web apps) with off-chain logic. These SDKs expose app-specific APIs for web developers to plug into the user interface. SDKs are normally consumable as NPM packages. +Providing CTL-based JavaScript SDKs is the simplest way to connect user interfaces (most commonly, web apps) with off-chain logic. These SDKs expose app-specific APIs for web developers to plug into the user interface. SDKs are normally consumable as NPM packages. -## Defining APIs in PureScript +Explore [the template](../templates/ctl-scaffold/package.json) or CTL itself for an example setup. See [the WebPack config](../webpack.config.cjs) or the [esbuild config](../esbuild/config.js) we provide. + +## SDK packaging for NodeJS + +NodeJS apps do not require to be bundled in order to be run (however, it is possible, see the [Makefile](../Makefile) options). + +An NPM package with `main` set to the compiled JS entry point (e.g. `./output/ApiModuleName.js`) is sufficient, but the runtime dependencies of said package must include the same package versions CTL itself uses in its `package.json`. + +## SDK bundling for the browser + +SDKs must be bundled to be usable in the browser. We support two bundlers: esbuild and WebPack. There are two options how to approach bundling and packaging: + +1. bundling a CTL-based SDK *before* consuming it as dependency in the app, i.e. putting the bundled sources in an NPM package. Bundling twice is not a good practice, and it is hard to even make it work, so in case this path is chosen, the developer should ensure that the SDK does not get bundled twice by the second bundler. + +2. **[recommended]** bundling a CTL-based SDK together with the UI part of the app. This is simpler, but in case a bundler different from esbuild or WebPack is used, problems may arise due to bundler differences. It should be possible to use other bundlers, as long as they support async top-level imports, WebAssembly and [`browser` package.json field](https://github.com/defunctzombie/package-browser-field-spec). + +## Defining SDK APIs in PureScript Developers should start from reading [this PureScript guide](https://book.purescript.org/chapter10.html#calling-purescript-from-javascript) that shows how to call PureScript from JS. Our (older) PureScript version is using CommonJS modules and not ES modules, so `import` statements should be replaced with `require`. @@ -63,37 +75,12 @@ config = testnetNamiConfig -- use Nami wallet - `Contract.JsSdk` is a module containing synonyms for some `Contract.Monad` functions, but adapted for use in JS SDKs. - `fromAff` converts `Aff a` to `Effect (Promise a)`, and `unsafePerformEffect` removes the `Effect` wrapper that is not needed on the JS side. -## Using from NodeJS +## Calling the SDK API -### Bundling for NodeJS - -To prepare the module defined above for use from other NodeJS code, `spago bundle-module` should be used: - -```bash -spago bundle-module -m Api --to output.js -``` - -The resulting bundle will NOT include its NodeJS dependencies in the same file. - -It can be distributed via NPM by pointing `package.json` to it: - -```js -{ - ... - "main": "output.js", - ... - "dependencies": { - // same dependencies as CTL itself uses should be put here - } -} -``` - -### Calling from NodeJS - -The module above can be imported like this from NodeJS: +The module above can be imported like this: ```javascript -const { initialize, config, run, finalize } = require('./output.js'); +import { initialize, config, run, finalize } from 'your-api-package'; (async () => { const env = await initialize(config); @@ -107,93 +94,6 @@ const { initialize, config, run, finalize } = require('./output.js'); Notice that we used `finally` to finalize - this is because a running contract environment would prevent the script from exiting otherwise. Please read [this guide](./contract-environment.md) for info on how to manage the runtime environment correctly. -## Using from the browser - -### Bundling for the browser - -The recommended way to bundle CTL for the browser is to use WebPack. - -#### WebAssembly and conditional imports - -We depend on WebPack's `DefinePlugin` to conditionally load either NodeJS or browser variant of dependencies that have WebAssembly parts. - -That means that CTL _requires_ bundling it the same way when used as a dependency, as we do in development. If you intend to use another bundler, something like `DefinePlugin` should be used to transform the import headers from this: - -```javascript -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = require("@emurgo/cardano-serialization-lib-browser"); -} else { - lib = require("@emurgo/cardano-serialization-lib-nodejs"); -} -``` - -to only one of the import variants. - -Our default [WebPack config](../webpack.config.cjs) uses `BROWSER_RUNTIME` environment variable to differentiate between two bundling options: - -```js - plugins: [ - new webpack.DefinePlugin({ - BROWSER_RUNTIME: !!process.env.BROWSER_RUNTIME, - }), -``` - -There's [a claim that Vite bundler can also be used](https://github.com/Plutonomicon/cardano-transaction-lib/issues/79#issuecomment-1257036068), although we don't officially support this method. - -### Calling in the browser - -Webpack config contains `entry` field, pointing to the main file of the app. - -Assuming we want to use the example app from above, it can be populated like this: - -```js -import("./output.js").then( - async ({ initialize, config, run, finalize }) => { - - const env = await initialize(config); - try { - await run(env); - } finally { - await finalize(env); - } -}); -``` - -Note that `import` returns a `Promise`. - -The config also contains some setup for output target: - -```js - output: { - path: path.resolve(__dirname, "dist"), - filename: "bundle.js", - }, -``` - -But to actually build a page that can be opened in a browser, we use `HtmlWebpackPlugin`: - -```js - new HtmlWebpackPlugin({ - title: "ctl-scaffold", - template: "./index.html", - inject: false, // See stackoverflow.com/a/38292765/3067181 - }), -``` - -The HTML page should contain this import, pointing to output bundle filename: - -```html - -``` - -`type="module"` is required here. - - -`experiments.syncWebAssembly` WebPack setting must be set to `true` because CTL internal code expects it. - -The whole webpage can be served with `BROWSER_RUNTIME=1 webpack-dev-server --progress` or built with `BROWSER_RUNTIME=1 webpack --mode=production` - ## See also -- [How to import serialized Plutus scripts for NodeJS and the browser](./importing-scripts.md) +- [How to import Plutus scripts into CTL for NodeJS and the browser](./importing-scripts.md) diff --git a/esbuild/config.js b/esbuild/config.js index 3b9599305..ce3de4060 100644 --- a/esbuild/config.js +++ b/esbuild/config.js @@ -21,8 +21,10 @@ export const buildOptions = ({ entryPoint, outfile }) => { // https://esbuild.github.io/api/#packages if (!isBrowser) { + // Keep dependencies outside of the bundle for nodejs config.packages = "external"; } else { + // Provide browser polyfills for NodeJS modules config.plugins.push( polyfillNode({ polyfills: { diff --git a/src/Internal/Affjax.js b/src/Internal/Affjax.js index d48f45ccf..5df9db273 100644 --- a/src/Internal/Affjax.js +++ b/src/Internal/Affjax.js @@ -2,15 +2,6 @@ export const driver = nodeDriver; // we rely on the bundler to inject polyfills for the browser -// const browserDriver = { -// newXHR: function () { -// return new XMLHttpRequest(); -// }, -// fixupUrl: function (url) { -// return url || "/"; -// } -// }; - async function nodeDriver() { const { default: XHR } = await import("xhr2"); const { default: urllib } = await import("url"); diff --git a/templates/ctl-scaffold/Makefile b/templates/ctl-scaffold/Makefile index 3867c1319..64274909f 100644 --- a/templates/ctl-scaffold/Makefile +++ b/templates/ctl-scaffold/Makefile @@ -13,7 +13,8 @@ js-sources := $(shell fd --no-ignore-parent -ejs -ecjs) ps-entrypoint := Scaffold.Test.E2E.Serve # The entry point function in the main PureScript module ps-entrypoint-function := main -# Whether to bundle for the browser +# Whether to bundle for the browser ("1") or the node ("") +# NOTE: bundling for the node is not necessary, see https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/using-from-js.md browser-runtime := 1 # Use "1" for true and "" for false preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r '.[0].Mountpoint') diff --git a/templates/ctl-scaffold/esbuild/config.js b/templates/ctl-scaffold/esbuild/config.js index 8bb0e96c3..bf23f5fb4 100755 --- a/templates/ctl-scaffold/esbuild/config.js +++ b/templates/ctl-scaffold/esbuild/config.js @@ -21,8 +21,10 @@ export const buildOptions = ({ entryPoint, outfile }) => { // https://esbuild.github.io/api/#packages if (!isBrowser) { + // Keep dependencies outside of the bundle for nodejs config.packages = "external"; } else { + // Provide browser polyfills for NodeJS modules config.plugins.push( polyfillNode({ polyfills: { diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 70d04ec36..21e7af560 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -3,7 +3,7 @@ "name": "ctl-scaffold", "version": "0.1.0", "description": "", - "main": "index.js", + "main": "./output/Scaffold.Main/index.js", "directories": { "test": "test" }, diff --git a/templates/ctl-scaffold/webpack.config.cjs b/templates/ctl-scaffold/webpack.config.cjs index 564796e3e..1ccf6e5ba 100644 --- a/templates/ctl-scaffold/webpack.config.cjs +++ b/templates/ctl-scaffold/webpack.config.cjs @@ -14,6 +14,7 @@ module.exports = env => { layers: false, lazyCompilation: false, outputModule: true, + // `syncWebAssembly` must be set to `true` because CTL internal code expects it. syncWebAssembly: true, topLevelAwait: true, }, diff --git a/webpack.config.cjs b/webpack.config.cjs index a0219fe9e..e3a4280e2 100644 --- a/webpack.config.cjs +++ b/webpack.config.cjs @@ -14,6 +14,7 @@ module.exports = env => { layers: false, lazyCompilation: false, outputModule: true, + // `syncWebAssembly` must be set to `true` because CTL internal code expects it. syncWebAssembly: true, topLevelAwait: true }, From f2e0f90d269815448f2fb7c6741b9ad25d095d7d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 21 Feb 2024 19:13:40 +0400 Subject: [PATCH 051/373] Update changelog formatting --- CHANGELOG.md | 66 ++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b6e0dbbd..6033484d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,42 +80,36 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Removed -- **[IMPORTANT]** Removed use of conditional code rewriting based on `BROWSER_RUNTIME` env variable during bundling ([#1595](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1598)) - -This change simplifies the bundling process, but it requires a number of updates for all CTL-dependent projects: - - - WebPack users should make this change to the webpack config: - -```diff - plugins: [ -- new webpack.DefinePlugin({ -- BROWSER_RUNTIME: isBrowser -- }), -``` - - Esbuild users should make this change: - -```diff - const config = { - ... -- define: { -- BROWSER_RUNTIME: isBrowser ? "true" : '""' -- }, -``` - - - All users should update the runtime dependencies: - -```diff -- "@emurgo/cardano-message-signing-browser": "1.0.1", -- "@emurgo/cardano-message-signing-nodejs": "1.0.1", -+ "@mlabs-haskell/cardano-message-signing": "1.0.1", -- "apply-args-browser": "0.0.1", -- "apply-args-nodejs": "0.0.1", -+ "@mlabs-haskell/uplc-apply-args": "1.0.0", -+ "isomorphic-ws": "^5.0.0", -- "ws": "8.4.0", -+ "ws": "^8.16.0", -+ "web-encoding": "^1.1.5", -``` +- **[IMPORTANT]** Removed use of conditional code rewriting based on `BROWSER_RUNTIME` env variable during bundling ([#1595](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1598)). This change simplifies the bundling process, but it requires a number of updates for all CTL-dependent projects: + + * WebPack users should make this change to the webpack config: + ```diff + plugins: [ + - new webpack.DefinePlugin({ + - BROWSER_RUNTIME: isBrowser + - }), + ``` + * Esbuild users should make this change: + ```diff + const config = { + ... + - define: { + - BROWSER_RUNTIME: isBrowser ? "true" : '""' + - }, + ``` + * All users should update the runtime dependencies: + ```diff + - "@emurgo/cardano-message-signing-browser": "1.0.1", + - "@emurgo/cardano-message-signing-nodejs": "1.0.1", + + "@mlabs-haskell/cardano-message-signing": "1.0.1", + - "apply-args-browser": "0.0.1", + - "apply-args-nodejs": "0.0.1", + + "@mlabs-haskell/uplc-apply-args": "1.0.0", + + "isomorphic-ws": "^5.0.0", + - "ws": "8.4.0", + + "ws": "^8.16.0", + + "web-encoding": "^1.1.5", + ``` - `ModifyTx` error: made conversion functions total and removed the need to handle it From 70462f1e52f4907c0b3509c2feabf58145398ac2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 28 Feb 2024 22:24:31 +0400 Subject: [PATCH 052/373] Remove unwanted doc files --- doc/limitations.md | 21 ------------- doc/plutus-data.md | 72 ------------------------------------------- doc/wallet-support.md | 17 ---------- 3 files changed, 110 deletions(-) delete mode 100644 doc/limitations.md delete mode 100644 doc/plutus-data.md delete mode 100644 doc/wallet-support.md diff --git a/doc/limitations.md b/doc/limitations.md deleted file mode 100644 index a889690d3..000000000 --- a/doc/limitations.md +++ /dev/null @@ -1,21 +0,0 @@ - - - -- [CTL limitations](#ctl-limitations) -- [Addresses](#addresses) -- [E2E test suite does not work in Nix on Darwin](#e2e-test-suite-does-not-work-in-nix-on-darwin) -- [](#) - - - -# CTL limitations - -# Addresses - -We do not consider pointer addresses or Byron addresses. - -# E2E test suite does not work in Nix on Darwin - -It works when started from the shell. - -# diff --git a/doc/plutus-data.md b/doc/plutus-data.md deleted file mode 100644 index d8a64b8ba..000000000 --- a/doc/plutus-data.md +++ /dev/null @@ -1,72 +0,0 @@ -A concrete Plutus Data schema. Morally equivalent to: Row (Row Type). This is superfluous - in the sense that we could simply do everything here with (RowListI (RowList Type)), which - @PlutusSchema@s are all translated to, but this facilitates a more comprehensible syntax. - (Conversely we could rewrite all of the RowList/RowListI machinery in terms of this, but it - would be much more difficult to read/debug/reason about). - - Here's an example: - - data FType - = F0 - { f0A :: BigInt - } - | F1 - { f1A :: Boolean - , f1B :: Boolean - , f1C :: Boolean - } - | F2 - { f2A :: BigInt - , f2B :: FType - } - - instance - HasPlutusSchema FType - ( "F0" := - ( "f0A" := I BigInt - :+ PNil) - @@ Z - - :+ "F1" := - ( "f1A" := I Boolean - :+ "f1B" := I Boolean - :+ "f1C" := I Boolean - :+ PNil - ) - @@ (S Z) - - :+ "F2" := - ( "f2A" := I BigInt - :+ "f2B" := I FType - :+ PNil - ) - @@ (S (S Z)) - - :+ PNil - ) - -Note that a PSchema encodes two pieces of information: - -1) The index of each *constructor* of a data type. This information is encoded in the "outer" RowListI. - In the above example, these are "F0" (Z), "F1" (S Z), and "F2" (S (S Z)) - -2) The correct on-chain ordering of each record field. This is encoded implicitly by the ordering of the fields in each inner list (i.e. we do not provide a specific index for record fields). - If a constructor does not have a Record argument, we do not need to encode any information about that argument. For example, the type: - - data GType - = G0 BigInt - | G1 Boolean Boolean Boolean - | G2 BigInt GType - - would have a much simpler Schema: - - instance - HasPlutusSchema GType - ( "G0" := PNil @@ Z - :+ "G1" := PNil @@ (S Z) - :+ "G2" := PNil @@ (S (S Z)) - :+ PNil) - - The sole purpose of the inner list is to ensure correct translation to and from Plutus Data for record types - when using the generic functions in ToData/FromData. Since GType's constructors do not have record arguments, - no additional information is needed in the inner lists. diff --git a/doc/wallet-support.md b/doc/wallet-support.md deleted file mode 100644 index 98f882af2..000000000 --- a/doc/wallet-support.md +++ /dev/null @@ -1,17 +0,0 @@ - - - -- [CIP-30 wallet support in CTL](#cip-30-wallet-support-in-ctl) - - - -# CIP-30 wallet support in CTL - -| Wallet Name | Fully implements CIP-30 | Supports Babbage | Supported in CTL | Added to E2E test suite | Is multi-address | -|-------------|-------------------------|------------------|------------------|-------------------------|------------------| -| Nami | ✔️ | ✔️ | ✔️ | ✔️ | x | -| Gero | ✔️ | ✔️ | ✔️ | ✔️ | x | -| Eternl | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | -| Lode | ✔️ | ️ | ✔️ | | x | -| Nufi | ✔️ | ️ | ✔️ | | x | -| Lace | x [1]() | ✔️ | ✔ | | x | From 677ecdda2fe5574d7c75307834a8ea64bd18b1af Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 29 Feb 2024 21:06:51 +0400 Subject: [PATCH 053/373] Fix Internal/Wallet/Cip30 --- src/Internal/Wallet/Cip30.purs | 48 +++++++++++++--------------------- 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index f42b63cf0..d12ac9842 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -6,40 +6,33 @@ module Ctl.Internal.Wallet.Cip30 import Prelude +import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Serialization.Lib (fromBytes, toBytes) import Cardano.Types.Address (Address) -import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Types.BigNum as BigNum +import Cardano.Types.CborBytes (CborBytes) +import Cardano.Types.Coin (Coin(Coin)) +import Cardano.Types.RawBytes (RawBytes) +import Cardano.Types.Transaction (Transaction(Transaction)) +import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOuput import Cardano.Types.TransactionUnspentOutput as UnspentOutput +import Cardano.Types.TransactionWitnessSet (TransactionWitnessSet) +import Cardano.Types.Value (Value) import Cardano.Types.Value as Value import Cardano.Wallet.Cip30 (Api) import Cardano.Wallet.Cip30.TypeSafe (APIError) import Cardano.Wallet.Cip30.TypeSafe as Cip30 -import Control.Alt ((<|>)) import Control.Monad.Error.Class (catchError, liftMaybe, throwError) -import Ctl.Internal.Cardano.Types.Transaction - ( Transaction(Transaction) - , TransactionWitnessSet - ) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) -import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value) -import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.Helpers (liftM, notImplemented) -import Ctl.Internal.Types.CborBytes (CborBytes(..)) -import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesToHex) +import Ctl.Internal.Helpers (liftM) import Data.ByteArray (byteArrayToHex, hexToByteArray) -import Data.Maybe (Maybe(Nothing), maybe) +import Data.Maybe (Maybe(Nothing)) import Data.Newtype (unwrap, wrap) import Data.Traversable (for, traverse) import Data.Variant (Variant, match) -import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) -import JS.BigInt (fromInt) as BigInt type DataSignature = { key :: CborBytes @@ -183,24 +176,23 @@ getUtxos conn = do signTx :: Api -> Transaction -> Aff Transaction signTx conn tx = do - txHex <- liftEffect $ txToHex tx + let txHex = txToHex tx result <- Cip30.signTx conn txHex true liftEffect $ result `flip match` { success: \hexString -> do - bytes <- liftM (mkInvalidHexError hexString) $ hexToRawBytes - hexString + bytes <- liftM (mkInvalidHexError hexString) $ + hexToByteArray hexString ws <- liftM (error "signTx: unable to decode WitnessSet cbor") - $ fromBytes (unwrap bytes) - pure $ combineWitnessSet tx $ - Deserialization.WitnessSet.convertWitnessSet ws + $ decodeCbor (wrap bytes) + pure $ combineWitnessSet tx ws , apiError: show >>> throw , txSignError: show >>> throw } where - txToHex :: Transaction -> Effect String - txToHex = notImplemented + txToHex :: Transaction -> String + txToHex = encodeCbor >>> unwrap >>> byteArrayToHex -- We have to combine the newly returned witness set with the existing one -- Otherwise, any datums, etc... won't be retained @@ -218,7 +210,7 @@ signData conn address dat = do -- TODO: forbid byron addresses let byteAddress = encodeCbor address result <- Cip30.signData conn (byteArrayToHex $ unwrap byteAddress) - (rawBytesToHex dat) + (byteArrayToHex $ unwrap dat) liftEffect $ result `flip match` { dataSignError: show >>> throw , apiError: show >>> throw @@ -243,7 +235,3 @@ getCip30Collateral conn (Coin requiredValue) = do (Cip30.getCollateral conn requiredValueStr >>= handleApiError) `catchError` \err -> throwError $ error $ "Failed to call `getCollateral`: " <> show err - where - convertError = - "Unable to convert CIP-30 getCollateral required value: " <> - show requiredValue From 19388c912d9e22ec6aa78cdf8d2bc775bf41dee3 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 1 Mar 2024 03:16:56 +0400 Subject: [PATCH 054/373] Fix UtxoMinAda --- src/Internal/BalanceTx/UtxoMinAda.purs | 21 +-- src/Internal/Types/CostModels.purs | 219 +++++++++++++++++++++++++ 2 files changed, 228 insertions(+), 12 deletions(-) create mode 100644 src/Internal/Types/CostModels.purs diff --git a/src/Internal/BalanceTx/UtxoMinAda.purs b/src/Internal/BalanceTx/UtxoMinAda.purs index c65de18f6..5c41addd0 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.purs +++ b/src/Internal/BalanceTx/UtxoMinAda.purs @@ -7,17 +7,16 @@ import Prelude import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum (maxValue) as BigNum +import Cardano.Types.Coin (Coin) import Cardano.Types.TransactionOutput (TransactionOutput) import Cardano.Types.TransactionOutput as TransactionOutput +import Cardano.Types.Value (lovelaceValueOf) import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithValue) -import Ctl.Internal.Cardano.Types.Value (Coin(Coin), lovelaceValueOf) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Ctl.Internal.Serialization.Types (DataCost) import Ctl.Internal.Serialization.Types (TransactionOutput) as Csl -import Ctl.Internal.Types.ProtocolParameters - ( CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte) - ) import Data.Maybe (Maybe, fromJust) +import Data.Newtype (unwrap) import Partial.Unsafe (unsafePartial) foreign import minAdaForOutput @@ -28,20 +27,18 @@ foreign import newCoinsPerWord :: BigNum -> DataCost foreign import newCoinsPerByte :: BigNum -> DataCost utxoMinAdaValue - :: CoinsPerUtxoUnit -> TransactionOutput -> Maybe BigNum -utxoMinAdaValue coinsPerUtxoUnit txOutput = + :: Coin -> TransactionOutput -> Maybe BigNum +utxoMinAdaValue coinsPerUtxoByte txOutput = let cslTxOutput = TransactionOutput.toCsl txOutput - dataCost = case coinsPerUtxoUnit of - CoinsPerUtxoByte (Coin n) -> newCoinsPerByte n - CoinsPerUtxoWord (Coin n) -> newCoinsPerWord n + dataCost = newCoinsPerByte (unwrap coinsPerUtxoByte) in minAdaForOutput maybeFfiHelper cslTxOutput dataCost -- useful spy: BigNum.toBigInt >>= (pure <<< spy "utxoMinAdaValue") -adaOnlyUtxoMinAdaValue :: CoinsPerUtxoUnit -> BigNum -adaOnlyUtxoMinAdaValue coinsPerUtxoUnit = - unsafePartial fromJust <<< utxoMinAdaValue coinsPerUtxoUnit <<< +adaOnlyUtxoMinAdaValue :: Coin -> BigNum +adaOnlyUtxoMinAdaValue coinsPerUtxoByte = + unsafePartial fromJust <<< utxoMinAdaValue coinsPerUtxoByte <<< fakeOutputWithValue $ lovelaceValueOf BigNum.maxValue diff --git a/src/Internal/Types/CostModels.purs b/src/Internal/Types/CostModels.purs new file mode 100644 index 000000000..72bc38d9c --- /dev/null +++ b/src/Internal/Types/CostModels.purs @@ -0,0 +1,219 @@ +module Ctl.Internal.Types.CostModels + ( CostModelV1 + , CostModelV2 + , convertPlutusV1CostModel + , convertPlutusV2CostModel + ) where + +import Prelude + +import Cardano.Types.CostModel (CostModel) +import Ctl.Internal.Types.Int as Csl +import Data.Array (reverse) +import Data.List (List) +import Data.List as List +import Data.Newtype (wrap) +import Heterogeneous.Folding (class HFoldl, hfoldl) + +-- | A type that represents a JSON-encoded Costmodel in format used by Ogmios +type CostModelV1 = + ( "addInteger-cpu-arguments-intercept" :: Csl.Int + , "addInteger-cpu-arguments-slope" :: Csl.Int + , "addInteger-memory-arguments-intercept" :: Csl.Int + , "addInteger-memory-arguments-slope" :: Csl.Int + , "appendByteString-cpu-arguments-intercept" :: Csl.Int + , "appendByteString-cpu-arguments-slope" :: Csl.Int + , "appendByteString-memory-arguments-intercept" :: Csl.Int + , "appendByteString-memory-arguments-slope" :: Csl.Int + , "appendString-cpu-arguments-intercept" :: Csl.Int + , "appendString-cpu-arguments-slope" :: Csl.Int + , "appendString-memory-arguments-intercept" :: Csl.Int + , "appendString-memory-arguments-slope" :: Csl.Int + , "bData-cpu-arguments" :: Csl.Int + , "bData-memory-arguments" :: Csl.Int + , "blake2b_256-cpu-arguments-intercept" :: Csl.Int + , "blake2b_256-cpu-arguments-slope" :: Csl.Int + , "blake2b_256-memory-arguments" :: Csl.Int + , "cekApplyCost-exBudgetCPU" :: Csl.Int + , "cekApplyCost-exBudgetMemory" :: Csl.Int + , "cekBuiltinCost-exBudgetCPU" :: Csl.Int + , "cekBuiltinCost-exBudgetMemory" :: Csl.Int + , "cekConstCost-exBudgetCPU" :: Csl.Int + , "cekConstCost-exBudgetMemory" :: Csl.Int + , "cekDelayCost-exBudgetCPU" :: Csl.Int + , "cekDelayCost-exBudgetMemory" :: Csl.Int + , "cekForceCost-exBudgetCPU" :: Csl.Int + , "cekForceCost-exBudgetMemory" :: Csl.Int + , "cekLamCost-exBudgetCPU" :: Csl.Int + , "cekLamCost-exBudgetMemory" :: Csl.Int + , "cekStartupCost-exBudgetCPU" :: Csl.Int + , "cekStartupCost-exBudgetMemory" :: Csl.Int + , "cekVarCost-exBudgetCPU" :: Csl.Int + , "cekVarCost-exBudgetMemory" :: Csl.Int + , "chooseData-cpu-arguments" :: Csl.Int + , "chooseData-memory-arguments" :: Csl.Int + , "chooseList-cpu-arguments" :: Csl.Int + , "chooseList-memory-arguments" :: Csl.Int + , "chooseUnit-cpu-arguments" :: Csl.Int + , "chooseUnit-memory-arguments" :: Csl.Int + , "consByteString-cpu-arguments-intercept" :: Csl.Int + , "consByteString-cpu-arguments-slope" :: Csl.Int + , "consByteString-memory-arguments-intercept" :: Csl.Int + , "consByteString-memory-arguments-slope" :: Csl.Int + , "constrData-cpu-arguments" :: Csl.Int + , "constrData-memory-arguments" :: Csl.Int + , "decodeUtf8-cpu-arguments-intercept" :: Csl.Int + , "decodeUtf8-cpu-arguments-slope" :: Csl.Int + , "decodeUtf8-memory-arguments-intercept" :: Csl.Int + , "decodeUtf8-memory-arguments-slope" :: Csl.Int + , "divideInteger-cpu-arguments-constant" :: Csl.Int + , "divideInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int + , "divideInteger-cpu-arguments-model-arguments-slope" :: Csl.Int + , "divideInteger-memory-arguments-intercept" :: Csl.Int + , "divideInteger-memory-arguments-minimum" :: Csl.Int + , "divideInteger-memory-arguments-slope" :: Csl.Int + , "encodeUtf8-cpu-arguments-intercept" :: Csl.Int + , "encodeUtf8-cpu-arguments-slope" :: Csl.Int + , "encodeUtf8-memory-arguments-intercept" :: Csl.Int + , "encodeUtf8-memory-arguments-slope" :: Csl.Int + , "equalsByteString-cpu-arguments-constant" :: Csl.Int + , "equalsByteString-cpu-arguments-intercept" :: Csl.Int + , "equalsByteString-cpu-arguments-slope" :: Csl.Int + , "equalsByteString-memory-arguments" :: Csl.Int + , "equalsData-cpu-arguments-intercept" :: Csl.Int + , "equalsData-cpu-arguments-slope" :: Csl.Int + , "equalsData-memory-arguments" :: Csl.Int + , "equalsInteger-cpu-arguments-intercept" :: Csl.Int + , "equalsInteger-cpu-arguments-slope" :: Csl.Int + , "equalsInteger-memory-arguments" :: Csl.Int + , "equalsString-cpu-arguments-constant" :: Csl.Int + , "equalsString-cpu-arguments-intercept" :: Csl.Int + , "equalsString-cpu-arguments-slope" :: Csl.Int + , "equalsString-memory-arguments" :: Csl.Int + , "fstPair-cpu-arguments" :: Csl.Int + , "fstPair-memory-arguments" :: Csl.Int + , "headList-cpu-arguments" :: Csl.Int + , "headList-memory-arguments" :: Csl.Int + , "iData-cpu-arguments" :: Csl.Int + , "iData-memory-arguments" :: Csl.Int + , "ifThenElse-cpu-arguments" :: Csl.Int + , "ifThenElse-memory-arguments" :: Csl.Int + , "indexByteString-cpu-arguments" :: Csl.Int + , "indexByteString-memory-arguments" :: Csl.Int + , "lengthOfByteString-cpu-arguments" :: Csl.Int + , "lengthOfByteString-memory-arguments" :: Csl.Int + , "lessThanByteString-cpu-arguments-intercept" :: Csl.Int + , "lessThanByteString-cpu-arguments-slope" :: Csl.Int + , "lessThanByteString-memory-arguments" :: Csl.Int + , "lessThanEqualsByteString-cpu-arguments-intercept" :: Csl.Int + , "lessThanEqualsByteString-cpu-arguments-slope" :: Csl.Int + , "lessThanEqualsByteString-memory-arguments" :: Csl.Int + , "lessThanEqualsInteger-cpu-arguments-intercept" :: Csl.Int + , "lessThanEqualsInteger-cpu-arguments-slope" :: Csl.Int + , "lessThanEqualsInteger-memory-arguments" :: Csl.Int + , "lessThanInteger-cpu-arguments-intercept" :: Csl.Int + , "lessThanInteger-cpu-arguments-slope" :: Csl.Int + , "lessThanInteger-memory-arguments" :: Csl.Int + , "listData-cpu-arguments" :: Csl.Int + , "listData-memory-arguments" :: Csl.Int + , "mapData-cpu-arguments" :: Csl.Int + , "mapData-memory-arguments" :: Csl.Int + , "mkCons-cpu-arguments" :: Csl.Int + , "mkCons-memory-arguments" :: Csl.Int + , "mkNilData-cpu-arguments" :: Csl.Int + , "mkNilData-memory-arguments" :: Csl.Int + , "mkNilPairData-cpu-arguments" :: Csl.Int + , "mkNilPairData-memory-arguments" :: Csl.Int + , "mkPairData-cpu-arguments" :: Csl.Int + , "mkPairData-memory-arguments" :: Csl.Int + , "modInteger-cpu-arguments-constant" :: Csl.Int + , "modInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int + , "modInteger-cpu-arguments-model-arguments-slope" :: Csl.Int + , "modInteger-memory-arguments-intercept" :: Csl.Int + , "modInteger-memory-arguments-minimum" :: Csl.Int + , "modInteger-memory-arguments-slope" :: Csl.Int + , "multiplyInteger-cpu-arguments-intercept" :: Csl.Int + , "multiplyInteger-cpu-arguments-slope" :: Csl.Int + , "multiplyInteger-memory-arguments-intercept" :: Csl.Int + , "multiplyInteger-memory-arguments-slope" :: Csl.Int + , "nullList-cpu-arguments" :: Csl.Int + , "nullList-memory-arguments" :: Csl.Int + , "quotientInteger-cpu-arguments-constant" :: Csl.Int + , "quotientInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int + , "quotientInteger-cpu-arguments-model-arguments-slope" :: Csl.Int + , "quotientInteger-memory-arguments-intercept" :: Csl.Int + , "quotientInteger-memory-arguments-minimum" :: Csl.Int + , "quotientInteger-memory-arguments-slope" :: Csl.Int + , "remainderInteger-cpu-arguments-constant" :: Csl.Int + , "remainderInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int + , "remainderInteger-cpu-arguments-model-arguments-slope" :: Csl.Int + , "remainderInteger-memory-arguments-intercept" :: Csl.Int + , "remainderInteger-memory-arguments-minimum" :: Csl.Int + , "remainderInteger-memory-arguments-slope" :: Csl.Int + , "sha2_256-cpu-arguments-intercept" :: Csl.Int + , "sha2_256-cpu-arguments-slope" :: Csl.Int + , "sha2_256-memory-arguments" :: Csl.Int + , "sha3_256-cpu-arguments-intercept" :: Csl.Int + , "sha3_256-cpu-arguments-slope" :: Csl.Int + , "sha3_256-memory-arguments" :: Csl.Int + , "sliceByteString-cpu-arguments-intercept" :: Csl.Int + , "sliceByteString-cpu-arguments-slope" :: Csl.Int + , "sliceByteString-memory-arguments-intercept" :: Csl.Int + , "sliceByteString-memory-arguments-slope" :: Csl.Int + , "sndPair-cpu-arguments" :: Csl.Int + , "sndPair-memory-arguments" :: Csl.Int + , "subtractInteger-cpu-arguments-intercept" :: Csl.Int + , "subtractInteger-cpu-arguments-slope" :: Csl.Int + , "subtractInteger-memory-arguments-intercept" :: Csl.Int + , "subtractInteger-memory-arguments-slope" :: Csl.Int + , "tailList-cpu-arguments" :: Csl.Int + , "tailList-memory-arguments" :: Csl.Int + , "trace-cpu-arguments" :: Csl.Int + , "trace-memory-arguments" :: Csl.Int + , "unBData-cpu-arguments" :: Csl.Int + , "unBData-memory-arguments" :: Csl.Int + , "unConstrData-cpu-arguments" :: Csl.Int + , "unConstrData-memory-arguments" :: Csl.Int + , "unIData-cpu-arguments" :: Csl.Int + , "unIData-memory-arguments" :: Csl.Int + , "unListData-cpu-arguments" :: Csl.Int + , "unListData-memory-arguments" :: Csl.Int + , "unMapData-cpu-arguments" :: Csl.Int + , "unMapData-memory-arguments" :: Csl.Int + , "verifyEd25519Signature-cpu-arguments-intercept" :: Csl.Int + , "verifyEd25519Signature-cpu-arguments-slope" :: Csl.Int + , "verifyEd25519Signature-memory-arguments" :: Csl.Int + ) + +type CostModelV2 = + ( "serialiseData-cpu-arguments-intercept" :: Csl.Int + , "serialiseData-cpu-arguments-slope" :: Csl.Int + , "serialiseData-memory-arguments-intercept" :: Csl.Int + , "serialiseData-memory-arguments-slope" :: Csl.Int + , "verifyEcdsaSecp256k1Signature-cpu-arguments" :: Csl.Int + , "verifyEcdsaSecp256k1Signature-memory-arguments" :: Csl.Int + , "verifySchnorrSecp256k1Signature-cpu-arguments-intercept" :: Csl.Int + , "verifySchnorrSecp256k1Signature-cpu-arguments-slope" :: Csl.Int + , "verifySchnorrSecp256k1Signature-memory-arguments" :: Csl.Int + | CostModelV1 + ) + +-- This assumes that cost models are stored in lexicographical order +convertCostModel + :: forall costModel + . HFoldl (List Csl.Int -> Csl.Int -> List Csl.Int) (List Csl.Int) costModel + (List Csl.Int) + => costModel + -> CostModel +convertCostModel model = wrap $ reverse $ List.toUnfoldable $ hfoldl + ((\xs x -> x List.: xs) :: List Csl.Int -> Csl.Int -> List Csl.Int) + (mempty :: List Csl.Int) + model + +-- Specialized conversions to only perform the type level traversals once + +convertPlutusV1CostModel :: Record CostModelV1 -> CostModel +convertPlutusV1CostModel = convertCostModel + +convertPlutusV2CostModel :: Record CostModelV2 -> CostModel +convertPlutusV2CostModel = convertCostModel From fcf2bdcc2f56993029487baeab35e904bb98c00a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 1 Mar 2024 03:32:53 +0400 Subject: [PATCH 055/373] Fix collateral selection module --- src/Internal/BalanceTx/Collateral/Select.purs | 109 +++++++++--------- 1 file changed, 55 insertions(+), 54 deletions(-) diff --git a/src/Internal/BalanceTx/Collateral/Select.purs b/src/Internal/BalanceTx/Collateral/Select.purs index 1e3e94e11..99a16e4ad 100644 --- a/src/Internal/BalanceTx/Collateral/Select.purs +++ b/src/Internal/BalanceTx/Collateral/Select.purs @@ -6,43 +6,39 @@ module Ctl.Internal.BalanceTx.Collateral.Select import Prelude -import Cardano.Types.BigNum (BigNum(..)) +import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum as BigNum -import Cardano.Types.Coin (Coin(..)) +import Cardano.Types.Coin (Coin) import Cardano.Types.Coin as Coin -import Cardano.Types.MultiAsset (MultiAsset(..)) +import Cardano.Types.MultiAsset (MultiAsset) import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.TransactionInput (TransactionInput) -import Cardano.Types.TransactionOutput (TransactionOutput(..)) -import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput(..)) +import Cardano.Types.TransactionOutput (TransactionOutput) +import Cardano.Types.TransactionUnspentOutput + ( TransactionUnspentOutput(TransactionUnspentOutput) + ) import Cardano.Types.UtxoMap (UtxoMap) import Cardano.Types.Value as Value -import Control.Bind (bindFlipped) import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithMultiAssets) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) -import Ctl.Internal.Helpers (notImplemented) -import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) -import Data.Array (foldr) +import Ctl.Internal.Helpers (bugTrackerLink) import Data.Array as Array -import Data.Foldable (foldMap, foldl) +import Data.Foldable (foldl) import Data.Function (on) import Data.List (List(Nil, Cons)) import Data.List as List import Data.Map (toUnfoldable) as Map -import Data.Maybe (Maybe(..), fromMaybe) +import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Ordering (invert) as Ordering -import Data.Traversable (traverse) import Data.Tuple (Tuple(Tuple)) import Data.Tuple (fst, snd) as Tuple import Data.Tuple.Nested (type (/\), (/\)) -import Effect (Effect) -import JS.BigInt (BigInt) -import JS.BigInt (fromInt) as BigInt -import Safe.Coerce (coerce) +import Effect.Exception (throw) +import Effect.Unsafe (unsafePerformEffect) -minRequiredCollateral :: BigNum -minRequiredCollateral = BigNum.fromInt 5_000_000 +minRequiredCollateral :: Coin +minRequiredCollateral = wrap $ BigNum.fromInt 5_000_000 -- | A constant that limits the number of candidate utxos for collateral -- | selection, thus maintaining acceptable time complexity. @@ -54,9 +50,9 @@ maxCandidateUtxos = 10 -------------------------------------------------------------------------------- collateralReturnMinAdaValue - :: CoinsPerUtxoUnit -> List TransactionUnspentOutput -> Maybe BigNum -collateralReturnMinAdaValue coinsPerUtxoUnit = - utxoMinAdaValue coinsPerUtxoUnit <<< fakeOutputWithMultiAssets <=< + :: Coin -> List TransactionUnspentOutput -> Maybe BigNum +collateralReturnMinAdaValue coinsPerUtxoByte = + utxoMinAdaValue coinsPerUtxoByte <<< fakeOutputWithMultiAssets <=< MultiAsset.sum <<< Array.fromFoldable <<< map nonAdaAsset type ReturnOutMinAdaValue = BigNum @@ -90,8 +86,8 @@ instance Ord CollateralCandidate where byNumOfInputs :: CollateralCandidate -> Int byNumOfInputs = List.length <<< Tuple.fst <<< unwrap - byAdaValue :: CollateralCandidate -> BigInt - byAdaValue = foldl consumeUtxoAdaValue zero <<< Tuple.fst <<< unwrap + byAdaValue :: CollateralCandidate -> Coin + byAdaValue = foldl consumeUtxoAdaValue Coin.zero <<< Tuple.fst <<< unwrap mkCollateralCandidate :: List TransactionUnspentOutput /\ Maybe ReturnOutMinAdaValue @@ -116,39 +112,33 @@ mkCollateralCandidate (unspentOutputs /\ returnOutMinAdaValue) = -- | utxo min ada value, we prefer the one with fewer inputs. -- | selectCollateral - :: CoinsPerUtxoUnit + :: Coin -> Int -> UtxoMap - -> Effect (Maybe (List TransactionUnspentOutput)) + -> Maybe (List TransactionUnspentOutput) selectCollateral coinsPerUtxoUnit maxCollateralInputs = - notImplemented - -- -- Sort candidate utxo combinations in ascending order by utxo min ada value - -- -- of return output, then select the first utxo combination: - -- map (map (Tuple.fst <<< unwrap) <<< List.head <<< List.sort) - -- -- For each candidate utxo combination calculate - -- -- the min Ada value of the corresponding collateral return output: - -- <<< map (List.mapMaybe mkCollateralCandidate) - -- <<< map - -- (\x -> Tuple x $ collateralReturnMinAdaValue coinsPerUtxoUnit x) - -- -- Filter out all utxo combinations - -- -- with total Ada value < `minRequiredCollateral`: - -- <<< List.filter - -- (\x -> foldl (map (fromMaybe zero) <<< consumeUtxoAdaValue) zero x >= coerce minRequiredCollateral) - -- -- Get all possible non-empty utxo combinations - -- -- with the number of utxos <= `maxCollateralInputs`: - -- <<< combinations maxCollateralInputs - -- -- Limit the number of candidate utxos for collateral selection to - -- -- maintain acceptable time complexity: - -- <<< List.take maxCandidateUtxos - -- <<< map unwrap + -- Sort candidate utxo combinations in ascending order by utxo min ada value + -- of return output, then select the first utxo combination: + map (Tuple.fst <<< unwrap) <<< List.head <<< List.sort + -- For each candidate utxo combination calculate + -- the min Ada value of the corresponding collateral return output: + <<< List.mapMaybe mkCollateralCandidate + <<< map (\x -> Tuple x $ collateralReturnMinAdaValue coinsPerUtxoUnit x) + -- Filter out all utxo combinations + -- with total Ada value < `minRequiredCollateral`: + <<< List.filter + (\x -> foldl consumeUtxoAdaValue (Coin.zero) x >= minRequiredCollateral) + -- Get all possible non-empty utxo combinations + -- with the number of utxos <= `maxCollateralInputs`: + <<< combinations maxCollateralInputs + -- Limit the number of candidate utxos for collateral selection to + -- maintain acceptable time complexity: + <<< List.take maxCandidateUtxos + <<< map unwrap -- Sort utxos by ada value in decreasing order: - <<< sortByDecreasingAda - where - sortByDecreasingAda :: UtxoMap -> List AdaOut - sortByDecreasingAda = - List.sortBy (\lhs -> Ordering.invert <<< compare lhs) - <<< map (AdaOut <<< asTxUnspentOutput) - <<< Map.toUnfoldable + <<< List.sortBy (\lhs -> Ordering.invert <<< compare lhs) + <<< map (AdaOut <<< asTxUnspentOutput) + <<< Map.toUnfoldable -------------------------------------------------------------------------------- -- Helpers @@ -173,8 +163,19 @@ adaValue :: TransactionUnspentOutput -> Coin adaValue = Value.getCoin <<< _.amount <<< unwrap <<< _.output <<< unwrap -consumeUtxoAdaValue :: Coin -> TransactionUnspentOutput -> Maybe Coin -consumeUtxoAdaValue acc = Coin.add acc <<< adaValue +consumeUtxoAdaValue :: Coin -> TransactionUnspentOutput -> Coin +consumeUtxoAdaValue acc = unsafeFromMaybe "consumeUtxoAdaValue" <<< Coin.add acc + <<< adaValue + +unsafeFromMaybe :: forall a. String -> Maybe a -> a +unsafeFromMaybe e a = case a of + Nothing -> + unsafePerformEffect $ throw $ "unsafeFromMaybe: impossible happened: " + <> e + <> " (please report as bug at " + <> bugTrackerLink + <> " )" + Just v -> v nonAdaAsset :: TransactionUnspentOutput -> MultiAsset nonAdaAsset = From 1983801cf2419a10bce87adde09538f9f0026ef4 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 1 Mar 2024 19:27:31 +0400 Subject: [PATCH 056/373] Fix Transaction utils --- src/Internal/Transaction.purs | 133 ++++++++++++++++------------------ 1 file changed, 61 insertions(+), 72 deletions(-) diff --git a/src/Internal/Transaction.purs b/src/Internal/Transaction.purs index e6fb02ae4..5a80e8a50 100644 --- a/src/Internal/Transaction.purs +++ b/src/Internal/Transaction.purs @@ -1,6 +1,5 @@ module Ctl.Internal.Transaction ( attachDatum - , attachRedeemer , attachPlutusScript , attachNativeScript , setScriptDataHash @@ -8,37 +7,41 @@ module Ctl.Internal.Transaction import Prelude -import Cardano.Serialization.Lib (toBytes) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) -import Ctl.Internal.Cardano.Types.Transaction - ( Costmdls - , Redeemer - , ScriptDataHash(ScriptDataHash) - , Transaction(Transaction) - , TransactionWitnessSet(TransactionWitnessSet) - , TxBody(TxBody) +import Cardano.Serialization.Lib + ( hashScriptData + , packListContainer + , packMapContainer + ) +import Cardano.Types.CostModel (CostModel) +import Cardano.Types.CostModel as CostModel +import Cardano.Types.Language (Language) +import Cardano.Types.Language as Language +import Cardano.Types.NativeScript (NativeScript) +import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.Redeemer (Redeemer) +import Cardano.Types.Redeemer as Redeemer +import Cardano.Types.ScriptDataHash (ScriptDataHash(ScriptDataHash)) +import Cardano.Types.Transaction (Transaction(Transaction)) +import Cardano.Types.TransactionBody (TransactionBody(TransactionBody)) +import Cardano.Types.TransactionWitnessSet + ( TransactionWitnessSet(TransactionWitnessSet) ) -import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.Serialization (hashScriptData) -import Ctl.Internal.Serialization.PlutusData as Serialization.PlutusData -import Ctl.Internal.Serialization.Types as Serialization -import Ctl.Internal.Serialization.WitnessSet as Serialization.WitnessSet -import Ctl.Internal.Types.Datum (Datum) -import Ctl.Internal.Types.Scripts (PlutusScript) -import Data.Array as Array import Data.Foldable (null) +import Data.Map (Map) +import Data.Map as Map import Data.Maybe (Maybe(Just)) import Data.Newtype (over, unwrap) -import Data.Traversable (traverse) +import Data.Profunctor.Strong ((***)) import Effect (Effect) -import Effect.Class (liftEffect) -- | Set the `Transaction` body's script data hash. NOTE: Must include *all* of -- | the datums and redeemers for the given transaction setScriptDataHash - :: Costmdls + :: Map Language CostModel -> Array Redeemer - -> Array Datum + -> Array PlutusData -> Transaction -> Effect Transaction setScriptDataHash costModels rs ds tx@(Transaction { body, witnessSet }) @@ -52,77 +55,63 @@ setScriptDataHash costModels rs ds tx@(Transaction { body, witnessSet }) , null rs , null ds = pure tx | otherwise = do - scriptDataHash <- ScriptDataHash <<< toBytes - <$> hashScriptData costModels rs (unwrap <$> ds) + let + costMdlsCsl = + packMapContainer $ map (Language.toCsl *** CostModel.toCsl) $ + Map.toUnfoldable costModels + redeemersCsl = + packListContainer $ Redeemer.toCsl <$> rs + datumsCsl = + packListContainer $ PlutusData.toCsl <$> ds + scriptDataHash = + ScriptDataHash $ hashScriptData redeemersCsl costMdlsCsl datumsCsl pure $ over Transaction _ - { body = over TxBody _ { scriptDataHash = Just scriptDataHash } body + { body = over TransactionBody + _ { scriptDataHash = Just scriptDataHash } + body } tx -- | Attach a `Datum` to a transaction by modifying its existing witness set. -- | Fails if either the datum or updated witness set cannot be converted during -- | (de-)serialization -attachDatum :: Datum -> Transaction -> Effect Transaction -attachDatum d = attachDatums (Array.singleton d) +attachDatum :: PlutusData -> Transaction -> Transaction +attachDatum d = attachDatums [ d ] attachDatums - :: Array Datum -> Transaction -> Effect Transaction -attachDatums [] tx = pure tx -attachDatums datums tx@(Transaction { witnessSet: ws }) = do - let ds = map (Serialization.PlutusData.convertPlutusData <<< unwrap) datums - updateTxWithWitnesses tx - <$> convertWitnessesWith ws (Serialization.WitnessSet.setPlutusData ds) - --- | Attach a `Redeemer` to a transaction by modifying its existing witness set. --- | Note that this is the `Types.Transaction` representation of a redeemer and --- | not a wrapped `PlutusData`. --- --- | Fails if either the redeemer or updated witness set cannot be converted --- | during (de-)serialization -attachRedeemer - :: Redeemer -> Transaction -> Effect Transaction -attachRedeemer r = attachRedeemers (Array.singleton r) - -attachRedeemers - :: Array Redeemer -> Transaction -> Effect Transaction -attachRedeemers rs tx@(Transaction { witnessSet: ws }) = do - rs' <- liftEffect $ traverse Serialization.WitnessSet.convertRedeemer rs - updateTxWithWitnesses tx - <$> convertWitnessesWith ws (Serialization.WitnessSet.setRedeemers rs') + :: Array PlutusData -> Transaction -> Transaction +attachDatums [] tx = tx +attachDatums datums tx@(Transaction { witnessSet: TransactionWitnessSet ws }) = + do + updateTxWithWitnesses tx $ TransactionWitnessSet $ ws + { plutusData = ws.plutusData <> datums } -- | Attach a `PlutusScript` to a transaction by modifying its existing witness -- | set --- | --- | Fails if either the script or updated witness set cannot be converted --- | during (de-)serialization attachPlutusScript - :: PlutusScript -> Transaction -> Effect Transaction -attachPlutusScript ps = attachPlutusScripts (Array.singleton ps) + :: PlutusScript -> Transaction -> Transaction +attachPlutusScript ps = attachPlutusScripts [ ps ] attachPlutusScripts :: Array PlutusScript -> Transaction - -> Effect Transaction -attachPlutusScripts ps tx@(Transaction { witnessSet: ws }) = do - let ps' = ps # map Serialization.PlutusScript.convertPlutusScript - updateTxWithWitnesses tx - <$> convertWitnessesWith ws (Serialization.WitnessSet.setPlutusScripts ps') + -> Transaction +attachPlutusScripts ps tx@(Transaction { witnessSet: TransactionWitnessSet ws }) = + do + updateTxWithWitnesses tx + $ TransactionWitnessSet + $ ws { plutusScripts = ws.plutusScripts <> ps } +-- | Attach a `NativeScript` to a transaction by modifying its existing witness +-- | set attachNativeScript :: NativeScript -> Transaction -> Transaction -attachNativeScript ns tx = do - updateTxWithWitnesses tx $ - mempty # over TransactionWitnessSet _ { nativeScripts = Just [ ns ] } - -convertWitnessesWith - :: TransactionWitnessSet - -> (Serialization.TransactionWitnessSet -> Effect Unit) - -> Effect TransactionWitnessSet -convertWitnessesWith ws act = do - ws' <- liftEffect $ Serialization.WitnessSet.convertWitnessSet ws - liftEffect $ act ws' - pure $ Deserialization.WitnessSet.convertWitnessSet ws' +attachNativeScript ns tx@(Transaction { witnessSet: TransactionWitnessSet ws }) = + do + updateTxWithWitnesses tx + $ TransactionWitnessSet + $ ws { nativeScripts = ws.nativeScripts <> [ ns ] } updateTxWithWitnesses :: Transaction From ace00c610712eb07892393ce5cfa274a17f80ac9 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 2 Mar 2024 01:00:03 +0400 Subject: [PATCH 057/373] Fix Ctl.Internal.Types.Scripts --- src/Internal/Contract/Hooks.purs | 8 ++++++-- src/Internal/Types/Scripts.purs | 21 ++++++--------------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/Internal/Contract/Hooks.purs b/src/Internal/Contract/Hooks.purs index efd552c6c..591ed76eb 100644 --- a/src/Internal/Contract/Hooks.purs +++ b/src/Internal/Contract/Hooks.purs @@ -1,8 +1,12 @@ -module Ctl.Internal.Contract.Hooks (Hooks, emptyHooks) where +module Ctl.Internal.Contract.Hooks + ( Hooks + , emptyHooks + ) +where import Prelude -import Ctl.Internal.Cardano.Types.Transaction (Transaction) +import Cardano.Types.Transaction (Transaction) import Data.Maybe (Maybe(Nothing)) import Effect (Effect) import Effect.Exception (Error) diff --git a/src/Internal/Types/Scripts.purs b/src/Internal/Types/Scripts.purs index e6c32c3bd..9b015a2dd 100644 --- a/src/Internal/Types/Scripts.purs +++ b/src/Internal/Types/Scripts.purs @@ -6,8 +6,6 @@ module Ctl.Internal.Types.Scripts , StakeValidatorHash(StakeValidatorHash) , Validator(Validator) , ValidatorHash(ValidatorHash) - , stakeValidatorHashToBech32 - , module X ) where import Prelude @@ -22,21 +20,18 @@ import Aeson , encodeAeson , getField ) -import Cardano.Types.Language (Language(..), fromCsl, toCsl) as X +import Cardano.FromData (class FromData) +import Cardano.FromMetadata (class FromMetadata) +import Cardano.ToData (class ToData) +import Cardano.ToMetadata (class ToMetadata) import Cardano.Types.NativeScript (NativeScript) import Cardano.Types.PlutusScript (PlutusScript(..)) import Control.Alt ((<|>)) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBech32Unsafe) -import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.Aliases (Bech32String) +import Cardano.Types.ScriptHash (ScriptHash) import Data.Either (Either(Left)) import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap) +import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) -import Partial.Unsafe (unsafePartial) -------------------------------------------------------------------------------- -- `PlutusScript` newtypes and `TypedValidator` @@ -180,7 +175,3 @@ instance EncodeAeson StakeValidatorHash where instance Show StakeValidatorHash where show = genericShow - -stakeValidatorHashToBech32 :: StakeValidatorHash -> Bech32String -stakeValidatorHashToBech32 = unsafePartial $ unwrap >>> scriptHashToBech32Unsafe - "script" From 107e971db016709b5a6131d8a351aa1cc26eb776 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 2 Mar 2024 01:49:58 +0400 Subject: [PATCH 058/373] Fix RedeemerIndex --- packages.dhall | 60 ++++++++++++++++++++++- spago.dhall | 12 ++--- src/Internal/BalanceTx/RedeemerIndex.purs | 53 ++++++++++---------- 3 files changed, 90 insertions(+), 35 deletions(-) diff --git a/packages.dhall b/packages.dhall index ca6a3dbe5..03184c804 100644 --- a/packages.dhall +++ b/packages.dhall @@ -279,7 +279,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "bdf3133ca08290c9c7e6c9e65c46096354c74898" + , version = "596a54711c3841a5851371056e1376a9f7bf70b4" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -287,6 +287,36 @@ let additions = "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema" , version = "351003d931990949ce3d73f399a179e4a0fa40f1" } + , plutus-types = + { dependencies = + [ "aeson" + , "argonaut-codecs" + , "arrays" + , "bifunctors" + , "bytearrays" + , "cardano-plutus-data-schema" + , "cardano-types" + , "console" + , "effect" + , "either" + , "foldable-traversable" + , "gen" + , "js-bigints" + , "lattice" + , "maybe" + , "monad-logger" + , "newtype" + , "ordered-collections" + , "partial" + , "prelude" + , "profunctor-lenses" + , "quickcheck" + , "these" + , "tuples" + ] + , repo = "https://github.com/mlabs-haskell/purescript-plutus-types" + , version = "143902b37e218d843b9da473553ecf50686934cb" + } , cardano-types = { dependencies = [ "aeson" @@ -331,7 +361,33 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "db0ca1ee2cf6a2cbbe282d49a3bf9daa696ebdee" + , version = "7694c87969562c131ec0db2c251fa651dc42d66e" + } + , cardano-message-signing = + { dependencies = + [ "bytearrays" + , "cardano-types" + , "console" + , "effect" + , "newtype" + , "prelude" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-message-signing" + , version = "8078bd9ce339262f29155a80572e8c44334aa801" + } + , cardano-hd-wallet = + { dependencies = + [ "cardano-serialization-lib" + , "cardano-types" + , "console" + , "effect" + , "either" + , "prelude" + , "uint" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" + , version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9" } } diff --git a/spago.dhall b/spago.dhall index 57af87b8d..e5494d42e 100644 --- a/spago.dhall +++ b/spago.dhall @@ -18,6 +18,8 @@ You can edit this file as you like. , "bifunctors" , "bignumber" , "bytearrays" + , "cardano-hd-wallet" + , "cardano-message-signing" , "cardano-types" , "checked-exceptions" , "cip30" @@ -69,6 +71,7 @@ You can edit this file as you like. , "orders" , "parallel" , "partial" + , "plutus-types" , "posix-types" , "prelude" , "profunctor" @@ -100,12 +103,5 @@ You can edit this file as you like. , "web-storage" ] , packages = ./packages.dhall -, sources = - [ "src/**/*.purs" - , "test/**/*.purs" - , "examples/**/*.purs" - , "templates/ctl-scaffold/src/**/*.purs" - , "templates/ctl-scaffold/test/**/*.purs" - , "templates/ctl-scaffold/exe/**/*.purs" - ] +, sources = [ "src/**/*.purs" ] } diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 8ad7bc2df..ec4bc80b0 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -22,34 +22,37 @@ module Ctl.Internal.BalanceTx.RedeemerIndex import Prelude import Aeson (class EncodeAeson, encodeAeson) -import Cardano.Types.PlutusData (PlutusData) -import Cardano.Types.TransactionInput (TransactionInput) -import Ctl.Internal.Cardano.Types.Transaction +import Cardano.Types ( Certificate + , ExUnits(ExUnits) , Redeemer(Redeemer) + , RewardAddress , Transaction(Transaction) - , TxBody(TxBody) - , _redeemers - , _witnessSet + , TransactionBody(TransactionBody) ) -import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) -import Ctl.Internal.Types.RewardAddress (RewardAddress) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) +import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.Types.Scripts (MintingPolicyHash) import Data.Array (findIndex) import Data.Either (Either, note) -import Data.Foldable (fold) import Data.Generic.Rep (class Generic) import Data.Lens ((.~)) +import Data.Lens.Iso.Newtype (_Newtype) +import Data.Lens.Record (prop) import Data.Map as Map -import Data.Maybe (Maybe(Just), fromMaybe) +import Data.Maybe (Maybe, fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Set as Set import Data.Show.Generic (genericShow) import Data.Traversable (for) -import JS.BigInt as BigInt +import Type.Proxy (Proxy(..)) attachRedeemers :: Array Redeemer -> Transaction -> Transaction -attachRedeemers redeemers = _witnessSet <<< _redeemers .~ Just redeemers +attachRedeemers redeemers = + _Newtype <<< prop (Proxy :: Proxy "witnessSet") <<< + _Newtype <<< prop (Proxy :: Proxy "redeemers") .~ redeemers attachIndexedRedeemers :: Array IndexedRedeemer -> Transaction -> Transaction attachIndexedRedeemers = attachRedeemers <<< map indexedRedeemerToRedeemer @@ -82,15 +85,15 @@ unindexedRedeemerToRedeemer (UnindexedRedeemer { datum, purpose }) = Redeemer { tag: redeemerPurposeToRedeemerTag purpose , "data": datum - , index: zero - , exUnits: zero + , index: BigNum.zero + , exUnits: ExUnits { mem: BigNum.zero, steps: BigNum.zero } } -- | A redeemer with an index, but without `ExUnits` newtype IndexedRedeemer = IndexedRedeemer { tag :: RedeemerTag , datum :: PlutusData - , index :: Int + , index :: Prim.Int } derive instance Generic IndexedRedeemer _ @@ -106,9 +109,9 @@ indexedRedeemerToRedeemer :: IndexedRedeemer -> Redeemer indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = Redeemer { tag - , index: BigInt.fromInt index + , index: BigNum.fromInt index , data: datum - , exUnits: { mem: zero, steps: zero } + , exUnits: ExUnits { mem: BigNum.zero, steps: BigNum.zero } } -- | Contains a value redeemer corresponds to, different for each possible @@ -144,15 +147,15 @@ type RedeemersContext = mkRedeemersContext :: Transaction -> RedeemersContext mkRedeemersContext - (Transaction { body: TxBody { inputs, mint, withdrawals, certs } }) = - { inputs: Set.toUnfoldable inputs - , mintingPolicyHashes: Set.toUnfoldable (Map.keys mintedAssets) <#> wrap - , rewardAddresses: Set.toUnfoldable $ Map.keys $ fromMaybe Map.empty - withdrawals - , certs: fold certs + (Transaction { body: TransactionBody { inputs, mint, withdrawals, certs } }) = + { inputs: inputs + , mintingPolicyHashes: + map wrap $ Set.toUnfoldable $ Map.keys $ unwrap $ fromMaybe + (wrap Map.empty) + mint + , rewardAddresses: Set.toUnfoldable $ Map.keys $ withdrawals + , certs } - where - mintedAssets = fromMaybe Map.empty $ map (unwrap <<< unwrap) mint indexRedeemers :: RedeemersContext From 959339fcebe6fcc1b9e508ffd32f7f5e458bdf5b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 2 Mar 2024 01:59:23 +0400 Subject: [PATCH 059/373] Fix QueryM.Ogmios --- src/Internal/QueryM/Ogmios.purs | 158 ++++++++++++++------------------ 1 file changed, 71 insertions(+), 87 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index e3af14d74..ffbbaef41 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -94,20 +94,28 @@ import Aeson , (.:) , (.:?) ) -import Cardano.Serialization.Lib (fromBytes) -import Cardano.AsCbor (encodeCbor) +import Cardano.AsCbor (decodeCbor, encodeCbor) +import Cardano.Serialization.Lib (fromBytes, ipv4_new) +import Cardano.Types + ( Bech32String + , BigNum(..) + , Language(..) + , RedeemerTag + , VRFKeyHash(..) + ) import Cardano.Types.AssetName (unAssetName) import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum (fromBigInt, fromString) as BigNum +import Cardano.Types.CborBytes (CborBytes) +import Cardano.Types.Coin (Coin(..)) +import Cardano.Types.CostModel (CostModel(..)) import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash) -import Cardano.Types.PlutusScript (PlutusScript(..)) -import Cardano.Types.RewardAddress (RewardAddress) -import Cardano.Types.ScriptHash (ScriptHash) -import Cardano.Types.Slot (Slot(..)) -import Cardano.Types.TransactionHash (TransactionHash) -import Control.Alt ((<|>)) -import Control.Alternative (guard) -import Ctl.Internal.Cardano.Types.NativeScript +import Cardano.Types.ExUnitPrices (ExUnitPrices(..)) +import Cardano.Types.ExUnits (ExUnits(..)) +import Cardano.Types.Int as Cardano +import Cardano.Types.Ipv4 (Ipv4(Ipv4)) +import Cardano.Types.Ipv6 (Ipv6) +import Cardano.Types.NativeScript ( NativeScript ( ScriptPubkey , ScriptAll @@ -117,30 +125,20 @@ import Ctl.Internal.Cardano.Types.NativeScript , TimelockExpiry ) ) -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(NativeScriptRef, PlutusScriptRef) - ) -import Ctl.Internal.Cardano.Types.Transaction - ( CostModel(CostModel) - , Costmdls(Costmdls) - , ExUnitPrices - , ExUnits - , Ipv4(Ipv4) - , Ipv6(Ipv6) - , PoolMetadata(PoolMetadata) - , PoolMetadataHash(PoolMetadataHash) - , PoolPubKeyHash - , Relay(MultiHostName, SingleHostAddr, SingleHostName) - , SubCoin - , URL(URL) - , UnitInterval - ) -import Ctl.Internal.Cardano.Types.Value - ( Coin(Coin) - , Value - , getMultiAsset - , valueToCoin - ) +import Cardano.Types.PlutusScript (PlutusScript(..)) +import Cardano.Types.PoolMetadata (PoolMetadata(..)) +import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) +import Cardano.Types.Relay (Relay(..)) +import Cardano.Types.RewardAddress (RewardAddress) +import Cardano.Types.ScriptHash (ScriptHash) +import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) +import Cardano.Types.Slot (Slot(..)) +import Cardano.Types.TransactionHash (TransactionHash) +import Cardano.Types.URL (URL(..)) +import Cardano.Types.UnitInterval (UnitInterval(..)) +import Cardano.Types.Value (Value, getMultiAsset, valueToCoin) +import Control.Alt ((<|>)) +import Control.Alternative (guard) import Ctl.Internal.Helpers (encodeMap, showWithParens) import Ctl.Internal.QueryM.JsonRpc2 ( class DecodeOgmios @@ -151,32 +149,20 @@ import Ctl.Internal.QueryM.JsonRpc2 , decodeResult , mkCallType ) -import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.CborBytes (CborBytes(..)) -import Ctl.Internal.Types.Epoch (Epoch(Epoch)) import Ctl.Internal.Types.EraSummaries ( EraSummaries(EraSummaries) , EraSummary(EraSummary) , EraSummaryParameters(EraSummaryParameters) ) -import Ctl.Internal.Types.Int as Csl -import Ctl.Internal.Types.Natural (Natural) -import Ctl.Internal.Types.Natural (fromString) as Natural -import Ctl.Internal.Types.ProtocolParameters - ( CoinsPerUtxoUnit(CoinsPerUtxoByte) - , ProtocolParameters(ProtocolParameters) - ) +import Ctl.Internal.Types.ProtocolParameters (ProtocolParameters(..)) import Ctl.Internal.Types.Rational (Rational, (%)) import Ctl.Internal.Types.Rational as Rational -import Ctl.Internal.Types.RedeemerTag (RedeemerTag) -import Ctl.Internal.Types.RedeemerTag (fromString) as RedeemerTag -import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2)) +import Ctl.Internal.Types.RedeemerTag as RedeemerTag import Ctl.Internal.Types.SystemStart ( SystemStart , sysStartFromOgmiosTimestamp , sysStartToOgmiosTimestamp ) -import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) import Data.Argonaut.Encode.Encoders as Argonaut import Data.Array (catMaybes) import Data.Array (fromFoldable, length, replicate) as Array @@ -204,7 +190,6 @@ import Data.UInt (UInt) import Data.UInt as UInt import Foreign.Object (Object) import Foreign.Object as Object -import JS.BigInt (BigInt) import JS.BigInt as BigInt import Untagged.TypeCheck (class HasRuntimeType) import Untagged.Union (type (|+|), toEither1) @@ -359,9 +344,9 @@ instance DecodeOgmios MempoolSnapshotAcquired where -- | The acquired snapshot’s size (in bytes), number of transactions, and capacity -- | (in bytes). newtype MempoolSizeAndCapacity = MempoolSizeAndCapacity - { capacity :: Int - , currentSize :: Int - , numberOfTxs :: Int + { capacity :: Prim.Int + , currentSize :: Prim.Int + , numberOfTxs :: Prim.Int } derive instance Generic MempoolSizeAndCapacity _ @@ -492,7 +477,7 @@ instance DecodeOgmios OgmiosSystemStart where decodeOgmios = decodeResult decodeAeson ---------------- CURRENT EPOCH QUERY RESPONSE & PARSING -newtype CurrentEpoch = CurrentEpoch BigInt +newtype CurrentEpoch = CurrentEpoch BigNum derive instance Generic CurrentEpoch _ derive instance Newtype CurrentEpoch _ @@ -685,7 +670,7 @@ decodeUnitInterval aeson = do [ num, den ] -> do numerator <- note (TypeMismatch "BigNum") $ BigNum.fromString num denominator <- note (TypeMismatch "BigNum") $ BigNum.fromString den - pure + pure $ UnitInterval { numerator , denominator } @@ -698,7 +683,8 @@ decodeIpv4 aeson = do bs@[ _, _, _, _ ] -> do ints <- for bs $ note (TypeMismatch "Ipv4") <<< Int.fromString - Ipv4 <$> note (TypeMismatch "Ipv4") (byteArrayFromIntArray ints) + Ipv4 <<< ipv4_new <$> note (TypeMismatch "Ipv4") + (byteArrayFromIntArray ints) _ -> Left $ TypeMismatch "Ipv4" decodeIpv6 :: Aeson -> Either JsonDecodeError Ipv6 @@ -726,7 +712,7 @@ parseIpv6String str = do padded = String.replaceAll (Pattern " ") (Replacement "0") $ fold $ partsFixed <#> StringUtils.padStart 4 - Ipv6 <$> hexToByteArray padded + decodeCbor <<< wrap =<< hexToByteArray padded decodeRelay :: Aeson -> Either JsonDecodeError Relay decodeRelay aeson = do @@ -749,20 +735,20 @@ decodeRelay aeson = do decodePoolMetadata :: Aeson -> Either JsonDecodeError PoolMetadata decodePoolMetadata aeson = do obj <- decodeAeson aeson - hash <- obj .: "hash" >>= note (TypeMismatch "PoolMetadataHash") - <<< map PoolMetadataHash - <<< hexToByteArray + hash <- obj .: "hash" >>= + (hexToByteArray >>> map wrap >=> decodeCbor) >>> + note (TypeMismatch "PoolMetadataHash") url <- obj .: "url" <#> URL pure $ PoolMetadata { hash, url } ---------------- TX EVALUATION QUERY RESPONSE & PARSING -type RedeemerPointer = { redeemerTag :: RedeemerTag, redeemerIndex :: Natural } +type RedeemerPointer = { redeemerTag :: RedeemerTag, redeemerIndex :: UInt } showRedeemerPointer :: RedeemerPointer -> String showRedeemerPointer ptr = show ptr.redeemerTag <> ":" <> show ptr.redeemerIndex -type ExecutionUnits = { memory :: Natural, steps :: Natural } +type ExecutionUnits = { memory :: BigNum, steps :: BigNum } newtype TxEvaluationR = TxEvaluationR (Either TxEvaluationFailure TxEvaluationResult) @@ -798,7 +784,7 @@ instance DecodeAeson TxEvaluationResult where decodeRdmrPtrExUnitsItem elem = do res :: { validator :: String - , budget :: { memory :: Natural, cpu :: Natural } + , budget :: { memory :: BigNum, cpu :: BigNum } } <- decodeAeson elem redeemerPtr <- decodeRedeemerPointer res.validator pure $ redeemerPtr /\ { memory: res.budget.memory, steps: res.budget.cpu } @@ -814,13 +800,13 @@ decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch [ tagRaw, indexRaw ] -> { redeemerTag: _, redeemerIndex: _ } <$> RedeemerTag.fromString tagRaw - <*> Natural.fromString indexRaw + <*> UInt.fromString indexRaw _ -> Nothing type OgmiosDatum = String type OgmiosScript = String type OgmiosTxId = String -type OgmiosTxIn = { txId :: OgmiosTxId, index :: Int } +type OgmiosTxIn = { txId :: OgmiosTxId, index :: Prim.Int } -- | Reason a script failed. -- @@ -880,7 +866,7 @@ instance DecodeAeson ScriptFailure where 3013 -> do res :: { unsuitableOutputReference :: - { transaction :: { id :: String }, index :: Int } + { transaction :: { id :: String }, index :: Prim.Int } } <- decodeAeson errorData pure $ NonScriptInputReferencedByRedeemer { index: res.unsuitableOutputReference.index @@ -897,7 +883,7 @@ instance DecodeAeson ScriptFailure where 3117 -> do res :: { unknownOutputReferences :: - Array { transaction :: { id :: String }, index :: Int } + Array { transaction :: { id :: String }, index :: Prim.Int } } <- decodeAeson errorData pure $ UnknownInputReferencedByRedeemer $ map (\x -> { index: x.index, txId: x.transaction.id }) @@ -976,11 +962,11 @@ instance DecodeAeson PParamRational where err :: JsonDecodeError err = TypeMismatch "PParamRaional" -rationalToSubcoin :: PParamRational -> Maybe SubCoin +rationalToSubcoin :: PParamRational -> Maybe UnitInterval rationalToSubcoin (PParamRational rat) = do numerator <- BigNum.fromBigInt $ Rational.numerator rat denominator <- BigNum.fromBigInt $ Rational.denominator rat - pure { numerator, denominator } + pure $ UnitInterval { numerator, denominator } -- | A type that corresponds to Ogmios response. type ProtocolParametersRaw = @@ -1000,7 +986,7 @@ type ProtocolParametersRaw = { "lovelace" :: BigNum } , "stakePoolDeposit" :: { "lovelace" :: BigNum } - , "stakePoolRetirementEpochBound" :: BigInt + , "stakePoolRetirementEpochBound" :: UInt , "desiredNumberOfStakePools" :: UInt , "stakePoolPledgeInfluence" :: PParamRational , "monetaryExpansion" :: PParamRational @@ -1012,20 +998,20 @@ type ProtocolParametersRaw = , "minStakePoolCost" :: { "lovelace" :: BigNum } , "plutusCostModels" :: - { "plutus:v1" :: Array Csl.Int - , "plutus:v2" :: Maybe (Array Csl.Int) + { "plutus:v1" :: Array Cardano.Int + , "plutus:v2" :: Maybe (Array Cardano.Int) } , "scriptExecutionPrices" :: { "memory" :: PParamRational , "cpu" :: PParamRational } , "maxExecutionUnitsPerTransaction" :: - { "memory" :: BigInt - , "cpu" :: BigInt + { "memory" :: BigNum + , "cpu" :: BigNum } , "maxExecutionUnitsPerBlock" :: - { "memory" :: BigInt - , "cpu" :: BigInt + { "memory" :: BigNum + , "cpu" :: BigNum } , "collateralPercentage" :: UInt , "maxCollateralInputs" :: UInt @@ -1048,28 +1034,26 @@ instance DecodeAeson OgmiosProtocolParameters where { protocolVersion: ps.version.major /\ ps.version.minor -- The following two parameters were removed from Babbage , decentralization: zero - , extraPraosEntropy: Nothing , maxBlockHeaderSize: ps.maxBlockHeaderSize.bytes , maxBlockBodySize: ps.maxBlockBodySize.bytes , maxTxSize: ps.maxTransactionSize.bytes , txFeeFixed: ps.minFeeConstant.lovelace , txFeePerByte: ps.minFeeCoefficient - , stakeAddressDeposit: Coin ps.stakeCredentialDeposit.lovelace - , stakePoolDeposit: Coin ps.stakePoolDeposit.lovelace - , minPoolCost: Coin ps.minStakePoolCost.lovelace - , poolRetireMaxEpoch: Epoch ps.stakePoolRetirementEpochBound + , stakeAddressDeposit: wrap ps.stakeCredentialDeposit.lovelace + , stakePoolDeposit: wrap ps.stakePoolDeposit.lovelace + , minPoolCost: wrap ps.minStakePoolCost.lovelace + , poolRetireMaxEpoch: wrap ps.stakePoolRetirementEpochBound , stakePoolTargetNum: ps.desiredNumberOfStakePools , poolPledgeInfluence: unwrap ps.stakePoolPledgeInfluence , monetaryExpansion: unwrap ps.monetaryExpansion , treasuryCut: unwrap ps.treasuryExpansion -- Rational - , coinsPerUtxoUnit: CoinsPerUtxoByte (Coin ps.minUtxoDepositCoefficient) - , costModels: Costmdls $ Map.fromFoldable $ catMaybes + , coinsPerUtxoByte: wrap ps.minUtxoDepositCoefficient + , costModels: Map.fromFoldable $ catMaybes [ pure ( PlutusV1 /\ CostModel ps.plutusCostModels."plutus:v1" ) - , (PlutusV2 /\ _) <<< CostModel <$> - ps.plutusCostModels."plutus:v2" + , (PlutusV2 /\ _) <<< CostModel <$> ps.plutusCostModels."plutus:v2" ] , prices: prices , maxTxExUnits: decodeExUnits ps.maxExecutionUnitsPerTransaction @@ -1080,12 +1064,12 @@ instance DecodeAeson OgmiosProtocolParameters where } where decodeExUnits - :: { memory :: BigInt, cpu :: BigInt } -> ExUnits - decodeExUnits { memory, cpu } = { mem: memory, steps: cpu } + :: { memory :: BigNum, cpu :: BigNum } -> ExUnits + decodeExUnits { memory, cpu } = ExUnits { mem: memory, steps: cpu } decodePrices :: ProtocolParametersRaw -> Either JsonDecodeError ExUnitPrices - decodePrices ps = note (TypeMismatch "ExUnitPrices") do + decodePrices ps = note (TypeMismatch "ExUnitPrices") $ ExUnitPrices <$> do memPrice <- rationalToSubcoin ps.scriptExecutionPrices.memory stepPrice <- rationalToSubcoin ps.scriptExecutionPrices.cpu pure { memPrice, stepPrice } -- ExUnits From 6347c6c950017657281fa00e7b168502cf94547a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 2 Mar 2024 02:32:58 +0400 Subject: [PATCH 060/373] Fix BalanceTx.Error --- src/Internal/BalanceTx/Error.purs | 35 ++++++++++------------- src/Internal/BalanceTx/RedeemerIndex.purs | 5 ++-- src/Internal/Lens.purs | 15 ++++++++++ 3 files changed, 33 insertions(+), 22 deletions(-) create mode 100644 src/Internal/Lens.purs diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 6784a5868..f72adb7e4 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -24,19 +24,15 @@ module Ctl.Internal.BalanceTx.Error import Prelude +import Cardano.Types (Coin, Redeemer(Redeemer), Transaction) +import Cardano.Types.BigNum as BigNum import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionOutput (TransactionOutput) import Cardano.Types.UtxoMap (UtxoMap, pprintUtxoMap) -import Cardano.Types.Value (Value) +import Cardano.Types.Value (Value, pprintValue) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) -import Ctl.Internal.Cardano.Types.Transaction - ( Redeemer(Redeemer) - , Transaction - , _redeemers - , _witnessSet - ) -import Ctl.Internal.Cardano.Types.Value (pprintValue) import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) +import Ctl.Internal.Lens (_redeemers, _witnessSet) import Ctl.Internal.QueryM.Ogmios ( RedeemerPointer , ScriptFailure @@ -52,8 +48,6 @@ import Ctl.Internal.QueryM.Ogmios ) , TxEvaluationFailure(UnparsedError, AdditionalUtxoOverlap, ScriptFailures) ) as Ogmios -import Ctl.Internal.Types.Natural (toBigInt) as Natural -import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) import Data.Array (catMaybes, filter, uncons) as Array import Data.Bifunctor (bimap) import Data.Either (Either(Left, Right), either, isLeft) @@ -62,7 +56,7 @@ import Data.FoldableWithIndex (foldMapWithIndex) import Data.Function (applyN) import Data.Generic.Rep (class Generic) import Data.Int (ceil, decimal, toNumber, toStringAs) -import Data.Lens (non, (^.)) +import Data.Lens ((^.)) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) @@ -70,7 +64,8 @@ import Data.String (Pattern(Pattern)) import Data.String.CodePoints (length) as String import Data.String.Common (joinWith, split) as String import Data.String.Utils (padEnd) -import JS.BigInt (toString) as BigInt +import Data.UInt as UInt +import JS.BigInt as BigInt -- | Errors conditions that may possibly arise during transaction balancing data BalanceTxError @@ -80,7 +75,7 @@ data BalanceTxError | InsufficientCollateralUtxos UtxoMap | CouldNotGetUtxos | CollateralReturnError - | CollateralReturnMinAdaValueCalcError CoinsPerUtxoUnit TransactionOutput + | CollateralReturnMinAdaValueCalcError Coin TransactionOutput | ExUnitsEvaluationFailed Transaction Ogmios.TxEvaluationFailure | InsufficientUtxoBalanceToCoverAsset String | ReindexRedeemersError UnindexedRedeemer @@ -188,10 +183,10 @@ number ary = freeze (foldl go [] ary) biggestPrefix :: String biggestPrefix = toStringAs decimal (length (Array.filter isLeft ary)) <> ". " - width :: Int + width :: Prim.Int width = ceil (toNumber (String.length biggestPrefix) / 2.0) * 2 - numberLine :: Int -> String -> String + numberLine :: Prim.Int -> String -> String numberLine i l = padEnd width (toStringAs decimal (i + 1) <> ". ") <> l indentLine :: String -> String @@ -216,15 +211,15 @@ printTxEvaluationFailure transaction e = lookupRedeemerPointer :: Ogmios.RedeemerPointer -> Maybe Redeemer lookupRedeemerPointer ptr = - flip find (transaction ^. _witnessSet <<< _redeemers <<< non []) + flip find (transaction ^. _witnessSet <<< _redeemers) $ \(Redeemer { index, tag }) -> tag == ptr.redeemerTag && index == - Natural.toBigInt ptr.redeemerIndex + (BigNum.fromInt $ UInt.toInt ptr.redeemerIndex) printRedeemerPointer :: Ogmios.RedeemerPointer -> PrettyString printRedeemerPointer ptr = line ( show ptr.redeemerTag <> ":" <> BigInt.toString - (Natural.toBigInt ptr.redeemerIndex) + (BigInt.fromInt $ UInt.toInt ptr.redeemerIndex) ) -- TODO Investigate if more details can be printed, for example minting @@ -277,8 +272,8 @@ printTxEvaluationFailure transaction e = Ogmios.IllFormedExecutionBudget (Just { memory, steps }) -> line "Ill formed execution budget:" <> bullet - ( line ("Memory: " <> BigInt.toString (Natural.toBigInt memory)) - <> line ("Steps: " <> BigInt.toString (Natural.toBigInt steps)) + ( line ("Memory: " <> BigNum.toString memory) + <> line ("Steps: " <> BigNum.toString steps) ) Ogmios.NoCostModelForLanguage languages -> line "No cost model for languages:" diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index ec4bc80b0..54deb7904 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -51,8 +51,9 @@ import Type.Proxy (Proxy(..)) attachRedeemers :: Array Redeemer -> Transaction -> Transaction attachRedeemers redeemers = - _Newtype <<< prop (Proxy :: Proxy "witnessSet") <<< - _Newtype <<< prop (Proxy :: Proxy "redeemers") .~ redeemers + _Newtype <<< prop (Proxy :: Proxy "witnessSet") + <<< _Newtype + <<< prop (Proxy :: Proxy "redeemers") .~ redeemers attachIndexedRedeemers :: Array IndexedRedeemer -> Transaction -> Transaction attachIndexedRedeemers = attachRedeemers <<< map indexedRedeemerToRedeemer diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs new file mode 100644 index 000000000..ec0220014 --- /dev/null +++ b/src/Internal/Lens.purs @@ -0,0 +1,15 @@ +module Ctl.Internal.Lens (_witnessSet, _redeemers) where + +import Prelude + +import Cardano.Types (Redeemer, Transaction, TransactionWitnessSet) +import Data.Lens (Lens') +import Data.Lens.Iso.Newtype (_Newtype) +import Data.Lens.Record (prop) +import Type.Proxy (Proxy(..)) + +_witnessSet :: Lens' Transaction TransactionWitnessSet +_witnessSet = _Newtype <<< prop (Proxy :: Proxy "witnessSet") + +_redeemers :: Lens' TransactionWitnessSet (Array Redeemer) +_redeemers = _Newtype <<< prop (Proxy :: Proxy "redeemers") From 59a08b582e0babd115a6244752b76b8b868f7c96 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 2 Mar 2024 02:57:28 +0400 Subject: [PATCH 061/373] Fix CoinSelection --- src/Internal/BalanceTx/CoinSelection.purs | 76 +++++++++++++---------- src/Internal/CoinSelection/UtxoIndex.purs | 4 +- 2 files changed, 44 insertions(+), 36 deletions(-) diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index df1007767..dad3c7635 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -22,29 +22,36 @@ module Ctl.Internal.BalanceTx.CoinSelection import Prelude import Cardano.AsCbor (encodeCbor) -import Cardano.Types.Asset (Asset(..)) +import Cardano.Types (AssetClass(AssetClass), Coin, Value) +import Cardano.Types.Asset (Asset(Asset, AdaAsset)) import Cardano.Types.AssetName (unAssetName) as AssetName -import Cardano.Types.BigNum (BigNum(..)) +import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum as BigNum import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.UtxoMap (UtxoMap) -import Cardano.Types.Value as Value -import Control.Monad.Error.Class (class MonadThrow, throwError) +import Cardano.Types.Value + ( add + , getAssetQuantity + , getCoin + , leq + , valueAssets + , valueToCoin + , zero + ) as Value +import Control.Monad.Error.Class + ( class MonadError + , class MonadThrow + , throwError + ) import Ctl.Internal.BalanceTx.Error ( Actual(Actual) , BalanceTxError - ( BalanceInsufficientError + ( NumericOverflowError + , BalanceInsufficientError , InsufficientUtxoBalanceToCoverAsset ) , Expected(Expected) ) -import Ctl.Internal.Cardano.Types.Value (AssetClass(AssetClass), Coin, Value) -import Ctl.Internal.Cardano.Types.Value - ( getAssetQuantity - , leq - , valueAssets - , valueToCoin - ) as Value import Ctl.Internal.CoinSelection.UtxoIndex ( SelectionFilter(SelectAnyWith, SelectPairWith, SelectSingleton) , TxUnspentOutput @@ -55,14 +62,12 @@ import Ctl.Internal.CoinSelection.UtxoIndex , utxoIndexPartition , utxoIndexUniverse ) -import Ctl.Internal.Helpers (notImplemented) -import Ctl.Internal.Plutus.Conversion (toPlutusValue) +import Ctl.Internal.Helpers (liftM) import Data.Array (foldr) import Data.Array (fromFoldable, snoc, uncons) as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty (cons', fromArray, singleton, uncons) as NEArray import Data.ByteArray (byteArrayToHex) -import Data.Foldable (foldMap) as Foldable import Data.Function (applyFlipped) import Data.Generic.Rep (class Generic) import Data.Lens (Lens') @@ -79,8 +84,6 @@ import Data.Show.Generic (genericShow) import Data.Tuple (fst) as Tuple import Data.Tuple.Nested (type (/\), (/\)) import Effect.Class (class MonadEffect) -import JS.BigInt (BigInt) -import JS.BigInt (fromInt, toString) as BigInt import Test.QuickCheck.Arbitrary (class Arbitrary) import Test.QuickCheck.Gen (elements) as Arbitrary import Type.Proxy (Proxy(Proxy)) @@ -127,26 +130,27 @@ instance Arbitrary SelectionStrategy where performMultiAssetSelection :: forall (m :: Type -> Type) . MonadEffect m - => MonadThrow BalanceTxError m + => MonadError BalanceTxError m => SelectionStrategy -> UtxoIndex -> Value -> m SelectionState -performMultiAssetSelection strategy utxoIndex requiredValue = +performMultiAssetSelection strategy utxoIndex requiredValue = do + availableValue <- liftM NumericOverflowError $ balance + (utxoIndexUniverse utxoIndex) + let + balanceInsufficientError :: BalanceTxError + balanceInsufficientError = + BalanceInsufficientError + (Expected requiredValue) + (Actual availableValue) + case requiredValue `Value.leq` availableValue of true -> runRoundRobinM (mkSelectionState utxoIndex) selectors false -> throwError balanceInsufficientError where - balanceInsufficientError :: BalanceTxError - balanceInsufficientError = - BalanceInsufficientError - (Expected requiredValue) - (Actual availableValue) - - availableValue :: Value - availableValue = notImplemented -- balance (utxoIndexUniverse utxoIndex) selectors :: Array (SelectionState -> m (Maybe SelectionState)) @@ -277,12 +281,16 @@ assetSelectionLens selectionStrategy (assetClass /\ requiredQuantity) = , currentQuantity: selectedAssetQuantity assetClass , requiredQuantity - , selectQuantityCover: notImplemented - -- selectQuantityOf (Asset assetClass) SelectionPriorityCover - , selectQuantityImprove: notImplemented - -- selectQuantityOf (Asset assetClass) SelectionPriorityImprove + , selectQuantityCover: + selectQuantityOf (assetClassToAsset assetClass) SelectionPriorityCover + , selectQuantityImprove: + selectQuantityOf (assetClassToAsset assetClass) SelectionPriorityImprove , selectionStrategy } + where + assetClassToAsset :: AssetClass -> Asset + assetClassToAsset (AssetClass scriptHash assetName) = Asset scriptHash + assetName -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1173 @@ -377,12 +385,12 @@ runSelectionStep lens state | otherwise = Nothing distanceFromTarget :: SelectionState -> Maybe BigNum - distanceFromTarget state = do - cq <- lens.currentQuantity state + distanceFromTarget state' = do + cq <- lens.currentQuantity state' tc <- targetQuantity BigNum.abs <$> BigNum.sub tc cq - targetMultiplier :: Int + targetMultiplier :: Prim.Int targetMultiplier = case lens.selectionStrategy of SelectionStrategyMinimal -> 1 diff --git a/src/Internal/CoinSelection/UtxoIndex.purs b/src/Internal/CoinSelection/UtxoIndex.purs index c56ba618d..48efebf0c 100644 --- a/src/Internal/CoinSelection/UtxoIndex.purs +++ b/src/Internal/CoinSelection/UtxoIndex.purs @@ -27,8 +27,8 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionOutput (TransactionOutput(..)) import Cardano.Types.UtxoMap (UtxoMap) -import Ctl.Internal.Cardano.Types.Value (AssetClass, Value) -import Ctl.Internal.Cardano.Types.Value +import Cardano.Types (AssetClass, Value) +import Cardano.Types.Value ( valueAssetClasses , valueAssets , valueOf From 6f3ea25e2a1abb637143efcbe1708573028a915b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 4 Mar 2024 15:27:37 +0400 Subject: [PATCH 062/373] Fix Internal.Wallet.Key --- src/Internal/BalanceTx/Collateral/Select.purs | 2 +- src/Internal/BalanceTx/Constraints.purs | 9 +- src/Internal/BalanceTx/UtxoMinAda.purs | 26 +--- src/Internal/NativeScripts.purs | 5 +- src/Internal/ProcessConstraints/Error.purs | 40 ++---- src/Internal/Types/Interval.purs | 21 +-- src/Internal/Types/Redeemer.purs | 14 +- src/Internal/Wallet/Key.purs | 128 ++++++++---------- 8 files changed, 96 insertions(+), 149 deletions(-) diff --git a/src/Internal/BalanceTx/Collateral/Select.purs b/src/Internal/BalanceTx/Collateral/Select.purs index 99a16e4ad..8c295b2d5 100644 --- a/src/Internal/BalanceTx/Collateral/Select.purs +++ b/src/Internal/BalanceTx/Collateral/Select.purs @@ -52,7 +52,7 @@ maxCandidateUtxos = 10 collateralReturnMinAdaValue :: Coin -> List TransactionUnspentOutput -> Maybe BigNum collateralReturnMinAdaValue coinsPerUtxoByte = - utxoMinAdaValue coinsPerUtxoByte <<< fakeOutputWithMultiAssets <=< + pure <<< utxoMinAdaValue coinsPerUtxoByte <<< fakeOutputWithMultiAssets <=< MultiAsset.sum <<< Array.fromFoldable <<< map nonAdaAsset type ReturnOutMinAdaValue = BigNum diff --git a/src/Internal/BalanceTx/Constraints.purs b/src/Internal/BalanceTx/Constraints.purs index dea9359f2..3aaef904d 100644 --- a/src/Internal/BalanceTx/Constraints.purs +++ b/src/Internal/BalanceTx/Constraints.purs @@ -24,16 +24,11 @@ module Ctl.Internal.BalanceTx.Constraints import Prelude -import Cardano.Types.Address (Address) -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types (UtxoMap, Address, TransactionInput) import Ctl.Internal.BalanceTx.CoinSelection ( SelectionStrategy(SelectionStrategyOptimal) ) --- import Ctl.Internal.Plutus.Conversion (fromPlutusAddress, fromPlutusAddressWithNetworkTag) --- import Ctl.Internal.Plutus.Types.Address (Address, AddressWithNetworkTag(AddressWithNetworkTag)) as Plutus -import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) -import Ctl.Internal.Types.OutputDatum (OutputDatum) +import Cardano.Types.OutputDatum (OutputDatum) import Data.Array (singleton) as Array import Data.Function (applyFlipped) import Data.Lens (Lens') diff --git a/src/Internal/BalanceTx/UtxoMinAda.purs b/src/Internal/BalanceTx/UtxoMinAda.purs index 5c41addd0..04b56c9bd 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.purs +++ b/src/Internal/BalanceTx/UtxoMinAda.purs @@ -5,40 +5,24 @@ module Ctl.Internal.BalanceTx.UtxoMinAda import Prelude +import Cardano.Serialization.Lib (DataCost) import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum (maxValue) as BigNum import Cardano.Types.Coin (Coin) -import Cardano.Types.TransactionOutput (TransactionOutput) -import Cardano.Types.TransactionOutput as TransactionOutput +import Cardano.Types.TransactionOutput (TransactionOutput, minAdaForOutput) import Cardano.Types.Value (lovelaceValueOf) import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithValue) -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Serialization.Types (DataCost) -import Ctl.Internal.Serialization.Types (TransactionOutput) as Csl -import Data.Maybe (Maybe, fromJust) import Data.Newtype (unwrap) -import Partial.Unsafe (unsafePartial) - -foreign import minAdaForOutput - :: MaybeFfiHelper -> Csl.TransactionOutput -> DataCost -> Maybe BigNum - -foreign import newCoinsPerWord :: BigNum -> DataCost foreign import newCoinsPerByte :: BigNum -> DataCost utxoMinAdaValue - :: Coin -> TransactionOutput -> Maybe BigNum + :: Coin -> TransactionOutput -> BigNum utxoMinAdaValue coinsPerUtxoByte txOutput = - let - cslTxOutput = TransactionOutput.toCsl txOutput - dataCost = newCoinsPerByte (unwrap coinsPerUtxoByte) - in - minAdaForOutput maybeFfiHelper cslTxOutput dataCost - --- useful spy: BigNum.toBigInt >>= (pure <<< spy "utxoMinAdaValue") + unwrap $ minAdaForOutput txOutput (unwrap coinsPerUtxoByte) adaOnlyUtxoMinAdaValue :: Coin -> BigNum adaOnlyUtxoMinAdaValue coinsPerUtxoByte = - unsafePartial fromJust <<< utxoMinAdaValue coinsPerUtxoByte <<< + utxoMinAdaValue coinsPerUtxoByte <<< fakeOutputWithValue $ lovelaceValueOf BigNum.maxValue diff --git a/src/Internal/NativeScripts.purs b/src/Internal/NativeScripts.purs index c55288098..f0fa89617 100644 --- a/src/Internal/NativeScripts.purs +++ b/src/Internal/NativeScripts.purs @@ -8,7 +8,7 @@ import Prelude import Cardano.Serialization.Lib (nativeScript_hash) import Cardano.Types.NativeScript as NativeScript -import Ctl.Internal.Cardano.Types.NativeScript +import Cardano.Types.NativeScript ( NativeScript ( ScriptPubkey , ScriptAll @@ -18,8 +18,7 @@ import Ctl.Internal.Cardano.Types.NativeScript , TimelockExpiry ) ) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash, ScriptHash) -import Ctl.Internal.Serialization.Hash as Hashing +import Cardano.Types (Ed25519KeyHash, ScriptHash) import Data.Array as Array import Data.Foldable (foldr, maximumBy) import Data.Function (on) diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 4074349d0..8ecebde23 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -2,38 +2,22 @@ module Ctl.Internal.ProcessConstraints.Error where import Prelude +import Cardano.AsCbor (encodeCbor) import Cardano.Serialization.Lib (toBytes) +import Cardano.Types (DataHash) import Cardano.Types.Address (Address) import Cardano.Types.Address as Address -import Cardano.AsCbor (encodeCbor) import Cardano.Types.AssetName (AssetName, fromAssetName) -import Cardano.Types.PlutusScript (PlutusScript(..)) -import Cardano.Types.StakePubKeyHash (StakePubKeyHash(..)) -import Cardano.Types.TransactionOutput - ( TransactionOutput - , pprintTransactionOutput - ) -import Ctl.Internal.Cardano.Types.NativeScript (pprintNativeScript) +import Cardano.Types.NativeScript (pprintNativeScript) +import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) +import Cardano.Types.ScriptHash (ScriptHash) +import Cardano.Types.StakePubKeyHash (StakePubKeyHash) +import Cardano.Types.TransactionInput (TransactionInput(..)) +import Cardano.Types.TransactionOutput (TransactionOutput, pprintTransactionOutput) import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) -import Ctl.Internal.Serialization.Hash - ( ScriptHash - , ed25519KeyHashToBytes - , scriptHashToBytes - ) -import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) -import Ctl.Internal.Types.Interval - ( POSIXTimeRange - , PosixTimeToSlotError - , explainPosixTimeToSlotError - ) -import Ctl.Internal.Types.RawBytes (rawBytesToHex) -import Ctl.Internal.Types.Scripts - ( MintingPolicyHash - , NativeScriptStakeValidator - , PlutusScriptStakeValidator - , ValidatorHash - ) -import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) +import Ctl.Internal.Types.Interval (POSIXTimeRange, PosixTimeToSlotError, explainPosixTimeToSlotError) +import Ctl.Internal.Types.Scripts (MintingPolicyHash, NativeScriptStakeValidator, PlutusScriptStakeValidator, ValidatorHash) import Data.ByteArray (byteArrayToHex) import Data.Generic.Rep (class Generic) import Data.Log.Tag (tagSetTag) @@ -56,7 +40,7 @@ data MkUnbalancedTxError | CannotWithdrawRewardsPlutusScript PlutusScriptStakeValidator | CannotWithdrawRewardsNativeScript NativeScriptStakeValidator | DatumNotFound DataHash - | DatumWrongHash DataHash Datum + | DatumWrongHash DataHash PlutusData | MintingPolicyHashNotCurrencySymbol MintingPolicyHash | MintingPolicyNotFound MintingPolicyHash | OwnPubKeyAndStakeKeyMissing diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 69d0867f6..30df26420 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -77,12 +77,22 @@ import Aeson , isNull , (.:) ) +import Cardano.FromData (class FromData, fromData, genericFromData) +import Cardano.Plutus.DataSchema + ( class HasPlutusSchema + , type (:+) + , type (:=) + , type (@@) + , PNil + , S + , Z + ) +import Cardano.ToData (class ToData, genericToData, toData) import Cardano.Types.BigNum (add, fromBigInt, maxValue, one, toBigInt, zero) as BigNum import Cardano.Types.PlutusData (PlutusData(Constr)) import Cardano.Types.Slot (Slot(..)) import Control.Monad.Error.Class (throwError) import Control.Monad.Except (runExcept) -import Ctl.Internal.FromData (class FromData, fromData, genericFromData) import Ctl.Internal.Helpers ( encodeTagged' , liftEither @@ -90,16 +100,7 @@ import Ctl.Internal.Helpers , mkErrorRecord , showWithParens ) -import Ctl.Internal.Plutus.Types.DataSchema - ( class HasPlutusSchema - , type (:+) - , type (:=) - , type (@@) - , PNil - ) import Ctl.Internal.QueryM.Ogmios (aesonObject, slotLengthFactor) -import Ctl.Internal.ToData (class ToData, genericToData, toData) -import Ctl.Internal.TypeLevel.Nat (S, Z) import Ctl.Internal.Types.EraSummaries ( EraSummaries(EraSummaries) , EraSummary(EraSummary) diff --git a/src/Internal/Types/Redeemer.purs b/src/Internal/Types/Redeemer.purs index 301a3f937..883884736 100644 --- a/src/Internal/Types/Redeemer.purs +++ b/src/Internal/Types/Redeemer.purs @@ -7,16 +7,12 @@ module Ctl.Internal.Types.Redeemer import Prelude -import Cardano.Serialization.Lib (toBytes) -import Cardano.Types.DataHash (DataHash(..)) +import Cardano.FromData (class FromData) +import Cardano.ToData (class ToData, toData) +import Cardano.Types.DataHash (DataHash(..), hashPlutusData) import Cardano.Types.PlutusData (PlutusData) -import Cardano.Types.PlutusData as PlutusData -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Hashing (plutusDataHash) -import Ctl.Internal.ToData (class ToData, toData) -import Data.ByteArray (ByteArray(ByteArray)) import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) newtype Redeemer = Redeemer PlutusData @@ -50,4 +46,4 @@ instance Show RedeemerHash where -- | This is a duplicate of `datumHash`. redeemerHash :: Redeemer -> RedeemerHash redeemerHash = - RedeemerHash <<< plutusDataHash <<< unwrap + RedeemerHash <<< hashPlutusData <<< unwrap diff --git a/src/Internal/Wallet/Key.purs b/src/Internal/Wallet/Key.purs index cad68b7bf..0cc70c2dd 100644 --- a/src/Internal/Wallet/Key.purs +++ b/src/Internal/Wallet/Key.purs @@ -17,47 +17,31 @@ import Aeson , decodeAeson , encodeAeson ) +import Cardano.MessageSigning (DataSignature) +import Cardano.MessageSigning (signData) as MessageSigning +import Cardano.Types.Address (Address(BaseAddress, EnterpriseAddress)) +import Cardano.Types.Coin (Coin) +import Cardano.Types.Credential (Credential(PubKeyHashCredential)) +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.PaymentCredential (PaymentCredential(PaymentCredential)) +import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) +import Cardano.Types.PrivateKey as PrivateKey +import Cardano.Types.PublicKey as PublicKey +import Cardano.Types.RawBytes (RawBytes) +import Cardano.Types.StakeCredential (StakeCredential(StakeCredential)) +import Cardano.Types.Transaction (Transaction, hashTransaction) +import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) +import Cardano.Types.TransactionWitnessSet (TransactionWitnessSet) +import Cardano.Types.UtxoMap (UtxoMap) import Contract.Prelude (class Newtype) -import Ctl.Internal.BalanceTx.Collateral.Select (selectCollateral) as Collateral -import Ctl.Internal.Cardano.Types.Transaction - ( PrivateKey(PrivateKey) - , Transaction(Transaction) - , TransactionWitnessSet - , UtxoMap - , _vkeys - ) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) -import Ctl.Internal.Deserialization.Keys - ( privateKeyFromBech32 - , privateKeyToBech32 - ) -import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.Serialization (publicKeyHash) -import Ctl.Internal.Serialization as Serialization -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId - , baseAddress - , baseAddressToAddress - , enterpriseAddress - , enterpriseAddressToAddress - , keyHashCredential - ) -import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) -import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) -import Ctl.Internal.Types.RawBytes (RawBytes) -import Ctl.Internal.Wallet.Cip30 (DataSignature) -import Ctl.Internal.Wallet.Cip30.SignData (signData) as Cip30SignData +import Ctl.Internal.BalanceTx.Collateral.Select as Collateral +import Ctl.Internal.Lens (_vkeys) import Data.Array (fromFoldable) import Data.Either (note) import Data.Foldable (fold) import Data.Lens (set) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) -import Data.Traversable (for) -import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (liftEffect) @@ -67,10 +51,10 @@ import Effect.Class (liftEffect) newtype KeyWallet = KeyWallet { address :: NetworkId -> Address , selectCollateral :: - CoinsPerUtxoUnit + Coin -> Int -> UtxoMap - -> Effect (Maybe (Array TransactionUnspentOutput)) + -> Maybe (Array TransactionUnspentOutput) , signTx :: Transaction -> Aff TransactionWitnessSet , signData :: NetworkId -> RawBytes -> Aff DataSignature , paymentKey :: PrivatePaymentKey @@ -88,14 +72,14 @@ instance Show PrivatePaymentKey where instance EncodeAeson PrivatePaymentKey where encodeAeson (PrivatePaymentKey pk) = encodeAeson - (privateKeyToBech32 $ unwrap pk) + (PrivateKey.toBech32 pk) instance DecodeAeson PrivatePaymentKey where decodeAeson aeson = decodeAeson aeson >>= note (TypeMismatch "PrivateKey") - <<< map (PrivatePaymentKey <<< wrap) - <<< privateKeyFromBech32 + <<< map PrivatePaymentKey + <<< PrivateKey.fromBech32 newtype PrivateStakeKey = PrivateStakeKey PrivateKey @@ -106,14 +90,14 @@ instance Show PrivateStakeKey where instance EncodeAeson PrivateStakeKey where encodeAeson (PrivateStakeKey pk) = encodeAeson - (privateKeyToBech32 $ unwrap pk) + (PrivateKey.toBech32 pk) instance DecodeAeson PrivateStakeKey where decodeAeson aeson = decodeAeson aeson >>= note (TypeMismatch "PrivateKey") - <<< map (PrivateStakeKey <<< wrap) - <<< privateKeyFromBech32 + <<< map PrivateStakeKey + <<< PrivateKey.fromBech32 keyWalletPrivatePaymentKey :: KeyWallet -> PrivatePaymentKey keyWalletPrivatePaymentKey = unwrap >>> _.paymentKey @@ -123,25 +107,30 @@ keyWalletPrivateStakeKey = unwrap >>> _.stakeKey privateKeysToAddress :: PrivatePaymentKey -> Maybe PrivateStakeKey -> NetworkId -> Address -privateKeysToAddress payKey mbStakeKey network = do - let pubPayKey = publicKeyFromPrivateKey (unwrap $ unwrap payKey) +privateKeysToAddress payKey mbStakeKey networkId = do + let pubPayKey = PrivateKey.toPublicKey (unwrap payKey) case mbStakeKey of Just stakeKey -> let - pubStakeKey = publicKeyFromPrivateKey (unwrap $ unwrap stakeKey) + pubStakeKey = PrivateKey.toPublicKey (unwrap stakeKey) in - baseAddressToAddress $ - baseAddress - { network - , paymentCred: keyHashCredential $ publicKeyHash $ pubPayKey - , delegationCred: keyHashCredential $ publicKeyHash $ pubStakeKey - } - - Nothing -> pubPayKey # publicKeyHash - >>> keyHashCredential - >>> { network, paymentCred: _ } - >>> enterpriseAddress - >>> enterpriseAddressToAddress + BaseAddress + { networkId + , paymentCredential: + ( PaymentCredential $ PubKeyHashCredential $ PublicKey.hash $ + pubPayKey + ) + , stakeCredential: + ( StakeCredential $ PubKeyHashCredential $ PublicKey.hash $ + pubStakeKey + ) + } + + Nothing -> pubPayKey # PublicKey.hash + >>> PubKeyHashCredential + >>> wrap + >>> { networkId, paymentCredential: _ } + >>> EnterpriseAddress privateKeysToKeyWallet :: PrivatePaymentKey -> Maybe PrivateStakeKey -> KeyWallet @@ -159,30 +148,29 @@ privateKeysToKeyWallet payKey mbStakeKey = address = privateKeysToAddress payKey mbStakeKey selectCollateral - :: CoinsPerUtxoUnit + :: Coin -> Int -> UtxoMap - -> Effect (Maybe (Array TransactionUnspentOutput)) - selectCollateral coinsPerUtxoByte maxCollateralInputs utxos = map fromFoldable + -> Maybe (Array TransactionUnspentOutput) + selectCollateral coinsPerUtxoByte maxCollateralInputs utxos = fromFoldable <$> Collateral.selectCollateral coinsPerUtxoByte maxCollateralInputs utxos signTx :: Transaction -> Aff TransactionWitnessSet - signTx (Transaction tx) = liftEffect do - txBody <- Serialization.convertTxBody tx.body - hash <- Serialization.hashTransaction txBody - payWitness <- Deserialization.WitnessSet.convertVkeyWitness <$> - Serialization.makeVkeywitness hash (unwrap $ unwrap payKey) - mbStakeWitness <- for mbStakeKey \stakeKey -> do - Deserialization.WitnessSet.convertVkeyWitness <$> - Serialization.makeVkeywitness hash (unwrap $ unwrap stakeKey) + signTx tx = liftEffect do + let + hash = hashTransaction tx + payWitness = PrivateKey.makeVkeyWitness hash (unwrap payKey) + mbStakeWitness = + mbStakeKey <#> \stakeKey -> + PrivateKey.makeVkeyWitness hash (unwrap stakeKey) let witnessSet' = set _vkeys - (pure $ [ payWitness ] <> fold (pure <$> mbStakeWitness)) + ([ payWitness ] <> fold (pure <$> mbStakeWitness)) mempty pure witnessSet' signData :: NetworkId -> RawBytes -> Aff DataSignature signData networkId payload = do - liftEffect $ Cip30SignData.signData (unwrap $ unwrap payKey) + liftEffect $ MessageSigning.signData (unwrap payKey) (address networkId) payload From 93ccf509c1dd1a56cf39bfff4b2de92bbd40adb4 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 5 Mar 2024 18:46:36 +0400 Subject: [PATCH 063/373] Fix Blockfrost --- src/Internal/Contract/QueryHandle.purs | 18 +- src/Internal/Contract/QueryHandle/Type.purs | 29 +- src/Internal/QueryM.purs | 4 +- src/Internal/QueryM/Kupo.purs | 123 ++++---- src/Internal/QueryM/Pools.purs | 30 +- src/Internal/Service/Blockfrost.purs | 268 ++++++++---------- src/Internal/Types/DelegationsAndRewards.purs | 4 +- .../Types/PoolRegistrationParams.purs | 25 ++ src/Internal/Wallet/Key.purs | 2 + 9 files changed, 247 insertions(+), 256 deletions(-) create mode 100644 src/Internal/Types/PoolRegistrationParams.purs diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index 69baec3e3..e88eca347 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -6,13 +6,13 @@ module Ctl.Internal.Contract.QueryHandle import Prelude -import Cardano.Serialization.Lib (toBytes) +import Cardano.AsCbor (encodeCbor) +import Cardano.Types.Transaction (hashTransaction) import Contract.Log (logDebug') import Control.Monad.Error.Class (throwError) import Ctl.Internal.Contract.LogParams (LogParams) import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend, CtlBackend) import Ctl.Internal.Contract.QueryHandle.Type (QueryHandle) -import Ctl.Internal.Hashing (transactionHash) as Hashing import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.QueryM (QueryM) import Ctl.Internal.QueryM (evaluateTxOgmios, getChainTip, submitTxOgmios) as QueryM @@ -33,7 +33,6 @@ import Ctl.Internal.QueryM.Pools , getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards ) as QueryM -import Ctl.Internal.Serialization (convertTransaction) as Serialization import Ctl.Internal.Service.Blockfrost ( BlockfrostServiceM , runBlockfrostServiceM @@ -44,7 +43,6 @@ import Data.Either (Either(Left, Right)) import Data.Maybe (fromMaybe, isJust) import Data.Newtype (wrap) import Effect.Aff (Aff) -import Effect.Class (liftEffect) import Effect.Exception (error) queryHandleForCtlBackend @@ -64,10 +62,9 @@ queryHandleForCtlBackend runQueryM params backend = , getChainTip: Right <$> runQueryM' QueryM.getChainTip , getCurrentEpoch: runQueryM' QueryM.getCurrentEpoch , submitTx: \tx -> runQueryM' do - cslTx <- liftEffect $ Serialization.convertTransaction tx - let txHash = Hashing.transactionHash cslTx + let txHash = hashTransaction tx logDebug' $ "Pre-calculated tx hash: " <> show txHash - let txCborBytes = wrap $ toBytes cslTx + let txCborBytes = encodeCbor tx result <- QueryM.submitTxOgmios txHash txCborBytes pure $ case result of SubmitTxSuccess th -> do @@ -78,8 +75,7 @@ queryHandleForCtlBackend runQueryM params backend = ) SubmitFail err -> Left $ ClientOtherError $ show err , evaluateTx: \tx additionalUtxos -> runQueryM' do - txBytes <- wrap <<< toBytes <$> liftEffect - (Serialization.convertTransaction tx) + let txBytes = encodeCbor tx QueryM.evaluateTxOgmios txBytes additionalUtxos , getEraSummaries: Right <$> runQueryM' QueryM.getEraSummaries , getPoolIds: Right <$> runQueryM' QueryM.getPoolIds @@ -88,7 +84,7 @@ queryHandleForCtlBackend runQueryM params backend = (QueryM.getPubKeyHashDelegationsAndRewards pubKeyHash) , getValidatorHashDelegationsAndRewards: \_ validatorHash -> Right <$> runQueryM' - (QueryM.getValidatorHashDelegationsAndRewards validatorHash) + (QueryM.getValidatorHashDelegationsAndRewards $ wrap validatorHash) } where @@ -124,7 +120,7 @@ queryHandleForBlockfrostBackend logParams backend = , getValidatorHashDelegationsAndRewards: \networkId stakeValidatorHash -> runBlockfrostServiceM' ( Blockfrost.getValidatorHashDelegationsAndRewards networkId - stakeValidatorHash + (wrap stakeValidatorHash) ) } where diff --git a/src/Internal/Contract/QueryHandle/Type.purs b/src/Internal/Contract/QueryHandle/Type.purs index ea272d233..7f8264ab6 100644 --- a/src/Internal/Contract/QueryHandle/Type.purs +++ b/src/Internal/Contract/QueryHandle/Type.purs @@ -3,10 +3,19 @@ module Ctl.Internal.Contract.QueryHandle.Type , AffE ) where -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.Cardano.Types.Transaction - ( PoolPubKeyHash +import Cardano.Types + ( Address + , DataHash + , GeneralTransactionMetadata + , NetworkId + , PlutusData + , PoolPubKeyHash + , ScriptHash + , ScriptRef + , StakePubKeyHash , Transaction + , TransactionHash + , TransactionInput , TransactionOutput , UtxoMap ) @@ -16,16 +25,10 @@ import Ctl.Internal.QueryM.Ogmios , CurrentEpoch , TxEvaluationR ) -import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) -import Ctl.Internal.Serialization.Address (Address, NetworkId) -import Ctl.Internal.Serialization.Hash (ScriptHash) import Ctl.Internal.Service.Error (ClientError) -import Ctl.Internal.Types.Chain as Chain -import Ctl.Internal.Types.Datum (DataHash, Datum) +import Ctl.Internal.Types.Chain (Tip) as Chain +import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) import Ctl.Internal.Types.EraSummaries (EraSummaries) -import Ctl.Internal.Types.Scripts (StakeValidatorHash) -import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) -import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Data.Either (Either) import Data.Maybe (Maybe) import Effect.Aff (Aff) @@ -33,7 +36,7 @@ import Effect.Aff (Aff) type AffE (a :: Type) = Aff (Either ClientError a) type QueryHandle = - { getDatumByHash :: DataHash -> AffE (Maybe Datum) + { getDatumByHash :: DataHash -> AffE (Maybe PlutusData) , getScriptByHash :: ScriptHash -> AffE (Maybe ScriptRef) , getTxMetadata :: TransactionHash @@ -52,5 +55,5 @@ type QueryHandle = , getPubKeyHashDelegationsAndRewards :: NetworkId -> StakePubKeyHash -> AffE (Maybe DelegationsAndRewards) , getValidatorHashDelegationsAndRewards :: - NetworkId -> StakeValidatorHash -> AffE (Maybe DelegationsAndRewards) + NetworkId -> ScriptHash -> AffE (Maybe DelegationsAndRewards) } diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 346422bb7..8c05539ca 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -63,6 +63,8 @@ import Affjax.RequestBody as Affjax.RequestBody import Affjax.RequestHeader as Affjax.RequestHeader import Affjax.ResponseFormat as Affjax.ResponseFormat import Affjax.StatusCode as Affjax.StatusCode +import Cardano.Types (PlutusScript) +import Cardano.Types.CborBytes (CborBytes) import Cardano.Types.TransactionHash (TransactionHash) import Control.Alt (class Alt) import Control.Alternative (class Alternative) @@ -149,9 +151,7 @@ import Ctl.Internal.Service.Error ( ClientError(ClientHttpError, ClientHttpResponseError, ClientDecodeJsonError) , ServiceError(ServiceOtherError) ) -import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain as Chain -import Ctl.Internal.Types.Scripts (PlutusScript) import Ctl.Internal.Types.SystemStart (SystemStart) import Ctl.Internal.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) import Data.Bifunctor (lmap) diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index d99c22284..f4709cdfb 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -24,9 +24,33 @@ import Aeson import Affjax (Error, Response, defaultRequest) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) +import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Types + ( Address + , BigNum + , DataHash + , GeneralTransactionMetadata + , Language(PlutusV1, PlutusV2) + , MultiAsset + , PlutusData + , PlutusScript(PlutusScript) + , ScriptHash + , Slot + , TransactionHash(TransactionHash) + , TransactionInput(TransactionInput) + , TransactionOutput(TransactionOutput) + , UtxoMap + , Value + ) +import Cardano.Types.Address as Address import Cardano.Types.AssetName (mkAssetName) import Cardano.Types.BigNum (toString) as BigNum +import Cardano.Types.CborBytes (CborBytes) +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash, OutputDatum)) +import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) +import Cardano.Types.Value as Value import Contract.Log (logTrace') import Control.Alt ((<|>)) import Control.Bind (bindFlipped) @@ -35,20 +59,6 @@ import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Reader.Class (asks) import Control.Parallel (parTraverse) import Ctl.Internal.Affjax (request) as Affjax -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(NativeScriptRef, PlutusScriptRef) - ) -import Ctl.Internal.Cardano.Types.Transaction - ( TransactionOutput(TransactionOutput) - , UtxoMap - ) -import Ctl.Internal.Cardano.Types.Value - ( MultiAsset - , Value - , mkCurrencySymbol - , mkSingletonMultiAsset - , mkValue - ) import Ctl.Internal.Contract.QueryHandle.Error ( GetTxMetadataError ( GetTxMetadataClientError @@ -56,40 +66,15 @@ import Ctl.Internal.Contract.QueryHandle.Error , GetTxMetadataMetadataEmptyOrMissingError ) ) -import Ctl.Internal.Deserialization.NativeScript (decodeNativeScript) -import Ctl.Internal.Deserialization.PlutusData (deserializeData) -import Ctl.Internal.Deserialization.Transaction - ( convertGeneralTransactionMetadata - ) import Ctl.Internal.QueryM (QueryM, handleAffjaxResponse) -import Ctl.Internal.Serialization.Address - ( Address - , Slot - , addressBech32 - , addressFromBech32 - ) -import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBytes) import Ctl.Internal.ServerConfig (ServerConfig, mkHttpUrl) import Ctl.Internal.Service.Error (ClientError(ClientOtherError)) import Ctl.Internal.Service.Helpers (aesonArray, aesonObject, aesonString) -import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) -import Ctl.Internal.Types.RawBytes (rawBytesToHex) -import Ctl.Internal.Types.Scripts (plutusV1Script, plutusV2Script) -import Ctl.Internal.Types.Transaction - ( TransactionHash(TransactionHash) - , TransactionInput(TransactionInput) - ) -import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Data.Array (uncons) import Data.Array as Array import Data.Bifunctor (lmap) import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Either (Either(Left, Right), note) -import Data.Foldable (fold) import Data.Generic.Rep (class Generic) import Data.HTTP.Method (Method(GET)) import Data.Lens (_Right, to, (^?)) @@ -108,7 +93,6 @@ import Effect.Aff (Aff, delay) import Effect.Aff.Class (liftAff) import Foreign.Object (Object) import Foreign.Object (toUnfoldable) as Object -import JS.BigInt (BigInt) -------------------------------------------------------------------------------- -- Requests @@ -116,7 +100,7 @@ import JS.BigInt (BigInt) utxosAt :: Address -> QueryM (Either ClientError UtxoMap) utxosAt address = runExceptT do - let endpoint = "/matches/" <> addressBech32 address <> "?unspent" + let endpoint = "/matches/" <> Address.toBech32 address <> "?unspent" kupoUtxoMap <- ExceptT $ handleAffjaxResponse <$> kupoGetRequest endpoint ExceptT $ resolveKupoUtxoMap kupoUtxoMap @@ -152,16 +136,16 @@ getOutputAddressesByTxHash txHash = runExceptT do endpoint :: String endpoint = "/matches/*@" <> txHashToHex txHash <> "?unspent" -getDatumByHash :: DataHash -> QueryM (Either ClientError (Maybe Datum)) -getDatumByHash (DataHash dataHashBytes) = do - let endpoint = "/datums/" <> byteArrayToHex dataHashBytes +getDatumByHash :: DataHash -> QueryM (Either ClientError (Maybe PlutusData)) +getDatumByHash dataHash = do + let endpoint = "/datums/" <> byteArrayToHex (unwrap $ encodeCbor dataHash) kupoGetRequest endpoint <#> map unwrapKupoDatum <<< handleAffjaxResponse getScriptByHash :: ScriptHash -> QueryM (Either ClientError (Maybe ScriptRef)) getScriptByHash scriptHash = do let - endpoint = "/scripts/" <> rawBytesToHex (scriptHashToBytes scriptHash) + endpoint = "/scripts/" <> byteArrayToHex (unwrap (encodeCbor scriptHash)) kupoGetRequest endpoint <#> map unwrapKupoScriptRef <<< handleAffjaxResponse @@ -254,8 +238,8 @@ instance DecodeAeson KupoTransactionOutput where decodeAddress obj = getField obj "address" >>= \x -> note (TypeMismatch "Expected bech32 or base16 encoded Shelley address") - ( addressFromBech32 x <|> - (map wrap <<< fromBytes =<< hexToByteArray x) + ( Address.fromBech32 x <|> + (decodeCbor <<< wrap =<< hexToByteArray x) ) decodeDatumHash @@ -274,10 +258,14 @@ instance DecodeAeson KupoTransactionOutput where assets <- getFieldOptional obj "assets" <#> fromMaybe mempty <<< map (Object.toUnfoldable :: _ -> Array _) - mkValue coins <<< fold <$> traverse decodeMultiAsset assets + multiAsset <- + note (TypeMismatch "MultiAsset") <<< MultiAsset.sum =<< traverse + decodeMultiAsset + assets + pure $ Value.mkValue coins multiAsset where decodeMultiAsset - :: (String /\ BigInt) -> Either JsonDecodeError MultiAsset + :: (String /\ BigNum) -> Either JsonDecodeError MultiAsset decodeMultiAsset (assetString /\ assetQuantity) = let csString /\ tnString = @@ -288,10 +276,10 @@ instance DecodeAeson KupoTransactionOutput where String.splitAt ix assetString # \{ before, after } -> before /\ String.drop 1 after in - mkSingletonMultiAsset + MultiAsset.singleton <$> - ( note (assetStringTypeMismatch "CurrencySymbol" csString) - (mkCurrencySymbol =<< hexToByteArray csString) + ( note (assetStringTypeMismatch "ScriptHash" csString) + (decodeCbor <<< wrap =<< hexToByteArray csString) ) <*> ( note (assetStringTypeMismatch "AssetName" tnString) @@ -348,19 +336,19 @@ resolveKupoTxOutput (KupoTransactionOutput kupoTxOutput@{ address, amount }) = runExceptT $ mkTxOutput <$> ExceptT resolveDatum <*> ExceptT resolveScriptRef where - mkTxOutput :: OutputDatum -> Maybe ScriptRef -> TransactionOutput + mkTxOutput :: Maybe OutputDatum -> Maybe ScriptRef -> TransactionOutput mkTxOutput datum scriptRef = TransactionOutput { address, amount, datum, scriptRef } - resolveDatum :: QueryM (Either ClientError OutputDatum) + resolveDatum :: QueryM (Either ClientError (Maybe OutputDatum)) resolveDatum = case kupoTxOutput.datumHash of - Nothing -> pure $ Right NoOutputDatum + Nothing -> pure $ Right Nothing Just (datumHash /\ DatumHash) -> - pure $ Right $ OutputDatumHash datumHash + pure $ Right $ Just $ OutputDatumHash datumHash Just (datumHash /\ InlineDatum) -> runExceptT do datum <- ExceptT $ getDatumByHash datumHash - except $ OutputDatum <$> flip note datum + except $ pure <<< OutputDatum <$> flip note datum (ClientOtherError "Kupo: Failed to resolve inline datum") resolveScriptRef :: QueryM (Either ClientError (Maybe ScriptRef)) @@ -376,11 +364,11 @@ resolveKupoTxOutput (KupoTransactionOutput kupoTxOutput@{ address, amount }) = -- `getDatumByHash` response parsing -------------------------------------------------------------------------------- -newtype KupoDatum = KupoDatum (Maybe Datum) +newtype KupoDatum = KupoDatum (Maybe PlutusData) derive instance Newtype KupoDatum _ -unwrapKupoDatum :: KupoDatum -> Maybe Datum +unwrapKupoDatum :: KupoDatum -> Maybe PlutusData unwrapKupoDatum = unwrap instance DecodeAeson KupoDatum where @@ -388,7 +376,7 @@ instance DecodeAeson KupoDatum where | isNull aeson = pure $ KupoDatum Nothing | otherwise = aesonObject (flip getFieldOptional "datum") aeson - >>= pure <<< KupoDatum <<< bindFlipped deserializeData + >>= pure <<< KupoDatum <<< bindFlipped decodeCbor -------------------------------------------------------------------------------- -- `getScriptByHash` response parsing @@ -427,11 +415,14 @@ instance DecodeAeson KupoScriptRef where KupoScriptRef <<< Just <$> case language of NativeScript -> - NativeScriptRef <$> decodeNativeScript scriptBytes + NativeScriptRef <$> + note (TypeMismatch "NativeScript") (decodeCbor scriptBytes) PlutusV1Script -> - pure $ PlutusScriptRef $ plutusV1Script scriptBytes + pure $ PlutusScriptRef $ PlutusScript + (unwrap scriptBytes /\ PlutusV1) PlutusV2Script -> - pure $ PlutusScriptRef $ plutusV2Script scriptBytes + pure $ PlutusScriptRef $ PlutusScript + (unwrap scriptBytes /\ PlutusV2) ------------------------------------------------------------------------------- -- `isTxConfirmed` response parsing @@ -469,9 +460,9 @@ instance Show KupoMetadata where instance DecodeAeson KupoMetadata where decodeAeson = decodeAeson >=> case _ of [ { raw: cbor } :: { raw :: CborBytes } ] -> do - metadata <- flip note (fromBytes $ unwrap cbor) $ - TypeMismatch "Hexadecimal encoded Metadata" - pure $ KupoMetadata $ Just $ convertGeneralTransactionMetadata metadata + metadata <- note (TypeMismatch "Hexadecimal encoded Metadata") $ + decodeCbor cbor + pure $ KupoMetadata $ Just $ metadata [] -> Right $ KupoMetadata Nothing _ -> Left $ TypeMismatch "Singleton or Empty Array" diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index 4e4e72733..9c7fc5dd0 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -9,10 +9,10 @@ module Ctl.Internal.QueryM.Pools import Prelude -import Ctl.Internal.Cardano.Types.Transaction - ( PoolPubKeyHash - , PoolRegistrationParams - ) +import Cardano.AsCbor (encodeCbor) +import Cardano.Types (PoolPubKeyHash, StakePubKeyHash) +import Cardano.Types.Ed25519KeyHash (toBech32Unsafe) as Ed25519KeyHash +import Cardano.Types.ScriptHash as ScriptHash import Ctl.Internal.Helpers (liftM) import Ctl.Internal.QueryM (QueryM, mkOgmiosRequest) import Ctl.Internal.QueryM.Ogmios @@ -20,14 +20,9 @@ import Ctl.Internal.QueryM.Ogmios , PoolParameters ) import Ctl.Internal.QueryM.Ogmios as Ogmios -import Ctl.Internal.Serialization.Hash - ( ed25519KeyHashToBech32Unsafe - , ed25519KeyHashToBytes - , scriptHashToBech32Unsafe - , scriptHashToBytes - ) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) as X +import Ctl.Internal.Types.PoolRegistrationParams (PoolRegistrationParams) import Ctl.Internal.Types.Scripts (StakeValidatorHash) import Data.ByteArray (byteArrayToHex) import Data.Map (Map) @@ -36,6 +31,7 @@ import Data.Maybe (Maybe(Nothing, Just)) import Data.Newtype (unwrap, wrap) import Data.Tuple (fst) import Effect.Exception (error) +import Partial.Unsafe (unsafePartial) import Record.Builder (build, merge) -- | Get pool parameters of all pools or of the provided pools. @@ -67,7 +63,7 @@ getPoolsParameters poolPubKeyHashes = do ( \poolPkh params -> Just $ build ( merge { operator: poolPkh - , poolOwners: params.poolOwners <#> wrap >>> wrap + , poolOwners: params.poolOwners <#> wrap } ) params @@ -84,10 +80,10 @@ getValidatorHashDelegationsAndRewards skh = do pure $ Map.lookup byteHex mp where stringRep :: String - stringRep = scriptHashToBech32Unsafe "script" $ unwrap skh + stringRep = unsafePartial $ ScriptHash.toBech32Unsafe "script" $ unwrap skh byteHex :: String - byteHex = byteArrayToHex $ unwrap $ scriptHashToBytes $ unwrap skh + byteHex = byteArrayToHex $ unwrap $ encodeCbor $ unwrap skh -- TODO: batched variant getPubKeyHashDelegationsAndRewards @@ -99,10 +95,10 @@ getPubKeyHashDelegationsAndRewards pkh = do pure $ Map.lookup byteHex mp where stringRep :: String - stringRep = - ed25519KeyHashToBech32Unsafe "stake_vkh" $ unwrap $ unwrap pkh + stringRep = unsafePartial + $ Ed25519KeyHash.toBech32Unsafe "stake_vkh" + $ unwrap pkh byteHex :: String - byteHex = byteArrayToHex $ unwrap $ ed25519KeyHashToBytes - $ unwrap + byteHex = byteArrayToHex $ unwrap $ encodeCbor $ unwrap pkh diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 376f7675f..9cc15ef73 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -81,14 +81,56 @@ import Affjax.RequestBody (RequestBody, arrayView, string) as Affjax import Affjax.RequestHeader (RequestHeader(ContentType, RequestHeader)) as Affjax import Affjax.ResponseFormat (string) as Affjax.ResponseFormat import Affjax.StatusCode (StatusCode(StatusCode)) as Affjax -import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.AsCbor (decodeCbor, encodeCbor) +import Cardano.Serialization.Lib (toBytes) +import Cardano.Types + ( AssetClass(AssetClass) + , DataHash + , GeneralTransactionMetadata(GeneralTransactionMetadata) + , Language(PlutusV2, PlutusV1) + , PlutusData + , PlutusScript(PlutusScript) + , PoolPubKeyHash + , ScriptHash + , StakePubKeyHash + , Transaction + , TransactionHash + , TransactionInput(TransactionInput) + , TransactionOutput(TransactionOutput) + , UnitInterval(UnitInterval) + , UtxoMap + , Value + ) +import Cardano.Types.Address (Address) +import Cardano.Types.Address as Address +import Cardano.Types.Bech32String (Bech32String) import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum as BigNum -import Contract.RewardAddress - ( rewardAddressToBech32 - , stakePubKeyHashRewardAddress - , stakeValidatorHashRewardAddress +import Cardano.Types.CborBytes (CborBytes) +import Cardano.Types.Coin (Coin(Coin)) +import Cardano.Types.Credential + ( Credential(PubKeyHashCredential, ScriptHashCredential) + ) +import Cardano.Types.Epoch (Epoch(Epoch)) +import Cardano.Types.ExUnitPrices (ExUnitPrices(ExUnitPrices)) +import Cardano.Types.ExUnits (ExUnits(ExUnits)) +import Cardano.Types.GeneralTransactionMetadata as GeneralTransactionMetadata +import Cardano.Types.NativeScript + ( NativeScript + ( ScriptAll + , ScriptAny + , ScriptNOfK + , ScriptPubkey + , TimelockExpiry + , TimelockStart + ) ) +import Cardano.Types.NetworkId (NetworkId) +import Cardano.Types.OutputDatum (OutputDatum(OutputDatum, OutputDatumHash)) +import Cardano.Types.PoolPubKeyHash as PoolPubKeyHash +import Cardano.Types.RewardAddress as RewardAddress +import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) +import Cardano.Types.Value (assetToValue, lovelaceValueOf, sum) as Value import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), runExceptT) @@ -100,33 +142,6 @@ import Control.Monad.Reader.Class (ask, asks) import Control.Monad.Reader.Trans (ReaderT, runReaderT) import Control.Parallel (parTraverse) import Ctl.Internal.Affjax (request) as Affjax -import Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptAll - , ScriptAny - , ScriptNOfK - , ScriptPubkey - , TimelockExpiry - , TimelockStart - ) - ) -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(NativeScriptRef, PlutusScriptRef) - ) -import Ctl.Internal.Cardano.Types.Transaction - ( Costmdls(Costmdls) - , PoolPubKeyHash - , Transaction - , TransactionOutput(TransactionOutput) - , UtxoMap - , poolPubKeyHashToBech32 - ) -import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value) -import Ctl.Internal.Cardano.Types.Value - ( lovelaceValueOf - , mkSingletonMultiAsset - , mkValue - ) as Value import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend) import Ctl.Internal.Contract.QueryHandle.Error ( GetTxMetadataError @@ -135,10 +150,6 @@ import Ctl.Internal.Contract.QueryHandle.Error , GetTxMetadataMetadataEmptyOrMissingError ) ) -import Ctl.Internal.Deserialization.PlutusData (deserializeData) -import Ctl.Internal.Deserialization.Transaction - ( convertGeneralTransactionMetadata - ) import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet , ExecutionUnits @@ -154,18 +165,6 @@ import Ctl.Internal.QueryM.Ogmios ) import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) -import Ctl.Internal.Serialization as Serialization -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId - , addressBech32 - , addressFromBech32 - ) -import Ctl.Internal.Serialization.Hash - ( ScriptHash - , ed25519KeyHashFromBytes - , scriptHashToBytes - ) import Ctl.Internal.ServerConfig (ServerConfig, mkHttpUrl) import Ctl.Internal.Service.Error ( ClientError @@ -182,43 +181,22 @@ import Ctl.Internal.Service.Helpers , aesonString , decodeAssetClass ) -import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.CborBytes (CborBytes) import Ctl.Internal.Types.Chain (Tip(Tip, TipAtGenesis)) -import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum) -import Ctl.Internal.Types.Epoch (Epoch(Epoch)) import Ctl.Internal.Types.EraSummaries ( EraSummaries , EraSummary , EraSummaryParameters ) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatum, OutputDatumHash) - ) import Ctl.Internal.Types.ProtocolParameters - ( CoinsPerUtxoUnit(CoinsPerUtxoWord, CoinsPerUtxoByte) - , CostModelV1 + ( CostModelV1 , CostModelV2 , ProtocolParameters(ProtocolParameters) , convertPlutusV1CostModel , convertPlutusV2CostModel ) import Ctl.Internal.Types.Rational (Rational, reduce) -import Ctl.Internal.Types.RawBytes (rawBytesToHex) -import Ctl.Internal.Types.Scripts - ( Language(PlutusV2, PlutusV1) - , StakeValidatorHash - , plutusV1Script - , plutusV2Script - ) +import Ctl.Internal.Types.Scripts (StakeValidatorHash) import Ctl.Internal.Types.SystemStart (SystemStart(SystemStart)) -import Ctl.Internal.Types.Transaction - ( TransactionHash - , TransactionInput(TransactionInput) - ) -import Ctl.Internal.Types.TransactionMetadata - ( GeneralTransactionMetadata(GeneralTransactionMetadata) - ) import Data.Array (find, length) as Array import Data.Bifunctor (lmap) import Data.BigNumber (BigNumber, toFraction) @@ -226,14 +204,13 @@ import Data.BigNumber as BigNumber import Data.ByteArray (ByteArray, byteArrayToHex) import Data.DateTime.Instant (instant, toDateTime) import Data.Either (Either(Left, Right), either, hush, note) -import Data.Foldable (fold) import Data.Generic.Rep (class Generic) import Data.HTTP.Method (Method(GET, POST)) import Data.JSDate (JSDate, now) import Data.Log.Level (LogLevel(Trace)) import Data.Log.Message (Message) import Data.Map (Map) -import Data.Map (empty, fromFoldable, isEmpty, unions) as Map +import Data.Map (empty, fromFoldable, isEmpty) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe, maybe) import Data.MediaType (MediaType(MediaType)) import Data.MediaType.Common (applicationJSON) as MediaType @@ -252,7 +229,6 @@ import Effect.Class (liftEffect) import Effect.Exception (error) import Foreign.Object (Object) import Foreign.Object as ForeignObject -import JS.BigInt (BigInt) import JS.BigInt (fromString, toNumber) as BigInt -------------------------------------------------------------------------------- @@ -373,8 +349,8 @@ realizeEndpoint endpoint = case endpoint of BlockchainGenesis -> "/genesis" - DatumCbor (DataHash hashBytes) -> - "/scripts/datum/" <> byteArrayToHex hashBytes <> "/cbor" + DatumCbor hash -> + "/scripts/datum/" <> byteArrayToHex (unwrap $ encodeCbor hash) <> "/cbor" EraSummaries -> "/network/eras" EvaluateTransaction -> @@ -386,11 +362,11 @@ realizeEndpoint endpoint = LatestProtocolParameters -> "/epochs/latest/parameters" NativeScriptByHash scriptHash -> - "/scripts/" <> rawBytesToHex (scriptHashToBytes scriptHash) <> "/json" + "/scripts/" <> byteArrayToHex (unwrap $ encodeCbor scriptHash) <> "/json" PlutusScriptCborByHash scriptHash -> - "/scripts/" <> rawBytesToHex (scriptHashToBytes scriptHash) <> "/cbor" + "/scripts/" <> byteArrayToHex (unwrap $ encodeCbor scriptHash) <> "/cbor" ScriptInfo scriptHash -> - "/scripts/" <> rawBytesToHex (scriptHashToBytes scriptHash) + "/scripts/" <> byteArrayToHex (unwrap $ encodeCbor scriptHash) SubmitTransaction -> "/tx/submit" Transaction txHash -> @@ -398,14 +374,14 @@ realizeEndpoint endpoint = TransactionMetadata txHash -> "/txs/" <> byteArrayToHex (toBytes $ unwrap txHash) <> "/metadata/cbor" UtxosAtAddress address page count -> - "/addresses/" <> addressBech32 address <> "/utxos?page=" <> show page + "/addresses/" <> Address.toBech32 address <> "/utxos?page=" <> show page <> ("&count=" <> show count) UtxosOfTransaction txHash -> "/txs/" <> byteArrayToHex (toBytes $ unwrap txHash) <> "/utxos" PoolIds page count -> "/pools?page=" <> show page <> "&count=" <> show count <> "&order=asc" PoolParameters poolPubKeyHash -> - "/pool/" <> poolPubKeyHashToBech32 poolPubKeyHash + "/pool/" <> PoolPubKeyHash.toBech32 poolPubKeyHash DelegationsAndRewards credential -> "/accounts/" <> blockfrostStakeCredentialToBech32 credential @@ -588,7 +564,7 @@ getOutputAddressesByTxHash txHash = runExceptT do -------------------------------------------------------------------------------- getDatumByHash - :: DataHash -> BlockfrostServiceM (Either ClientError (Maybe Datum)) + :: DataHash -> BlockfrostServiceM (Either ClientError (Maybe PlutusData)) getDatumByHash dataHash = blockfrostGetRequest (DatumCbor dataHash) <#> \response -> handle404AsNothing @@ -608,10 +584,10 @@ getScriptByHash scriptHash = runExceptT $ runMaybeT do NativeScriptRef <$> MaybeT (ExceptT getNativeScriptByHash) PlutusV1Script -> - PlutusScriptRef <<< plutusV1Script <$> + PlutusScriptRef <<< PlutusScript <<< (_ /\ PlutusV1) <$> MaybeT (ExceptT getPlutusScriptCborByHash) PlutusV2Script -> - PlutusScriptRef <<< plutusV2Script <$> + PlutusScriptRef <<< PlutusScript <<< (_ /\ PlutusV2) <$> MaybeT (ExceptT getPlutusScriptCborByHash) where getNativeScriptByHash @@ -643,8 +619,7 @@ submitTx :: Transaction -> BlockfrostServiceM (Either ClientError TransactionHash) submitTx tx = do - cslTx <- liftEffect $ Serialization.convertTransaction tx - handleBlockfrostResponse <$> request (toBytes cslTx) + handleBlockfrostResponse <$> request (unwrap $ encodeCbor tx) where request :: ByteArray @@ -667,11 +642,10 @@ evaluateTx tx additionalUtxos = do where request :: BlockfrostServiceM (Either Affjax.Error (Affjax.Response String)) request = do - cslTx <- liftEffect $ Serialization.convertTransaction tx blockfrostPostRequest EvaluateTransaction MediaType.applicationJSON ( Just $ Affjax.string $ stringifyAeson $ encodeAeson - { cbor: byteArrayToHex $ toBytes cslTx + { cbor: byteArrayToHex $ unwrap $ encodeCbor tx , additionalUtxoSet: additionalUtxos } ) @@ -713,7 +687,7 @@ getTxMetadata txHash = do -- Get current epoch information -------------------------------------------------------------------------------- -getCurrentEpoch :: BlockfrostServiceM (Either ClientError BigInt) +getCurrentEpoch :: BlockfrostServiceM (Either ClientError BigNum) getCurrentEpoch = blockfrostGetRequest LatestEpoch <#> handleBlockfrostResponse >>> map unwrapBlockfrostCurrentEpoch @@ -1142,7 +1116,7 @@ instance DecodeAeson BlockfrostUtxosOfTransaction where newtype BlockfrostTransactionOutput = BlockfrostTransactionOutput { address :: Address , amount :: Value - , datum :: OutputDatum + , datum :: Maybe OutputDatum , scriptHash :: Maybe ScriptHash } @@ -1164,34 +1138,39 @@ instance DecodeAeson BlockfrostTransactionOutput where decodeAddress obj = getField obj "address" >>= \address -> note (TypeMismatch "Expected bech32 encoded address") - (addressFromBech32 address) + (Address.fromBech32 address) decodeValue :: Object Aeson -> Either JsonDecodeError Value decodeValue = - flip getField "amount" >=> aesonArray (map fold <<< traverse decodeAsset) + flip getField "amount" + >=> aesonArray (traverse decodeAsset) + >=> + Value.sum >>> note (TypeMismatch "Value") where + decodeAsset :: Aeson -> Either JsonDecodeError Value decodeAsset = aesonObject \obj -> do quantity <- getField obj "quantity" >>= - BigInt.fromString >>> + BigNum.fromString >>> note (TypeMismatch "Expected string repr of BigInt") getField obj "unit" >>= case _ of "lovelace" -> pure $ Value.lovelaceValueOf quantity assetString -> do let { before: csStr, after: tnStr } = String.splitAt 56 assetString decodeAssetClass assetString csStr tnStr <#> \(cs /\ tn) -> - Value.mkValue mempty $ Value.mkSingletonMultiAsset cs tn quantity + Value.assetToValue (AssetClass cs tn) quantity - decodeOutputDatum :: Object Aeson -> Either JsonDecodeError OutputDatum + decodeOutputDatum + :: Object Aeson -> Either JsonDecodeError (Maybe OutputDatum) decodeOutputDatum obj = getFieldOptional' obj "inline_datum" >>= case _ of Just datum -> - note (TypeMismatch "Expected CBOR encoded inline datum") - (OutputDatum <$> deserializeData datum) + note (TypeMismatch "OutputDatum") + (Just <<< OutputDatum <$> decodeCbor datum) Nothing -> - maybe NoOutputDatum OutputDatumHash - <$> getFieldOptional' obj "data_hash" + pure $ join $ map OutputDatumHash <$> hush + (getFieldOptional' obj "data_hash") resolveBlockfrostTxOutput :: BlockfrostTransactionOutput @@ -1278,7 +1257,7 @@ instance DecodeAeson BlockfrostNativeScript where "sig" -> ScriptPubkey <$> ( getField obj "keyHash" >>= - (note (TypeMismatch "Ed25519KeyHash") <<< ed25519KeyHashFromBytes) + (note (TypeMismatch "Ed25519KeyHash") <<< decodeCbor) ) "before" -> TimelockExpiry <$> getField obj "slot" @@ -1323,7 +1302,7 @@ instance DecodeAeson BlockfrostCbor where -- BlockfrostDatum -------------------------------------------------------------------------------- -newtype BlockfrostDatum = BlockfrostDatum (Maybe Datum) +newtype BlockfrostDatum = BlockfrostDatum (Maybe PlutusData) derive instance Generic BlockfrostDatum _ derive instance Newtype BlockfrostDatum _ @@ -1331,7 +1310,7 @@ derive instance Newtype BlockfrostDatum _ instance Show BlockfrostDatum where show = genericShow -unwrapBlockfrostDatum :: BlockfrostDatum -> Maybe Datum +unwrapBlockfrostDatum :: BlockfrostDatum -> Maybe PlutusData unwrapBlockfrostDatum = unwrap instance DecodeAeson BlockfrostDatum where @@ -1339,7 +1318,7 @@ instance DecodeAeson BlockfrostDatum where | isNull aeson = pure $ BlockfrostDatum Nothing | otherwise = do cbor <- aesonObject (flip getFieldOptional "cbor") aeson - pure $ BlockfrostDatum $ deserializeData =<< cbor + pure $ BlockfrostDatum $ decodeCbor =<< cbor -------------------------------------------------------------------------------- -- BlockfrostMetadata @@ -1358,12 +1337,10 @@ instance DecodeAeson BlockfrostMetadata where decodeAeson = decodeAeson >=> \(metadatas :: Array { metadata :: CborBytes }) -> do metadatas' <- for metadatas \{ metadata } -> do - map (unwrap <<< convertGeneralTransactionMetadata) <$> flip note - (fromBytes $ unwrap metadata) $ - TypeMismatch "Hexadecimal encoded Metadata" - - pure $ BlockfrostMetadata $ GeneralTransactionMetadata $ Map.unions - metadatas' + decodeCbor metadata # note + (TypeMismatch "Hexadecimal encoded Metadata") + note (TypeMismatch "GeneralTransactionMetadata") $ + BlockfrostMetadata <$> GeneralTransactionMetadata.fold metadatas' unwrapBlockfrostMetadata :: BlockfrostMetadata -> GeneralTransactionMetadata unwrapBlockfrostMetadata (BlockfrostMetadata metadata) = metadata @@ -1372,7 +1349,7 @@ unwrapBlockfrostMetadata (BlockfrostMetadata metadata) = metadata -- BlockfrostCurrentEpoch -------------------------------------------------------------------------------- -newtype BlockfrostCurrentEpoch = BlockfrostCurrentEpoch BigInt +newtype BlockfrostCurrentEpoch = BlockfrostCurrentEpoch BigNum derive instance Generic BlockfrostCurrentEpoch _ derive instance Newtype BlockfrostCurrentEpoch _ @@ -1382,9 +1359,9 @@ instance Show BlockfrostCurrentEpoch where instance DecodeAeson BlockfrostCurrentEpoch where decodeAeson a = decodeAeson a <#> - \({ epoch } :: { epoch :: BigInt }) -> wrap epoch + \({ epoch } :: { epoch :: BigNum }) -> wrap epoch -unwrapBlockfrostCurrentEpoch :: BlockfrostCurrentEpoch -> BigInt +unwrapBlockfrostCurrentEpoch :: BlockfrostCurrentEpoch -> BigNum unwrapBlockfrostCurrentEpoch = unwrap data BlockfrostStakeCredential = BlockfrostStakeCredential NetworkId @@ -1401,11 +1378,15 @@ instance Show BlockfrostStakeCredential where blockfrostStakeCredentialToBech32 :: BlockfrostStakeCredential -> Bech32String blockfrostStakeCredentialToBech32 = case _ of BlockfrostStakeCredential networkId (Left stakePubKeyHash) -> - rewardAddressToBech32 $ stakePubKeyHashRewardAddress networkId - stakePubKeyHash + RewardAddress.toBech32 $ + { networkId + , stakeCredential: wrap $ PubKeyHashCredential $ unwrap stakePubKeyHash + } BlockfrostStakeCredential networkId (Right stakeValidatorHash) -> - rewardAddressToBech32 $ stakeValidatorHashRewardAddress networkId - stakeValidatorHash + RewardAddress.toBech32 $ + { networkId + , stakeCredential: wrap $ ScriptHashCredential $ unwrap stakeValidatorHash + } -------------------------------------------------------------------------------- -- BlockfrostProtocolParameters @@ -1436,31 +1417,30 @@ type BlockfrostProtocolParametersRaw = , "max_block_size" :: UInt , "max_tx_size" :: UInt , "max_block_header_size" :: UInt - , "key_deposit" :: Stringed BigInt - , "pool_deposit" :: Stringed BigInt - , "e_max" :: BigInt + , "key_deposit" :: Stringed BigNum + , "pool_deposit" :: Stringed BigNum + , "e_max" :: UInt , "n_opt" :: UInt , "a0" :: FiniteBigNumber , "rho" :: FiniteBigNumber , "tau" :: FiniteBigNumber , "protocol_major_ver" :: UInt , "protocol_minor_ver" :: UInt - , "min_pool_cost" :: Stringed BigInt + , "min_pool_cost" :: Stringed BigNum , "cost_models" :: { "PlutusV1" :: { | CostModelV1 } , "PlutusV2" :: { | CostModelV2 } } , "price_mem" :: FiniteBigNumber , "price_step" :: FiniteBigNumber - , "max_tx_ex_mem" :: Stringed BigInt - , "max_tx_ex_steps" :: Stringed BigInt - , "max_block_ex_mem" :: Stringed BigInt - , "max_block_ex_steps" :: Stringed BigInt + , "max_tx_ex_mem" :: Stringed BigNum + , "max_tx_ex_steps" :: Stringed BigNum + , "max_block_ex_mem" :: Stringed BigNum + , "max_block_ex_steps" :: Stringed BigNum , "max_val_size" :: Stringed UInt , "collateral_percent" :: UInt , "max_collateral_inputs" :: UInt - , "coins_per_utxo_size" :: Maybe (Stringed BigInt) - , "coins_per_utxo_word" :: Maybe (Stringed BigInt) + , "coins_per_utxo_size" :: Maybe (Stringed BigNum) } toFraction' :: BigNumber -> String /\ String @@ -1480,11 +1460,11 @@ bigNumberToRational (FiniteBigNumber bn) = note (TypeMismatch "Rational") do bigNumberToPrice :: FiniteBigNumber - -> Either JsonDecodeError { numerator :: BigNum, denominator :: BigNum } + -> Either JsonDecodeError UnitInterval bigNumberToPrice (FiniteBigNumber bn) = note (TypeMismatch "Rational") do numerator <- BigNum.fromString numerator' denominator <- BigNum.fromString denominator' - pure { numerator, denominator } + pure $ UnitInterval { numerator, denominator } where (numerator' /\ denominator') = toFraction' bn @@ -1508,20 +1488,16 @@ instance DecodeAeson BlockfrostProtocolParameters where treasuryCut <- bigNumberToRational raw.tau memPrice <- bigNumberToPrice raw.price_mem stepPrice <- bigNumberToPrice raw.price_step - let prices = { memPrice, stepPrice } + let prices = ExUnitPrices { memPrice, stepPrice } - coinsPerUtxoUnit <- - maybe - (Left $ AtKey "coinsPerUtxoByte or coinsPerUtxoWord" $ MissingValue) - pure - $ (CoinsPerUtxoByte <<< Coin <<< unwrap <$> raw.coins_per_utxo_size) <|> - (CoinsPerUtxoWord <<< Coin <<< unwrap <$> raw.coins_per_utxo_word) + coinsPerUtxoByte <- + maybe (Left $ AtKey "coins_per_utxo_size" $ MissingValue) + pure $ (Coin <<< unwrap <$> raw.coins_per_utxo_size) pure $ BlockfrostProtocolParameters $ ProtocolParameters { protocolVersion: raw.protocol_major_ver /\ raw.protocol_minor_ver -- The following two parameters were removed from Babbage , decentralization: zero - , extraPraosEntropy: Nothing , maxBlockHeaderSize: raw.max_block_header_size , maxBlockBodySize: raw.max_block_size , maxTxSize: raw.max_tx_size @@ -1535,20 +1511,22 @@ instance DecodeAeson BlockfrostProtocolParameters where , poolPledgeInfluence , monetaryExpansion , treasuryCut - , coinsPerUtxoUnit: coinsPerUtxoUnit - , costModels: Costmdls $ Map.fromFoldable + , coinsPerUtxoByte: coinsPerUtxoByte + , costModels: Map.fromFoldable [ PlutusV1 /\ convertPlutusV1CostModel raw.cost_models."PlutusV1" , PlutusV2 /\ convertPlutusV2CostModel raw.cost_models."PlutusV2" ] , prices , maxTxExUnits: - { mem: unwrap raw.max_tx_ex_mem - , steps: unwrap raw.max_tx_ex_steps - } + ExUnits + { mem: unwrap raw.max_tx_ex_mem + , steps: unwrap raw.max_tx_ex_steps + } , maxBlockExUnits: - { mem: unwrap raw.max_block_ex_mem - , steps: unwrap raw.max_block_ex_steps - } + ExUnits + { mem: unwrap raw.max_block_ex_mem + , steps: unwrap raw.max_block_ex_steps + } , maxValueSize: unwrap raw.max_val_size , collateralPercent: raw.collateral_percent , maxCollateralInputs: raw.max_collateral_inputs @@ -1570,7 +1548,7 @@ instance DecodeAeson BlockfrostRewards where withdrawable_amount_mb_str <- obj .:! "withdrawable_amount" withdrawable_amount <- for withdrawable_amount_mb_str \withdrawable_amount_str -> - note (TypeMismatch "BigInt") $ map Coin $ BigInt.fromString + note (TypeMismatch "BigNum") $ map Coin $ BigNum.fromString withdrawable_amount_str pure $ BlockfrostRewards { pool_id diff --git a/src/Internal/Types/DelegationsAndRewards.purs b/src/Internal/Types/DelegationsAndRewards.purs index fbe25d1e7..0309cbc06 100644 --- a/src/Internal/Types/DelegationsAndRewards.purs +++ b/src/Internal/Types/DelegationsAndRewards.purs @@ -4,8 +4,8 @@ module Ctl.Internal.Types.DelegationsAndRewards import Data.Maybe -import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash) -import Ctl.Internal.Cardano.Types.Value (Coin) +import Cardano.Types.Coin (Coin) +import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) type DelegationsAndRewards = { rewards :: Maybe Coin diff --git a/src/Internal/Types/PoolRegistrationParams.purs b/src/Internal/Types/PoolRegistrationParams.purs new file mode 100644 index 000000000..84611e62a --- /dev/null +++ b/src/Internal/Types/PoolRegistrationParams.purs @@ -0,0 +1,25 @@ +module Ctl.Internal.Types.PoolRegistrationParams where + +import Cardano.Plutus.Types.PubKeyHash (PubKeyHash) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.PoolMetadata (PoolMetadata) +import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) +import Cardano.Types.Relay (Relay) +import Cardano.Types.RewardAddress (RewardAddress) +import Cardano.Types.UnitInterval (UnitInterval) +import Cardano.Types.VRFKeyHash (VRFKeyHash) +import Data.Maybe (Maybe) + +type PoolRegistrationParams = + { operator :: PoolPubKeyHash -- cwitness (cert) + , vrfKeyhash :: VRFKeyHash + -- needed to prove that the pool won the lottery + , pledge :: BigNum + , cost :: BigNum -- >= pparams.minPoolCost + , margin :: UnitInterval -- proportion that goes to the reward account + , rewardAccount :: RewardAddress + , poolOwners :: Array PubKeyHash + -- payment key hashes that contribute to pledge amount + , relays :: Array Relay + , poolMetadata :: Maybe PoolMetadata + } diff --git a/src/Internal/Wallet/Key.purs b/src/Internal/Wallet/Key.purs index 0cc70c2dd..0aaec9ed2 100644 --- a/src/Internal/Wallet/Key.purs +++ b/src/Internal/Wallet/Key.purs @@ -48,6 +48,8 @@ import Effect.Class (liftEffect) ------------------------------------------------------------------------------- -- Key backend ------------------------------------------------------------------------------- + +-- | A wrapper over `PrivateKey` that provides an interface for CTL newtype KeyWallet = KeyWallet { address :: NetworkId -> Address , selectCollateral :: From 3e85c453c1549fa0f7367586c9cb6f3aadd5741f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 6 Mar 2024 04:25:56 +0400 Subject: [PATCH 064/373] Fix: some Contract.* modules --- packages.dhall | 4 +- src/Contract/Address.purs | 189 +--- src/Contract/Monad.purs | 1 - src/Contract/Numeric/Natural.purs | 15 - src/Contract/Utxos.purs | 30 +- src/Contract/Wallet.purs | 91 +- src/Contract/Wallet/Key.purs | 15 +- src/Internal/ApplyArgs.purs | 9 +- src/Internal/BalanceTx/Collateral.purs | 109 +-- src/Internal/BalanceTx/Sync.purs | 17 +- src/Internal/BalanceTx/Types.purs | 22 +- src/Internal/BalanceTx/UnattachedTx.purs | 5 +- src/Internal/BalanceTx/UtxoMinAda.js | 19 - src/Internal/BalanceTx/UtxoMinAda.purs | 3 - src/Internal/Contract/MinFee.purs | 30 +- src/Internal/Contract/Monad.purs | 4 +- src/Internal/Contract/Wallet.purs | 94 +- src/Internal/Deserialization/PlutusData.purs | 4 +- src/Internal/Lens.purs | 37 +- src/Internal/Serialization.js | 437 --------- src/Internal/Serialization.purs | 899 ------------------ src/Internal/Serialization/AuxiliaryData.purs | 123 --- src/Internal/Serialization/MinFee.js | 16 - src/Internal/Serialization/MinFee.purs | 106 +-- src/Internal/Serialization/PlutusData.js | 49 - src/Internal/Serialization/PlutusData.purs | 87 -- src/Internal/Serialization/WitnessSet.js | 88 -- src/Internal/Serialization/WitnessSet.purs | 212 ----- src/Internal/ToData.purs | 343 ------- src/Internal/TxOutput.purs | 42 +- src/Internal/Types/Cbor.purs | 146 --- src/Internal/Types/CborBytes.purs | 31 - src/Internal/Types/Natural.purs | 112 --- src/Internal/Types/Transaction.purs | 5 - src/Internal/Wallet/Bip32.js | 31 - src/Internal/Wallet/Bip32.purs | 75 -- src/Internal/Wallet/Cip30/SignData.js | 131 --- src/Internal/Wallet/Cip30/SignData.purs | 77 -- src/Internal/Wallet/Cip30Mock.purs | 27 +- src/Internal/Wallet/KeyFile.purs | 20 +- src/Internal/Wallet/Spec.purs | 18 +- 41 files changed, 313 insertions(+), 3460 deletions(-) delete mode 100644 src/Contract/Numeric/Natural.purs delete mode 100644 src/Internal/BalanceTx/UtxoMinAda.js delete mode 100644 src/Internal/Serialization.js delete mode 100644 src/Internal/Serialization.purs delete mode 100644 src/Internal/Serialization/AuxiliaryData.purs delete mode 100644 src/Internal/Serialization/MinFee.js delete mode 100644 src/Internal/Serialization/PlutusData.js delete mode 100644 src/Internal/Serialization/PlutusData.purs delete mode 100644 src/Internal/Serialization/WitnessSet.js delete mode 100644 src/Internal/Serialization/WitnessSet.purs delete mode 100644 src/Internal/ToData.purs delete mode 100644 src/Internal/Types/Cbor.purs delete mode 100644 src/Internal/Types/CborBytes.purs delete mode 100644 src/Internal/Types/Natural.purs delete mode 100644 src/Internal/Types/Transaction.purs delete mode 100644 src/Internal/Wallet/Bip32.js delete mode 100644 src/Internal/Wallet/Bip32.purs delete mode 100644 src/Internal/Wallet/Cip30/SignData.js delete mode 100644 src/Internal/Wallet/Cip30/SignData.purs diff --git a/packages.dhall b/packages.dhall index 03184c804..0343af23d 100644 --- a/packages.dhall +++ b/packages.dhall @@ -279,7 +279,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "596a54711c3841a5851371056e1376a9f7bf70b4" + , version = "c15a6e2f63e50812d15c195ce035a06027c57001" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -361,7 +361,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "7694c87969562c131ec0db2c251fa651dc42d66e" + , version = "288cd06dc89d477b59e158b30803de8f6e535092" } , cardano-message-signing = { dependencies = diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index 55cd5ca73..9fb419bb6 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -1,203 +1,28 @@ --- | A module for Address-related functionality. module Contract.Address - ( addressPaymentValidatorHash - , addressStakeValidatorHash - , getNetworkId - , addressWithNetworkTagFromBech32 - , addressWithNetworkTagToBech32 + ( getNetworkId , addressFromBech32 - , addressToBech32 - , module X - , module TypeAliases - , payPubKeyHashBaseAddress - , payPubKeyHashEnterpriseAddress - , payPubKeyHashRewardAddress - , pubKeyHashBaseAddress - , pubKeyHashEnterpriseAddress - , pubKeyHashRewardAddress - , stakePubKeyHashRewardAddress - , validatorHashBaseAddress - , validatorHashEnterpriseAddress ) where import Prelude +import Cardano.Types (Address, NetworkId, Bech32String) +import Cardano.Types.Address as Address import Contract.Monad (Contract, liftContractM) import Control.Monad.Error.Class (throwError) import Control.Monad.Reader.Class (asks) -import Ctl.Internal.Plutus.Conversion - ( fromPlutusAddress - , fromPlutusAddressWithNetworkTag - , toPlutusAddress - ) -import Ctl.Internal.Plutus.Types.Address - ( Address - , AddressWithNetworkTag(AddressWithNetworkTag) - ) -import Ctl.Internal.Plutus.Types.Address - ( Address - , AddressWithNetworkTag(AddressWithNetworkTag) - , pubKeyHashAddress - , scriptHashAddress - , toPubKeyHash - , toStakingCredential - , toValidatorHash - ) as X -import Ctl.Internal.Scripts - ( validatorHashBaseAddress - , validatorHashEnterpriseAddress - ) as Scripts -import Ctl.Internal.Serialization.Address - ( BlockId(BlockId) - , ByronProtocolMagic(ByronProtocolMagic) - , CertificateIndex(CertificateIndex) - , NetworkId(TestnetId, MainnetId) - , Pointer - , Slot(Slot) - , TransactionIndex(TransactionIndex) - ) as X -import Ctl.Internal.Serialization.Address - ( NetworkId(MainnetId) - , addressBech32 - , addressNetworkId - ) -import Ctl.Internal.Serialization.Address (addressFromBech32) as SA -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) as X -import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.Aliases (Bech32String) as TypeAliases --- import Ctl.Internal.Types.PubKeyHash --- ( payPubKeyHashBaseAddress --- , payPubKeyHashEnterpriseAddress --- , payPubKeyHashRewardAddress --- , pubKeyHashBaseAddress --- , pubKeyHashEnterpriseAddress --- , pubKeyHashRewardAddress --- , stakePubKeyHashRewardAddress --- ) as PubKeyHash -import Ctl.Internal.Types.Scripts (StakeValidatorHash, ValidatorHash) -import Data.Maybe (Maybe) import Effect.Exception (error) getNetworkId :: Contract NetworkId getNetworkId = asks _.networkId --------------------------------------------------------------------------------- --- Helpers via Cardano helpers, these are helpers from the CSL equivalent --- that convert either input or output to a Plutus Address. --- Helpers that deconstruct/construct the Plutus Address are exported under --- `module Address` --------------------------------------------------------------------------------- - --- | Convert `Address` to `Bech32String`, using given `NetworkId` to determine --- | Bech32 prefix. -addressWithNetworkTagToBech32 :: AddressWithNetworkTag -> Bech32String -addressWithNetworkTagToBech32 = fromPlutusAddressWithNetworkTag >>> - addressBech32 - --- | Convert `Bech32String` to `AddressWithNetworkTag`. -addressWithNetworkTagFromBech32 :: Bech32String -> Maybe AddressWithNetworkTag -addressWithNetworkTagFromBech32 str = do - cslAddress <- SA.addressFromBech32 str - address <- toPlutusAddress cslAddress - let networkId = addressNetworkId cslAddress - pure $ AddressWithNetworkTag { address, networkId } - --- | Convert `Address` to `Bech32String`, using current `NetworkId` provided by --- | `Contract` configuration to determine the network tag. -addressToBech32 :: Address -> Contract Bech32String -addressToBech32 address = do - networkId <- getNetworkId - pure $ addressWithNetworkTagToBech32 - (AddressWithNetworkTag { address, networkId }) - -- | Convert `Bech32String` to `Address`, asserting that the address `networkId` -- | corresponds to the contract environment `networkId` addressFromBech32 :: Bech32String -> Contract Address addressFromBech32 str = do networkId <- getNetworkId - cslAddress <- liftContractM "addressFromBech32: unable to read address" $ - SA.addressFromBech32 str - address <- - liftContractM "addressFromBech32: unable to convert to plutus address" $ - toPlutusAddress cslAddress - when (networkId /= addressNetworkId cslAddress) + addr <- liftContractM "addressFromBech32: unable to read address" $ + Address.fromBech32 str + when (networkId /= Address.getNetworkId addr) (throwError $ error "addressFromBech32: address has wrong NetworkId") - pure address - --- | Get the `ValidatorHash` component of a Plutus `Address` -addressPaymentValidatorHash :: Address -> Maybe ValidatorHash -addressPaymentValidatorHash = - -- Network id does not matter here (#484) - Address.addressPaymentValidatorHash - <<< fromPlutusAddress MainnetId - --- | Get the `ValidatorHash` component of a Plutus `Address` -addressStakeValidatorHash :: Address -> Maybe StakeValidatorHash -addressStakeValidatorHash = - -- Network id does not matter here (#484) - Address.addressStakeValidatorHash - <<< fromPlutusAddress MainnetId - --- | Converts a Plutus `ValidatorHash` to a `Address` as a Plutus (`BaseAddress`) --- | `Address` -validatorHashBaseAddress - :: NetworkId -> ValidatorHash -> Maybe Address -validatorHashBaseAddress networkId = - toPlutusAddress - <<< Scripts.validatorHashBaseAddress networkId - --- | Converts a Plutus `ValidatorHash` to a Plutus `Address` as an --- | `EnterpriseAddress`. This is likely what you will use since Plutus --- | currently uses `scriptHashAddress` on non-staking addresses which is --- | invoked in `validatorAddress` -validatorHashEnterpriseAddress - :: NetworkId -> ValidatorHash -> Maybe Address -validatorHashEnterpriseAddress networkId = - toPlutusAddress - <<< Scripts.validatorHashEnterpriseAddress networkId - -pubKeyHashBaseAddress - :: NetworkId -> PubKeyHash -> StakePubKeyHash -> Maybe Address -pubKeyHashBaseAddress networkId pkh = - toPlutusAddress - <<< PubKeyHash.pubKeyHashBaseAddress networkId pkh - -pubKeyHashRewardAddress - :: NetworkId -> PubKeyHash -> Maybe Address -pubKeyHashRewardAddress networkId = - toPlutusAddress - <<< PubKeyHash.pubKeyHashRewardAddress networkId - -pubKeyHashEnterpriseAddress - :: NetworkId -> PubKeyHash -> Maybe Address -pubKeyHashEnterpriseAddress networkId = - toPlutusAddress - <<< PubKeyHash.pubKeyHashEnterpriseAddress networkId - -payPubKeyHashRewardAddress - :: NetworkId -> PaymentPubKeyHash -> Maybe Address -payPubKeyHashRewardAddress networkId = - toPlutusAddress - <<< PubKeyHash.payPubKeyHashRewardAddress networkId - -payPubKeyHashBaseAddress - :: NetworkId - -> PaymentPubKeyHash - -> StakePubKeyHash - -> Maybe Address -payPubKeyHashBaseAddress networkId pkh = - toPlutusAddress - <<< PubKeyHash.payPubKeyHashBaseAddress networkId pkh - -payPubKeyHashEnterpriseAddress - :: NetworkId -> PaymentPubKeyHash -> Maybe Address -payPubKeyHashEnterpriseAddress networkId = - toPlutusAddress - <<< PubKeyHash.payPubKeyHashEnterpriseAddress networkId - -stakePubKeyHashRewardAddress - :: NetworkId -> StakePubKeyHash -> Maybe Address -stakePubKeyHashRewardAddress networkId = - toPlutusAddress - <<< PubKeyHash.stakePubKeyHashRewardAddress networkId + pure addr diff --git a/src/Contract/Monad.purs b/src/Contract/Monad.purs index 9bdddc400..2b7ffd610 100644 --- a/src/Contract/Monad.purs +++ b/src/Contract/Monad.purs @@ -124,4 +124,3 @@ liftedM str = (=<<) (liftContractM str) -- | and lifting into the `Contract` monad. throwContractError :: forall (e :: Type) (a :: Type). Show e => e -> Contract a throwContractError = liftEffect <<< throw <<< show - diff --git a/src/Contract/Numeric/Natural.purs b/src/Contract/Numeric/Natural.purs deleted file mode 100644 index 4d3f6aee0..000000000 --- a/src/Contract/Numeric/Natural.purs +++ /dev/null @@ -1,15 +0,0 @@ --- | Arbitrary precision natural numbers (backed by `BigInt`). -module Contract.Numeric.Natural (module Natural) where - -import Ctl.Internal.Types.Natural - ( Natural - , binaryOnBigInt - , fromBigInt - , fromBigInt' - , fromInt - , fromInt' - , fromString - , minus - , toBigInt - , (^-) - ) as Natural diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index 2bd546c96..65bd16800 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -4,26 +4,16 @@ module Contract.Utxos ( getUtxo , utxosAt - , module X ) where import Prelude +import Cardano.Types (Address, TransactionOutput, UtxoMap) import Cardano.Types.TransactionInput (TransactionInput) import Contract.Log (logWarn') -import Contract.Monad (Contract, liftContractM, liftedE) -import Contract.Prelude (for) -import Control.Monad.Reader.Class (asks) +import Contract.Monad (Contract, liftedE) import Ctl.Internal.BalanceTx.Sync (getControlledAddresses, isCip30Wallet) import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.Plutus.Conversion - ( fromPlutusAddress - , toPlutusTxOutput - , toPlutusUtxoMap - ) -import Ctl.Internal.Plutus.Types.Address (class PlutusAddress, getAddress) -import Ctl.Internal.Plutus.Types.Transaction (TransactionOutput, UtxoMap) -import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) as X import Data.Maybe (Maybe) import Data.Set (member) as Set import Effect.Aff.Class (liftAff) @@ -38,13 +28,9 @@ import Effect.Aff.Class (liftAff) -- | potential problems. This function will raise a warning in the logs if -- | wallet address is used. utxosAt - :: forall (address :: Type) - . PlutusAddress address - => address + :: Address -> Contract UtxoMap -utxosAt addressAny = do - networkId <- asks _.networkId - let address = fromPlutusAddress networkId $ getAddress addressAny +utxosAt address = do queryHandle <- getQueryHandle whenM isCip30Wallet do walletAddresses <- getControlledAddresses @@ -56,9 +42,7 @@ utxosAt addressAny = do <> "that are available on wallet addresses are actually spendable. " <> "See the docs for UTxO locking in `doc/query-layers.md`. Using " <> "`getWalletUtxos` is a way to avoid the potential problems." - cardanoUtxoMap <- liftedE $ liftAff $ queryHandle.utxosAt address - liftContractM "utxosAt: failed to convert utxos" - $ toPlutusUtxoMap cardanoUtxoMap + liftedE $ liftAff $ queryHandle.utxosAt address -- | Queries for an utxo given a transaction input. -- | Returns `Nothing` if the output has already been spent. @@ -67,6 +51,4 @@ getUtxo -> Contract (Maybe TransactionOutput) getUtxo oref = do queryHandle <- getQueryHandle - cardanoTxOutput <- liftedE $ liftAff $ queryHandle.getUtxoByOref oref - for cardanoTxOutput - (liftContractM "getUtxo: failed to convert tx output" <<< toPlutusTxOutput) + liftedE $ liftAff $ queryHandle.getUtxoByOref oref diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 1981bc865..391ea4693 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -9,28 +9,19 @@ module Contract.Wallet , getWalletUtxos , getWalletCollateral , getWalletAddress - , getWalletAddresses - , getWalletAddressWithNetworkTag - , getWalletAddressesWithNetworkTag , module X ) where import Prelude -import Contract.Address - ( Address - , AddressWithNetworkTag - , PaymentPubKeyHash - , StakePubKeyHash - ) +import Cardano.Types (Address, StakePubKeyHash, UtxoMap, Value) +import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash) +import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) +import Cardano.Types.Value as Value import Contract.Config (PrivatePaymentKey, PrivateStakeKey) import Contract.Log (logTrace') -import Contract.Monad (Contract, liftContractM, liftedM) +import Contract.Monad (Contract) import Contract.Sync (syncBackendWithWallet, withoutSync) -import Contract.Transaction (TransactionUnspentOutput) -import Contract.Utxos (UtxoMap) -import Contract.Value (Value) -import Contract.Value as Value import Contract.Wallet.Key (KeyWallet, privateKeysToKeyWallet) import Control.Monad.Error.Class (liftEither) import Control.Monad.Reader (asks, local) @@ -39,23 +30,19 @@ import Ctl.Internal.Contract.Wallet , getRewardAddresses , getUnusedAddresses , getWallet + , getWalletAddresses , ownPaymentPubKeyHashes , ownStakePubKeyHashes , signData ) as X -import Ctl.Internal.Contract.Wallet (getWalletUtxos) as Wallet import Ctl.Internal.Contract.Wallet - ( ownPaymentPubKeyHashes + ( getWalletAddresses + , ownPaymentPubKeyHashes , ownStakePubKeyHashes ) +import Ctl.Internal.Contract.Wallet (getWalletUtxos) as Wallet import Ctl.Internal.Contract.Wallet as Contract import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.Plutus.Conversion - ( toPlutusAddress - , toPlutusTxUnspentOutput - , toPlutusUtxoMap - ) -import Ctl.Internal.Plutus.Conversion.Address (toPlutusAddressWithNetworkTag) import Ctl.Internal.Wallet (Wallet(KeyWallet)) as Wallet import Ctl.Internal.Wallet ( Wallet(KeyWallet, GenericCip30) @@ -101,12 +88,12 @@ import Ctl.Internal.Wallet.Spec ) ) as X import Data.Array (head) +import Data.Array as Array import Data.Bifunctor (lmap) -import Data.Foldable (fold, foldr) +import Data.Foldable (fold) import Data.Map as Map import Data.Maybe (Maybe(Just), fromMaybe) import Data.Newtype (unwrap) -import Data.Traversable (for, traverse) import Data.Tuple.Nested ((/\)) import Effect.Exception (error) import Prim.TypeError (class Warn, Text) @@ -138,7 +125,7 @@ mkKeyWalletFromPrivateKeys mkKeyWalletFromPrivateKeys payment mbStake = privateKeysToKeyWallet payment mbStake --- | Get an `Address` of the browser wallet. +-- | Get the first `Address` of the wallet. getWalletAddress :: Warn ( Text @@ -147,39 +134,6 @@ getWalletAddress => Contract (Maybe Address) getWalletAddress = head <$> getWalletAddresses --- | Get all the `Address`es of the browser wallet. -getWalletAddresses :: Contract (Array Address) -getWalletAddresses = do - addresses <- Contract.getWalletAddresses - traverse - ( liftM - (error "getWalletAddresses: failed to deserialize `Address`") - <<< toPlutusAddress - ) - addresses - --- | Get an `AddressWithNetworkTag` of the browser wallet. -getWalletAddressWithNetworkTag - :: Warn - ( Text - "This function returns only one `AddressWithNetworkTag` even in case multiple `AddressWithNetworkTag` are available. Use `getWalletAddressesWithNetworkTag` instead" - ) - => Contract (Maybe AddressWithNetworkTag) -getWalletAddressWithNetworkTag = head <$> getWalletAddressesWithNetworkTag - --- | Get all the `AddressWithNetworkTag`s of the browser wallet discarding errors. -getWalletAddressesWithNetworkTag :: Contract (Array AddressWithNetworkTag) -getWalletAddressesWithNetworkTag = do - addresses <- Contract.getWalletAddresses - traverse - ( liftM - ( error - "getWalletAddressesWithNetworkTag: failed to deserialize `Address`" - ) - <<< toPlutusAddressWithNetworkTag - ) - addresses - -- | Gets a wallet `PaymentPubKeyHash` via `getWalletAddresses`. ownPaymentPubKeyHash :: Warn @@ -214,10 +168,7 @@ getWalletUtxos = do >>> _.beforeCip30Methods ) syncBackendWithWallet - mCardanoUtxos <- Wallet.getWalletUtxos - for mCardanoUtxos $ - liftContractM "getWalletUtxos: unable to deserialize UTxOs" <<< - toPlutusUtxoMap + Wallet.getWalletUtxos getWalletBalance :: Contract (Maybe Value) @@ -230,13 +181,16 @@ getWalletBalance = do ) syncBackendWithWallet let - getUtxoValue = unwrap >>> _.output >>> unwrap >>> _.amount - sumValues = foldr (Value.unionWith add) mempty + getUtxoValue = unwrap >>> _.amount -- include both spendable UTxOs and collateral utxos <- getWalletUtxos <#> fromMaybe Map.empty collateralUtxos <- withoutSync getWalletCollateral <#> fold >>> toUtxoMap let allUtxos = Map.union utxos collateralUtxos - pure $ pure $ sumValues $ map getUtxoValue $ Map.values allUtxos + let + mbValueSum = Value.sum $ map getUtxoValue $ Array.fromFoldable $ Map.values + allUtxos + pure <$> liftM (error "getWalletBalance: overflow when summing `Value`s") + mbValueSum where toUtxoMap = Map.fromFoldable <<< map (unwrap >>> \({ input, output }) -> input /\ output) @@ -258,9 +212,4 @@ getWalletCollateral = do ) ) syncBackendWithWallet - mtxUnspentOutput <- Contract.getWalletCollateral - for mtxUnspentOutput $ traverse $ - liftedM - "getWalletCollateral: failed to deserialize TransactionUnspentOutput" - <<< pure - <<< toPlutusTxUnspentOutput + Contract.getWalletCollateral diff --git a/src/Contract/Wallet/Key.purs b/src/Contract/Wallet/Key.purs index 95cce2669..0849396a6 100644 --- a/src/Contract/Wallet/Key.purs +++ b/src/Contract/Wallet/Key.purs @@ -4,10 +4,8 @@ module Contract.Wallet.Key , publicKeyFromPrivateKey ) where -import Prelude - -import Cardano.Serialization.Lib (privateKey_toPublic) -import Ctl.Internal.Cardano.Types.Transaction (PrivateKey, PublicKey) +import Cardano.Types (PrivateKey, PublicKey) +import Cardano.Types.PrivateKey as PrivateKey import Ctl.Internal.Wallet.Key ( KeyWallet(KeyWallet) , keyWalletPrivatePaymentKey @@ -19,7 +17,10 @@ import Ctl.Internal.Wallet.Spec , StakeKeyPresence(WithStakeKey, WithoutStakeKey) , mkKeyWalletFromMnemonic ) as X -import Data.Newtype (unwrap, wrap) +import Prim.TypeError (class Warn, Text) -publicKeyFromPrivateKey :: PrivateKey -> PublicKey -publicKeyFromPrivateKey = wrap <<< privateKey_toPublic <<< unwrap +publicKeyFromPrivateKey + :: Warn (Text "Deprecated: use Cardano.Types.PrivateKey.toPublicKey") + => PrivateKey + -> PublicKey +publicKeyFromPrivateKey = PrivateKey.toPublicKey diff --git a/src/Internal/ApplyArgs.purs b/src/Internal/ApplyArgs.purs index 1137df817..4944a376c 100644 --- a/src/Internal/ApplyArgs.purs +++ b/src/Internal/ApplyArgs.purs @@ -6,12 +6,11 @@ module Ctl.Internal.ApplyArgs import Prelude import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.Serialization.Lib as CSL import Cardano.Types.PlutusData (PlutusData(List)) +import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript -import Ctl.Internal.Deserialization.WitnessSet as D -import Ctl.Internal.Serialization.PlutusData (convertPlutusData) as S -import Ctl.Internal.Serialization.Types as CSL import Data.Either (Either(Left, Right)) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype) @@ -42,7 +41,7 @@ instance Show ApplyArgsError where applyArgs :: PlutusScript -> Array PlutusData -> Either ApplyArgsError PlutusScript applyArgs script paramsList = left ApplyArgsError do - let params = S.convertPlutusData (List paramsList) + let params = PlutusData.toCsl (List paramsList) appliedScript <- apply_params_to_script_either params (PlutusScript.toCsl script) - Right $ D.convertPlutusScript appliedScript + Right $ PlutusScript.fromCsl appliedScript diff --git a/src/Internal/BalanceTx/Collateral.purs b/src/Internal/BalanceTx/Collateral.purs index b2a1005e9..206b0fb68 100644 --- a/src/Internal/BalanceTx/Collateral.purs +++ b/src/Internal/BalanceTx/Collateral.purs @@ -6,42 +6,43 @@ module Ctl.Internal.BalanceTx.Collateral import Prelude -import Cardano.Types.BigNum (maxValue, toBigInt) as BigNum -import Control.Monad.Except.Trans (ExceptT(ExceptT), except) +import Cardano.Types + ( BigNum + , Coin + , MultiAsset + , Transaction + , TransactionOutput + , TransactionUnspentOutput + ) +import Cardano.Types.Address (Address) +import Cardano.Types.BigNum (add, max, maxValue, sub, zero) as BigNum +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.Value (getMultiAsset, mkValue, valueToCoin) as Value +import Control.Monad.Error.Class (throwError) +import Control.Monad.Except.Trans (except) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) as X import Ctl.Internal.BalanceTx.Error - ( BalanceTxError(CollateralReturnError, CollateralReturnMinAdaValueCalcError) + ( BalanceTxError(NumericOverflowError, CollateralReturnError) ) import Ctl.Internal.BalanceTx.Types (BalanceTxM, askCoinsPerUtxoUnit) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) -import Ctl.Internal.Cardano.Types.Transaction - ( Transaction - , TransactionOutput - , _body +import Ctl.Internal.Lens + ( _body , _collateral , _collateralReturn , _totalCollateral ) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) -import Ctl.Internal.Cardano.Types.Value (Coin, MultiAsset) -import Ctl.Internal.Cardano.Types.Value (getMultiAsset, mkValue, valueToCoin') as Value -import Ctl.Internal.Serialization.Address (Address) -import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum)) -import Data.Either (Either(Left, Right), note) -import Data.Foldable (foldMap, foldl) +import Data.Either (Either(Left, Right)) +import Data.Foldable (foldl) +import Data.Lens ((.~)) import Data.Lens.Setter ((?~)) -import Data.Maybe (Maybe(Nothing)) +import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) -import Data.Ord.Max (Max(Max)) -import Effect.Class (liftEffect) -import JS.BigInt (BigInt) addTxCollateral :: Array TransactionUnspentOutput -> Transaction -> Transaction addTxCollateral collateral transaction = - transaction # _body <<< _collateral ?~ + transaction # _body <<< _collateral .~ map (_.input <<< unwrap) collateral -------------------------------------------------------------------------------- @@ -59,33 +60,33 @@ addTxCollateralReturn -> Transaction -> Address -> BalanceTxM Transaction -addTxCollateralReturn collateral transaction ownAddress = - let - collAdaValue :: BigInt - collAdaValue = foldl adaValue' zero collateral - - collMultiAsset :: MultiAsset - collMultiAsset = foldMap nonAdaAsset collateral - in - case collAdaValue <= minRequiredCollateral && collMultiAsset == mempty of - true -> - pure transaction - false -> - setTxCollateralReturn collAdaValue collMultiAsset +addTxCollateralReturn collateral transaction ownAddress = do + let maybeAdd acc n = BigNum.add (unwrap $ adaValue n) =<< acc + collAdaValue <- throwOnOverflow $ foldl maybeAdd (Just BigNum.zero) collateral + collMultiAsset <- throwOnOverflow $ MultiAsset.sum $ nonAdaAsset <$> + collateral + case + collAdaValue <= unwrap minRequiredCollateral && collMultiAsset == + MultiAsset.empty + of + true -> + pure transaction + false -> + setTxCollateralReturn collAdaValue collMultiAsset where setTxCollateralReturn - :: BigInt + :: BigNum -> MultiAsset -> BalanceTxM Transaction setTxCollateralReturn collAdaValue collMultiAsset = do let maxBigNumAdaValue :: Coin - maxBigNumAdaValue = wrap (BigNum.toBigInt BigNum.maxValue) + maxBigNumAdaValue = wrap BigNum.maxValue collReturnOutputRec = { address: ownAddress , amount: Value.mkValue maxBigNumAdaValue collMultiAsset - , datum: NoOutputDatum + , datum: Nothing , scriptRef: Nothing } @@ -94,30 +95,22 @@ addTxCollateralReturn collateral transaction ownAddress = -- Calculate the required min ada value for the collateral return output: minAdaValue <- do let returnAsTxOut = wrap collReturnOutputRec - ExceptT $ - liftEffect (utxoMinAdaValue coinsPerUtxoUnit returnAsTxOut) - <#> note - ( CollateralReturnMinAdaValueCalcError coinsPerUtxoUnit - returnAsTxOut - ) - + pure $ utxoMinAdaValue coinsPerUtxoUnit returnAsTxOut + -- Determine the actual ada value of the collateral return output: + collReturnAda <- throwOnOverflow do + remaining <- BigNum.sub collAdaValue (unwrap minRequiredCollateral) + pure $ BigNum.max remaining minAdaValue let - -- Determine the actual ada value of the collateral return output: - collReturnAda :: BigInt - collReturnAda = unwrap $ - Max (collAdaValue - minRequiredCollateral) <> Max minAdaValue - -- Build the final collateral return output: collReturnOutput :: TransactionOutput collReturnOutput = wrap $ collReturnOutputRec { amount = Value.mkValue (wrap collReturnAda) collMultiAsset } - totalCollateral :: BigInt - totalCollateral = collAdaValue - collReturnAda + totalCollateral <- throwOnOverflow $ BigNum.sub collAdaValue collReturnAda except $ - case totalCollateral > zero of + case totalCollateral > BigNum.zero of true -> -- Set collateral return and total collateral: Right $ @@ -129,13 +122,15 @@ addTxCollateralReturn collateral transaction ownAddress = -- Helpers -------------------------------------------------------------------------------- -adaValue :: TransactionUnspentOutput -> BigInt +adaValue :: TransactionUnspentOutput -> Coin adaValue = - Value.valueToCoin' <<< _.amount <<< unwrap <<< _.output <<< unwrap - -adaValue' :: BigInt -> TransactionUnspentOutput -> BigInt -adaValue' init = add init <<< adaValue + Value.valueToCoin <<< _.amount <<< unwrap <<< _.output <<< unwrap nonAdaAsset :: TransactionUnspentOutput -> MultiAsset nonAdaAsset = Value.getMultiAsset <<< _.amount <<< unwrap <<< _.output <<< unwrap + +throwOnOverflow :: forall a. Maybe a -> BalanceTxM a +throwOnOverflow = case _ of + Nothing -> throwError NumericOverflowError + Just a -> pure a diff --git a/src/Internal/BalanceTx/Sync.purs b/src/Internal/BalanceTx/Sync.purs index 5be2156b3..4e30075f6 100644 --- a/src/Internal/BalanceTx/Sync.purs +++ b/src/Internal/BalanceTx/Sync.purs @@ -13,16 +13,19 @@ module Ctl.Internal.BalanceTx.Sync import Prelude import Cardano.Serialization.Lib (toBytes) +import Cardano.Types + ( TransactionHash + , TransactionInput + , TransactionOutput + , TransactionUnspentOutput + , UtxoMap + ) +import Cardano.Types.Address (Address) import Contract.Log (logError', logTrace', logWarn') import Contract.Monad (Contract, liftedE) import Control.Monad.Reader (local) import Control.Monad.Reader.Class (asks) import Control.Parallel (parOneOf, parTraverse, parallel, sequential) -import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) -import Ctl.Internal.Cardano.Types.Transaction as Cardano -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) import Ctl.Internal.Contract.Monad ( ContractSynchronizationParams , getQueryHandle @@ -35,8 +38,6 @@ import Ctl.Internal.Contract.Wallet , getWalletUtxos ) import Ctl.Internal.Helpers (liftEither, liftedM) -import Ctl.Internal.Serialization.Address (Address) -import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) import Ctl.Internal.Wallet (Wallet(GenericCip30)) import Data.Array as Array import Data.Bifunctor (bimap) @@ -246,7 +247,7 @@ disabledSynchronizationParams = } -- | A version without plutus conversion for internal use. -getUtxo' :: TransactionInput -> Contract (Maybe Cardano.TransactionOutput) +getUtxo' :: TransactionInput -> Contract (Maybe TransactionOutput) getUtxo' oref = do queryHandle <- getQueryHandle liftedE $ liftAff $ queryHandle.getUtxoByOref oref diff --git a/src/Internal/BalanceTx/Types.purs b/src/Internal/BalanceTx/Types.purs index 10cfa2a59..79c8a21c7 100644 --- a/src/Internal/BalanceTx/Types.purs +++ b/src/Internal/BalanceTx/Types.purs @@ -13,6 +13,8 @@ module Ctl.Internal.BalanceTx.Types import Prelude +import Cardano.Types (Coin, CostModel, Language, NetworkId, Transaction) +import Cardano.Types.Address as Csl import Control.Monad.Except.Trans (ExceptT(ExceptT)) import Control.Monad.Reader.Class (asks) import Control.Monad.Reader.Trans (ReaderT, runReaderT) @@ -20,22 +22,18 @@ import Control.Monad.Trans.Class (lift) import Ctl.Internal.BalanceTx.Constraints ( BalanceTxConstraints , BalanceTxConstraintsBuilder + , buildBalanceTxConstraints ) -import Ctl.Internal.BalanceTx.Constraints (buildBalanceTxConstraints) as Constraints import Ctl.Internal.BalanceTx.Error (BalanceTxError) -import Ctl.Internal.Cardano.Types.Transaction (Costmdls(Costmdls), Transaction) import Ctl.Internal.Contract.Monad (Contract, ContractEnv) import Ctl.Internal.Contract.Wallet (getWalletAddresses) -import Ctl.Internal.Serialization.Address (NetworkId) -import Ctl.Internal.Serialization.Address as Csl -import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) -import Ctl.Internal.Types.Scripts (Language) import Data.Either (Either) import Data.Generic.Rep (class Generic) import Data.Lens (Lens') import Data.Lens.Getter (view) +import Data.Map (Map) import Data.Map (filterKeys) as Map -import Data.Newtype (class Newtype, over, unwrap) +import Data.Newtype (class Newtype, unwrap) import Data.Set (Set) import Data.Set (fromFoldable, member) as Set import Data.Show.Generic (genericShow) @@ -60,10 +58,10 @@ asksConstraints l = asks (view l <<< _.constraints) asksContractEnv :: forall (a :: Type). (ContractEnv -> a) -> BalanceTxM a asksContractEnv = lift <<< lift <<< asks -askCoinsPerUtxoUnit :: BalanceTxM CoinsPerUtxoUnit +askCoinsPerUtxoUnit :: BalanceTxM Coin askCoinsPerUtxoUnit = asksContractEnv - (_.coinsPerUtxoUnit <<< unwrap <<< _.pparams <<< _.ledgerConstants) + (_.coinsPerUtxoByte <<< unwrap <<< _.pparams <<< _.ledgerConstants) askNetworkId :: BalanceTxM NetworkId askNetworkId = asksContractEnv _.networkId @@ -80,12 +78,12 @@ withBalanceTxConstraints constraintsBuilder m = do flip runReaderT { constraints, ownAddresses } m where constraints :: BalanceTxConstraints - constraints = Constraints.buildBalanceTxConstraints constraintsBuilder + constraints = buildBalanceTxConstraints constraintsBuilder -askCostModelsForLanguages :: Set Language -> BalanceTxM Costmdls +askCostModelsForLanguages :: Set Language -> BalanceTxM (Map Language CostModel) askCostModelsForLanguages languages = asksContractEnv (_.costModels <<< unwrap <<< _.pparams <<< _.ledgerConstants) - <#> over Costmdls (Map.filterKeys (flip Set.member languages)) + <#> Map.filterKeys (flip Set.member languages) newtype FinalizedTransaction = FinalizedTransaction Transaction diff --git a/src/Internal/BalanceTx/UnattachedTx.purs b/src/Internal/BalanceTx/UnattachedTx.purs index 49f1345cd..da035197b 100644 --- a/src/Internal/BalanceTx/UnattachedTx.purs +++ b/src/Internal/BalanceTx/UnattachedTx.purs @@ -9,6 +9,7 @@ module Ctl.Internal.BalanceTx.UnattachedTx import Prelude +import Cardano.Types (PlutusData, Redeemer, Transaction) import Ctl.Internal.BalanceTx.RedeemerIndex ( IndexedRedeemer , UnindexedRedeemer @@ -16,8 +17,6 @@ import Ctl.Internal.BalanceTx.RedeemerIndex , indexRedeemers , mkRedeemersContext ) -import Ctl.Internal.Cardano.Types.Transaction (Redeemer, Transaction) -import Ctl.Internal.Types.Datum (Datum) import Data.Either (Either) import Data.Lens (Lens') import Data.Lens.Record (prop) @@ -25,7 +24,7 @@ import Type.Proxy (Proxy(Proxy)) type UnattachedTx redeemer = { transaction :: Transaction - , datums :: Array Datum + , datums :: Array PlutusData , redeemers :: Array redeemer } diff --git a/src/Internal/BalanceTx/UtxoMinAda.js b/src/Internal/BalanceTx/UtxoMinAda.js deleted file mode 100644 index c26911f91..000000000 --- a/src/Internal/BalanceTx/UtxoMinAda.js +++ /dev/null @@ -1,19 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function minAdaForOutput(maybe) { - return txOutput => dataCost => { - try { - return maybe.just(lib.min_ada_for_output(txOutput, dataCost)); - } catch (_) { - return maybe.nothing; - } - }; -} - -export function newCoinsPerWord(n) { - return lib.DataCost.new_coins_per_word(n); -} - -export function newCoinsPerByte(n) { - return lib.DataCost.new_coins_per_byte(n); -} diff --git a/src/Internal/BalanceTx/UtxoMinAda.purs b/src/Internal/BalanceTx/UtxoMinAda.purs index 04b56c9bd..9937c226d 100644 --- a/src/Internal/BalanceTx/UtxoMinAda.purs +++ b/src/Internal/BalanceTx/UtxoMinAda.purs @@ -5,7 +5,6 @@ module Ctl.Internal.BalanceTx.UtxoMinAda import Prelude -import Cardano.Serialization.Lib (DataCost) import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum (maxValue) as BigNum import Cardano.Types.Coin (Coin) @@ -14,8 +13,6 @@ import Cardano.Types.Value (lovelaceValueOf) import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithValue) import Data.Newtype (unwrap) -foreign import newCoinsPerByte :: BigNum -> DataCost - utxoMinAdaValue :: Coin -> TransactionOutput -> BigNum utxoMinAdaValue coinsPerUtxoByte txOutput = diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index 33885d3c2..086be4b84 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -2,31 +2,19 @@ module Ctl.Internal.Contract.MinFee (calculateMinFee) where import Prelude +import Cardano.Types (Coin, Ed25519KeyHash, Transaction, UtxoMap) +import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) +import Cardano.Types.Credential (asPubKeyHash) import Cardano.Types.TransactionInput (TransactionInput) -import Ctl.Internal.Cardano.Types.Transaction - ( Transaction - , UtxoMap - , _body - , _collateral - , _inputs - ) -import Ctl.Internal.Cardano.Types.Value (Coin) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Contract.Wallet (getWalletAddresses) import Ctl.Internal.Helpers (liftM, liftedM) -import Ctl.Internal.Serialization.Address - ( Address - , addressPaymentCred - , addressStakeCred - , stakeCredentialToKeyHash - ) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) +import Ctl.Internal.Lens (_body, _collateral, _inputs) import Ctl.Internal.Serialization.MinFee (calculateMinFeeCsl) import Data.Array (fromFoldable, mapMaybe) import Data.Array as Array import Data.Either (hush) -import Data.Lens (non) import Data.Lens.Getter ((^.)) import Data.Map (keys, lookup, values) as Map import Data.Maybe (Maybe(Just, Nothing)) @@ -55,7 +43,7 @@ getSelfSigners tx additionalUtxos = do txInputs :: Set TransactionInput txInputs = Set.difference - (tx ^. _body <<< _inputs) + (Set.fromFoldable $ tx ^. _body <<< _inputs) (Map.keys additionalUtxos) additionalUtxosAddrs :: Set Address @@ -71,7 +59,7 @@ getSelfSigners tx additionalUtxos = do Just utxo -> pure $ Just utxo let - collateralInputs = tx ^. _body <<< _collateral <<< non [] + collateralInputs = tx ^. _body <<< _collateral (collateralAddresses :: Set Address) <- setFor (Set.fromFoldable collateralInputs) $ \txInput -> @@ -97,13 +85,13 @@ getSelfSigners tx additionalUtxos = do liftM ( error $ "Could not extract payment credential from Address: " <> show addr - ) $ addressPaymentCred addr - pure $ stakeCredentialToKeyHash paymentCred + ) $ getPaymentCredential addr + pure $ asPubKeyHash $ unwrap paymentCred -- Extract stake pub key hashes from addresses let stakePkhs = Set.fromFoldable $ - (stakeCredentialToKeyHash <=< addressStakeCred) `mapMaybe` + (asPubKeyHash <<< unwrap <=< getStakeCredential) `mapMaybe` Array.fromFoldable txOwnAddrs pure $ paymentPkhs <> stakePkhs diff --git a/src/Internal/Contract/Monad.purs b/src/Internal/Contract/Monad.purs index 0a6ab0cb3..aa632f539 100644 --- a/src/Internal/Contract/Monad.purs +++ b/src/Internal/Contract/Monad.purs @@ -22,7 +22,7 @@ module Ctl.Internal.Contract.Monad import Prelude -import Cardano.Types.TransactionHash (TransactionHash) +import Cardano.Types (NetworkId(TestnetId, MainnetId), TransactionHash, UtxoMap) import Contract.Prelude (liftEither) import Control.Alt (class Alt) import Control.Alternative (class Alternative) @@ -37,7 +37,6 @@ import Control.Monad.Reader.Trans (ReaderT, runReaderT, withReaderT) import Control.Monad.Rec.Class (class MonadRec) import Control.Parallel (class Parallel, parallel, sequential) import Control.Plus (class Plus) -import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) import Ctl.Internal.Contract.Hooks (Hooks) import Ctl.Internal.Contract.LogParams (LogParams) import Ctl.Internal.Contract.QueryBackend @@ -66,7 +65,6 @@ import Ctl.Internal.QueryM , underlyingWebSocket ) import Ctl.Internal.QueryM.Kupo (isTxConfirmedAff) -import Ctl.Internal.Serialization.Address (NetworkId(TestnetId, MainnetId)) import Ctl.Internal.Service.Blockfrost ( BlockfrostServiceM , runBlockfrostServiceM diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index c23a53b16..08a351965 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -16,32 +16,28 @@ module Ctl.Internal.Contract.Wallet import Prelude +import Cardano.Types (Ed25519KeyHash, RawBytes) +import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Credential as Credential +import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash) +import Cardano.Types.StakePubKeyHash (StakePubKeyHash) +import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) +import Cardano.Types.UtxoMap (UtxoMap) +import Cardano.Types.Value (Value, valueToCoin) +import Cardano.Types.Value (geq, lovelaceValueOf, sum) as Value import Control.Monad.Reader.Trans (asks) import Control.Parallel (parTraverse) -import Ctl.Internal.Cardano.Types.Transaction (UtxoMap) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) -import Ctl.Internal.Cardano.Types.Value (Value, valueToCoin) -import Ctl.Internal.Cardano.Types.Value (geq, lovelaceValueOf) as Value import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos, getQueryHandle) -import Ctl.Internal.Helpers (liftM, liftedM) -import Ctl.Internal.Serialization.Address - ( Address - , addressPaymentCred - , baseAddressDelegationCred - , baseAddressFromAddress - , stakeCredentialToKeyHash - ) +import Ctl.Internal.Helpers (bugTrackerLink, liftM, liftedM) import Ctl.Internal.Service.Error (pprintClientError) -import Ctl.Internal.Types.RawBytes (RawBytes) import Ctl.Internal.Wallet (Wallet, actionBasedOnWallet) import Ctl.Internal.Wallet.Cip30 (DataSignature) -import Data.Array (cons, foldMap, foldr) +import Data.Array (cons, foldr) import Data.Array as Array import Data.Either (Either(Left, Right), hush) -import Data.Foldable (fold, foldl) +import Data.Foldable (foldl) import Data.Function (on) import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) @@ -52,7 +48,7 @@ import Data.UInt as UInt import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) -import JS.BigInt as BigInt +import Effect.Unsafe (unsafePerformEffect) getUnusedAddresses :: Contract (Array Address) getUnusedAddresses = @@ -70,6 +66,7 @@ getRewardAddresses = withWallet $ actionBasedOnWallet _.getRewardAddresses \kw -> asks _.networkId <#> Array.singleton <<< (unwrap kw).address +-- | Get all `Address`es of the browser wallet. getWalletAddresses :: Contract (Array Address) getWalletAddresses = withWallet do actionBasedOnWallet _.getUsedAddresses @@ -90,17 +87,17 @@ signData address payload = getWallet :: Contract (Maybe Wallet) getWallet = asks _.wallet -ownPubKeyHashes :: Contract (Array PubKeyHash) +ownPubKeyHashes :: Contract (Array Ed25519KeyHash) ownPubKeyHashes = do getWalletAddresses >>= traverse \address -> do paymentCred <- liftM (error $ "Unable to get payment credential from Address") $ - addressPaymentCred address + getPaymentCredential address -- scripts are impossible here, so `stakeCredentialToKeyHash` will never -- return `Nothing` (`catMaybes` is safe) liftM (error "Impossible happened: CIP-30 method returned script address") - $ stakeCredentialToKeyHash paymentCred <#> wrap + $ Credential.asPubKeyHash (unwrap paymentCred) -- | Gets all wallet `PaymentPubKeyHash`es via `getWalletAddresses`. ownPaymentPubKeyHashes :: Contract (Array PaymentPubKeyHash) @@ -114,9 +111,8 @@ ownStakePubKeyHashes = do addressToMStakePubKeyHash :: Address -> Maybe StakePubKeyHash addressToMStakePubKeyHash address = do - baseAddress <- baseAddressFromAddress address - wrap <<< wrap <$> stakeCredentialToKeyHash - (baseAddressDelegationCred baseAddress) + cred <- unwrap <$> getStakeCredential address + wrap <$> Credential.asPubKeyHash cred withWallet :: forall (a :: Type). (Wallet -> Contract a) -> Contract a @@ -126,7 +122,7 @@ withWallet act = do getWalletCollateral :: Contract (Maybe (Array TransactionUnspentOutput)) getWalletCollateral = do - { maxCollateralInputs, coinsPerUtxoUnit } <- unwrap <$> getProtocolParameters + { maxCollateralInputs, coinsPerUtxoByte } <- unwrap <$> getProtocolParameters mbCollateralUTxOs <- getWallet >>= maybe (pure Nothing) do actionBasedOnWallet _.getCollateral \kw -> do queryHandle <- getQueryHandle @@ -135,10 +131,9 @@ getWalletCollateral = do utxos <- (liftAff $ queryHandle.utxosAt addr) <#> hush >>> fromMaybe Map.empty >>= filterLockedUtxos - liftEffect $ (unwrap kw).selectCollateral coinsPerUtxoUnit + pure $ (unwrap kw).selectCollateral coinsPerUtxoByte (UInt.toInt maxCollateralInputs) utxos - let {- This is a workaround for the case where Eternl wallet, in addition to designated collateral UTxO, returns all UTxO's with @@ -150,25 +145,28 @@ getWalletCollateral = do N UTxO's returned by `getCollateral`, such that their total Ada value is greater than or equal to 5 Ada. -} - targetCollateral = Value.lovelaceValueOf $ BigInt.fromInt 5_000_000 + targetCollateral = Value.lovelaceValueOf $ BigNum.fromInt 5_000_000 utxoValue u = (unwrap (unwrap u).output).amount -- used for sorting by ADA value in descending order compareNegatedAdaValues :: TransactionUnspentOutput -> TransactionUnspentOutput -> Ordering compareNegatedAdaValues = - compare `on` - ( unwrap >>> _.output >>> unwrap >>> _.amount >>> valueToCoin >>> unwrap - >>> negate - ) + flip compare `on` + (unwrap >>> _.output >>> unwrap >>> _.amount >>> valueToCoin >>> unwrap) consumeUntilEnough :: Array TransactionUnspentOutput -> TransactionUnspentOutput -> Array TransactionUnspentOutput consumeUntilEnough utxos utxo = - if foldMap utxoValue utxos `Value.geq` targetCollateral then utxos - else cons utxo utxos + case + Value.geq <$> Value.sum (utxoValue <$> utxos) <*> Just targetCollateral + of + Just true -> utxos + Just false -> cons utxo utxos + _ -> unsafePerformEffect $ throw $ + "Overflow while calculating collateral. " <> bugTrackerLink mbSufficientUtxos = mbCollateralUTxOs <#> foldl consumeUntilEnough [] <<< Array.sortBy compareNegatedAdaValues for_ mbSufficientUtxos \sufficientUtxos -> do @@ -192,17 +190,29 @@ getWalletBalance = do queryHandle <- getQueryHandle wallet <- getWallet >>= liftM (error "getWalletBalance: no wallet is active") let + getKeyWalletBalance :: _ -> Contract Value getKeyWalletBalance = \_ -> do -- Implement via `utxosAt` addresses <- getWalletAddresses - fold <$> flip parTraverse addresses \address -> do - eiResponse <- liftAff $ queryHandle.utxosAt address - case eiResponse of - Left err -> liftEffect $ throw $ - "getWalletBalance via KeyWallet: utxosAt call error: " <> - pprintClientError err - Right utxoMap -> - pure $ fold $ map _.amount $ map unwrap $ Map.values utxoMap + liftM + ( error $ + "getWalletBalance: Unable to get payment credential from Address" + ) + =<< Value.sum <$> flip parTraverse addresses \address -> do + eiResponse <- liftAff $ queryHandle.utxosAt address + case eiResponse of + Left err -> liftEffect $ throw $ + "getWalletBalance: utxosAt call error: " <> + pprintClientError err + Right utxoMap -> do + liftM + ( error $ + "getWalletBalance: Unable to get payment credential from Address" + ) + $ Value.sum + ( map _.amount $ map unwrap $ Array.fromFoldable $ + Map.values utxoMap + ) actionBasedOnWallet _.getBalance getKeyWalletBalance wallet getWalletUtxos :: Contract (Maybe UtxoMap) diff --git a/src/Internal/Deserialization/PlutusData.purs b/src/Internal/Deserialization/PlutusData.purs index c5138e46c..c0488e87a 100644 --- a/src/Internal/Deserialization/PlutusData.purs +++ b/src/Internal/Deserialization/PlutusData.purs @@ -5,14 +5,15 @@ module Ctl.Internal.Deserialization.PlutusData import Prelude +import Cardano.FromData (class FromData, fromData) import Cardano.Serialization.Lib (fromBytes) import Cardano.Types.BigNum (BigNum) +import Cardano.Types.CborBytes (CborBytes) import Cardano.Types.PlutusData ( PlutusData(Constr, Map, List, Integer, Bytes) ) as T import Ctl.Internal.Deserialization.BigInt (convertBigInt) import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) -import Ctl.Internal.FromData (class FromData, fromData) import Ctl.Internal.Serialization.Types ( BigInt , ConstrPlutusData @@ -20,7 +21,6 @@ import Ctl.Internal.Serialization.Types , PlutusList , PlutusMap ) -import Ctl.Internal.Types.CborBytes (CborBytes) import Data.ByteArray (ByteArray) import Data.Maybe (Maybe, fromJust) import Data.Newtype (unwrap) diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index ec0220014..7f3b9290c 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -1,15 +1,48 @@ -module Ctl.Internal.Lens (_witnessSet, _redeemers) where +module Ctl.Internal.Lens + ( _witnessSet + , _redeemers + , _vkeys + , _body + , _collateral + , _collateralReturn + , _totalCollateral + ) where import Prelude -import Cardano.Types (Redeemer, Transaction, TransactionWitnessSet) +import Cardano.Types + ( Coin(..) + , Redeemer + , Transaction + , TransactionBody + , TransactionInput(..) + , TransactionOutput(..) + , TransactionWitnessSet + , Vkeywitness + ) import Data.Lens (Lens') import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) +import Data.Maybe (Maybe) import Type.Proxy (Proxy(..)) +_body :: Lens' Transaction TransactionBody +_body = _Newtype <<< prop (Proxy :: Proxy "body") + +_collateral :: Lens' TransactionBody (Array TransactionInput) +_collateral = _Newtype <<< prop (Proxy :: Proxy "collateral") + +_collateralReturn :: Lens' TransactionBody (Maybe TransactionOutput) +_collateralReturn = _Newtype <<< prop (Proxy :: Proxy "collateralReturn") + +_totalCollateral :: Lens' TransactionBody (Maybe Coin) +_totalCollateral = _Newtype <<< prop (Proxy :: Proxy "totalCollateral") + _witnessSet :: Lens' Transaction TransactionWitnessSet _witnessSet = _Newtype <<< prop (Proxy :: Proxy "witnessSet") _redeemers :: Lens' TransactionWitnessSet (Array Redeemer) _redeemers = _Newtype <<< prop (Proxy :: Proxy "redeemers") + +_vkeys :: Lens' TransactionWitnessSet (Array Vkeywitness) +_vkeys = _Newtype <<< prop (Proxy :: Proxy "vkeys") diff --git a/src/Internal/Serialization.js b/src/Internal/Serialization.js deleted file mode 100644 index d74552660..000000000 --- a/src/Internal/Serialization.js +++ /dev/null @@ -1,437 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -const setter = prop => obj => value => () => obj["set_" + prop](value); - -export function hashTransaction(body) { - return () => lib.hash_transaction(body); -} - -export function newValue(coin) { - return () => lib.Value.new(coin); -} - -export function newValueFromAssets(multiasset) { - return () => lib.Value.new_from_assets(multiasset); -} - -export const valueSetCoin = setter("coin"); - -export function newTransactionInput(transaction_id) { - return index => () => lib.TransactionInput.new(transaction_id, index); -} - -export function newTransactionInputs() { - return lib.TransactionInputs.new(); -} - -export function addTransactionInput(inputs) { - return input => () => inputs.add(input); -} - -export function newTransactionOutput(address) { - return amount => () => lib.TransactionOutput.new(address, amount); -} - -export function newTransactionOutputs() { - return lib.TransactionOutputs.new(); -} - -export function addTransactionOutput(outputs) { - return output => () => outputs.add(output); -} - -export function newTransactionBody(inputs) { - return outputs => fee => () => - lib.TransactionBody.new_tx_body(inputs, outputs, fee); -} - -export function setTxIsValid(tx) { - return isValid => () => tx.set_is_valid(isValid); -} - -export function newTransaction(body) { - return witness_set => auxiliary_data => () => - lib.Transaction.new(body, witness_set, auxiliary_data); -} - -export function newTransaction_(body) { - return witness_set => () => lib.Transaction.new(body, witness_set); -} - -export function newTransactionUnspentOutput(input) { - return output => () => lib.TransactionUnspentOutput.new(input, output); -} - -export function newMultiAsset() { - return lib.MultiAsset.new(); -} - -export function insertMultiAsset(multiasset) { - return key => value => () => multiasset.insert(key, value); -} - -export function newAssets() { - return lib.Assets.new(); -} - -export function insertAssets(assets) { - return key => value => () => assets.insert(key, value); -} - -export function newAssetName(name) { - return () => lib.AssetName.new(name); -} - -export const transactionOutputSetDataHash = setter("data_hash"); -export const transactionOutputSetPlutusData = setter("plutus_data"); -export const transactionOutputSetScriptRef = setter("script_ref"); - -export function scriptRefNewNativeScript(nativeScript) { - return lib.ScriptRef.new_native_script(nativeScript); -} - -export function scriptRefNewPlutusScript(plutusScript) { - return lib.ScriptRef.new_plutus_script(plutusScript); -} - -export function newVkeywitnesses() { - return lib.Vkeywitnesses.new(); -} - -export function makeVkeywitness(hash) { - return key => () => lib.make_vkey_witness(hash, key); -} - -export function newVkeywitness(vkey) { - return signature => () => lib.Vkeywitness.new(vkey, signature); -} - -export function addVkeywitness(witnesses) { - return witness => () => witnesses.add(witness); -} - -export function newVkeyFromPublicKey(public_key) { - return () => lib.Vkey.new(public_key); -} - -export function publicKeyHash(pk) { - return pk.hash(); -} - -export const transactionWitnessSetSetVkeys = setter("vkeys"); - -export function newCostmdls() { - return lib.Costmdls.new(); -} - -export function defaultCostmdls() { - return lib.TxBuilderConstants.plutus_vasil_cost_models(); -} - -export function costmdlsSetCostModel(cms) { - return lang => cm => () => cms.insert(lang, cm); -} - -export function newCostModel() { - return lib.CostModel.new(); -} - -export function costModelSetCost(cm) { - return op => cost => () => cm.set(op, cost); -} - -export function newPlutusV1() { - return lib.Language.new_plutus_v1(); -} - -export function newPlutusV2() { - return lib.Language.new_plutus_v2(); -} - -export function _hashScriptData(rs) { - return cms => ds => () => { - const list = lib.PlutusList.new(); - ds.forEach(d => list.add(d)); - return lib.hash_script_data(rs, cms, list); - }; -} - -export function _hashScriptDataNoDatums(rs) { - return cms => () => lib.hash_script_data(rs, cms); -} - -export function newRedeemers() { - return lib.Redeemers.new(); -} - -export function addRedeemer(rs) { - return r => () => rs.add(r); -} - -export function setTxBodyReferenceInputs(txBody) { - return referenceInputs => () => txBody.set_reference_inputs(referenceInputs); -} - -export const setTxBodyScriptDataHash = setter("script_data_hash"); -export const setTxBodyMint = setter("mint"); - -export function newMint() { - return lib.Mint.new(); -} - -export function _bigIntToInt(maybe) { - return bigInt => { - try { - const str = bigInt.to_str(); - if (str[0] == "-") { - return maybe.just( - lib.Int.new_negative(lib.BigNum.from_str(str.slice(1))) - ); - } else { - return maybe.just(lib.Int.new(lib.BigNum.from_str(str))); - } - } catch (_) { - return maybe.nothing; - } - }; -} - -export const newMintAssets = lib.MintAssets.new; - -export function insertMintAssets(mint) { - return scriptHash => mintAssets => () => mint.insert(scriptHash, mintAssets); -} - -export function insertMintAsset(mintAssets) { - return assetName => int => () => mintAssets.insert(assetName, int); -} - -export function networkIdTestnet() { - return lib.NetworkId.testnet(); -} - -export function networkIdMainnet() { - return lib.NetworkId.mainnet(); -} - -export function setTxBodyCollateralReturn(txBody) { - return collateralReturn => () => - txBody.set_collateral_return(collateralReturn); -} - -export function setTxBodyTotalCollateral(txBody) { - return totalCollateral => () => txBody.set_total_collateral(totalCollateral); -} - -export const setTxBodyTtl = setter("ttl"); -export const setTxBodyCerts = setter("certs"); - -export function newCertificates() { - return lib.Certificates.new(); -} - -export function newStakeRegistrationCertificate(stakeCredential) { - return () => - lib.Certificate.new_stake_registration( - lib.StakeRegistration.new(stakeCredential) - ); -} - -export function newStakeDeregistrationCertificate(stakeCredential) { - return () => - lib.Certificate.new_stake_deregistration( - lib.StakeDeregistration.new(stakeCredential) - ); -} - -export function newStakeDelegationCertificate(stakeCredential) { - return ed25519KeyHash => () => - lib.Certificate.new_stake_delegation( - lib.StakeDelegation.new(stakeCredential, ed25519KeyHash) - ); -} - -export function newPoolRegistrationCertificate(operator) { - return vrfKeyhash => - pledge => - cost => - margin => - reward_account => - poolOwners => - relays => - poolMetadata => - () => - lib.Certificate.new_pool_registration( - lib.PoolRegistration.new( - lib.PoolParams.new( - operator, - vrfKeyhash, - pledge, - cost, - margin, - reward_account, - poolOwners, - relays, - poolMetadata - ) - ) - ); -} - -export function newUnitInterval(numerator) { - return denominator => () => lib.UnitInterval.new(numerator, denominator); -} - -export function newPoolRetirementCertificate(poolKeyHash) { - return epoch => () => - lib.Certificate.new_pool_retirement( - lib.PoolRetirement.new(poolKeyHash, epoch) - ); -} - -export function newGenesisKeyDelegationCertificate(genesisHash) { - return genesisDelegateHash => vrfKeyhash => () => - lib.Certificate.new_genesis_key_delegation( - lib.GenesisKeyDelegation.new(genesisHash, genesisDelegateHash, vrfKeyhash) - ); -} - -export function addCert(certificates) { - return certificate => () => certificates.add(certificate); -} - -export const setTxBodyCollateral = setter("collateral"); -export const setTxBodyNetworkId = setter("network_id"); - -export function transactionBodySetRequiredSigners(containerHelper) { - return body => keyHashes => () => - body.set_required_signers( - containerHelper.pack(lib.Ed25519KeyHashes, keyHashes) - ); -} - -export const transactionBodySetValidityStartInterval = setter( - "validity_start_interval_bignum" -); - -export function transactionBodySetAuxiliaryDataHash(txBody) { - return hash => () => txBody.set_auxiliary_data_hash(hash); -} - -export function convertPoolOwners(containerHelper) { - return keyHashes => () => - containerHelper.pack(lib.Ed25519KeyHashes, keyHashes); -} - -export function packRelays(containerHelper) { - return relays => containerHelper.pack(lib.Relays, relays); -} - -export function newIpv4(data) { - return () => lib.Ipv4.new(data); -} - -export function newIpv6(data) { - return () => lib.Ipv6.new(data); -} - -export function newSingleHostAddr(port) { - return ipv4 => ipv6 => () => - lib.Relay.new_single_host_addr(lib.SingleHostAddr.new(port, ipv4, ipv6)); -} - -export function newSingleHostName(port) { - return dnsName => () => - lib.Relay.new_single_host_name( - lib.SingleHostName.new(port, lib.DNSRecordAorAAAA.new(dnsName)) - ); -} - -export function newMultiHostName(dnsName) { - return () => - lib.Relay.new_multi_host_name( - lib.MultiHostName.new(lib.DNSRecordSRV.new(dnsName)) - ); -} - -export function newPoolMetadata(url) { - return hash => () => lib.PoolMetadata.new(lib.URL.new(url), hash); -} - -export function newMoveInstantaneousRewardToOtherPot(pot) { - return amount => () => - lib.MoveInstantaneousReward.new_to_other_pot(pot, amount); -} - -export function newMoveInstantaneousRewardToStakeCreds(pot) { - return amounts => () => - lib.MoveInstantaneousReward.new_to_stake_creds(pot, amounts); -} - -export function newMIRToStakeCredentials(containerHelper) { - return entries => () => - containerHelper.packMap(lib.MIRToStakeCredentials, entries); -} - -export function newMoveInstantaneousRewardsCertificate(mir) { - return () => - lib.Certificate.new_move_instantaneous_rewards_cert( - lib.MoveInstantaneousRewardsCert.new(mir) - ); -} - -export function newWithdrawals(containerHelper) { - return entries => () => containerHelper.packMap(lib.Withdrawals, entries); -} - -export const setTxBodyWithdrawals = setter("withdrawals"); -export const setTxBodyUpdate = setter("update"); - -export function newUpdate(ppUpdates) { - return epoch => () => lib.Update.new(ppUpdates, epoch); -} - -export const ppuSetMinfeeA = setter("minfee_a"); -export const ppuSetMinfeeB = setter("minfee_b"); -export const ppuSetMaxBlockBodySize = setter("max_block_body_size"); -export const ppuSetMaxTxSize = setter("max_tx_size"); -export const ppuSetMaxBlockHeaderSize = setter("max_block_header_size"); -export const ppuSetKeyDeposit = setter("key_deposit"); -export const ppuSetPoolDeposit = setter("pool_deposit"); -export const ppuSetMaxEpoch = setter("max_epoch"); -export const ppuSetNOpt = setter("n_opt"); -export const ppuSetPoolPledgeInfluence = setter("pool_pledge_influence"); -export const ppuSetExpansionRate = setter("expansion_rate"); -export const ppuSetTreasuryGrowthRate = setter("treasury_growth_rate"); - -export function newProtocolVersion(major) { - return minor => () => lib.ProtocolVersion.new(major, minor); -} - -export function ppuSetProtocolVersion(ppu) { - return version => () => ppu.set_protocol_version(version); -} - -export const ppuSetMinPoolCost = setter("min_pool_cost"); -export const ppuSetAdaPerUtxoByte = setter("ada_per_utxo_byte"); -export const ppuSetCostModels = setter("cost_models"); - -export function newExUnitPrices(mem_price) { - return step_price => () => lib.ExUnitPrices.new(mem_price, step_price); -} - -export const ppuSetExecutionCosts = setter("execution_costs"); -export const ppuSetMaxTxExUnits = setter("max_tx_ex_units"); -export const ppuSetMaxBlockExUnits = setter("max_block_ex_units"); -export const ppuSetMaxValueSize = setter("max_value_size"); -export const ppuSetCollateralPercentage = setter("collateral_percentage"); -export const ppuSetMaxCollateralInputs = setter("max_collateral_inputs"); - -export function newProtocolParamUpdate() { - return lib.ProtocolParamUpdate.new(); -} - -export function newProposedProtocolParameterUpdates(containerHelper) { - return kvs => () => - containerHelper.packMap(lib.ProposedProtocolParameterUpdates, kvs); -} diff --git a/src/Internal/Serialization.purs b/src/Internal/Serialization.purs deleted file mode 100644 index 1734507fd..000000000 --- a/src/Internal/Serialization.purs +++ /dev/null @@ -1,899 +0,0 @@ -module Ctl.Internal.Serialization - ( convertExUnitPrices - , convertTransaction - , convertTxBody - , convertTxInput - , convertTxOutput - , defaultCostmdls - , convertTransactionUnspentOutput - , convertValue - , serializeData - , hashScriptData - , hashTransaction - , publicKeyHash - , makeVkeywitness - ) where - -import Prelude - -import Cardano.Serialization.Lib - ( Address - , RewardAddress - , StakeCredential - , VRFKeyHash - , fromBytes - , toBytes - , transactionInput_new - ) -import Cardano.Serialization.Lib.Internal (packListContainer) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum (fromBigInt, fromStringUnsafe, toString) as BigNum -import Cardano.Types.NativeScript (toCsl) -import Cardano.Types.NetworkId as T -import Cardano.Types.PlutusData as PlutusData -import Cardano.Types.RewardAddress as T -import Cardano.Types.TransactionOutput as T -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(NativeScriptRef, PlutusScriptRef) - ) as T -import Ctl.Internal.Cardano.Types.Transaction - ( Certificate - ( StakeRegistration - , StakeDeregistration - , StakeDelegation - , PoolRegistration - , PoolRetirement - , GenesisKeyDelegation - , MoveInstantaneousRewardsCert - ) - , CostModel(CostModel) - , Costmdls(Costmdls) - , ExUnitPrices - , GenesisDelegateHash(GenesisDelegateHash) - , GenesisHash(GenesisHash) - , MIRToStakeCredentials(MIRToStakeCredentials) - , Mint(Mint) - , MoveInstantaneousReward(ToOtherPot, ToStakeCreds) - , PoolMetadata(PoolMetadata) - , PoolMetadataHash(PoolMetadataHash) - , ProposedProtocolParameterUpdates - , ProtocolParamUpdate - , Redeemer - , Relay(SingleHostAddr, SingleHostName, MultiHostName) - , Transaction(Transaction) - , TxBody(TxBody) - , URL(URL) - , UnitInterval - , Update - ) as T -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) as T -import Ctl.Internal.Cardano.Types.Value as Value -import Ctl.Internal.FfiHelpers - ( ContainerHelper - , MaybeFfiHelper - , containerHelper - , maybeFfiHelper - ) -import Ctl.Internal.Helpers (fromJustEff, notImplemented) -import Ctl.Internal.Serialization.BigInt as Serialization -import Ctl.Internal.Serialization.Hash - ( Ed25519KeyHash - , ScriptHash - , scriptHashFromBytes - ) -import Ctl.Internal.Serialization.Types - ( AssetName - , Assets - , AuxiliaryData - , AuxiliaryDataHash - , BigInt - , Certificate - , Certificates - , CostModel - , Costmdls - , DataHash - , Ed25519KeyHashes - , Ed25519Signature - , ExUnitPrices - , ExUnits - , GenesisDelegateHash - , GenesisHash - , Ipv4 - , Ipv6 - , Language - , MIRToStakeCredentials - , Mint - , MintAssets - , MoveInstantaneousReward - , MultiAsset - , NativeScript - , NetworkId - , PlutusData - , PlutusScript - , PoolMetadata - , PoolMetadataHash - , PrivateKey - , ProposedProtocolParameterUpdates - , ProtocolParamUpdate - , ProtocolVersion - , PublicKey - , Redeemer - , Redeemers - , Relay - , Relays - , ScriptDataHash - , ScriptRef - , Transaction - , TransactionBody - , TransactionHash - , TransactionInput - , TransactionInputs - , TransactionOutput - , TransactionOutputs - , TransactionUnspentOutput - , TransactionWitnessSet - , UnitInterval - , Update - , Value - , Vkey - , Vkeywitness - , Vkeywitnesses - , Withdrawals - ) -import Ctl.Internal.Serialization.WitnessSet - ( convertExUnits - , convertRedeemer - , convertWitnessSet - ) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.Int as Csl -import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2)) as S -import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) as T -import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) as T -import Data.Array as Array -import Data.ByteArray (ByteArray) -import Data.Foldable (null) as Foldable -import Data.FoldableWithIndex (forWithIndex_) -import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap, wrap) -import Data.Traversable (for, for_, traverse_) -import Data.Tuple (Tuple(Tuple)) -import Data.Tuple.Nested (type (/\), (/\)) -import Data.UInt (UInt) -import Data.UInt as UInt -import Effect (Effect) -import Untagged.Union (UndefinedOr, maybeToUor) - -foreign import hashTransaction :: TransactionBody -> Effect TransactionHash - -foreign import newValue :: BigNum -> Effect Value -foreign import valueSetCoin :: Value -> BigNum -> Effect Unit -foreign import newValueFromAssets :: MultiAsset -> Effect Value -foreign import newTransactionInput - :: TransactionHash -> UInt -> Effect TransactionInput - -foreign import newTransactionInputs :: Effect TransactionInputs -foreign import addTransactionInput - :: TransactionInputs -> TransactionInput -> Effect Unit - -foreign import newTransactionOutput - :: Address -> Value -> Effect TransactionOutput - -foreign import newTransactionOutputs :: Effect TransactionOutputs -foreign import addTransactionOutput - :: TransactionOutputs -> TransactionOutput -> Effect Unit - -foreign import newTransactionBody - :: TransactionInputs - -> TransactionOutputs - -> BigNum - -> Effect TransactionBody - -foreign import newTransaction - :: TransactionBody - -> TransactionWitnessSet - -> AuxiliaryData - -> Effect Transaction - -foreign import newTransaction_ - :: TransactionBody - -> TransactionWitnessSet - -> Effect Transaction - -foreign import newTransactionUnspentOutput - :: TransactionInput -> TransactionOutput -> Effect TransactionUnspentOutput - -foreign import newMultiAsset :: Effect MultiAsset -foreign import insertMultiAsset - :: MultiAsset -> ScriptHash -> Assets -> Effect Unit - -foreign import newAssets :: Effect Assets -foreign import insertAssets :: Assets -> AssetName -> BigNum -> Effect Unit -foreign import newAssetName :: ByteArray -> Effect AssetName -foreign import transactionOutputSetDataHash - :: TransactionOutput -> DataHash -> Effect Unit - -foreign import transactionOutputSetPlutusData - :: TransactionOutput -> PlutusData -> Effect Unit - -foreign import transactionOutputSetScriptRef - :: TransactionOutput -> ScriptRef -> Effect Unit - -foreign import scriptRefNewNativeScript - :: NativeScript -> ScriptRef - -foreign import scriptRefNewPlutusScript - :: PlutusScript -> ScriptRef - -foreign import newVkeywitnesses :: Effect Vkeywitnesses -foreign import makeVkeywitness - :: TransactionHash -> PrivateKey -> Effect Vkeywitness - -foreign import newVkeywitness :: Vkey -> Ed25519Signature -> Effect Vkeywitness -foreign import addVkeywitness :: Vkeywitnesses -> Vkeywitness -> Effect Unit -foreign import newVkeyFromPublicKey :: PublicKey -> Effect Vkey - -foreign import publicKeyHash :: PublicKey -> Ed25519KeyHash - -foreign import transactionWitnessSetSetVkeys - :: TransactionWitnessSet -> Vkeywitnesses -> Effect Unit - -foreign import defaultCostmdls :: Effect Costmdls -foreign import newCostmdls :: Effect Costmdls -foreign import costmdlsSetCostModel - :: Costmdls -> Language -> CostModel -> Effect Unit - -foreign import newCostModel :: Effect CostModel -foreign import costModelSetCost :: CostModel -> Int -> Csl.Int -> Effect Unit -foreign import newPlutusV1 :: Effect Language -foreign import newPlutusV2 :: Effect Language - -foreign import _hashScriptData - :: Redeemers -> Costmdls -> Array PlutusData -> Effect ScriptDataHash - -foreign import _hashScriptDataNoDatums - :: Redeemers -> Costmdls -> Effect ScriptDataHash - -foreign import newRedeemers :: Effect Redeemers -foreign import addRedeemer :: Redeemers -> Redeemer -> Effect Unit -foreign import setTxBodyReferenceInputs - :: TransactionBody - -> TransactionInputs - -> Effect Unit - -foreign import setTxBodyScriptDataHash - :: TransactionBody -> ScriptDataHash -> Effect Unit - -foreign import setTxBodyMint :: TransactionBody -> Mint -> Effect Unit -foreign import newMint :: Effect Mint -foreign import newMintAssets :: Effect MintAssets -foreign import _bigIntToInt :: MaybeFfiHelper -> BigInt -> Maybe Int -foreign import insertMintAssets - :: Mint -> ScriptHash -> MintAssets -> Effect Unit - -foreign import insertMintAsset :: MintAssets -> AssetName -> Int -> Effect Unit -foreign import setTxBodyNetworkId :: TransactionBody -> NetworkId -> Effect Unit -foreign import networkIdTestnet :: Effect NetworkId -foreign import networkIdMainnet :: Effect NetworkId - -foreign import setTxBodyCollateralReturn - :: TransactionBody - -> TransactionOutput - -> Effect Unit - -foreign import setTxBodyTotalCollateral - :: TransactionBody - -> BigNum - -> Effect Unit - -foreign import setTxBodyTtl :: TransactionBody -> BigNum -> Effect Unit - -foreign import setTxBodyCerts :: TransactionBody -> Certificates -> Effect Unit -foreign import newCertificates :: Effect Certificates -foreign import newStakeRegistrationCertificate - :: StakeCredential -> Effect Certificate - -foreign import newStakeDeregistrationCertificate - :: StakeCredential -> Effect Certificate - -foreign import newStakeDelegationCertificate - :: StakeCredential -> Ed25519KeyHash -> Effect Certificate - -foreign import newPoolRegistrationCertificate - :: Ed25519KeyHash - -> VRFKeyHash - -> BigNum - -> BigNum - -> UnitInterval - -> RewardAddress - -> Ed25519KeyHashes - -> Relays - -> UndefinedOr PoolMetadata - -> Effect Certificate - -foreign import newPoolRetirementCertificate - :: Ed25519KeyHash -> Int -> Effect Certificate - -foreign import newGenesisKeyDelegationCertificate - :: GenesisHash -> GenesisDelegateHash -> VRFKeyHash -> Effect Certificate - -foreign import addCert :: Certificates -> Certificate -> Effect Unit -foreign import newUnitInterval :: BigNum -> BigNum -> Effect UnitInterval -foreign import convertPoolOwners - :: ContainerHelper -> Array Ed25519KeyHash -> Effect Ed25519KeyHashes - -foreign import packRelays :: ContainerHelper -> Array Relay -> Relays -foreign import newIpv4 :: ByteArray -> Effect Ipv4 -foreign import newIpv6 :: ByteArray -> Effect Ipv6 -foreign import newSingleHostAddr - :: UndefinedOr Int -> UndefinedOr Ipv4 -> UndefinedOr Ipv6 -> Effect Relay - -foreign import newSingleHostName :: UndefinedOr Int -> String -> Effect Relay -foreign import newMultiHostName :: String -> Effect Relay -foreign import newPoolMetadata - :: String -> PoolMetadataHash -> Effect PoolMetadata - -foreign import newMoveInstantaneousRewardToOtherPot - :: Number -> BigNum -> Effect MoveInstantaneousReward - -foreign import newMoveInstantaneousRewardToStakeCreds - :: Number -> MIRToStakeCredentials -> Effect MoveInstantaneousReward - -foreign import newMIRToStakeCredentials - :: ContainerHelper - -> Array (StakeCredential /\ Csl.Int) - -> Effect MIRToStakeCredentials - -foreign import newMoveInstantaneousRewardsCertificate - :: MoveInstantaneousReward -> Effect Certificate - -foreign import setTxBodyCollateral - :: TransactionBody -> TransactionInputs -> Effect Unit - -foreign import transactionBodySetRequiredSigners - :: ContainerHelper -> TransactionBody -> Array Ed25519KeyHash -> Effect Unit - -foreign import transactionBodySetValidityStartInterval - :: TransactionBody -> BigNum -> Effect Unit - -foreign import transactionBodySetAuxiliaryDataHash - :: TransactionBody -> AuxiliaryDataHash -> Effect Unit - -foreign import newWithdrawals - :: ContainerHelper - -> Array (RewardAddress /\ BigNum) - -> Effect Withdrawals - -foreign import setTxBodyWithdrawals - :: TransactionBody -> Withdrawals -> Effect Unit - -foreign import setTxBodyUpdate - :: TransactionBody -> Update -> Effect Unit - -foreign import newUpdate - :: ProposedProtocolParameterUpdates -> Int -> Effect Update - -foreign import newProtocolParamUpdate :: Effect ProtocolParamUpdate - -foreign import ppuSetMinfeeA :: ProtocolParamUpdate -> BigNum -> Effect Unit - -foreign import ppuSetMinfeeB :: ProtocolParamUpdate -> BigNum -> Effect Unit - -foreign import ppuSetMaxBlockBodySize - :: ProtocolParamUpdate -> Int -> Effect Unit - -foreign import ppuSetMaxTxSize :: ProtocolParamUpdate -> Int -> Effect Unit - -foreign import ppuSetMaxBlockHeaderSize - :: ProtocolParamUpdate -> Int -> Effect Unit - -foreign import ppuSetKeyDeposit - :: ProtocolParamUpdate -> BigNum -> Effect Unit - -foreign import ppuSetPoolDeposit - :: ProtocolParamUpdate -> BigNum -> Effect Unit - -foreign import ppuSetMaxEpoch :: ProtocolParamUpdate -> Int -> Effect Unit - -foreign import ppuSetNOpt :: ProtocolParamUpdate -> Int -> Effect Unit - -foreign import ppuSetPoolPledgeInfluence - :: ProtocolParamUpdate -> UnitInterval -> Effect Unit - -foreign import ppuSetExpansionRate - :: ProtocolParamUpdate -> UnitInterval -> Effect Unit - -foreign import ppuSetTreasuryGrowthRate - :: ProtocolParamUpdate -> UnitInterval -> Effect Unit - -foreign import newProtocolVersion :: Int -> Int -> Effect ProtocolVersion - -foreign import ppuSetProtocolVersion - :: ProtocolParamUpdate - -> ProtocolVersion - -> Effect Unit - -foreign import ppuSetMinPoolCost - :: ProtocolParamUpdate - -> BigNum - -> Effect Unit - -foreign import ppuSetAdaPerUtxoByte - :: ProtocolParamUpdate - -> BigNum - -> Effect Unit - -foreign import ppuSetCostModels - :: ProtocolParamUpdate - -> Costmdls - -> Effect Unit - -foreign import newExUnitPrices - :: UnitInterval - -> UnitInterval - -> Effect ExUnitPrices - -foreign import ppuSetExecutionCosts - :: ProtocolParamUpdate - -> ExUnitPrices - -> Effect Unit - -foreign import ppuSetMaxTxExUnits - :: ProtocolParamUpdate - -> ExUnits - -> Effect Unit - -foreign import ppuSetMaxBlockExUnits - :: ProtocolParamUpdate - -> ExUnits - -> Effect Unit - -foreign import ppuSetMaxValueSize - :: ProtocolParamUpdate - -> Int - -> Effect Unit - -foreign import ppuSetCollateralPercentage - :: ProtocolParamUpdate - -> Int - -> Effect Unit - -foreign import ppuSetMaxCollateralInputs - :: ProtocolParamUpdate - -> Int - -> Effect Unit - -foreign import newProposedProtocolParameterUpdates - :: ContainerHelper - -> Array (GenesisHash /\ ProtocolParamUpdate) - -> Effect ProposedProtocolParameterUpdates - -foreign import setTxIsValid :: Transaction -> Boolean -> Effect Unit - -convertTxBody :: T.TxBody -> Effect TransactionBody -convertTxBody (T.TxBody body) = do - -- let inputs = convertTxInputs $ Array.fromFoldable body.inputs - -- outputs <- convertTxOutputs body.outputs - -- fee <- fromJustEff "Failed to convert fee" $ BigNum.fromBigInt - -- (unwrap body.fee) - -- txBody <- newTransactionBody inputs outputs fee - -- for_ body.ttl $ unwrap >>> setTxBodyTtl txBody - -- for_ body.certs $ convertCerts >=> setTxBodyCerts txBody - -- for_ body.withdrawals $ convertWithdrawals >=> setTxBodyWithdrawals txBody - -- for_ body.update $ convertUpdate >=> setTxBodyUpdate txBody - -- for_ body.auxiliaryDataHash $ - -- unwrap >>> fromBytes >>> fromJustEff - -- "Failed to convert auxiliary data hash" - -- >=> transactionBodySetAuxiliaryDataHash txBody - -- for_ body.validityStartInterval - -- $ unwrap - -- >>> BigNum.toString - -- >>> BigNum.fromStringUnsafe - -- >>> - -- transactionBodySetValidityStartInterval txBody - -- for_ body.requiredSigners - -- $ map unwrap - -- >>> transactionBodySetRequiredSigners containerHelper txBody - -- for_ body.networkId $ convertNetworkId >=> setTxBodyNetworkId txBody - -- for_ body.mint $ convertMint >=> setTxBodyMint txBody - -- for_ body.scriptDataHash $ - -- unwrap >>> fromBytes >>> fromJustEff - -- "Failed to convert script data hash" - -- >=> setTxBodyScriptDataHash txBody - -- for_ body.collateral $ convertTxInputs >>> setTxBodyCollateral txBody - -- for_ body.requiredSigners - -- $ map unwrap - -- >>> transactionBodySetRequiredSigners containerHelper txBody - -- for_ body.networkId $ convertNetworkId >=> setTxBodyNetworkId txBody - -- for_ body.collateralReturn $ convertTxOutput >=> setTxBodyCollateralReturn - -- txBody - -- for_ body.totalCollateral - -- $ - -- unwrap - -- >>> BigNum.fromBigInt - -- >>> fromJustEff "Failed to convert fee" - -- >=> - -- setTxBodyTotalCollateral txBody - -- if Foldable.null body.referenceInputs then pure unit - -- else convertTxInputs (Array.fromFoldable body.referenceInputs) # - -- setTxBodyReferenceInputs txBody - -- pure txBody - notImplemented - -convertTransaction :: T.Transaction -> Effect Transaction -convertTransaction - ( T.Transaction - { body, witnessSet, isValid, auxiliaryData } - ) = - do - txBody <- convertTxBody body - ws <- convertWitnessSet witnessSet - mbAuxiliaryData <- for auxiliaryData notImplemented - tx <- case mbAuxiliaryData of - Nothing -> newTransaction_ txBody ws - Just ad -> newTransaction txBody ws ad - setTxIsValid tx isValid - pure tx - -convertUpdate :: T.Update -> Effect Update -convertUpdate { proposedProtocolParameterUpdates, epoch } = do - ppUpdates <- convertProposedProtocolParameterUpdates - proposedProtocolParameterUpdates - newUpdate ppUpdates $ UInt.toInt $ unwrap epoch - -convertProposedProtocolParameterUpdates - :: T.ProposedProtocolParameterUpdates - -> Effect ProposedProtocolParameterUpdates -convertProposedProtocolParameterUpdates ppus = - newProposedProtocolParameterUpdates containerHelper =<< - for (Map.toUnfoldable $ unwrap ppus) \(genesisHash /\ ppu) -> do - Tuple - <$> - ( fromJustEff "Failed to convert genesis hash" $ fromBytes - $ unwrap genesisHash - ) - <*> - convertProtocolParamUpdate ppu - -convertProtocolParamUpdate - :: T.ProtocolParamUpdate -> Effect ProtocolParamUpdate -convertProtocolParamUpdate - { minfeeA - , minfeeB - , maxBlockBodySize - , maxTxSize - , maxBlockHeaderSize - , keyDeposit - , poolDeposit - , maxEpoch - , nOpt - , poolPledgeInfluence - , expansionRate - , treasuryGrowthRate - , protocolVersion - , minPoolCost - , adaPerUtxoByte - , costModels - , executionCosts - , maxTxExUnits - , maxBlockExUnits - , maxValueSize - , collateralPercentage - , maxCollateralInputs - } = do - -- ppu <- newProtocolParamUpdate - -- for_ minfeeA $ ppuSetMinfeeA ppu - -- <=< fromJustEff "convertProtocolParamUpdate: min_fee_a must not be negative" - -- <<< BigNum.fromBigInt - -- <<< unwrap - -- for_ minfeeB $ ppuSetMinfeeB ppu - -- <=< fromJustEff "convertProtocolParamUpdate: min_fee_b must not be negative" - -- <<< BigNum.fromBigInt - -- <<< unwrap - -- for_ maxBlockBodySize $ ppuSetMaxBlockBodySize ppu <<< UInt.toInt - -- for_ maxTxSize $ ppuSetMaxTxSize ppu <<< UInt.toInt - -- for_ maxBlockHeaderSize $ ppuSetMaxBlockHeaderSize ppu <<< UInt.toInt - -- for_ keyDeposit $ ppuSetKeyDeposit ppu - -- <=< - -- fromJustEff - -- "convertProtocolParamUpdate: key_deposit must not be negative" - -- <<< BigNum.fromBigInt - -- <<< unwrap - -- for_ poolDeposit $ ppuSetPoolDeposit ppu - -- <=< - -- fromJustEff - -- "convertProtocolParamUpdate: pool_deposit must not be negative" - -- <<< BigNum.fromBigInt - -- <<< unwrap - -- for_ maxEpoch $ ppuSetMaxEpoch ppu <<< UInt.toInt <<< unwrap - -- for_ nOpt $ ppuSetNOpt ppu <<< UInt.toInt - -- for_ poolPledgeInfluence - -- $ mkUnitInterval - -- >=> ppuSetPoolPledgeInfluence ppu - -- for_ expansionRate - -- $ mkUnitInterval - -- >=> ppuSetExpansionRate ppu - -- for_ treasuryGrowthRate - -- $ mkUnitInterval - -- >=> ppuSetTreasuryGrowthRate ppu - -- for_ protocolVersion \pv -> - -- ppuSetProtocolVersion ppu =<< - -- newProtocolVersion (UInt.toInt pv.major) - -- (UInt.toInt pv.minor) - -- for_ minPoolCost $ ppuSetMinPoolCost ppu - -- for_ adaPerUtxoByte $ ppuSetAdaPerUtxoByte ppu - -- for_ costModels $ convertCostmdls >=> ppuSetCostModels ppu - -- for_ executionCosts $ convertExUnitPrices >=> ppuSetExecutionCosts ppu - -- for_ maxTxExUnits $ convertExUnits >=> ppuSetMaxTxExUnits ppu - -- for_ maxBlockExUnits $ convertExUnits >=> ppuSetMaxBlockExUnits ppu - -- for_ maxValueSize $ UInt.toInt >>> ppuSetMaxValueSize ppu - -- for_ collateralPercentage $ UInt.toInt >>> ppuSetCollateralPercentage ppu - -- for_ maxCollateralInputs $ UInt.toInt >>> ppuSetMaxCollateralInputs ppu - -- pure ppu - notImplemented - -mkUnitInterval - :: T.UnitInterval -> Effect UnitInterval -mkUnitInterval x = newUnitInterval x.numerator x.denominator - -convertExUnitPrices - :: T.ExUnitPrices - -> Effect ExUnitPrices -convertExUnitPrices { memPrice, stepPrice } = - join $ newExUnitPrices <$> mkUnitInterval memPrice <*> mkUnitInterval - stepPrice - -convertWithdrawals :: Map.Map T.RewardAddress Value.Coin -> Effect Withdrawals -convertWithdrawals mp = notImplemented - --- newWithdrawals containerHelper =<< do --- for (Map.toUnfoldable mp) \(k /\ Value.Coin v) -> do --- Tuple (T.unRewardAddress k) <$> fromJustEff --- "convertWithdrawals: Failed to convert BigNum" --- (BigNum.fromBigInt v) - -convertCerts :: Array T.Certificate -> Effect Certificates -convertCerts certs = do - certificates <- newCertificates - for_ certs $ convertCert >=> addCert certificates - pure certificates - -convertCert :: T.Certificate -> Effect Certificate -convertCert = - -- T.StakeRegistration stakeCredential -> - -- newStakeRegistrationCertificate stakeCredential - -- T.StakeDeregistration stakeCredential -> - -- newStakeDeregistrationCertificate stakeCredential - -- T.StakeDelegation stakeCredential keyHash -> - -- newStakeDelegationCertificate stakeCredential (unwrap $ unwrap keyHash) - -- T.PoolRegistration - -- { operator - -- , vrfKeyhash - -- , pledge - -- , cost - -- , margin - -- , rewardAccount - -- , poolOwners - -- , relays - -- , poolMetadata - -- } -> do - -- margin' <- newUnitInterval margin.numerator margin.denominator - -- poolOwners' <- convertPoolOwners containerHelper - -- (unwrap <<< unwrap <$> poolOwners) - -- relays' <- convertRelays relays - -- poolMetadata' <- for poolMetadata convertPoolMetadata - -- newPoolRegistrationCertificate (unwrap $ unwrap operator) - -- (unwrap vrfKeyhash) - -- pledge - -- cost - -- margin' - -- (T.unRewardAddress rewardAccount) - -- poolOwners' - -- relays' - -- (maybeToUor poolMetadata') - -- T.PoolRetirement { poolKeyHash, epoch } -> - -- newPoolRetirementCertificate (unwrap $ unwrap poolKeyHash) - -- (UInt.toInt $ unwrap epoch) - -- T.GenesisKeyDelegation - -- { genesisHash: T.GenesisHash genesisHash - -- , genesisDelegateHash: T.GenesisDelegateHash genesisDelegateHash - -- , vrfKeyhash: T.VRFKeyHash vrfKeyhash - -- } -> do - -- join $ newGenesisKeyDelegationCertificate - -- <$> - -- ( fromJustEff "Failed to convert genesis hash" - -- $ fromBytes genesisHash - -- ) - -- <*> - -- ( fromJustEff "Failed to convert genesis delegate hash" - -- $ fromBytes genesisDelegateHash - -- ) - -- <*> - -- pure vrfKeyhash - -- T.MoveInstantaneousRewardsCert mir -> do - -- newMoveInstantaneousRewardsCertificate =<< - -- convertMoveInstantaneousReward mir - notImplemented - -convertMIRToStakeCredentials - :: T.MIRToStakeCredentials -> Effect MIRToStakeCredentials -convertMIRToStakeCredentials (T.MIRToStakeCredentials mp) = - notImplemented -- newMIRToStakeCredentials containerHelper (Map.toUnfoldable mp) - -convertMoveInstantaneousReward - :: T.MoveInstantaneousReward -> Effect MoveInstantaneousReward -convertMoveInstantaneousReward (T.ToOtherPot { pot, amount }) = - newMoveInstantaneousRewardToOtherPot pot amount -convertMoveInstantaneousReward (T.ToStakeCreds { pot, amounts }) = - convertMIRToStakeCredentials amounts >>= - newMoveInstantaneousRewardToStakeCreds pot - -convertPoolMetadata :: T.PoolMetadata -> Effect PoolMetadata -convertPoolMetadata - (T.PoolMetadata { url: T.URL url, hash: T.PoolMetadataHash hash }) = - ( fromJustEff "Failed to convert script data hash" <<< fromBytes - >=> newPoolMetadata url - ) hash - -convertRelays :: Array T.Relay -> Effect Relays -convertRelays relays = do - packRelays containerHelper <$> for relays \relay -> case relay of - T.SingleHostAddr { port, ipv4, ipv6 } -> do - ipv4' <- maybeToUor <$> for (unwrap <$> ipv4) newIpv4 - ipv6' <- maybeToUor <$> for (unwrap <$> ipv6) newIpv6 - newSingleHostAddr (maybeToUor port) ipv4' ipv6' - T.SingleHostName { port, dnsName } -> - newSingleHostName (maybeToUor port) dnsName - T.MultiHostName { dnsName } -> - newMultiHostName dnsName - -convertNetworkId :: T.NetworkId -> Effect NetworkId -convertNetworkId = -- case _ of - -- T.TestnetId -> networkIdTestnet - -- T.MainnetId -> networkIdMainnet - notImplemented - -convertMint :: T.Mint -> Effect Mint -convertMint (T.Mint nonAdaAssets) = do - -- mint <- newMint - -- let assetsMap = Value.unwrapMultiAsset nonAdaAssets - -- forWithIndex_ assetsMap \scriptHashBytes' values -> do - -- let - -- mScripthash = scriptHashFromBytes $ Value.getCurrencySymbol - -- scriptHashBytes' - -- scripthash <- fromJustEff - -- "scriptHashFromBytes failed while converting value" - -- mScripthash - -- assets <- newMintAssets - -- forWithIndex_ values \tokenName' bigIntValue -> do - -- let tokenName = AssetName.getAssetName tokenName' - -- assetName <- newAssetName tokenName - -- let bigInt = Serialization.convertBigInt bigIntValue - -- int <- fromJustEff "convertMint: numeric overflow or underflow" $ - -- _bigIntToInt maybeFfiHelper bigInt - -- insertMintAsset assets assetName int - -- insertMintAssets mint scripthash assets - -- pure mint - notImplemented - -convertTxInputs - :: Array T.TransactionInput - -> TransactionInputs -convertTxInputs inputs = do - packListContainer $ convertTxInput <$> inputs - -convertTxInput :: T.TransactionInput -> TransactionInput -convertTxInput (T.TransactionInput { transactionId, index }) = do - transactionInput_new (unwrap transactionId) (UInt.toNumber index) - -convertTxOutputs :: Array T.TransactionOutput -> Effect TransactionOutputs -convertTxOutputs arrOutputs = do - outputs <- newTransactionOutputs - traverse_ (convertTxOutput >=> addTransactionOutput outputs) arrOutputs - pure outputs - -convertTxOutput :: T.TransactionOutput -> Effect TransactionOutput -convertTxOutput - (T.TransactionOutput { address, amount, datum, scriptRef }) = do - -- value <- convertValue amount - -- txo <- newTransactionOutput address value - -- case datum of - -- NoOutputDatum -> pure unit - -- OutputDatumHash dataHash -> do - -- for_ (fromBytes $ unwrap dataHash) $ - -- transactionOutputSetDataHash txo - -- OutputDatum datumValue -> do - -- transactionOutputSetPlutusData txo - -- $ convertPlutusData - -- $ unwrap datumValue - -- for_ scriptRef $ - -- convertScriptRef >>> transactionOutputSetScriptRef txo - -- pure txo - notImplemented - -convertScriptRef :: T.ScriptRef -> ScriptRef -convertScriptRef = notImplemented -- (T.NativeScriptRef nativeScript) = - --- scriptRefNewNativeScript $ convertNativeScript nativeScript --- convertScriptRef (T.PlutusScriptRef plutusScript) = --- scriptRefNewPlutusScript $ convertPlutusScript plutusScript - -convertValue :: Value.Value -> Effect Value -convertValue val = do - -- let - -- lovelace = Value.valueToCoin' val - -- m = Value.getMultiAsset' val - -- multiasset <- newMultiAsset - -- forWithIndex_ m \scriptHashBytes' values -> do - -- let - -- mScripthash = scriptHashFromBytes $ Value.getCurrencySymbol - -- scriptHashBytes' - -- scripthash <- fromJustEff - -- "scriptHashFromBytes failed while converting value" - -- mScripthash - -- assets <- newAssets - -- forWithIndex_ values \tokenName' bigIntValue -> do - -- let tokenName = AssetName.getAssetName tokenName' - -- assetName <- newAssetName tokenName - -- value <- fromJustEff "convertValue: number must not be negative" $ - -- BigNum.fromBigInt bigIntValue - -- insertAssets assets assetName value - -- insertMultiAsset multiasset scripthash assets - -- value <- newValueFromAssets multiasset - -- valueSetCoin value =<< fromJustEff - -- "convertValue: coin value must not be negative" - -- (BigNum.fromBigInt lovelace) - -- pure value - notImplemented - -convertCostmdls :: T.Costmdls -> Effect Costmdls -convertCostmdls (T.Costmdls cs) = do - -- costmdls <- newCostmdls - -- forWithIndex_ cs \language costModel -> do - -- language' <- case language of - -- S.PlutusV1 -> newPlutusV1 - -- S.PlutusV2 -> newPlutusV2 - -- costModel' <- convertCostModel costModel - -- costmdlsSetCostModel costmdls language' costModel' - -- pure costmdls - notImplemented - -convertCostModel :: T.CostModel -> Effect CostModel -convertCostModel (T.CostModel costs) = do - -- costModel <- newCostModel - -- forWithIndex_ costs $ \operation cost -> - -- costModelSetCost costModel operation cost - -- pure costModel - notImplemented - -convertTransactionUnspentOutput - :: T.TransactionUnspentOutput -> Effect TransactionUnspentOutput -convertTransactionUnspentOutput (T.TransactionUnspentOutput { input, output }) = - do - let input' = convertTxInput input - output' <- convertTxOutput output - newTransactionUnspentOutput input' output' - -hashScriptData - :: T.Costmdls - -> Array T.Redeemer - -> Array PlutusData.PlutusData - -> Effect ScriptDataHash -hashScriptData cms rs ps = do - -- rs' <- newRedeemers - -- cms' <- convertCostmdls cms - -- traverse_ (addRedeemer rs' <=< convertRedeemer) rs - -- -- If an empty `PlutusData` array is passed to CSL's script integrity hashing - -- -- function, the resulting hash will be wrong - -- case ps of - -- [] -> _hashScriptDataNoDatums rs' cms' - -- _ -> _hashScriptData rs' cms' $ map convertPlutusData ps - notImplemented - -serializeData :: forall (a :: Type). ToData a => a -> CborBytes -serializeData = -- wrap <<< toBytes <<< convertPlutusData <<< toData - notImplemented diff --git a/src/Internal/Serialization/AuxiliaryData.purs b/src/Internal/Serialization/AuxiliaryData.purs deleted file mode 100644 index 573613910..000000000 --- a/src/Internal/Serialization/AuxiliaryData.purs +++ /dev/null @@ -1,123 +0,0 @@ -module Ctl.Internal.Serialization.AuxiliaryData - ( convertAuxiliaryData - , hashAuxiliaryData - ) where - -import Prelude - -import Cardano.Serialization.Lib (toBytes) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum (fromBigInt) as BigNum -import Ctl.Internal.Cardano.Types.Transaction - ( AuxiliaryData(AuxiliaryData) - , AuxiliaryDataHash - ) as T -import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) -import Ctl.Internal.Helpers (fromJustEff, notImplemented) -import Ctl.Internal.Serialization.Types - ( AuxiliaryData - , AuxiliaryDataHash - , GeneralTransactionMetadata - , NativeScripts - , PlutusScripts - , TransactionMetadatum - ) -import Ctl.Internal.Types.Int as Int -import Ctl.Internal.Types.TransactionMetadata - ( GeneralTransactionMetadata(GeneralTransactionMetadata) - , TransactionMetadatum(Text, Bytes, Int, MetadataList, MetadataMap) - , TransactionMetadatumLabel(TransactionMetadatumLabel) - ) as T -import Data.ByteArray (ByteArray) -import Data.Map as Map -import Data.Newtype (wrap) -import Data.Traversable (for, for_, traverse) -import Data.Tuple (Tuple(Tuple)) -import Data.Tuple.Nested (type (/\), (/\)) -import Effect (Effect) - -foreign import newAuxiliaryData :: Effect AuxiliaryData - -foreign import setAuxiliaryDataNativeScripts - :: AuxiliaryData -> NativeScripts -> Effect Unit - -foreign import setAuxiliaryDataPlutusScripts - :: AuxiliaryData -> PlutusScripts -> Effect Unit - -foreign import setAuxiliaryDataGeneralTransactionMetadata - :: AuxiliaryData -> GeneralTransactionMetadata -> Effect Unit - -foreign import newGeneralTransactionMetadata - :: ContainerHelper - -> Array (BigNum /\ TransactionMetadatum) - -> Effect GeneralTransactionMetadata - -foreign import newMetadataMap - :: ContainerHelper - -> Array (TransactionMetadatum /\ TransactionMetadatum) - -> Effect TransactionMetadatum - -foreign import newMetadataList - :: ContainerHelper - -> Array TransactionMetadatum - -> Effect TransactionMetadatum - -foreign import newMetadataInt - :: Int.Int -> Effect TransactionMetadatum - -foreign import newMetadataBytes - :: ByteArray -> Effect TransactionMetadatum - -foreign import newMetadataText - :: String -> Effect TransactionMetadatum - -foreign import _hashAuxiliaryData - :: AuxiliaryData -> AuxiliaryDataHash - -hashAuxiliaryData :: T.AuxiliaryData -> Effect T.AuxiliaryDataHash -hashAuxiliaryData = - map (wrap <<< toBytes <<< _hashAuxiliaryData) <<< - convertAuxiliaryData - -convertAuxiliaryData :: T.AuxiliaryData -> Effect AuxiliaryData -convertAuxiliaryData - (T.AuxiliaryData { metadata, nativeScripts, plutusScripts }) = do - notImplemented - --- ad <- newAuxiliaryData --- for_ metadata $ --- convertGeneralTransactionMetadata >=> --- setAuxiliaryDataGeneralTransactionMetadata ad --- for_ nativeScripts $ --- convertNativeScripts >>> setAuxiliaryDataNativeScripts ad --- for_ plutusScripts \ps -> do --- scripts <- newPlutusScripts --- for_ ps (convertPlutusScript >>> addPlutusScript scripts) --- setAuxiliaryDataPlutusScripts ad scripts --- pure ad - -convertGeneralTransactionMetadata - :: T.GeneralTransactionMetadata -> Effect GeneralTransactionMetadata -convertGeneralTransactionMetadata (T.GeneralTransactionMetadata mp) = do - newGeneralTransactionMetadata containerHelper =<< - for (Map.toUnfoldable mp) - \(T.TransactionMetadatumLabel l /\ d) -> do - label <- - fromJustEff - "convertGeneralTransactionMetadata: failing to convert MetadataumLabel" - (BigNum.fromBigInt l) - datum <- convertTransactionMetadatum d - pure $ label /\ datum - -convertTransactionMetadatum - :: T.TransactionMetadatum -> Effect TransactionMetadatum -convertTransactionMetadatum = case _ of - T.MetadataMap mp -> - newMetadataMap containerHelper =<< for (Map.toUnfoldable mp) \(k /\ v) -> do - Tuple <$> convertTransactionMetadatum k <*> convertTransactionMetadatum v - T.MetadataList l -> - newMetadataList containerHelper =<< - traverse convertTransactionMetadatum l - T.Int int -> newMetadataInt int - T.Bytes bytes -> newMetadataBytes bytes - T.Text text -> newMetadataText text diff --git a/src/Internal/Serialization/MinFee.js b/src/Internal/Serialization/MinFee.js deleted file mode 100644 index 195564dc7..000000000 --- a/src/Internal/Serialization/MinFee.js +++ /dev/null @@ -1,16 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function _minFee(maybe) { - return tx => txFeeFixed => txFeePerByte => { - try { - const linearFee = lib.LinearFee.new(txFeePerByte, txFeeFixed); - return maybe.just(lib.min_fee(tx, linearFee)); - } catch (_) { - return maybe.nothing; - } - }; -} - -export function _minScriptFee(exUnitPrices) { - return tx => lib.min_script_fee(tx, exUnitPrices); -} diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index f16f98068..a8dafe45b 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -3,36 +3,34 @@ module Ctl.Internal.Serialization.MinFee (calculateMinFeeCsl) where import Prelude -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum as BigNum -import Contract.Keys (publicKeyFromBech32) -import Control.Monad.Error.Class (class MonadThrow, liftMaybe) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAll)) -import Ctl.Internal.Cardano.Types.Transaction - ( Transaction +import Cardano.Serialization.Lib (linearFee_new, minFee, minScriptFee) +import Cardano.Types + ( Coin + , Ed25519KeyHash + , Transaction , Vkey(Vkey) , Vkeywitness(Vkeywitness) - , mkEd25519Signature - ) as T -import Ctl.Internal.Cardano.Types.Transaction (_vkeys, _witnessSet) -import Ctl.Internal.Cardano.Types.Value (Coin) -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) + ) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Ed25519Signature as Ed25519Signature +import Cardano.Types.ExUnitPrices as ExUnitPrices +import Cardano.Types.NativeScript (NativeScript(ScriptAll)) +import Cardano.Types.PublicKey as PublicKey +import Cardano.Types.Transaction as Transaction +import Control.Monad.Error.Class (class MonadThrow) +import Ctl.Internal.Lens (_vkeys, _witnessSet) import Ctl.Internal.NativeScripts (getMaximumSigners) -import Ctl.Internal.Serialization as Serialization -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) -import Ctl.Internal.Serialization.Types (ExUnitPrices, Transaction) import Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) ) import Data.Array as Array import Data.Lens ((.~)) -import Data.Maybe (Maybe(Just), fromJust, fromMaybe) +import Data.Maybe (fromJust) import Data.Newtype (unwrap, wrap) import Data.Set (Set) import Data.Set as Set -import Data.Tuple.Nested ((/\)) -import Effect.Class (class MonadEffect, liftEffect) -import Effect.Exception (Error, error) +import Effect.Class (class MonadEffect) +import Effect.Exception (Error) import Partial.Unsafe (unsafePartial) calculateMinFeeCsl @@ -41,70 +39,66 @@ calculateMinFeeCsl => MonadThrow Error m => ProtocolParameters -> Set Ed25519KeyHash - -> T.Transaction + -> Transaction -> m Coin calculateMinFeeCsl (ProtocolParameters pparams) selfSigners txNoSigs = do let tx = addFakeSignatures selfSigners txNoSigs - cslTx <- liftEffect $ Serialization.convertTransaction tx - minFee <- liftMaybe (error "Unable to calculate min_fee") $ - BigNum.toBigInt <$> _minFee maybeFfiHelper cslTx - (BigNum.fromUInt pparams.txFeeFixed) - (BigNum.fromUInt pparams.txFeePerByte) + let cslTx = Transaction.toCsl tx + let + cslLinearFee = linearFee_new + (unwrap $ BigNum.fromUInt pparams.txFeeFixed) + (unwrap $ BigNum.fromUInt pparams.txFeePerByte) + + let fee = minFee cslTx cslLinearFee let exUnitPrices = pparams.prices - exUnitPricesCsl <- liftEffect $ Serialization.convertExUnitPrices exUnitPrices - let minScriptFee = BigNum.toBigInt (_minScriptFee exUnitPricesCsl cslTx) - pure $ wrap $ minFee + minScriptFee + let exUnitPricesCsl = ExUnitPrices.toCsl exUnitPrices + let scriptFee = minScriptFee cslTx exUnitPricesCsl + -- Ignore the overflow here: fees are much lower + pure $ wrap $ unsafePartial $ fromJust $ BigNum.add (wrap fee) + (wrap scriptFee) -- | Adds fake signatures for each expected signature of a transaction. -addFakeSignatures :: Set Ed25519KeyHash -> T.Transaction -> T.Transaction +addFakeSignatures :: Set Ed25519KeyHash -> Transaction -> Transaction addFakeSignatures selfSigners tx = let -- requiredSigners field of a transaction requiredSigners :: Set Ed25519KeyHash requiredSigners = tx # unwrap >>> _.body >>> unwrap >>> _.requiredSigners - >>> fromMaybe mempty - >>> map unwrap >>> Set.fromFoldable -- All possible signers from NativeScript. nsPossibleSigners :: Int nsPossibleSigners = getMaximumSigners requiredSigners $ ScriptAll - ( tx # unwrap >>> _.witnessSet >>> unwrap >>> _.nativeScripts >>> - fromMaybe mempty + ( tx # unwrap >>> _.witnessSet >>> unwrap >>> _.nativeScripts ) -- We want to add space for required signatures (at least one, if -- none specified). nRequiredSigners = tx # unwrap >>> _.body >>> unwrap >>> _.requiredSigners - >>> map (map unwrap >>> Array.length) - >>> fromMaybe 0 + >>> Array.length nSelfSigners = let n = Set.size selfSigners in if n == 0 then 1 else n in - tx # _witnessSet <<< _vkeys .~ Just + tx # _witnessSet <<< _vkeys .~ ( Array.replicate (nRequiredSigners + nsPossibleSigners + nSelfSigners) fakeVkeywitness ) -fakeVkeywitness :: T.Vkeywitness -fakeVkeywitness = T.Vkeywitness - ( ( T.Vkey - ( unsafePartial $ fromJust $ publicKeyFromBech32 - -- This should not fail assuming the hardcoded bech32 key is valid. - "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" - ) - ) - /\ - ( unsafePartial $ fromJust $ mkEd25519Signature - "ed25519_sig1mr6pm5kanam2wkmae70jx7fjkzepghefj0lmnczu6fra\ - \6auf2urgrte5axxhunw4x34l3l8tj9c0t4le39tj8lpjdgxmqnujw07t\ - \kzs9m6t6x" - ) - ) - -foreign import _minFee - :: MaybeFfiHelper -> Transaction -> BigNum -> BigNum -> Maybe BigNum - -foreign import _minScriptFee :: ExUnitPrices -> Transaction -> BigNum +fakeVkeywitness :: Vkeywitness +fakeVkeywitness = Vkeywitness + { vkey: + ( Vkey + ( unsafePartial $ fromJust $ PublicKey.fromBech32 + -- This should not fail assuming the hardcoded bech32 key is valid. + "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" + ) + ) + , signature: + ( unsafePartial $ fromJust $ Ed25519Signature.fromBech32 + "ed25519_sig1mr6pm5kanam2wkmae70jx7fjkzepghefj0lmnczu6fra\ + \6auf2urgrte5axxhunw4x34l3l8tj9c0t4le39tj8lpjdgxmqnujw07t\ + \kzs9m6t6x" + ) + } diff --git a/src/Internal/Serialization/PlutusData.js b/src/Internal/Serialization/PlutusData.js deleted file mode 100644 index ff29181d8..000000000 --- a/src/Internal/Serialization/PlutusData.js +++ /dev/null @@ -1,49 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function _mkPlutusData_bytes(bytes) { - return lib.PlutusData.new_bytes(bytes); -} - -export function _mkPlutusData_list(list) { - return lib.PlutusData.new_list(list); -} - -export function _mkPlutusData_map(list) { - return lib.PlutusData.new_map(list); -} - -export function _mkPlutusData_integer(int) { - return lib.PlutusData.new_integer(int); -} - -export function _mkPlutusData_constr(constr) { - return lib.PlutusData.new_constr_plutus_data(constr); -} - -export function _packPlutusList(containerHelper) { - return elems => containerHelper.pack(lib.PlutusList, elems); -} - -export function _mkConstrPlutusData(n) { - return list => lib.ConstrPlutusData.new(n, list); -} - -export function _bigIntFromString(maybe) { - return str => { - try { - return maybe.just(lib.BigInt.from_str(str)); - } catch (_) { - return maybe.nothing; - } - }; -} - -export function _packMap(first) { - return second => kvs => { - const res = lib.PlutusMap.new(); - for (let kv of kvs) { - res.insert(first(kv), second(kv)); - } - return res; - }; -} diff --git a/src/Internal/Serialization/PlutusData.purs b/src/Internal/Serialization/PlutusData.purs deleted file mode 100644 index 1bf10e6ea..000000000 --- a/src/Internal/Serialization/PlutusData.purs +++ /dev/null @@ -1,87 +0,0 @@ -module Ctl.Internal.Serialization.PlutusData - ( convertPlutusData - , packPlutusList - ) where - -import Prelude - -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.PlutusData as T -import Ctl.Internal.FfiHelpers - ( ContainerHelper - , MaybeFfiHelper - , containerHelper - , maybeFfiHelper - ) -import Ctl.Internal.Serialization.Types - ( BigInt - , ConstrPlutusData - , PlutusData - , PlutusList - , PlutusMap - ) -import Data.ByteArray (ByteArray) -import Data.Maybe (Maybe, fromJust) -import Data.Tuple (Tuple, fst, snd) -import Data.Tuple.Nested (type (/\), (/\)) -import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) - -convertPlutusData :: T.PlutusData -> PlutusData -convertPlutusData x = case x of - T.Constr alt list -> convertConstr alt list - T.Map mp -> convertPlutusMap mp - T.List lst -> convertPlutusList lst - T.Integer n -> convertPlutusInteger n - T.Bytes b -> _mkPlutusData_bytes b - -convertConstr :: BigNum -> Array T.PlutusData -> PlutusData -convertConstr alt list = - _mkPlutusData_constr $ _mkConstrPlutusData - alt - (_packPlutusList containerHelper $ map convertPlutusData list) - -convertPlutusList :: Array T.PlutusData -> PlutusData -convertPlutusList x = - (_mkPlutusData_list <<< (_packPlutusList containerHelper)) $ - (map convertPlutusData x) - -convertPlutusMap :: Array (T.PlutusData /\ T.PlutusData) -> PlutusData -convertPlutusMap mp = - let - entries :: Array (PlutusData /\ PlutusData) - entries = mp <#> \(k /\ v) -> (convertPlutusData k /\ convertPlutusData v) - in - _mkPlutusData_map $ _packMap fst snd entries - -convertPlutusInteger :: BigInt.BigInt -> PlutusData -convertPlutusInteger n = - _mkPlutusData_integer $ convertBigInt n - -convertBigInt :: BigInt.BigInt -> BigInt --- Unsafe is safe here, cuz both BigInt's are dynamic sized, --- so range errors are not a concern, and `BigInt.toString` always --- returns parsable string -convertBigInt n = unsafePartial $ fromJust $ - _bigIntFromString maybeFfiHelper (BigInt.toString n) - -packPlutusList :: Array T.PlutusData -> PlutusList -packPlutusList = (_packPlutusList containerHelper) - <<< map convertPlutusData - -foreign import _mkPlutusData_bytes :: ByteArray -> PlutusData -foreign import _mkPlutusData_list :: PlutusList -> PlutusData -foreign import _mkPlutusData_map :: PlutusMap -> PlutusData -foreign import _mkPlutusData_integer :: BigInt -> PlutusData -foreign import _mkPlutusData_constr :: ConstrPlutusData -> PlutusData - -foreign import _packPlutusList - :: ContainerHelper -> Array PlutusData -> PlutusList - -foreign import _mkConstrPlutusData :: BigNum -> PlutusList -> ConstrPlutusData -foreign import _bigIntFromString :: MaybeFfiHelper -> String -> Maybe BigInt -foreign import _packMap - :: (forall a b. Tuple a b -> a) - -> (forall a b. Tuple a b -> b) - -> Array (PlutusData /\ PlutusData) - -> PlutusMap diff --git a/src/Internal/Serialization/WitnessSet.js b/src/Internal/Serialization/WitnessSet.js deleted file mode 100644 index d916f7a67..000000000 --- a/src/Internal/Serialization/WitnessSet.js +++ /dev/null @@ -1,88 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function newTransactionWitnessSet() { - return lib.TransactionWitnessSet.new(); -} - -export function newPublicKey(bech32) { - return () => lib.PublicKey.from_bech32(bech32); -} - -export function newVkeyFromPublicKey(public_key) { - return () => lib.Vkey.new(public_key); -} - -export function newVkeywitnesses() { - return lib.Vkeywitnesses.new(); -} - -export function newVkeywitness(vkey) { - return signature => () => lib.Vkeywitness.new(vkey, signature); -} - -export function addVkeywitness(witnesses) { - return witness => () => witnesses.add(witness); -} - -export function newPlutusScripts() { - return lib.PlutusScripts.new(); -} - -export function addPlutusScript(scripts) { - return script => () => scripts.add(script); -} - -export function transactionWitnessSetSetVkeys(ws) { - return vkeys => () => ws.set_vkeys(vkeys); -} - -export function txWitnessSetSetPlutusScripts(ws) { - return scripts => () => ws.set_plutus_scripts(scripts); -} - -export function transactionWitnessSetSetNativeScripts(ws) { - return scripts => () => ws.set_native_scripts(scripts); -} - -export function _wsSetBootstraps(helper) { - return ws => bootstraps => () => - ws.set_bootstraps(helper.pack(lib.BootstrapWitnesses, bootstraps)); -} - -export function newBootstrapWitness(vkey) { - return signature => chain_code => attributes => () => { - lib.BootstrapWitness.new(vkey, signature, chain_code, attributes); - }; -} - -export function _wsSetPlutusData(helper) { - return ws => plutus_data => () => - ws.set_plutus_data(helper.pack(lib.PlutusList, plutus_data)); -} - -export function newRedeemer(tag) { - return index => data => ex_units => () => - lib.Redeemer.new(tag, index, data, ex_units); -} - -export function _newRedeemerTag(tag) { - return () => lib.RedeemerTag["new_" + tag](); -} - -export function newExUnits(mem) { - return steps => lib.ExUnits.new(mem, steps); -} - -export function _wsSetRedeemers(helper) { - return ws => redeemers => () => - ws.set_redeemers(helper.pack(lib.Redeemers, redeemers)); -} - -export function _mkRedeemers(helper) { - return redeemers => helper.pack(lib.Redeemers, redeemers); -} - -export function _wsSetPlutusScripts(helper) { - return ws => scripts => () => - ws.set_plutus_scripts(helper.pack(lib.PlutusScripts, scripts)); -} diff --git a/src/Internal/Serialization/WitnessSet.purs b/src/Internal/Serialization/WitnessSet.purs deleted file mode 100644 index ca532f8ed..000000000 --- a/src/Internal/Serialization/WitnessSet.purs +++ /dev/null @@ -1,212 +0,0 @@ -module Ctl.Internal.Serialization.WitnessSet - ( setPlutusData - , setRedeemers - , setPlutusScripts - , convertWitnessSet - , convertRedeemers - , convertRedeemer - , convertRedeemerTag - , convertExUnits - , convertBootstrap - , convertVkeywitnesses - , convertVkeywitness - , convertVkey - , newTransactionWitnessSet - , newPublicKey - , newVkeyFromPublicKey - , newVkeywitnesses - , newVkeywitness - , addVkeywitness - , newPlutusScripts - , addPlutusScript - , transactionWitnessSetSetVkeys - , txWitnessSetSetPlutusScripts - , transactionWitnessSetSetNativeScripts - , _wsSetBootstraps - , newBootstrapWitness - , _wsSetPlutusData - , newRedeemer - , _newRedeemerTag - , newExUnits - , _wsSetRedeemers - , _mkRedeemers - , _wsSetPlutusScripts - ) where - -import Prelude - -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum (fromBigInt) as BigNum -import Cardano.Types.Vkey as T -import Ctl.Internal.Cardano.Types.Transaction - ( BootstrapWitness - , ExUnits - , Redeemer(Redeemer) - , TransactionWitnessSet(TransactionWitnessSet) - , Vkeywitness(Vkeywitness) - ) as T -import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) -import Ctl.Internal.Helpers (notImplemented) -import Ctl.Internal.Serialization.Types - ( BootstrapWitness - , Ed25519Signature - , ExUnits - , NativeScripts - , PlutusScript - , PlutusScripts - , PublicKey - , Redeemer - , RedeemerTag - , Redeemers - , TransactionWitnessSet - , Vkey - , Vkeywitness - , Vkeywitnesses - ) -import Ctl.Internal.Serialization.Types (PlutusData) as PDS -import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.RedeemerTag as Tag -import Data.ByteArray (ByteArray) -import Data.Maybe (maybe) -import Data.Newtype (unwrap) -import Data.Traversable (for_, traverse, traverse_) -import Data.Tuple.Nested ((/\)) -import Effect (Effect) -import Effect.Exception (throw) - -setPlutusData :: Array PDS.PlutusData -> TransactionWitnessSet -> Effect Unit -setPlutusData pd ws = setWitnesses _wsSetPlutusData ws pd - -setRedeemers :: Array Redeemer -> TransactionWitnessSet -> Effect Unit -setRedeemers rs ws = setWitnesses _wsSetRedeemers ws rs - -setPlutusScripts :: Array PlutusScript -> TransactionWitnessSet -> Effect Unit -setPlutusScripts ps ws = setWitnesses _wsSetPlutusScripts ws ps - -setWitnesses - :: forall (a :: Type) - . (ContainerHelper -> TransactionWitnessSet -> Array a -> Effect Unit) - -> TransactionWitnessSet - -> Array a - -> Effect Unit -setWitnesses f ws = f containerHelper ws - -convertWitnessSet :: T.TransactionWitnessSet -> Effect TransactionWitnessSet -convertWitnessSet (T.TransactionWitnessSet tws) = do - -- ws <- newTransactionWitnessSet - -- for_ tws.vkeys - -- (convertVkeywitnesses >=> transactionWitnessSetSetVkeys ws) - -- for_ tws.nativeScripts $ - -- transactionWitnessSetSetNativeScripts ws <<< convertNativeScripts - -- for_ tws.bootstraps - -- (traverse convertBootstrap >=> _wsSetBootstraps containerHelper ws) - -- for_ tws.plutusScripts \ps -> do - -- scripts <- newPlutusScripts - -- for_ ps (convertPlutusScript >>> addPlutusScript scripts) - -- txWitnessSetSetPlutusScripts ws scripts - -- for_ tws.plutusData - -- (map convertPlutusData >>> _wsSetPlutusData containerHelper ws) - -- for_ tws.redeemers - -- (traverse convertRedeemer >=> _wsSetRedeemers containerHelper ws) - -- pure ws - notImplemented - -convertRedeemers :: Array T.Redeemer -> Effect Redeemers -convertRedeemers redeemers = do - _mkRedeemers containerHelper <$> traverse convertRedeemer redeemers - -convertRedeemer :: T.Redeemer -> Effect Redeemer -convertRedeemer (T.Redeemer { tag, index, "data": data_, exUnits }) = do - -- tag' <- convertRedeemerTag tag - -- index' <- maybe (throw "Failed to convert redeemer index") pure $ - -- BigNum.fromBigInt index - -- let data' = convertPlutusData data_ - -- exUnits' <- convertExUnits exUnits - -- newRedeemer tag' index' data' exUnits' - notImplemented - -convertRedeemerTag :: Tag.RedeemerTag -> Effect RedeemerTag -convertRedeemerTag = _newRedeemerTag <<< case _ of - Tag.Spend -> "spend" - Tag.Mint -> "mint" - Tag.Cert -> "cert" - Tag.Reward -> "reward" - -convertExUnits :: T.ExUnits -> Effect ExUnits -convertExUnits { mem, steps } = - maybe (throw "Failed to construct ExUnits") pure do - mem' <- BigNum.fromBigInt mem - steps' <- BigNum.fromBigInt steps - pure $ newExUnits mem' steps' - -convertBootstrap :: T.BootstrapWitness -> Effect BootstrapWitness -convertBootstrap { vkey, signature, chainCode, attributes } = do - vkey' <- convertVkey vkey - let signature' = unwrap signature - newBootstrapWitness vkey' signature' chainCode attributes - -convertVkeywitnesses :: Array T.Vkeywitness -> Effect Vkeywitnesses -convertVkeywitnesses arr = do - witnesses <- newVkeywitnesses - traverse_ (convertVkeywitness >=> addVkeywitness witnesses) arr - pure witnesses - -convertVkeywitness :: T.Vkeywitness -> Effect Vkeywitness -convertVkeywitness (T.Vkeywitness (vkey /\ signature)) = do - vkey' <- convertVkey vkey - let signature' = unwrap signature - newVkeywitness vkey' signature' - -convertVkey :: T.Vkey -> Effect Vkey -convertVkey (T.Vkey pk) = newVkeyFromPublicKey $ unwrap pk - -foreign import newTransactionWitnessSet :: Effect TransactionWitnessSet -foreign import newPublicKey :: Bech32String -> Effect PublicKey -foreign import newVkeyFromPublicKey :: PublicKey -> Effect Vkey -foreign import newVkeywitnesses :: Effect Vkeywitnesses -foreign import newVkeywitness :: Vkey -> Ed25519Signature -> Effect Vkeywitness -foreign import addVkeywitness :: Vkeywitnesses -> Vkeywitness -> Effect Unit -foreign import newPlutusScripts :: Effect PlutusScripts -foreign import addPlutusScript :: PlutusScripts -> PlutusScript -> Effect Unit -foreign import transactionWitnessSetSetVkeys - :: TransactionWitnessSet -> Vkeywitnesses -> Effect Unit - -foreign import txWitnessSetSetPlutusScripts - :: TransactionWitnessSet -> PlutusScripts -> Effect Unit - -foreign import transactionWitnessSetSetNativeScripts - :: TransactionWitnessSet -> NativeScripts -> Effect Unit - -foreign import _wsSetBootstraps - :: ContainerHelper - -> TransactionWitnessSet - -> Array BootstrapWitness - -> Effect Unit - -foreign import newBootstrapWitness - :: Vkey - -> Ed25519Signature - -> ByteArray - -> ByteArray - -> Effect BootstrapWitness - -foreign import _wsSetPlutusData - :: ContainerHelper - -> TransactionWitnessSet - -> Array PDS.PlutusData - -> Effect Unit - -foreign import newRedeemer - :: RedeemerTag -> BigNum -> PDS.PlutusData -> ExUnits -> Effect Redeemer - -foreign import _newRedeemerTag :: String -> Effect RedeemerTag -foreign import newExUnits :: BigNum -> BigNum -> ExUnits -foreign import _wsSetRedeemers - :: ContainerHelper -> TransactionWitnessSet -> Array Redeemer -> Effect Unit - -foreign import _mkRedeemers :: ContainerHelper -> Array Redeemer -> Redeemers -foreign import _wsSetPlutusScripts - :: ContainerHelper - -> TransactionWitnessSet - -> Array PlutusScript - -> Effect Unit diff --git a/src/Internal/ToData.purs b/src/Internal/ToData.purs deleted file mode 100644 index c64199898..000000000 --- a/src/Internal/ToData.purs +++ /dev/null @@ -1,343 +0,0 @@ -module Ctl.Internal.ToData - ( class ToData - , class ToDataArgs - , class ToDataWithSchema - , class ToDataArgsRL - , class ToDataArgsRLHelper - , genericToData - , toDataArgsRec - , toDataArgsRec' - , toData - , toDataArgs - , toDataWithSchema - ) where - -import Prelude - -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum (fromInt, one, toBigInt, zero) as BigNum -import Cardano.Types.PlutusData (PlutusData(Constr, Integer, List, Bytes)) -import Contract.Crypto.Secp256k1 (Secp256k1PrivateKey) -import Ctl.Internal.Helpers (uIntToBigInt) -import Ctl.Internal.Plutus.Types.DataSchema - ( class HasPlutusSchema - , class ValidPlutusSchema - ) -import Ctl.Internal.TypeLevel.Nat (class KnownNat, natVal) -import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed - ( class GetIndexWithLabel - , class GetLabelIndex - , class GetWithLabel - ) -import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.RawBytes (RawBytes) -import Data.Array (cons, sortWith) -import Data.Array as Array -import Data.ArrayBuffer.Types (Uint8Array) -import Data.ByteArray (ByteArray(ByteArray)) -import Data.Either (Either(Left, Right)) -import Data.Foldable (class Foldable) -import Data.Generic.Rep as G -import Data.List (List) -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) -import Data.NonEmpty (NonEmpty) -import Data.Ratio (Ratio, denominator, numerator) -import Data.Symbol (class IsSymbol) -import Data.TextEncoder (encodeUtf8) -import Data.Tuple (Tuple(Tuple), fst, snd) -import Data.UInt (UInt) -import JS.BigInt (BigInt) -import JS.BigInt as BigInt -import Noble.Secp256k1.ECDSA - ( ECDSAPublicKey - , ECDSASignature - , MessageHash - , unECDSAPublicKey - , unMessageHash - , unPrivateKey - ) -import Noble.Secp256k1.Schnorr - ( SchnorrPublicKey - , SchnorrSignature - , unSchnorrPublicKey - ) -import Prim.Row as Row -import Prim.TypeError (class Fail, Text) -import Record as Record -import Type.Proxy (Proxy(Proxy)) -import Type.RowList as RL - --- | Classes - -class ToData :: Type -> Constraint -class ToData a where - toData :: a -> PlutusData - --- | A class which converts a type to its PlutusData representation with the help of a --- |generated or user-defined Plutus Data Schema (see TypeLevel.DataSchema.purs). --- |We cannot express the constraint that the first type argument have an instance of --- |@HasPlutusSchema@ with a superclass, but in practice every instance of this class will have an instance of --- |that class as well. -class ToDataWithSchema :: Type -> Type -> Constraint -class ToDataWithSchema t a where - toDataWithSchema :: Proxy t -> a -> PlutusData - --- | As explained in https://harry.garrood.me/blog/write-your-own-generics/ this --- | is just a neat pattern that flattens a skewed Product of Products -class ToDataArgs :: Type -> Symbol -> Type -> Constraint -class IsSymbol constr <= ToDataArgs t constr a where - toDataArgs :: Proxy t -> Proxy constr -> a -> Array (PlutusData) - --- | A helper typeclass to implement `ToDataArgs` for records. --- | Adapted from https://github.com/purescript/purescript-quickcheck/blob/v7.1.0/src/Test/QuickCheck/Arbitrary.purs#L247 --- | --- | The Symbol argument represents the name of a constructor. To account for Sum types where multiple variants of the sum have --- | records with the same name, we have to know the name of the constructor (at the type level). See TypeLevel.DataSchema for a --- | more in depth explanation. -class ToDataArgsRL - :: forall (k :: Type) - . Type - -> Symbol - -> RL.RowList k - -> Row Type - -> Constraint -class - ToDataArgsRLHelper t constr list row <= - ToDataArgsRL t constr list row - | t constr list -> row where - toDataArgsRec - :: Proxy t - -> Proxy constr - -> Proxy list - -> Record row - -> Array PlutusData - -instance ToDataArgsRLHelper t constr list row => ToDataArgsRL t constr list row where - toDataArgsRec proxy constr list rec = map snd <<< sortWith fst $ - toDataArgsRec' proxy constr list rec - --- | A helper class used to implement ToDataArgsRL. This mainly exists for performance / ergonomic reasons; --- | specifically, it allows us to only sort once (and not have to worry about maintaing the correct order as we go, --- | which reduces the potential for errors) -class ToDataArgsRLHelper - :: forall (k :: Type) - . Type - -> Symbol - -> RL.RowList k - -> Row Type - -> Constraint -class ToDataArgsRLHelper t constr list row | t constr list -> row where - toDataArgsRec' - :: Proxy t - -> Proxy constr - -> Proxy list - -> Record row - -> Array (Tuple Int PlutusData) - --- | ToDataWithIndex instances for Data.Generic.Rep - -instance - ( ToDataWithSchema t l - , ToDataWithSchema t r - ) => - ToDataWithSchema t (G.Sum l r) where - toDataWithSchema p (G.Inl x) = toDataWithSchema p x - toDataWithSchema p (G.Inr x) = toDataWithSchema p x - --- the following inline comments explain the "type level prolog" at work -instance - ( -- 'constr' is the type variable which represents the type-level symbol corresponding to the name of a constructor. It must be known at compile time. - IsSymbol constr - -- Since this is an instance for constructors with arguments, we must ensure that the arguments can be converted to Plutus Data with the provided constr name - , ToDataArgs t constr arg - -- The type must have an associated Plutus Data Schema, else we can't derive the index (which we need to get ahold of with natVal in the body of the method) - , HasPlutusSchema t schema - -- The plutus schema must be valid, i.e., have no duplicate labels or indices at each level. Otherwise 'GetIndexWithLabel' might return the wrong result - , ValidPlutusSchema schema list - -- 'index' represents the type level Nat index of the field with the constr label. - , GetIndexWithLabel constr list index - -- If that index isn't known, we can't reflect it - , KnownNat index - ) => - ToDataWithSchema t (G.Constructor constr arg) where - toDataWithSchema p (G.Constructor args) = Constr - (BigNum.fromInt <<< natVal $ (Proxy :: Proxy index)) - (toDataArgs p (Proxy :: Proxy constr) args) - --- | ToDataArgs instances for Data.Generic.Rep - -instance IsSymbol constr => ToDataArgs a constr G.NoArguments where - toDataArgs _ _ _ = [] - -instance - ( ToDataArgs t constr (Record row) - ) => - ToDataArgs t constr (G.Argument (Record row)) where - toDataArgs proxy constr (G.Argument r) = toDataArgs proxy constr r -else instance (ToData a, IsSymbol constr) => ToDataArgs x constr (G.Argument a) where - toDataArgs _ _ (G.Argument x) = [ toData x ] - -instance - ( IsSymbol constr - , ToDataArgsRL t constr list row - , RL.RowToList row list - ) => - ToDataArgs t constr (Record row) where - toDataArgs proxy constr rec = toDataArgsRec proxy constr (Proxy :: Proxy list) - rec - -instance - ( ToDataArgs x constr a - , ToDataArgs x constr b - ) => - ToDataArgs x constr (G.Product a b) where - toDataArgs proxy constr (G.Product x y) = toDataArgs proxy constr x <> - toDataArgs proxy constr y - --- | ToDataArgsRL instances - -instance ToDataArgsRLHelper t symbol RL.Nil () where - toDataArgsRec' _ _ _ _ = [] -else instance - ( -- The element of the Row we are inspecting must be convertible to Plutus Data - ToData a - -- The tail of the RowList we are inspecting must be convertible to Plutus Data (with the current constructor name) - , ToDataArgsRLHelper t constr listRest rowRest - -- Row.Lacks and Row.Cons are just the constraints required to use Record.Get - , Row.Lacks label rowRest - , Row.Cons label a rowRest rowFull - , RL.RowToList rowFull (RL.Cons label a listRest) - -- 'label' is a type variable which represents the Symbol label of a *record entry* - , IsSymbol label - -- As in the rest of this module, 'constr' stands for the name of the constructor which has a Record argument that we are inspecting - , IsSymbol constr - -- The type 't' is the "parent type" which has a constructor ('constr') that takes a Record argument - , HasPlutusSchema t schema - -- The schema must be valid (see above), and if it is we get the corresponding RList ('rList') - , ValidPlutusSchema schema rList - -- The RList corresponding to the schema must have a Record argument at the given constructor - , GetWithLabel constr rList rec - -- That record at the given constructor must have a field at the given label, and that field has a Nat index - , GetLabelIndex label rec n - -- we have to be able to reflect the nat index of the record entry located at 'label' - , KnownNat n - ) => - ToDataArgsRLHelper t constr (RL.Cons label a listRest) rowFull where - toDataArgsRec' _ constr _ x = - let - keyProxy = (Proxy :: Proxy label) - - ix = natVal (Proxy :: Proxy n) - - field :: a - field = Record.get keyProxy x - in - Tuple ix (toData field) `cons` toDataArgsRec' (Proxy :: Proxy t) constr - (Proxy :: Proxy listRest) - (Record.delete keyProxy x) - -genericToData - :: forall (t :: Type) (rep :: Type) - . G.Generic t rep - => ToDataWithSchema t rep - => t - -> PlutusData -genericToData = toDataWithSchema (Proxy :: Proxy t) <<< G.from - --- | Base ToData instances - -instance ToData Void where - toData = absurd - -instance ToData Unit where - toData _ = Constr BigNum.zero [] - --- NOTE: For the sake of compatibility the following toDatas have to match --- https://github.com/input-output-hk/plutus/blob/1f31e640e8a258185db01fa899da63f9018c0e85/plutus-tx/src/PlutusTx/IsData/Instances.hs -instance ToData Boolean where - toData false = Constr BigNum.zero [] - toData true = Constr BigNum.one [] - -instance ToData a => ToData (Maybe a) where - toData (Just x) = Constr BigNum.zero [ toData x ] -- Just is zero-indexed by Plutus - toData Nothing = Constr BigNum.one [] - -instance (ToData a, ToData b) => ToData (Either a b) where - toData (Left e) = Constr BigNum.zero [ toData e ] - toData (Right x) = Constr BigNum.one [ toData x ] - -instance Fail (Text "Int is not supported, use BigInt instead") => ToData Int where - toData = toData <<< BigInt.fromInt - -instance ToData BigInt where - toData = Integer - -instance ToData BigNum where - toData = toData <<< BigNum.toBigInt - -instance ToData UInt where - toData = toData <<< uIntToBigInt - -instance ToData a => ToData (Array a) where - toData = List <<< map toData - -instance (Foldable f, ToData a) => ToData (NonEmpty f a) where - toData = foldableToPlutusData - -instance ToData a => ToData (List a) where - toData = foldableToPlutusData - -instance (ToData a, ToData b) => ToData (Tuple a b) where - toData (Tuple a b) = Constr BigNum.zero [ toData a, toData b ] - --- Note that nothing prevents the denominator from being zero, we could provide --- safety here: -instance ToData a => ToData (Ratio a) where - toData ratio = List [ toData (numerator ratio), toData (denominator ratio) ] - -instance ToData ByteArray where - toData = Bytes - -instance ToData CborBytes where - toData = Bytes <<< unwrap - -instance ToData RawBytes where - toData = Bytes <<< unwrap - -instance ToData String where - toData = toData <<< ByteArray <<< encodeUtf8 - -instance ToData PlutusData where - toData = identity - -instance ToData Uint8Array where - toData = toData <<< ByteArray - --- Instances for purescript-noble-secp256k1 types - -instance ToData Secp256k1PrivateKey where - toData = unwrap >>> unPrivateKey >>> ByteArray >>> toData - -instance ToData MessageHash where - toData = unMessageHash >>> ByteArray >>> toData - -instance ToData ECDSAPublicKey where - toData = unECDSAPublicKey >>> ByteArray >>> toData - -instance ToData ECDSASignature where - toData = unwrap >>> ByteArray >>> toData - -instance ToData SchnorrPublicKey where - toData = unSchnorrPublicKey >>> ByteArray >>> toData - -instance ToData SchnorrSignature where - toData = unwrap >>> ByteArray >>> toData - -foldableToPlutusData - :: forall (a :: Type) (t :: Type -> Type) - . Foldable t - => ToData a - => t a - -> PlutusData -foldableToPlutusData = Array.fromFoldable >>> map toData >>> List diff --git a/src/Internal/TxOutput.purs b/src/Internal/TxOutput.purs index ce22b4f8b..2806f1be0 100644 --- a/src/Internal/TxOutput.purs +++ b/src/Internal/TxOutput.purs @@ -9,24 +9,25 @@ module Ctl.Internal.TxOutput import Prelude +import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Types + ( DataHash + , PlutusData + , TransactionInput(TransactionInput) + ) import Cardano.Types.Address as Address -import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Types.OutputDatum - ( OutputDatum(..) + ( OutputDatum(OutputDatumHash, OutputDatum) , outputDatumDataHash , outputDatumDatum ) -import Cardano.Types.TransactionOutput (TransactionOutput(..)) +import Cardano.Types.TransactionOutput (TransactionOutput(TransactionOutput)) import Control.Alt ((<|>)) import Control.Alternative (guard) -import Ctl.Internal.Deserialization.PlutusData as Deserialization import Ctl.Internal.QueryM.Ogmios as Ogmios -import Ctl.Internal.Serialization.PlutusData as Serialization -import Ctl.Internal.Types.Datum (DataHash, Datum(Datum)) -import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) as Transaction import Data.ByteArray (byteArrayToHex, hexToByteArray) -import Data.Maybe (Maybe(Just), fromMaybe, isNothing) +import Data.Maybe (Maybe, isNothing) import Data.Newtype (unwrap, wrap) import Data.Traversable (traverse) @@ -38,7 +39,7 @@ import Data.Traversable (traverse) -- I think txId is a hexadecimal encoding. -- | Converts an Ogmios transaction input to (internal) `TransactionInput` txOutRefToTransactionInput - :: Ogmios.OgmiosTxOutRef -> Maybe Transaction.TransactionInput + :: Ogmios.OgmiosTxOutRef -> Maybe TransactionInput txOutRefToTransactionInput { txId, index } = do transactionId <- hexToByteArray txId >>= fromBytes >>> map wrap pure $ wrap @@ -48,9 +49,9 @@ txOutRefToTransactionInput { txId, index } = do -- | Converts an (internal) `TransactionInput` to an Ogmios transaction input transactionInputToTxOutRef - :: Transaction.TransactionInput -> Ogmios.OgmiosTxOutRef + :: TransactionInput -> Ogmios.OgmiosTxOutRef transactionInputToTxOutRef - (Transaction.TransactionInput { transactionId, index }) = + (TransactionInput { transactionId, index }) = { txId: byteArrayToHex (toBytes $ unwrap transactionId) , index } @@ -84,7 +85,7 @@ transactionOutputToOgmiosTxOut { address: Address.toBech32 address , value , datumHash: datumHashToOgmiosDatumHash <$> (outputDatumDataHash =<< datum) - , datum: datumToOgmiosDatum <$> (outputDatumDatum >>> map wrap =<< datum) + , datum: datumToOgmiosDatum <$> (outputDatumDatum =<< datum) , script: scriptRef } @@ -96,22 +97,19 @@ ogmiosDatumHashToDatumHash :: String -> Maybe DataHash ogmiosDatumHashToDatumHash str = hexToByteArray str >>= wrap >>> decodeCbor -- | Converts an Ogmios datum `String` to an internal `Datum` -ogmiosDatumToDatum :: String -> Maybe Datum +ogmiosDatumToDatum :: String -> Maybe PlutusData ogmiosDatumToDatum = - hexToByteArray - >=> fromBytes - >=> (Deserialization.convertPlutusData >>> Datum >>> Just) + hexToByteArray >=> wrap >>> decodeCbor -- | Converts an internal `DataHash` to an Ogmios datumhash `String` datumHashToOgmiosDatumHash :: DataHash -> String datumHashToOgmiosDatumHash = byteArrayToHex <<< unwrap <<< encodeCbor -- | Converts an internal `Datum` to an Ogmios datum `String` -datumToOgmiosDatum :: Datum -> String -datumToOgmiosDatum (Datum plutusData) = - Serialization.convertPlutusData plutusData # - toBytes >>> byteArrayToHex +datumToOgmiosDatum :: PlutusData -> String +datumToOgmiosDatum = + encodeCbor >>> unwrap >>> byteArrayToHex -toOutputDatum :: Maybe Datum -> Maybe DataHash -> Maybe OutputDatum +toOutputDatum :: Maybe PlutusData -> Maybe DataHash -> Maybe OutputDatum toOutputDatum d dh = - OutputDatum <$> map unwrap d <|> OutputDatumHash <$> dh + OutputDatum <$> d <|> OutputDatumHash <$> dh diff --git a/src/Internal/Types/Cbor.purs b/src/Internal/Types/Cbor.purs deleted file mode 100644 index b4c1a2459..000000000 --- a/src/Internal/Types/Cbor.purs +++ /dev/null @@ -1,146 +0,0 @@ --- | A partial CBOR decoder, based on [RFC 8949](https://www.rfc-editor.org/rfc/rfc8949.html) -module Ctl.Internal.Types.Cbor - ( Cbor(Cbor) - , RawCborType - , CborType(ByteStringType) - , CborParseError - ( UnknownType - , UnknownAdditionalInformation - , ByteArrayTooShort - ) - , Parser - , runParser - , cborType - , takeN - , takeN' - , toByteArray - , fromBytes - ) where - -import Prelude - -import Contract.Prelude (foldl) -import Control.Monad.Except (Except, runExcept, throwError) -import Control.Monad.State.Trans (StateT, evalStateT, get, put) -import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) -import Data.ByteArray - ( ByteArray - , byteArrayToIntArray - , byteLength - , subarray - ) -import Data.Either (Either) -import Data.Newtype (class Newtype) -import Data.UInt (UInt, shl, zshr, (.&.), (.|.)) -import Data.UInt as UInt - --- | A CBOR data item is encoded as a byte string -newtype Cbor = Cbor CborBytes - -derive instance Newtype Cbor _ -derive newtype instance Show Cbor -derive newtype instance Eq Cbor -derive newtype instance Ord Cbor -derive newtype instance Semigroup Cbor -derive newtype instance Monoid Cbor - --- | The initial byte of the head of the data item -type RawCborType = UInt - --- | A structured representation of the head of the data item -data CborType = ByteStringType UInt - -data CborParseError - = UnknownType UInt - | UnknownAdditionalInformation UInt - | ByteArrayTooShort ByteArray Int - -instance Show CborParseError where - show = case _ of - UnknownType ty -> "(UnknownType " <> show ty <> ")" - UnknownAdditionalInformation info -> "(UnknownAdditionalInformation " - <> show - info - <> ")" - ByteArrayTooShort bs extra -> "(ByteArrayTooShort " <> show bs - <> " " - <> show extra - <> ")" - -type Parser :: Type -> Type -type Parser a = StateT ByteArray (Except CborParseError) a - --- | Same as `takeN'`, except returns `Array UInt` -takeN :: UInt -> Parser (Array UInt) -takeN n = map UInt.fromInt <<< byteArrayToIntArray <$> takeN' n - --- | Consume and return n bytes from the input, throwing an exception if there --- | is not enough -takeN' :: UInt -> Parser ByteArray -takeN' = UInt.toInt >>> \n -> do - ba <- get - when (n > byteLength ba) do - throwError $ ByteArrayTooShort ba n - put $ subarray n (byteLength ba) ba - pure $ subarray 0 n ba - --- | Convert an array of bytes in network order into an unsigned integer -fromBytes :: Array UInt -> UInt -fromBytes = foldl (\acc b -> shl acc (UInt.fromInt 8) .|. b) zero - --- | Read the initial byte of the head of the data item -readType :: Parser RawCborType -readType = fromBytes <$> takeN one - --- | The initial byte of the head of the data item contains a major type and --- | additional information --- | --- | https://www.rfc-editor.org/rfc/rfc8949.html#section-3-2 -partitionType - :: RawCborType -> { majorType :: UInt, additionalInformation :: UInt } -partitionType u = - { -- The 3 most signficant bits - majorType: u `zshr` UInt.fromInt 5 - -- The 5 least signficant bits - , additionalInformation: u .&. UInt.fromInt 31 - } - --- | Decode the rest of the head of the data item, given the first byte, into a --- | `CborType` --- | --- | https://www.rfc-editor.org/rfc/rfc8949.html#name-specification-of-the-cbor-e -decodeType :: RawCborType -> Parser CborType -decodeType rawCborType = - -- https://www.rfc-editor.org/rfc/rfc8949.html#name-major-types - case UInt.toInt majorType of - 2 -> ByteStringType <$> decodeByteStringLength - _ -> throwError $ UnknownType majorType - where - { majorType - , additionalInformation - } = partitionType rawCborType - - -- Below 24, the additional information is directly used as the length. - -- Otherwise, it represents varying sizes of unsigned integers to read from - -- the head. - decodeByteStringLength :: Parser UInt - decodeByteStringLength = - case UInt.toInt additionalInformation of - v | v < 24 -> pure additionalInformation - 24 -> takeN (UInt.fromInt 1) <#> fromBytes - 25 -> takeN (UInt.fromInt 2) <#> fromBytes - 26 -> takeN (UInt.fromInt 4) <#> fromBytes - 27 -> takeN (UInt.fromInt 8) <#> fromBytes - _ -> throwError $ UnknownAdditionalInformation additionalInformation - --- | Decodes the head of the data item into `CborType` -cborType :: Parser CborType -cborType = readType >>= decodeType - -runParser :: forall (a :: Type). Parser a -> Cbor -> Either CborParseError a -runParser parser (Cbor (CborBytes ba)) = runExcept $ flip evalStateT ba $ parser - --- | Extract a `ByteArray` if the `Cbor` was a byte string -toByteArray :: Cbor -> Either CborParseError ByteArray -toByteArray = runParser $ cborType >>= case _ of - ByteStringType length -> takeN' length diff --git a/src/Internal/Types/CborBytes.purs b/src/Internal/Types/CborBytes.purs deleted file mode 100644 index 7ba9d9f79..000000000 --- a/src/Internal/Types/CborBytes.purs +++ /dev/null @@ -1,31 +0,0 @@ --- | CborBytes. A wrapper over `ByteArray` to indicate that the bytes are cbor. -module Ctl.Internal.Types.CborBytes - ( CborBytes(CborBytes) - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Data.ByteArray (ByteArray) -import Data.ByteArray as ByteArray -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) -import Test.QuickCheck.Arbitrary (class Arbitrary) - --- | An array of bytes containing CBOR data -newtype CborBytes = CborBytes ByteArray - -instance Show CborBytes where - show = genericShow - -derive instance Newtype CborBytes _ -derive instance Generic CborBytes _ - -derive newtype instance Eq CborBytes -derive newtype instance Ord CborBytes -derive newtype instance Semigroup CborBytes -derive newtype instance Monoid CborBytes -derive newtype instance EncodeAeson CborBytes -derive newtype instance DecodeAeson CborBytes -derive newtype instance Arbitrary CborBytes diff --git a/src/Internal/Types/Natural.purs b/src/Internal/Types/Natural.purs deleted file mode 100644 index 7a29c7fac..000000000 --- a/src/Internal/Types/Natural.purs +++ /dev/null @@ -1,112 +0,0 @@ --- | Arbitrary precision natural numbers (backed by `BigInt`). -module Ctl.Internal.Types.Natural - ( (^-) - , Natural - , binaryOnBigInt - , fromBigInt - , fromBigInt' - , fromInt - , fromInt' - , fromString - , minus - , toBigInt - ) where - -import Prelude - -import Aeson (class DecodeAeson, JsonDecodeError(TypeMismatch), caseAesonBigInt) -import Cardano.Types.PlutusData (PlutusData(Integer)) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.ToData (class ToData, toData) -import Data.Either (Either(Left), note) -import Data.Function (on) -import Data.Maybe (Maybe(Nothing, Just), fromMaybe) -import JS.BigInt (BigInt) -import JS.BigInt (fromInt, fromString) as BigInt - -newtype Natural = Natural BigInt - -derive newtype instance Eq Natural -derive newtype instance Ord Natural -derive newtype instance Semiring Natural -derive newtype instance FromMetadata Natural -derive newtype instance ToMetadata Natural - -instance Show Natural where - show (Natural n) = "(fromBigInt' (BigInt." <> show n <> "))" - -instance FromData Natural where - fromData (Integer n) = fromBigInt n - fromData _ = Nothing - -instance ToData Natural where - toData (Natural n) = toData n - -instance DecodeAeson Natural where - decodeAeson = - caseAesonBigInt - (Left $ TypeMismatch "Expected BigInt from Aeson decoding") - ( \bi -> note (TypeMismatch $ "Invalid Natural number: " <> show bi) $ - fromBigInt bi - ) - -type MNatural = Maybe Natural - --- | Attempts to convert an instance of `Semiring` to `Natural`. --- | Fails with `Nothing` on negative input. -fromSemiringType - :: forall (a :: Type). Semiring a => Ord a => (a -> BigInt) -> a -> MNatural -fromSemiringType f n - | n >= zero = Just (Natural $ f n) - | otherwise = Nothing - --- | Converts an instance of `Semiring` to `Natural`. --- | If the input is negative, negates it. -fromSemiringType' - :: forall (a :: Type). Semiring a => Ord a => (a -> BigInt) -> a -> Natural -fromSemiringType' f n - | n >= zero = Natural (f n) - | otherwise = Natural (negate $ f n) - --- | Attempts to convert `BigInt` to `Natural`. --- | Fails with `Nothing` on negative input. -fromBigInt :: BigInt -> Maybe Natural -fromBigInt = fromSemiringType identity - --- | Converts `BigInt` to `Natural`. Negates `BigInt` if it's negative. -fromBigInt' :: BigInt -> Natural -fromBigInt' = fromSemiringType' identity - --- | Unwraps `Natural` and returns the underlying `BigInt`. -toBigInt :: Natural -> BigInt -toBigInt (Natural n) = n - --- | Attempts to convert `Int` to `Natural`. --- | Fails with `Nothing` on negative input. -fromInt :: Int -> Maybe Natural -fromInt = fromSemiringType BigInt.fromInt - --- | Converts `Int` to `Natural`. Negates `Int` if it's negative. -fromInt' :: Int -> Natural -fromInt' = fromSemiringType' BigInt.fromInt - --- | Attempts to build `Natural` from `String`. -fromString :: String -> Maybe Natural -fromString = fromBigInt <=< BigInt.fromString - --- | Use an arbitrary binary operation on the underlying `BigInt` for two --- | natural numbers to return a natural number with potential failure if the --- | output is not natural. -binaryOnBigInt - :: (BigInt -> BigInt -> BigInt) -> Natural -> Natural -> Maybe Natural -binaryOnBigInt bin n = fromBigInt <<< (bin `on` toBigInt) n - --- | Subtracts one natural number from another via `BigInt`. If the number --- | becomes negative, we return zero. -minus :: Natural -> Natural -> Natural -minus n = fromMaybe zero <<< binaryOnBigInt (-) n - --- Part of an `AdditiveHemigroup` notation but we'll use this for now. -infixl 6 minus as ^- diff --git a/src/Internal/Types/Transaction.purs b/src/Internal/Types/Transaction.purs deleted file mode 100644 index f9c5ebf37..000000000 --- a/src/Internal/Types/Transaction.purs +++ /dev/null @@ -1,5 +0,0 @@ -module Ctl.Internal.Types.Transaction (module X) where - -import Cardano.Types.DataHash as X -import Cardano.Types.TransactionHash as X -import Cardano.Types.TransactionInput as X diff --git a/src/Internal/Wallet/Bip32.js b/src/Internal/Wallet/Bip32.js deleted file mode 100644 index 387882d8f..000000000 --- a/src/Internal/Wallet/Bip32.js +++ /dev/null @@ -1,31 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -import bip39 from "bip39"; - -const HARDENED = 0x80000000; - -export function _bip32PrivateKeyFromMnemonic(left) { - return right => phrase => { - try { - return right( - lib.Bip32PrivateKey.from_bip39_entropy( - Uint8Array.from( - Buffer.from(bip39.mnemonicToEntropy(phrase.toLowerCase()), "hex") - ), - new Uint8Array() // passphrase (not currently implemented) - ) - ); - } catch (e) { - return left(e.toString()); - } - }; -} - -export function bip32ToPrivateKey(privateKey) { - return privateKey.to_raw_key(); -} - -export function derivePrivateKey(path) { - return hardened => privateKey => - privateKey.derive(path | (hardened ? HARDENED : 0)); -} diff --git a/src/Internal/Wallet/Bip32.purs b/src/Internal/Wallet/Bip32.purs deleted file mode 100644 index 642664892..000000000 --- a/src/Internal/Wallet/Bip32.purs +++ /dev/null @@ -1,75 +0,0 @@ -module Ctl.Internal.Wallet.Bip32 - ( Cip1852Account - , bip32ToPrivateKey - , bip32PrivateKeyFromMnemonic - , cip1852AccountFromBip32PrivateKey - , cip1852AccountFromMnemonic - , derivePaymentKey - , deriveChangeKey - , deriveStakeKey - ) where - -import Contract.Prelude - -import Ctl.Internal.Serialization.Types (Bip32PrivateKey, PrivateKey) -import Data.UInt (UInt) -import Data.UInt as UInt - -newtype Cip1852Account = Cip1852Account Bip32PrivateKey - -foreign import _bip32PrivateKeyFromMnemonic - :: (String -> Either String Bip32PrivateKey) - -> (Bip32PrivateKey -> Either String Bip32PrivateKey) - -> String - -> Either String Bip32PrivateKey - -foreign import derivePrivateKey - :: UInt - -- ^ path index - -> Boolean - -- ^ hardened - -> Bip32PrivateKey - -> Bip32PrivateKey - --- | Convert a BIP32 private key to a raw private key -foreign import bip32ToPrivateKey :: Bip32PrivateKey -> PrivateKey - --- | Derive a BIP32 private key given a mnemonic phrase -bip32PrivateKeyFromMnemonic :: String -> Either String Bip32PrivateKey -bip32PrivateKeyFromMnemonic = _bip32PrivateKeyFromMnemonic Left Right - --- | Derive a CIP1852 account from a BIP32 private key given an account index -cip1852AccountFromBip32PrivateKey :: UInt -> Bip32PrivateKey -> Cip1852Account -cip1852AccountFromBip32PrivateKey account key = - Cip1852Account - $ key - # derivePrivateKey (UInt.fromInt 1852) true - # derivePrivateKey (UInt.fromInt 1815) true - # derivePrivateKey account true - --- | Derive a CIP1852 account given a mnemonic phrase and account index -cip1852AccountFromMnemonic :: String -> UInt -> Either String Cip1852Account -cip1852AccountFromMnemonic phrase account = - cip1852AccountFromBip32PrivateKey account - <$> bip32PrivateKeyFromMnemonic phrase - --- | Derive a payment key for the given account -derivePaymentKey :: Cip1852Account -> UInt -> Bip32PrivateKey -derivePaymentKey (Cip1852Account key) index = - key - # derivePrivateKey zero false - # derivePrivateKey index false - --- | Derive a change key for the given account -deriveChangeKey :: Cip1852Account -> UInt -> Bip32PrivateKey -deriveChangeKey (Cip1852Account key) index = - key - # derivePrivateKey one false - # derivePrivateKey index false - --- | Derive the stake key for the given account -deriveStakeKey :: Cip1852Account -> Bip32PrivateKey -deriveStakeKey (Cip1852Account key) = - key - # derivePrivateKey (UInt.fromInt 2) false - # derivePrivateKey (UInt.fromInt 0) false diff --git a/src/Internal/Wallet/Cip30/SignData.js b/src/Internal/Wallet/Cip30/SignData.js deleted file mode 100644 index b105a9ee3..000000000 --- a/src/Internal/Wallet/Cip30/SignData.js +++ /dev/null @@ -1,131 +0,0 @@ -/* global BROWSER_RUNTIME */ - -let lib; -if (typeof BROWSER_RUNTIME != "undefined" && BROWSER_RUNTIME) { - lib = await import("@emurgo/cardano-message-signing-browser"); -} else { - lib = await import("@emurgo/cardano-message-signing-nodejs"); -} - -// ----------------------------------------------------------------------------- -// COSESign1Builder -// ----------------------------------------------------------------------------- - -// newCoseSign1Builder :: ByteArray -> Headers -> Effect COSESign1Builder -export function newCoseSign1Builder(payload) { - return headers => () => { - return lib.COSESign1Builder.new(headers, payload, false); - }; -} - -// makeDataToSign :: COSESign1Builder -> ByteArray -export function makeDataToSign(builder) { - return builder.make_data_to_sign().to_bytes(); -} - -// sign :: PrivateKey -> ByteArray -> ByteArray -export function sign(privateKey) { - return message => { - return privateKey.sign(message).to_bytes(); - }; -} - -// buildSignature :: COSESign1Builder -> ByteArray -> ByteArray -export function buildSignature(builder) { - return signedSigStruct => { - return builder.build(signedSigStruct).to_bytes(); - }; -} - -// ----------------------------------------------------------------------------- -// Headers -// ----------------------------------------------------------------------------- - -// newHeaders :: HeaderMap -> ProtectedHeaderMap -> Headers -export function newHeaders(unprotectedHeaders) { - return protectedHeaders => { - return lib.Headers.new(protectedHeaders, unprotectedHeaders); - }; -} - -// ----------------------------------------------------------------------------- -// ProtectedHeaderMap -// ----------------------------------------------------------------------------- - -// newProtectedHeaderMap :: HeaderMap -> ProtectedHeaderMap -export function newProtectedHeaderMap(headerMap) { - return lib.ProtectedHeaderMap.new(headerMap); -} - -// ----------------------------------------------------------------------------- -// HeaderMap -// ----------------------------------------------------------------------------- - -// newHeaderMap :: Effect HeaderMap -export function newHeaderMap() { - return lib.HeaderMap.new(); -} - -// setAlgHeaderToEdDsa :: HeaderMap -> Effect Unit -export function setAlgHeaderToEdDsa(headerMap) { - return () => { - const label = lib.Label.from_algorithm_id(lib.AlgorithmId.EdDSA); - headerMap.set_algorithm_id(label); - }; -} - -// setAddressHeader :: ByteArray -> HeaderMap -> Effect Unit -export function setAddressHeader(addressBytes) { - return headerMap => () => { - const label = lib.Label.new_text("address"); - const value = lib.CBORValue.new_bytes(addressBytes); - headerMap.set_header(label, value); - }; -} - -// ----------------------------------------------------------------------------- -// COSEKey -// ----------------------------------------------------------------------------- - -// newCoseKeyWithOkpType :: Effect COSEKey -export function newCoseKeyWithOkpType() { - return lib.COSEKey.new(lib.Label.from_key_type(lib.KeyType.OKP)); -} - -// setCoseKeyAlgHeaderToEdDsa :: COSEKey -> Effect Unit -export function setCoseKeyAlgHeaderToEdDsa(key) { - return () => { - key.set_algorithm_id(lib.Label.from_algorithm_id(lib.AlgorithmId.EdDSA)); - }; -} - -// setCoseKeyCrvHeaderToEd25519 :: COSEKey -> Effect Unit -export function setCoseKeyCrvHeaderToEd25519(key) { - return () => { - key.set_header( - lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) - ), - lib.CBORValue.new_int( - lib.Int.new_i32(6) // Ed25519 (6) - ) - ); - }; -} - -// setCoseKeyXHeader :: RawBytes -> COSEKey -> Effect Unit -export function setCoseKeyXHeader(publicKeyBytes) { - return key => () => { - key.set_header( - lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) - ), - lib.CBORValue.new_bytes(publicKeyBytes) // public key bytes - ); - }; -} - -// bytesFromCoseKey :: COSEKey -> CborBytes -export function bytesFromCoseKey(key) { - return key.to_bytes(); -} diff --git a/src/Internal/Wallet/Cip30/SignData.purs b/src/Internal/Wallet/Cip30/SignData.purs deleted file mode 100644 index 3bd63a236..000000000 --- a/src/Internal/Wallet/Cip30/SignData.purs +++ /dev/null @@ -1,77 +0,0 @@ -module Ctl.Internal.Wallet.Cip30.SignData (signData) where - -import Prelude - -import Cardano.Types.Address (Address) -import Cardano.AsCbor (encodeCbor) -import Ctl.Internal.Serialization.Keys - ( bytesFromPublicKey - , publicKeyFromPrivateKey - ) -import Ctl.Internal.Serialization.Types (PrivateKey) -import Ctl.Internal.Types.CborBytes (CborBytes(CborBytes)) -import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) -import Ctl.Internal.Wallet.Cip30 (DataSignature) -import Data.ByteArray (ByteArray) -import Effect (Effect) - -foreign import data COSESign1Builder :: Type -foreign import newCoseSign1Builder - :: ByteArray -> Headers -> Effect COSESign1Builder - -foreign import makeDataToSign :: COSESign1Builder -> ByteArray -foreign import sign :: PrivateKey -> ByteArray -> ByteArray -foreign import buildSignature :: COSESign1Builder -> ByteArray -> ByteArray - -foreign import data Headers :: Type -foreign import newHeaders :: HeaderMap -> ProtectedHeaderMap -> Headers - -foreign import data ProtectedHeaderMap :: Type -foreign import newProtectedHeaderMap :: HeaderMap -> ProtectedHeaderMap - -foreign import data HeaderMap :: Type -foreign import newHeaderMap :: Effect HeaderMap -foreign import setAlgHeaderToEdDsa :: HeaderMap -> Effect Unit -foreign import setAddressHeader :: CborBytes -> HeaderMap -> Effect Unit - -foreign import data COSEKey :: Type -foreign import newCoseKeyWithOkpType :: Effect COSEKey -foreign import setCoseKeyAlgHeaderToEdDsa :: COSEKey -> Effect Unit -foreign import setCoseKeyCrvHeaderToEd25519 :: COSEKey -> Effect Unit -foreign import setCoseKeyXHeader :: RawBytes -> COSEKey -> Effect Unit -foreign import bytesFromCoseKey :: COSEKey -> CborBytes - -signData :: PrivateKey -> Address -> RawBytes -> Effect DataSignature -signData privatePaymentKey address (RawBytes payload) = - { key: _, signature: _ } <$> key <*> signature - where - key :: Effect CborBytes - key = do - coseKey <- newCoseKeyWithOkpType - setCoseKeyAlgHeaderToEdDsa coseKey - setCoseKeyCrvHeaderToEd25519 coseKey - setCoseKeyXHeader publicPaymentKeyBytes coseKey - pure $ bytesFromCoseKey coseKey - where - publicPaymentKeyBytes :: RawBytes - publicPaymentKeyBytes = - bytesFromPublicKey (publicKeyFromPrivateKey privatePaymentKey) - - signature :: Effect CborBytes - signature = CborBytes <$> (buildSignature <$> builder <*> signedSigStruct) - where - signedSigStruct :: Effect ByteArray - signedSigStruct = sign privatePaymentKey <<< makeDataToSign <$> builder - - builder :: Effect COSESign1Builder - builder = headers >>= newCoseSign1Builder payload - where - headers :: Effect Headers - headers = newHeaders <$> newHeaderMap <*> protectedHeaders - - protectedHeaders :: Effect ProtectedHeaderMap - protectedHeaders = do - headerMap <- newHeaderMap - setAlgHeaderToEdDsa headerMap - setAddressHeader (encodeCbor address) headerMap - pure $ newProtectedHeaderMap headerMap diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index ce2c3dc52..b6a9b1077 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -10,36 +10,23 @@ module Ctl.Internal.Wallet.Cip30Mock ) ) where +import Cardano.Types.NetworkId import Prelude import Cardano.Serialization.Lib (toBytes) +import Cardano.Types.Address + ( Address + ) +import Cardano.Types.TransactionUnspentOutput + ( TransactionUnspentOutput(TransactionUnspentOutput) + ) import Contract.Monad (Contract) import Control.Monad.Error.Class (liftMaybe, try) import Control.Monad.Reader (ask) import Control.Monad.Reader.Class (local) import Control.Promise (Promise, fromAff) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.Deserialization.Transaction (deserializeTransaction) import Ctl.Internal.Helpers (liftEither) -import Ctl.Internal.Serialization - ( convertTransactionUnspentOutput - , convertValue - , publicKeyHash - ) -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId(MainnetId, TestnetId) - ) -import Ctl.Internal.Serialization.Keys (publicKeyFromPrivateKey) -import Ctl.Internal.Serialization.WitnessSet (convertWitnessSet) -import Ctl.Internal.Types.CborBytes (cborBytesFromByteArray, cborBytesToHex) -import Ctl.Internal.Types.RewardAddress - ( rewardAddressToBytes - , stakePubKeyHashRewardAddress - ) import Ctl.Internal.Wallet ( Wallet , WalletExtension diff --git a/src/Internal/Wallet/KeyFile.purs b/src/Internal/Wallet/KeyFile.purs index 5ddfdb93e..3238cb04f 100644 --- a/src/Internal/Wallet/KeyFile.purs +++ b/src/Internal/Wallet/KeyFile.purs @@ -14,6 +14,8 @@ module Ctl.Internal.Wallet.KeyFile import Prelude import Aeson (encodeAeson) +import Cardano.Types.PrivateKey (PrivateKey) +import Cardano.Types.PrivateKey as PrivateKey import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except (catchError) import Ctl.Internal.Cardano.TextEnvelope @@ -24,16 +26,12 @@ import Ctl.Internal.Cardano.TextEnvelope ) , decodeTextEnvelope ) -import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) -import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.Serialization.Keys (bytesFromPrivateKey) -import Ctl.Internal.Types.RawBytes (rawBytesToHex) import Ctl.Internal.Wallet.Key ( PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) ) -import Data.ByteArray (ByteArray) +import Data.ByteArray (ByteArray, byteArrayToHex) import Data.Maybe (Maybe(Nothing)) import Data.Newtype (unwrap, wrap) import Effect.Aff (Aff) @@ -66,25 +64,25 @@ privatePaymentKeyFromTextEnvelope :: TextEnvelope -> Maybe PrivatePaymentKey privatePaymentKeyFromTextEnvelope (TextEnvelope envelope) = do -- Check TextEnvelope type match to desirable unless (envelope.type_ == PaymentSigningKeyShelleyed25519) Nothing - PrivatePaymentKey <<< PrivateKey <$> privateKeyFromBytes (wrap envelope.bytes) + PrivatePaymentKey <$> PrivateKey.fromRawBytes (wrap envelope.bytes) privateStakeKeyFromTextEnvelope :: TextEnvelope -> Maybe PrivateStakeKey privateStakeKeyFromTextEnvelope (TextEnvelope envelope) = do -- Check TextEnvelope type match to desirable unless (envelope.type_ == StakeSigningKeyShelleyed25519) Nothing - PrivateStakeKey <<< PrivateKey <$> privateKeyFromBytes (wrap envelope.bytes) + PrivateStakeKey <$> PrivateKey.fromRawBytes (wrap envelope.bytes) privatePaymentKeyFromFile :: FilePath -> Aff PrivatePaymentKey privatePaymentKeyFromFile filePath = do bytes <- keyFromFile filePath PaymentSigningKeyShelleyed25519 liftM (error "Unable to decode private payment key") $ - PrivatePaymentKey <<< PrivateKey <$> privateKeyFromBytes (wrap bytes) + PrivatePaymentKey <$> PrivateKey.fromRawBytes (wrap bytes) privateStakeKeyFromFile :: FilePath -> Aff PrivateStakeKey privateStakeKeyFromFile filePath = do bytes <- keyFromFile filePath StakeSigningKeyShelleyed25519 liftM (error "Unable to decode private stake key") $ - PrivateStakeKey <<< PrivateKey <$> privateKeyFromBytes (wrap bytes) + PrivateStakeKey <$> PrivateKey.fromRawBytes (wrap bytes) -- | Write private payment key to file in cardano-cli envelope format privatePaymentKeyToFile :: FilePath -> PrivatePaymentKey -> Aff Unit @@ -115,8 +113,8 @@ formatStakeKey (PrivateStakeKey key) = encodeAeson >>> show } keyToCbor :: PrivateKey -> String -keyToCbor = (magicPrefix <> _) <<< rawBytesToHex <<< bytesFromPrivateKey <<< - unwrap +keyToCbor = + (magicPrefix <> _) <<< byteArrayToHex <<< unwrap <<< PrivateKey.toRawBytes magicPrefix :: String magicPrefix = "5820" diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index 1474cf63e..29bd68780 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -22,8 +22,13 @@ module Ctl.Internal.Wallet.Spec import Prelude +import Cardano.Wallet.HD + ( bip32ToPrivateKey + , cip1852AccountFromMnemonic + , derivePaymentKey + , deriveStakeKey + ) import Control.Monad.Error.Class (liftEither) -import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) import Ctl.Internal.Wallet ( Wallet(KeyWallet) , WalletExtension @@ -39,12 +44,6 @@ import Ctl.Internal.Wallet , mkKeyWallet , mkWalletAff ) -import Ctl.Internal.Wallet.Bip32 - ( bip32ToPrivateKey - , cip1852AccountFromMnemonic - , derivePaymentKey - , deriveStakeKey - ) import Ctl.Internal.Wallet.Key ( KeyWallet , PrivatePaymentKey(PrivatePaymentKey) @@ -168,9 +167,8 @@ mkKeyWalletFromMnemonic phrase { accountIndex, addressIndex } stakeKeyPresence = let paymentKey = derivePaymentKey account addressIndex # bip32ToPrivateKey mbStakeKeySpec = case stakeKeyPresence of - WithStakeKey -> Just $ PrivateStakeKey $ PrivateKey $ + WithStakeKey -> Just $ PrivateStakeKey $ deriveStakeKey account # bip32ToPrivateKey WithoutStakeKey -> Nothing - pure $ privateKeysToKeyWallet (PrivatePaymentKey $ PrivateKey paymentKey) - mbStakeKeySpec + pure $ privateKeysToKeyWallet (PrivatePaymentKey paymentKey) mbStakeKeySpec From 405058eec6e39db4e9b8581040d83ed28ab92495 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 7 Mar 2024 23:16:55 +0400 Subject: [PATCH 065/373] Fix TxConstraints --- packages.dhall | 2 +- src/Contract/Address.purs | 2 +- src/Contract/AssocMap.purs | 2 +- src/Internal/Cardano/Types/Transaction.purs | 914 ------------------ .../Types/TransactionUnspentOutput.purs | 5 - src/Internal/ProcessConstraints/Error.purs | 20 +- src/Internal/ProcessConstraints/State.purs | 44 +- .../ProcessConstraints/UnbalancedTx.purs | 7 +- src/Internal/Types/MintingPolicy.purs | 45 + src/Internal/Types/MintingPolicyHash.purs | 37 + .../Types/NativeScriptStakeValidator.purs | 21 + src/Internal/Types/PaymentPubKey.purs | 4 +- .../Types/PlutusScriptStakeValidator.purs | 31 + src/Internal/Types/ProtocolParameters.purs | 401 ++++---- src/Internal/Types/Rational.purs | 15 +- src/Internal/Types/RawBytes.purs | 4 +- src/Internal/Types/RedeemerTag.purs | 27 +- src/Internal/Types/ScriptLookups.purs | 44 +- src/Internal/Types/Scripts.purs | 177 ---- src/Internal/Types/StakeValidatorHash.purs | 33 + src/Internal/Types/SystemStart.purs | 1 - src/Internal/Types/TxConstraints.purs | 196 +--- src/Internal/Types/UsedTxOuts.purs | 4 +- src/Internal/Types/Validator.purs | 29 + src/Internal/Types/ValidatorHash.purs | 31 + src/Internal/Wallet.purs | 5 +- src/Plutus/PubKeyHash.purs | 41 - 27 files changed, 552 insertions(+), 1590 deletions(-) delete mode 100644 src/Internal/Cardano/Types/Transaction.purs delete mode 100644 src/Internal/Cardano/Types/TransactionUnspentOutput.purs create mode 100644 src/Internal/Types/MintingPolicy.purs create mode 100644 src/Internal/Types/MintingPolicyHash.purs create mode 100644 src/Internal/Types/NativeScriptStakeValidator.purs create mode 100644 src/Internal/Types/PlutusScriptStakeValidator.purs delete mode 100644 src/Internal/Types/Scripts.purs create mode 100644 src/Internal/Types/StakeValidatorHash.purs create mode 100644 src/Internal/Types/Validator.purs create mode 100644 src/Internal/Types/ValidatorHash.purs delete mode 100644 src/Plutus/PubKeyHash.purs diff --git a/packages.dhall b/packages.dhall index 0343af23d..460df870d 100644 --- a/packages.dhall +++ b/packages.dhall @@ -361,7 +361,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "288cd06dc89d477b59e158b30803de8f6e535092" + , version = "ce71744f6a6b1f855c325d3abcc8977d99700c2e" } , cardano-message-signing = { dependencies = diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index 9fb419bb6..04d3e3710 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -5,7 +5,7 @@ module Contract.Address import Prelude -import Cardano.Types (Address, NetworkId, Bech32String) +import Cardano.Types (Address, Bech32String, NetworkId) import Cardano.Types.Address as Address import Contract.Monad (Contract, liftContractM) import Control.Monad.Error.Class (throwError) diff --git a/src/Contract/AssocMap.purs b/src/Contract/AssocMap.purs index 419361f04..5bd70dc9e 100644 --- a/src/Contract/AssocMap.purs +++ b/src/Contract/AssocMap.purs @@ -1,7 +1,7 @@ -- | A module for a Plutus-style `AssocMap` module Contract.AssocMap (module AssocMap) where -import Ctl.Internal.Plutus.Types.AssocMap +import Cardano.Plutus.Types.Map ( Map(Map) , delete , elems diff --git a/src/Internal/Cardano/Types/Transaction.purs b/src/Internal/Cardano/Types/Transaction.purs deleted file mode 100644 index f8ec7535c..000000000 --- a/src/Internal/Cardano/Types/Transaction.purs +++ /dev/null @@ -1,914 +0,0 @@ -module Ctl.Internal.Cardano.Types.Transaction - ( AuxiliaryData(AuxiliaryData) - , AuxiliaryDataHash(AuxiliaryDataHash) - , BootstrapWitness - , Certificate - ( StakeRegistration - , StakeDeregistration - , StakeDelegation - , PoolRegistration - , PoolRetirement - , GenesisKeyDelegation - , MoveInstantaneousRewardsCert - ) - , CostModel(CostModel) - , Costmdls(Costmdls) - , mkEd25519Signature - , Epoch(Epoch) - , ExUnitPrices - , ExUnits - , GenesisDelegateHash(GenesisDelegateHash) - , GenesisHash(GenesisHash) - , Ipv4(Ipv4) - , Ipv6(Ipv6) - , MIRToStakeCredentials(MIRToStakeCredentials) - , Mint(Mint) - , MoveInstantaneousReward(ToOtherPot, ToStakeCreds) - , Nonce(IdentityNonce, HashNonce) - , PoolMetadata(PoolMetadata) - , PoolMetadataHash(PoolMetadataHash) - , PoolPubKeyHash(PoolPubKeyHash) - , mkPoolPubKeyHash - , poolPubKeyHashToBech32 - , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) - , ProtocolParamUpdate - , ProtocolVersion - , Redeemer(Redeemer) - , Relay(SingleHostAddr, SingleHostName, MultiHostName) - , RequiredSigner(RequiredSigner) - , ScriptDataHash(ScriptDataHash) - , SubCoin - , Transaction(Transaction) - , PoolRegistrationParams - , TransactionWitnessSet(TransactionWitnessSet) - , TxBody(TxBody) - , URL(URL) - , UnitInterval - , Update - , Vkeywitness(Vkeywitness) - , _auxiliaryData - , _auxiliaryDataHash - , _body - , _bootstraps - , _certs - , _collateral - , _collateralReturn - , _fee - , _inputs - , _isValid - , _mint - , _nativeScripts - , _networkId - , _outputs - , _plutusData - , _plutusScripts - , _redeemers - , _referenceInputs - , _requiredSigners - , _scriptDataHash - , _totalCollateral - , _ttl - , _update - , _validityStartInterval - , _vkeys - , _withdrawals - , _witnessSet - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonString - , decodeAeson - , encodeAeson - , finiteNumber - ) -import Cardano.Plutus.Types.PubKeyHash (PubKeyHash(..)) -import Cardano.Serialization.Lib - ( ed25519Signature_fromBech32 - , ed25519Signature_toBech32 - , privateKey_asBytes - , privateKey_toBech32 - , publicKey_asBytes - , publicKey_fromBytes - , publicKey_toBech32 - , toBytes - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.Address as Address -import Cardano.AsCbor (encodeCbor) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.Coin (Coin) -import Cardano.Types.Ed25519Signature (Ed25519Signature(..)) -import Cardano.Types.Language (Language) -import Cardano.Types.MultiAsset (MultiAsset(MultiAsset)) -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.OutputDatum (OutputDatum(..)) -import Cardano.Types.PlutusData (PlutusData, pprintPlutusData) -import Cardano.Types.PlutusScript (PlutusScript(..)) -import Cardano.Types.PublicKey (PublicKey(..)) -import Cardano.Types.Slot (Slot(..)) -import Cardano.Types.StakeCredential (StakeCredential(..)) -import Cardano.Types.TransactionOutput (TransactionOutput(..)) -import Cardano.Types.TransactionOutput as X -import Cardano.Types.Value (Value, pprintValue) -import Cardano.Types.Vkey (Vkey(..)) -import Control.Alternative ((<|>)) -import Control.Apply (lift2) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Helpers - ( appendMap - , encodeMap - , encodeTagged' - , eqOrd - , () - , (<<>>) - ) -import Ctl.Internal.Serialization.Hash - ( Ed25519KeyHash - , ed25519KeyHashFromBech32 - , ed25519KeyHashToBech32 - , ed25519KeyHashToBech32Unsafe - ) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.Int as Int -import Ctl.Internal.Types.RedeemerTag (RedeemerTag) -import Ctl.Internal.Types.RewardAddress (RewardAddress) -import Ctl.Internal.Types.Transaction (TransactionInput(TransactionInput)) -import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) -import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash) -import Data.Array (union) -import Data.ByteArray (ByteArray, byteArrayToHex) -import Data.Either (Either(Left), note) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Lens (lens') -import Data.Lens.Iso.Newtype (_Newtype) -import Data.Lens.Record (prop) -import Data.Lens.Types (Lens') -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Map (Map) -import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Monoid (guard) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Set (Set) -import Data.Set (union) as Set -import Data.Show.Generic (genericShow) -import Data.String.Utils (startsWith) -import Data.Tuple (Tuple(Tuple)) -import Data.Tuple.Nested (type (/\), (/\)) -import Data.UInt (UInt) -import Data.UInt as UInt -import JS.BigInt (BigInt) -import Partial.Unsafe (unsafePartial) -import Safe.Coerce (coerce) -import Type.Proxy (Proxy(Proxy)) - --------------------------------------------------------------------------------- --- `Transaction` --------------------------------------------------------------------------------- --- note: these types are derived from the cardano-serialization-lib Sundae fork --- the source of truth for these types should be that library and the --- corresponding Rust types -newtype Transaction = Transaction - { body :: TxBody - , witnessSet :: TransactionWitnessSet - , isValid :: Boolean - , auxiliaryData :: Maybe AuxiliaryData - } - -derive instance Generic Transaction _ -derive instance Eq Transaction -derive instance Newtype Transaction _ -derive newtype instance EncodeAeson Transaction - -instance Show Transaction where - show = genericShow - --- instance Semigroup Transaction where --- append (Transaction tx) (Transaction tx') = --- Transaction --- { body: txCheck tx.body <> txCheck' tx'.body --- , witnessSet: txCheck tx.witnessSet <> txCheck' tx'.witnessSet --- , isValid: tx.isValid && tx'.isValid --- , auxiliaryData: txCheck tx.auxiliaryData <> txCheck' tx'.auxiliaryData --- } --- where --- txCheck :: forall (m :: Type). Monoid m => m -> m --- txCheck = guard tx.isValid - --- txCheck' :: forall (m :: Type). Monoid m => m -> m --- txCheck' = guard tx'.isValid - --- instance Monoid Transaction where --- mempty = Transaction --- { body: mempty --- , witnessSet: mempty --- , isValid: true --- , auxiliaryData: Nothing --- } - --------------------------------------------------------------------------------- --- `Transaction` Lenses --------------------------------------------------------------------------------- -_body :: Lens' Transaction TxBody -_body = lens' \(Transaction rec@{ body }) -> - Tuple body \bod -> Transaction rec { body = bod } - -_witnessSet :: Lens' Transaction TransactionWitnessSet -_witnessSet = lens' \(Transaction rec@{ witnessSet }) -> - Tuple witnessSet \ws -> Transaction rec { witnessSet = ws } - -_isValid :: Lens' Transaction Boolean -_isValid = lens' \(Transaction rec@{ isValid }) -> - Tuple isValid \iv -> Transaction rec { isValid = iv } - -_auxiliaryData :: Lens' Transaction (Maybe AuxiliaryData) -_auxiliaryData = lens' \(Transaction rec@{ auxiliaryData }) -> - Tuple auxiliaryData \ad -> Transaction rec { auxiliaryData = ad } - --------------------------------------------------------------------------------- --- `TxBody` --------------------------------------------------------------------------------- --- According to https://github.com/input-output-hk/cardano-ledger/blob/master/eras/babbage/test-suite/cddl-files/babbage.cddl --- requiredSigners is an Array over `VKey`s essentially. But some comments at --- the bottom say it's Maybe? -newtype TxBody = TxBody - { inputs :: Set TransactionInput - , outputs :: Array TransactionOutput - , fee :: Coin - , ttl :: Maybe Slot - , certs :: Maybe (Array Certificate) - , withdrawals :: Maybe (Map RewardAddress Coin) - , update :: Maybe Update - , auxiliaryDataHash :: Maybe AuxiliaryDataHash - , validityStartInterval :: Maybe Slot - , mint :: Maybe Mint - , scriptDataHash :: Maybe ScriptDataHash - , collateral :: Maybe (Array TransactionInput) - , requiredSigners :: Maybe (Array RequiredSigner) - , networkId :: Maybe NetworkId - , collateralReturn :: Maybe TransactionOutput - , totalCollateral :: Maybe Coin - , referenceInputs :: Set TransactionInput - } - -derive instance Generic TxBody _ -derive instance Newtype TxBody _ -derive newtype instance Eq TxBody - -instance Show TxBody where - show = genericShow - --- instance Semigroup TxBody where --- append (TxBody txB) (TxBody txB') = TxBody --- { inputs: txB.inputs `Set.union` txB'.inputs --- , outputs: txB.outputs `union` txB'.outputs --- , fee: txB.fee <> txB'.fee --- , ttl: lift2 lowerbound txB.ttl txB'.ttl --- , certs: lift2 union txB.certs txB'.certs --- , withdrawals: lift2 appendMap txB.withdrawals txB'.withdrawals --- , update: txB.update txB'.update --- , auxiliaryDataHash: txB.auxiliaryDataHash txB'.auxiliaryDataHash --- , validityStartInterval: --- lift2 lowerbound --- txB.validityStartInterval --- txB'.validityStartInterval --- , mint: txB.mint <> txB'.mint --- , referenceInputs: txB.referenceInputs <> txB'.referenceInputs --- , scriptDataHash: txB.scriptDataHash txB'.scriptDataHash --- , collateral: lift2 union txB.collateral txB'.collateral --- , requiredSigners: lift2 union txB.requiredSigners txB'.requiredSigners --- , networkId: txB.networkId txB'.networkId --- , collateralReturn: txB.collateralReturn <|> txB.collateralReturn --- , totalCollateral: txB.totalCollateral <|> txB.totalCollateral --- } --- where --- lowerbound :: Slot -> Slot -> Slot --- lowerbound (Slot x) (Slot y) = Slot $ min x y - --- instance Monoid TxBody where --- mempty = TxBody --- { inputs: mempty --- , outputs: mempty --- , fee: mempty --- , ttl: Nothing --- , certs: Nothing --- , withdrawals: Nothing --- , update: Nothing --- , auxiliaryDataHash: Nothing --- , validityStartInterval: Nothing --- , mint: Nothing --- , scriptDataHash: Nothing --- , collateral: Nothing --- , requiredSigners: Nothing --- , networkId: Nothing --- , collateralReturn: Nothing --- , totalCollateral: Nothing --- , referenceInputs: mempty --- } - -instance EncodeAeson TxBody where - encodeAeson (TxBody r) = encodeAeson $ r - { withdrawals = encodeMap <$> r.withdrawals } - -newtype ScriptDataHash = ScriptDataHash ByteArray - -derive instance Newtype ScriptDataHash _ -derive instance Generic ScriptDataHash _ -derive newtype instance Eq ScriptDataHash -derive newtype instance EncodeAeson ScriptDataHash - -instance Show ScriptDataHash where - show = genericShow - -newtype Mint = Mint MultiAsset - -derive instance Generic Mint _ -derive instance Newtype Mint _ -derive newtype instance Eq Mint -derive newtype instance EncodeAeson Mint -derive newtype instance DecodeAeson Mint - -instance Show Mint where - show = genericShow - -newtype AuxiliaryDataHash = AuxiliaryDataHash ByteArray - -derive instance Generic AuxiliaryDataHash _ -derive instance Newtype AuxiliaryDataHash _ -derive newtype instance Eq AuxiliaryDataHash -derive newtype instance EncodeAeson AuxiliaryDataHash - -instance Show AuxiliaryDataHash where - show = genericShow - -type Update = - { proposedProtocolParameterUpdates :: ProposedProtocolParameterUpdates - , epoch :: Epoch - } - -newtype ProposedProtocolParameterUpdates = - ProposedProtocolParameterUpdates (Map GenesisHash ProtocolParamUpdate) - -derive instance Newtype ProposedProtocolParameterUpdates _ - -derive newtype instance Eq ProposedProtocolParameterUpdates - -derive instance Generic ProposedProtocolParameterUpdates _ - -instance Show ProposedProtocolParameterUpdates where - show = genericShow - -instance EncodeAeson ProposedProtocolParameterUpdates where - encodeAeson (ProposedProtocolParameterUpdates r) = encodeMap r - -newtype GenesisHash = GenesisHash ByteArray - -derive instance Newtype GenesisHash _ -derive newtype instance Eq GenesisHash -derive newtype instance Ord GenesisHash -derive instance Generic GenesisHash _ -derive newtype instance EncodeAeson GenesisHash - -instance Show GenesisHash where - show = genericShow - -type ProtocolParamUpdate = - { minfeeA :: Maybe Coin - , minfeeB :: Maybe Coin - , maxBlockBodySize :: Maybe UInt - , maxTxSize :: Maybe UInt - , maxBlockHeaderSize :: Maybe UInt - , keyDeposit :: Maybe Coin - , poolDeposit :: Maybe Coin - , maxEpoch :: Maybe Epoch - , nOpt :: Maybe UInt - , poolPledgeInfluence :: Maybe UnitInterval - , expansionRate :: Maybe UnitInterval - , treasuryGrowthRate :: Maybe UnitInterval - , protocolVersion :: Maybe ProtocolVersion - , minPoolCost :: Maybe BigNum - , adaPerUtxoByte :: Maybe BigNum - , costModels :: Maybe Costmdls - , executionCosts :: Maybe ExUnitPrices - , maxTxExUnits :: Maybe ExUnits - , maxBlockExUnits :: Maybe ExUnits - , maxValueSize :: Maybe UInt - , collateralPercentage :: Maybe UInt - , maxCollateralInputs :: Maybe UInt - } - -type ExUnitPrices = - { memPrice :: SubCoin - , stepPrice :: SubCoin - } - -type ExUnits = - { mem :: BigInt - , steps :: BigInt - } - -type SubCoin = UnitInterval - -newtype Costmdls = Costmdls (Map Language CostModel) - -derive instance Newtype Costmdls _ -derive newtype instance Eq Costmdls -derive instance Generic Costmdls _ - -instance Show Costmdls where - show = genericShow - -instance EncodeAeson Costmdls where - encodeAeson = encodeMap <<< unwrap - -newtype CostModel = CostModel (Array Int.Int) - -derive instance Newtype CostModel _ -derive newtype instance Eq CostModel -derive newtype instance EncodeAeson CostModel -derive instance Generic Nonce _ -derive instance Generic CostModel _ - -instance Show CostModel where - show = genericShow - -type ProtocolVersion = - { major :: UInt - , minor :: UInt - } - --- Following CSL Nonce is either None or a 32 byte hash -data Nonce = IdentityNonce | HashNonce ByteArray - -derive instance Eq Nonce - -instance Show Nonce where - show = genericShow - -instance DecodeAeson Nonce where - decodeAeson aeson = (HashNonce <$> decodeAeson aeson) <|> - caseAesonString err - ( case _ of - "neutral" -> pure IdentityNonce - _ -> err - ) - aeson - where - err :: Either JsonDecodeError Nonce - err = Left (TypeMismatch "Nonce") - -instance EncodeAeson Nonce where - encodeAeson IdentityNonce = encodeAeson "neutral" - encodeAeson (HashNonce hash) = encodeAeson hash - -type UnitInterval = - { numerator :: BigNum - , denominator :: BigNum - } - -newtype Epoch = Epoch UInt - -derive instance Newtype Epoch _ -derive instance Generic Epoch _ -derive newtype instance Eq Epoch -derive newtype instance EncodeAeson Epoch - -instance Show Epoch where - show = genericShow - -newtype Ipv4 = Ipv4 ByteArray - -derive instance Eq Ipv4 -derive instance Generic Ipv4 _ -derive instance Newtype Ipv4 _ --- TODO: Use a more legible representation -derive newtype instance EncodeAeson Ipv4 - -instance Show Ipv4 where - show = genericShow - -newtype Ipv6 = Ipv6 ByteArray - -derive instance Eq Ipv6 -derive instance Generic Ipv6 _ -derive instance Newtype Ipv6 _ -derive newtype instance EncodeAeson Ipv6 - -instance Show Ipv6 where - show = genericShow - -data Relay - = SingleHostAddr - { port :: Maybe Int - , ipv4 :: Maybe Ipv4 - , ipv6 :: Maybe Ipv6 - } - | SingleHostName - { port :: Maybe Int - , dnsName :: String - } - | MultiHostName { dnsName :: String } - -derive instance Eq Relay -derive instance Generic Relay _ - -instance Show Relay where - show = genericShow - -instance EncodeAeson Relay where - encodeAeson = case _ of - SingleHostAddr r -> encodeTagged' "SingleHostAddr" r - SingleHostName r -> encodeTagged' "SingleHostName" r - MultiHostName r -> encodeTagged' "MultiHostName" r - -newtype URL = URL String - -derive instance Eq URL -derive instance Generic URL _ -derive instance Newtype URL _ -derive newtype instance EncodeAeson URL - -instance Show URL where - show = genericShow - -newtype PoolMetadataHash = PoolMetadataHash ByteArray - -derive instance Eq PoolMetadataHash -derive instance Generic PoolMetadataHash _ -derive instance Newtype PoolMetadataHash _ -derive newtype instance EncodeAeson PoolMetadataHash - -instance Show PoolMetadataHash where - show = genericShow - -newtype PoolMetadata = PoolMetadata - { url :: URL - , hash :: PoolMetadataHash - } - -derive instance Eq PoolMetadata -derive instance Generic PoolMetadata _ -derive newtype instance EncodeAeson PoolMetadata - -instance Show PoolMetadata where - show = genericShow - -newtype GenesisDelegateHash = GenesisDelegateHash ByteArray - -derive instance Eq GenesisDelegateHash -derive instance Generic GenesisDelegateHash _ -derive newtype instance EncodeAeson GenesisDelegateHash - -instance Show GenesisDelegateHash where - show = genericShow - -newtype MIRToStakeCredentials = MIRToStakeCredentials - (Map StakeCredential Int.Int) - -derive instance Eq MIRToStakeCredentials -derive instance Generic MIRToStakeCredentials _ - -instance Show MIRToStakeCredentials where - show = genericShow - -instance EncodeAeson MIRToStakeCredentials where - encodeAeson (MIRToStakeCredentials r) = encodeMap r - -data MoveInstantaneousReward - = ToOtherPot - { pot :: Number - , amount :: BigNum - } - | ToStakeCreds - { pot :: Number - , amounts :: MIRToStakeCredentials - } - -derive instance Eq MoveInstantaneousReward -derive instance Generic MoveInstantaneousReward _ - -instance Show MoveInstantaneousReward where - show = genericShow - -instance EncodeAeson MoveInstantaneousReward where - encodeAeson = case _ of - ToOtherPot r -> encodeTagged' "ToOtherPot" r - -- We assume the numbers are finite - { pot = unsafePartial $ fromJust $ finiteNumber r.pot } - ToStakeCreds r -> encodeTagged' "ToStakeCreds" r - -- We assume the numbers are finite - { pot = unsafePartial $ fromJust $ finiteNumber r.pot } - -type PoolRegistrationParams = - { operator :: PoolPubKeyHash -- cwitness (cert) - , vrfKeyhash :: VRFKeyHash - -- needed to prove that the pool won the lottery - , pledge :: BigNum - , cost :: BigNum -- >= pparams.minPoolCost - , margin :: UnitInterval -- proportion that goes to the reward account - , rewardAccount :: RewardAddress - , poolOwners :: Array PubKeyHash - -- payment key hashes that contribute to pledge amount - , relays :: Array Relay - , poolMetadata :: Maybe PoolMetadata - } - -newtype PoolPubKeyHash = PoolPubKeyHash PubKeyHash - -derive instance Newtype PoolPubKeyHash _ -derive instance Eq PoolPubKeyHash -derive instance Ord PoolPubKeyHash -derive instance Generic PoolPubKeyHash _ -derive newtype instance ToData PoolPubKeyHash -derive newtype instance FromData PoolPubKeyHash - -instance EncodeAeson PoolPubKeyHash where - encodeAeson (PoolPubKeyHash kh) = - encodeAeson (ed25519KeyHashToBech32 "pool" $ unwrap kh) - -instance DecodeAeson PoolPubKeyHash where - decodeAeson aeson = do - str <- decodeAeson aeson - PoolPubKeyHash <<< PubKeyHash <$> note (TypeMismatch "PoolPubKeyHash") - (ed25519KeyHashFromBech32 str) - -instance Show PoolPubKeyHash where - show (PoolPubKeyHash kh) = - "(PoolPubKeyHash (Ed25519KeyHash (unsafePartial $ fromJust $ \ - \ed25519KeyHashFromBech32 " - <> show (ed25519KeyHashToBech32 "pool" $ unwrap kh) - <> ")))" - -mkPoolPubKeyHash :: Bech32String -> Maybe PoolPubKeyHash -mkPoolPubKeyHash str - | startsWith "pool" str = PoolPubKeyHash <<< PubKeyHash <$> - ed25519KeyHashFromBech32 str - | otherwise = Nothing - -poolPubKeyHashToBech32 :: PoolPubKeyHash -> Bech32String -poolPubKeyHashToBech32 = unsafePartial $ unwrap >>> unwrap >>> - ed25519KeyHashToBech32Unsafe "pool" - -data Certificate - = StakeRegistration StakeCredential - | StakeDeregistration StakeCredential - | StakeDelegation StakeCredential PoolPubKeyHash - | PoolRegistration PoolRegistrationParams - | PoolRetirement - { poolKeyHash :: PoolPubKeyHash - , epoch :: Epoch - } - | GenesisKeyDelegation - { genesisHash :: GenesisHash - , genesisDelegateHash :: GenesisDelegateHash - , vrfKeyhash :: VRFKeyHash - } - | MoveInstantaneousRewardsCert MoveInstantaneousReward - -derive instance Eq Certificate -derive instance Generic Certificate _ - -instance Show Certificate where - show = genericShow - -instance EncodeAeson Certificate where - encodeAeson = case _ of - StakeRegistration r -> encodeTagged' "StakeRegistration" r - StakeDeregistration r -> encodeTagged' "StakeDeregistration" - r - StakeDelegation cred hash -> encodeTagged' "StakeDelegation" - { stakeCredential: cred, ed25519KeyHash: hash } - PoolRegistration r -> encodeTagged' "PoolRegistration" r - PoolRetirement r -> encodeTagged' "PoolRetirement" r - GenesisKeyDelegation r -> encodeTagged' - "GenesisKeyDelegation" - r - MoveInstantaneousRewardsCert r -> encodeTagged' - "MoveInstantaneousReward" - r - --------------------------------------------------------------------------------- --- `TxBody` Lenses --------------------------------------------------------------------------------- - -_inputs :: Lens' TxBody (Set TransactionInput) -_inputs = _Newtype <<< prop (Proxy :: Proxy "inputs") - -_outputs :: Lens' TxBody (Array TransactionOutput) -_outputs = _Newtype <<< prop (Proxy :: Proxy "outputs") - -_fee :: Lens' TxBody (Coin) -_fee = _Newtype <<< prop (Proxy :: Proxy "fee") - -_ttl :: Lens' TxBody (Maybe Slot) -_ttl = _Newtype <<< prop (Proxy :: Proxy "ttl") - -_certs :: Lens' TxBody (Maybe (Array Certificate)) -_certs = _Newtype <<< prop (Proxy :: Proxy "certs") - -_withdrawals :: Lens' TxBody (Maybe (Map RewardAddress Coin)) -_withdrawals = _Newtype <<< prop (Proxy :: Proxy "withdrawals") - -_update :: Lens' TxBody (Maybe Update) -_update = _Newtype <<< prop (Proxy :: Proxy "update") - -_auxiliaryDataHash :: Lens' TxBody (Maybe AuxiliaryDataHash) -_auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") - -_validityStartInterval :: Lens' TxBody (Maybe Slot) -_validityStartInterval = - _Newtype <<< prop (Proxy :: Proxy "validityStartInterval") - -_mint :: Lens' TxBody (Maybe Mint) -_mint = _Newtype <<< prop (Proxy :: Proxy "mint") - -_scriptDataHash :: Lens' TxBody (Maybe ScriptDataHash) -_scriptDataHash = _Newtype <<< prop (Proxy :: Proxy "scriptDataHash") - -_collateral :: Lens' TxBody (Maybe (Array TransactionInput)) -_collateral = _Newtype <<< prop (Proxy :: Proxy "collateral") - -_requiredSigners :: Lens' TxBody (Maybe (Array RequiredSigner)) -_requiredSigners = _Newtype <<< prop (Proxy :: Proxy "requiredSigners") - -_networkId :: Lens' TxBody (Maybe NetworkId) -_networkId = _Newtype <<< prop (Proxy :: Proxy "networkId") - -_referenceInputs :: Lens' TxBody (Set TransactionInput) -_referenceInputs = _Newtype <<< prop (Proxy :: Proxy "referenceInputs") - -_collateralReturn :: Lens' TxBody (Maybe TransactionOutput) -_collateralReturn = _Newtype <<< prop (Proxy :: Proxy "collateralReturn") - -_totalCollateral :: Lens' TxBody (Maybe Coin) -_totalCollateral = _Newtype <<< prop (Proxy :: Proxy "totalCollateral") - --------------------------------------------------------------------------------- --- `TransactionWitnessSet` --------------------------------------------------------------------------------- -newtype TransactionWitnessSet = TransactionWitnessSet - { vkeys :: Maybe (Array Vkeywitness) - , nativeScripts :: Maybe (Array NativeScript) - , bootstraps :: Maybe (Array BootstrapWitness) - , plutusScripts :: Maybe (Array PlutusScript) - , plutusData :: Maybe (Array PlutusData) - , redeemers :: Maybe (Array Redeemer) - } - -derive instance Generic TransactionWitnessSet _ -derive instance Newtype TransactionWitnessSet _ -derive newtype instance Eq TransactionWitnessSet -derive newtype instance EncodeAeson TransactionWitnessSet - -instance Show TransactionWitnessSet where - show = genericShow - -instance Semigroup TransactionWitnessSet where - append (TransactionWitnessSet tws) (TransactionWitnessSet tws') = - TransactionWitnessSet - { vkeys: tws.vkeys <<>> tws'.vkeys - , nativeScripts: tws.nativeScripts <<>> tws'.nativeScripts - , bootstraps: tws.bootstraps <<>> tws'.bootstraps - , plutusScripts: tws.plutusScripts <<>> tws'.plutusScripts - , plutusData: tws.plutusData <<>> tws'.plutusData - , redeemers: tws.redeemers <<>> tws'.redeemers - } - -instance Monoid TransactionWitnessSet where - mempty = TransactionWitnessSet - { vkeys: Nothing - , nativeScripts: Nothing - , bootstraps: Nothing - , plutusScripts: Nothing - , plutusData: Nothing - , redeemers: Nothing - } - --------------------------------------------------------------------------------- --- `TransactionWitnessSet` Lenses --------------------------------------------------------------------------------- -_vkeys :: Lens' TransactionWitnessSet (Maybe (Array Vkeywitness)) -_vkeys = lens' \(TransactionWitnessSet rec@{ vkeys }) -> - Tuple vkeys \vk -> TransactionWitnessSet rec { vkeys = vk } - -_nativeScripts :: Lens' TransactionWitnessSet (Maybe (Array NativeScript)) -_nativeScripts = lens' \(TransactionWitnessSet rec@{ nativeScripts }) -> - Tuple nativeScripts \ns -> TransactionWitnessSet rec { nativeScripts = ns } - -_bootstraps :: Lens' TransactionWitnessSet (Maybe (Array BootstrapWitness)) -_bootstraps = lens' \(TransactionWitnessSet rec@{ bootstraps }) -> - Tuple bootstraps \bs -> TransactionWitnessSet rec { bootstraps = bs } - -_plutusScripts :: Lens' TransactionWitnessSet (Maybe (Array PlutusScript)) -_plutusScripts = lens' \(TransactionWitnessSet rec@{ plutusScripts }) -> - Tuple plutusScripts \ps -> TransactionWitnessSet rec { plutusScripts = ps } - -_plutusData :: Lens' TransactionWitnessSet (Maybe (Array PlutusData)) -_plutusData = lens' \(TransactionWitnessSet rec@{ plutusData }) -> - Tuple plutusData \pd -> TransactionWitnessSet rec { plutusData = pd } - -_redeemers :: Lens' TransactionWitnessSet (Maybe (Array Redeemer)) -_redeemers = lens' \(TransactionWitnessSet rec@{ redeemers }) -> - Tuple redeemers \red -> TransactionWitnessSet rec { redeemers = red } - --------------------------------------------------------------------------------- --- Other Datatypes --------------------------------------------------------------------------------- -type BootstrapWitness = - { vkey :: Vkey - , signature :: Ed25519Signature - , chainCode :: ByteArray - , attributes :: ByteArray - } - -newtype RequiredSigner = RequiredSigner Ed25519KeyHash - -derive instance Newtype RequiredSigner _ -derive newtype instance Eq RequiredSigner -derive newtype instance Ord RequiredSigner -derive newtype instance EncodeAeson RequiredSigner -derive instance Generic RequiredSigner _ - -instance Show RequiredSigner where - show = genericShow - -newtype Vkeywitness = Vkeywitness (Vkey /\ Ed25519Signature) - -derive instance Generic Vkeywitness _ -derive newtype instance Eq Vkeywitness -derive newtype instance EncodeAeson Vkeywitness -derive instance Newtype Vkeywitness _ - -instance Show Vkeywitness where - show = genericShow - --- ToData/FromData instances are intentionally not provided: --- it is pointless to store PrivateKeys in plutus script contexts, --- so the instances are commented-out to prevent people from doing --- something dangerous. - --- instance ToData PrivateKey where --- toData (PrivateKey pk) = toData $ privateKey_asBytes pk - --- instance FromData PrivateKey where --- fromData = map wrap <<< toMaybe <<< privateKey_fromNormalBytes <=< fromData - -mkEd25519Signature :: Bech32String -> Maybe Ed25519Signature -mkEd25519Signature = - coerce <<< toMaybe <<< ed25519Signature_fromBech32 - -newtype Redeemer = Redeemer - { tag :: RedeemerTag - , index :: BigInt - , data :: PlutusData - , exUnits :: ExUnits - } - -derive instance Generic Redeemer _ -derive instance Newtype Redeemer _ -derive newtype instance Eq Redeemer -derive newtype instance Ord Redeemer -derive newtype instance EncodeAeson Redeemer - -instance Show Redeemer where - show = genericShow - -newtype AuxiliaryData = AuxiliaryData - { metadata :: Maybe GeneralTransactionMetadata - , nativeScripts :: Maybe (Array NativeScript) - , plutusScripts :: Maybe (Array PlutusScript) - } - -derive instance Generic AuxiliaryData _ -derive instance Newtype AuxiliaryData _ -derive newtype instance Eq AuxiliaryData -derive newtype instance EncodeAeson AuxiliaryData - -instance Show AuxiliaryData where - show = genericShow - -instance Semigroup AuxiliaryData where - append (AuxiliaryData ad) (AuxiliaryData ad') = - AuxiliaryData - { metadata: ad.metadata <> ad'.metadata - , nativeScripts: lift2 union ad.nativeScripts ad'.nativeScripts - , plutusScripts: lift2 union ad.plutusScripts ad'.plutusScripts - } - -instance Monoid AuxiliaryData where - mempty = AuxiliaryData - { metadata: Nothing - , nativeScripts: Nothing - , plutusScripts: Nothing - } diff --git a/src/Internal/Cardano/Types/TransactionUnspentOutput.purs b/src/Internal/Cardano/Types/TransactionUnspentOutput.purs deleted file mode 100644 index f753fe358..000000000 --- a/src/Internal/Cardano/Types/TransactionUnspentOutput.purs +++ /dev/null @@ -1,5 +0,0 @@ -module Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( module X - ) where - -import Cardano.Types.TransactionUnspentOutput as X diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 8ecebde23..74875541c 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -13,11 +13,23 @@ import Cardano.Types.PlutusData (PlutusData) import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) import Cardano.Types.ScriptHash (ScriptHash) import Cardano.Types.StakePubKeyHash (StakePubKeyHash) -import Cardano.Types.TransactionInput (TransactionInput(..)) -import Cardano.Types.TransactionOutput (TransactionOutput, pprintTransactionOutput) +import Cardano.Types.TransactionInput (TransactionInput(TransactionInput)) +import Cardano.Types.TransactionOutput + ( TransactionOutput + , pprintTransactionOutput + ) import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) -import Ctl.Internal.Types.Interval (POSIXTimeRange, PosixTimeToSlotError, explainPosixTimeToSlotError) -import Ctl.Internal.Types.Scripts (MintingPolicyHash, NativeScriptStakeValidator, PlutusScriptStakeValidator, ValidatorHash) +import Ctl.Internal.Types.Interval + ( POSIXTimeRange + , PosixTimeToSlotError + , explainPosixTimeToSlotError + ) +import Ctl.Internal.Types.Scripts + ( MintingPolicyHash + , NativeScriptStakeValidator + , PlutusScriptStakeValidator + , ValidatorHash + ) import Data.ByteArray (byteArrayToHex) import Data.Generic.Rep (class Generic) import Data.Log.Tag (tagSetTag) diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index aca0d685d..3d5c528d7 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -19,17 +19,12 @@ module Ctl.Internal.ProcessConstraints.State import Prelude hiding (join) -import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types (CostModel, Language, Transaction, UtxoMap) +import Cardano.Types.Value (Value) +import Cardano.Types.Value as Value import Control.Monad.State.Trans (StateT) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) -import Ctl.Internal.Cardano.Types.Transaction - ( Costmdls - , Transaction - , TransactionOutput - ) -import Ctl.Internal.Cardano.Types.Value (Value, negation, split) import Ctl.Internal.Contract.Monad (Contract) -import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Data.Generic.Rep (class Generic) @@ -37,8 +32,8 @@ import Data.Lattice (join) import Data.Lens.Record (prop) import Data.Lens.Types (Lens') import Data.Map (Map) +import Data.Maybe (Maybe) import Data.Show.Generic (genericShow) -import Data.Tuple.Nested ((/\)) import Type.Proxy (Proxy(Proxy)) -- A `StateT` ontop of `QueryM` ~ ReaderT QueryConfig Aff`. @@ -54,7 +49,7 @@ type ConstraintsM (a :: Type) = type ConstraintProcessingState = { transaction :: Transaction -- ^ The unbalanced transaction that we're building - , usedUtxos :: Map TransactionInput TransactionOutput + , usedUtxos :: UtxoMap -- ^ All UTxOs that are used in the Tx , valueSpentBalancesInputs :: ValueSpentBalances -- ^ Balance of the values given and required for the transaction's inputs @@ -69,9 +64,8 @@ type ConstraintProcessingState = -- ^ ScriptLookups for resolving constraints. Should be treated as an immutable -- value despite living inside the processing state -- TODO: remove: https://github.com/Plutonomicon/cardano-transaction-lib/issues/843 - , refScriptsUtxoMap :: - Map TransactionInput Plutus.TransactionOutputWithRefScript - , costModels :: Costmdls + , refScriptsUtxoMap :: UtxoMap + , costModels :: Map Language CostModel } _cpsTransaction @@ -79,8 +73,7 @@ _cpsTransaction _cpsTransaction = prop (Proxy :: Proxy "transaction") _cpsUsedUtxos - :: Lens' ConstraintProcessingState - (Map TransactionInput TransactionOutput) + :: Lens' ConstraintProcessingState UtxoMap _cpsUsedUtxos = prop (Proxy :: Proxy "usedUtxos") _valueSpentBalancesInputs @@ -96,7 +89,7 @@ _datums _datums = prop (Proxy :: Proxy "datums") _costModels - :: Lens' ConstraintProcessingState Costmdls + :: Lens' ConstraintProcessingState (Map Language CostModel) _costModels = prop (Proxy :: Proxy "costModels") _redeemers @@ -108,8 +101,7 @@ _lookups _lookups = prop (Proxy :: Proxy "lookups") _refScriptsUtxoMap - :: Lens' ConstraintProcessingState - (Map TransactionInput Plutus.TransactionOutputWithRefScript) + :: Lens' ConstraintProcessingState UtxoMap _refScriptsUtxoMap = prop (Proxy :: Proxy "refScriptsUtxoMap") -- | The balances we track for computing the missing 'Value' (if any) @@ -133,21 +125,17 @@ instance Semigroup ValueSpentBalances where , provided: l.provided `join` r.provided } -missingValueSpent :: ValueSpentBalances -> Value +missingValueSpent :: ValueSpentBalances -> Maybe Value missingValueSpent (ValueSpentBalances { required, provided }) = - let - difference = required <> negation provided - _ /\ missing = split difference - in - missing + Value.minus required provided -totalMissingValue :: ConstraintProcessingState -> Value +totalMissingValue :: ConstraintProcessingState -> Maybe Value totalMissingValue { valueSpentBalancesInputs, valueSpentBalancesOutputs } = - missingValueSpent valueSpentBalancesInputs `join` + join <$> missingValueSpent valueSpentBalancesInputs <*> missingValueSpent valueSpentBalancesOutputs provideValue :: Value -> ValueSpentBalances -provideValue provided = ValueSpentBalances { provided, required: mempty } +provideValue provided = ValueSpentBalances { provided, required: Value.zero } requireValue :: Value -> ValueSpentBalances -requireValue required = ValueSpentBalances { required, provided: mempty } +requireValue required = ValueSpentBalances { required, provided: Value.zero } diff --git a/src/Internal/ProcessConstraints/UnbalancedTx.purs b/src/Internal/ProcessConstraints/UnbalancedTx.purs index 81b92a3c2..deee55248 100644 --- a/src/Internal/ProcessConstraints/UnbalancedTx.purs +++ b/src/Internal/ProcessConstraints/UnbalancedTx.purs @@ -4,11 +4,11 @@ module Ctl.Internal.ProcessConstraints.UnbalancedTx import Prelude hiding (join) +import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.Transaction (Transaction) import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionOutput (TransactionOutput) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) -import Ctl.Internal.Cardano.Types.Transaction (Transaction) -import Ctl.Internal.Types.Datum (Datum) import Data.Generic.Rep (class Generic) import Data.Map (Map) import Data.Newtype (class Newtype) @@ -19,7 +19,8 @@ import Data.Show.Generic (genericShow) newtype UnbalancedTx = UnbalancedTx { transaction :: Transaction -- the unbalanced tx created , usedUtxos :: Map TransactionInput TransactionOutput - , datums :: Array Datum -- the array of ordered datums that require attaching + , datums :: + Array PlutusData -- the array of ordered datums that require attaching , redeemers :: Array UnindexedRedeemer } diff --git a/src/Internal/Types/MintingPolicy.purs b/src/Internal/Types/MintingPolicy.purs new file mode 100644 index 000000000..beedd0765 --- /dev/null +++ b/src/Internal/Types/MintingPolicy.purs @@ -0,0 +1,45 @@ +module Ctl.Internal.Types.MintingPolicy + ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) + , hash + ) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) +import Cardano.Plutus.Types.MintingPolicyHash (MintingPolicyHash) +import Cardano.Types.NativeScript (NativeScript) +import Cardano.Types.NativeScript as NativeScript +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.PlutusScript as PlutusScript +import Control.Alt ((<|>)) +import Ctl.Internal.Helpers (decodeTaggedNewtype) +import Data.Generic.Rep (class Generic) +import Data.Newtype (wrap) +import Data.Show.Generic (genericShow) + +-- | `MintingPolicy` is a sum type of `PlutusScript` and `NativeScript` which are used as +-- | validators for minting constraints. +data MintingPolicy + = PlutusMintingPolicy PlutusScript + | NativeMintingPolicy NativeScript + +derive instance Generic MintingPolicy _ +derive instance Eq MintingPolicy + +instance DecodeAeson MintingPolicy where + decodeAeson aes = + decodeTaggedNewtype "getPlutusMintingPolicy" PlutusMintingPolicy aes <|> + decodeTaggedNewtype "getNativeMintingPolicy" NativeMintingPolicy aes + +instance EncodeAeson MintingPolicy where + encodeAeson (NativeMintingPolicy nscript) = + encodeAeson { "getNativeMintingPolicy": nscript } + encodeAeson (PlutusMintingPolicy script) = + encodeAeson { "getPlutusMintingPolicy": script } + +instance Show MintingPolicy where + show = genericShow + +hash :: MintingPolicy -> MintingPolicyHash +hash (PlutusMintingPolicy ps) = wrap $ PlutusScript.hash ps +hash (NativeMintingPolicy ns) = wrap $ NativeScript.hash ns diff --git a/src/Internal/Types/MintingPolicyHash.purs b/src/Internal/Types/MintingPolicyHash.purs new file mode 100644 index 000000000..73d438b27 --- /dev/null +++ b/src/Internal/Types/MintingPolicyHash.purs @@ -0,0 +1,37 @@ +module Ctl.Internal.Types.MintingPolicyHash + ( MintingPolicyHash(MintingPolicyHash) + ) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) +import Cardano.FromData (class FromData) +import Cardano.FromMetadata (class FromMetadata) +import Cardano.ToData (class ToData) +import Cardano.ToMetadata (class ToMetadata) +import Cardano.Types.ScriptHash (ScriptHash) +import Ctl.Internal.Helpers (decodeTaggedNewtype) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype MintingPolicyHash = MintingPolicyHash ScriptHash + +derive instance Generic MintingPolicyHash _ +derive instance Newtype MintingPolicyHash _ +derive newtype instance Eq MintingPolicyHash +derive newtype instance Ord MintingPolicyHash +derive newtype instance FromData MintingPolicyHash +derive newtype instance ToData MintingPolicyHash +derive newtype instance FromMetadata MintingPolicyHash +derive newtype instance ToMetadata MintingPolicyHash + +instance DecodeAeson MintingPolicyHash where + decodeAeson = decodeTaggedNewtype "getMintingPolicyHash" MintingPolicyHash + +instance EncodeAeson MintingPolicyHash where + encodeAeson (MintingPolicyHash hash) = + encodeAeson { "getMintingPolicyHash": hash } + +instance Show MintingPolicyHash where + show = genericShow diff --git a/src/Internal/Types/NativeScriptStakeValidator.purs b/src/Internal/Types/NativeScriptStakeValidator.purs new file mode 100644 index 000000000..de84e0d28 --- /dev/null +++ b/src/Internal/Types/NativeScriptStakeValidator.purs @@ -0,0 +1,21 @@ +module Ctl.Internal.Types.NativeScriptStakeValidator + ( NativeScriptStakeValidator(NativeScriptStakeValidator) + ) where + +import Prelude + +import Cardano.Types.NativeScript (NativeScript) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +-- | `NativeScriptStakeValidator`s are used as validators for withdrawals and +-- | stake address certificates. +newtype NativeScriptStakeValidator = NativeScriptStakeValidator NativeScript + +derive instance Newtype NativeScriptStakeValidator _ +derive instance Generic NativeScriptStakeValidator _ +derive instance Eq NativeScriptStakeValidator + +instance Show NativeScriptStakeValidator where + show = genericShow diff --git a/src/Internal/Types/PaymentPubKey.purs b/src/Internal/Types/PaymentPubKey.purs index cdef8372a..a79dfb05c 100644 --- a/src/Internal/Types/PaymentPubKey.purs +++ b/src/Internal/Types/PaymentPubKey.purs @@ -6,7 +6,7 @@ module Ctl.Internal.Types.PaymentPubKey import Prelude -import Ctl.Internal.Serialization (publicKeyHash) +import Cardano.Types.PublicKey as PublicKey import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) @@ -27,4 +27,4 @@ paymentPubKeyToVkey (PaymentPubKey pk) = Vkey pk paymentPubKeyToRequiredSigner :: PaymentPubKey -> RequiredSigner paymentPubKeyToRequiredSigner (PaymentPubKey pk) = - RequiredSigner <<< publicKeyHash $ unwrap pk + RequiredSigner <<< PublicKey.hash $ unwrap pk diff --git a/src/Internal/Types/PlutusScriptStakeValidator.purs b/src/Internal/Types/PlutusScriptStakeValidator.purs new file mode 100644 index 000000000..ef1071069 --- /dev/null +++ b/src/Internal/Types/PlutusScriptStakeValidator.purs @@ -0,0 +1,31 @@ +module Ctl.Internal.Types.PlutusScriptStakeValidator + ( PlutusScriptStakeValidator(PlutusScriptStakeValidator) + ) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) +import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) +import Ctl.Internal.Helpers (decodeTaggedNewtype) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +-- | `PlutusScriptStakeValidator`s are used as validators for withdrawals and +-- | stake address certificates. +newtype PlutusScriptStakeValidator = PlutusScriptStakeValidator PlutusScript + +derive instance Newtype PlutusScriptStakeValidator _ +derive instance Generic PlutusScriptStakeValidator _ +derive instance Eq PlutusScriptStakeValidator + +instance DecodeAeson PlutusScriptStakeValidator where + decodeAeson = decodeTaggedNewtype "getStakeValidator" + PlutusScriptStakeValidator + +instance EncodeAeson PlutusScriptStakeValidator where + encodeAeson (PlutusScriptStakeValidator script) = + encodeAeson { "getStakeValidator": script } + +instance Show PlutusScriptStakeValidator where + show = genericShow diff --git a/src/Internal/Types/ProtocolParameters.purs b/src/Internal/Types/ProtocolParameters.purs index 4a7863559..38c5ae418 100644 --- a/src/Internal/Types/ProtocolParameters.purs +++ b/src/Internal/Types/ProtocolParameters.purs @@ -1,6 +1,5 @@ module Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) - , CoinsPerUtxoUnit(CoinsPerUtxoByte, CoinsPerUtxoWord) , CostModelV1 , CostModelV2 , convertPlutusV1CostModel @@ -9,42 +8,30 @@ module Ctl.Internal.Types.ProtocolParameters import Prelude -import Ctl.Internal.Cardano.Types.Transaction - ( Costmdls - , ExUnitPrices - , ExUnits - , Nonce - ) -import Ctl.Internal.Cardano.Types.Transaction as T -import Ctl.Internal.Cardano.Types.Value (Coin) -import Ctl.Internal.Types.Epoch (Epoch) -import Ctl.Internal.Types.Int as Csl +import Cardano.Types.Coin (Coin) +import Cardano.Types.CostModel (CostModel) +import Cardano.Types.Epoch (Epoch) +import Cardano.Types.ExUnitPrices (ExUnitPrices) +import Cardano.Types.ExUnits (ExUnits) +import Cardano.Types.Int as Cardano +import Cardano.Types.Language (Language) import Ctl.Internal.Types.Rational (Rational) import Data.Array (reverse) import Data.Generic.Rep (class Generic) import Data.List (List) import Data.List as List -import Data.Maybe (Maybe) +import Data.Map (Map) import Data.Newtype (class Newtype, wrap) import Data.Show.Generic (genericShow) import Data.Tuple.Nested (type (/\)) import Data.UInt (UInt) import Heterogeneous.Folding (class HFoldl, hfoldl) -data CoinsPerUtxoUnit = CoinsPerUtxoByte Coin | CoinsPerUtxoWord Coin - -derive instance Generic CoinsPerUtxoUnit _ -derive instance Eq CoinsPerUtxoUnit - -instance Show CoinsPerUtxoUnit where - show = genericShow - -- Based on `Cardano.Api.ProtocolParameters.ProtocolParameters` from -- `cardano-api`. newtype ProtocolParameters = ProtocolParameters { protocolVersion :: UInt /\ UInt , decentralization :: Rational - , extraPraosEntropy :: Maybe Nonce , maxBlockHeaderSize :: UInt , maxBlockBodySize :: UInt , maxTxSize :: UInt @@ -58,8 +45,8 @@ newtype ProtocolParameters = ProtocolParameters , poolPledgeInfluence :: Rational , monetaryExpansion :: Rational , treasuryCut :: Rational - , coinsPerUtxoUnit :: CoinsPerUtxoUnit - , costModels :: Costmdls + , coinsPerUtxoByte :: Coin + , costModels :: Map Language CostModel , prices :: ExUnitPrices , maxTxExUnits :: ExUnits , maxBlockExUnits :: ExUnits @@ -77,203 +64,207 @@ instance Show ProtocolParameters where -- | A type that represents a JSON-encoded Costmodel in format used by Ogmios type CostModelV1 = - ( "addInteger-cpu-arguments-intercept" :: Csl.Int - , "addInteger-cpu-arguments-slope" :: Csl.Int - , "addInteger-memory-arguments-intercept" :: Csl.Int - , "addInteger-memory-arguments-slope" :: Csl.Int - , "appendByteString-cpu-arguments-intercept" :: Csl.Int - , "appendByteString-cpu-arguments-slope" :: Csl.Int - , "appendByteString-memory-arguments-intercept" :: Csl.Int - , "appendByteString-memory-arguments-slope" :: Csl.Int - , "appendString-cpu-arguments-intercept" :: Csl.Int - , "appendString-cpu-arguments-slope" :: Csl.Int - , "appendString-memory-arguments-intercept" :: Csl.Int - , "appendString-memory-arguments-slope" :: Csl.Int - , "bData-cpu-arguments" :: Csl.Int - , "bData-memory-arguments" :: Csl.Int - , "blake2b_256-cpu-arguments-intercept" :: Csl.Int - , "blake2b_256-cpu-arguments-slope" :: Csl.Int - , "blake2b_256-memory-arguments" :: Csl.Int - , "cekApplyCost-exBudgetCPU" :: Csl.Int - , "cekApplyCost-exBudgetMemory" :: Csl.Int - , "cekBuiltinCost-exBudgetCPU" :: Csl.Int - , "cekBuiltinCost-exBudgetMemory" :: Csl.Int - , "cekConstCost-exBudgetCPU" :: Csl.Int - , "cekConstCost-exBudgetMemory" :: Csl.Int - , "cekDelayCost-exBudgetCPU" :: Csl.Int - , "cekDelayCost-exBudgetMemory" :: Csl.Int - , "cekForceCost-exBudgetCPU" :: Csl.Int - , "cekForceCost-exBudgetMemory" :: Csl.Int - , "cekLamCost-exBudgetCPU" :: Csl.Int - , "cekLamCost-exBudgetMemory" :: Csl.Int - , "cekStartupCost-exBudgetCPU" :: Csl.Int - , "cekStartupCost-exBudgetMemory" :: Csl.Int - , "cekVarCost-exBudgetCPU" :: Csl.Int - , "cekVarCost-exBudgetMemory" :: Csl.Int - , "chooseData-cpu-arguments" :: Csl.Int - , "chooseData-memory-arguments" :: Csl.Int - , "chooseList-cpu-arguments" :: Csl.Int - , "chooseList-memory-arguments" :: Csl.Int - , "chooseUnit-cpu-arguments" :: Csl.Int - , "chooseUnit-memory-arguments" :: Csl.Int - , "consByteString-cpu-arguments-intercept" :: Csl.Int - , "consByteString-cpu-arguments-slope" :: Csl.Int - , "consByteString-memory-arguments-intercept" :: Csl.Int - , "consByteString-memory-arguments-slope" :: Csl.Int - , "constrData-cpu-arguments" :: Csl.Int - , "constrData-memory-arguments" :: Csl.Int - , "decodeUtf8-cpu-arguments-intercept" :: Csl.Int - , "decodeUtf8-cpu-arguments-slope" :: Csl.Int - , "decodeUtf8-memory-arguments-intercept" :: Csl.Int - , "decodeUtf8-memory-arguments-slope" :: Csl.Int - , "divideInteger-cpu-arguments-constant" :: Csl.Int - , "divideInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int - , "divideInteger-cpu-arguments-model-arguments-slope" :: Csl.Int - , "divideInteger-memory-arguments-intercept" :: Csl.Int - , "divideInteger-memory-arguments-minimum" :: Csl.Int - , "divideInteger-memory-arguments-slope" :: Csl.Int - , "encodeUtf8-cpu-arguments-intercept" :: Csl.Int - , "encodeUtf8-cpu-arguments-slope" :: Csl.Int - , "encodeUtf8-memory-arguments-intercept" :: Csl.Int - , "encodeUtf8-memory-arguments-slope" :: Csl.Int - , "equalsByteString-cpu-arguments-constant" :: Csl.Int - , "equalsByteString-cpu-arguments-intercept" :: Csl.Int - , "equalsByteString-cpu-arguments-slope" :: Csl.Int - , "equalsByteString-memory-arguments" :: Csl.Int - , "equalsData-cpu-arguments-intercept" :: Csl.Int - , "equalsData-cpu-arguments-slope" :: Csl.Int - , "equalsData-memory-arguments" :: Csl.Int - , "equalsInteger-cpu-arguments-intercept" :: Csl.Int - , "equalsInteger-cpu-arguments-slope" :: Csl.Int - , "equalsInteger-memory-arguments" :: Csl.Int - , "equalsString-cpu-arguments-constant" :: Csl.Int - , "equalsString-cpu-arguments-intercept" :: Csl.Int - , "equalsString-cpu-arguments-slope" :: Csl.Int - , "equalsString-memory-arguments" :: Csl.Int - , "fstPair-cpu-arguments" :: Csl.Int - , "fstPair-memory-arguments" :: Csl.Int - , "headList-cpu-arguments" :: Csl.Int - , "headList-memory-arguments" :: Csl.Int - , "iData-cpu-arguments" :: Csl.Int - , "iData-memory-arguments" :: Csl.Int - , "ifThenElse-cpu-arguments" :: Csl.Int - , "ifThenElse-memory-arguments" :: Csl.Int - , "indexByteString-cpu-arguments" :: Csl.Int - , "indexByteString-memory-arguments" :: Csl.Int - , "lengthOfByteString-cpu-arguments" :: Csl.Int - , "lengthOfByteString-memory-arguments" :: Csl.Int - , "lessThanByteString-cpu-arguments-intercept" :: Csl.Int - , "lessThanByteString-cpu-arguments-slope" :: Csl.Int - , "lessThanByteString-memory-arguments" :: Csl.Int - , "lessThanEqualsByteString-cpu-arguments-intercept" :: Csl.Int - , "lessThanEqualsByteString-cpu-arguments-slope" :: Csl.Int - , "lessThanEqualsByteString-memory-arguments" :: Csl.Int - , "lessThanEqualsInteger-cpu-arguments-intercept" :: Csl.Int - , "lessThanEqualsInteger-cpu-arguments-slope" :: Csl.Int - , "lessThanEqualsInteger-memory-arguments" :: Csl.Int - , "lessThanInteger-cpu-arguments-intercept" :: Csl.Int - , "lessThanInteger-cpu-arguments-slope" :: Csl.Int - , "lessThanInteger-memory-arguments" :: Csl.Int - , "listData-cpu-arguments" :: Csl.Int - , "listData-memory-arguments" :: Csl.Int - , "mapData-cpu-arguments" :: Csl.Int - , "mapData-memory-arguments" :: Csl.Int - , "mkCons-cpu-arguments" :: Csl.Int - , "mkCons-memory-arguments" :: Csl.Int - , "mkNilData-cpu-arguments" :: Csl.Int - , "mkNilData-memory-arguments" :: Csl.Int - , "mkNilPairData-cpu-arguments" :: Csl.Int - , "mkNilPairData-memory-arguments" :: Csl.Int - , "mkPairData-cpu-arguments" :: Csl.Int - , "mkPairData-memory-arguments" :: Csl.Int - , "modInteger-cpu-arguments-constant" :: Csl.Int - , "modInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int - , "modInteger-cpu-arguments-model-arguments-slope" :: Csl.Int - , "modInteger-memory-arguments-intercept" :: Csl.Int - , "modInteger-memory-arguments-minimum" :: Csl.Int - , "modInteger-memory-arguments-slope" :: Csl.Int - , "multiplyInteger-cpu-arguments-intercept" :: Csl.Int - , "multiplyInteger-cpu-arguments-slope" :: Csl.Int - , "multiplyInteger-memory-arguments-intercept" :: Csl.Int - , "multiplyInteger-memory-arguments-slope" :: Csl.Int - , "nullList-cpu-arguments" :: Csl.Int - , "nullList-memory-arguments" :: Csl.Int - , "quotientInteger-cpu-arguments-constant" :: Csl.Int - , "quotientInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int - , "quotientInteger-cpu-arguments-model-arguments-slope" :: Csl.Int - , "quotientInteger-memory-arguments-intercept" :: Csl.Int - , "quotientInteger-memory-arguments-minimum" :: Csl.Int - , "quotientInteger-memory-arguments-slope" :: Csl.Int - , "remainderInteger-cpu-arguments-constant" :: Csl.Int - , "remainderInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int - , "remainderInteger-cpu-arguments-model-arguments-slope" :: Csl.Int - , "remainderInteger-memory-arguments-intercept" :: Csl.Int - , "remainderInteger-memory-arguments-minimum" :: Csl.Int - , "remainderInteger-memory-arguments-slope" :: Csl.Int - , "sha2_256-cpu-arguments-intercept" :: Csl.Int - , "sha2_256-cpu-arguments-slope" :: Csl.Int - , "sha2_256-memory-arguments" :: Csl.Int - , "sha3_256-cpu-arguments-intercept" :: Csl.Int - , "sha3_256-cpu-arguments-slope" :: Csl.Int - , "sha3_256-memory-arguments" :: Csl.Int - , "sliceByteString-cpu-arguments-intercept" :: Csl.Int - , "sliceByteString-cpu-arguments-slope" :: Csl.Int - , "sliceByteString-memory-arguments-intercept" :: Csl.Int - , "sliceByteString-memory-arguments-slope" :: Csl.Int - , "sndPair-cpu-arguments" :: Csl.Int - , "sndPair-memory-arguments" :: Csl.Int - , "subtractInteger-cpu-arguments-intercept" :: Csl.Int - , "subtractInteger-cpu-arguments-slope" :: Csl.Int - , "subtractInteger-memory-arguments-intercept" :: Csl.Int - , "subtractInteger-memory-arguments-slope" :: Csl.Int - , "tailList-cpu-arguments" :: Csl.Int - , "tailList-memory-arguments" :: Csl.Int - , "trace-cpu-arguments" :: Csl.Int - , "trace-memory-arguments" :: Csl.Int - , "unBData-cpu-arguments" :: Csl.Int - , "unBData-memory-arguments" :: Csl.Int - , "unConstrData-cpu-arguments" :: Csl.Int - , "unConstrData-memory-arguments" :: Csl.Int - , "unIData-cpu-arguments" :: Csl.Int - , "unIData-memory-arguments" :: Csl.Int - , "unListData-cpu-arguments" :: Csl.Int - , "unListData-memory-arguments" :: Csl.Int - , "unMapData-cpu-arguments" :: Csl.Int - , "unMapData-memory-arguments" :: Csl.Int - , "verifyEd25519Signature-cpu-arguments-intercept" :: Csl.Int - , "verifyEd25519Signature-cpu-arguments-slope" :: Csl.Int - , "verifyEd25519Signature-memory-arguments" :: Csl.Int + ( "addInteger-cpu-arguments-intercept" :: Cardano.Int + , "addInteger-cpu-arguments-slope" :: Cardano.Int + , "addInteger-memory-arguments-intercept" :: Cardano.Int + , "addInteger-memory-arguments-slope" :: Cardano.Int + , "appendByteString-cpu-arguments-intercept" :: Cardano.Int + , "appendByteString-cpu-arguments-slope" :: Cardano.Int + , "appendByteString-memory-arguments-intercept" :: Cardano.Int + , "appendByteString-memory-arguments-slope" :: Cardano.Int + , "appendString-cpu-arguments-intercept" :: Cardano.Int + , "appendString-cpu-arguments-slope" :: Cardano.Int + , "appendString-memory-arguments-intercept" :: Cardano.Int + , "appendString-memory-arguments-slope" :: Cardano.Int + , "bData-cpu-arguments" :: Cardano.Int + , "bData-memory-arguments" :: Cardano.Int + , "blake2b_256-cpu-arguments-intercept" :: Cardano.Int + , "blake2b_256-cpu-arguments-slope" :: Cardano.Int + , "blake2b_256-memory-arguments" :: Cardano.Int + , "cekApplyCost-exBudgetCPU" :: Cardano.Int + , "cekApplyCost-exBudgetMemory" :: Cardano.Int + , "cekBuiltinCost-exBudgetCPU" :: Cardano.Int + , "cekBuiltinCost-exBudgetMemory" :: Cardano.Int + , "cekConstCost-exBudgetCPU" :: Cardano.Int + , "cekConstCost-exBudgetMemory" :: Cardano.Int + , "cekDelayCost-exBudgetCPU" :: Cardano.Int + , "cekDelayCost-exBudgetMemory" :: Cardano.Int + , "cekForceCost-exBudgetCPU" :: Cardano.Int + , "cekForceCost-exBudgetMemory" :: Cardano.Int + , "cekLamCost-exBudgetCPU" :: Cardano.Int + , "cekLamCost-exBudgetMemory" :: Cardano.Int + , "cekStartupCost-exBudgetCPU" :: Cardano.Int + , "cekStartupCost-exBudgetMemory" :: Cardano.Int + , "cekVarCost-exBudgetCPU" :: Cardano.Int + , "cekVarCost-exBudgetMemory" :: Cardano.Int + , "chooseData-cpu-arguments" :: Cardano.Int + , "chooseData-memory-arguments" :: Cardano.Int + , "chooseList-cpu-arguments" :: Cardano.Int + , "chooseList-memory-arguments" :: Cardano.Int + , "chooseUnit-cpu-arguments" :: Cardano.Int + , "chooseUnit-memory-arguments" :: Cardano.Int + , "consByteString-cpu-arguments-intercept" :: Cardano.Int + , "consByteString-cpu-arguments-slope" :: Cardano.Int + , "consByteString-memory-arguments-intercept" :: Cardano.Int + , "consByteString-memory-arguments-slope" :: Cardano.Int + , "constrData-cpu-arguments" :: Cardano.Int + , "constrData-memory-arguments" :: Cardano.Int + , "decodeUtf8-cpu-arguments-intercept" :: Cardano.Int + , "decodeUtf8-cpu-arguments-slope" :: Cardano.Int + , "decodeUtf8-memory-arguments-intercept" :: Cardano.Int + , "decodeUtf8-memory-arguments-slope" :: Cardano.Int + , "divideInteger-cpu-arguments-constant" :: Cardano.Int + , "divideInteger-cpu-arguments-model-arguments-intercept" :: Cardano.Int + , "divideInteger-cpu-arguments-model-arguments-slope" :: Cardano.Int + , "divideInteger-memory-arguments-intercept" :: Cardano.Int + , "divideInteger-memory-arguments-minimum" :: Cardano.Int + , "divideInteger-memory-arguments-slope" :: Cardano.Int + , "encodeUtf8-cpu-arguments-intercept" :: Cardano.Int + , "encodeUtf8-cpu-arguments-slope" :: Cardano.Int + , "encodeUtf8-memory-arguments-intercept" :: Cardano.Int + , "encodeUtf8-memory-arguments-slope" :: Cardano.Int + , "equalsByteString-cpu-arguments-constant" :: Cardano.Int + , "equalsByteString-cpu-arguments-intercept" :: Cardano.Int + , "equalsByteString-cpu-arguments-slope" :: Cardano.Int + , "equalsByteString-memory-arguments" :: Cardano.Int + , "equalsData-cpu-arguments-intercept" :: Cardano.Int + , "equalsData-cpu-arguments-slope" :: Cardano.Int + , "equalsData-memory-arguments" :: Cardano.Int + , "equalsInteger-cpu-arguments-intercept" :: Cardano.Int + , "equalsInteger-cpu-arguments-slope" :: Cardano.Int + , "equalsInteger-memory-arguments" :: Cardano.Int + , "equalsString-cpu-arguments-constant" :: Cardano.Int + , "equalsString-cpu-arguments-intercept" :: Cardano.Int + , "equalsString-cpu-arguments-slope" :: Cardano.Int + , "equalsString-memory-arguments" :: Cardano.Int + , "fstPair-cpu-arguments" :: Cardano.Int + , "fstPair-memory-arguments" :: Cardano.Int + , "headList-cpu-arguments" :: Cardano.Int + , "headList-memory-arguments" :: Cardano.Int + , "iData-cpu-arguments" :: Cardano.Int + , "iData-memory-arguments" :: Cardano.Int + , "ifThenElse-cpu-arguments" :: Cardano.Int + , "ifThenElse-memory-arguments" :: Cardano.Int + , "indexByteString-cpu-arguments" :: Cardano.Int + , "indexByteString-memory-arguments" :: Cardano.Int + , "lengthOfByteString-cpu-arguments" :: Cardano.Int + , "lengthOfByteString-memory-arguments" :: Cardano.Int + , "lessThanByteString-cpu-arguments-intercept" :: Cardano.Int + , "lessThanByteString-cpu-arguments-slope" :: Cardano.Int + , "lessThanByteString-memory-arguments" :: Cardano.Int + , "lessThanEqualsByteString-cpu-arguments-intercept" :: Cardano.Int + , "lessThanEqualsByteString-cpu-arguments-slope" :: Cardano.Int + , "lessThanEqualsByteString-memory-arguments" :: Cardano.Int + , "lessThanEqualsInteger-cpu-arguments-intercept" :: Cardano.Int + , "lessThanEqualsInteger-cpu-arguments-slope" :: Cardano.Int + , "lessThanEqualsInteger-memory-arguments" :: Cardano.Int + , "lessThanInteger-cpu-arguments-intercept" :: Cardano.Int + , "lessThanInteger-cpu-arguments-slope" :: Cardano.Int + , "lessThanInteger-memory-arguments" :: Cardano.Int + , "listData-cpu-arguments" :: Cardano.Int + , "listData-memory-arguments" :: Cardano.Int + , "mapData-cpu-arguments" :: Cardano.Int + , "mapData-memory-arguments" :: Cardano.Int + , "mkCons-cpu-arguments" :: Cardano.Int + , "mkCons-memory-arguments" :: Cardano.Int + , "mkNilData-cpu-arguments" :: Cardano.Int + , "mkNilData-memory-arguments" :: Cardano.Int + , "mkNilPairData-cpu-arguments" :: Cardano.Int + , "mkNilPairData-memory-arguments" :: Cardano.Int + , "mkPairData-cpu-arguments" :: Cardano.Int + , "mkPairData-memory-arguments" :: Cardano.Int + , "modInteger-cpu-arguments-constant" :: Cardano.Int + , "modInteger-cpu-arguments-model-arguments-intercept" :: Cardano.Int + , "modInteger-cpu-arguments-model-arguments-slope" :: Cardano.Int + , "modInteger-memory-arguments-intercept" :: Cardano.Int + , "modInteger-memory-arguments-minimum" :: Cardano.Int + , "modInteger-memory-arguments-slope" :: Cardano.Int + , "multiplyInteger-cpu-arguments-intercept" :: Cardano.Int + , "multiplyInteger-cpu-arguments-slope" :: Cardano.Int + , "multiplyInteger-memory-arguments-intercept" :: Cardano.Int + , "multiplyInteger-memory-arguments-slope" :: Cardano.Int + , "nullList-cpu-arguments" :: Cardano.Int + , "nullList-memory-arguments" :: Cardano.Int + , "quotientInteger-cpu-arguments-constant" :: Cardano.Int + , "quotientInteger-cpu-arguments-model-arguments-intercept" :: Cardano.Int + , "quotientInteger-cpu-arguments-model-arguments-slope" :: Cardano.Int + , "quotientInteger-memory-arguments-intercept" :: Cardano.Int + , "quotientInteger-memory-arguments-minimum" :: Cardano.Int + , "quotientInteger-memory-arguments-slope" :: Cardano.Int + , "remainderInteger-cpu-arguments-constant" :: Cardano.Int + , "remainderInteger-cpu-arguments-model-arguments-intercept" :: Cardano.Int + , "remainderInteger-cpu-arguments-model-arguments-slope" :: Cardano.Int + , "remainderInteger-memory-arguments-intercept" :: Cardano.Int + , "remainderInteger-memory-arguments-minimum" :: Cardano.Int + , "remainderInteger-memory-arguments-slope" :: Cardano.Int + , "sha2_256-cpu-arguments-intercept" :: Cardano.Int + , "sha2_256-cpu-arguments-slope" :: Cardano.Int + , "sha2_256-memory-arguments" :: Cardano.Int + , "sha3_256-cpu-arguments-intercept" :: Cardano.Int + , "sha3_256-cpu-arguments-slope" :: Cardano.Int + , "sha3_256-memory-arguments" :: Cardano.Int + , "sliceByteString-cpu-arguments-intercept" :: Cardano.Int + , "sliceByteString-cpu-arguments-slope" :: Cardano.Int + , "sliceByteString-memory-arguments-intercept" :: Cardano.Int + , "sliceByteString-memory-arguments-slope" :: Cardano.Int + , "sndPair-cpu-arguments" :: Cardano.Int + , "sndPair-memory-arguments" :: Cardano.Int + , "subtractInteger-cpu-arguments-intercept" :: Cardano.Int + , "subtractInteger-cpu-arguments-slope" :: Cardano.Int + , "subtractInteger-memory-arguments-intercept" :: Cardano.Int + , "subtractInteger-memory-arguments-slope" :: Cardano.Int + , "tailList-cpu-arguments" :: Cardano.Int + , "tailList-memory-arguments" :: Cardano.Int + , "trace-cpu-arguments" :: Cardano.Int + , "trace-memory-arguments" :: Cardano.Int + , "unBData-cpu-arguments" :: Cardano.Int + , "unBData-memory-arguments" :: Cardano.Int + , "unConstrData-cpu-arguments" :: Cardano.Int + , "unConstrData-memory-arguments" :: Cardano.Int + , "unIData-cpu-arguments" :: Cardano.Int + , "unIData-memory-arguments" :: Cardano.Int + , "unListData-cpu-arguments" :: Cardano.Int + , "unListData-memory-arguments" :: Cardano.Int + , "unMapData-cpu-arguments" :: Cardano.Int + , "unMapData-memory-arguments" :: Cardano.Int + , "verifyEd25519Signature-cpu-arguments-intercept" :: Cardano.Int + , "verifyEd25519Signature-cpu-arguments-slope" :: Cardano.Int + , "verifyEd25519Signature-memory-arguments" :: Cardano.Int ) type CostModelV2 = - ( "serialiseData-cpu-arguments-intercept" :: Csl.Int - , "serialiseData-cpu-arguments-slope" :: Csl.Int - , "serialiseData-memory-arguments-intercept" :: Csl.Int - , "serialiseData-memory-arguments-slope" :: Csl.Int - , "verifyEcdsaSecp256k1Signature-cpu-arguments" :: Csl.Int - , "verifyEcdsaSecp256k1Signature-memory-arguments" :: Csl.Int - , "verifySchnorrSecp256k1Signature-cpu-arguments-intercept" :: Csl.Int - , "verifySchnorrSecp256k1Signature-cpu-arguments-slope" :: Csl.Int - , "verifySchnorrSecp256k1Signature-memory-arguments" :: Csl.Int + ( "serialiseData-cpu-arguments-intercept" :: Cardano.Int + , "serialiseData-cpu-arguments-slope" :: Cardano.Int + , "serialiseData-memory-arguments-intercept" :: Cardano.Int + , "serialiseData-memory-arguments-slope" :: Cardano.Int + , "verifyEcdsaSecp256k1Signature-cpu-arguments" :: Cardano.Int + , "verifyEcdsaSecp256k1Signature-memory-arguments" :: Cardano.Int + , "verifySchnorrSecp256k1Signature-cpu-arguments-intercept" :: Cardano.Int + , "verifySchnorrSecp256k1Signature-cpu-arguments-slope" :: Cardano.Int + , "verifySchnorrSecp256k1Signature-memory-arguments" :: Cardano.Int | CostModelV1 ) -- This assumes that cost models are stored in lexicographical order convertCostModel :: forall costModel - . HFoldl (List Csl.Int -> Csl.Int -> List Csl.Int) (List Csl.Int) costModel - (List Csl.Int) + . HFoldl (List Cardano.Int -> Cardano.Int -> List Cardano.Int) + (List Cardano.Int) + costModel + (List Cardano.Int) => costModel - -> T.CostModel + -> CostModel convertCostModel model = wrap $ reverse $ List.toUnfoldable $ hfoldl - ((\xs x -> x List.: xs) :: List Csl.Int -> Csl.Int -> List Csl.Int) - (mempty :: List Csl.Int) + ( (\xs x -> x List.: xs) + :: List Cardano.Int -> Cardano.Int -> List Cardano.Int + ) + (mempty :: List Cardano.Int) model -- Specialized conversions to only perform the type level traversals once -convertPlutusV1CostModel :: Record CostModelV1 -> T.CostModel +convertPlutusV1CostModel :: Record CostModelV1 -> CostModel convertPlutusV1CostModel = convertCostModel -convertPlutusV2CostModel :: Record CostModelV2 -> T.CostModel +convertPlutusV2CostModel :: Record CostModelV2 -> CostModel convertPlutusV2CostModel = convertCostModel diff --git a/src/Internal/Types/Rational.purs b/src/Internal/Types/Rational.purs index e0d101aaf..69a92563f 100644 --- a/src/Internal/Types/Rational.purs +++ b/src/Internal/Types/Rational.purs @@ -6,7 +6,6 @@ module Ctl.Internal.Types.Rational , recip , numerator , denominator - , denominatorAsNat ) where import Prelude @@ -20,12 +19,10 @@ import Aeson , toStringifiedNumbersJson , (.:) ) +import Cardano.FromData (class FromData) +import Cardano.ToData (class ToData) import Cardano.Types.BigNum as BigNum import Cardano.Types.PlutusData (PlutusData(Constr, Integer)) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.Natural (Natural) -import Ctl.Internal.Types.Natural (fromBigInt', toBigInt) as Nat import Data.Either (Either(Left)) import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Ratio (Ratio) @@ -92,11 +89,6 @@ numerator (Rational r) = Ratio.numerator r denominator :: Rational -> BigInt denominator (Rational r) = Ratio.denominator r --- This is safe because the denominator is guaranteed to be positive. --- | Get the denominator of a `Rational` as `Natural`. -denominatorAsNat :: Rational -> Natural -denominatorAsNat = Nat.fromBigInt' <<< denominator - -------------------------------------------------------------------------------- -- FromData / ToData -------------------------------------------------------------------------------- @@ -132,6 +124,3 @@ instance RationalComponent BigInt where instance RationalComponent Int where reduce n d = reduce (BigInt.fromInt n) (BigInt.fromInt d) - -instance RationalComponent Natural where - reduce n d = reduce (Nat.toBigInt n) (Nat.toBigInt d) diff --git a/src/Internal/Types/RawBytes.purs b/src/Internal/Types/RawBytes.purs index 897be26bd..9c03ed494 100644 --- a/src/Internal/Types/RawBytes.purs +++ b/src/Internal/Types/RawBytes.purs @@ -17,8 +17,8 @@ module Ctl.Internal.Types.RawBytes import Prelude import Aeson (class DecodeAeson, class EncodeAeson) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) +import Cardano.FromMetadata (class FromMetadata) +import Cardano.ToMetadata (class ToMetadata) import Data.ByteArray (ByteArray) import Data.ByteArray as BytesArray import Data.Maybe (Maybe) diff --git a/src/Internal/Types/RedeemerTag.purs b/src/Internal/Types/RedeemerTag.purs index d1f40211b..bd6cf2ac6 100644 --- a/src/Internal/Types/RedeemerTag.purs +++ b/src/Internal/Types/RedeemerTag.purs @@ -1,18 +1,9 @@ module Ctl.Internal.Types.RedeemerTag - ( RedeemerTag(Spend, Mint, Cert, Reward) - , fromString + ( fromString ) where -import Prelude - -import Aeson (class EncodeAeson) -import Ctl.Internal.Helpers (encodeTagged') -import Data.Generic.Rep (class Generic) +import Cardano.Types.RedeemerTag (RedeemerTag(..)) import Data.Maybe (Maybe(Just, Nothing)) -import Data.Show.Generic (genericShow) - --- lives in it's own module due to a name conflict with the `Mint` Type -data RedeemerTag = Spend | Mint | Cert | Reward fromString :: String -> Maybe RedeemerTag fromString = case _ of @@ -21,17 +12,3 @@ fromString = case _ of "certificate" -> Just Cert "withdrawal" -> Just Reward _ -> Nothing - -derive instance Generic RedeemerTag _ -derive instance Eq RedeemerTag -derive instance Ord RedeemerTag - -instance Show RedeemerTag where - show = genericShow - -instance EncodeAeson RedeemerTag where - encodeAeson = case _ of - Spend -> encodeTagged' "Spend" {} - Mint -> encodeTagged' "Mint" {} - Cert -> encodeTagged' "Cert" {} - Reward -> encodeTagged' "Reward" {} diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 3b5abda7b..73ad014ed 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -15,13 +15,20 @@ module Ctl.Internal.Types.ScriptLookups import Prelude hiding (join) +import Cardano.Types + ( DataHash + , PaymentPubKeyHash + , PlutusData + , PublicKey + , StakePubKeyHash + , TransactionOutput + , UtxoMap + ) +import Cardano.Types.DataHash (hashPlutusData) import Cardano.Types.TransactionInput (TransactionInput) -import Ctl.Internal.Hashing (datumHash) as Hashing import Ctl.Internal.Helpers ((<\>)) -import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus -import Ctl.Internal.Types.Datum (DataHash, Datum) -import Ctl.Internal.Types.PaymentPubKey (PaymentPubKey) -import Ctl.Internal.Types.Scripts (MintingPolicy, Validator) +import Ctl.Internal.Types.MintingPolicy (MintingPolicy) +import Ctl.Internal.Types.Validator (Validator) import Data.Array (singleton, union) as Array import Data.Generic.Rep (class Generic) import Data.Map (Map, empty, singleton, union) @@ -45,17 +52,15 @@ import Data.Show.Generic (genericShow) -- The lookups uses the Plutus type `TransactionOutput` and does internal -- conversions to the Serialization/Cardano to append to the `TxBody` as needed. newtype ScriptLookups = ScriptLookups - { mps :: + { mintingPolicies :: Array MintingPolicy -- Minting policies that the script interacts with - , txOutputs :: - Map TransactionInput Plutus.TransactionOutputWithRefScript -- Unspent outputs that the script may want to spend - , scripts :: - Array Validator -- Script validators - , datums :: Map DataHash Datum -- Datums that we might need + , txOutputs :: UtxoMap + , scripts :: Array Validator -- Script validators + , datums :: Map DataHash PlutusData -- Datums that we might need -- FIXME there's currently no way to set this field -- See https://github.com/Plutonomicon/cardano-transaction-lib/issues/569 , paymentPubKeyHashes :: - Map PaymentPubKeyHash PaymentPubKey -- Public keys that we might need + Map PaymentPubKeyHash PublicKey -- Public keys that we might need , ownPaymentPubKeyHash :: Maybe PaymentPubKeyHash -- The contract's payment public key hash, used for depositing tokens etc. , ownStakePubKeyHash :: @@ -74,7 +79,7 @@ instance Show ScriptLookups where instance Semigroup ScriptLookups where append (ScriptLookups l) (ScriptLookups r) = ScriptLookups - { mps: l.mps `Array.union` r.mps + { mintingPolicies: l.mintingPolicies `Array.union` r.mintingPolicies , txOutputs: l.txOutputs `union` r.txOutputs , scripts: l.scripts `Array.union` r.scripts , datums: l.datums `union` r.datums @@ -86,7 +91,7 @@ instance Semigroup ScriptLookups where instance Monoid ScriptLookups where mempty = ScriptLookups - { mps: mempty + { mintingPolicies: mempty , txOutputs: empty , scripts: mempty , datums: empty @@ -103,7 +108,7 @@ instance Monoid ScriptLookups where -- | input constraints. unspentOutputs :: forall (a :: Type) - . Map TransactionInput Plutus.TransactionOutputWithRefScript + . Map TransactionInput TransactionOutput -> ScriptLookups unspentOutputs mp = over ScriptLookups _ { txOutputs = mp } mempty @@ -111,13 +116,14 @@ unspentOutputs mp = over ScriptLookups _ { txOutputs = mp } mempty -- | This should not fail. unspentOutputsM :: forall (a :: Type) - . Map TransactionInput Plutus.TransactionOutputWithRefScript + . Map TransactionInput TransactionOutput -> Maybe ScriptLookups unspentOutputsM = pure <<< unspentOutputs -- | A script lookups value with a minting policy script. mintingPolicy :: MintingPolicy -> ScriptLookups -mintingPolicy pl = over ScriptLookups _ { mps = Array.singleton pl } mempty +mintingPolicy pl = over ScriptLookups _ { mintingPolicies = Array.singleton pl } + mempty -- | Same as `mintingPolicy` but in `Maybe` context for convenience. This -- | should not fail. @@ -135,9 +141,9 @@ validatorM :: forall (a :: Type). Validator -> Maybe ScriptLookups validatorM = pure <<< validator -- | A script lookups value with a datum. -datum :: Datum -> ScriptLookups +datum :: PlutusData -> ScriptLookups datum dt = - over ScriptLookups _ { datums = singleton (Hashing.datumHash dt) dt } mempty + over ScriptLookups _ { datums = singleton (hashPlutusData dt) dt } mempty -- | Add your own `PaymentPubKeyHash` to the lookup. ownPaymentPubKeyHash :: PaymentPubKeyHash -> ScriptLookups diff --git a/src/Internal/Types/Scripts.purs b/src/Internal/Types/Scripts.purs deleted file mode 100644 index 9b015a2dd..000000000 --- a/src/Internal/Types/Scripts.purs +++ /dev/null @@ -1,177 +0,0 @@ -module Ctl.Internal.Types.Scripts - ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) - , MintingPolicyHash(MintingPolicyHash) - , PlutusScriptStakeValidator(PlutusScriptStakeValidator) - , NativeScriptStakeValidator(NativeScriptStakeValidator) - , StakeValidatorHash(StakeValidatorHash) - , Validator(Validator) - , ValidatorHash(ValidatorHash) - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , Aeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , decodeAeson - , encodeAeson - , getField - ) -import Cardano.FromData (class FromData) -import Cardano.FromMetadata (class FromMetadata) -import Cardano.ToData (class ToData) -import Cardano.ToMetadata (class ToMetadata) -import Cardano.Types.NativeScript (NativeScript) -import Cardano.Types.PlutusScript (PlutusScript(..)) -import Control.Alt ((<|>)) -import Cardano.Types.ScriptHash (ScriptHash) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - --------------------------------------------------------------------------------- --- `PlutusScript` newtypes and `TypedValidator` --------------------------------------------------------------------------------- - -decodeAesonHelper - :: ∀ (a :: Type) (b :: Type) - . DecodeAeson a - => String - -> (a -> b) - -> Aeson - -> Either JsonDecodeError b -decodeAesonHelper constrName constr = caseAesonObject - (Left $ TypeMismatch "Expected object") - (flip getField constrName >=> decodeAeson >>> map constr) - --- | `MintingPolicy` is a sum type of `PlutusScript` and `NativeScript` which are used as --- | validators for minting constraints. -data MintingPolicy - = PlutusMintingPolicy PlutusScript - | NativeMintingPolicy NativeScript - -derive instance Generic MintingPolicy _ -derive instance Eq MintingPolicy - -instance DecodeAeson MintingPolicy where - decodeAeson aes = - decodeAesonHelper "getPlutusMintingPolicy" PlutusMintingPolicy aes <|> - decodeAesonHelper "getNativeMintingPolicy" NativeMintingPolicy aes - -instance EncodeAeson MintingPolicy where - encodeAeson (NativeMintingPolicy nscript) = - encodeAeson { "getNativeMintingPolicy": nscript } - encodeAeson (PlutusMintingPolicy script) = - encodeAeson { "getPlutusMintingPolicy": script } - -instance Show MintingPolicy where - show = genericShow - -newtype Validator = Validator PlutusScript - -derive instance Generic Validator _ -derive instance Newtype Validator _ -derive newtype instance Eq Validator -derive newtype instance Ord Validator - -instance DecodeAeson Validator where - decodeAeson = decodeAesonHelper "getValidator" Validator - -instance EncodeAeson Validator where - encodeAeson (Validator script) = - encodeAeson { "getValidator": script } - -instance Show Validator where - show = genericShow - --- | `NativeScriptStakeValidator`s are used as validators for withdrawals and --- | stake address certificates. -newtype NativeScriptStakeValidator = NativeScriptStakeValidator NativeScript - -derive instance Newtype NativeScriptStakeValidator _ -derive instance Generic NativeScriptStakeValidator _ -derive instance Eq NativeScriptStakeValidator - -instance Show NativeScriptStakeValidator where - show = genericShow - --- | `PlutusScriptStakeValidator`s are used as validators for withdrawals and --- | stake address certificates. -newtype PlutusScriptStakeValidator = PlutusScriptStakeValidator PlutusScript - -derive instance Newtype PlutusScriptStakeValidator _ -derive instance Generic PlutusScriptStakeValidator _ -derive instance Eq PlutusScriptStakeValidator - -instance DecodeAeson PlutusScriptStakeValidator where - decodeAeson = decodeAesonHelper "getStakeValidator" PlutusScriptStakeValidator - -instance EncodeAeson PlutusScriptStakeValidator where - encodeAeson (PlutusScriptStakeValidator script) = - encodeAeson { "getStakeValidator": script } - -instance Show PlutusScriptStakeValidator where - show = genericShow - --------------------------------------------------------------------------------- --- `ScriptHash` newtypes --------------------------------------------------------------------------------- -newtype MintingPolicyHash = MintingPolicyHash ScriptHash - -derive instance Generic MintingPolicyHash _ -derive instance Newtype MintingPolicyHash _ -derive newtype instance Eq MintingPolicyHash -derive newtype instance Ord MintingPolicyHash -derive newtype instance FromData MintingPolicyHash -derive newtype instance ToData MintingPolicyHash -derive newtype instance FromMetadata MintingPolicyHash -derive newtype instance ToMetadata MintingPolicyHash - -instance DecodeAeson MintingPolicyHash where - decodeAeson = decodeAesonHelper "getMintingPolicyHash" MintingPolicyHash - -instance EncodeAeson MintingPolicyHash where - encodeAeson (MintingPolicyHash hash) = - encodeAeson { "getMintingPolicyHash": hash } - -instance Show MintingPolicyHash where - show = genericShow - -newtype ValidatorHash = ValidatorHash ScriptHash - -derive instance Generic ValidatorHash _ -derive instance Newtype ValidatorHash _ -derive newtype instance Eq ValidatorHash -derive newtype instance Ord ValidatorHash -derive newtype instance FromData ValidatorHash -derive newtype instance ToData ValidatorHash -derive newtype instance FromMetadata ValidatorHash -derive newtype instance ToMetadata ValidatorHash -derive newtype instance EncodeAeson ValidatorHash -derive newtype instance DecodeAeson ValidatorHash - -instance Show ValidatorHash where - show = genericShow - -newtype StakeValidatorHash = StakeValidatorHash ScriptHash - -derive instance Generic StakeValidatorHash _ -derive instance Newtype StakeValidatorHash _ -derive newtype instance Eq StakeValidatorHash -derive newtype instance Ord StakeValidatorHash -derive newtype instance ToData StakeValidatorHash -derive newtype instance FromData StakeValidatorHash - -instance DecodeAeson StakeValidatorHash where - decodeAeson = decodeAesonHelper "getStakeValidatorHash" StakeValidatorHash - -instance EncodeAeson StakeValidatorHash where - encodeAeson (StakeValidatorHash hash) = - encodeAeson { "getStakeValidatorHash": hash } - -instance Show StakeValidatorHash where - show = genericShow diff --git a/src/Internal/Types/StakeValidatorHash.purs b/src/Internal/Types/StakeValidatorHash.purs new file mode 100644 index 000000000..ebacb2dcf --- /dev/null +++ b/src/Internal/Types/StakeValidatorHash.purs @@ -0,0 +1,33 @@ +module Ctl.Internal.Types.StakeValidatorHash + ( StakeValidatorHash(StakeValidatorHash) + ) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) +import Cardano.FromData (class FromData) +import Cardano.ToData (class ToData) +import Cardano.Types.ScriptHash (ScriptHash) +import Ctl.Internal.Helpers (decodeTaggedNewtype) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype StakeValidatorHash = StakeValidatorHash ScriptHash + +derive instance Generic StakeValidatorHash _ +derive instance Newtype StakeValidatorHash _ +derive newtype instance Eq StakeValidatorHash +derive newtype instance Ord StakeValidatorHash +derive newtype instance ToData StakeValidatorHash +derive newtype instance FromData StakeValidatorHash + +instance DecodeAeson StakeValidatorHash where + decodeAeson = decodeTaggedNewtype "getStakeValidatorHash" StakeValidatorHash + +instance EncodeAeson StakeValidatorHash where + encodeAeson (StakeValidatorHash hash) = + encodeAeson { "getStakeValidatorHash": hash } + +instance Show StakeValidatorHash where + show = genericShow diff --git a/src/Internal/Types/SystemStart.purs b/src/Internal/Types/SystemStart.purs index 80e37b524..72bf8d2c1 100644 --- a/src/Internal/Types/SystemStart.purs +++ b/src/Internal/Types/SystemStart.purs @@ -71,4 +71,3 @@ ogmiosDateTimeFormatStringMsec = ogmiosDateTimeFormatStringSec <> ".SSS" ogmiosDateTimeFormatStringMsecUTC :: String ogmiosDateTimeFormatStringMsecUTC = ogmiosDateTimeFormatStringMsec <> "Z" - diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index 3498c8e00..a581abac8 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -36,7 +36,6 @@ module Ctl.Internal.Types.TxConstraints , MustWithdrawStakePubKey ) , TxConstraints(TxConstraints) - , isSatisfiable , mustBeSignedBy , mustDelegateStakeNativeScript , mustDelegateStakePlutusScript @@ -69,7 +68,6 @@ module Ctl.Internal.Types.TxConstraints , mustPayToScriptAddressWithScriptRef , mustPayToScriptWithScriptRef , mustProduceAtLeast - , mustProduceAtLeastTotal , mustReferenceOutput , mustRegisterPool , mustRegisterStakePubKey @@ -77,7 +75,6 @@ module Ctl.Internal.Types.TxConstraints , mustRetirePool , mustSatisfyAnyOf , mustSpendAtLeast - , mustSpendAtLeastTotal , mustSpendNativeScriptOutput , mustSpendPubKeyOutput , mustSpendScriptOutput @@ -86,63 +83,49 @@ module Ctl.Internal.Types.TxConstraints , mustWithdrawStakeNativeScript , mustWithdrawStakePlutusScript , mustWithdrawStakePubKey - , pubKeyPayments - , requiredDatums - , requiredMonetaryPolicies - , requiredSignatories , singleton , utxoWithScriptRef ) where import Prelude hiding (join) -import Cardano.Types.AssetName (AssetName) -import Cardano.Types.BigNum (BigNum(..)) -import Cardano.Types.MultiAsset as MultiAsset -import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash(..)) -import Cardano.Types.PlutusData (PlutusData) -import Cardano.Types.ScriptHash (ScriptHash(..)) -import Cardano.Types.StakePubKeyHash (StakePubKeyHash(..)) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.Cardano.Types.Transaction - ( Epoch +import Cardano.Types + ( AssetName + , BigNum + , Credential + , DataHash + , Epoch + , MultiAsset + , NativeScript + , PaymentPubKeyHash + , PlutusData , PoolPubKeyHash - , PoolRegistrationParams + , ScriptHash + , ScriptRef + , StakePubKeyHash + , TransactionInput + , TransactionOutput + , TransactionUnspentOutput(TransactionUnspentOutput) + , Value ) -import Ctl.Internal.Helpers (notImplemented) +import Cardano.Types.MultiAsset as MultiAsset import Ctl.Internal.NativeScripts (NativeScriptHash) -import Ctl.Internal.Plutus.Types.Credential (Credential) -import Ctl.Internal.Plutus.Types.CurrencySymbol - ( CurrencySymbol - , currencyMPSHash +import Ctl.Internal.Types.Interval (POSIXTimeRange) +import Ctl.Internal.Types.MintingPolicyHash (MintingPolicyHash) +import Ctl.Internal.Types.NativeScriptStakeValidator + ( NativeScriptStakeValidator ) -import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) -import Ctl.Internal.Plutus.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) -import Ctl.Internal.Plutus.Types.Value (Value, flattenMultiAssets) -import Ctl.Internal.Types.Datum (Datum) -import Ctl.Internal.Types.Interval - ( POSIXTimeRange - , always - , intersection - , isEmpty +import Ctl.Internal.Types.PlutusScriptStakeValidator + ( PlutusScriptStakeValidator ) +import Ctl.Internal.Types.PoolRegistrationParams (PoolRegistrationParams) import Ctl.Internal.Types.Redeemer (Redeemer, unitRedeemer) -import Ctl.Internal.Types.Scripts - ( MintingPolicyHash - , NativeScriptStakeValidator - , PlutusScriptStakeValidator - , StakeValidatorHash - , ValidatorHash - ) -import Ctl.Internal.Types.Transaction (DataHash, TransactionInput) +import Ctl.Internal.Types.StakeValidatorHash (StakeValidatorHash) +import Ctl.Internal.Types.ValidatorHash (ValidatorHash) import Data.Array as Array -import Data.Foldable (class Foldable, foldMap, foldl, foldr) +import Data.Foldable (class Foldable) import Data.Generic.Rep (class Generic) -import Data.Lattice (join) -import Data.Map (Map, fromFoldableWith, toUnfoldable) +import Data.Map (Map) import Data.Map (singleton) as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Monoid (guard) @@ -160,7 +143,7 @@ import Prim.TypeError (class Warn, Text) -- | Constraints on transactions that want to spend script outputs data TxConstraint - = MustIncludeDatum Datum + = MustIncludeDatum PlutusData | MustValidateIn POSIXTimeRange | MustBeSignedBy PaymentPubKeyHash | MustSpendAtLeast Value @@ -173,14 +156,14 @@ data TxConstraint (Maybe InputWithScriptRef) | MustMintValueUsingNativeScript NativeScript AssetName BigNum | MustPayToPubKeyAddress PaymentPubKeyHash (Maybe StakePubKeyHash) - (Maybe (Datum /\ DatumPresence)) + (Maybe (PlutusData /\ DatumPresence)) (Maybe ScriptRef) Value | MustPayToNativeScript NativeScriptHash (Maybe Credential) Value - | MustPayToScript ValidatorHash (Maybe Credential) Datum DatumPresence + | MustPayToScript ValidatorHash (Maybe Credential) PlutusData DatumPresence (Maybe ScriptRef) Value - | MustHashDatum DataHash Datum + | MustHashDatum DataHash PlutusData | MustRegisterStakePubKey StakePubKeyHash | MustDeregisterStakePubKey StakePubKeyHash | MustRegisterStakeScript StakeValidatorHash @@ -222,7 +205,7 @@ instance Show InputWithScriptRef where show = genericShow utxoWithScriptRef - :: InputWithScriptRef -> Map TransactionInput TransactionOutputWithRefScript + :: InputWithScriptRef -> Map TransactionInput TransactionOutput utxoWithScriptRef inputWithRefScript = Map.singleton input output where TransactionUnspentOutput { input, output } = @@ -305,7 +288,7 @@ mustBeSignedBy mustBeSignedBy = singleton <<< MustBeSignedBy -- | Require the transaction to include a datum. -mustIncludeDatum :: Datum -> TxConstraints +mustIncludeDatum :: PlutusData -> TxConstraints mustIncludeDatum = singleton <<< MustIncludeDatum -- | Require the transaction to reference (not spend!) the given unspent @@ -327,7 +310,7 @@ mustPayToPubKeyAddress pkh skh = mustPayToPubKeyAddressWithDatum :: PaymentPubKeyHash -> StakePubKeyHash - -> Datum + -> PlutusData -> DatumPresence -> Value -> TxConstraints @@ -349,7 +332,7 @@ mustPayToPubKeyAddressWithScriptRef pkh skh scriptRef = mustPayToPubKeyAddressWithDatumAndScriptRef :: PaymentPubKeyHash -> StakePubKeyHash - -> Datum + -> PlutusData -> DatumPresence -> ScriptRef -> Value @@ -373,7 +356,7 @@ mustPayToPubKey pkh = -- | Lock the value and datum with a payment public key hash. mustPayToPubKeyWithDatum :: PaymentPubKeyHash - -> Datum + -> PlutusData -> DatumPresence -> Value -> TxConstraints @@ -392,7 +375,7 @@ mustPayToPubKeyWithScriptRef pkh scriptRef = -- | Lock the value, datum and reference script with a payment public key hash. mustPayToPubKeyWithDatumAndScriptRef :: PaymentPubKeyHash - -> Datum + -> PlutusData -> DatumPresence -> ScriptRef -> Value @@ -408,7 +391,7 @@ mustPayToPubKeyWithDatumAndScriptRef pkh datum dtp scriptRef = -- | the transaction. mustPayToScript :: ValidatorHash - -> Datum + -> PlutusData -> DatumPresence -> Value -> TxConstraints @@ -419,7 +402,7 @@ mustPayToScript vh dt dtp vl = mustPayToScriptAddress :: ValidatorHash -> Credential - -> Datum + -> PlutusData -> DatumPresence -> Value -> TxConstraints @@ -432,7 +415,7 @@ mustPayToScriptAddress vh credential dt dtp vl = -- | control the spending of the output, i.e. both scripts can be different. mustPayToScriptWithScriptRef :: ValidatorHash - -> Datum + -> PlutusData -> DatumPresence -> ScriptRef -> Value @@ -448,7 +431,7 @@ mustPayToScriptAddressWithScriptRef :: forall (i :: Type) (o :: Type) . ValidatorHash -> Credential - -> Datum + -> PlutusData -> DatumPresence -> ScriptRef -> Value @@ -476,7 +459,7 @@ mustPayToNativeScriptAddress nsHash credential vl = -- | Mint the given `Value` -- | The amount to mint must not be zero. -mustMintValue :: Value -> TxConstraints +mustMintValue :: MultiAsset -> TxConstraints mustMintValue = mustMintValueWithRedeemer unitRedeemer -- | Mint the given `Value` by accessing non-Ada assets. @@ -484,16 +467,15 @@ mustMintValue = mustMintValueWithRedeemer unitRedeemer mustMintValueWithRedeemer :: forall (i :: Type) (o :: Type) . Redeemer - -> Value + -> MultiAsset -> TxConstraints -mustMintValueWithRedeemer redeemer = notImplemented -- TODO: replace with MultiAsset - --- Array.fold <<< map tokenConstraint <<< MultiAsset.flatten --- where --- tokenConstraint --- :: ScriptHash /\ AssetName /\ BigNum -> TxConstraints --- tokenConstraint (cs /\ tn /\ amount) = --- mustMintCurrencyWithRedeemer (wrap cs) redeemer tn amount +mustMintValueWithRedeemer redeemer = + Array.fold <<< map tokenConstraint <<< MultiAsset.flatten + where + tokenConstraint + :: ScriptHash /\ AssetName /\ BigNum -> TxConstraints + tokenConstraint (cs /\ tn /\ amount) = + mustMintCurrencyWithRedeemer (wrap cs) redeemer tn amount -- | Create the given amount of the currency. -- | The amount to mint must not be zero. @@ -594,7 +576,7 @@ mustSpendNativeScriptOutput txOutRef = singleton <<< MustSpendNativeScriptOutput txOutRef mustHashDatum - :: DataHash -> Datum -> TxConstraints + :: DataHash -> PlutusData -> TxConstraints mustHashDatum dhsh = singleton <<< MustHashDatum dhsh mustRegisterStakePubKey @@ -698,75 +680,3 @@ mustSatisfyAnyOf = -- | chain and collateral will be lost. mustNotBeValid :: TxConstraints mustNotBeValid = singleton $ MustNotBeValid - --- | Are the constraints satisfiable given the time intervals? -isSatisfiable :: TxConstraints -> Boolean -isSatisfiable (TxConstraints { constraints }) = - let - intervals = - Array.mapMaybe - ( case _ of - MustValidateIn i -> Just i - _ -> Nothing - ) - constraints - itvl = foldl intersection always intervals - in - not (isEmpty itvl) - -pubKeyPayments - :: TxConstraints - -> Array (PaymentPubKeyHash /\ Value) -pubKeyPayments (TxConstraints { constraints }) = - toUnfoldable - $ fromFoldableWith (<>) - $ constraints >>= - case _ of - MustPayToPubKeyAddress pkh _ _ _ vl -> Array.singleton (pkh /\ vl) - _ -> [] - --- | The minimum `Value` that satisfies all `MustSpendAtLeast` constraints -mustSpendAtLeastTotal - :: TxConstraints -> Value -mustSpendAtLeastTotal = - foldr (join <<< f) mempty <<< _.constraints <<< unwrap - where - f :: TxConstraint -> Value - f (MustSpendAtLeast v) = v - f _ = mempty - --- | The minimum `Value` that satisfies all `MustProduceAtLeast` constraints -mustProduceAtLeastTotal - :: TxConstraints -> Value -mustProduceAtLeastTotal = - foldr (join <<< f) mempty <<< _.constraints <<< unwrap - where - f :: TxConstraint -> Value - f (MustProduceAtLeast v) = v - f _ = mempty - -requiredSignatories - :: TxConstraints - -> Array PaymentPubKeyHash -requiredSignatories = foldMap f <<< _.constraints <<< unwrap - where - f :: TxConstraint -> Array PaymentPubKeyHash - f (MustBeSignedBy pkh) = Array.singleton pkh - f _ = [] - -requiredMonetaryPolicies - :: TxConstraints - -> Array MintingPolicyHash -requiredMonetaryPolicies = foldMap f <<< _.constraints <<< unwrap - where - f :: TxConstraint -> Array MintingPolicyHash - f (MustMintValue mph _ _ _ _) = Array.singleton mph - f _ = [] - -requiredDatums - :: TxConstraints -> Array Datum -requiredDatums = foldMap f <<< _.constraints <<< unwrap - where - f :: TxConstraint -> Array Datum - f (MustIncludeDatum dt) = Array.singleton dt - f _ = [] diff --git a/src/Internal/Types/UsedTxOuts.purs b/src/Internal/Types/UsedTxOuts.purs index 6f8b807cd..d18e864f8 100644 --- a/src/Internal/Types/UsedTxOuts.purs +++ b/src/Internal/Types/UsedTxOuts.purs @@ -18,6 +18,7 @@ module Ctl.Internal.Types.UsedTxOuts , withLockedTransactionInputs ) where +import Cardano.Types.Transaction (Transaction) import Cardano.Types.TransactionHash (TransactionHash) import Control.Alt ((<$>)) import Control.Alternative (guard, pure) @@ -27,7 +28,6 @@ import Control.Category ((<<<), (>>>)) import Control.Monad.Error.Class (class MonadError, catchError, throwError) import Control.Monad.RWS (ask) import Control.Monad.Reader (class MonadAsk) -import Ctl.Internal.Cardano.Types.Transaction (Transaction) import Data.Array (concatMap) import Data.Foldable (class Foldable, all, foldr) import Data.Function (($)) @@ -226,4 +226,4 @@ isTxOutRefUsed ref = do txOutRefs :: Transaction -> Set { transactionId :: TransactionHash, index :: UInt } -txOutRefs tx = Set.map unwrap (unwrap (unwrap tx).body).inputs +txOutRefs tx = Set.fromFoldable $ map unwrap (unwrap (unwrap tx).body).inputs diff --git a/src/Internal/Types/Validator.purs b/src/Internal/Types/Validator.purs new file mode 100644 index 000000000..fcb935cc0 --- /dev/null +++ b/src/Internal/Types/Validator.purs @@ -0,0 +1,29 @@ +module Ctl.Internal.Types.Validator + ( Validator(Validator) + ) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) +import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) +import Ctl.Internal.Helpers (decodeTaggedNewtype) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype Validator = Validator PlutusScript + +derive instance Generic Validator _ +derive instance Newtype Validator _ +derive newtype instance Eq Validator +derive newtype instance Ord Validator + +instance DecodeAeson Validator where + decodeAeson = decodeTaggedNewtype "getValidator" Validator + +instance EncodeAeson Validator where + encodeAeson (Validator script) = + encodeAeson { "getValidator": script } + +instance Show Validator where + show = genericShow diff --git a/src/Internal/Types/ValidatorHash.purs b/src/Internal/Types/ValidatorHash.purs new file mode 100644 index 000000000..064edc361 --- /dev/null +++ b/src/Internal/Types/ValidatorHash.purs @@ -0,0 +1,31 @@ +module Ctl.Internal.Types.ValidatorHash + ( ValidatorHash(ValidatorHash) + ) where + +import Prelude + +import Aeson (class DecodeAeson, class EncodeAeson) +import Cardano.FromData (class FromData) +import Cardano.FromMetadata (class FromMetadata) +import Cardano.ToData (class ToData) +import Cardano.ToMetadata (class ToMetadata) +import Cardano.Types.ScriptHash (ScriptHash) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype ValidatorHash = ValidatorHash ScriptHash + +derive instance Generic ValidatorHash _ +derive instance Newtype ValidatorHash _ +derive newtype instance Eq ValidatorHash +derive newtype instance Ord ValidatorHash +derive newtype instance FromData ValidatorHash +derive newtype instance ToData ValidatorHash +derive newtype instance FromMetadata ValidatorHash +derive newtype instance ToMetadata ValidatorHash +derive newtype instance EncodeAeson ValidatorHash +derive newtype instance DecodeAeson ValidatorHash + +instance Show ValidatorHash where + show = genericShow diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 30b7721ae..608d6d5a0 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -20,7 +20,6 @@ import Prelude import Cardano.Wallet.Cip30 as Cip30 import Control.Monad.Error.Class (catchError, throwError) -import Ctl.Internal.Types.Natural (fromInt', minus) import Ctl.Internal.Wallet.Cip30 (Cip30Wallet, mkCip30WalletAff) import Ctl.Internal.Wallet.Key ( KeyWallet @@ -73,7 +72,7 @@ mkWalletAff walletExtension = -- number of times, for Lode to become available. _mkLodeWalletAff :: Aff Wallet _mkLodeWalletAff = do - retryNWithIntervalUntil (fromInt' 10) (toNumber 100) + retryNWithIntervalUntil 10 (toNumber 100) $ liftEffect (isWalletAvailable LodeWallet) (GenericCip30 <$> (mkCip30WalletAff =<< Cip30.enable "LodeWallet" [])) `catchError` @@ -85,7 +84,7 @@ _mkLodeWalletAff = do if n == zero then pure unit else mBool >>= if _ then pure unit - else delay (wrap ms) *> retryNWithIntervalUntil (n `minus` one) ms mBool + else delay (wrap ms) *> retryNWithIntervalUntil (n - 1) ms mBool isWalletAvailable :: WalletExtension -> Effect Boolean isWalletAvailable = _isWalletAvailable <<< walletExtensionToName diff --git a/src/Plutus/PubKeyHash.purs b/src/Plutus/PubKeyHash.purs deleted file mode 100644 index 4eb8cbe70..000000000 --- a/src/Plutus/PubKeyHash.purs +++ /dev/null @@ -1,41 +0,0 @@ -module Cardano.Plutus.Types.PubKeyHash where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , decodeAeson - , encodeAeson - , (.:) - ) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) -import Ctl.Internal.ToData (class ToData) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) - -newtype PubKeyHash = PubKeyHash Ed25519KeyHash - -derive instance Generic PubKeyHash _ -derive instance Newtype PubKeyHash _ -derive newtype instance Eq PubKeyHash -derive newtype instance FromData PubKeyHash -derive newtype instance FromMetadata PubKeyHash -derive newtype instance Ord PubKeyHash -derive newtype instance ToData PubKeyHash -derive newtype instance ToMetadata PubKeyHash - -instance Show PubKeyHash where - show = genericShow - -instance EncodeAeson PubKeyHash where - encodeAeson x = encodeAeson { getPubKeyHash: unwrap x } - -instance DecodeAeson PubKeyHash where - decodeAeson a = do - obj <- decodeAeson a - wrap <$> obj .: "getPubKeyHash" From 118c2aba4920ed90dc7d4b11b2751f95b35d4dcb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 11 Mar 2024 20:45:53 +0400 Subject: [PATCH 066/373] Fix ProcessConstraints --- packages.dhall | 4 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 91 ++- src/Internal/BalanceTx/RedeemerIndex.purs | 8 +- src/Internal/Deserialization/Transaction.js | 371 ----------- src/Internal/Deserialization/Transaction.purs | 583 ------------------ src/Internal/Deserialization/WitnessSet.js | 56 -- src/Internal/Deserialization/WitnessSet.purs | 201 ------ src/Internal/FromData.purs | 375 ----------- src/Internal/Lens.purs | 90 ++- src/Internal/Metadata/Cip25/Cip25String.purs | 141 ----- src/Internal/Metadata/Cip25/Common.purs | 137 ---- src/Internal/Metadata/Cip25/V2.purs | 382 ------------ src/Internal/Metadata/FromMetadata.purs | 63 -- src/Internal/Metadata/Helpers.purs | 38 -- src/Internal/Metadata/MetadataType.purs | 18 +- src/Internal/Metadata/ToMetadata.purs | 61 -- src/Internal/Plutus/Conversion.purs | 170 ----- src/Internal/Plutus/Conversion/Address.purs | 184 ------ src/Internal/Plutus/Conversion/Value.purs | 80 --- src/Internal/Plutus/Types/Address.purs | 155 ----- src/Internal/Plutus/Types/AssocMap.purs | 250 -------- src/Internal/Plutus/Types/Credential.purs | 150 ----- src/Internal/Plutus/Types/CurrencySymbol.purs | 110 ---- src/Internal/Plutus/Types/DataSchema.purs | 261 -------- src/Internal/Plutus/Types/Transaction.purs | 124 ---- .../Types/TransactionUnspentOutput.purs | 65 -- src/Internal/Plutus/Types/Value.purs | 311 ---------- src/Internal/ProcessConstraints.purs | 493 +++++++-------- src/Internal/ProcessConstraints/Error.purs | 38 +- src/Internal/ProcessConstraints/State.purs | 15 +- src/Internal/QueryM/Pools.purs | 9 +- src/Internal/Types/MetadataLabel.purs | 20 + src/Internal/Types/MintingPolicy.purs | 9 +- src/Internal/Types/MintingPolicyHash.purs | 37 -- .../Types/NativeScriptStakeValidator.purs | 21 - src/Internal/Types/OutputDatum.purs | 5 - src/Internal/Types/PaymentPubKey.purs | 30 - .../Types/PlutusScriptStakeValidator.purs | 31 - .../Types/PoolRegistrationParams.purs | 25 - src/Internal/Types/TxConstraints.purs | 114 ++-- src/Internal/Types/ValidatorHash.purs | 31 - 41 files changed, 479 insertions(+), 4878 deletions(-) delete mode 100644 src/Internal/Deserialization/Transaction.js delete mode 100644 src/Internal/Deserialization/Transaction.purs delete mode 100644 src/Internal/Deserialization/WitnessSet.js delete mode 100644 src/Internal/Deserialization/WitnessSet.purs delete mode 100644 src/Internal/FromData.purs delete mode 100644 src/Internal/Metadata/Cip25/Cip25String.purs delete mode 100644 src/Internal/Metadata/Cip25/Common.purs delete mode 100644 src/Internal/Metadata/Cip25/V2.purs delete mode 100644 src/Internal/Metadata/FromMetadata.purs delete mode 100644 src/Internal/Metadata/Helpers.purs delete mode 100644 src/Internal/Metadata/ToMetadata.purs delete mode 100644 src/Internal/Plutus/Conversion.purs delete mode 100644 src/Internal/Plutus/Conversion/Address.purs delete mode 100644 src/Internal/Plutus/Conversion/Value.purs delete mode 100644 src/Internal/Plutus/Types/Address.purs delete mode 100644 src/Internal/Plutus/Types/AssocMap.purs delete mode 100644 src/Internal/Plutus/Types/Credential.purs delete mode 100644 src/Internal/Plutus/Types/CurrencySymbol.purs delete mode 100644 src/Internal/Plutus/Types/DataSchema.purs delete mode 100644 src/Internal/Plutus/Types/Transaction.purs delete mode 100644 src/Internal/Plutus/Types/TransactionUnspentOutput.purs delete mode 100644 src/Internal/Plutus/Types/Value.purs create mode 100644 src/Internal/Types/MetadataLabel.purs delete mode 100644 src/Internal/Types/MintingPolicyHash.purs delete mode 100644 src/Internal/Types/NativeScriptStakeValidator.purs delete mode 100644 src/Internal/Types/OutputDatum.purs delete mode 100644 src/Internal/Types/PaymentPubKey.purs delete mode 100644 src/Internal/Types/PlutusScriptStakeValidator.purs delete mode 100644 src/Internal/Types/PoolRegistrationParams.purs delete mode 100644 src/Internal/Types/ValidatorHash.purs diff --git a/packages.dhall b/packages.dhall index 460df870d..b91a09e5c 100644 --- a/packages.dhall +++ b/packages.dhall @@ -279,7 +279,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "c15a6e2f63e50812d15c195ce035a06027c57001" + , version = "793503bc88dbdeccea7602d4ae34ccc360112b3a" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -361,7 +361,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "ce71744f6a6b1f855c325d3abcc8977d99700c2e" + , version = "06283f9b62a32452f228d20443d4365dfd32f544" } , cardano-message-signing = { dependencies = diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index f3ed74cf6..92b56b1ac 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -5,14 +5,25 @@ module Ctl.Internal.BalanceTx.ExUnitsAndMinFee import Prelude +import Cardano.Types + ( Coin + , CostModel + , ExUnits(ExUnits) + , Language + , PlutusData + , PlutusScript + , Redeemer(Redeemer) + , Transaction + , TransactionBody(TransactionBody) + , TransactionOutput(TransactionOutput) + , TransactionWitnessSet + , UtxoMap + ) +import Cardano.Types.ScriptRef as ScriptRef import Cardano.Types.TransactionInput (TransactionInput) -import Contract.Numeric.Natural (fromInt') as Natural import Control.Monad.Error.Class (throwError) import Control.Monad.Except.Trans (except) -import Ctl.Internal.BalanceTx.Constraints - ( _additionalUtxos - , _collateralUtxos - ) as Constraints +import Ctl.Internal.BalanceTx.Constraints (_additionalUtxos, _collateralUtxos) as Constraints import Ctl.Internal.BalanceTx.Error ( BalanceTxError(UtxoLookupFailedFor, ExUnitsEvaluationFailed) ) @@ -25,28 +36,13 @@ import Ctl.Internal.BalanceTx.Types ( BalanceTxM , FinalizedTransaction(FinalizedTransaction) , askCostModelsForLanguages - , askNetworkId , asksConstraints , liftContract ) import Ctl.Internal.BalanceTx.UnattachedTx (EvaluatedTx, IndexedTx) -import Ctl.Internal.Cardano.Types.ScriptRef as ScriptRef -import Ctl.Internal.Cardano.Types.Transaction - ( Costmdls - , Redeemer(Redeemer) - , Transaction - , TransactionOutput(TransactionOutput) - , TransactionWitnessSet - , TxBody(TxBody) - , UtxoMap - , _body - , _isValid - , _plutusData - , _witnessSet - ) import Ctl.Internal.Contract.MinFee (calculateMinFee) as Contract.MinFee import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.Plutus.Conversion (fromPlutusUtxoMap) +import Ctl.Internal.Lens (_body, _isValid, _plutusData, _witnessSet) import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet , TxEvaluationFailure(AdditionalUtxoOverlap) @@ -58,16 +54,14 @@ import Ctl.Internal.TxOutput ( transactionInputToTxOutRef , transactionOutputToOgmiosTxOut ) -import Ctl.Internal.Types.Datum (Datum) -import Ctl.Internal.Types.Natural (toBigInt) as Natural -import Ctl.Internal.Types.Scripts (Language, PlutusScript) import Data.Array (catMaybes) import Data.Array (fromFoldable, notElem) as Array import Data.Bifunctor (bimap) import Data.Either (Either(Left, Right), note) import Data.Foldable (foldMap) +import Data.Lens ((.~)) import Data.Lens.Getter ((^.)) -import Data.Lens.Setter ((?~)) +import Data.Map (Map) import Data.Map (empty, filterKeys, fromFoldable, lookup, toUnfoldable, union) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe) import Data.Newtype (unwrap, wrap) @@ -76,17 +70,15 @@ import Data.Set as Set import Data.Traversable (for) import Data.Tuple (snd) import Data.Tuple.Nested (type (/\), (/\)) +import Data.UInt as UInt import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) -import JS.BigInt (BigInt) evalTxExecutionUnits :: Transaction -> BalanceTxM Ogmios.TxEvaluationResult evalTxExecutionUnits tx = do - networkId <- askNetworkId - additionalUtxos <- - fromPlutusUtxoMap networkId <$> asksConstraints Constraints._additionalUtxos + additionalUtxos <- asksConstraints Constraints._additionalUtxos worker $ toOgmiosAdditionalUtxos additionalUtxos where toOgmiosAdditionalUtxos :: UtxoMap -> Ogmios.AdditionalUtxoSet @@ -119,7 +111,7 @@ evalTxExecutionUnits tx = do evalExUnitsAndMinFee :: IndexedTx -> UtxoMap - -> BalanceTxM (EvaluatedTx /\ BigInt) + -> BalanceTxM (EvaluatedTx /\ Coin) evalExUnitsAndMinFee unattachedTx allUtxos = do -- Reattach datums and redeemers before evaluating ex units: let attachedTx = reattachDatumsAndFakeRedeemers unattachedTx @@ -139,16 +131,12 @@ evalExUnitsAndMinFee unattachedTx allUtxos = do -- Attach datums and redeemers, set the script integrity hash: FinalizedTransaction finalizedTx <- finalizeTransaction txWithExUnits allUtxos -- Calculate the minimum fee for a transaction: - networkId <- askNetworkId - additionalUtxos <- - fromPlutusUtxoMap networkId - <$> asksConstraints Constraints._additionalUtxos - collateralUtxos <- - fromPlutusUtxoMap networkId <<< fromMaybe Map.empty - <$> asksConstraints Constraints._collateralUtxos + additionalUtxos <- asksConstraints Constraints._additionalUtxos + collateralUtxos <- fromMaybe Map.empty + <$> asksConstraints Constraints._collateralUtxos minFee <- liftContract $ Contract.MinFee.calculateMinFee finalizedTx (Map.union additionalUtxos collateralUtxos) - pure $ txWithExUnits /\ unwrap minFee + pure $ txWithExUnits /\ minFee -- | Attaches datums and redeemers, sets the script integrity hash, -- | for use after reindexing. @@ -160,34 +148,35 @@ finalizeTransaction tx utxos = do attachedTxWithExUnits = reattachDatumsAndRedeemers tx - txBody :: TxBody + txBody :: TransactionBody txBody = attachedTxWithExUnits ^. _body ws :: TransactionWitnessSet ws = attachedTxWithExUnits ^. _witnessSet redeemers :: Array Redeemer - redeemers = fromMaybe mempty (_.redeemers $ unwrap ws) + redeemers = (_.redeemers $ unwrap ws) - datums :: Array Datum - datums = wrap <$> fromMaybe mempty (_.plutusData $ unwrap ws) + datums :: Array PlutusData + datums = _.plutusData (unwrap ws) refPlutusScripts <- except $ getRefPlutusScripts txBody let scripts :: Array PlutusScript - scripts = fromMaybe mempty (_.plutusScripts $ unwrap ws) <> refPlutusScripts + scripts = (_.plutusScripts $ unwrap ws) <> refPlutusScripts languages :: Set Language languages = foldMap (Set.singleton <<< snd <<< unwrap) scripts - (costModels :: Costmdls) <- askCostModelsForLanguages languages + (costModels :: Map Language CostModel) <- askCostModelsForLanguages languages liftEffect $ FinalizedTransaction <$> setScriptDataHash costModels redeemers datums attachedTxWithExUnits where - getRefPlutusScripts :: TxBody -> Either BalanceTxError (Array PlutusScript) - getRefPlutusScripts (TxBody txBody) = + getRefPlutusScripts + :: TransactionBody -> Either BalanceTxError (Array PlutusScript) + getRefPlutusScripts (TransactionBody txBody) = let spendAndRefInputs :: Array TransactionInput spendAndRefInputs = @@ -214,7 +203,7 @@ reattachDatumsAndRedeemers transaction' = attachRedeemers redeemers transaction in transaction' - # _witnessSet <<< _plutusData ?~ map unwrap datums + # _witnessSet <<< _plutusData .~ datums updateTxExecutionUnits :: IndexedTx @@ -232,12 +221,12 @@ getRedeemersExUnits (Ogmios.TxEvaluationResult result) redeemers = do for redeemers \indexedRedeemer -> do { memory, steps } <- Map.lookup { redeemerTag: (unwrap indexedRedeemer).tag - , redeemerIndex: Natural.fromInt' (unwrap indexedRedeemer).index + , redeemerIndex: UInt.fromInt (unwrap indexedRedeemer).index } result pure $ Redeemer $ (unwrap $ indexedRedeemerToRedeemer indexedRedeemer) - { exUnits = - { mem: Natural.toBigInt memory - , steps: Natural.toBigInt steps + { exUnits = ExUnits + { mem: memory + , steps: steps } } diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 54deb7904..d92dfc06f 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -27,6 +27,7 @@ import Cardano.Types , ExUnits(ExUnits) , Redeemer(Redeemer) , RewardAddress + , ScriptHash , Transaction(Transaction) , TransactionBody(TransactionBody) ) @@ -34,7 +35,6 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.PlutusData (PlutusData) import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) import Cardano.Types.TransactionInput (TransactionInput) -import Ctl.Internal.Types.Scripts (MintingPolicyHash) import Data.Array (findIndex) import Data.Either (Either, note) import Data.Generic.Rep (class Generic) @@ -121,7 +121,7 @@ indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = -- | is valid for the transaction. data RedeemerPurpose = ForSpend TransactionInput - | ForMint MintingPolicyHash + | ForMint ScriptHash | ForReward RewardAddress | ForCert Certificate @@ -141,7 +141,7 @@ instance Show RedeemerPurpose where -- | Contains parts of a transaction that are important when indexing redeemers type RedeemersContext = { inputs :: Array TransactionInput - , mintingPolicyHashes :: Array MintingPolicyHash + , mintingPolicyHashes :: Array ScriptHash , rewardAddresses :: Array RewardAddress , certs :: Array Certificate } @@ -151,7 +151,7 @@ mkRedeemersContext (Transaction { body: TransactionBody { inputs, mint, withdrawals, certs } }) = { inputs: inputs , mintingPolicyHashes: - map wrap $ Set.toUnfoldable $ Map.keys $ unwrap $ fromMaybe + Set.toUnfoldable $ Map.keys $ unwrap $ fromMaybe (wrap Map.empty) mint , rewardAddresses: Set.toUnfoldable $ Map.keys $ withdrawals diff --git a/src/Internal/Deserialization/Transaction.js b/src/Internal/Deserialization/Transaction.js deleted file mode 100644 index 2347ef92f..000000000 --- a/src/Internal/Deserialization/Transaction.js +++ /dev/null @@ -1,371 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -const call = property => object => object[property](); -const callMaybe = property => maybe => object => { - const res = object[property](); - return res != null ? maybe.just(res) : maybe.nothing; -}; - -export function _txIsValid(tx) { - return tx.is_valid(); -} - -export function _txWitnessSet(tx) { - return tx.witness_set(); -} - -export function _txBody(tx) { - return tx.body(); -} - -const maybeGetter_ = fmap => propstr => maybe => obj => { - if (typeof propstr != "string") { - const s = "maybeGetter_ propstr must be a string, got " + propstr; - throw s; - } - const res = obj[propstr](); - return res == null ? maybe.nothing : maybe.just(fmap(res)); -}; -const maybeGetter = maybeGetter_(a => a); -const maybeGetterMulti = propstr => containerHelper => - maybeGetter_(o => containerHelper.unpack(o))(propstr); - -export const _txAuxiliaryData = maybeGetter("auxiliary_data"); -export const _adGeneralMetadata = maybeGetter("metadata"); -export const _adNativeScripts = maybeGetter("native_scripts"); -export const _adPlutusScripts = maybeGetter("plutus_scripts"); - -// inputs(): TransactionInputs; -export function _txBodyInputs(containerhelper) { - return body => containerhelper.unpack(body.inputs()); -} - -// outputs(): TransactionOutputs; -export function _txBodyOutputs(containerhelper) { - return body => containerhelper.unpack(body.outputs()); -} - -// fee(): BigNum; -export function _txBodyFee(body) { - return body.fee(); -} - -// ttl(): number | void; -export const _txBodyTtl = maybeGetter("ttl_bignum"); - -// certs(): Certificates | void; -export const _txBodyCerts = maybeGetterMulti("certs"); - -// withdrawals(): Withdrawals | void; -export const _txBodyWithdrawals = maybeGetter("withdrawals"); - -// update(): Update | void; -export const _txBodyUpdate = maybeGetter("update"); - -// auxiliary_data_hash(): AuxiliaryDataHash | void; -export const _txBodyAuxiliaryDataHash = maybeGetter("auxiliary_data_hash"); - -// validity_start_interval(): number | void; -export const _txBodyValidityStartInterval = maybeGetter( - "validity_start_interval_bignum" -); - -// multiassets(): Mint | void; -export const _txBodyMultiAssets = maybeGetter("multiassets"); - -export function _txBodyReferenceInputs(maybe) { - return containerhelper => body => - body.reference_inputs() - ? maybe.just(containerhelper.unpack(body.reference_inputs())) - : maybe.nothing; -} - -// script_data_hash(): ScriptDataHash | void; -export const _txBodyScriptDataHash = maybeGetter("script_data_hash"); - -// collateral(): Array TransactionInput | void; -export const _txBodyCollateral = maybeGetterMulti("collateral"); - -// required_signers(): Ed25519KeyHashes | void; -export const _txBodyRequiredSigners = maybeGetterMulti("required_signers"); - -// network_id(): number | void; -export function _txBodyNetworkId(testnet) { - return mainnet => - maybeGetter_(o => { - switch (o.kind()) { - case lib.NetworkIdKind.Testnet: - return testnet; - case lib.NetworkIdKind.Mainnet: - return mainnet; - default: - throw "Unknown NetworkIdKind: " + o.kind(); - } - })("network_id"); -} - -// collateral_return(): TransactionOutput | void; -export const _txBodyCollateralReturn = maybeGetter("collateral_return"); - -// total_collateral(): BigNum | void -export const _txBodyTotalCollateral = maybeGetter("total_collateral"); - -// foreign import _unpackWithdrawals :: ContainerHelper -> CSL.Withdrawals -> Array(Tuple CSL.RewardAddress CSL.BigNum) -export function _unpackWithdrawals(containerhelper) { - return containerhelper.unpackKeyIndexed; -} - -export function _unpackUpdate(containerhelper) { - return update => { - const pppus = containerhelper.unpackKeyIndexed( - update.proposed_protocol_parameter_updates() - ); - return { epoch: update.epoch(), paramUpdates: pppus }; - }; -} - -export function _unpackMint(containerhelper) { - return containerhelper.unpackKeyIndexed; -} - -export function _unpackMintAssets(containerhelper) { - return containerhelper.unpackKeyIndexed; -} - -export function _convertCert(certConvHelper) { - return cert => { - switch (cert.kind()) { - case lib.CertificateKind.StakeRegistration: - return certConvHelper.stakeRegistration( - cert.as_stake_registration().stake_credential() - ); - case lib.CertificateKind.StakeDeregistration: - return certConvHelper.stakeDeregistration( - cert.as_stake_deregistration().stake_credential() - ); - case lib.CertificateKind.StakeDelegation: - return certConvHelper.stakeDelegation( - cert.as_stake_delegation().stake_credential() - )(cert.as_stake_delegation().pool_keyhash()); - case lib.CertificateKind.PoolRegistration: - return certConvHelper.poolRegistration( - cert.as_pool_registration().pool_params() - ); - case lib.CertificateKind.PoolRetirement: - return certConvHelper.poolRetirement( - cert.as_pool_retirement().pool_keyhash() - )(cert.as_pool_retirement().epoch()); - case lib.CertificateKind.GenesisKeyDelegation: - return certConvHelper.genesisKeyDelegation( - cert.as_genesis_key_delegation().genesishash() - )(cert.as_genesis_key_delegation().genesis_delegate_hash())( - cert.as_genesis_key_delegation().vrf_keyhash() - ); - case lib.CertificateKind.MoveInstantaneousRewardsCert: - const mirCert = cert.as_move_instantaneous_rewards_cert(); - const mir = mirCert.move_instantaneous_reward(); - switch (mir.kind()) { - case lib.MIRKind.ToOtherPot: - return certConvHelper.moveInstantaneousRewardsToOtherPotCert( - mir.pot() - )(mir.as_to_other_pot()); - case lib.MIRKind.ToStakeCredentials: - return certConvHelper.moveInstantaneousRewardsToStakeCreds( - mir.pot() - )(mir.as_to_stake_creds()); - default: - throw ( - "MoveInstantaneousReward convertion failed for kind" + mir.kind() - ); - } - default: - throw ("Cert conversion failed for kind: ", cert.kind()); - } - }; -} - -export function _unpackProtocolParamUpdate(maybe) { - return ppu => { - const optional = x => (x == null ? maybe.nothing : maybe.just(x)); - - return { - minfeeA: optional(ppu.minfee_a()), - minfeeB: optional(ppu.minfee_b()), - maxBlockBodySize: optional(ppu.max_block_body_size()), - maxTxSize: optional(ppu.max_tx_size()), - maxBlockHeaderSize: optional(ppu.max_block_header_size()), - keyDeposit: optional(ppu.key_deposit()), - poolDeposit: optional(ppu.pool_deposit()), - maxEpoch: optional(ppu.max_epoch()), - nOpt: optional(ppu.n_opt()), - poolPledgeInfluence: optional(ppu.pool_pledge_influence()), - expansionRate: optional(ppu.expansion_rate()), - treasuryGrowthRate: optional(ppu.treasury_growth_rate()), - protocolVersion: optional(ppu.protocol_version()), - minPoolCost: optional(ppu.min_pool_cost()), - adaPerUtxoByte: optional(ppu.ada_per_utxo_byte()), - costModels: optional(ppu.cost_models()), - executionCosts: optional(ppu.execution_costs()), - maxTxExUnits: optional(ppu.max_tx_ex_units()), - maxBlockExUnits: optional(ppu.max_block_ex_units()), - maxValueSize: optional(ppu.max_value_size()), - collateralPercentage: optional(ppu.collateral_percentage()), - maxCollateralInputs: optional(ppu.max_collateral_inputs()) - }; - }; -} - -export function _unpackCostModels(containerhelper) { - return containerhelper.unpackKeyIndexed; -} - -export function _unpackCostModel(cm) { - const res = []; - for (let op = 0; op < cm.len(); op++) { - res.push(cm.get(op).to_str()); - } - return res; -} - -export function _convertNonce(nonceCtors) { - return cslNonce => { - const hashBytes = cslNonce.get_hash(); - return hashBytes == null - ? nonceCtors.identityNonce - : nonceCtors.hashNonce(hashBytes); - }; -} - -export function _unpackMetadatums(containerHelper) { - return containerHelper.unpackKeyIndexed; -} - -export function _unpackMetadataMap(containerHelper) { - return containerHelper.unpackKeyIndexed; -} - -export function _unpackMetadataList(containerHelper) { - return containerHelper.unpack; -} - -export function _convertMetadatum(metadataCtors) { - return cslMetadatum => { - switch (cslMetadatum.kind()) { - case lib.TransactionMetadatumKind.MetadataMap: - return metadataCtors.from_map(cslMetadatum.as_map()); - case lib.TransactionMetadatumKind.MetadataList: - return metadataCtors.from_list(cslMetadatum.as_list()); - case lib.TransactionMetadatumKind.Int: - return metadataCtors.from_int(cslMetadatum.as_int()); - case lib.TransactionMetadatumKind.Bytes: - return metadataCtors.from_bytes(cslMetadatum.as_bytes()); - case lib.TransactionMetadatumKind.Text: - return metadataCtors.from_text(cslMetadatum.as_text()); - default: - throw "Could not convert to known types."; - } - }; -} - -export function _unpackExUnits(exunits) { - return { - mem: exunits.mem(), - steps: exunits.steps() - }; -} - -export function _unpackUnitInterval(ui) { - return { - numerator: ui.numerator(), - denominator: ui.denominator() - }; -} - -export function _unpackProtocolVersion(cslPV) { - return { - major: cslPV.major(), - minor: cslPV.minor() - }; -} - -export function _unpackExUnitsPrices(cslEup) { - return { - memPrice: cslEup.mem_price(), - stepPrice: cslEup.step_price() - }; -} - -export const poolParamsOperator = call("operator"); -export const poolParamsVrfKeyhash = call("vrf_keyhash"); -export const poolParamsPledge = call("pledge"); -export const poolParamsCost = call("cost"); -export const poolParamsMargin = call("margin"); -export const poolParamsRewardAccount = call("reward_account"); - -export function poolParamsPoolOwners(containerHelper) { - return poolParams => containerHelper.unpack(poolParams.pool_owners()); -} - -export function poolParamsRelays(containerHelper) { - return poolParams => containerHelper.unpack(poolParams.relays()); -} - -export const poolParamsPoolMetadata = callMaybe("pool_metadata"); - -export function convertRelay_(helper) { - return relay => { - switch (relay.kind()) { - case lib.RelayKind.SingleHostAddr: - return helper.asSingleHostAddr(relay.as_single_host_addr()); - case lib.RelayKind.SingleHostName: - return helper.asSingleHostName(relay.as_single_host_name()); - case lib.RelayKind.MultiHostName: - return helper.asMultiHostName(relay.as_multi_host_name()); - default: - throw "convertRelay_: impossible happened: invalid Relay"; - } - }; -} - -export function convertIpv6_(ipv6) { - return ipv6.ip(); -} - -export function convertIpv4_(ipv6) { - return ipv6.ip(); -} - -export function convertSingleHostAddr_(maybe) { - return cont => singleHostAddr => { - const port = singleHostAddr.port(); - const ipv4 = singleHostAddr.ipv4(); - const ipv6 = singleHostAddr.ipv6(); - - return cont(port ? maybe.just(port) : maybe.nothing)( - ipv4 ? maybe.just(ipv4) : maybe.nothing - )(ipv6 ? maybe.just(ipv6) : maybe.nothing); - }; -} - -export function convertSingleHostName_(maybe) { - return cont => singleHostName => { - const port = singleHostName.port(); - return cont(port ? maybe.just(port) : maybe.nothing)( - singleHostName.dns_name().record() - ); - }; -} - -export function convertMultiHostName_(multiHostName) { - return multiHostName.dns_name().record(); -} - -export function unpackMIRToStakeCredentials_(containerHelper) { - return mirToStakeCredentials => - containerHelper.unpackKeyIndexed(mirToStakeCredentials); -} - -export function convertPoolMetadata_(cont) { - return poolMetadata => - cont(poolMetadata.url().url())(poolMetadata.pool_metadata_hash()); -} diff --git a/src/Internal/Deserialization/Transaction.purs b/src/Internal/Deserialization/Transaction.purs deleted file mode 100644 index d18cefb2f..000000000 --- a/src/Internal/Deserialization/Transaction.purs +++ /dev/null @@ -1,583 +0,0 @@ -module Ctl.Internal.Deserialization.Transaction - ( convertAuxiliaryData - , convertCertificate - , convertCostModel - , convertCostModels - , convertExUnits - , convertGeneralTransactionMetadata - , convertMetadataList - , convertMetadataMap - , convertMetadatum - , convertMint - , convertNonce - , convertProtocolParamUpdate - , convertProtocolVersion - , convertTransaction - , convertTxBody - , convertUpdate - , cslNumberToUInt - , cslRatioToRational - , deserializeTransaction - ) where - -import Prelude - -import Cardano.Serialization.Lib - ( fromBytes - , toBytes - , transactionBody_certs - , transactionBody_fee - , transactionBody_inputs - , transactionBody_outputs - , transactionBody_referenceInputs - , transactionBody_update - , transactionBody_withdrawals - , unpackListContainer - , unpackMapContainer - , unpackMapContainerToMapWith - ) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.BigNum (BigNum) as Csl -import Cardano.Types.BigNum (toBigInt) as BigNum -import Cardano.Types.MultiAsset (MultiAsset(..)) -import Cardano.Types.Slot (Slot(..)) -import Cardano.Types.TransactionInput as TransactionInput -import Cardano.Types.TransactionOutput as TransactionOutput -import Ctl.Internal.Cardano.Types.Transaction - ( AuxiliaryData(AuxiliaryData) - , AuxiliaryDataHash(AuxiliaryDataHash) - , Certificate - ( StakeDeregistration - , StakeRegistration - , StakeDelegation - , PoolRegistration - , PoolRetirement - , GenesisKeyDelegation - , MoveInstantaneousRewardsCert - ) - , CostModel(CostModel) - , Costmdls(Costmdls) - , Epoch(Epoch) - , ExUnitPrices - , ExUnits - , GenesisDelegateHash(GenesisDelegateHash) - , GenesisHash(GenesisHash) - , Ipv4(Ipv4) - , Ipv6(Ipv6) - , MIRToStakeCredentials(MIRToStakeCredentials) - , Mint(Mint) - , MoveInstantaneousReward(ToOtherPot, ToStakeCreds) - , Nonce(HashNonce, IdentityNonce) - , PoolMetadata(PoolMetadata) - , PoolMetadataHash(PoolMetadataHash) - , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) - , ProtocolParamUpdate - , ProtocolVersion - , Relay(SingleHostAddr, SingleHostName, MultiHostName) - , RequiredSigner(RequiredSigner) - , ScriptDataHash(ScriptDataHash) - , Transaction(Transaction) - , TxBody(TxBody) - , URL(URL) - , Update - ) as T -import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash(PoolPubKeyHash)) -import Ctl.Internal.Cardano.Types.Value (Coin(Coin)) -import Ctl.Internal.Deserialization.Error - ( Err - , FromCslRepError - , addErrTrace - , cslErr - ) -import Ctl.Internal.Deserialization.Language (convertLanguage) -import Ctl.Internal.Deserialization.WitnessSet - ( convertNativeScripts - , convertPlutusScripts - , convertWitnessSet - ) -import Ctl.Internal.Error (E) -import Ctl.Internal.FfiHelpers - ( ContainerHelper - , MaybeFfiHelper - , containerHelper - , maybeFfiHelper - ) -import Ctl.Internal.Helpers (notImplemented) -import Ctl.Internal.Serialization.Types - ( AssetName - , AuxiliaryData - , AuxiliaryDataHash - , Certificate - , CostModel - , Costmdls - , ExUnitPrices - , ExUnits - , GeneralTransactionMetadata - , GenesisDelegateHash - , GenesisHash - , Ipv4 - , Ipv6 - , Language - , MIRToStakeCredentials - , MetadataList - , MetadataMap - , Mint - , MintAssets - , MultiHostName - , NativeScripts - , Nonce - , PlutusScripts - , PoolMetadata - , PoolMetadataHash - , PoolParams - , ProtocolParamUpdate - , ProtocolVersion - , Relay - , ScriptDataHash - , SingleHostAddr - , SingleHostName - , Transaction - , TransactionBody - , TransactionInput - , TransactionMetadatum - , TransactionOutput - , TransactionWitnessSet - , UnitInterval - , Update - , Withdrawals - ) as Csl -import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.Int (Int) as Csl -import Ctl.Internal.Types.Int as Int -import Ctl.Internal.Types.RewardAddress (RewardAddress(RewardAddress)) as T -import Ctl.Internal.Types.TransactionMetadata - ( GeneralTransactionMetadata - , TransactionMetadatum(MetadataList, MetadataMap, Bytes, Int, Text) - , TransactionMetadatumLabel(TransactionMetadatumLabel) - ) -import Ctl.Internal.Types.VRFKeyHash (VRFKeyHash(VRFKeyHash)) as T -import Data.Bifunctor (bimap, lmap) -import Data.Bitraversable (bitraverse) -import Data.ByteArray (ByteArray) -import Data.Either (Either) -import Data.Map as M -import Data.Maybe (Maybe, fromMaybe) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Data.Ratio (Ratio, reduce) -import Data.Set (fromFoldable) as Set -import Data.Traversable (traverse) -import Data.Tuple.Nested (type (/\)) -import Data.UInt (UInt) -import Data.UInt as UInt -import Data.Variant (Variant) -import JS.BigInt (BigInt) -import JS.BigInt as BigInt -import Type.Row (type (+)) - --- | Deserializes CBOR encoded transaction to a CTL's native type. -deserializeTransaction - :: forall (r :: Row Type). CborBytes -> Err r T.Transaction -deserializeTransaction txCbor = - cslErr "TransactionOutput" (fromBytes (unwrap txCbor)) >>= - convertTransaction - --- | Converts transaction from foreign CSL representation to CTL's one. -convertTransaction - :: forall (r :: Row Type). Csl.Transaction -> Err r T.Transaction -convertTransaction tx = notImplemented -- addErrTrace "convertTransaction" do - --- body <- convertTxBody $ _txBody tx --- let --- witnessSet = convertWitnessSet (_txWitnessSet tx) --- auxiliaryData = convertAuxiliaryData <$> --- _txAuxiliaryData maybeFfiHelper tx --- pure $ T.Transaction --- { body --- , witnessSet --- , isValid: _txIsValid tx --- , auxiliaryData --- } - --- | Converts transaction body from foreign CSL representation to CTL's one. -convertTxBody :: forall (r :: Row Type). Csl.TransactionBody -> Err r T.TxBody -convertTxBody txBody = notImplemented -- do - --- let --- inputs = Set.fromFoldable $ TransactionInput.fromCsl <$> unpackListContainer (transactionBody_inputs txBody) - --- outputs <- --- unpackListContainer (transactionBody_outputs txBody) --- # traverse (TransactionOutput.fromCsl >>> cslErr "TransactionOutput") --- let --- fee = Coin $ transactionBody_fee txBody --- networkId = --- notImplemented - --- ws :: Maybe (Array (Csl.RewardAddress /\ Csl.BigNum)) --- ws = unpackMapContainer <$> transactionBody_withdrawals txBody - --- withdrawals :: Maybe (M.Map T.RewardAddress Coin) <- --- -- array -> map --- (map <<< map) (M.fromFoldable <<< map (lmap T.RewardAddress)) --- -- bignum -> coin --- <<< (traverse <<< traverse <<< traverse) --- (BigNum.toBigInt >>> Coin >>> pure) --- $ ws - --- update <- traverse convertUpdate $ transactionBody_update txBody - --- let --- cslReferenceInputs :: Array Csl.TransactionInput --- cslReferenceInputs = --- map unpackListContainer (toMaybe (transactionBody_referenceInputs txBody)) --- # fromMaybe mempty - --- referenceInputs = Set.fromFoldable $ TransactionInput.fromCsl <$> cslReferenceInputs - --- certs = map convertCertificate <$> --- toMaybe (transactionBody_certs txBody) - --- collateralReturn <- notImplemented --- -- _txBodyCollateralReturn maybeFfiHelper txBody # --- -- traverse (TransactionOutput.fromCsl >>> cslErr "TransactionOutput") - --- let --- totalCollateral = notImplemented -- _txBodyTotalCollateral maybeFfiHelper txBody <#> --- -- (BigNum.toBigInt >>> Coin) - --- pure $ notImplemented --- T.TxBody --- { inputs --- , outputs --- , fee --- , ttl: Slot <$> notImplemented -- _txBodyTtl maybeFfiHelper txBody --- , certs --- , withdrawals --- , update --- , auxiliaryDataHash: --- T.AuxiliaryDataHash <<< toBytes <$> --- notImplemented -- _txBodyAuxiliaryDataHash maybeFfiHelper txBody --- , validityStartInterval: --- Slot <$> _txBodyValidityStartInterval maybeFfiHelper txBody --- , mint: map convertMint $ _txBodyMultiAssets maybeFfiHelper txBody --- , referenceInputs --- , scriptDataHash: convertScriptDataHash <$> _txBodyScriptDataHash --- maybeFfiHelper --- txBody --- , collateral: _txBodyCollateral containerHelper maybeFfiHelper txBody >>= --- map TransactionInput.fromCsl >>> pure --- , requiredSigners: --- _txBodyRequiredSigners containerHelper maybeFfiHelper txBody # --- (map <<< map) (T.RequiredSigner <<< wrap) --- , networkId --- , collateralReturn --- , totalCollateral --- } - -convertUpdate :: forall (r :: Row Type). Csl.Update -> Err r T.Update -convertUpdate u = notImplemented -- do - --- let { epoch: e, paramUpdates } = _unpackUpdate containerHelper u --- epoch <- map T.Epoch $ cslNumberToUInt "convertUpdate: epoch" e --- ppus <- traverse --- ( bitraverse --- (pure <<< T.GenesisHash <<< toBytes) --- convertProtocolParamUpdate --- ) --- paramUpdates --- pure --- { epoch --- , proposedProtocolParameterUpdates: T.ProposedProtocolParameterUpdates $ --- M.fromFoldable ppus --- } - -convertCertificate - :: Csl.Certificate -> T.Certificate -convertCertificate = notImplemented -- _convertCert certConvHelper - --- where --- certConvHelper :: CertConvHelper T.Certificate --- certConvHelper = --- { stakeDeregistration: T.StakeDeregistration --- , stakeRegistration: T.StakeRegistration --- , stakeDelegation: \sc -> T.StakeDelegation sc <<< wrap <<< wrap <<< wrap --- , poolRegistration: convertPoolRegistration --- , poolRetirement: convertPoolRetirement --- , genesisKeyDelegation: \genesisHash genesisDelegateHash vrfKeyhash -> do --- T.GenesisKeyDelegation --- { genesisHash: T.GenesisHash $ toBytes genesisHash --- , genesisDelegateHash: T.GenesisDelegateHash $ toBytes --- genesisDelegateHash --- , vrfKeyhash: T.VRFKeyHash vrfKeyhash --- } --- , moveInstantaneousRewardsToOtherPotCert: \pot amount -> do --- T.MoveInstantaneousRewardsCert $ --- T.ToOtherPot { pot, amount: amount } --- , moveInstantaneousRewardsToStakeCreds: \pot amounts -> do --- T.MoveInstantaneousRewardsCert $ --- T.ToStakeCreds { pot, amounts: convertMIRToStakeCredentials amounts } --- } - -convertMIRToStakeCredentials - :: Csl.MIRToStakeCredentials -> T.MIRToStakeCredentials -convertMIRToStakeCredentials = notImplemented - --- T.MIRToStakeCredentials <<< M.fromFoldable <<< unpackMIRToStakeCredentials_ --- containerHelper - -convertPoolRegistration :: Csl.PoolParams -> T.Certificate -convertPoolRegistration params = notImplemented -- do - --- let --- relays = convertRelay <$> poolParamsRelays containerHelper params --- T.PoolRegistration --- { operator: PoolPubKeyHash $ wrap $ wrap $ poolParamsOperator params --- , vrfKeyhash: T.VRFKeyHash $ poolParamsVrfKeyhash params --- , pledge: poolParamsPledge params --- , cost: poolParamsCost params --- , margin: _unpackUnitInterval $ poolParamsMargin params --- , rewardAccount: T.RewardAddress $ poolParamsRewardAccount params --- , poolOwners: wrap <<< wrap <<< wrap <$> poolParamsPoolOwners --- containerHelper --- params --- , relays --- , poolMetadata: poolParamsPoolMetadata maybeFfiHelper params <#> --- convertPoolMetadata_ --- \url hash -> T.PoolMetadata --- { url: T.URL url --- , hash: T.PoolMetadataHash $ toBytes hash --- } --- } - -convertRelay :: Csl.Relay -> T.Relay -convertRelay relay = notImplemented -- do - --- convertRelay_ --- { asSingleHostAddr: convertSingleHostAddr_ maybeFfiHelper --- \mbPort mbIpv4 mbIpv6 -> do --- let --- ipv4 = mbIpv4 <#> convertIpv4 --- ipv6 = mbIpv6 <#> convertIpv6 --- T.SingleHostAddr { port: mbPort, ipv4, ipv6 } --- , asSingleHostName: convertSingleHostName_ maybeFfiHelper --- \port mbHost -> T.SingleHostName { port, dnsName: mbHost } --- , asMultiHostName: T.MultiHostName <<< { dnsName: _ } <<< --- convertMultiHostName_ --- } --- relay - -convertIpv6 :: Csl.Ipv6 -> T.Ipv6 -convertIpv6 = notImplemented -- T.Ipv6 <<< convertIpv6_ - -convertIpv4 :: Csl.Ipv4 -> T.Ipv4 -convertIpv4 = notImplemented -- T.Ipv4 <<< convertIpv4_ - -convertPoolRetirement - :: Csl.Ed25519KeyHash - -> UInt - -> T.Certificate -convertPoolRetirement poolKeyHash epoch = notImplemented -- do - --- T.PoolRetirement --- { poolKeyHash: wrap $ wrap $ wrap $ poolKeyHash, epoch: wrap epoch } - -convertMint :: Csl.Mint -> T.Mint -convertMint = -- T.Mint <<< MultiAsset <<< - -- unpackMapContainerToMapWith (wrap) - -- ( unpackMapContainerToMapWith - -- identity - -- (Int.toBigInt <<< wrap) - -- ) - notImplemented - -convertProtocolParamUpdate - :: forall (r :: Row Type) - . Csl.ProtocolParamUpdate - -> Err r T.ProtocolParamUpdate -convertProtocolParamUpdate cslPpu = notImplemented -- do - --- let --- ppu = _unpackProtocolParamUpdate maybeFfiHelper cslPpu --- lbl = (<>) "ProtocolParamUpdate." --- minfeeA = Coin <<< BigNum.toBigInt <$> ppu.minfeeA --- minfeeB = Coin <<< BigNum.toBigInt <$> ppu.minfeeB --- maxBlockBodySize <- traverse (cslNumberToUInt (lbl "maxBlockBodySize")) --- ppu.maxBlockBodySize --- maxTxSize <- traverse (cslNumberToUInt (lbl "maxTxSize")) ppu.maxTxSize --- maxBlockHeaderSize <- traverse (cslNumberToUInt (lbl "maxBlockHeaderSize")) --- ppu.maxBlockHeaderSize --- let --- keyDeposit = Coin <<< BigNum.toBigInt <$> ppu.keyDeposit --- poolDeposit = Coin <<< BigNum.toBigInt <$> ppu.poolDeposit --- maxEpoch <- traverse (map T.Epoch <<< cslNumberToUInt (lbl "maxEpoch")) --- ppu.maxEpoch --- nOpt <- traverse (cslNumberToUInt (lbl "nOpt")) ppu.nOpt --- protocolVersion <- traverse (convertProtocolVersion (lbl "protocolVersion")) --- ppu.protocolVersion --- costModels <- addErrTrace (lbl "costModels") $ traverse convertCostModels --- ppu.costModels --- let --- maxTxExUnits = convertExUnits <$> ppu.maxTxExUnits --- maxBlockExUnits = convertExUnits <$> --- ppu.maxBlockExUnits --- maxValueSize <- traverse (cslNumberToUInt (lbl "maxValueSize")) --- ppu.maxValueSize --- collateralPercentage <- traverse --- (cslNumberToUInt (lbl "collateralPercentage")) --- ppu.collateralPercentage --- maxCollateralInputs <- traverse (cslNumberToUInt (lbl "maxCollateralInputs")) --- ppu.maxCollateralInputs --- pure --- { minfeeA --- , minfeeB --- , maxBlockBodySize --- , maxTxSize --- , maxBlockHeaderSize --- , keyDeposit --- , poolDeposit --- , maxEpoch --- , nOpt --- , poolPledgeInfluence: _unpackUnitInterval <$> ppu.poolPledgeInfluence --- , expansionRate: _unpackUnitInterval <$> ppu.expansionRate --- , treasuryGrowthRate: _unpackUnitInterval <$> ppu.treasuryGrowthRate --- , protocolVersion --- , minPoolCost: ppu.minPoolCost --- , adaPerUtxoByte: ppu.adaPerUtxoByte --- , costModels --- , executionCosts: convertExUnitPrices <$> ppu.executionCosts --- , maxTxExUnits --- , maxBlockExUnits --- , maxValueSize --- , collateralPercentage --- , maxCollateralInputs --- } - -convertNonce :: Csl.Nonce -> T.Nonce -convertNonce = notImplemented -- _convertNonce - --- { hashNonce: T.HashNonce, identityNonce: T.IdentityNonce } - -convertCostModels - :: forall (r :: Row Type) - . Csl.Costmdls - -> Err r T.Costmdls -convertCostModels cslCostMdls = notImplemented - --- let --- mdls :: Array (Csl.Language /\ Csl.CostModel) --- mdls = _unpackCostModels containerHelper cslCostMdls --- in --- (T.Costmdls <<< M.fromFoldable) <$> traverse --- (bitraverse (pure <<< convertLanguage) convertCostModel) --- mdls - -convertCostModel - :: forall (r :: Row Type) - . Csl.CostModel - -> E (FromCslRepError + r) T.CostModel -convertCostModel = notImplemented - --- map T.CostModel <<< traverse stringToInt <<< --- _unpackCostModel --- where --- stringToInt --- :: String -> Either (Variant (fromCslRepError :: String | r)) Int.Int --- stringToInt s = cslErr (": string (" <> s <> ") -> int") $ --- Int.fromBigInt =<< BigInt.fromString s - -convertAuxiliaryData - :: Csl.AuxiliaryData -> T.AuxiliaryData -convertAuxiliaryData ad = notImplemented -- do - --- let --- metadata = convertGeneralTransactionMetadata <$> --- _adGeneralMetadata maybeFfiHelper ad --- T.AuxiliaryData --- { metadata --- , nativeScripts: pure <<< convertNativeScripts =<< _adNativeScripts --- maybeFfiHelper --- ad --- , plutusScripts: pure <<< convertPlutusScripts =<< _adPlutusScripts --- maybeFfiHelper --- ad --- } - -convertGeneralTransactionMetadata - :: Csl.GeneralTransactionMetadata - -> GeneralTransactionMetadata -convertGeneralTransactionMetadata gtm = notImplemented -- wrap - --- $ M.fromFoldable --- $ bimap (TransactionMetadatumLabel <<< BigNum.toBigInt) convertMetadatum --- <$> _unpackMetadatums containerHelper gtm - -convertMetadatum :: Csl.TransactionMetadatum -> TransactionMetadatum -convertMetadatum tm = notImplemented -- _convertMetadatum - --- { from_bytes: Bytes --- , from_int: Int --- , from_text: Text --- , from_map: convertMetadataMap --- , from_list: convertMetadataList --- } --- tm - -convertMetadataList - :: Csl.MetadataList - -> TransactionMetadatum -convertMetadataList ml = notImplemented -- MetadataList - --- $ convertMetadatum <$> _unpackMetadataList containerHelper ml - -convertMetadataMap - :: Csl.MetadataMap - -> TransactionMetadatum -convertMetadataMap mm = notImplemented -- MetadataMap - --- $ M.fromFoldable --- $ bimap convertMetadatum convertMetadatum --- <$> _unpackMetadataMap containerHelper mm - --- unpack to array of tuples - ----- conversion helpers - -cslNumberToUInt - :: forall (r :: Row Type). String -> Number -> E (FromCslRepError + r) UInt -cslNumberToUInt nm nb = cslErr (nm <> ": Number (" <> show nb <> ") -> UInt") $ - UInt.fromNumber' nb - -cslRatioToRational - :: forall (r :: Row Type) - . { denominator :: Csl.BigNum, numerator :: Csl.BigNum } - -> Ratio BigInt -cslRatioToRational { numerator, denominator } = - reduce (BigNum.toBigInt numerator) (BigNum.toBigInt denominator) - -convertExUnits - :: forall (r :: Row Type) - . Csl.ExUnits - -> T.ExUnits -convertExUnits cslExunits = notImplemented - --- let --- { mem, steps } = _unpackExUnits cslExunits --- in --- { mem: _, steps: _ } (BigNum.toBigInt mem) (BigNum.toBigInt steps) - -convertScriptDataHash :: Csl.ScriptDataHash -> T.ScriptDataHash -convertScriptDataHash = toBytes >>> T.ScriptDataHash - -convertProtocolVersion - :: forall (r :: Row Type) - . String - -> Csl.ProtocolVersion - -> E (FromCslRepError + r) T.ProtocolVersion -convertProtocolVersion nm cslPV = notImplemented --- _unpackProtocolVersion cslPV # --- ( \{ major, minor } -> --- { major: _, minor: _ } --- <$> cslNumberToUInt (nm <> " major") major --- <*> cslNumberToUInt (nm <> " minor") minor --- ) diff --git a/src/Internal/Deserialization/WitnessSet.js b/src/Internal/Deserialization/WitnessSet.js deleted file mode 100644 index ea8b41a80..000000000 --- a/src/Internal/Deserialization/WitnessSet.js +++ /dev/null @@ -1,56 +0,0 @@ -const call = property => object => object[property](); - -const callMaybe = property => maybe => object => { - const res = object[property](); - return res != null ? maybe.just(res) : maybe.nothing; -}; - -// Classes like TransactionInputs are just monomorphic containers with `len` -// and `get()` methods. This function abstracts away converting them to Array -// of something. -const containerExtractor = obj => { - const res = []; - - for (let i = 0; i < obj.len(); i++) { - res.push(obj.get(i)); - } - - return res; -}; - -export const getVkeywitnesses = callMaybe("vkeys"); -export { containerExtractor as extractWitnesses }; -export const getVkey = call("vkey"); -export const getSignature = call("signature"); -export const vkeyPublicKey = call("public_key"); -export const publicKeyToBech32 = call("to_bech32"); -export const signatureToBech32 = call("to_bech32"); -export const getNativeScripts = callMaybe("native_scripts"); -export { containerExtractor as extractNativeScripts }; - -export function nativeScriptAs(maybe) { - return prop => res => ns => - ns[prop]() == null ? maybe.nothing : maybe.just(res); -} - -export const getBootstraps = callMaybe("bootstraps"); -export { containerExtractor as extractBootstraps }; -export const getBootstrapVkey = call("vkey"); -export const getBootstrapSignature = call("signature"); -export const getBootstrapChainCode = call("chain_code"); -export const getBootstrapAttributes = call("attributes"); -export const getPlutusScripts = callMaybe("plutus_scripts"); -export { containerExtractor as extractPlutusScripts }; -export const plutusScriptBytes = call("bytes"); -export const plutusScriptVersion = call("language_version"); -export const getWitnessSetPlutusData = callMaybe("plutus_data"); -export { containerExtractor as extractPlutusData }; -export const getRedeemers = callMaybe("redeemers"); -export const getRedeemerTag = call("tag"); -export const getRedeemerIndex = call("index"); -export { containerExtractor as extractRedeemers }; -export const getRedeemerTagKind = call("kind"); -export const getRedeemerPlutusData = call("data"); -export const getExUnits = call("ex_units"); -export const getExUnitsMem = call("mem"); -export const getExUnitsSteps = call("steps"); diff --git a/src/Internal/Deserialization/WitnessSet.purs b/src/Internal/Deserialization/WitnessSet.purs deleted file mode 100644 index 689054551..000000000 --- a/src/Internal/Deserialization/WitnessSet.purs +++ /dev/null @@ -1,201 +0,0 @@ -module Ctl.Internal.Deserialization.WitnessSet - ( convertNativeScripts - , convertPlutusScripts - , convertPlutusScript - , convertVkeyWitnesses - , convertVkeyWitness - , convertWitnessSet - , plutusScriptBytes - ) where - -import Prelude - -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum (toBigInt) as BigNum -import Cardano.Types.PlutusData (PlutusData) as T -import Cardano.Types.PlutusScript as S -import Cardano.Types.Vkey as T -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript) as T -import Ctl.Internal.Cardano.Types.Transaction - ( BootstrapWitness - , ExUnits - , Redeemer(Redeemer) - , TransactionWitnessSet(TransactionWitnessSet) - , Vkeywitness(Vkeywitness) - ) as T -import Ctl.Internal.Deserialization.Language (convertLanguage) -import Ctl.Internal.Deserialization.NativeScript (convertNativeScript) -import Ctl.Internal.Deserialization.PlutusData (convertPlutusData) -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Serialization.Types - ( BootstrapWitness - , BootstrapWitnesses - , Ed25519Signature - , ExUnits - , Language - , NativeScript - , NativeScripts - , PlutusData - , PlutusList - , PlutusScript - , PlutusScripts - , PublicKey - , Redeemer - , RedeemerTag - , Redeemers - , TransactionWitnessSet - , Vkey - , Vkeywitness - , Vkeywitnesses - ) -import Ctl.Internal.Types.RedeemerTag as Tag -import Data.ByteArray (ByteArray) -import Data.Maybe (Maybe) -import Data.Newtype (wrap) -import Data.Tuple (curry) -import Data.Tuple.Nested ((/\)) -import Effect.Exception (throw) -import Effect.Unsafe (unsafePerformEffect) - -convertWitnessSet :: TransactionWitnessSet -> T.TransactionWitnessSet -convertWitnessSet ws = - let - vkeys = getVkeywitnesses maybeFfiHelper ws <#> convertVkeyWitnesses - nativeScripts = getNativeScripts maybeFfiHelper ws <#> convertNativeScripts - bootstraps = getBootstraps maybeFfiHelper ws <#> convertBootstraps - plutusScripts = getPlutusScripts maybeFfiHelper ws <#> convertPlutusScripts - plutusData = getWitnessSetPlutusData maybeFfiHelper ws <#> convertPlutusList - redeemers = getRedeemers maybeFfiHelper ws <#> convertRedeemers - in - T.TransactionWitnessSet - { vkeys - , nativeScripts - , bootstraps - , plutusScripts - , plutusData - , redeemers - } - -convertVkeyWitnesses :: Vkeywitnesses -> Array T.Vkeywitness -convertVkeyWitnesses = extractWitnesses >>> map convertVkeyWitness - -convertVkeyWitness :: Vkeywitness -> T.Vkeywitness -convertVkeyWitness witness = - let - vkey = getVkey witness - publicKey = convertVkey vkey - signature = wrap $ getSignature witness - in - T.Vkeywitness $ publicKey /\ signature - -convertVkey :: Vkey -> T.Vkey -convertVkey = T.Vkey <<< wrap <<< vkeyPublicKey - -convertNativeScripts :: NativeScripts -> Array T.NativeScript -convertNativeScripts nativeScripts = - extractNativeScripts nativeScripts <#> convertNativeScript - -convertBootstraps :: BootstrapWitnesses -> Array T.BootstrapWitness -convertBootstraps = extractBootstraps >>> map \bootstrap -> - { vkey: convertVkey $ getBootstrapVkey bootstrap - , signature: wrap $ getBootstrapSignature bootstrap - , chainCode: getBootstrapChainCode bootstrap - , attributes: getBootstrapAttributes bootstrap - } - -convertPlutusScripts :: PlutusScripts -> Array S.PlutusScript -convertPlutusScripts plutusScripts = - extractPlutusScripts plutusScripts <#> convertPlutusScript - -convertPlutusScript :: PlutusScript -> S.PlutusScript -convertPlutusScript plutusScript = do - let - language = convertLanguage $ plutusScriptVersion plutusScript - curry S.PlutusScript (plutusScriptBytes plutusScript) language - -convertPlutusList :: PlutusList -> Array T.PlutusData -convertPlutusList = extractPlutusData >>> map convertPlutusData - -convertRedeemers :: Redeemers -> Array T.Redeemer -convertRedeemers = extractRedeemers >>> map convertRedeemer - -convertRedeemer :: Redeemer -> T.Redeemer -convertRedeemer redeemer = - let - tag = convertRedeemerTag $ getRedeemerTag redeemer - index = BigNum.toBigInt $ getRedeemerIndex redeemer - exUnits = convertExUnits $ getExUnits redeemer - data_ = convertPlutusData $ getRedeemerPlutusData redeemer - in - T.Redeemer - { tag - , index - , data: data_ - , exUnits - } - -convertRedeemerTag :: RedeemerTag -> Tag.RedeemerTag -convertRedeemerTag tag = case getRedeemerTagKind tag of - 0 -> Tag.Spend - 1 -> Tag.Mint - 2 -> Tag.Cert - 3 -> Tag.Reward - _ -> unsafePerformEffect $ throw "convertRedeemerTag: impossible happened" - -convertExUnits :: ExUnits -> T.ExUnits -convertExUnits eu = - let - mem = BigNum.toBigInt $ getExUnitsMem eu - steps = BigNum.toBigInt $ getExUnitsSteps eu - in - { mem, steps } - -foreign import getVkeywitnesses - :: MaybeFfiHelper -> TransactionWitnessSet -> Maybe Vkeywitnesses - -foreign import extractWitnesses :: Vkeywitnesses -> Array Vkeywitness -foreign import getVkey :: Vkeywitness -> Vkey -foreign import getSignature :: Vkeywitness -> Ed25519Signature -foreign import vkeyPublicKey :: Vkey -> PublicKey -foreign import publicKeyToBech32 :: PublicKey -> String -foreign import signatureToBech32 :: Ed25519Signature -> String -foreign import getNativeScripts - :: MaybeFfiHelper -> TransactionWitnessSet -> Maybe NativeScripts - -foreign import extractNativeScripts :: NativeScripts -> Array NativeScript -foreign import nativeScriptAs - :: MaybeFfiHelper - -> String - -> T.NativeScript - -> NativeScript - -> Maybe T.NativeScript - -foreign import getBootstraps - :: MaybeFfiHelper -> TransactionWitnessSet -> Maybe BootstrapWitnesses - -foreign import extractBootstraps :: BootstrapWitnesses -> Array BootstrapWitness -foreign import getBootstrapVkey :: BootstrapWitness -> Vkey -foreign import getBootstrapSignature :: BootstrapWitness -> Ed25519Signature -foreign import getBootstrapChainCode :: BootstrapWitness -> ByteArray -foreign import getBootstrapAttributes :: BootstrapWitness -> ByteArray -foreign import getPlutusScripts - :: MaybeFfiHelper -> TransactionWitnessSet -> Maybe PlutusScripts - -foreign import extractPlutusScripts :: PlutusScripts -> Array PlutusScript -foreign import plutusScriptBytes :: PlutusScript -> ByteArray -foreign import plutusScriptVersion :: PlutusScript -> Language -foreign import getWitnessSetPlutusData - :: MaybeFfiHelper -> TransactionWitnessSet -> Maybe PlutusList - -foreign import extractPlutusData :: PlutusList -> Array PlutusData -foreign import getRedeemers - :: MaybeFfiHelper -> TransactionWitnessSet -> Maybe Redeemers - -foreign import extractRedeemers :: Redeemers -> Array Redeemer -foreign import getRedeemerTag :: Redeemer -> RedeemerTag -foreign import getRedeemerTagKind :: RedeemerTag -> Int -foreign import getRedeemerIndex :: Redeemer -> BigNum -foreign import getRedeemerPlutusData :: Redeemer -> PlutusData -foreign import getExUnits :: Redeemer -> ExUnits -foreign import getExUnitsMem :: ExUnits -> BigNum -foreign import getExUnitsSteps :: ExUnits -> BigNum diff --git a/src/Internal/FromData.purs b/src/Internal/FromData.purs deleted file mode 100644 index 4351476c8..000000000 --- a/src/Internal/FromData.purs +++ /dev/null @@ -1,375 +0,0 @@ -module Ctl.Internal.FromData - ( FromDataError - ( ArgsWantedButGot - , FromDataFailed - , BigNumToIntFailed - , IndexWantedButGot - , WantedConstrGot - ) - , class FromData - , class FromDataArgs - , class FromDataArgsRL - , class FromDataWithSchema - , fromData - , fromDataArgs - , fromDataArgsRec - , fromDataWithSchema - , genericFromData - ) where - -import Prelude - -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.PlutusData (PlutusData(Bytes, Constr, List, Integer)) -import Contract.Crypto.Secp256k1 (Secp256k1PrivateKey) -import Contract.Crypto.Secp256k1.ECDSA (ECDSAPublicKey) -import Control.Alternative ((<|>)) -import Ctl.Internal.Helpers (bigIntToUInt) -import Ctl.Internal.Plutus.Types.DataSchema - ( class HasPlutusSchema - , class ValidPlutusSchema - ) -import Ctl.Internal.TypeLevel.Nat (class KnownNat, natVal) -import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed - ( class GetIndexWithLabel - , class GetWithLabel - ) -import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.RawBytes (RawBytes) -import Data.Array (uncons) -import Data.Array as Array -import Data.ArrayBuffer.Types (Uint8Array) -import Data.ByteArray (ByteArray) -import Data.Either (Either(Left, Right), hush, note) -import Data.Generic.Rep as G -import Data.List (List) -import Data.Maybe (Maybe(Nothing, Just), maybe) -import Data.Newtype (unwrap, wrap) -import Data.NonEmpty (NonEmpty(NonEmpty)) -import Data.Ratio (Ratio, reduce) -import Data.Show.Generic (genericShow) -import Data.Symbol (class IsSymbol, reflectSymbol) -import Data.TextDecoder (decodeUtf8) -import Data.Traversable (traverse) -import Data.Tuple (Tuple(Tuple)) -import Data.UInt (UInt) -import Data.Unfoldable (class Unfoldable) -import JS.BigInt (BigInt) -import Noble.Secp256k1.ECDSA - ( ECDSASignature - , MessageHash - , mkECDSAPublicKey - , mkMessageHash - , mkPrivateKey - ) -import Noble.Secp256k1.Schnorr - ( SchnorrPublicKey - , SchnorrSignature - , mkSchnorrPublicKey - ) -import Prim.Row as Row -import Prim.RowList as RL -import Prim.TypeError (class Fail, Text) -import Record as Record -import Type.Proxy (Proxy(Proxy)) - --- | Errors -data FromDataError - = ArgsWantedButGot String Int (Array PlutusData) - | FromDataFailed String PlutusData - | BigNumToIntFailed String BigNum - | IndexWantedButGot String Int Int - | WantedConstrGot String PlutusData - -derive instance G.Generic FromDataError _ - -instance Show FromDataError where - show = genericShow - -noteB :: forall (a :: Type). a -> Boolean -> Either a Unit -noteB _ true = pure unit -noteB n false = Left n - --- | Classes - -class FromData :: Type -> Constraint -class FromData a where - fromData :: PlutusData -> Maybe a - --- | Replacement for 'FromDataWithIndex'. This converts a type into its Plutus Data representation with the help of a Plutus Data Schema (see TypeLevel.DataSchema) --- | We cannot require that the first type argument 't' is an instance of 'HasPlutusSchema' but in practice instances of this class must have a 't' with a --- | 'HasPlutusSchema' instance as well. -class FromDataWithSchema :: Type -> Type -> Constraint -class FromDataWithSchema t a where - fromDataWithSchema - :: Proxy t -> Proxy a -> PlutusData -> Either FromDataError a - --- NOTE: Using the 'parser' approach as in https://github.com/purescript-contrib/purescript-argonaut-generic/blob/3ae9622814fd3f3f06fa8e5e58fd58d2ef256b91/src/Data/Argonaut/Decode/Generic.purs -class FromDataArgs :: Type -> Symbol -> Type -> Constraint -class FromDataArgs t c a where - fromDataArgs - :: IsSymbol c - => Proxy t - -> Proxy c - -> Array PlutusData - -> Either FromDataError { head :: a, tail :: Array PlutusData } - --- | A helper typeclass to implement `FromDataArgs` for records. --- | Adapted from https://github.com/purescript/purescript-quickcheck/blob/v7.1.0/src/Test/QuickCheck/Arbitrary.purs#L247 --- | --- | The second argument is a symbol which represents the name of a record constructor. --- | --- | The third argument to the class is a RowList. - -class FromDataArgsRL - :: Type -> Symbol -> RL.RowList Type -> Row Type -> Constraint -class FromDataArgsRL t constr list row | t constr list -> row where - fromDataArgsRec - :: forall (rlproxy :: RL.RowList Type -> Type) - . IsSymbol constr - => Proxy t - -> Proxy constr - -> rlproxy list - -> Array PlutusData - -> Either FromDataError { head :: Record row, tail :: Array PlutusData } - --- | FromDataWithSchema instances for Data.Generic.Rep --- | See https://purescript-simple-json.readthedocs.io/en/latest/generics-rep.html - -instance - ( FromDataWithSchema t l - , FromDataWithSchema t r - ) => - FromDataWithSchema t (G.Sum l r) where - fromDataWithSchema _ _ pd = - G.Inl <$> fromDataWithSchema (Proxy :: Proxy t) (Proxy :: Proxy l) pd - <|> G.Inr <$> fromDataWithSchema (Proxy :: Proxy t) (Proxy :: Proxy r) pd - -else instance - ( IsSymbol constr - , HasPlutusSchema t schema - , ValidPlutusSchema schema rList - , GetIndexWithLabel constr rList ix - , FromDataArgs t constr args - , KnownNat ix - ) => - FromDataWithSchema t (G.Constructor constr args) where - fromDataWithSchema _ _ (Constr i pdArgs) = do - let constrName = reflectSymbol (Proxy :: Proxy constr) - gotIx <- note (BigNumToIntFailed constrName i) (BigNum.toInt i) - wantedIx <- pure $ natVal (Proxy :: Proxy ix) - noteB (IndexWantedButGot constrName wantedIx gotIx) (wantedIx == gotIx) - { head: repArgs, tail: pdArgs' } <- fromDataArgs (Proxy :: Proxy t) - (Proxy :: Proxy constr) - pdArgs - noteB (ArgsWantedButGot constrName 0 pdArgs') (pdArgs' == []) - pure $ G.Constructor repArgs - fromDataWithSchema _ _ pd = Left $ WantedConstrGot - (reflectSymbol (Proxy :: Proxy constr)) - pd -else instance - ( FromDataWithSchema t a - ) => - FromDataWithSchema t (G.Argument a) where - fromDataWithSchema _ _ pd = G.Argument <$> fromDataWithSchema - (Proxy :: Proxy t) - (Proxy :: Proxy a) - pd - --- | FromDataArgs instance for Data.Generic.Rep -instance FromDataArgs t c (G.NoArguments) where - fromDataArgs _ _ [] = Right { head: G.NoArguments, tail: [] } - fromDataArgs _ c pdArgs = Left $ ArgsWantedButGot (reflectSymbol c) 0 pdArgs - -instance - ( FromDataArgsRL t constr rList row - , HasPlutusSchema t schema - , ValidPlutusSchema schema rrList - , GetWithLabel constr rrList rList - ) => - FromDataArgs t constr (G.Argument (Record row)) where - fromDataArgs _ _ pdArgs = do - { head, tail } <- fromDataArgsRec (Proxy :: Proxy t) (Proxy :: Proxy constr) - (Proxy :: Proxy rList) - pdArgs - pure { head: G.Argument head, tail } -else instance (FromData a) => FromDataArgs t constr (G.Argument a) where - fromDataArgs _ _ pdArgs = do - let constrName = reflectSymbol (Proxy :: Proxy constr) - { head: pd, tail: pds } <- note (ArgsWantedButGot constrName 1 pdArgs) $ - uncons pdArgs - repArg <- note (FromDataFailed constrName pd) $ fromData pd - pure { head: G.Argument repArg, tail: pds } - -instance - ( FromDataArgs t c a - , FromDataArgs t c b - ) => - FromDataArgs t c (G.Product a b) where - fromDataArgs _ _ pdArgs = do - { head: repFst, tail: pdArgs' } <- fromDataArgs (Proxy :: Proxy t) - (Proxy :: Proxy c) - pdArgs - { head: repSnd, tail: pdArgs'' } <- fromDataArgs (Proxy :: Proxy t) - (Proxy :: Proxy c) - pdArgs' - pure { head: G.Product repFst repSnd, tail: pdArgs'' } - --- | FromDataArgsRL instances - -instance FromDataArgsRL t constr RL.Nil () where - fromDataArgsRec _ _ _ [] = Right { head: {}, tail: [] } - fromDataArgsRec _ c _ pdArgs = Left $ ArgsWantedButGot (reflectSymbol c) 0 - pdArgs - -instance - ( FromData a - , FromDataArgsRL t constr rListRest rowRest - , Row.Lacks key rowRest - , Row.Cons key a rowRest rowFull - , IsSymbol key - ) => - FromDataArgsRL t constr (RL.Cons key a rListRest) rowFull where - fromDataArgsRec _ c _ pdArgs = do - let keyProxy = Proxy :: Proxy key - { head: pdArg, tail: pdArgs' } <- - note (ArgsWantedButGot (reflectSymbol c) 1 pdArgs) $ uncons - pdArgs - field <- note (FromDataFailed (reflectSymbol c) pdArg) $ fromData pdArg - { head: rec, tail: pdArgs'' } <- fromDataArgsRec (Proxy :: Proxy t) - (Proxy :: Proxy constr) - (Proxy :: Proxy rListRest) - pdArgs' - pure $ - { head: (Record.insert keyProxy field rec) - , tail: pdArgs'' - } - --- TODO: Unhush the errors in FromData -genericFromData - :: forall (t :: Type) (rep :: Type) - . G.Generic t rep - => FromDataWithSchema t rep - => PlutusData - -> Maybe t -genericFromData pd = G.to <$> hush - (fromDataWithSchema (Proxy :: Proxy t) (Proxy :: Proxy rep) pd) - --- | Base FromData instances - -instance FromData Void where - fromData _ = Nothing - -instance FromData Unit where - fromData (Constr n []) - | n == BigNum.zero = Just unit - fromData _ = Nothing - --- NOTE: For the sake of compatibility the following fromDatas have to match --- https://github.com/input-output-hk/plutus/blob/1f31e640e8a258185db01fa899da63f9018c0e85/plutus-tx/src/PlutusTx/IsData/Instances.hs -instance FromData Boolean where - fromData (Constr n []) - | n == BigNum.zero = Just false - | n == BigNum.one = Just true - fromData _ = Nothing - -instance FromData a => FromData (Maybe a) where - fromData (Constr n [ pd ]) - | n == BigNum.zero = maybe Nothing (Just <<< Just) (fromData pd) -- Just is zero-indexed by Plutus - fromData (Constr n []) - | n == BigNum.one = Just Nothing - fromData _ = Nothing - -instance (FromData a, FromData b) => FromData (Either a b) where - fromData (Constr n [ pd ]) - | n == BigNum.zero = maybe Nothing (Just <<< Left) (fromData pd) - | n == BigNum.one = maybe Nothing (Just <<< Right) (fromData pd) - fromData _ = Nothing - -instance Fail (Text "Int is not supported, use BigInt instead") => FromData Int where - fromData _ = Nothing - -instance FromData BigInt where - fromData (Integer n) = Just n - fromData _ = Nothing - -instance FromData BigNum where - fromData (Integer n) = BigNum.fromBigInt n - fromData _ = Nothing - -instance FromData UInt where - fromData (Integer n) = bigIntToUInt n - fromData _ = Nothing - -instance FromData a => FromData (Array a) where - fromData = fromDataUnfoldable - -instance FromData a => FromData (NonEmpty Array a) where - fromData d = do - { head, tail } <- Array.uncons =<< fromData d - pure $ NonEmpty head tail - -instance FromData a => FromData (List a) where - fromData = fromDataUnfoldable - -instance (FromData a, FromData b) => FromData (Tuple a b) where - fromData (Constr n [ a, b ]) - | n == BigNum.zero = Tuple <$> fromData a <*> fromData b - fromData _ = Nothing - -instance FromData ByteArray where - fromData (Bytes res) = Just res - fromData _ = Nothing - -instance FromData CborBytes where - fromData = map wrap <<< fromData - -instance FromData RawBytes where - fromData = map wrap <<< fromData - -instance FromData String where - fromData (Bytes bytes) = hush $ decodeUtf8 $ unwrap bytes - fromData _ = Nothing - --- Nothing prevents fromData b ~ Maybe BigInt from being zero here, perhaps --- we want more safety: -instance (Ord a, EuclideanRing a, FromData a) => FromData (Ratio a) where - fromData (List [ a, b ]) = reduce <$> fromData a <*> fromData b - fromData _ = Nothing - -instance FromData PlutusData where - fromData = Just - -instance FromData Uint8Array where - fromData x = (fromData x :: Maybe ByteArray) <#> unwrap - --- Instances for purescript-noble-secp256k1 types - -instance FromData Secp256k1PrivateKey where - fromData = map wrap <<< mkPrivateKey <=< fromData - -instance FromData MessageHash where - fromData = mkMessageHash <=< fromData - -instance FromData ECDSAPublicKey where - fromData = mkECDSAPublicKey <=< fromData - -instance FromData ECDSASignature where - fromData = map wrap <<< fromData - -instance FromData SchnorrPublicKey where - fromData = mkSchnorrPublicKey <=< fromData - -instance FromData SchnorrSignature where - fromData = map wrap <<< fromData - -fromDataUnfoldable - :: forall (a :: Type) (t :: Type -> Type) - . Unfoldable t - => FromData a - => PlutusData - -> Maybe (t a) -fromDataUnfoldable (List entries) = Array.toUnfoldable <$> traverse fromData - entries -fromDataUnfoldable _ = Nothing diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index 7f3b9290c..c57d3f974 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -1,34 +1,89 @@ module Ctl.Internal.Lens - ( _witnessSet - , _redeemers - , _vkeys + ( _auxiliaryData + , _auxiliaryDataHash , _body + , _certs , _collateral , _collateralReturn + , _fee + , _inputs + , _isValid + , _mint + , _networkId + , _outputs + , _plutusData + , _redeemers + , _referenceInputs + , _requiredSigners + , _scriptDataHash , _totalCollateral + , _vkeys + , _withdrawals + , _witnessSet ) where import Prelude import Cardano.Types - ( Coin(..) + ( AuxiliaryData + , AuxiliaryDataHash + , Certificate + , Coin + , Ed25519KeyHash + , Mint + , NetworkId + , PlutusData , Redeemer + , ScriptDataHash , Transaction , TransactionBody - , TransactionInput(..) - , TransactionOutput(..) + , TransactionInput + , TransactionOutput , TransactionWitnessSet , Vkeywitness ) +import Cardano.Types.RewardAddress (RewardAddress) import Data.Lens (Lens') import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) +import Data.Map (Map) import Data.Maybe (Maybe) -import Type.Proxy (Proxy(..)) +import Type.Proxy (Proxy(Proxy)) + +-- Transaction _body :: Lens' Transaction TransactionBody _body = _Newtype <<< prop (Proxy :: Proxy "body") +_isValid :: Lens' Transaction Boolean +_isValid = _Newtype <<< prop (Proxy :: Proxy "isValid") + +_witnessSet :: Lens' Transaction TransactionWitnessSet +_witnessSet = _Newtype <<< prop (Proxy :: Proxy "witnessSet") + +_auxiliaryData :: Lens' Transaction AuxiliaryData +_auxiliaryData = _Newtype <<< prop (Proxy :: Proxy "auxiliaryData") + +-- TransactionBody + +_inputs :: Lens' TransactionBody (Array TransactionInput) +_inputs = _Newtype <<< prop (Proxy :: Proxy "inputs") + +_fee :: Lens' TransactionBody Coin +_fee = _Newtype <<< prop (Proxy :: Proxy "fee") + +_outputs :: Lens' TransactionBody (Array TransactionOutput) +_outputs = _Newtype <<< prop (Proxy :: Proxy "outputs") + +_certs :: Lens' TransactionBody (Array Certificate) +_certs = _Newtype <<< prop (Proxy :: Proxy "certs") + +_networkId :: Lens' TransactionBody (Maybe NetworkId) +_networkId = _Newtype <<< prop (Proxy :: Proxy "networkId") + +_scriptDataHash :: Lens' TransactionBody (Maybe ScriptDataHash) +_scriptDataHash = _Newtype <<< prop (Proxy :: Proxy "scriptDataHash") + _collateral :: Lens' TransactionBody (Array TransactionInput) _collateral = _Newtype <<< prop (Proxy :: Proxy "collateral") @@ -38,11 +93,28 @@ _collateralReturn = _Newtype <<< prop (Proxy :: Proxy "collateralReturn") _totalCollateral :: Lens' TransactionBody (Maybe Coin) _totalCollateral = _Newtype <<< prop (Proxy :: Proxy "totalCollateral") -_witnessSet :: Lens' Transaction TransactionWitnessSet -_witnessSet = _Newtype <<< prop (Proxy :: Proxy "witnessSet") +_referenceInputs :: Lens' TransactionBody (Array TransactionInput) +_referenceInputs = _Newtype <<< prop (Proxy :: Proxy "referenceInputs") + +_requiredSigners :: Lens' TransactionBody (Array Ed25519KeyHash) +_requiredSigners = _Newtype <<< prop (Proxy :: Proxy "requiredSigners") + +_withdrawals :: Lens' TransactionBody (Map RewardAddress Coin) +_withdrawals = _Newtype <<< prop (Proxy :: Proxy "withdrawals") + +_mint :: Lens' TransactionBody (Maybe Mint) +_mint = _Newtype <<< prop (Proxy :: Proxy "mint") + +_auxiliaryDataHash :: Lens' TransactionBody (Maybe AuxiliaryDataHash) +_auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") + +-- TransactionWitnessSet _redeemers :: Lens' TransactionWitnessSet (Array Redeemer) _redeemers = _Newtype <<< prop (Proxy :: Proxy "redeemers") +_plutusData :: Lens' TransactionWitnessSet (Array PlutusData) +_plutusData = _Newtype <<< prop (Proxy :: Proxy "plutusData") + _vkeys :: Lens' TransactionWitnessSet (Array Vkeywitness) _vkeys = _Newtype <<< prop (Proxy :: Proxy "vkeys") diff --git a/src/Internal/Metadata/Cip25/Cip25String.purs b/src/Internal/Metadata/Cip25/Cip25String.purs deleted file mode 100644 index 3b702cd78..000000000 --- a/src/Internal/Metadata/Cip25/Cip25String.purs +++ /dev/null @@ -1,141 +0,0 @@ --- | This module includes a string type that is used in CIP-25 standard. -module Ctl.Internal.Metadata.Cip25.Cip25String - ( Cip25String - , mkCip25String - , unCip25String - , fromMetadataString - , toMetadataString - , toCip25Strings - , fromCip25Strings - , fromDataString - , toDataString - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , decodeAeson - ) -import Cardano.Types.PlutusData (PlutusData) -import Control.Alt ((<|>)) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata, fromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum) -import Data.Array ((:)) -import Data.Array as Array -import Data.ByteArray (byteLength) -import Data.Either (note) -import Data.Foldable (foldMap) -import Data.Maybe (Maybe(Nothing, Just), isJust) -import Data.Newtype (wrap) -import Data.String.CodePoints as String -import Data.TextEncoder (encodeUtf8) -import Data.Tuple.Nested (type (/\), (/\)) - --- | A string type that is used in CIP-25 standard. --- | String length in bytes (in UTF-8) is limited by 64, because PlutusData --- | bytes have this length limit. -newtype Cip25String = Cip25String String - -derive newtype instance Eq Cip25String -derive newtype instance Ord Cip25String -derive newtype instance ToMetadata Cip25String -derive newtype instance FromMetadata Cip25String -derive newtype instance ToData Cip25String -derive newtype instance FromData Cip25String -derive newtype instance EncodeAeson Cip25String - -instance Show Cip25String where - show (Cip25String str) = "(unsafePartial (fromJust (mkCip25String " - <> show str - <> ")))" - -instance DecodeAeson Cip25String where - decodeAeson = decodeAeson >=> mkCip25String >>> note - (TypeMismatch "Cip25String") - -unCip25String :: Cip25String -> String -unCip25String (Cip25String str) = str - --- | A smart constructor for `Cip25String` -mkCip25String :: String -> Maybe Cip25String -mkCip25String str - | byteLength (wrap (encodeUtf8 str)) <= 64 = Just $ Cip25String str - | otherwise = Nothing - -takeCip25String :: String -> Maybe { init :: Cip25String, rest :: Maybe String } -takeCip25String str = - -- > https://www.rfc-editor.org/rfc/rfc3629 - -- - -- In UTF-8, characters from the U+0000..U+10FFFF range (the UTF-16 - -- accessible range) are encoded using sequences of 1 to 4 octets - -- - -- Hence we start at 64/4 = 16 (worst case, all code points take 4 bytes), - -- with a step equal to (64 - 16) / 2 = 24. - case - forwardSearch - { minBound: 16 - , maxBound: 64 - , step: 24 - , takeN: \ix -> mkCip25String (String.take ix str) - } - of - Nothing /\ _ -> Nothing - Just cip25String /\ ix -> Just - { init: cip25String - , rest: - let - rest = String.drop ix str - in - if rest == "" then Nothing else Just rest - } - -forwardSearch - :: forall (a :: Type) - . { step :: Int, minBound :: Int, maxBound :: Int, takeN :: Int -> Maybe a } - -> Maybe a /\ Int -forwardSearch { minBound, maxBound, takeN, step } - | isJust (takeN $ minBound + step) = - if minBound + step <= maxBound then forwardSearch - { minBound: minBound + step, maxBound, takeN, step } - else takeN maxBound /\ maxBound - | otherwise = - if step == 1 then - takeN minBound /\ minBound - else - forwardSearch - { minBound: minBound, maxBound, takeN, step: step `div` 2 } - -toCip25Strings :: String -> Array Cip25String -toCip25Strings str = case takeCip25String str of - Nothing -> [] - Just { init: cip25String, rest } -> - case rest of - Just restString -> cip25String : toCip25Strings restString - Nothing -> [ cip25String ] - -fromCip25Strings :: Array Cip25String -> String -fromCip25Strings = foldMap unCip25String - -toDataString :: String -> PlutusData -toDataString str = case toCip25Strings str of - [ singleStr ] -> toData singleStr - strings -> toData $ toData <$> strings - -fromDataString :: PlutusData -> Maybe String -fromDataString datum = fromCip25Strings <$> - ((Array.singleton <$> fromData datum) <|> fromData datum) - -toMetadataString :: String -> TransactionMetadatum -toMetadataString str = case toCip25Strings str of - [ singleStr ] -> toMetadata singleStr - strings -> toMetadata $ toMetadata <$> strings - -fromMetadataString :: TransactionMetadatum -> Maybe String -fromMetadataString datum = fromCip25Strings <$> - ((Array.singleton <$> fromMetadata datum) <|> fromMetadata datum) diff --git a/src/Internal/Metadata/Cip25/Common.purs b/src/Internal/Metadata/Cip25/Common.purs deleted file mode 100644 index 5f701362f..000000000 --- a/src/Internal/Metadata/Cip25/Common.purs +++ /dev/null @@ -1,137 +0,0 @@ --- | This module contains definitions common for CIP-25 V1 and V2 standards --- | (and probably future versions). --- | https://cips.cardano.org/cips/cip25/ -module Ctl.Internal.Metadata.Cip25.Common - ( nftMetadataLabel - , Cip25AssetName(Cip25AssetName) - , Cip25MetadataFile(Cip25MetadataFile) - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , decodeAeson - , encodeAeson - , (.:) - ) -import Cardano.Types.AssetName (AssetName, mkAssetName, unAssetName) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Metadata.Cip25.Cip25String - ( Cip25String - , fromDataString - , fromMetadataString - , toDataString - , toMetadataString - ) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata, fromMetadata) -import Ctl.Internal.Metadata.Helpers - ( errExpectedObject - , lookupKey - , lookupMetadata - ) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) -import Ctl.Internal.Plutus.Types.AssocMap as AssocMap -import Ctl.Internal.ToData (class ToData, toData) -import Data.Either (note) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) -import Data.Tuple.Nested ((/\)) -import JS.BigInt (BigInt) -import JS.BigInt as BigInt - -nftMetadataLabel :: BigInt -nftMetadataLabel = BigInt.fromInt 721 - --- | A newtype over `AssetName` that uses correct Json encoding (without `0x` prefix) -newtype Cip25AssetName = Cip25AssetName AssetName - -derive newtype instance Eq Cip25AssetName -derive newtype instance Ord Cip25AssetName -derive newtype instance ToData Cip25AssetName -derive newtype instance FromData Cip25AssetName -derive newtype instance ToMetadata Cip25AssetName -derive newtype instance FromMetadata Cip25AssetName -derive instance Newtype Cip25AssetName _ - -instance Show Cip25AssetName where - show (Cip25AssetName tn) = "(Cip25AssetName " <> show tn <> ")" - -instance DecodeAeson Cip25AssetName where - decodeAeson = (note (TypeMismatch "AssetName") <<< map wrap <<< mkAssetName) - <=< decodeAeson - -instance EncodeAeson Cip25AssetName where - encodeAeson = encodeAeson <<< unAssetName <<< unwrap - --- | `files_details` in CDDL --- | --- | Same for V1 and V2. --- | --- | ``` --- | files_details = --- | { --- | name : string, --- | mediaType : string, --- | src : string / [* string] --- | } --- | ``` -newtype Cip25MetadataFile = Cip25MetadataFile - { name :: Cip25String - , mediaType :: Cip25String - , src :: String - } - -derive instance Generic Cip25MetadataFile _ -derive instance Newtype Cip25MetadataFile _ -derive instance Eq Cip25MetadataFile - -instance Show Cip25MetadataFile where - show = genericShow - -instance ToMetadata Cip25MetadataFile where - toMetadata (Cip25MetadataFile file) = toMetadata - [ "name" /\ toMetadata file.name - , "mediaType" /\ toMetadata file.mediaType - , "src" /\ toMetadataString file.src - ] - -instance FromMetadata Cip25MetadataFile where - fromMetadata contents = do - name <- lookupMetadata "name" contents >>= fromMetadata - mediaType <- lookupMetadata "mediaType" contents >>= fromMetadata - src <- lookupMetadata "src" contents >>= fromMetadataString - pure $ wrap { name, mediaType, src } - -instance ToData Cip25MetadataFile where - toData (Cip25MetadataFile file) = toData $ AssocMap.Map $ - [ "name" /\ toData file.name - , "mediaType" /\ toData file.mediaType - , "src" /\ toDataString file.src - ] - -instance FromData Cip25MetadataFile where - fromData contents = do - name <- lookupKey "name" contents >>= fromData - mediaType <- lookupKey "mediaType" contents >>= fromData - src <- lookupKey "src" contents >>= fromDataString - pure $ wrap { name, mediaType, src } - -instance DecodeAeson Cip25MetadataFile where - decodeAeson = - caseAesonObject errExpectedObject \obj -> do - name <- obj .: "name" - mediaType <- obj .: "mediaType" - src <- obj .: "src" - pure $ wrap { name, mediaType, src } - -instance EncodeAeson Cip25MetadataFile where - encodeAeson (Cip25MetadataFile { name, mediaType, src }) = encodeAeson - { name - , mediaType - , src - } diff --git a/src/Internal/Metadata/Cip25/V2.purs b/src/Internal/Metadata/Cip25/V2.purs deleted file mode 100644 index 0bafaf302..000000000 --- a/src/Internal/Metadata/Cip25/V2.purs +++ /dev/null @@ -1,382 +0,0 @@ --- Implementation of CIP 25 - NFT Metadata Standard V2. --- https://cips.cardano.org/cips/cip25/ --- https://cips.cardano.org/cips/cip25/cddl/version_2.cddl --- --- Differences from the spec: --- - We do not split strings in pieces when encoding to JSON --- - We require a "version": 2 tag. --- - `policy_id` is 28 bytes --- - `asset_name` is up to 32 bytes. --- --- Motivation: https://github.com/cardano-foundation/CIPs/issues/303 -module Ctl.Internal.Metadata.Cip25.V2 - ( Cip25Metadata(Cip25Metadata) - , Cip25MetadataEntry(Cip25MetadataEntry) - , module Ctl.Internal.Metadata.Cip25.Common - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , Aeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , decodeAeson - , (.:) - , (.:?) - ) -import Aeson as Aeson -import Cardano.AsCbor (decodeCbor, encodeCbor) -import Cardano.Types.AssetName (mkAssetName, unAssetName) -import Cardano.Types.PlutusData (PlutusData(Map, Integer)) -import Control.Alt ((<|>)) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Metadata.Cip25.Cip25String - ( Cip25String - , fromDataString - , fromMetadataString - , toDataString - , toMetadataString - ) -import Ctl.Internal.Metadata.Cip25.Common - ( Cip25AssetName(Cip25AssetName) - , Cip25MetadataFile(Cip25MetadataFile) - , nftMetadataLabel - ) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata, fromMetadata) -import Ctl.Internal.Metadata.Helpers - ( errExpectedObject - , lookupKey - , lookupMetadata - ) -import Ctl.Internal.Metadata.MetadataType (class MetadataType) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) -import Ctl.Internal.Plutus.Types.AssocMap (Map(Map), singleton) as AssocMap -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.Int as Int -import Ctl.Internal.Types.Scripts (MintingPolicyHash) -import Ctl.Internal.Types.TransactionMetadata - ( TransactionMetadatum(Int, MetadataMap) - ) -import Data.Array (catMaybes, concat, groupBy) -import Data.Array.NonEmpty (NonEmptyArray, toArray) -import Data.Array.NonEmpty (head) as NonEmpty -import Data.ByteArray (byteArrayToHex, hexToByteArray) -import Data.Either (Either(Left), note) -import Data.Function (on) -import Data.Generic.Rep (class Generic) -import Data.Map (toUnfoldable) as Map -import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) -import Data.TextEncoder (encodeUtf8) -import Data.Traversable (fold, for, sequence, traverse) -import Data.Tuple (Tuple) -import Data.Tuple.Nested ((/\)) -import Foreign.Object (Object, toUnfoldable) as FO -import JS.BigInt (fromInt, toString) as BigInt -import Partial.Unsafe (unsafePartial) - --- | ``` --- | metadata_details = --- | { --- | name : string, --- | image : string / [* string], --- | ? mediaType : string, --- | ? description : string / [* string], --- | ? files : [* files_details] --- | } --- | ``` -newtype Cip25MetadataEntry = Cip25MetadataEntry - { policyId :: MintingPolicyHash - , assetName :: Cip25AssetName - -- metadata_details: - , name :: Cip25String - , image :: String - , mediaType :: Maybe Cip25String - , description :: Maybe String - , files :: Array Cip25MetadataFile - } - -derive instance Generic Cip25MetadataEntry _ -derive instance Newtype Cip25MetadataEntry _ -derive instance Eq Cip25MetadataEntry - -instance Show Cip25MetadataEntry where - show = genericShow - --- | A version tag (not exported, internal) -data Cip25V2 = Cip25V2 - -derive instance Eq Cip25V2 -derive instance Ord Cip25V2 -derive instance Generic Cip25V2 _ - -instance Show Cip25V2 where - show = genericShow - -instance FromData Cip25V2 where - fromData (Integer int) - | int == BigInt.fromInt 2 = pure Cip25V2 - fromData _ = Nothing - -instance ToData Cip25V2 where - toData _ = Integer $ BigInt.fromInt 2 - -instance FromMetadata Cip25V2 where - fromMetadata (Int int) - | Int.toBigInt int == BigInt.fromInt 2 = pure Cip25V2 - fromMetadata _ = Nothing - -instance ToMetadata Cip25V2 where - toMetadata _ = Int $ unsafePartial $ fromJust $ Int.fromBigInt $ - BigInt.fromInt 2 - -instance DecodeAeson Cip25V2 where - decodeAeson aeson = do - n :: Int <- decodeAeson aeson - case n of - 2 -> pure Cip25V2 - _ -> Left $ TypeMismatch "Cip25V2" - --- Note: this is not an instance of `ToMetadata` to prevent confusion --- between `Cip25Metadata` and `Cip25MetadataEntry` (the users do not --- need to deal with data-representations of a single entry, because --- the standard only specifies the encoding for Cip25Metadata). -metadataEntryToMetadata :: Cip25MetadataEntry -> TransactionMetadatum -metadataEntryToMetadata (Cip25MetadataEntry entry) = toMetadata $ - [ "name" /\ toMetadata entry.name - , "image" /\ toMetadataString entry.image - ] - <> mbMediaType - <> mbDescription - <> mbFiles - where - mbFiles = case entry.files of - [] -> [] - files -> [ "files" /\ toMetadata files ] - mbMediaType = fold $ entry.mediaType <#> \mediaType -> - [ "mediaType" /\ toMetadata mediaType ] - mbDescription = fold $ entry.description <#> \description -> - [ "description" /\ toMetadataString description ] - -metadataEntryFromMetadata - :: MintingPolicyHash - -> Cip25AssetName - -> TransactionMetadatum - -> Maybe Cip25MetadataEntry -metadataEntryFromMetadata policyId assetName contents = do - name <- lookupMetadata "name" contents >>= fromMetadata - image <- lookupMetadata "image" contents >>= fromMetadataString - mediaType <- for (lookupMetadata "mediaType" contents) fromMetadata - description <- for (lookupMetadata "description" contents) fromMetadataString - files <- for (lookupMetadata "files" contents) fromMetadata <#> fromMaybe [] - pure $ - wrap { policyId, assetName, name, image, mediaType, description, files } - -metadataEntryToData :: Cip25MetadataEntry -> PlutusData -metadataEntryToData (Cip25MetadataEntry entry) = toData $ AssocMap.Map $ - [ "name" /\ toData entry.name - , "image" /\ toDataString entry.image - ] - <> mbMediaType - <> mbDescription - <> mbFiles - where - mbFiles = case entry.files of - [] -> [] - files -> [ "files" /\ toData files ] - mbMediaType = fold $ entry.mediaType <#> \mediaType -> - [ "mediaType" /\ toData mediaType ] - mbDescription = fold $ entry.description <#> \description -> - [ "description" /\ toDataString description ] - -metadataEntryFromData - :: MintingPolicyHash - -> Cip25AssetName - -> PlutusData - -> Maybe Cip25MetadataEntry -metadataEntryFromData policyId assetName contents = do - name <- lookupKey "name" contents >>= fromData - image <- lookupKey "image" contents >>= fromDataString - mediaType <- for (lookupKey "mediaType" contents) fromData - description <- for (lookupKey "description" contents) fromDataString - files <- for (lookupKey "files" contents) fromData <#> fromMaybe [] - pure $ - wrap { policyId, assetName, name, image, mediaType, description, files } - -metadataEntryDecodeAeson - :: MintingPolicyHash - -> Cip25AssetName - -> Aeson - -> Either JsonDecodeError Cip25MetadataEntry -metadataEntryDecodeAeson policyId assetName = - caseAesonObject errExpectedObject \obj -> do - name <- obj .: "name" - image <- obj .: "image" - mediaType <- obj .:? "mediaType" - description <- obj .:? "description" <#> fromMaybe mempty - files <- obj .:? "files" >>= \mbFiles -> - fromMaybe [] <$> for mbFiles \files -> - traverse decodeAeson =<< note (TypeMismatch "files") - (Aeson.toArray files) - pure $ - wrap { policyId, assetName, name, image, mediaType, description, files } - --- | Encode the entry's policy id to the string used as the metadata --- | key -encodePolicyIdKey :: Cip25MetadataEntry -> String -encodePolicyIdKey (Cip25MetadataEntry { policyId }) = - byteArrayToHex $ unwrap $ encodeCbor $ unwrap policyId - --- | Decode the CIP25 policy id key -decodePolicyIdKey :: String -> Maybe MintingPolicyHash -decodePolicyIdKey = map wrap <<< decodeCbor <=< map wrap <<< hexToByteArray - --- | Encode the entry's asset name to the string used as the metadata --- | key -encodeAssetNameKey :: Cip25MetadataEntry -> String -encodeAssetNameKey (Cip25MetadataEntry { assetName }) = - byteArrayToHex $ unAssetName $ unwrap assetName - --- | Decode the CIP25 asset name key -decodeAssetNameKey :: String -> Maybe Cip25AssetName -decodeAssetNameKey = map wrap <<< mkAssetName <=< hexToByteArray - -newtype Cip25Metadata = Cip25Metadata (Array Cip25MetadataEntry) - -derive instance Generic Cip25Metadata _ -derive instance Newtype Cip25Metadata _ -derive instance Eq Cip25Metadata - -instance Show Cip25Metadata where - show = genericShow - -instance MetadataType Cip25Metadata where - metadataLabel _ = wrap nftMetadataLabel - -groupEntries - :: Array Cip25MetadataEntry -> Array (NonEmptyArray Cip25MetadataEntry) -groupEntries = groupBy (eq `on` (unwrap >>> _.policyId)) - -instance ToMetadata Cip25Metadata where - toMetadata (Cip25Metadata entries) = toMetadata $ - let - dataEntries = - groupEntries entries <#> - \group -> - ( toMetadata $ encodePolicyIdKey $ NonEmpty.head group - ) /\ - (toMetadata <<< toArray <<< flip map group) \entry -> - (encodeAssetNameKey entry) /\ metadataEntryToMetadata entry - versionEntry = [ toMetadata "version" /\ toMetadata Cip25V2 ] - in - dataEntries <> versionEntry - -instance FromMetadata Cip25Metadata where - fromMetadata (MetadataMap mp1) = do - entries <- map concat - $ map catMaybes - $ for (Map.toUnfoldable mp1) - \(key /\ assets) -> - if key == toMetadata "version" then - -- top-level version tag - ( if assets == toMetadata Cip25V2 then pure Nothing - else Nothing -- fail if version does not match - ) - else - -- key is policyId - Just case assets of - MetadataMap mp2 -> - for (Map.toUnfoldable mp2) \(assetName /\ contents) -> - metadataEntryFromMetadata - <$> (decodePolicyIdKey =<< fromMetadata key) - <*> (decodeAssetNameKey =<< fromMetadata assetName) - <*> pure contents - _ -> Nothing - wrap <$> sequence entries - fromMetadata _ = Nothing - -instance ToData Cip25Metadata where - toData (Cip25Metadata entries) = toData - $ AssocMap.singleton (toData $ BigInt.toString nftMetadataLabel) - $ AssocMap.Map - let - dataEntries = - groupEntries entries <#> - \group -> - toData (encodePolicyIdKey $ NonEmpty.head group) /\ toData - ( (AssocMap.Map <<< toArray <<< flip map group) \entry -> - toData (encodeAssetNameKey entry) /\ metadataEntryToData - entry - ) - versionEntry = [ toData "version" /\ toData Cip25V2 ] - in - dataEntries <> versionEntry - -instance FromData Cip25Metadata where - fromData meta = do - entries <- lookupKey (BigInt.toString nftMetadataLabel) meta >>= case _ of - Map mp1 -> map concat - $ for mp1 - \(policyId /\ assets) -> - let - fromDataAssets = - case assets of - Map mp2 -> - for mp2 \(assetName /\ contents) -> - metadataEntryFromData - <$> (decodePolicyIdKey =<< fromData policyId) - <*> (decodeAssetNameKey =<< fromData assetName) - <*> pure contents - _ -> Nothing - fromDataVersion = - if - policyId == toData "version" - && assets == toData Cip25V2 then - pure [] - else - Nothing - in - fromDataAssets <|> fromDataVersion - _ -> Nothing - wrap <$> sequence entries - -instance DecodeAeson Cip25Metadata where - decodeAeson = - caseAesonObject errExpectedObject \obj -> do - policies <- obj .: BigInt.toString nftMetadataLabel - withJsonObject policies \objPolicies -> - map (wrap <<< concat) - $ for (objToArray objPolicies) - \(policyId /\ assets) -> - withJsonObject assets \objAssets -> - for (objToArray objAssets) \(assetName /\ contents) -> do - policyId_ <- decodePolicyId policyId - assetName_ <- decodeAssetName assetName - metadataEntryDecodeAeson policyId_ assetName_ contents - where - objToArray :: forall (a :: Type). FO.Object a -> Array (Tuple String a) - objToArray = FO.toUnfoldable - - withJsonObject - :: forall (a :: Type) - . Aeson - -> (FO.Object Aeson -> Either JsonDecodeError a) - -> Either JsonDecodeError a - withJsonObject = flip (caseAesonObject errExpectedObject) - - decodePolicyId :: String -> Either JsonDecodeError MintingPolicyHash - decodePolicyId = - note (TypeMismatch "Expected hex-encoded policy id") - <<< map wrap - <<< (decodeCbor <=< map wrap <<< hexToByteArray) - - decodeAssetName :: String -> Either JsonDecodeError Cip25AssetName - decodeAssetName = - note (TypeMismatch "Expected UTF-8 encoded asset name") - <<< map wrap - <<< mkAssetName - <<< wrap - <<< encodeUtf8 diff --git a/src/Internal/Metadata/FromMetadata.purs b/src/Internal/Metadata/FromMetadata.purs deleted file mode 100644 index 247561d97..000000000 --- a/src/Internal/Metadata/FromMetadata.purs +++ /dev/null @@ -1,63 +0,0 @@ -module Ctl.Internal.Metadata.FromMetadata where - -import Prelude - -import Ctl.Internal.Types.Int (Int, toBigInt) as Int -import Ctl.Internal.Types.TransactionMetadata - ( TransactionMetadatum(MetadataList, Int, Bytes, Text) - ) -import Data.Array (toUnfoldable, uncons) as Array -import Data.ByteArray (ByteArray) -import Data.Maybe (Maybe(Just, Nothing)) -import Data.NonEmpty (NonEmpty, (:|)) -import Data.Traversable (traverse) -import Data.Unfoldable (class Unfoldable) -import JS.BigInt (BigInt) - --------------------------------------------------------------------------------- --- FromMetadata --------------------------------------------------------------------------------- - -class FromMetadata (a :: Type) where - fromMetadata :: TransactionMetadatum -> Maybe a - -instance FromMetadata TransactionMetadatum where - fromMetadata = Just - -instance FromMetadata a => FromMetadata (Array a) where - fromMetadata = fromMetadataUnfoldable - -instance FromMetadata a => FromMetadata (NonEmpty Array a) where - fromMetadata md = do - { head, tail } <- Array.uncons =<< fromMetadata md - pure (head :| tail) - -instance FromMetadata Int.Int where - fromMetadata (Int n) = Just n - fromMetadata _ = Nothing - -instance FromMetadata BigInt where - fromMetadata (Int n) = pure $ Int.toBigInt n - fromMetadata _ = Nothing - -instance FromMetadata ByteArray where - fromMetadata (Bytes byteArr) = Just byteArr - fromMetadata _ = Nothing - -instance FromMetadata String where - fromMetadata (Text str) = Just str - fromMetadata _ = Nothing - --------------------------------------------------------------------------------- --- Internal --------------------------------------------------------------------------------- - -fromMetadataUnfoldable - :: forall (a :: Type) (f :: Type -> Type) - . Unfoldable f - => FromMetadata a - => TransactionMetadatum - -> Maybe (f a) -fromMetadataUnfoldable (MetadataList entries) = - Array.toUnfoldable <$> traverse fromMetadata entries -fromMetadataUnfoldable _ = Nothing diff --git a/src/Internal/Metadata/Helpers.purs b/src/Internal/Metadata/Helpers.purs deleted file mode 100644 index 9fbe3a2b6..000000000 --- a/src/Internal/Metadata/Helpers.purs +++ /dev/null @@ -1,38 +0,0 @@ -module Ctl.Internal.Metadata.Helpers - ( mkKey - , unsafeMkKey - , lookupKey - , lookupMetadata - , errExpectedObject - ) where - -import Prelude - -import Aeson (JsonDecodeError(TypeMismatch)) -import Cardano.Types.PlutusData (PlutusData(Map, Bytes)) -import Ctl.Internal.Types.TransactionMetadata - ( TransactionMetadatum(MetadataMap, Text) - ) -import Data.ByteArray (byteArrayFromAscii) -import Data.Either (Either(Left)) -import Data.Foldable (lookup) -import Data.Map (lookup) as Map -import Data.Maybe (Maybe(Nothing), fromJust) - -mkKey :: String -> Maybe PlutusData -mkKey str = Bytes <$> byteArrayFromAscii str - -unsafeMkKey :: Partial => String -> PlutusData -unsafeMkKey = fromJust <<< mkKey - -lookupKey :: String -> PlutusData -> Maybe PlutusData -lookupKey keyStr (Map array) = mkKey keyStr >>= flip lookup array -lookupKey _ _ = Nothing - -lookupMetadata :: String -> TransactionMetadatum -> Maybe TransactionMetadatum -lookupMetadata keyStr (MetadataMap mp) = Map.lookup (Text keyStr) mp -lookupMetadata _ _ = Nothing - -errExpectedObject :: forall (a :: Type). Either JsonDecodeError a -errExpectedObject = - Left (TypeMismatch "Expected object") diff --git a/src/Internal/Metadata/MetadataType.purs b/src/Internal/Metadata/MetadataType.purs index fb742499a..7360977cc 100644 --- a/src/Internal/Metadata/MetadataType.purs +++ b/src/Internal/Metadata/MetadataType.purs @@ -7,26 +7,26 @@ module Ctl.Internal.Metadata.MetadataType import Prelude -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata, fromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) -import Ctl.Internal.Types.TransactionMetadata - ( GeneralTransactionMetadata - , TransactionMetadatumLabel - ) +import Cardano.FromMetadata (class FromMetadata, fromMetadata) +import Cardano.ToMetadata (class ToMetadata, toMetadata) +import Cardano.Types (GeneralTransactionMetadata) +import Ctl.Internal.Types.MetadataLabel (MetadataLabel) import Data.Map (lookup, singleton) as Map import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) import Type.Proxy (Proxy(Proxy)) class (FromMetadata a, ToMetadata a) <= MetadataType (a :: Type) where - metadataLabel :: Proxy a -> TransactionMetadatumLabel + metadataLabel :: Proxy a -> MetadataLabel fromGeneralTxMetadata :: forall (a :: Type). MetadataType a => GeneralTransactionMetadata -> Maybe a fromGeneralTxMetadata = - fromMetadata <=< Map.lookup (metadataLabel (Proxy :: Proxy a)) <<< unwrap + fromMetadata <=< Map.lookup (unwrap $ metadataLabel (Proxy :: Proxy a)) <<< + unwrap toGeneralTxMetadata :: forall (a :: Type). MetadataType a => a -> GeneralTransactionMetadata toGeneralTxMetadata = - wrap <<< Map.singleton (metadataLabel (Proxy :: Proxy a)) <<< toMetadata + wrap <<< Map.singleton (unwrap $ metadataLabel (Proxy :: Proxy a)) <<< + toMetadata diff --git a/src/Internal/Metadata/ToMetadata.purs b/src/Internal/Metadata/ToMetadata.purs deleted file mode 100644 index a06e1609a..000000000 --- a/src/Internal/Metadata/ToMetadata.purs +++ /dev/null @@ -1,61 +0,0 @@ -module Ctl.Internal.Metadata.ToMetadata - ( class ToMetadata - , toMetadata - ) where - -import Prelude - -import Ctl.Internal.Types.Int (Int, fromBigInt) as Int -import Ctl.Internal.Types.TransactionMetadata - ( TransactionMetadatum(MetadataMap, MetadataList, Int, Bytes, Text) - ) -import Data.ByteArray (ByteArray) -import Data.Map (Map) -import Data.Map (fromFoldable, toUnfoldable) as Map -import Data.Maybe (fromJust) -import Data.Profunctor.Strong ((***)) -import Data.Tuple (Tuple) -import JS.BigInt (BigInt) -import Partial.Unsafe (unsafePartial) - --------------------------------------------------------------------------------- --- ToMetadata --------------------------------------------------------------------------------- - -class ToMetadata (a :: Type) where - toMetadata :: a -> TransactionMetadatum - -instance ToMetadata TransactionMetadatum where - toMetadata = identity - -instance (ToMetadata k, ToMetadata v) => ToMetadata (Map k v) where - toMetadata mp = - let - entries = Map.toUnfoldable mp :: Array (Tuple k v) - in - MetadataMap <<< Map.fromFoldable $ - map (toMetadata *** toMetadata) entries - -instance - ( Ord k - , ToMetadata k - , ToMetadata v - ) => - ToMetadata (Array (Tuple k v)) where - toMetadata = toMetadata <<< Map.fromFoldable -else instance ToMetadata a => ToMetadata (Array a) where - toMetadata = MetadataList <<< map toMetadata - -instance ToMetadata Int.Int where - toMetadata = Int - --- FIXME: Come up with a type-safe error handling approach. -instance ToMetadata BigInt where - toMetadata bi = - unsafePartial $ Int $ fromJust $ Int.fromBigInt bi - -instance ToMetadata ByteArray where - toMetadata = Bytes - -instance ToMetadata String where - toMetadata = Text diff --git a/src/Internal/Plutus/Conversion.purs b/src/Internal/Plutus/Conversion.purs deleted file mode 100644 index b1e388294..000000000 --- a/src/Internal/Plutus/Conversion.purs +++ /dev/null @@ -1,170 +0,0 @@ --- | A module for performing conversions between various types and --- | their Plutus representations. --- | --- | Conversion functions come in pairs and must be named as follows: --- | `fromPlutusType` and `toPlutusType`, where `Type` is to --- | be replaced by the name of the actual type. -module Ctl.Internal.Plutus.Conversion - ( - -- Plutus Address <-> CSL Address - module Conversion.Address - - -- Plutus Value <-> Types.Value - , module Conversion.Value - - -- Plutus Coin <-> Cardano Coin - , fromPlutusCoin - , toPlutusCoin - - -- Plutus TransactionOutput <-> Cardano TransactionOutput - , fromPlutusTxOutput - , toPlutusTxOutput - - -- Plutus TransactionOutputWithRefScript <-> Cardano TransactionOutput - , fromPlutusTxOutputWithRefScript - , toPlutusTxOutputWithRefScript - - -- Plutus TransactionUnspentOutput <-> Cardano TransactionUnspentOutput - , fromPlutusTxUnspentOutput - , toPlutusTxUnspentOutput - - -- Plutus UtxoMap <-> Cardano UtxoMap - , fromPlutusUtxoMap - , toPlutusUtxoMap - ) where - -import Prelude - -import Cardano.Types.BigNum as BigNum -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.TransactionOutput (TransactionOutput) as Cardano -import Cardano.Types.UtxoMap (UtxoMap) as Cardano -import Cardano.Types.Value as Value -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) as Cardano -import Ctl.Internal.Cardano.Types.Value (Coin) as Cardano -import Ctl.Internal.Hashing (scriptRefHash) -import Ctl.Internal.Helpers (notImplemented) -import Ctl.Internal.Plutus.Conversion.Address - ( fromPlutusAddress - , fromPlutusAddressWithNetworkTag - , toPlutusAddress - , toPlutusAddressWithNetworkTag - ) as Conversion.Address -import Ctl.Internal.Plutus.Conversion.Address - ( fromPlutusAddress - , toPlutusAddress - ) -import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue, toPlutusValue) -import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue, toPlutusValue) as Conversion.Value -import Ctl.Internal.Plutus.Types.Transaction - ( TransactionOutput - , TransactionOutputWithRefScript(TransactionOutputWithRefScript) - , UtxoMap - ) as Plutus -import Ctl.Internal.Plutus.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) as Plutus -import Ctl.Internal.Plutus.Types.Value (Coin) as Plutus -import Data.Maybe (Maybe(..), fromMaybe) -import Data.Newtype (unwrap, wrap) -import Data.Traversable (traverse) - --------------------------------------------------------------------------------- --- Plutus Coin <-> Cardano Coin --------------------------------------------------------------------------------- - -fromPlutusCoin :: Plutus.Coin -> Maybe Cardano.Coin -fromPlutusCoin = map wrap <<< BigNum.fromBigInt <<< unwrap - -toPlutusCoin :: Cardano.Coin -> Plutus.Coin -toPlutusCoin = wrap <<< BigNum.toBigInt <<< unwrap - --------------------------------------------------------------------------------- --- Plutus TransactionOutput <-> Cardano TransactionOutput --------------------------------------------------------------------------------- - -fromPlutusTxOutput - :: NetworkId - -> Maybe ScriptRef - -> Plutus.TransactionOutput - -> Cardano.TransactionOutput -fromPlutusTxOutput networkId scriptRef plutusTxOut = - let - rec = unwrap plutusTxOut - in - wrap - { address: fromPlutusAddress networkId rec.address - , amount: fromMaybe Value.zero $ fromPlutusValue rec.amount - , datum: Just rec.datum - , scriptRef - } - -toPlutusTxOutput - :: Cardano.TransactionOutput -> Maybe Plutus.TransactionOutput -toPlutusTxOutput cardanoTxOut = do - let rec = notImplemented -- unwrap cardanoTxOut - address <- toPlutusAddress rec.address - let - amount = toPlutusValue rec.amount - referenceScript = scriptRefHash <$> rec.scriptRef - pure $ wrap - { address, amount, datum: rec.datum, referenceScript } - --------------------------------------------------------------------------------- --- Plutus TransactionOutputWithRefScript <-> Cardano TransactionOutput --------------------------------------------------------------------------------- - -fromPlutusTxOutputWithRefScript - :: NetworkId - -> Plutus.TransactionOutputWithRefScript - -> Cardano.TransactionOutput -fromPlutusTxOutputWithRefScript - networkId - (Plutus.TransactionOutputWithRefScript { output, scriptRef }) = - fromPlutusTxOutput networkId scriptRef output - -toPlutusTxOutputWithRefScript - :: Cardano.TransactionOutput -> Maybe Plutus.TransactionOutputWithRefScript -toPlutusTxOutputWithRefScript cTxOutput = - toPlutusTxOutput cTxOutput - <#> wrap <<< { output: _, scriptRef: (unwrap cTxOutput).scriptRef } - --------------------------------------------------------------------------------- --- Plutus TransactionUnspentOutput <-> Cardano TransactionUnspentOutput --------------------------------------------------------------------------------- - -fromPlutusTxUnspentOutput - :: NetworkId - -> Plutus.TransactionUnspentOutput - -> Cardano.TransactionUnspentOutput -fromPlutusTxUnspentOutput networkId txUnspentOutput = - let - rec = unwrap txUnspentOutput - in - wrap - { input: rec.input - , output: fromPlutusTxOutputWithRefScript networkId rec.output - } - -toPlutusTxUnspentOutput - :: Cardano.TransactionUnspentOutput - -> Maybe Plutus.TransactionUnspentOutput -toPlutusTxUnspentOutput txUnspentOutput = do - let rec = unwrap txUnspentOutput - output <- toPlutusTxOutputWithRefScript rec.output - pure $ wrap { input: rec.input, output } - --------------------------------------------------------------------------------- --- Plutus UtxoMap <-> Cardano UtxoMap --------------------------------------------------------------------------------- - -fromPlutusUtxoMap :: NetworkId -> Plutus.UtxoMap -> Cardano.UtxoMap -fromPlutusUtxoMap networkId = - map (fromPlutusTxOutputWithRefScript networkId) - -toPlutusUtxoMap :: Cardano.UtxoMap -> Maybe Plutus.UtxoMap -toPlutusUtxoMap = - traverse toPlutusTxOutputWithRefScript diff --git a/src/Internal/Plutus/Conversion/Address.purs b/src/Internal/Plutus/Conversion/Address.purs deleted file mode 100644 index 48c081946..000000000 --- a/src/Internal/Plutus/Conversion/Address.purs +++ /dev/null @@ -1,184 +0,0 @@ -module Ctl.Internal.Plutus.Conversion.Address - ( fromPlutusAddress - , fromPlutusAddressWithNetworkTag - , toPlutusAddress - , toPlutusAddressWithNetworkTag - ) where - -import Prelude - -import Cardano.Plutus.Types.PubKeyHash (PubKeyHash(..)) -import Cardano.Serialization.Lib (baseAddress_toAddress) -import Cardano.Serialization.Lib as Csl -import Cardano.Types.Address (Address) -import Cardano.Types.BaseAddress as BA -import Cardano.Types.NetworkId (NetworkId) -import Control.Alt ((<|>)) -import Ctl.Internal.Helpers (notImplemented) -import Ctl.Internal.Plutus.Types.Address - ( Address(Address) - , AddressWithNetworkTag(AddressWithNetworkTag) - ) as Plutus -import Ctl.Internal.Plutus.Types.Credential - ( Credential(PubKeyCredential, ScriptCredential) - , StakingCredential(StakingHash, StakingPtr) - ) -import Ctl.Internal.Types.Scripts (ValidatorHash(ValidatorHash)) -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap, wrap) - --------------------------------------------------------------------------------- --- Plutus Address -> CSL Address --------------------------------------------------------------------------------- - -fromPlutusAddressWithNetworkTag - :: Plutus.AddressWithNetworkTag -> Csl.Address -fromPlutusAddressWithNetworkTag (Plutus.AddressWithNetworkTag rec) = - notImplemented -- fromPlutusAddress rec.networkId rec.address - --- | Builds a CSL-level address from a Plutus address. --- | CIP-0019: https://cips.cardano.org/cips/cip19/ -fromPlutusAddress - :: NetworkId -> Plutus.Address -> Address -fromPlutusAddress - networkId - (Plutus.Address { addressCredential, addressStakingCredential }) = - notImplemented - --- case addressCredential, addressStakingCredential of --- -- %b0000 | network tag | key hash | key hash --- PubKeyCredential (PubKeyHash pkh), --- Just (StakingHash (PubKeyCredential (PubKeyHash skh))) -> --- baseAddress_toAddress $ BA.BaseAddress networkId pkh skh - --- -- %b0001 | network tag | script hash | key hash --- ScriptCredential (ValidatorHash sh), --- Just (StakingHash (PubKeyCredential (PubKeyHash skh))) -> --- Csl.baseAddressToAddress $ --- Csl.scriptHashStakeKeyHashAddress networkId sh skh - --- -- %b0010 | network tag | key hash | script hash --- PubKeyCredential (PubKeyHash pkh), --- Just (StakingHash (ScriptCredential (ValidatorHash sh))) -> --- Csl.baseAddressToAddress $ --- Csl.paymentKeyHashScriptHashAddress networkId pkh sh - --- -- %b0011 | network tag | script hash | script hash --- ScriptCredential (ValidatorHash sh), --- Just (StakingHash (ScriptCredential (ValidatorHash sh'))) -> --- Csl.baseAddressToAddress $ --- Csl.scriptHashScriptHashAddress networkId sh sh' - --- -- %b0100 | network tag | key hash | pointer --- PubKeyCredential (PubKeyHash pkh), Just (StakingPtr ptr) -> --- Csl.pointerAddressToAddress $ --- Csl.paymentKeyHashPointerAddress networkId pkh ptr - --- -- %b0101 | network tag | script hash | pointer --- ScriptCredential (ValidatorHash sh), Just (StakingPtr ptr) -> --- Csl.pointerAddressToAddress $ --- Csl.scriptHashPointerAddress networkId sh ptr - --- -- %b0110 | network tag | key hash --- PubKeyCredential (PubKeyHash pkh), Nothing -> --- Csl.enterpriseAddressToAddress $ --- Csl.paymentKeyHashEnterpriseAddress networkId pkh - --- -- %b0111 | network tag | script hash --- ScriptCredential (ValidatorHash sh), Nothing -> --- Csl.enterpriseAddressToAddress $ --- Csl.scriptHashEnterpriseAddress networkId sh - --------------------------------------------------------------------------------- --- CSL Address -> Plutus Address --------------------------------------------------------------------------------- - --- | Attempts to build a Plutus address from a CSL-level address --- | discarding the network tag. --- | CIP-0019: https://cips.cardano.org/cips/cip19/ -toPlutusAddress - :: Csl.Address -> Maybe Plutus.Address -toPlutusAddress = - map (_.address <<< unwrap) <<< toPlutusAddressWithNetworkTag - --- | Attempts to build a Plutus address from a CSL-level address. --- | CIP-0019: https://cips.cardano.org/cips/cip19/ -toPlutusAddressWithNetworkTag - :: Csl.Address -> Maybe Plutus.AddressWithNetworkTag -toPlutusAddressWithNetworkTag addressCsl = notImplemented --- do --- let networkId = Csl.addressNetworkId addressCsl --- Plutus.AddressWithNetworkTag <<< { address: _, networkId } <$> --- ( toPlutusBaseAddress addressCsl --- <|> toPlutusPointerAddress addressCsl --- <|> toPlutusEnterpriseAddress addressCsl --- ) --- where --- toPlutusBaseAddress --- :: Csl.Address -> Maybe Plutus.Address --- toPlutusBaseAddress addr = do --- baseAddress <- Csl.baseAddressFromAddress addr --- let --- paymentCred :: Csl.StakeCredential --- paymentCred = Csl.baseAddressPaymentCred baseAddress - --- delegationCred :: Csl.StakeCredential --- delegationCred = Csl.baseAddressDelegationCred baseAddress - --- flip Csl.withStakeCredential paymentCred --- { onKeyHash: \pkh -> --- worker (PubKeyCredential (wrap pkh)) delegationCred --- , onScriptHash: \sh -> --- worker (ScriptCredential (wrap sh)) delegationCred --- } --- where --- worker --- :: Credential -> Csl.StakeCredential -> Maybe Plutus.Address --- worker addressCredential delegationCred = --- Just $ wrap --- { addressCredential --- , addressStakingCredential: --- flip Csl.withStakeCredential delegationCred --- { onKeyHash: \skh -> --- Just (StakingHash (PubKeyCredential (wrap skh))) --- , onScriptHash: \sh -> --- Just (StakingHash (ScriptCredential (wrap sh))) --- } --- } - --- toPlutusPointerAddress --- :: Csl.Address -> Maybe Plutus.Address --- toPlutusPointerAddress addr = do --- pointerAddress <- Csl.pointerAddressFromAddress addr --- let --- paymentCred :: Csl.StakeCredential --- paymentCred = Csl.pointerAddressPaymentCred pointerAddress - --- stakePointer :: Csl.Pointer --- stakePointer = Csl.pointerAddressStakePointer pointerAddress - --- Just $ wrap --- { addressCredential: mkAddressCredential paymentCred --- , addressStakingCredential: Just (StakingPtr stakePointer) --- } - --- toPlutusEnterpriseAddress --- :: Csl.Address -> Maybe Plutus.Address --- toPlutusEnterpriseAddress addr = do --- enterpriseAddress <- Csl.enterpriseAddressFromAddress addr --- let --- paymentCred :: Csl.StakeCredential --- paymentCred = Csl.enterpriseAddressPaymentCred enterpriseAddress - --- Just $ wrap --- { addressCredential: mkAddressCredential paymentCred --- , addressStakingCredential: Nothing --- } - --- mkAddressCredential --- :: Csl.StakeCredential -> Credential --- mkAddressCredential = --- Csl.withStakeCredential --- { onKeyHash: PubKeyCredential <<< wrap --- , onScriptHash: ScriptCredential <<< wrap --- } diff --git a/src/Internal/Plutus/Conversion/Value.purs b/src/Internal/Plutus/Conversion/Value.purs deleted file mode 100644 index 0d68103f9..000000000 --- a/src/Internal/Plutus/Conversion/Value.purs +++ /dev/null @@ -1,80 +0,0 @@ -module Ctl.Internal.Plutus.Conversion.Value - ( fromPlutusValue - , toPlutusValue - ) where - -import Prelude - -import Cardano.AsCbor (encodeCbor) -import Cardano.Types.AssetName (unAssetName) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.MultiAsset (MultiAsset(MultiAsset)) -import Cardano.Types.MultiAsset as MultiAsset -import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value(Value)) as Cardano -import Ctl.Internal.Cardano.Types.Value (MultiAsset, mkValue) -import Ctl.Internal.Helpers (notImplemented) -import Ctl.Internal.Plutus.Types.AssocMap (lookup) as Plutus.AssocMap -import Ctl.Internal.Plutus.Types.CurrencySymbol (adaSymbol, getCurrencySymbol) as Plutus -import Ctl.Internal.Plutus.Types.Value (Value) as Plutus -import Ctl.Internal.Plutus.Types.Value (adaToken) -import Ctl.Internal.Plutus.Types.Value (getValue, lovelaceValueOf, singleton') as Plutus.Value -import Data.Array (head, partition) -import Data.Foldable (fold) -import Data.List (List) -import Data.Map (fromFoldable) as Map -import Data.Maybe (Maybe, fromJust, fromMaybe) -import Data.Newtype (unwrap, wrap) -import Data.Tuple (snd) -import Data.Tuple.Nested ((/\)) -import Literals.Undefined (undefined) -import Partial.Unsafe (unsafePartial) - --- The underlying `Plutus.Types.AssocMap` of `Plutus.Types.Value` doesn't --- have the `Ord` constraint on the keys. Therefore, one should be careful when --- performing conversions between `Value`s, since the ordering of components --- can't be guaranteed. - --------------------------------------------------------------------------------- --- Plutus Value -> Types.Value --------------------------------------------------------------------------------- - -fromPlutusValue :: Plutus.Value -> Maybe Cardano.Value -fromPlutusValue plutusValue = notImplemented - --- mkValue adaCoin nonAdaAssets --- where --- { adaTokenMap, nonAdaTokenMap } = --- (\x -> { adaTokenMap: x.yes, nonAdaTokenMap: x.no }) <<< --- partition (\(cs /\ _) -> cs == Plutus.adaSymbol) $ --- (unwrap $ Plutus.Value.getValue plutusValue) - --- adaValue :: Cardano.Coin --- adaValue = fromMaybe zero do --- adaTokens <- snd <$> head adaTokenMap --- Plutus.AssocMap.lookup adaToken adaTokens - --- nonAdaAssets :: Maybe MultiAsset --- nonAdaAssets = --- MultiAsset --- $ nonAdaTokenMap <#> \(cs /\ tokens) -> --- Plutus.getCurrencySymbol cs /\ Map.fromFoldable (unwrap tokens) - --------------------------------------------------------------------------------- --- Cardano.Value -> Plutus Value --------------------------------------------------------------------------------- - -toPlutusValue :: Cardano.Value -> Plutus.Value -toPlutusValue (Cardano.Value (Cardano.Coin adaAmount) nonAdaAssets) = - adaValue <> fold nonAdaValues - where - adaValue :: Plutus.Value - adaValue - | adaAmount == BigNum.zero = mempty - | otherwise = Plutus.Value.lovelaceValueOf $ BigNum.toBigInt adaAmount - - nonAdaValues :: Array Plutus.Value - nonAdaValues = - MultiAsset.flatten nonAdaAssets <#> \(cs /\ tn /\ val) -> - unsafePartial fromJust - $ Plutus.Value.singleton' (unwrap $ encodeCbor cs) (unAssetName tn) - $ BigNum.toBigInt val diff --git a/src/Internal/Plutus/Types/Address.purs b/src/Internal/Plutus/Types/Address.purs deleted file mode 100644 index 6ccabb095..000000000 --- a/src/Internal/Plutus/Types/Address.purs +++ /dev/null @@ -1,155 +0,0 @@ -module Ctl.Internal.Plutus.Types.Address - ( Address(Address) - , AddressWithNetworkTag(AddressWithNetworkTag) - , class PlutusAddress - , getAddress - , pubKeyHashAddress - , scriptHashAddress - -- , toPubKeyHash - , toValidatorHash - , toStakingCredential - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , encodeAeson - , (.:) - ) -import Cardano.Plutus.Types.PubKeyHash (PubKeyHash(..)) -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash(..)) -import Ctl.Internal.FromData (class FromData, genericFromData) -import Ctl.Internal.Plutus.Types.Credential - ( Credential(PubKeyCredential, ScriptCredential) - , StakingCredential(StakingHash) - ) -import Ctl.Internal.Plutus.Types.DataSchema - ( class HasPlutusSchema - , type (:+) - , type (:=) - , type (@@) - , I - , PNil - ) -import Ctl.Internal.ToData (class ToData, genericToData) -import Ctl.Internal.TypeLevel.Nat (Z) -import Ctl.Internal.Types.Scripts (ValidatorHash) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) - --------------------------------------------------------------------------------- --- Address --------------------------------------------------------------------------------- - -class PlutusAddress (t :: Type) where - getAddress :: t -> Address - -newtype AddressWithNetworkTag = AddressWithNetworkTag - { address :: Address - , networkId :: NetworkId - } - -instance PlutusAddress Address where - getAddress = identity - -instance PlutusAddress AddressWithNetworkTag where - getAddress = _.address <<< unwrap - -derive instance Eq AddressWithNetworkTag -derive instance Newtype AddressWithNetworkTag _ -derive instance Generic AddressWithNetworkTag _ - -instance Show AddressWithNetworkTag where - show = genericShow - --- Taken from https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/Plutus-V1-Ledger-Tx.html#t:Address --- Plutus rev: dbefda30be6490c758aa88b600f5874f12712b3a --- | Address with two kinds of credentials, normal and staking. -newtype Address = Address - { addressCredential :: Credential - , addressStakingCredential :: Maybe StakingCredential - } - -derive instance Eq Address -derive instance Ord Address -derive instance Newtype Address _ -derive instance Generic Address _ - -instance Show Address where - show = genericShow - -instance - HasPlutusSchema - Address - ( "Address" - := - ( "addressCredential" := I Credential :+ "addressStakingCredential" - := I (Maybe StakingCredential) - :+ PNil - ) - @@ Z - :+ PNil - ) - -instance ToData Address where - toData = genericToData - -instance FromData Address where - fromData = genericFromData - -instance DecodeAeson Address where - decodeAeson = caseAesonObject (Left $ TypeMismatch "Expected object") $ - \obj -> do - addressCredential <- obj .: "addressCredential" - addressStakingCredential <- obj .: "addressStakingCredential" - pure $ Address { addressCredential, addressStakingCredential } - -instance EncodeAeson Address where - encodeAeson (Address addr) = encodeAeson addr - --------------------------------------------------------------------------------- --- Useful functions --------------------------------------------------------------------------------- - --- | The address that should be targeted by a transaction output locked --- | by the public key with the given hash. -pubKeyHashAddress :: PaymentPubKeyHash -> Maybe Credential -> Address -pubKeyHashAddress (PaymentPubKeyHash pkh) mbStakeCredential = wrap - { addressCredential: PubKeyCredential $ wrap pkh - , addressStakingCredential: - map StakingHash mbStakeCredential - } - --- | The address that should be used by a transaction output locked --- | by the given validator script hash. -scriptHashAddress :: ValidatorHash -> Maybe Credential -> Address -scriptHashAddress vh mbStakeCredential = wrap - { addressCredential: ScriptCredential vh - , addressStakingCredential: map StakingHash mbStakeCredential - } - --- -- | The PubKeyHash of the address (if any). --- toPubKeyHash :: Address -> Maybe PubKeyHash --- toPubKeyHash addr = --- case (unwrap addr).addressCredential of --- PubKeyCredential k -> Just k --- _ -> Nothing - --- | The validator hash of the address (if any). -toValidatorHash :: Address -> Maybe ValidatorHash -toValidatorHash addr = - case (unwrap addr).addressCredential of - ScriptCredential k -> Just k - _ -> Nothing - --- | The staking credential of an address (if any). -toStakingCredential :: Address -> Maybe StakingCredential -toStakingCredential = _.addressStakingCredential <<< unwrap diff --git a/src/Internal/Plutus/Types/AssocMap.purs b/src/Internal/Plutus/Types/AssocMap.purs deleted file mode 100644 index 91bd156cd..000000000 --- a/src/Internal/Plutus/Types/AssocMap.purs +++ /dev/null @@ -1,250 +0,0 @@ -module Ctl.Internal.Plutus.Types.AssocMap - ( Map(Map) - , delete - , elems - , empty - , filter - , insert - , keys - , lookup - , mapMaybe - , mapMaybeWithKey - , mapThese - , member - , null - , singleton - , union - , unionWith - , values - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , Aeson - , decodeAeson - , encodeAeson - ) -import Cardano.Types.PlutusData (PlutusData(Map)) as PD -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.ToData (class ToData, toData) -import Data.Array (any, deleteAt, filter, findIndex, mapMaybe, null, singleton) as Array -import Data.Array ((:)) -import Data.Bifunctor (bimap, rmap) -import Data.Bitraversable (rtraverse) -import Data.Foldable - ( class Foldable - , foldMap - , foldlDefault - , foldr - , foldrDefault - ) -import Data.Foldable (lookup) as Foldable -import Data.FoldableWithIndex - ( class FoldableWithIndex - , foldlWithIndexDefault - , foldrWithIndexDefault - ) -import Data.FunctorWithIndex (class FunctorWithIndex) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe(Just, Nothing), isJust) -import Data.Newtype (class Newtype, unwrap) -import Data.Show.Generic (genericShow) -import Data.These (These(Both, That, This), these) -import Data.Traversable (class Traversable, for, sequence, traverse) -import Data.TraversableWithIndex (class TraversableWithIndex) -import Data.Tuple (Tuple(Tuple), fst, snd, uncurry) -import Data.Tuple.Nested (type (/\), (/\)) - --- Taken from local Hoogle server for the Haskell server which uses --- `plutus` rev: 1efbb276ef1a10ca6961d0fd32e6141e9798bd11 --- It looks like Plutus doesn't provide any safety on their `Map`, notice the --- existence of functions like `fromList :: [(k, v)] -> Map k v` and --- toList :: Map k v -> [(k, v)]. Therefore, I will derive Generic and Newtype --- instance and export the constructor. We could potentially provide this by --- having a `fromList` in `Maybe` although we should probably try to replicate --- behaviour so that our CTL and on-chain behaviours match. There doesn't even --- seem to be an `Ord` constraint on the keys. --- | A Plutus-style associated list `Map` of key-value pairs. -newtype Map (k :: Type) (v :: Type) = Map (Array (Tuple k v)) - -derive instance Generic (Map k v) _ -derive instance Newtype (Map k v) _ -derive newtype instance (Eq k, Eq v) => Eq (Map k v) -derive newtype instance (Ord k, Ord v) => Ord (Map k v) - -instance (EncodeAeson k, EncodeAeson v) => EncodeAeson (Map k v) where - encodeAeson = encodeAeson <<< map (rmap encodeAeson) <<< unwrap - -instance (DecodeAeson k, DecodeAeson v) => DecodeAeson (Map k v) where - decodeAeson x = Map <$> - ( traverse (rtraverse decodeAeson) - =<< (decodeAeson x :: _ (Array (Tuple k Aeson))) - ) - -instance (Show k, Show v) => Show (Map k v) where - show = genericShow - -instance (ToData k, ToData v) => ToData (Map k v) where - toData (Map xs) = PD.Map (bimap toData toData <$> xs) - -instance (FromData k, FromData v) => FromData (Map k v) where - fromData (PD.Map mp) = do - Map <$> - ( for mp \(k /\ v) -> - Tuple <$> fromData k <*> fromData v - ) - fromData _ = Nothing - -instance Functor (Map k) where - map f (Map xs) = Map $ map (map f) xs - -instance FunctorWithIndex k (Map k) where - mapWithIndex f (Map xs) = Map $ map (\(Tuple k v) -> Tuple k (f k v)) xs - -instance Foldable (Map k) where - foldMap f (Map xs) = foldMap (foldMap f) xs - foldr f = foldrDefault f - foldl f = foldlDefault f - -instance FoldableWithIndex k (Map k) where - foldMapWithIndex f (Map xs) = foldMap (uncurry f) xs - foldrWithIndex f = foldrWithIndexDefault f - foldlWithIndex f = foldlWithIndexDefault f - -instance Traversable (Map k) where - traverse f (Map xs) = Map <$> traverse (traverse f) xs - sequence (Map xs) = Map <$> sequence (map sequence xs) - -instance TraversableWithIndex k (Map k) where - traverseWithIndex f (Map xs) = Map <$> traverse - (\(Tuple k v) -> Tuple k <$> f k v) - xs - -instance (Eq k, Semigroup v) => Semigroup (Map k v) where - append = unionWith (<>) - -instance (Eq k, Semigroup v) => Monoid (Map k v) where - mempty = empty - --- | Find an entry in a `Map`. -lookup :: forall (k :: Type) (v :: Type). Eq k => k -> Map k v -> Maybe v -lookup k (Map xs) = Foldable.lookup k xs - --- | Whether given key is a member of a `Map` -member :: forall (k :: Type) (v :: Type). Eq k => k -> Map k v -> Boolean -member k = isJust <<< lookup k - --- Insert a key-value pair into a `Map` -insert :: forall k v. (Eq k) => k -> v -> Map k v -> Map k v -insert k v m = unionWith (\_ b -> b) m $ singleton k v - --- | Delete a key in a `Map` -delete :: forall (k :: Type) (v :: Type). Eq k => k -> Map k v -> Map k v -delete k (Map xs) = - case Array.findIndex (fst >>> (==) k) xs >>= flip Array.deleteAt xs of - Nothing -> Map xs - Just newMap -> Map newMap - --- | The keys of a `Map` -keys :: forall (k :: Type) (v :: Type). Map k v -> Array k -keys (Map xs) = fst <$> xs - --- | The values of a `Map` -values :: forall (k :: Type) (v :: Type). Map k v -> Array v -values (Map xs) = snd <$> xs - --- | Combine two `Map`s -union - :: forall (k :: Type) (v :: Type) (r :: Type) - . Eq k - => Map k v - -> Map k r - -> Map k (These v r) -union (Map ls) (Map rs) = - let - f :: v -> Maybe r -> These v r - f a = case _ of - Nothing -> This a - Just b -> Both a b - - ls' :: Array (k /\ These v r) - ls' = map (\(c /\ i) -> (c /\ f i (lookup c (Map rs)))) ls - - rs' :: Array (k /\ r) - rs' = - Array.filter (\(c /\ _) -> not (Array.any (\(c' /\ _) -> c' == c) ls)) rs - - rs'' :: Array (k /\ These v r) - rs'' = map (map That) rs' - in - Map (ls' <> rs'') - --- | Combine two `Map`s with the given combination function -unionWith - :: forall (k :: Type) (a :: Type) - . Eq k - => (a -> a -> a) - -> Map k a - -> Map k a - -> Map k a -unionWith merge ls rs = these identity identity merge <$> union ls rs - --- | A version of Haskell's `Data.Map.Lazy.mapEither` that works with `These` -mapThese - :: forall (k :: Type) (v :: Type) (a :: Type) (b :: Type) - . (v -> These a b) - -> Map k v - -> (Map k a /\ Map k b) -mapThese f mps = Map (fst mappedThese) /\ Map (snd mappedThese) - where - f' - :: k /\ These a b - -> Array (k /\ a) /\ Array (k /\ b) - -> Array (k /\ a) /\ Array (k /\ b) - f' (k /\ v) (as /\ bs) = case v of - This a -> Tuple ((k /\ a) : as) bs - That b -> Tuple as ((k /\ b) : bs) - Both a b -> Tuple ((k /\ a) : as) ((k /\ b) : bs) - - mappedThese :: Array (k /\ a) /\ Array (k /\ b) - mappedThese = foldr f' ([] /\ []) (unwrap $ map f mps) - --- | A singleton `Map` -singleton :: forall (k :: Type) (v :: Type). k -> v -> Map k v -singleton k v = Map $ Array.singleton (k /\ v) - --- | An empty `Map` -empty :: forall (k :: Type) (v :: Type). Map k v -empty = Map [] - --- | Checks whether a `Map` is empty -null :: forall (k :: Type) (v :: Type). Map k v -> Boolean -null (Map xs) = Array.null xs - --- | Filter all values that satisfy the predicate. -filter :: forall (k :: Type) (v :: Type). (v -> Boolean) -> Map k v -> Map k v -filter f (Map xs) = Map $ Array.filter (f <<< snd) xs - --- | Return all elements of the map in the ascending order of their keys. -elems :: forall (k :: Type) (v :: Type). Map k v -> Array v -elems (Map xs) = snd <$> xs - --- | Map values and collect the `Just` results. -mapMaybe - :: forall (k :: Type) (a :: Type) (b :: Type) - . (a -> Maybe b) - -> Map k a - -> Map k b -mapMaybe f (Map xs) = Map $ Array.mapMaybe (\(k /\ v) -> (k /\ _) <$> f v) xs - --- | Map keys, values and collect the `Just` results. -mapMaybeWithKey - :: forall (k :: Type) (a :: Type) (b :: Type) - . (k -> a -> Maybe b) - -> Map k a - -> Map k b -mapMaybeWithKey f (Map xs) = - Map $ Array.mapMaybe (\(k /\ v) -> (k /\ _) <$> f k v) xs diff --git a/src/Internal/Plutus/Types/Credential.purs b/src/Internal/Plutus/Types/Credential.purs deleted file mode 100644 index 69e870c0f..000000000 --- a/src/Internal/Plutus/Types/Credential.purs +++ /dev/null @@ -1,150 +0,0 @@ -module Ctl.Internal.Plutus.Types.Credential - ( Credential(PubKeyCredential, ScriptCredential) - , StakingCredential(StakingHash, StakingPtr) - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(AtKey, Named, UnexpectedValue) - , decodeAeson - , (.:) - ) -import Cardano.Plutus.Types.PubKeyHash (PubKeyHash) -import Cardano.Types.Slot (Slot) -import Contract.Prelude (type (/\)) -import Ctl.Internal.FromData (class FromData, genericFromData) -import Ctl.Internal.Helpers (encodeTagged') -import Ctl.Internal.Plutus.Types.DataSchema - ( class HasPlutusSchema - , type (:+) - , type (:=) - , type (@@) - , I - , PNil - ) -import Ctl.Internal.Serialization.Address (CertificateIndex, TransactionIndex) -import Ctl.Internal.ToData (class ToData, genericToData) -import Ctl.Internal.TypeLevel.Nat (S, Z) -import Ctl.Internal.Types.Scripts (ValidatorHash) -import Data.Argonaut.Encode.Encoders (encodeString) -import Data.Bifunctor (lmap) -import Data.Either (Either(Left)) -import Data.Generic.Rep (class Generic) -import Data.Show.Generic (genericShow) -import Data.Tuple.Nested ((/\)) - --------------------------------------------------------------------------------- --- Credential --------------------------------------------------------------------------------- - --- Taken from https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/Plutus-V1-Ledger-Api.html#t:Credential --- Plutus rev: dbefda30be6490c758aa88b600f5874f12712b3a --- | Credential required to unlock a transaction output. -data Credential - -- | The transaction that spends this output must be signed by - -- | the private key. - = PubKeyCredential PubKeyHash - -- | The transaction that spends this output must include the validator - -- | script and be accepted by the validator. - | ScriptCredential ValidatorHash - -derive instance Eq Credential -derive instance Ord Credential -derive instance Generic Credential _ - -instance Show Credential where - show = genericShow - -instance - HasPlutusSchema - Credential - ( "PubKeyCredential" := PNil @@ Z - :+ "ScriptCredential" - := PNil - @@ (S Z) - :+ PNil - ) - -instance EncodeAeson Credential where - encodeAeson = case _ of - PubKeyCredential a -> encodeTagged' "PubKeyCredential" a - ScriptCredential a -> encodeTagged' "ScriptCredential" a - -instance DecodeAeson Credential where - decodeAeson a = lmap (Named "Credential") do - obj <- decodeAeson a - tag <- obj .: "tag" - case tag of - "PubKeyCredential" -> PubKeyCredential <$> obj .: "contents" - "ScriptCredential" -> ScriptCredential <$> obj .: "contents" - _ -> Left $ AtKey "tag" $ UnexpectedValue $ encodeString tag - -instance ToData Credential where - toData = genericToData - -instance FromData Credential where - fromData = genericFromData - --------------------------------------------------------------------------------- --- StakingCredential --------------------------------------------------------------------------------- - --- Taken from https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/Plutus-V1-Ledger-Api.html#t:StakingCredential --- Plutus rev: dbefda30be6490c758aa88b600f5874f12712b3a --- | Staking credential used to assign rewards. -data StakingCredential - = StakingHash Credential - | StakingPtr - { slot :: Slot - , txIx :: TransactionIndex - , certIx :: CertificateIndex - } - -derive instance Eq StakingCredential -derive instance Ord StakingCredential -derive instance Generic StakingCredential _ - -instance Show StakingCredential where - show = genericShow - -instance - HasPlutusSchema - StakingCredential - ( "StakingHash" := PNil @@ Z - :+ "StakingPtr" - := - ( "slot" := I Slot :+ "txIx" := I TransactionIndex :+ "certIx" - := I CertificateIndex - :+ PNil - ) - @@ (S Z) - :+ PNil - ) - -instance ToData StakingCredential where - toData = genericToData - -instance FromData StakingCredential where - fromData = genericFromData - -instance EncodeAeson StakingCredential where - encodeAeson = case _ of - StakingHash a -> encodeTagged' "StakingHash" a - StakingPtr ptr -> encodeTagged' "StakingPtr" - (ptr.slot /\ ptr.txIx /\ ptr.certIx) - -instance DecodeAeson StakingCredential where - decodeAeson a = lmap (Named "StakingCredential") do - obj <- decodeAeson a - tag <- obj .: "tag" - case tag of - "StakingHash" -> StakingHash <$> obj .: "contents" - "StakingPtr" -> toStakingPtr <$> obj .: "contents" - _ -> Left $ AtKey "tag" $ UnexpectedValue $ encodeString tag - where - toStakingPtr - :: (Slot /\ TransactionIndex /\ CertificateIndex) -> StakingCredential - toStakingPtr (slot /\ txIx /\ certIx) = StakingPtr { slot, txIx, certIx } diff --git a/src/Internal/Plutus/Types/CurrencySymbol.purs b/src/Internal/Plutus/Types/CurrencySymbol.purs deleted file mode 100644 index d05f1ecce..000000000 --- a/src/Internal/Plutus/Types/CurrencySymbol.purs +++ /dev/null @@ -1,110 +0,0 @@ -module Ctl.Internal.Plutus.Types.CurrencySymbol - ( CurrencySymbol(CurrencySymbol) - , adaSymbol - , currencyMPSHash - , getCurrencySymbol - , mkCurrencySymbol - , mpsSymbol - , scriptHashAsCurrencySymbol - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , decodeAeson - , encodeAeson - , getField - ) -import Control.Monad.Gen as Gen -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata) -import Ctl.Internal.Serialization.Hash - ( ScriptHash - , scriptHashFromBytes - , scriptHashToBytes - ) -import Ctl.Internal.ToData (class ToData) -import Ctl.Internal.Types.Scripts (MintingPolicyHash(MintingPolicyHash)) -import Data.Array.NonEmpty (fromArray) -import Data.ByteArray (ByteArray, hexToByteArrayUnsafe) -import Data.Either (Either(Left)) -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (unwrap) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (class Arbitrary) - -newtype CurrencySymbol = CurrencySymbol ByteArray - -derive newtype instance Eq CurrencySymbol -derive newtype instance Ord CurrencySymbol -derive newtype instance FromData CurrencySymbol -derive newtype instance FromMetadata CurrencySymbol -derive newtype instance ToData CurrencySymbol -derive newtype instance ToMetadata CurrencySymbol - -instance DecodeAeson CurrencySymbol where - decodeAeson = caseAesonObject - (Left $ TypeMismatch "Expected object") - (flip getField "unCurrencySymbol" >=> decodeAeson >>> map CurrencySymbol) - -instance EncodeAeson CurrencySymbol where - encodeAeson (CurrencySymbol mph) = encodeAeson { "unCurrencySymbol": mph } - -instance Show CurrencySymbol where - show (CurrencySymbol cs) = "(CurrencySymbol " <> show cs <> ")" - -instance Arbitrary CurrencySymbol where - arbitrary = Gen.elements $ map translate $ unsafeNonEmpty - [ "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - , "92c4f22371bd453aec9fe19ccebfbc88211ae854b5eab424bcd4c26d" - , "c9e9c15d4f16a7948d3736c93aa79034621d51dccc4df5d31c7d34aa" - ] - where - unsafeNonEmpty x = unsafePartial $ fromJust $ fromArray x - - translate :: String -> CurrencySymbol - translate x = - scriptHashAsCurrencySymbol $ unsafePartial $ fromJust - $ scriptHashFromBytes - $ hexToByteArrayUnsafe x - -adaSymbol :: CurrencySymbol -adaSymbol = CurrencySymbol mempty - -scriptHashAsCurrencySymbol :: ScriptHash -> CurrencySymbol -scriptHashAsCurrencySymbol = CurrencySymbol <<< unwrap <<< scriptHashToBytes - --- | The minting policy hash of a currency symbol. -currencyMPSHash :: CurrencySymbol -> MintingPolicyHash -currencyMPSHash = MintingPolicyHash <<< currencyScriptHash - --- | The currency symbol of a monetary policy hash. -mpsSymbol :: MintingPolicyHash -> Maybe CurrencySymbol -mpsSymbol (MintingPolicyHash h) = mkCurrencySymbol $ unwrap $ scriptHashToBytes - h - -getCurrencySymbol :: CurrencySymbol -> ByteArray -getCurrencySymbol (CurrencySymbol curSymbol) = curSymbol - -mkCurrencySymbol :: ByteArray -> Maybe CurrencySymbol -mkCurrencySymbol byteArr - | byteArr == mempty = - pure adaSymbol - | otherwise = - (scriptHashFromBytes byteArr :: Maybe ScriptHash) $> CurrencySymbol - byteArr - --------------------------------------------------------------------------------- --- Internal --------------------------------------------------------------------------------- - --- This must be safe to use as long as we always construct a --- `CurrencySymbol` with the smart-constructors. -currencyScriptHash :: CurrencySymbol -> ScriptHash -currencyScriptHash = unsafePartial $ fromJust <<< scriptHashFromBytes - <<< getCurrencySymbol diff --git a/src/Internal/Plutus/Types/DataSchema.purs b/src/Internal/Plutus/Types/DataSchema.purs deleted file mode 100644 index 7d69a41f7..000000000 --- a/src/Internal/Plutus/Types/DataSchema.purs +++ /dev/null @@ -1,261 +0,0 @@ -module Ctl.Internal.Plutus.Types.DataSchema - ( PSchema - , class HasPlutusSchema - , PNil - , PCons - , ApPCons - , Id - , I - , type (:+) - , IxK - , MkIxK - , MkIxK_ - , type (@@) - , Field - , MkField - , MkField_ - , type (:=) - , class SchemaToRowList - , class PlutusSchemaToRowListI - , class AllUnique2 - , class ValidPlutusSchema - ) where - -import Ctl.Internal.TypeLevel.Nat (Nat) -import Ctl.Internal.TypeLevel.RowList (class AllUniqueLabels) -import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed - ( class AllUniqueLabelsI - , class UniqueIndices - , ConsI - , NilI - , RowListI - ) -import Type.RowList (Cons, Nil, RowList) - -{- This modules defines various data types (kinds) which are used to encode enough the *structure* of the Plutus Data that corresponds to a - given data type at the type level. - - There are three reason why this is needed: - - 1) The previous implementation of ToData/FromData does not encode the order of record entries. Because RowLists are lexicographically sorted - and Plutus Data is not, this rendered the library incompatible with PureScript record types generated by purescript-bridge. This provides a way to - encode that order. - - 2) The previous implementation of ToData/FromData relied upon a HasConstrIndices class which encoded the index corresponding to a - Symbol representation of a constructor's name at the *term level*. This is not in itself bad. However, it is possible (in both Haskell and PureScript) - to define sum types such as: - - ``` - data Foo = FooA {foo :: String, fooo :: Int} - | FooB {fooo :: Bool, foo :: Bool} - ``` - - In cases like this, where multiple constructors of the sum type accept records as arguments and where those records share labels - with each other, the Plutus Data index of a record entry cannot be determined solely by the type (Foo) and the label ("foo","fooo") and must be - represented in a dependent manner with respect to the constructor name. (I.e. you need to know which constructor a given record belongs to in order - to determine its index). - - I do not believe that it is possible to make FromData work without a type level representation of the indices of each record entry, and it would be difficult - (if not strictly impossible) to combine the term-level HasConstrIndices approach with a type level IndexedRecField approach, and the schema implented here unifies all - of the required information in a single place. - - 3) Ergonomics/Safety. By encoding everything at the type level, we can express sophisticated constraints on the schema to ensure that patently invalid schemata are - rejected at compile time. This reduces the burden and complexity of tests, and allows us to detect subtle mistakes in generated or handwritten instances that might - otherwise only be determinable from emulator trace errors (which are, to put it mildly, not ideal). By defining Schema types here, we are also able to provide a syntax - for the schema which is visually close to a data declaration and easy to generate. - --} - -{- <<< Plutus Data Schema + Associated types/kinds/data >>> -} - --- | A type level Identity "functor kind". This is mainly used to overload the ':=' type operator. -data Id :: forall (k :: Type). k -> Type -data Id k - -foreign import data I :: forall (k :: Type). k -> Id k - --- | A kind (never exists as a term). This is the kind of @PCons@ and @PNil@. -data PSchema :: forall (k :: Type). k -> Type -data PSchema k - -{- A concrete Plutus Data schema. Morally equivalent to: Row (Row Type). This is superfluous - in the sense that we could simply do everything here with (RowListI (RowList Type)), which - @PlutusSchema@s are all translated to, but this facilitates a more comprehensible syntax. - (Conversely we could rewrite all of the RowList/RowListI machinery in terms of this, but it - would be much more difficult to read/debug/reason about). - - Here's an example: - - data FType - = F0 - { f0A :: BigInt - } - | F1 - { f1A :: Boolean - , f1B :: Boolean - , f1C :: Boolean - } - | F2 - { f2A :: BigInt - , f2B :: FType - } - - instance - HasPlutusSchema FType - ( "F0" := - ( "f0A" := I BigInt - :+ PNil) - @@ Z - - :+ "F1" := - ( "f1A" := I Boolean - :+ "f1B" := I Boolean - :+ "f1C" := I Boolean - :+ PNil - ) - @@ (S Z) - - :+ "F2" := - ( "f2A" := I BigInt - :+ "f2B" := I FType - :+ PNil - ) - @@ (S (S Z)) - - :+ PNil - ) - -Note that a PSchema encodes two pieces of information: - -1) The index of each *constructor* of a data type. This information is encoded in the "outer" RowListI. - In the above example, these are "F0" (Z), "F1" (S Z), and "F2" (S (S Z)) - -2) The correct on-chain ordering of each record field. This is encoded implicitly by the ordering of the fields in each inner list (i.e. we do not provide a specific index for record fields). - If a constructor does not have a Record argument, we do not need to encode any information about that argument. For example, the type: - - data GType - = G0 BigInt - | G1 Boolean Boolean Boolean - | G2 BigInt GType - - would have a much simpler Schema: - - instance - HasPlutusSchema GType - ( "G0" := PNil @@ Z - :+ "G1" := PNil @@ (S Z) - :+ "G2" := PNil @@ (S (S Z)) - :+ PNil) - - The sole purpose of the inner list is to ensure correct translation to and from Plutus Data for record types - when using the generic functions in ToData/FromData. Since GType's constructors do not have record arguments, - no additional information is needed in the inner lists. --} - -type PlutusSchema = PSchema (PSchema Type) - --- | A class used to associate types with a Plutus Data Schema. The fundeps *should* guarantee --- | that only one schema can exist for each type. This allows us to make the compiler select the --- | schema associated with a particular type. -class HasPlutusSchema - :: Type -> PlutusSchema -> Constraint -class HasPlutusSchema t schema | t -> schema - --- | Listlike constructors for the PSchema kind. -foreign import data PNil :: forall (k :: Type). PSchema k -foreign import data PCons - :: forall (k :: Type). Field k -> PSchema k -> PSchema k - --- | Type synonym which is used to provide syntatic sugar to PCons. You can think of :+ as a type level version of : for PSchema -type ApPCons :: forall (k :: Type). Field k -> PSchema k -> PSchema k -type ApPCons x xs = PCons x xs - -infixr 0 type ApPCons as :+ - --- | Indexed kind. A kind representing a type @k@ indexed by a type level natural number @n@. -data IxK :: forall (k :: Type). k -> Type -data IxK k - --- | A data type of Kind (IxK k n) for some k and n -foreign import data MkIxK :: forall (k :: Type). Nat -> k -> IxK k - --- | Syntactic sugar which allows us to represent MkIxK as a type operator -type MkIxK_ - :: forall k1. k1 -> Nat -> IxK k1 -- FIXME(@gnumonik): s/k1/k it complains -type MkIxK_ k n = MkIxK n k - -infixr 9 type MkIxK_ as @@ - --- | A kind which is used to represent pairs of Symbols and IxKs. A fancy type level tuple, more or less. -data Field :: forall (k :: Type). k -> Type -data Field k - --- | A data type of Kind (Field k) -foreign import data MkField - :: forall (k :: Type) (f :: Type -> Type). Symbol -> f k -> Field k - --- | Type synonym used to represent MkField as a type operator. -type MkField_ - :: forall (f :: Type -> Type) (k :: Type). Symbol -> f k -> Field k -type MkField_ lbl ixty = MkField lbl ixty - -infixr 8 type MkField_ as := - -{- <<< Constraints used to provide compile-time validation of a PSchema >>> -} - --- TODO: See if we can optimize this. Slows down compilation considerably for complex types. --- GH Issue: https://github.com/Plutonomicon/cardano-transaction-lib/issues/433 --- | A class which ensures that the Nat indices of the RowListI are unique & that the Symbol --- | labels of both the RowListI and RowList in a RowListI (RowList k) all contain unique labels --- | (relative to their "level", i.e., two record arguments of *different* constructors can --- | have overlapping labels, but constructor names cannot overlap, nor can two labels or indices --- | of the *same* record) -class AllUnique2 :: forall (k :: Type). RowListI (RowList k) -> Constraint -class AllUnique2 rList - -instance AllUnique2 NilI -else instance - ( AllUniqueLabels a - , AllUniqueLabelsI (ConsI l a n xs) - , UniqueIndices (ConsI l a n xs) - , AllUnique2 xs - ) => - AllUnique2 (ConsI l a n xs) - --- | The class which validates a Plutus Schema. To make use of genericFromData / genericToData, --- | a type must have an associated Plutus Data schema which satisfies this constraint. -class ValidPlutusSchema :: PlutusSchema -> RowListI (RowList Type) -> Constraint -class - ( PlutusSchemaToRowListI schema list - , AllUnique2 list - ) <= - ValidPlutusSchema schema list - | schema -> list - -instance - ( PlutusSchemaToRowListI schema list - , AllUnique2 list - ) => - ValidPlutusSchema schema list - --- | Helper type classes used to convert a PlutusSchema to a RowListI (RowList k). Should not need to be used outside of this module. -class SchemaToRowList - :: forall (k :: Type). PSchema k -> RowList k -> Constraint -class SchemaToRowList schema list | schema -> list - -instance SchemaToRowList PNil Nil -else instance - ( SchemaToRowList xs xs' - ) => - SchemaToRowList (PCons (MkField l (I k)) xs) (Cons l k xs') - -class PlutusSchemaToRowListI - :: PlutusSchema -> RowListI (RowList Type) -> Constraint -class PlutusSchemaToRowListI schema list | schema -> list - -instance PlutusSchemaToRowListI PNil NilI -else instance - ( PlutusSchemaToRowListI xs xs' - , SchemaToRowList a a' - ) => - PlutusSchemaToRowListI (PCons (MkField l (MkIxK n a)) xs) (ConsI l a' n xs') diff --git a/src/Internal/Plutus/Types/Transaction.purs b/src/Internal/Plutus/Types/Transaction.purs deleted file mode 100644 index 2f0de6944..000000000 --- a/src/Internal/Plutus/Types/Transaction.purs +++ /dev/null @@ -1,124 +0,0 @@ -module Ctl.Internal.Plutus.Types.Transaction - ( TransactionOutput(TransactionOutput) - , UtxoMap - , TransactionOutputWithRefScript(TransactionOutputWithRefScript) - , _amount - , _datum - , _output - , _scriptRef - , pprintTransactionOutput - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.AsCbor (encodeCbor) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.PlutusData (PlutusData(Constr)) -import Cardano.Types.TransactionInput (TransactionInput) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) -import Ctl.Internal.FromData (class FromData, fromData) -import Ctl.Internal.Plutus.Conversion.Value (fromPlutusValue) -import Ctl.Internal.Plutus.Types.Address (Address) -import Ctl.Internal.Plutus.Types.Value (Value, pprintValue) -import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashToBytes) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.OutputDatum (OutputDatum, pprintOutputDatum) -import Ctl.Internal.Types.RawBytes (rawBytesToHex) -import Data.ByteArray (byteArrayToHex) -import Data.Generic.Rep (class Generic) -import Data.Lens (Lens') -import Data.Lens.Iso.Newtype (_Newtype) -import Data.Lens.Record (prop) -import Data.Log.Tag (TagSet, tag, tagSetTag) -import Data.Log.Tag as TagSet -import Data.Map (Map) -import Data.Maybe (Maybe(Nothing), maybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) -import Type.Proxy (Proxy(Proxy)) - --- https://github.com/input-output-hk/plutus/blob/c8d4364d0e639fef4d5b93f7d6c0912d992b54f9/plutus-ledger-api/src/PlutusLedgerApi/V2/Tx.hs#L80 -newtype TransactionOutput = TransactionOutput - { address :: Address - , amount :: Value - , datum :: OutputDatum - , referenceScript :: Maybe ScriptHash - } - -_amount :: Lens' TransactionOutput Value -_amount = _Newtype <<< prop (Proxy :: Proxy "amount") - -_datum :: Lens' TransactionOutput OutputDatum -_datum = _Newtype <<< prop (Proxy :: Proxy "datum") - -derive instance Generic TransactionOutput _ -derive instance Newtype TransactionOutput _ -derive newtype instance Eq TransactionOutput - -instance Show TransactionOutput where - show = genericShow - -derive newtype instance DecodeAeson TransactionOutput -derive newtype instance EncodeAeson TransactionOutput - -instance FromData TransactionOutput where - fromData (Constr n [ addr, amt, datum, referenceScript ]) - | n == BigNum.zero = - TransactionOutput <$> - ( { address: _, amount: _, datum: _, referenceScript: _ } - <$> fromData addr - <*> fromData amt - <*> fromData datum - <*> fromData referenceScript - ) - fromData _ = Nothing - -instance ToData TransactionOutput where - toData (TransactionOutput { address, amount, datum, referenceScript }) = - Constr BigNum.zero - [ toData address, toData amount, toData datum, toData referenceScript ] - -pprintTransactionOutput :: TransactionOutput -> TagSet -pprintTransactionOutput - (TransactionOutput { address, amount, datum, referenceScript }) = - TagSet.fromArray $ - [ "address" `tag` show address - , "amount" `tagSetTag` pprintValue amount - , pprintOutputDatum datum - ] <> referenceScriptTagSet - where - referenceScriptTagSet = maybe [] - ( pure <<< tag "referenceScript" <<< byteArrayToHex <<< unwrap <<< - encodeCbor - ) - referenceScript - -newtype TransactionOutputWithRefScript = TransactionOutputWithRefScript - { output :: TransactionOutput - , scriptRef :: Maybe ScriptRef - } - -_output :: Lens' TransactionOutputWithRefScript TransactionOutput -_output = _Newtype <<< prop (Proxy :: Proxy "output") - -_scriptRef :: Lens' TransactionOutputWithRefScript (Maybe ScriptRef) -_scriptRef = _Newtype <<< prop (Proxy :: Proxy "scriptRef") - -derive instance Generic TransactionOutputWithRefScript _ -derive instance Newtype TransactionOutputWithRefScript _ -derive newtype instance Eq TransactionOutputWithRefScript - -instance Show TransactionOutputWithRefScript where - show = genericShow - -derive newtype instance DecodeAeson TransactionOutputWithRefScript -derive newtype instance EncodeAeson TransactionOutputWithRefScript - -instance FromData TransactionOutputWithRefScript where - fromData = map (wrap <<< { output: _, scriptRef: Nothing }) <<< fromData - -instance ToData TransactionOutputWithRefScript where - toData = toData <<< _.output <<< unwrap - -type UtxoMap = Map TransactionInput TransactionOutputWithRefScript diff --git a/src/Internal/Plutus/Types/TransactionUnspentOutput.purs b/src/Internal/Plutus/Types/TransactionUnspentOutput.purs deleted file mode 100644 index 68853c349..000000000 --- a/src/Internal/Plutus/Types/TransactionUnspentOutput.purs +++ /dev/null @@ -1,65 +0,0 @@ -module Ctl.Internal.Plutus.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - , lookupTxHash - , _input - , _output - , mkTxUnspentOut - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - ) -import Ctl.Internal.Plutus.Types.Transaction - ( TransactionOutputWithRefScript - , UtxoMap - ) -import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) -import Data.Array (filter) -import Data.Generic.Rep (class Generic) -import Data.Lens (Lens') -import Data.Lens.Iso.Newtype (_Newtype) -import Data.Lens.Record (prop) -import Data.Map as Map -import Data.Newtype (class Newtype, unwrap) -import Data.Show.Generic (genericShow) -import Data.Tuple (fst) -import Data.Tuple.Nested ((/\)) -import Type.Proxy (Proxy(Proxy)) - -newtype TransactionUnspentOutput = TransactionUnspentOutput - { input :: TransactionInput - , output :: TransactionOutputWithRefScript - } - -_input :: Lens' TransactionUnspentOutput TransactionInput -_input = _Newtype <<< prop (Proxy :: Proxy "input") - -_output :: Lens' TransactionUnspentOutput TransactionOutputWithRefScript -_output = _Newtype <<< prop (Proxy :: Proxy "output") - -derive instance Generic TransactionUnspentOutput _ -derive instance Newtype TransactionUnspentOutput _ -derive newtype instance Eq TransactionUnspentOutput - -instance Show TransactionUnspentOutput where - show = genericShow - -derive newtype instance DecodeAeson TransactionUnspentOutput -derive newtype instance EncodeAeson TransactionUnspentOutput - -lookupTxHash - :: TransactionHash -> UtxoMap -> Array TransactionUnspentOutput -lookupTxHash txHash utxos = - map (\(input /\ output) -> TransactionUnspentOutput { input, output }) - $ filter (fst >>> unwrap >>> _.transactionId >>> eq txHash) - $ - Map.toUnfoldable utxos - -mkTxUnspentOut - :: TransactionInput - -> TransactionOutputWithRefScript - -> TransactionUnspentOutput -mkTxUnspentOut input output = TransactionUnspentOutput { input, output } diff --git a/src/Internal/Plutus/Types/Value.purs b/src/Internal/Plutus/Types/Value.purs deleted file mode 100644 index cf5e67580..000000000 --- a/src/Internal/Plutus/Types/Value.purs +++ /dev/null @@ -1,311 +0,0 @@ -module Ctl.Internal.Plutus.Types.Value - ( Coin(Coin) - , Value - , coinToValue - , flattenMultiAssets - , flattenValue - , geq - , getLovelace - , getValue - , gt - , isCoinZero - , isZero - , leq - , lovelaceValueOf - , lt - , negation - , scale - , singleton - , singleton' - , split - , symbols - , unionWith - , valueOf - , valueToCoin - , valueToCoin' - , adaToken - , pprintValue - ) where - -import Prelude hiding (eq) - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonObject - , decodeAeson - , encodeAeson - , getField - ) -import Control.Apply (lift3) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Helpers (notImplemented, showWithParens) -import Ctl.Internal.Plutus.Types.AssocMap (Map(Map)) as Plutus -import Ctl.Internal.Plutus.Types.AssocMap - ( keys - , lookup - , mapThese - , singleton - , union - ) as Plutus.Map -import Ctl.Internal.Plutus.Types.CurrencySymbol - ( CurrencySymbol - , adaSymbol - , mkCurrencySymbol - ) -import Ctl.Internal.QuickCheck (genPositive, unMaybeGen) -import Ctl.Internal.ToData (class ToData) -import Data.Array (concatMap, filter, replicate) -import Data.ByteArray (ByteArray) -import Data.Either (Either(Left)) -import Data.Foldable (all, fold) -import Data.Generic.Rep (class Generic) -import Data.Lattice (class JoinSemilattice, class MeetSemilattice) -import Data.Log.Tag (TagSet) -import Data.Maybe (Maybe(Nothing), fromJust, fromMaybe) -import Data.Newtype (class Newtype) -import Data.These (These(Both, That, This), these) -import Data.Traversable (sequence) -import Data.Tuple (fst) -import Data.Tuple.Nested (type (/\), (/\)) -import JS.BigInt (BigInt) -import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) -import Test.QuickCheck.Gen (Gen, chooseInt) - -adaToken = mempty -- TODO remove - -type TokenName = ByteArray - -mkTokenName = identity -toTokenName = identity - -newtype Value = Value (Plutus.Map CurrencySymbol (Plutus.Map TokenName BigInt)) - -derive newtype instance ToData Value -derive newtype instance FromData Value - -instance DecodeAeson Value where - decodeAeson = caseAesonObject - (Left $ TypeMismatch "Expected object") - (flip getField "getValue" >=> decodeAeson >>> map Value) - -instance EncodeAeson Value where - encodeAeson (Value mph) = encodeAeson $ encodeAeson - { "getValue": encodeAeson mph } - -arbitrarySingletonValue :: Gen Value -arbitrarySingletonValue = do - currencySymbol <- arbitrary - tokenName <- arbitrary - num <- BigInt.fromInt <$> genPositive - pure $ singleton currencySymbol tokenName num - -instance Arbitrary Value where - arbitrary = do - tokenNum <- chooseInt 0 10 - fold <$> (sequence $ replicate tokenNum arbitrarySingletonValue) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#eq -instance Eq Value where - eq = checkBinRel (==) - -instance Show Value where - show (Value mp) = "(PlutusValue " <> show mp <> ")" - -instance Semigroup Value where - append = unionWith add - -instance Monoid Value where - mempty = Value (Plutus.Map []) - -instance JoinSemilattice Value where - join = unionWith max - -instance MeetSemilattice Value where - meet = unionWith min - --------------------------------------------------------------------------------- --- Coin (Ada Lovelaces) --------------------------------------------------------------------------------- -newtype Coin = Coin BigInt - -derive instance Generic Coin _ -derive instance Newtype Coin _ -derive newtype instance Eq Coin - -instance Show Coin where - show (Coin c) = showWithParens "Coin" c - -instance Semigroup Coin where - append (Coin c1) (Coin c2) = Coin (c1 + c2) - -instance Monoid Coin where - mempty = Coin zero - -instance JoinSemilattice Coin where - join (Coin c1) (Coin c2) = Coin (max c1 c2) - -instance MeetSemilattice Coin where - meet (Coin c1) (Coin c2) = Coin (min c1 c2) - --- | Get the amount of lovelaces in Ada `Coin`. -getLovelace :: Coin -> BigInt -getLovelace (Coin l) = l - --- | Create a `Value` containing only the given `Coin`. -coinToValue :: Coin -> Value -coinToValue (Coin i) = lovelaceValueOf i - --- | Get the `Coin` in the given `Value`. -valueToCoin :: Value -> Coin -valueToCoin v = Coin $ valueOf v adaSymbol adaToken - --- | Get the `Coin` in the given `Value` as a `BigInt`. -valueToCoin' :: Value -> BigInt -valueToCoin' = getLovelace <<< valueToCoin - --- | Check whether an 'Ada' value is zero. -isCoinZero :: Coin -> Boolean -isCoinZero (Coin i) = i == zero - --------------------------------------------------------------------------------- --- Public --------------------------------------------------------------------------------- - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#Value --- | Gets the underlying `Plutus.Types.AssocMap.Map`. -getValue :: Value -> Plutus.Map CurrencySymbol (Plutus.Map TokenName BigInt) -getValue (Value mp) = mp - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#singleton --- | Makes a `Value` containing only the given quantity of the given currency. -singleton :: CurrencySymbol -> TokenName -> BigInt -> Value -singleton cs tn = Value <<< Plutus.Map.singleton cs <<< Plutus.Map.singleton tn - --- | Creates a singleton value given two byte arrays for currency symbol and --- | token name respectively. Returns `Nothing` when trying to create a `Value` --- | with the Ada currency symbol and a non-empty token name. -singleton' :: ByteArray -> ByteArray -> BigInt -> Maybe Value -singleton' cs tn amount - | cs == mempty && tn /= mempty = Nothing - | otherwise = - lift3 singleton (mkCurrencySymbol cs) (pure $ mkTokenName tn) - (pure amount) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#valueOf --- | Gets the quantity of the given currency in the `Value`. -valueOf :: Value -> CurrencySymbol -> TokenName -> BigInt -valueOf (Value mp) cs tn = fromMaybe zero $ - Plutus.Map.lookup cs mp >>= Plutus.Map.lookup tn - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Ada.html#lovelaceValueOf --- | A Value with the given amount of Lovelace (the currency unit). -lovelaceValueOf :: BigInt -> Value -lovelaceValueOf = singleton adaSymbol adaToken - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#local-6989586621679887124 --- | Returns a new `Value` with all amounts multiplied by `s`. -scale :: BigInt -> Value -> Value -scale s (Value mp) = Value (map (map (mul s)) mp) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#symbols --- | The list of `CurrencySymbol`s of a `Value`. -symbols :: Value -> Array CurrencySymbol -symbols (Value mp) = Plutus.Map.keys mp - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#isZero --- | Checks whether a `Value` is zero. -isZero :: Value -> Boolean -isZero = all (all ((==) zero)) <<< getValue - -negation :: Value -> Value -negation (Value mp) = Value (map (map negate) mp) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#split --- | Splits a value into its positive and non-positive parts. The first element of --- | the tuple contains the non-positive parts of the value, the second element --- | contains the positive parts. The convention is non-positive parts are --- | negated to make them positive in the output. -split :: Value -> Value /\ Value -split (Value mp) = - let - neg /\ pos = Plutus.Map.mapThese worker mp - in - negation (Value neg) /\ Value pos - where - worker - :: Plutus.Map TokenName BigInt - -> These (Plutus.Map TokenName BigInt) (Plutus.Map TokenName BigInt) - worker mp' = Both l r - where - l /\ r = - Plutus.Map.mapThese (\a -> if a <= zero then This a else That a) mp' - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionWith --- | Combines `Value` with a binary function on `BigInt`s. -unionWith :: (BigInt -> BigInt -> BigInt) -> Value -> Value -> Value -unionWith f lhs = - Value <<< map (map (these identity identity f)) <<< unionVal lhs - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#flattenValue --- | Converts a value to a simple list, keeping only the non-zero amounts. -flattenValue :: Value -> Array (CurrencySymbol /\ TokenName /\ BigInt) -flattenValue (Value (Plutus.Map arr)) = - flip concatMap arr \(cs /\ (Plutus.Map tokens)) -> - tokens <#> \(tn /\ value) -> - cs /\ tn /\ value - --- | Converts a value to a simple list, keeping only the non-Ada assets --- | with non-zero amounts. -flattenMultiAssets :: Value -> Array (CurrencySymbol /\ TokenName /\ BigInt) -flattenMultiAssets = filter (notEq adaSymbol <<< fst) <<< flattenValue - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#geq --- | Checks whether one `Value` is greater than or equal to another. -geq :: Value -> Value -> Boolean -geq = checkBinRel (>=) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#gt --- | Checks whether one `Value` is strictly greater than another. -gt :: Value -> Value -> Boolean -gt l r = not (isZero l && isZero r) && checkBinRel (>) l r - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#leq --- | Checks whether one `Value` is less than or equal to another. -leq :: Value -> Value -> Boolean -leq = checkBinRel (<=) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#lt --- | Checks whether one `Value` is strictly less than another. -lt :: Value -> Value -> Boolean -lt l r = not (isZero l && isZero r) && checkBinRel (<) l r - --------------------------------------------------------------------------------- --- Internal --------------------------------------------------------------------------------- - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#unionVal --- Combines two 'Value' maps. -unionVal - :: Value - -> Value - -> Plutus.Map CurrencySymbol (Plutus.Map TokenName (These BigInt BigInt)) -unionVal (Value lhs') (Value rhs) = - these (map This) (map That) Plutus.Map.union <$> - Plutus.Map.union lhs' rhs - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkPred -checkPred :: (These BigInt BigInt -> Boolean) -> Value -> Value -> Boolean -checkPred f l r = all (all f) (unionVal l r) - --- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkBinRel --- Check whether a binary relation holds for value pairs of two `Value` maps, --- supplying 0 where a key is only present in one of them. -checkBinRel :: (BigInt -> BigInt -> Boolean) -> Value -> Value -> Boolean -checkBinRel f l r = checkPred (these (flip f zero) (f zero) f) l r - -pprintValue :: Value -> TagSet -pprintValue = notImplemented diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index bded587e3..c22b19ed5 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -4,20 +4,7 @@ module Ctl.Internal.ProcessConstraints import Prelude -import Cardano.Types.TransactionInput (TransactionInput) -import Contract.Hashing (plutusScriptStakeValidatorHash) -import Control.Monad.Error.Class (catchError, throwError) -import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) -import Control.Monad.Reader.Class (asks) -import Control.Monad.State.Trans (get, gets, put, runStateT) -import Control.Monad.Trans.Class (lift) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) - , UnindexedRedeemer(UnindexedRedeemer) - , unindexedRedeemerToRedeemer - ) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef)) -import Ctl.Internal.Cardano.Types.Transaction +import Cardano.Types ( Certificate ( StakeDelegation , PoolRetirement @@ -25,10 +12,54 @@ import Ctl.Internal.Cardano.Types.Transaction , StakeDeregistration , StakeRegistration ) + , DataHash + , NetworkId + , PlutusData + , PlutusScript + , ScriptHash + , ScriptRef(NativeScriptRef, PlutusScriptRef) + , StakeCredential(StakeCredential) , Transaction + , TransactionInput , TransactionOutput(TransactionOutput) + , TransactionUnspentOutput(TransactionUnspentOutput) , TransactionWitnessSet(TransactionWitnessSet) - , _body + , Value(Value) + ) +import Cardano.Types.Address + ( Address(BaseAddress, EnterpriseAddress) + , getPaymentCredential + ) +import Cardano.Types.Coin as Coin +import Cardano.Types.Credential + ( Credential(PubKeyHashCredential, ScriptHashCredential) + , asScriptHash + ) +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.DataHash as Datum +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.NativeScript as NativeScript +import Cardano.Types.OutputDatum (OutputDatum(..)) +import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.Transaction as Transaction +import Cardano.Types.Value (isZero) +import Control.Monad.Error.Class (catchError, throwError) +import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) +import Control.Monad.Reader.Class (asks) +import Control.Monad.State.Trans (get, gets, put, runStateT) +import Control.Monad.Trans.Class (lift) +import Ctl.Internal.BalanceTx.RedeemerIndex + ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) + , UnindexedRedeemer(UnindexedRedeemer) + , unindexedRedeemerToRedeemer + ) +import Ctl.Internal.Contract (getProtocolParameters) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) +import Ctl.Internal.Helpers (liftEither, liftM) +import Ctl.Internal.Lens + ( _body , _certs , _inputs , _isValid @@ -41,29 +72,6 @@ import Ctl.Internal.Cardano.Types.Transaction , _withdrawals , _witnessSet ) -import Ctl.Internal.Cardano.Types.Value - ( Coin(Coin) - , getMultiAsset - , isZero - , mkSingletonValue' - , mpsSymbol - ) -import Ctl.Internal.Contract (getProtocolParameters) -import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) -import Ctl.Internal.Hashing (datumHash) as Hashing -import Ctl.Internal.Helpers (liftEither, liftM) -import Ctl.Internal.NativeScripts (nativeScriptHash) -import Ctl.Internal.Plutus.Conversion - ( fromPlutusTxOutputWithRefScript - , fromPlutusValue - ) -import Ctl.Internal.Plutus.Types.Credential - ( Credential(ScriptCredential, PubKeyCredential) - ) -import Ctl.Internal.Plutus.Types.Transaction (TransactionOutputWithRefScript) as Plutus -import Ctl.Internal.Plutus.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError ( CannotSatisfyAny @@ -71,8 +79,6 @@ import Ctl.Internal.ProcessConstraints.Error , CannotWithdrawRewardsPlutusScript , CannotWithdrawRewardsPubKey , DatumWrongHash - , CannotMakeValue - , MintingPolicyHashNotCurrencySymbol , CannotMintZero , ExpectedPlutusScriptGotNativeScript , CannotFindDatum @@ -80,6 +86,7 @@ import Ctl.Internal.ProcessConstraints.Error , CannotGetValidatorHashFromAddress , TxOutRefWrongType , CannotConvertPOSIXTimeRange + , NumericOverflow , WrongRefScriptHash , ValidatorHashNotFound , MintingPolicyNotFound @@ -111,28 +118,12 @@ import Ctl.Internal.QueryM.Pools ( getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards ) -import Ctl.Internal.Scripts - ( mintingPolicyHash - , nativeScriptStakeValidatorHash - , validatorHash - , validatorHashEnterpriseAddress - ) -import Ctl.Internal.Serialization.Address - ( NetworkId - , StakeCredential - , baseAddress - , baseAddressToAddress - , keyHashCredential - , scriptHashCredential - ) -import Ctl.Internal.Serialization.Hash (ScriptHash) import Ctl.Internal.Transaction ( attachDatum , attachNativeScript , attachPlutusScript , setScriptDataHash ) -import Ctl.Internal.Types.Datum (DataHash, Datum) import Ctl.Internal.Types.Interval ( POSIXTimeRange , always @@ -140,20 +131,11 @@ import Ctl.Internal.Types.Interval , isEmpty , posixTimeRangeToTransactionValidity ) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) -import Ctl.Internal.Types.RewardAddress - ( stakePubKeyHashRewardAddress - , stakeValidatorHashRewardAddress - ) as RewardAddress -import Ctl.Internal.Types.ScriptLookups (ScriptLookups) -import Ctl.Internal.Types.Scripts +import Ctl.Internal.Types.MintingPolicy ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) - , MintingPolicyHash - , Validator - , ValidatorHash ) +import Ctl.Internal.Types.MintingPolicy as MintingPolicy +import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.TxConstraints ( DatumPresence(DatumWitness, DatumInline) , InputWithScriptRef(SpendInput, RefInput) @@ -197,21 +179,21 @@ import Data.Array (mapMaybe, singleton, (:)) as Array import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either, hush, isRight, note) import Data.Foldable (foldM) -import Data.Lens (non, (%=), (%~), (.=), (.~), (<>=)) +import Data.Lens (_Just, (%=), (%~), (.=), (.~), (<>=)) import Data.Lens.Getter (to, use) import Data.Lens.Iso.Newtype (_Newtype) import Data.List (List(Nil, Cons)) import Data.Map (Map, empty, fromFoldable, lookup, union) import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromMaybe, maybe) -import Data.Newtype (class Newtype, over, unwrap, wrap) -import Data.Set (insert) as Set +import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, maybe) +import Data.Newtype (over, unwrap, wrap) import Data.Traversable (for, traverse_) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (throw) +import Partial.Unsafe (unsafePartial) import Prelude (join) as Bind -- The constraints don't precisely match those of Plutus: @@ -235,12 +217,13 @@ processLookupsAndConstraints lookups <- use _lookups <#> unwrap let - mps = lookups.mps - scripts = lookups.scripts - mpsHashes = map mintingPolicyHash mps - validatorHashes = map validatorHash scripts - mpsMap = fromFoldable $ zip mpsHashes mps - osMap = fromFoldable $ zip validatorHashes scripts + mpsMap = + fromFoldable $ + zip (MintingPolicy.hash <$> lookups.mintingPolicies) + lookups.mintingPolicies + osMap = + fromFoldable $ + zip (PlutusScript.hash <$> lookups.scripts) lookups.scripts timeConstraintsSolved <- except $ resumeTimeConstraints constraints @@ -278,7 +261,7 @@ runConstraintsM lookups txConstraints = do let initCps :: ConstraintProcessingState initCps = - { transaction: mempty + { transaction: Transaction.empty , usedUtxos: Map.empty , valueSpentBalancesInputs: ValueSpentBalances { required: mempty, provided: mempty } @@ -318,30 +301,34 @@ addFakeScriptDataHash = runExceptT do -- | See note [Balance of value spent] addMissingValueSpent :: ConstraintsM (Either MkUnbalancedTxError Unit) -addMissingValueSpent = do - missing <- gets totalMissingValue - networkId <- getNetworkId - if isZero missing then pure $ Right unit - else runExceptT do +addMissingValueSpent = runExceptT do + missing <- liftEither =<< (note NumericOverflow <$> gets totalMissingValue) + networkId <- lift getNetworkId + if isZero missing then pure unit + else do -- add 'missing' to the transaction's outputs. This ensures that the -- wallet will add a corresponding input when balancing the -- transaction. -- Step 4 of the process described in [Balance of value spent] lookups <- use _lookups <#> unwrap let - pkh' = lookups.ownPaymentPubKeyHash - skh' = lookups.ownStakePubKeyHash + pkh' = map unwrap lookups.ownPaymentPubKeyHash + skh' = map unwrap lookups.ownStakePubKeyHash -- Potential fix me: This logic may be suspect: txOutAddress <- case pkh', skh' of - Nothing, Nothing -> throwError OwnPubKeyAndStakeKeyMissing - Just pkh, Just skh -> pure $ payPubKeyHashBaseAddress networkId pkh skh - Just pkh, Nothing -> pure $ payPubKeyHashEnterpriseAddress networkId pkh - Nothing, Just skh -> pure $ stakePubKeyHashRewardAddress networkId skh + Just pkh, Just skh -> pure $ BaseAddress + { networkId + , paymentCredential: wrap $ PubKeyHashCredential pkh + , stakeCredential: wrap $ PubKeyHashCredential skh + } + Just pkh, Nothing -> pure $ EnterpriseAddress + { networkId, paymentCredential: wrap $ PubKeyHashCredential pkh } + Nothing, _ -> throwError OwnPubKeyAndStakeKeyMissing let txOut = TransactionOutput { address: txOutAddress , amount: missing - , datum: NoOutputDatum + , datum: Nothing , scriptRef: Nothing } _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut @@ -351,12 +338,10 @@ updateUsedUtxos updateUsedUtxos = runExceptT do txOutputs <- use _lookups <#> unwrap >>> _.txOutputs refScriptsUtxoMap <- use _refScriptsUtxoMap - networkId <- lift getNetworkId let cTxOutputs :: Map TransactionInput TransactionOutput cTxOutputs = (txOutputs `union` refScriptsUtxoMap) - <#> fromPlutusTxOutputWithRefScript networkId -- Left bias towards original map, hence `flip`: _cpsUsedUtxos %= flip union cTxOutputs @@ -400,54 +385,46 @@ lookupTxOutRef lookupTxOutRef oref = case _ of Just inputWithRefScript -> lookup oref (utxoWithScriptRef inputWithRefScript) - # maybe (lookupTxOutRef oref Nothing) (map Right <<< convertTxOutput) + # maybe (lookupTxOutRef oref Nothing) (pure <<< Right) Nothing -> runExceptT do utxos <- use _lookups <#> unwrap >>> _.txOutputs - txOutput <- liftM (TxOutRefNotFound oref) (lookup oref utxos) - lift $ convertTxOutput txOutput - where - convertTxOutput - :: Plutus.TransactionOutputWithRefScript -> ConstraintsM TransactionOutput - convertTxOutput txOutput = - flip fromPlutusTxOutputWithRefScript txOutput <$> getNetworkId + liftM (TxOutRefNotFound oref) (lookup oref utxos) lookupDatum :: DataHash - -> ConstraintsM (Either MkUnbalancedTxError Datum) + -> ConstraintsM (Either MkUnbalancedTxError PlutusData) lookupDatum dh = do otherDt <- use _lookups <#> unwrap >>> _.datums pure $ note (DatumNotFound dh) $ lookup dh otherDt lookupMintingPolicy - :: MintingPolicyHash - -> Map MintingPolicyHash MintingPolicy + :: ScriptHash + -> Map ScriptHash MintingPolicy -> Either MkUnbalancedTxError MintingPolicy lookupMintingPolicy mph mpsMap = note (MintingPolicyNotFound mph) $ lookup mph mpsMap lookupValidator - :: ValidatorHash - -> Map ValidatorHash Validator - -> Either MkUnbalancedTxError Validator + :: ScriptHash + -> Map ScriptHash PlutusScript + -> Either MkUnbalancedTxError PlutusScript lookupValidator vh osMap = note (ValidatorHashNotFound vh) $ lookup vh osMap processScriptRefUnspentOut - :: forall (scriptHash :: Type) - . Newtype scriptHash ScriptHash - => scriptHash + :: ScriptHash -> InputWithScriptRef -> ConstraintsM (Either MkUnbalancedTxError Unit) processScriptRefUnspentOut scriptHash inputWithRefScript = do unspentOut <- case inputWithRefScript of SpendInput unspentOut -> do - _cpsTransaction <<< _body <<< _inputs %= Set.insert - (_.input <<< unwrap $ unspentOut) + _cpsTransaction <<< _body <<< _inputs <>= + [ _.input <<< unwrap $ unspentOut ] pure unspentOut RefInput unspentOut -> do let refInput = (unwrap unspentOut).input - _cpsTransaction <<< _body <<< _referenceInputs %= Set.insert refInput + _cpsTransaction <<< _body <<< _referenceInputs <>= [ refInput ] pure unspentOut updateRefScriptsUtxoMap unspentOut @@ -464,13 +441,14 @@ processScriptRefUnspentOut scriptHash inputWithRefScript = do checkScriptRef (TransactionUnspentOutput { output }) = let refScriptHash :: Maybe ScriptHash - refScriptHash = _.referenceScript $ unwrap $ (unwrap output).output + refScriptHash = (unwrap output).scriptRef <#> case _ of + NativeScriptRef ns -> NativeScript.hash ns + PlutusScriptRef ps -> PlutusScript.hash ps err :: ConstraintsM (Either MkUnbalancedTxError Unit) - err = pure $ throwError $ WrongRefScriptHash refScriptHash - (unwrap output).output + err = pure $ throwError $ WrongRefScriptHash refScriptHash output in - if Just (unwrap scriptHash) /= refScriptHash then err + if Just scriptHash /= refScriptHash then err else pure (Right unit) checkRefNative @@ -478,7 +456,7 @@ checkRefNative -> ConstraintsM (Either MkUnbalancedTxError Boolean) checkRefNative scriptRef = let - out = (unwrap ((unwrap uout).output)).output + out = (unwrap uout).output in pure $ note (WrongRefScriptHash Nothing out) $ isNative (unwrap (unwrap uout).output).scriptRef @@ -498,8 +476,8 @@ checkRefNative scriptRef = -- | possible. Fails if a hash is missing from the lookups, or if an output -- | of the wrong type is spent. processConstraint - :: Map MintingPolicyHash MintingPolicy - -> Map ValidatorHash Validator + :: Map ScriptHash MintingPolicy + -> Map ScriptHash PlutusScript -> TxConstraint -> ConstraintsM (Either MkUnbalancedTxError Unit) processConstraint mpsMap osMap c = do @@ -525,42 +503,41 @@ processConstraint mpsMap osMap c = do -- the corresponding `paymentPubKey` lookup. In the next major version, -- we might wish to revise this -- See https://github.com/Plutonomicon/cardano-transaction-lib/issues/569 - _cpsTransaction <<< _body <<< _requiredSigners <>= Just + _cpsTransaction <<< _body <<< _requiredSigners <>= [ wrap $ unwrap $ unwrap pkh ] - MustSpendAtLeast plutusValue -> do - let value = fromPlutusValue plutusValue + MustSpendAtLeast value -> do runExceptT $ _valueSpentBalancesInputs <>= requireValue value - MustProduceAtLeast plutusValue -> do - let value = fromPlutusValue plutusValue + MustProduceAtLeast value -> do runExceptT $ _valueSpentBalancesOutputs <>= requireValue value MustSpendPubKeyOutput txo -> runExceptT do TransactionOutput { amount } <- ExceptT $ lookupTxOutRef txo Nothing -- POTENTIAL FIX ME: Plutus has Tx.TxIn and Tx.PubKeyTxIn -- TxIn -- keeps track TransactionInput and TxInType (the input type, whether -- consuming script, public key or simple script) - _cpsTransaction <<< _body <<< _inputs %= Set.insert txo + _cpsTransaction <<< _body <<< _inputs <>= [ txo ] _valueSpentBalancesInputs <>= provideValue amount MustSpendScriptOutput txo red scriptRefUnspentOut -> runExceptT do txOut <- ExceptT $ lookupTxOutRef txo scriptRefUnspentOut case txOut of - TransactionOutput { datum: NoOutputDatum } -> + TransactionOutput { datum: Nothing } -> throwError $ TxOutRefWrongType txo TransactionOutput { address, amount, datum: datum' } -> do vHash <- liftM (CannotGetValidatorHashFromAddress address) - (addressPaymentValidatorHash address) + (getPaymentCredential address >>= unwrap >>> asScriptHash) case scriptRefUnspentOut of Nothing -> do plutusScript <- - except $ unwrap <$> lookupValidator vHash osMap - lift $ attachToCps attachPlutusScript plutusScript + except $ lookupValidator vHash osMap + lift $ attachToCps (map pure <<< attachPlutusScript) + plutusScript Just scriptRefUnspentOut' -> ExceptT $ processScriptRefUnspentOut vHash scriptRefUnspentOut' -- Note: Plutus uses `TxIn` to attach a redeemer and datum. -- Use the datum hash inside the lookup case datum' of - OutputDatumHash dHash -> do + Just (OutputDatumHash dHash) -> do dat <- ExceptT do mDatumLookup <- lookupDatum dHash if isRight mDatumLookup then @@ -571,9 +548,9 @@ processConstraint mpsMap osMap c = do >>> note (CannotQueryDatum dHash) lift $ addDatum dat - OutputDatum _ -> pure unit - NoOutputDatum -> throwError CannotFindDatum - _cpsTransaction <<< _body <<< _inputs %= Set.insert txo + Just (OutputDatum _) -> pure unit + Nothing -> throwError CannotFindDatum + _cpsTransaction <<< _body <<< _inputs <>= [ txo ] let uiRedeemer = UnindexedRedeemer { purpose: ForSpend txo @@ -582,195 +559,200 @@ processConstraint mpsMap osMap c = do _redeemers <>= [ uiRedeemer ] _valueSpentBalancesInputs <>= provideValue amount MustSpendNativeScriptOutput txo ns -> runExceptT do - _cpsTransaction <<< _body <<< _inputs %= Set.insert txo + _cpsTransaction <<< _body <<< _inputs <>= [ txo ] lift $ attachToCps (map pure <<< attachNativeScript) ns MustReferenceOutput refInput -> runExceptT do - _cpsTransaction <<< _body <<< _referenceInputs %= Set.insert refInput - MustMintValue mpsHash red tn i scriptRefUnspentOut -> runExceptT do + _cpsTransaction <<< _body <<< _referenceInputs <>= [ refInput ] + MustMintValue scriptHash red tn i scriptRefUnspentOut -> runExceptT do case scriptRefUnspentOut of Nothing -> do - mp <- except $ lookupMintingPolicy mpsHash mpsMap + mp <- except $ lookupMintingPolicy scriptHash mpsMap ( case mp of PlutusMintingPolicy p -> ( lift $ attachToCps - attachPlutusScript + (map pure <<< attachPlutusScript) p ) NativeMintingPolicy _ -> throwError $ - ExpectedPlutusScriptGotNativeScript mpsHash + ExpectedPlutusScriptGotNativeScript scriptHash ) Just scriptRefUnspentOut' -> do isNative <- ExceptT $ checkRefNative scriptRefUnspentOut' - when isNative $ throwError $ ExpectedPlutusScriptGotNativeScript - mpsHash - (ExceptT $ processScriptRefUnspentOut mpsHash scriptRefUnspentOut') + when isNative + $ throwError + $ ExpectedPlutusScriptGotNativeScript scriptHash + (ExceptT $ processScriptRefUnspentOut scriptHash scriptRefUnspentOut') - cs <- - liftM (MintingPolicyHashNotCurrencySymbol mpsHash) (mpsSymbol mpsHash) - let value = mkSingletonValue' cs tn + let + mkValue = Value Coin.zero <<< MultiAsset.singleton scriptHash tn + mint = Mint.singleton scriptHash tn i -- If i is negative we are burning tokens. The tokens burned must -- be provided as an input. So we add the value burnt to -- 'valueSpentBalancesInputs'. If i is positive then new tokens are -- created which must be added to 'valueSpentBalancesOutputs'. -- If i is zero we raise error, because of -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1156 - mintVal <- - if i < zero then do - v <- liftM (CannotMakeValue cs tn i) (value $ negate i) - _valueSpentBalancesInputs <>= provideValue v - pure $ map getMultiAsset $ value i - else if i == zero then do - throwError $ CannotMintZero cs tn - else do - v <- liftM (CannotMakeValue cs tn i) (value i) - _valueSpentBalancesOutputs <>= provideValue v - pure $ map getMultiAsset $ value i + if Int.toBigInt i < zero then do + let value = mkValue $ unsafePartial $ fromJust $ Int.asNegative i + _valueSpentBalancesInputs <>= provideValue value + else if Int.toBigInt i == zero then do + throwError $ CannotMintZero scriptHash tn + else do + let value = mkValue $ unsafePartial $ fromJust $ Int.asPositive i + _valueSpentBalancesOutputs <>= provideValue value _redeemers <>= - [ UnindexedRedeemer { purpose: ForMint mpsHash, datum: unwrap red } ] + [ UnindexedRedeemer { purpose: ForMint scriptHash, datum: unwrap red } ] -- Remove mint redeemers from array before reindexing. - _cpsTransaction <<< _body <<< _mint <>= map wrap mintVal + _cpsTransaction <<< _body <<< _mint <<< _Just <>= mint MustMintValueUsingNativeScript ns tn i -> runExceptT do - let mpHash = wrap <<< unwrap <<< nativeScriptHash $ ns - + let + cs = NativeScript.hash ns + mkValue = Value Coin.zero <<< MultiAsset.singleton cs tn + mint = Mint.singleton cs tn i lift $ attachToCps (map pure <<< attachNativeScript) ns - - cs <- liftM (MintingPolicyHashNotCurrencySymbol mpHash) (mpsSymbol mpHash) - let value = mkSingletonValue' cs tn -- If i is negative we are burning tokens. The tokens burned must -- be provided as an input. So we add the value burnt to -- 'valueSpentBalancesInputs'. If i is positive then new tokens are -- created which must be added to 'valueSpentBalancesOutputs'. - mintVal <- - if i < zero then do - v <- liftM (CannotMakeValue cs tn i) (value $ negate i) - _valueSpentBalancesInputs <>= provideValue v - pure $ map getMultiAsset $ value i - else do - v <- liftM (CannotMakeValue cs tn i) (value i) - _valueSpentBalancesOutputs <>= provideValue v - pure $ map getMultiAsset $ value i - - _cpsTransaction <<< _body <<< _mint <>= map wrap mintVal - - MustPayToPubKeyAddress pkh skh mDatum scriptRef plutusValue -> do + if Int.toBigInt i < zero then do + let value = mkValue $ unsafePartial $ fromJust $ Int.asNegative i + _valueSpentBalancesInputs <>= provideValue value + else if Int.toBigInt i == zero then do + throwError $ CannotMintZero cs tn + else do + let value = mkValue $ unsafePartial $ fromJust $ Int.asPositive i + _valueSpentBalancesOutputs <>= provideValue value + + _cpsTransaction <<< _body <<< _mint <>= Just mint + + MustPayToPubKeyAddress pkh skh mDatum scriptRef amount -> do networkId <- getNetworkId - let amount = fromPlutusValue plutusValue runExceptT do -- If non-inline datum is presented, add it to 'datumWitnesses' and -- Array of datums. - datum' <- for mDatum \(dat /\ datp) -> do + datum <- for mDatum \(dat /\ datp) -> do when (datp == DatumWitness) $ lift $ addDatum dat pure $ outputDatum dat datp let address = case skh of - Just skh' -> payPubKeyHashBaseAddress networkId pkh skh' - Nothing -> payPubKeyHashEnterpriseAddress networkId pkh + Just skh' -> BaseAddress + { networkId + , paymentCredential: wrap $ PubKeyHashCredential $ unwrap pkh + , stakeCredential: wrap $ PubKeyHashCredential $ unwrap skh' + } + Nothing -> EnterpriseAddress + { networkId + , paymentCredential: wrap $ PubKeyHashCredential $ unwrap pkh + } txOut = TransactionOutput { address , amount - , datum: fromMaybe NoOutputDatum datum' + , datum , scriptRef: scriptRef } _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut _valueSpentBalancesOutputs <>= provideValue amount - MustPayToScript vlh mbCredential dat datp scriptRef plutusValue -> do + MustPayToScript vlh mbCredential dat datp scriptRef amount -> do networkId <- getNetworkId - let amount = fromPlutusValue plutusValue runExceptT do let datum' = outputDatum dat datp txOut = TransactionOutput { address: case mbCredential of - Nothing -> validatorHashEnterpriseAddress networkId vlh - Just cred -> baseAddressToAddress $ baseAddress - { network: networkId - , paymentCred: scriptHashCredential (unwrap vlh) - , delegationCred: credentialToStakeCredential cred + Nothing -> EnterpriseAddress + { networkId + , paymentCredential: wrap $ ScriptHashCredential vlh + } + Just cred -> BaseAddress + { networkId + , paymentCredential: wrap $ ScriptHashCredential vlh + , stakeCredential: wrap cred } , amount - , datum: datum' + , datum: Just datum' , scriptRef: scriptRef } -- Note we don't `addDatum` as this included as part of `mustPayToScript` -- constraint already. _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut _valueSpentBalancesOutputs <>= provideValue amount - MustPayToNativeScript nsh mbCredential plutusValue -> do + MustPayToNativeScript nsh mbCredential amount -> do networkId <- getNetworkId - let amount = fromPlutusValue plutusValue runExceptT do let txOut = TransactionOutput { address: case mbCredential of - Nothing -> validatorHashEnterpriseAddress networkId - (wrap $ unwrap nsh) - Just cred -> baseAddressToAddress $ baseAddress - { network: networkId - , paymentCred: scriptHashCredential (unwrap nsh) - , delegationCred: credentialToStakeCredential cred + Nothing -> EnterpriseAddress + { networkId + , paymentCredential: wrap $ ScriptHashCredential nsh + } + Just cred -> BaseAddress + { networkId + , paymentCredential: wrap $ ScriptHashCredential nsh + , stakeCredential: wrap cred } , amount - , datum: NoOutputDatum + , datum: Nothing , scriptRef: Nothing } _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut _valueSpentBalancesOutputs <>= provideValue amount MustHashDatum dh dt -> do - let dh' = Hashing.datumHash dt + let dh' = hashPlutusData dt if dh' == dh then pure <$> addDatum dt else pure $ throwError $ DatumWrongHash dh dt MustRegisterStakePubKey skh -> runExceptT do void $ lift $ addCertificate $ StakeRegistration - $ keyHashCredential - $ unwrap + $ StakeCredential + $ PubKeyHashCredential $ unwrap skh MustDeregisterStakePubKey pubKey -> runExceptT do void $ lift $ addCertificate $ StakeDeregistration - $ keyHashCredential - $ unwrap + $ StakeCredential + $ PubKeyHashCredential $ unwrap pubKey MustRegisterStakeScript scriptHash -> runExceptT do void $ lift $ addCertificate $ StakeRegistration - $ scriptHashCredential - $ unwrap scriptHash + $ StakeCredential + $ ScriptHashCredential scriptHash MustDeregisterStakePlutusScript plutusScript redeemerData -> runExceptT do let - cert = StakeDeregistration - ( scriptHashCredential $ unwrap $ plutusScriptStakeValidatorHash - plutusScript + cert = StakeDeregistration $ StakeCredential $ ScriptHashCredential + ( PlutusScript.hash plutusScript ) _redeemers <>= [ UnindexedRedeemer { purpose: ForCert cert, datum: unwrap redeemerData } ] void $ lift $ addCertificate cert - lift $ attachToCps attachPlutusScript (unwrap plutusScript) + lift $ attachToCps (map pure <<< attachPlutusScript) plutusScript MustDeregisterStakeNativeScript stakeValidator -> do void $ addCertificate $ StakeDeregistration - $ scriptHashCredential - $ unwrap - $ nativeScriptStakeValidatorHash - stakeValidator - pure <$> attachToCps (map pure <<< attachNativeScript) - (unwrap stakeValidator) + $ wrap + $ ScriptHashCredential + $ NativeScript.hash stakeValidator + pure <$> attachToCps (map pure <<< attachNativeScript) stakeValidator MustRegisterPool poolParams -> runExceptT do void $ lift $ addCertificate $ PoolRegistration poolParams MustRetirePool poolKeyHash epoch -> runExceptT do void $ lift $ addCertificate $ PoolRetirement { poolKeyHash, epoch } MustDelegateStakePubKey stakePubKeyHash poolKeyHash -> runExceptT do void $ lift $ addCertificate $ - StakeDelegation (keyHashCredential $ unwrap $ unwrap $ stakePubKeyHash) + StakeDelegation + ( StakeCredential $ PubKeyHashCredential $ unwrap $ + stakePubKeyHash + ) poolKeyHash - MustDelegateStakePlutusScript stakeValidator redeemerData poolKeyHash -> + MustDelegateStakePlutusScript stakeValidator redeemerData poolKeyHash -> do runExceptT do let cert = StakeDelegation - ( scriptHashCredential $ unwrap $ plutusScriptStakeValidatorHash - stakeValidator + ( StakeCredential $ ScriptHashCredential + $ PlutusScript.hash stakeValidator ) poolKeyHash lift $ addCertificate cert @@ -778,15 +760,14 @@ processConstraint mpsMap osMap c = do [ UnindexedRedeemer { purpose: ForCert cert, datum: unwrap redeemerData } ] - lift $ attachToCps attachPlutusScript (unwrap stakeValidator) + lift $ attachToCps (map pure <<< attachPlutusScript) stakeValidator MustDelegateStakeNativeScript stakeValidator poolKeyHash -> do void $ addCertificate $ StakeDelegation - ( scriptHashCredential $ unwrap $ nativeScriptStakeValidatorHash + ( StakeCredential $ ScriptHashCredential $ NativeScript.hash stakeValidator ) poolKeyHash - pure <$> attachToCps (map pure <<< attachNativeScript) - (unwrap stakeValidator) + pure <$> attachToCps (map pure <<< attachNativeScript) stakeValidator MustWithdrawStakePubKey spkh -> runExceptT do networkId <- lift getNetworkId mbRewards <- lift $ lift $ wrapQueryM $ getPubKeyHashDelegationsAndRewards @@ -795,42 +776,49 @@ processConstraint mpsMap osMap c = do mbRewards let rewardAddress = - RewardAddress.stakePubKeyHashRewardAddress networkId spkh - _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= - Map.insert rewardAddress (fromMaybe (Coin zero) rewards) + { networkId + , stakeCredential: wrap $ PubKeyHashCredential $ unwrap spkh + } + _cpsTransaction <<< _body <<< _withdrawals %= + Map.insert rewardAddress (fromMaybe Coin.zero rewards) MustWithdrawStakePlutusScript stakeValidator redeemerData -> runExceptT do - let hash = plutusScriptStakeValidatorHash stakeValidator + let hash = PlutusScript.hash stakeValidator networkId <- lift getNetworkId - mbRewards <- lift $ lift $ wrapQueryM $ - getValidatorHashDelegationsAndRewards hash + mbRewards <- lift $ lift $ wrapQueryM + $ getValidatorHashDelegationsAndRewards + $ wrap hash let - rewardAddress = RewardAddress.stakeValidatorHashRewardAddress networkId - hash + rewardAddress = + { networkId + , stakeCredential: StakeCredential $ ScriptHashCredential hash + } ({ rewards }) <- ExceptT $ pure $ note (CannotWithdrawRewardsPlutusScript stakeValidator) mbRewards - _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= - Map.insert rewardAddress (fromMaybe (Coin zero) rewards) + _cpsTransaction <<< _body <<< _withdrawals %= + Map.insert rewardAddress (fromMaybe Coin.zero rewards) _redeemers <>= [ UnindexedRedeemer { purpose: ForReward rewardAddress, datum: unwrap redeemerData } ] - lift $ attachToCps attachPlutusScript (unwrap stakeValidator) + lift $ attachToCps (map pure <<< attachPlutusScript) stakeValidator MustWithdrawStakeNativeScript stakeValidator -> runExceptT do - let hash = nativeScriptStakeValidatorHash stakeValidator + let hash = NativeScript.hash stakeValidator networkId <- lift getNetworkId - mbRewards <- lift $ lift $ wrapQueryM $ - getValidatorHashDelegationsAndRewards hash + mbRewards <- lift $ lift $ wrapQueryM + $ getValidatorHashDelegationsAndRewards + $ wrap hash let - rewardAddress = RewardAddress.stakeValidatorHashRewardAddress networkId - hash + rewardAddress = + { networkId + , stakeCredential: StakeCredential $ ScriptHashCredential hash + } ({ rewards }) <- ExceptT $ pure $ note (CannotWithdrawRewardsNativeScript stakeValidator) mbRewards - _cpsTransaction <<< _body <<< _withdrawals <<< non Map.empty %= - Map.insert rewardAddress (fromMaybe (Coin zero) rewards) - lift $ attachToCps (map pure <<< attachNativeScript) - (unwrap stakeValidator) + _cpsTransaction <<< _body <<< _withdrawals %= + Map.insert rewardAddress (fromMaybe Coin.zero rewards) + lift $ attachToCps (map pure <<< attachNativeScript) stakeValidator MustSatisfyAnyOf xs -> do cps <- get let @@ -862,17 +850,12 @@ processConstraint mpsMap osMap c = do _cpsTransaction <<< _isValid .= false where outputDatum - :: Datum + :: PlutusData -> DatumPresence -> OutputDatum outputDatum dat = case _ of DatumInline -> OutputDatum dat - DatumWitness -> OutputDatumHash $ Hashing.datumHash dat - -credentialToStakeCredential :: Credential -> StakeCredential -credentialToStakeCredential cred = case cred of - PubKeyCredential pubKeyHash -> keyHashCredential (unwrap pubKeyHash) - ScriptCredential scriptHash -> scriptHashCredential (unwrap scriptHash) + DatumWitness -> OutputDatumHash $ Datum.hashPlutusData dat -- Attach a Datum, Redeemer, or PlutusScript depending on the handler. They -- share error type anyway. @@ -888,10 +871,10 @@ attachToCps handler object = do -- Attaches datum to the transaction and to Array of datums in the state. addDatum - :: Datum + :: PlutusData -> ConstraintsM Unit addDatum dat = do - attachToCps attachDatum dat + attachToCps (map pure <<< attachDatum) dat _datums <>= Array.singleton dat -- | Returns an index pointing to the location of the newly inserted certificate @@ -900,7 +883,7 @@ addCertificate :: Certificate -> ConstraintsM Unit addCertificate cert = do - _cpsTransaction <<< _body <<< _certs <<< non [] %= Array.(:) cert + _cpsTransaction <<< _body <<< _certs %= Array.(:) cert getNetworkId :: ConstraintsM NetworkId @@ -929,4 +912,4 @@ mkUnbalancedTxImpl scriptLookups txConstraints = stripDatumsRedeemers :: Transaction -> Transaction stripDatumsRedeemers = _witnessSet %~ over TransactionWitnessSet - _ { plutusData = Nothing, redeemers = Nothing } + _ { plutusData = [], redeemers = [] } diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 74875541c..ecb490fc3 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -4,10 +4,11 @@ import Prelude import Cardano.AsCbor (encodeCbor) import Cardano.Serialization.Lib (toBytes) -import Cardano.Types (DataHash) +import Cardano.Types (DataHash, NativeScript) import Cardano.Types.Address (Address) import Cardano.Types.Address as Address import Cardano.Types.AssetName (AssetName, fromAssetName) +import Cardano.Types.Int as Int import Cardano.Types.NativeScript (pprintNativeScript) import Cardano.Types.PlutusData (PlutusData) import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) @@ -24,12 +25,6 @@ import Ctl.Internal.Types.Interval , PosixTimeToSlotError , explainPosixTimeToSlotError ) -import Ctl.Internal.Types.Scripts - ( MintingPolicyHash - , NativeScriptStakeValidator - , PlutusScriptStakeValidator - , ValidatorHash - ) import Data.ByteArray (byteArrayToHex) import Data.Generic.Rep (class Generic) import Data.Log.Tag (tagSetTag) @@ -38,7 +33,6 @@ import Data.Newtype (unwrap) import Data.Show.Generic (genericShow) import Data.Tuple.Nested ((/\)) import Data.UInt as UInt -import JS.BigInt (BigInt) data MkUnbalancedTxError = CannotFindDatum @@ -47,22 +41,23 @@ data MkUnbalancedTxError | CannotSolveTimeConstraints POSIXTimeRange POSIXTimeRange | CannotGetMintingPolicyScriptIndex -- Should be impossible | CannotGetValidatorHashFromAddress Address -- Get `ValidatorHash` from internal `Address` - | CannotMakeValue ScriptHash AssetName BigInt + | CannotMakeValue ScriptHash AssetName Int.Int | CannotWithdrawRewardsPubKey StakePubKeyHash - | CannotWithdrawRewardsPlutusScript PlutusScriptStakeValidator - | CannotWithdrawRewardsNativeScript NativeScriptStakeValidator + | CannotWithdrawRewardsPlutusScript PlutusScript + | CannotWithdrawRewardsNativeScript NativeScript | DatumNotFound DataHash | DatumWrongHash DataHash PlutusData - | MintingPolicyHashNotCurrencySymbol MintingPolicyHash - | MintingPolicyNotFound MintingPolicyHash + | MintingPolicyHashNotCurrencySymbol ScriptHash + | MintingPolicyNotFound ScriptHash | OwnPubKeyAndStakeKeyMissing | TxOutRefNotFound TransactionInput | TxOutRefWrongType TransactionInput - | ValidatorHashNotFound ValidatorHash + | ValidatorHashNotFound ScriptHash | WrongRefScriptHash (Maybe ScriptHash) TransactionOutput | CannotSatisfyAny - | ExpectedPlutusScriptGotNativeScript MintingPolicyHash + | ExpectedPlutusScriptGotNativeScript ScriptHash | CannotMintZero ScriptHash AssetName + | NumericOverflow derive instance Generic MkUnbalancedTxError _ derive instance Eq MkUnbalancedTxError @@ -105,10 +100,10 @@ explainMkUnbalancedTxError = case _ of <> " is not registered" CannotWithdrawRewardsPlutusScript pssv -> "Cannot withdraw rewards from Plutus staking script " <> - prettyPlutusScript (unwrap pssv) + prettyPlutusScript pssv CannotWithdrawRewardsNativeScript nssv -> pprintTagSet "Cannot withdraw rewards from native staking script " - ("NativeScript" `tagSetTag` pprintNativeScript (unwrap nssv)) + ("NativeScript" `tagSetTag` pprintNativeScript nssv) DatumNotFound hash -> "Datum with hash " <> byteArrayToHex (unwrap $ encodeCbor hash) <> @@ -119,11 +114,11 @@ explainMkUnbalancedTxError = case _ of <> byteArrayToHex (unwrap $ encodeCbor dh) MintingPolicyHashNotCurrencySymbol mph -> "Minting policy hash " - <> byteArrayToHex (unwrap $ encodeCbor $ unwrap mph) + <> byteArrayToHex (unwrap $ encodeCbor mph) <> " is not a CurrencySymbol. Please check the validity of the byte representation." MintingPolicyNotFound mp -> "Minting policy with hash " - <> byteArrayToHex (unwrap $ encodeCbor $ unwrap mp) + <> byteArrayToHex (unwrap $ encodeCbor mp) <> " not found in a set of minting policies" OwnPubKeyAndStakeKeyMissing -> "Could not build own address: both payment pubkey and stake pubkey are missing" @@ -136,7 +131,7 @@ explainMkUnbalancedTxError = case _ of <> prettyTxIn ti <> "\nContext: we were trying to spend a script output." ValidatorHashNotFound vh -> "Cannot find validator hash: " <> - byteArrayToHex (unwrap $ encodeCbor $ unwrap vh) + byteArrayToHex (unwrap $ encodeCbor vh) WrongRefScriptHash msh tout -> case msh of Nothing -> pprintTagSet "Output is missing a reference script hash" ("TransactionOutput" `tagSetTag` pprintTransactionOutput tout) @@ -151,13 +146,14 @@ explainMkUnbalancedTxError = case _ of <> "2. All alternatives of a 'mustSatisfyAnyOf' have failed." ExpectedPlutusScriptGotNativeScript mph -> "Expected a Plutus script, but " - <> byteArrayToHex (unwrap $ encodeCbor $ unwrap mph) + <> byteArrayToHex (unwrap $ encodeCbor mph) <> " is a hash of a native script." CannotMintZero cs tn -> "Cannot mint zero of token " <> prettyAssetName tn <> " of currency " <> byteArrayToHex (unwrap $ encodeCbor cs) + NumericOverflow -> "Numeric overflow" where prettyAssetName :: AssetName -> String diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index 3d5c528d7..d8fcea2ab 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -15,17 +15,17 @@ module Ctl.Internal.ProcessConstraints.State , totalMissingValue , provideValue , requireValue + , sumValueSpentBalances ) where import Prelude hiding (join) -import Cardano.Types (CostModel, Language, Transaction, UtxoMap) +import Cardano.Types (CostModel, Language, PlutusData, Transaction, UtxoMap) import Cardano.Types.Value (Value) import Cardano.Types.Value as Value import Control.Monad.State.Trans (StateT) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Contract.Monad (Contract) -import Ctl.Internal.Types.Datum (Datum) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Data.Generic.Rep (class Generic) import Data.Lattice (join) @@ -55,7 +55,7 @@ type ConstraintProcessingState = -- ^ Balance of the values given and required for the transaction's inputs , valueSpentBalancesOutputs :: ValueSpentBalances -- ^ Balance of the values produced and required for the transaction's outputs - , datums :: Array Datum + , datums :: Array PlutusData -- ^ Ordered accumulation of datums we can use to `setScriptDataHash` , redeemers :: Array UnindexedRedeemer -- ^ Unindexed redeemers that will be attached to the Tx later, on balancing @@ -85,7 +85,7 @@ _valueSpentBalancesOutputs _valueSpentBalancesOutputs = prop (Proxy :: Proxy "valueSpentBalancesOutputs") _datums - :: Lens' ConstraintProcessingState (Array Datum) + :: Lens' ConstraintProcessingState (Array PlutusData) _datums = prop (Proxy :: Proxy "datums") _costModels @@ -125,6 +125,13 @@ instance Semigroup ValueSpentBalances where , provided: l.provided `join` r.provided } +sumValueSpentBalances + :: ValueSpentBalances -> ValueSpentBalances -> Maybe ValueSpentBalances +sumValueSpentBalances (ValueSpentBalances a) (ValueSpentBalances b) = do + required <- Value.add a.required b.required + provided <- Value.add a.provided b.provided + pure $ ValueSpentBalances { required, provided } + missingValueSpent :: ValueSpentBalances -> Maybe Value missingValueSpent (ValueSpentBalances { required, provided }) = Value.minus required provided diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index 9c7fc5dd0..fb3096ad3 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -10,7 +10,7 @@ module Ctl.Internal.QueryM.Pools import Prelude import Cardano.AsCbor (encodeCbor) -import Cardano.Types (PoolPubKeyHash, StakePubKeyHash) +import Cardano.Types (PoolParams(PoolParams), PoolPubKeyHash, StakePubKeyHash) import Cardano.Types.Ed25519KeyHash (toBech32Unsafe) as Ed25519KeyHash import Cardano.Types.ScriptHash as ScriptHash import Ctl.Internal.Helpers (liftM) @@ -22,8 +22,7 @@ import Ctl.Internal.QueryM.Ogmios import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) as X -import Ctl.Internal.Types.PoolRegistrationParams (PoolRegistrationParams) -import Ctl.Internal.Types.Scripts (StakeValidatorHash) +import Ctl.Internal.Types.StakeValidatorHash (StakeValidatorHash) import Data.ByteArray (byteArrayToHex) import Data.Map (Map) import Data.Map as Map @@ -47,7 +46,7 @@ getPoolIds :: QueryM (Array PoolPubKeyHash) getPoolIds = (Map.toUnfoldableUnordered >>> map fst) <$> getStakePools Nothing -getPoolParameters :: PoolPubKeyHash -> QueryM PoolRegistrationParams +getPoolParameters :: PoolPubKeyHash -> QueryM PoolParams getPoolParameters poolPubKeyHash = do params <- getPoolsParameters [ poolPubKeyHash ] res <- liftM (error "Unable to find pool ID in the response") $ Map.lookup @@ -56,7 +55,7 @@ getPoolParameters poolPubKeyHash = do pure res getPoolsParameters - :: Array PoolPubKeyHash -> QueryM (Map PoolPubKeyHash PoolRegistrationParams) + :: Array PoolPubKeyHash -> QueryM (Map PoolPubKeyHash PoolParams) getPoolsParameters poolPubKeyHashes = do response <- getStakePools (Just poolPubKeyHashes) pure $ Map.mapMaybeWithKey diff --git a/src/Internal/Types/MetadataLabel.purs b/src/Internal/Types/MetadataLabel.purs new file mode 100644 index 000000000..be724c47b --- /dev/null +++ b/src/Internal/Types/MetadataLabel.purs @@ -0,0 +1,20 @@ +module Ctl.Internal.Types.MetadataLabel where + +import Prelude + +import Cardano.AsCbor (class AsCbor) +import Cardano.Types (BigNum) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) + +newtype MetadataLabel = MetadataLabel BigNum + +derive instance Newtype MetadataLabel _ +derive newtype instance AsCbor MetadataLabel +derive instance Eq MetadataLabel +derive instance Generic MetadataLabel _ +derive instance Ord MetadataLabel + +instance Show MetadataLabel where + show = genericShow diff --git a/src/Internal/Types/MintingPolicy.purs b/src/Internal/Types/MintingPolicy.purs index beedd0765..4fc7a0424 100644 --- a/src/Internal/Types/MintingPolicy.purs +++ b/src/Internal/Types/MintingPolicy.purs @@ -6,7 +6,7 @@ module Ctl.Internal.Types.MintingPolicy import Prelude import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) -import Cardano.Plutus.Types.MintingPolicyHash (MintingPolicyHash) +import Cardano.Types (ScriptHash) import Cardano.Types.NativeScript (NativeScript) import Cardano.Types.NativeScript as NativeScript import Cardano.Types.PlutusScript (PlutusScript) @@ -14,7 +14,6 @@ import Cardano.Types.PlutusScript as PlutusScript import Control.Alt ((<|>)) import Ctl.Internal.Helpers (decodeTaggedNewtype) import Data.Generic.Rep (class Generic) -import Data.Newtype (wrap) import Data.Show.Generic (genericShow) -- | `MintingPolicy` is a sum type of `PlutusScript` and `NativeScript` which are used as @@ -40,6 +39,6 @@ instance EncodeAeson MintingPolicy where instance Show MintingPolicy where show = genericShow -hash :: MintingPolicy -> MintingPolicyHash -hash (PlutusMintingPolicy ps) = wrap $ PlutusScript.hash ps -hash (NativeMintingPolicy ns) = wrap $ NativeScript.hash ns +hash :: MintingPolicy -> ScriptHash +hash (PlutusMintingPolicy ps) = PlutusScript.hash ps +hash (NativeMintingPolicy ns) = NativeScript.hash ns diff --git a/src/Internal/Types/MintingPolicyHash.purs b/src/Internal/Types/MintingPolicyHash.purs deleted file mode 100644 index 73d438b27..000000000 --- a/src/Internal/Types/MintingPolicyHash.purs +++ /dev/null @@ -1,37 +0,0 @@ -module Ctl.Internal.Types.MintingPolicyHash - ( MintingPolicyHash(MintingPolicyHash) - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) -import Cardano.FromData (class FromData) -import Cardano.FromMetadata (class FromMetadata) -import Cardano.ToData (class ToData) -import Cardano.ToMetadata (class ToMetadata) -import Cardano.Types.ScriptHash (ScriptHash) -import Ctl.Internal.Helpers (decodeTaggedNewtype) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype MintingPolicyHash = MintingPolicyHash ScriptHash - -derive instance Generic MintingPolicyHash _ -derive instance Newtype MintingPolicyHash _ -derive newtype instance Eq MintingPolicyHash -derive newtype instance Ord MintingPolicyHash -derive newtype instance FromData MintingPolicyHash -derive newtype instance ToData MintingPolicyHash -derive newtype instance FromMetadata MintingPolicyHash -derive newtype instance ToMetadata MintingPolicyHash - -instance DecodeAeson MintingPolicyHash where - decodeAeson = decodeTaggedNewtype "getMintingPolicyHash" MintingPolicyHash - -instance EncodeAeson MintingPolicyHash where - encodeAeson (MintingPolicyHash hash) = - encodeAeson { "getMintingPolicyHash": hash } - -instance Show MintingPolicyHash where - show = genericShow diff --git a/src/Internal/Types/NativeScriptStakeValidator.purs b/src/Internal/Types/NativeScriptStakeValidator.purs deleted file mode 100644 index de84e0d28..000000000 --- a/src/Internal/Types/NativeScriptStakeValidator.purs +++ /dev/null @@ -1,21 +0,0 @@ -module Ctl.Internal.Types.NativeScriptStakeValidator - ( NativeScriptStakeValidator(NativeScriptStakeValidator) - ) where - -import Prelude - -import Cardano.Types.NativeScript (NativeScript) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - --- | `NativeScriptStakeValidator`s are used as validators for withdrawals and --- | stake address certificates. -newtype NativeScriptStakeValidator = NativeScriptStakeValidator NativeScript - -derive instance Newtype NativeScriptStakeValidator _ -derive instance Generic NativeScriptStakeValidator _ -derive instance Eq NativeScriptStakeValidator - -instance Show NativeScriptStakeValidator where - show = genericShow diff --git a/src/Internal/Types/OutputDatum.purs b/src/Internal/Types/OutputDatum.purs deleted file mode 100644 index b4f2ed807..000000000 --- a/src/Internal/Types/OutputDatum.purs +++ /dev/null @@ -1,5 +0,0 @@ -module Ctl.Internal.Types.OutputDatum - ( module X - ) where - -import Cardano.Types.OutputDatum as X diff --git a/src/Internal/Types/PaymentPubKey.purs b/src/Internal/Types/PaymentPubKey.purs deleted file mode 100644 index a79dfb05c..000000000 --- a/src/Internal/Types/PaymentPubKey.purs +++ /dev/null @@ -1,30 +0,0 @@ -module Ctl.Internal.Types.PaymentPubKey - ( PaymentPubKey(PaymentPubKey) - , paymentPubKeyToRequiredSigner - , paymentPubKeyToVkey - ) where - -import Prelude - -import Cardano.Types.PublicKey as PublicKey -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap) -import Data.Show.Generic (genericShow) - --- Plutus has a type called `PubKey` which we replace with `PublicKey` -newtype PaymentPubKey = PaymentPubKey PublicKey - -derive instance Generic PaymentPubKey _ -derive instance Newtype PaymentPubKey _ -derive newtype instance Eq PaymentPubKey -derive newtype instance Ord PaymentPubKey - -instance Show PaymentPubKey where - show = genericShow - -paymentPubKeyToVkey :: PaymentPubKey -> Vkey -paymentPubKeyToVkey (PaymentPubKey pk) = Vkey pk - -paymentPubKeyToRequiredSigner :: PaymentPubKey -> RequiredSigner -paymentPubKeyToRequiredSigner (PaymentPubKey pk) = - RequiredSigner <<< PublicKey.hash $ unwrap pk diff --git a/src/Internal/Types/PlutusScriptStakeValidator.purs b/src/Internal/Types/PlutusScriptStakeValidator.purs deleted file mode 100644 index ef1071069..000000000 --- a/src/Internal/Types/PlutusScriptStakeValidator.purs +++ /dev/null @@ -1,31 +0,0 @@ -module Ctl.Internal.Types.PlutusScriptStakeValidator - ( PlutusScriptStakeValidator(PlutusScriptStakeValidator) - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) -import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) -import Ctl.Internal.Helpers (decodeTaggedNewtype) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - --- | `PlutusScriptStakeValidator`s are used as validators for withdrawals and --- | stake address certificates. -newtype PlutusScriptStakeValidator = PlutusScriptStakeValidator PlutusScript - -derive instance Newtype PlutusScriptStakeValidator _ -derive instance Generic PlutusScriptStakeValidator _ -derive instance Eq PlutusScriptStakeValidator - -instance DecodeAeson PlutusScriptStakeValidator where - decodeAeson = decodeTaggedNewtype "getStakeValidator" - PlutusScriptStakeValidator - -instance EncodeAeson PlutusScriptStakeValidator where - encodeAeson (PlutusScriptStakeValidator script) = - encodeAeson { "getStakeValidator": script } - -instance Show PlutusScriptStakeValidator where - show = genericShow diff --git a/src/Internal/Types/PoolRegistrationParams.purs b/src/Internal/Types/PoolRegistrationParams.purs deleted file mode 100644 index 84611e62a..000000000 --- a/src/Internal/Types/PoolRegistrationParams.purs +++ /dev/null @@ -1,25 +0,0 @@ -module Ctl.Internal.Types.PoolRegistrationParams where - -import Cardano.Plutus.Types.PubKeyHash (PubKeyHash) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.PoolMetadata (PoolMetadata) -import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) -import Cardano.Types.Relay (Relay) -import Cardano.Types.RewardAddress (RewardAddress) -import Cardano.Types.UnitInterval (UnitInterval) -import Cardano.Types.VRFKeyHash (VRFKeyHash) -import Data.Maybe (Maybe) - -type PoolRegistrationParams = - { operator :: PoolPubKeyHash -- cwitness (cert) - , vrfKeyhash :: VRFKeyHash - -- needed to prove that the pool won the lottery - , pledge :: BigNum - , cost :: BigNum -- >= pparams.minPoolCost - , margin :: UnitInterval -- proportion that goes to the reward account - , rewardAccount :: RewardAddress - , poolOwners :: Array PubKeyHash - -- payment key hashes that contribute to pledge amount - , relays :: Array Relay - , poolMetadata :: Maybe PoolMetadata - } diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index a581abac8..da7e7a84e 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -91,14 +91,15 @@ import Prelude hiding (join) import Cardano.Types ( AssetName - , BigNum , Credential , DataHash , Epoch - , MultiAsset + , Mint , NativeScript , PaymentPubKeyHash , PlutusData + , PlutusScript + , PoolParams , PoolPubKeyHash , ScriptHash , ScriptRef @@ -108,20 +109,10 @@ import Cardano.Types , TransactionUnspentOutput(TransactionUnspentOutput) , Value ) -import Cardano.Types.MultiAsset as MultiAsset -import Ctl.Internal.NativeScripts (NativeScriptHash) +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint import Ctl.Internal.Types.Interval (POSIXTimeRange) -import Ctl.Internal.Types.MintingPolicyHash (MintingPolicyHash) -import Ctl.Internal.Types.NativeScriptStakeValidator - ( NativeScriptStakeValidator - ) -import Ctl.Internal.Types.PlutusScriptStakeValidator - ( PlutusScriptStakeValidator - ) -import Ctl.Internal.Types.PoolRegistrationParams (PoolRegistrationParams) import Ctl.Internal.Types.Redeemer (Redeemer, unitRedeemer) -import Ctl.Internal.Types.StakeValidatorHash (StakeValidatorHash) -import Ctl.Internal.Types.ValidatorHash (ValidatorHash) import Data.Array as Array import Data.Foldable (class Foldable) import Data.Generic.Rep (class Generic) @@ -129,7 +120,7 @@ import Data.Map (Map) import Data.Map (singleton) as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Monoid (guard) -import Data.Newtype (class Newtype, over, unwrap, wrap) +import Data.Newtype (class Newtype, over, unwrap) import Data.Show.Generic (genericShow) import Data.Tuple.Nested (type (/\), (/\)) import Prim.TypeError (class Warn, Text) @@ -152,32 +143,32 @@ data TxConstraint | MustSpendNativeScriptOutput TransactionInput NativeScript | MustSpendScriptOutput TransactionInput Redeemer (Maybe InputWithScriptRef) | MustReferenceOutput TransactionInput - | MustMintValue MintingPolicyHash Redeemer AssetName BigNum + | MustMintValue ScriptHash Redeemer AssetName Int.Int (Maybe InputWithScriptRef) - | MustMintValueUsingNativeScript NativeScript AssetName BigNum + | MustMintValueUsingNativeScript NativeScript AssetName Int.Int | MustPayToPubKeyAddress PaymentPubKeyHash (Maybe StakePubKeyHash) (Maybe (PlutusData /\ DatumPresence)) (Maybe ScriptRef) Value - | MustPayToNativeScript NativeScriptHash (Maybe Credential) Value - | MustPayToScript ValidatorHash (Maybe Credential) PlutusData DatumPresence + | MustPayToNativeScript ScriptHash (Maybe Credential) Value + | MustPayToScript ScriptHash (Maybe Credential) PlutusData DatumPresence (Maybe ScriptRef) Value | MustHashDatum DataHash PlutusData | MustRegisterStakePubKey StakePubKeyHash | MustDeregisterStakePubKey StakePubKeyHash - | MustRegisterStakeScript StakeValidatorHash - | MustDeregisterStakePlutusScript PlutusScriptStakeValidator Redeemer - | MustDeregisterStakeNativeScript NativeScriptStakeValidator - | MustRegisterPool PoolRegistrationParams + | MustRegisterStakeScript ScriptHash + | MustDeregisterStakePlutusScript PlutusScript Redeemer + | MustDeregisterStakeNativeScript NativeScript + | MustRegisterPool PoolParams | MustRetirePool PoolPubKeyHash Epoch | MustDelegateStakePubKey StakePubKeyHash PoolPubKeyHash - | MustDelegateStakePlutusScript PlutusScriptStakeValidator Redeemer + | MustDelegateStakePlutusScript PlutusScript Redeemer PoolPubKeyHash - | MustDelegateStakeNativeScript NativeScriptStakeValidator PoolPubKeyHash + | MustDelegateStakeNativeScript NativeScript PoolPubKeyHash | MustWithdrawStakePubKey StakePubKeyHash - | MustWithdrawStakePlutusScript PlutusScriptStakeValidator Redeemer - | MustWithdrawStakeNativeScript NativeScriptStakeValidator + | MustWithdrawStakePlutusScript PlutusScript Redeemer + | MustWithdrawStakeNativeScript NativeScript | MustSatisfyAnyOf (Array (Array TxConstraint)) | MustNotBeValid @@ -390,7 +381,7 @@ mustPayToPubKeyWithDatumAndScriptRef pkh datum dtp scriptRef = -- | `mustPayToScript`, and all scripts must be explicitly provided to build -- | the transaction. mustPayToScript - :: ValidatorHash + :: ScriptHash -> PlutusData -> DatumPresence -> Value @@ -400,7 +391,7 @@ mustPayToScript vh dt dtp vl = <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) mustPayToScriptAddress - :: ValidatorHash + :: ScriptHash -> Credential -> PlutusData -> DatumPresence @@ -414,7 +405,7 @@ mustPayToScriptAddress vh credential dt dtp vl = -- | Note that the provided reference script does *not* necessarily need to -- | control the spending of the output, i.e. both scripts can be different. mustPayToScriptWithScriptRef - :: ValidatorHash + :: ScriptHash -> PlutusData -> DatumPresence -> ScriptRef @@ -429,7 +420,7 @@ mustPayToScriptWithScriptRef vh dt dtp scriptRef vl = -- | control the spending of the output, i.e. both scripts can be different. mustPayToScriptAddressWithScriptRef :: forall (i :: Type) (o :: Type) - . ValidatorHash + . ScriptHash -> Credential -> PlutusData -> DatumPresence @@ -442,7 +433,7 @@ mustPayToScriptAddressWithScriptRef vh credential dt dtp scriptRef vl = mustPayToNativeScript :: forall (i :: Type) (o :: Type) - . NativeScriptHash + . ScriptHash -> Value -> TxConstraints mustPayToNativeScript nsHash vl = @@ -450,7 +441,7 @@ mustPayToNativeScript nsHash vl = mustPayToNativeScriptAddress :: forall (i :: Type) (o :: Type) - . NativeScriptHash + . ScriptHash -> Credential -> Value -> TxConstraints @@ -459,7 +450,7 @@ mustPayToNativeScriptAddress nsHash credential vl = -- | Mint the given `Value` -- | The amount to mint must not be zero. -mustMintValue :: MultiAsset -> TxConstraints +mustMintValue :: Mint -> TxConstraints mustMintValue = mustMintValueWithRedeemer unitRedeemer -- | Mint the given `Value` by accessing non-Ada assets. @@ -467,23 +458,22 @@ mustMintValue = mustMintValueWithRedeemer unitRedeemer mustMintValueWithRedeemer :: forall (i :: Type) (o :: Type) . Redeemer - -> MultiAsset + -> Mint -> TxConstraints mustMintValueWithRedeemer redeemer = - Array.fold <<< map tokenConstraint <<< MultiAsset.flatten + Array.fold <<< map tokenConstraint <<< Mint.flatten where tokenConstraint - :: ScriptHash /\ AssetName /\ BigNum -> TxConstraints + :: ScriptHash /\ AssetName /\ Int.Int -> TxConstraints tokenConstraint (cs /\ tn /\ amount) = - mustMintCurrencyWithRedeemer (wrap cs) redeemer tn amount + mustMintCurrencyWithRedeemer cs redeemer tn amount -- | Create the given amount of the currency. -- | The amount to mint must not be zero. mustMintCurrency - :: forall (i :: Type) (o :: Type) - . MintingPolicyHash + :: ScriptHash -> AssetName - -> BigNum + -> Int.Int -> TxConstraints mustMintCurrency mph = mustMintCurrencyWithRedeemer mph unitRedeemer @@ -492,7 +482,7 @@ mustMintCurrencyUsingNativeScript :: forall (i :: Type) (o :: Type) . NativeScript -> AssetName - -> BigNum + -> Int.Int -> TxConstraints mustMintCurrencyUsingNativeScript ns tk i = singleton (MustMintValueUsingNativeScript ns tk i) @@ -500,10 +490,9 @@ mustMintCurrencyUsingNativeScript ns tk i = singleton -- | Create the given amount of the currency using a reference minting policy. -- | The amount to mint must not be zero. mustMintCurrencyUsingScriptRef - :: forall (i :: Type) (o :: Type) - . MintingPolicyHash + :: ScriptHash -> AssetName - -> BigNum + -> Int.Int -> InputWithScriptRef -> TxConstraints mustMintCurrencyUsingScriptRef mph = @@ -512,11 +501,10 @@ mustMintCurrencyUsingScriptRef mph = -- | Create the given amount of the currency. -- | The amount to mint must not be zero. mustMintCurrencyWithRedeemer - :: forall (i :: Type) (o :: Type) - . MintingPolicyHash + :: ScriptHash -> Redeemer -> AssetName - -> BigNum + -> Int.Int -> TxConstraints mustMintCurrencyWithRedeemer mph red tn amount = singleton (MustMintValue mph red tn amount Nothing) @@ -524,11 +512,10 @@ mustMintCurrencyWithRedeemer mph red tn amount = -- | Create the given amount of the currency using a reference minting policy. -- | The amount to mint must not be zero. mustMintCurrencyWithRedeemerUsingScriptRef - :: forall (i :: Type) (o :: Type) - . MintingPolicyHash + :: ScriptHash -> Redeemer -> AssetName - -> BigNum + -> Int.Int -> InputWithScriptRef -> TxConstraints mustMintCurrencyWithRedeemerUsingScriptRef mph red tn amount = @@ -549,8 +536,7 @@ mustSpendPubKeyOutput = singleton <<< MustSpendPubKeyOutput -- | Spend the given unspent transaction script output. mustSpendScriptOutput - :: forall (i :: Type) (o :: Type) - . TransactionInput + :: TransactionInput -> Redeemer -> TxConstraints mustSpendScriptOutput txOutRef red = @@ -559,8 +545,7 @@ mustSpendScriptOutput txOutRef red = -- | Spend the given unspent transaction script output, using a reference script -- | to satisfy the script witnessing requirement. mustSpendScriptOutputUsingScriptRef - :: forall (i :: Type) (o :: Type) - . TransactionInput + :: TransactionInput -> Redeemer -> InputWithScriptRef -> TxConstraints @@ -568,8 +553,7 @@ mustSpendScriptOutputUsingScriptRef txOutRef red = singleton <<< MustSpendScriptOutput txOutRef red <<< Just mustSpendNativeScriptOutput - :: forall (i :: Type) (o :: Type) - . TransactionInput + :: TransactionInput -> NativeScript -> TxConstraints mustSpendNativeScriptOutput txOutRef = singleton <<< MustSpendNativeScriptOutput @@ -588,12 +572,12 @@ mustDeregisterStakePubKey mustDeregisterStakePubKey = singleton <<< MustDeregisterStakePubKey mustRegisterStakeScript - :: StakeValidatorHash -> TxConstraints + :: ScriptHash -> TxConstraints mustRegisterStakeScript = singleton <<< MustRegisterStakeScript mustDeregisterStakePlutusScript :: forall (i :: Type) (o :: Type) - . PlutusScriptStakeValidator + . PlutusScript -> Redeemer -> TxConstraints mustDeregisterStakePlutusScript sv = singleton <<< @@ -601,12 +585,12 @@ mustDeregisterStakePlutusScript sv = singleton <<< mustDeregisterStakeNativeScript :: forall (i :: Type) (o :: Type) - . NativeScriptStakeValidator + . NativeScript -> TxConstraints mustDeregisterStakeNativeScript = singleton <<< MustDeregisterStakeNativeScript mustRegisterPool - :: PoolRegistrationParams -> TxConstraints + :: PoolParams -> TxConstraints mustRegisterPool = singleton <<< MustRegisterPool mustRetirePool @@ -626,7 +610,7 @@ mustDelegateStakePubKey spkh ppkh = singleton $ MustDelegateStakePubKey spkh mustDelegateStakePlutusScript :: forall (i :: Type) (o :: Type) - . PlutusScriptStakeValidator + . PlutusScript -> Redeemer -> PoolPubKeyHash -> TxConstraints @@ -635,7 +619,7 @@ mustDelegateStakePlutusScript sv redeemer ppkh = singleton $ mustDelegateStakeNativeScript :: forall (i :: Type) (o :: Type) - . NativeScriptStakeValidator + . NativeScript -> PoolPubKeyHash -> TxConstraints mustDelegateStakeNativeScript sv ppkh = @@ -647,7 +631,7 @@ mustWithdrawStakePubKey spkh = singleton $ MustWithdrawStakePubKey spkh mustWithdrawStakePlutusScript :: forall (i :: Type) (o :: Type) - . PlutusScriptStakeValidator + . PlutusScript -> Redeemer -> TxConstraints mustWithdrawStakePlutusScript validator redeemer = @@ -655,7 +639,7 @@ mustWithdrawStakePlutusScript validator redeemer = mustWithdrawStakeNativeScript :: forall (i :: Type) (o :: Type) - . NativeScriptStakeValidator + . NativeScript -> TxConstraints mustWithdrawStakeNativeScript = singleton <<< MustWithdrawStakeNativeScript diff --git a/src/Internal/Types/ValidatorHash.purs b/src/Internal/Types/ValidatorHash.purs deleted file mode 100644 index 064edc361..000000000 --- a/src/Internal/Types/ValidatorHash.purs +++ /dev/null @@ -1,31 +0,0 @@ -module Ctl.Internal.Types.ValidatorHash - ( ValidatorHash(ValidatorHash) - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.FromData (class FromData) -import Cardano.FromMetadata (class FromMetadata) -import Cardano.ToData (class ToData) -import Cardano.ToMetadata (class ToMetadata) -import Cardano.Types.ScriptHash (ScriptHash) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype ValidatorHash = ValidatorHash ScriptHash - -derive instance Generic ValidatorHash _ -derive instance Newtype ValidatorHash _ -derive newtype instance Eq ValidatorHash -derive newtype instance Ord ValidatorHash -derive newtype instance FromData ValidatorHash -derive newtype instance ToData ValidatorHash -derive newtype instance FromMetadata ValidatorHash -derive newtype instance ToMetadata ValidatorHash -derive newtype instance EncodeAeson ValidatorHash -derive newtype instance DecodeAeson ValidatorHash - -instance Show ValidatorHash where - show = genericShow From 57918ec0c29163c68c87d45843a36f3c34a8da59 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 14 Mar 2024 02:00:13 +0400 Subject: [PATCH 067/373] WIP: rewrite BalanceTx, Assert lib --- packages.dhall | 2 +- spago-packages.nix | 84 ++++ src/Contract/AuxiliaryData.purs | 9 +- src/Contract/Backend/Ogmios.purs | 4 +- src/Contract/Backend/Ogmios/Mempool.purs | 3 +- src/Contract/CborBytes.purs | 2 +- src/Contract/Config.purs | 5 +- src/Contract/Credential.purs | 7 - src/Contract/Hashing.purs | 47 --- src/Contract/Keys.purs | 21 +- src/Contract/Metadata.purs | 24 -- src/Contract/Monad.purs | 10 - src/Contract/Numeric/NatRatio.purs | 3 - src/Contract/Numeric/Rational.purs | 1 - src/Contract/PlutusData.purs | 97 +---- src/Contract/Prim/ByteArray.purs | 2 +- src/Contract/ScriptLookups.purs | 5 - src/Contract/Scripts.purs | 38 +- src/Contract/Staking.purs | 8 +- src/Contract/Test/Assert.purs | 124 +++--- src/Contract/Time.purs | 15 +- src/Contract/Transaction.purs | 213 ++-------- src/Contract/TxConstraints.purs | 7 - src/Contract/UnbalancedTx.purs | 2 +- src/Contract/Value.purs | 46 --- src/Internal/BalanceTx/BalanceTx.purs | 381 +++++++++--------- src/Internal/BalanceTx/CoinSelection.purs | 7 +- src/Internal/BalanceTx/Constraints.purs | 4 +- src/Internal/BalanceTx/Error.purs | 4 + src/Internal/Cardano/TextEnvelope.purs | 8 +- src/Internal/Cardano/Types/Value.purs | 47 --- src/Internal/CoinSelection/UtxoIndex.purs | 2 +- src/Internal/Contract.purs | 1 - src/Internal/Contract/AwaitTxConfirmed.purs | 6 +- src/Internal/Contract/Hooks.purs | 3 +- src/Internal/Contract/MinFee.purs | 2 +- src/Internal/Contract/Sign.purs | 12 +- src/Internal/Contract/WaitUntilSlot.purs | 14 +- src/Internal/Deserialization/Language.js | 13 - src/Internal/Deserialization/Language.purs | 19 - src/Internal/Deserialization/NativeScript.js | 42 -- .../Deserialization/NativeScript.purs | 72 ---- src/Internal/Hashing.purs | 16 +- src/Internal/Helpers.purs | 18 +- src/Internal/IsData.purs | 4 +- src/Internal/Lens.purs | 24 +- src/Internal/NativeScripts.purs | 4 +- src/Internal/Partition.purs | 18 +- src/Internal/Plutip/Server.purs | 2 +- src/Internal/Plutip/Types.purs | 2 +- src/Internal/ProcessConstraints/State.purs | 4 +- src/Internal/QueryM/Pools.purs | 8 +- src/Internal/Scripts.purs | 32 -- src/Internal/Serialization/Hash.js | 53 --- src/Internal/Serialization/Hash.purs | 48 --- src/Internal/Service/Blockfrost.purs | 2 +- src/Internal/Test/E2E/Route.purs | 4 +- src/Internal/Test/KeyDir.purs | 10 +- src/Internal/Test/UtxoDistribution.purs | 33 +- src/Internal/Transaction.purs | 1 + src/Internal/Types/Datum.purs | 6 +- src/Internal/Types/EraSummaries.purs | 2 +- src/Internal/Types/NatRatio.purs | 21 - src/Internal/Types/Redeemer.purs | 2 +- src/Internal/Types/ScriptLookups.purs | 43 +- src/Internal/Types/Val.purs | 136 +++++++ src/Internal/Wallet/Cip30Mock.purs | 81 ++-- 67 files changed, 703 insertions(+), 1287 deletions(-) delete mode 100644 src/Contract/Credential.purs delete mode 100644 src/Contract/Hashing.purs delete mode 100644 src/Contract/Metadata.purs delete mode 100644 src/Contract/Value.purs delete mode 100644 src/Internal/Cardano/Types/Value.purs delete mode 100644 src/Internal/Deserialization/Language.js delete mode 100644 src/Internal/Deserialization/Language.purs delete mode 100644 src/Internal/Deserialization/NativeScript.js delete mode 100644 src/Internal/Deserialization/NativeScript.purs delete mode 100644 src/Internal/Scripts.purs delete mode 100644 src/Internal/Serialization/Hash.js delete mode 100644 src/Internal/Serialization/Hash.purs create mode 100644 src/Internal/Types/Val.purs diff --git a/packages.dhall b/packages.dhall index b91a09e5c..0543e5d22 100644 --- a/packages.dhall +++ b/packages.dhall @@ -361,7 +361,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "06283f9b62a32452f228d20443d4365dfd32f544" + , version = "ff6a1e6a303b0e52e7b53752166efa240362f45d" } , cardano-message-signing = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index a8b01cd41..aa51b3542 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -197,6 +197,78 @@ let installPhase = "ln -s $src $out"; }; + "bytearrays" = pkgs.stdenv.mkDerivation { + name = "bytearrays"; + version = "e3991d562a04d8825472551d91a06407ad9c9112"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-bytearrays"; + rev = "e3991d562a04d8825472551d91a06407ad9c9112"; + sha256 = "0lyp1x8kgzg8ykv5yp8dd21ziypi9yzhzqpwv5l995kfm4mdglh2"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-hd-wallet" = pkgs.stdenv.mkDerivation { + name = "cardano-hd-wallet"; + version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet"; + rev = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; + sha256 = "1kw3p58kf94cy89pbss2z5k12am49qj3jzp5szalyz7caqpxkmf7"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-message-signing" = pkgs.stdenv.mkDerivation { + name = "cardano-message-signing"; + version = "8078bd9ce339262f29155a80572e8c44334aa801"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-message-signing"; + rev = "8078bd9ce339262f29155a80572e8c44334aa801"; + sha256 = "0ay0v79ak15azk9sm4xv2fv3g3f6h89m4xm6c4vazy7qks2ap2vh"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-plutus-data-schema" = pkgs.stdenv.mkDerivation { + name = "cardano-plutus-data-schema"; + version = "351003d931990949ce3d73f399a179e4a0fa40f1"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema"; + rev = "351003d931990949ce3d73f399a179e4a0fa40f1"; + sha256 = "1f6m6a4y4dzib75x1mrqrkl0y9hvm5c5ymall21zqns67ly207l3"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { + name = "cardano-serialization-lib"; + version = "793503bc88dbdeccea7602d4ae34ccc360112b3a"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; + rev = "793503bc88dbdeccea7602d4ae34ccc360112b3a"; + sha256 = "1hza31pv5j6lwx1cihjj479960lqsfy66v6qvb7l3x9v70cwag8j"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-types" = pkgs.stdenv.mkDerivation { + name = "cardano-types"; + version = "6aac3ad846f8473bb10c14d2145f5f62dc4eb1a6"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-types"; + rev = "6aac3ad846f8473bb10c14d2145f5f62dc4eb1a6"; + sha256 = "05wk0mp6a382n21k7zmvzz70y1cr9w8svlqpfxc9651g1mq2y9jz"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "catenable-lists" = pkgs.stdenv.mkDerivation { name = "catenable-lists"; version = "v7.0.0"; @@ -1085,6 +1157,18 @@ let installPhase = "ln -s $src $out"; }; + "plutus-types" = pkgs.stdenv.mkDerivation { + name = "plutus-types"; + version = "143902b37e218d843b9da473553ecf50686934cb"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-plutus-types"; + rev = "143902b37e218d843b9da473553ecf50686934cb"; + sha256 = "116avsdgw6w392ip89lgcjcpqqznsr0h0s0gq335wakvpa6q45yf"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "posix-types" = pkgs.stdenv.mkDerivation { name = "posix-types"; version = "v6.0.0"; diff --git a/src/Contract/AuxiliaryData.purs b/src/Contract/AuxiliaryData.purs index 718ca81ad..b82d10107 100644 --- a/src/Contract/AuxiliaryData.purs +++ b/src/Contract/AuxiliaryData.purs @@ -7,13 +7,14 @@ module Contract.AuxiliaryData import Prelude -import Contract.Monad (Contract) -import Ctl.Internal.Cardano.Types.Transaction +import Cardano.Types ( AuxiliaryData(AuxiliaryData) , AuxiliaryDataHash + , GeneralTransactionMetadata , Transaction ) -import Ctl.Internal.Cardano.Types.Transaction +import Contract.Monad (Contract) +import Ctl.Internal.Lens ( _auxiliaryData , _auxiliaryDataHash , _body @@ -23,8 +24,6 @@ import Ctl.Internal.Metadata.MetadataType , toGeneralTxMetadata ) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) -import Ctl.Internal.Serialization.AuxiliaryData (hashAuxiliaryData) -import Ctl.Internal.Types.TransactionMetadata (GeneralTransactionMetadata) import Data.Lens (lens', (?~)) import Data.Lens.Getter (view) import Data.Lens.Iso.Newtype (_Newtype) diff --git a/src/Contract/Backend/Ogmios.purs b/src/Contract/Backend/Ogmios.purs index 26ce969fa..7ef1dede4 100644 --- a/src/Contract/Backend/Ogmios.purs +++ b/src/Contract/Backend/Ogmios.purs @@ -6,15 +6,15 @@ module Contract.Backend.Ogmios import Contract.Prelude +import Cardano.Types.CborBytes (CborBytes) +import Cardano.Types.Transaction (PoolRegistrationParams) import Cardano.Types.TransactionHash (TransactionHash) import Contract.Monad (Contract) import Contract.Transaction (PoolPubKeyHash) -import Ctl.Internal.Cardano.Types.Transaction (PoolRegistrationParams) import Ctl.Internal.Contract.Monad (wrapQueryM) import Ctl.Internal.QueryM (submitTxOgmios) as QueryM import Ctl.Internal.QueryM.Ogmios (SubmitTxR) import Ctl.Internal.QueryM.Pools (getPoolParameters) as QueryM -import Ctl.Internal.Types.CborBytes (CborBytes) -- | **This function can only run with Ogmios backend** -- | diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs index a1dff3acf..855ac25b3 100644 --- a/src/Contract/Backend/Ogmios/Mempool.purs +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -14,12 +14,11 @@ module Contract.Backend.Ogmios.Mempool import Contract.Prelude +import Cardano.Types.Transaction (Transaction) import Cardano.Types.TransactionHash (TransactionHash) import Contract.Monad (Contract) import Control.Monad.Error.Class (liftMaybe, try) -import Ctl.Internal.Cardano.Types.Transaction (Transaction) import Ctl.Internal.Contract.Monad (wrapQueryM) -import Ctl.Internal.Deserialization.Transaction (deserializeTransaction) import Ctl.Internal.QueryM ( acquireMempoolSnapshot , mempoolSnapshotHasTx diff --git a/src/Contract/CborBytes.purs b/src/Contract/CborBytes.purs index ef3ec0caf..e48e0128e 100644 --- a/src/Contract/CborBytes.purs +++ b/src/Contract/CborBytes.purs @@ -1,6 +1,6 @@ -- | A module with CBOR-related functionality. module Contract.CborBytes (module CborBytes) where -import Ctl.Internal.Types.CborBytes +import Cardano.Types.CborBytes ( CborBytes(CborBytes) ) as CborBytes diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 9bf4a5dee..57d523e14 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -19,17 +19,15 @@ module Contract.Config , defaultSynchronizationParams , strictSynchronizationParams , defaultTimeParams - , module Contract.Address , module Data.Log.Level , module Data.Log.Message - , module Ctl.Internal.Deserialization.Keys , module Ctl.Internal.ServerConfig , module Ctl.Internal.Wallet.Spec , module Ctl.Internal.Wallet.Key , module X ) where -import Contract.Address (NetworkId(MainnetId, TestnetId)) +import Cardano.Types (NetworkId(MainnetId, TestnetId)) import Ctl.Internal.BalanceTx.Sync ( disabledSynchronizationParams ) as X @@ -59,7 +57,6 @@ import Ctl.Internal.Contract.QueryBackend , mkSelfHostedBlockfrostBackendParams ) as X import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) -import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.ServerConfig ( Host , ServerConfig diff --git a/src/Contract/Credential.purs b/src/Contract/Credential.purs deleted file mode 100644 index e190dbb4d..000000000 --- a/src/Contract/Credential.purs +++ /dev/null @@ -1,7 +0,0 @@ --- | A module for Plutus-style `Credential`s -module Contract.Credential (module Credential) where - -import Ctl.Internal.Plutus.Types.Credential - ( Credential(PubKeyCredential, ScriptCredential) - , StakingCredential(StakingHash, StakingPtr) - ) as Credential diff --git a/src/Contract/Hashing.purs b/src/Contract/Hashing.purs deleted file mode 100644 index 566749dbb..000000000 --- a/src/Contract/Hashing.purs +++ /dev/null @@ -1,47 +0,0 @@ -module Contract.Hashing - ( module X - , transactionHash - , publicKeyHash - , auxiliaryDataHash - ) where - -import Prelude - -import Cardano.Types.TransactionHash (TransactionHash) -import Contract.Scripts (plutusScriptStakeValidatorHash) as X -import Ctl.Internal.Cardano.Types.Transaction - ( AuxiliaryData - , AuxiliaryDataHash - , PublicKey - , Transaction - ) -import Ctl.Internal.Hashing - ( blake2b224Hash - , blake2b224HashHex - , blake2b256Hash - , blake2b256HashHex - , datumHash - , md5HashHex - , plutusScriptHash - , scriptRefHash - , sha256Hash - , sha256HashHex - , sha3_256Hash - , sha3_256HashHex - ) as X -import Ctl.Internal.Hashing (transactionHash) as Internal -import Ctl.Internal.NativeScripts (nativeScriptHash) as X -import Ctl.Internal.Serialization (convertTransaction) -import Ctl.Internal.Serialization (publicKeyHash) as Internal -import Ctl.Internal.Serialization.AuxiliaryData (hashAuxiliaryData) -import Data.Newtype (unwrap, wrap) -import Effect (Effect) - -transactionHash :: Transaction -> Effect TransactionHash -transactionHash tx = Internal.transactionHash <$> convertTransaction tx - -publicKeyHash :: PublicKey -> PubKeyHash -publicKeyHash pk = wrap $ Internal.publicKeyHash $ unwrap pk - -auxiliaryDataHash :: AuxiliaryData -> Effect AuxiliaryDataHash -auxiliaryDataHash = hashAuxiliaryData diff --git a/src/Contract/Keys.purs b/src/Contract/Keys.purs index cf4ae72d7..f96c98630 100644 --- a/src/Contract/Keys.purs +++ b/src/Contract/Keys.purs @@ -1,7 +1,6 @@ -- | Exposes constructors for `PublicKey` and `Ed25519Signature` types module Contract.Keys - ( module X - , privateKeyFromBech32 + ( privateKeyFromBech32 , privateKeyFromBytes , publicKeyFromBech32 , publicKeyFromBytes @@ -9,34 +8,30 @@ module Contract.Keys import Prelude +import Cardano.AsCbor (decodeCbor) import Cardano.Serialization.Lib ( privateKey_fromBech32 , privateKey_fromNormalBytes , publicKey_fromBytes ) as Csl +import Cardano.Types (Bech32String, RawBytes(..)) import Cardano.Types.PrivateKey (PrivateKey(..)) +import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.PublicKey (PublicKey(..)) -import Contract.Prim.ByteArray (RawBytes) -import Ctl.Internal.Cardano.Types.Transaction (mkEd25519Signature) as X -import Ctl.Internal.Deserialization.Keys (publicKeyFromBech32) as Csl -import Ctl.Internal.Types.Aliases (Bech32String) import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) import Data.Nullable (toMaybe) import Safe.Coerce (coerce) privateKeyFromBytes :: RawBytes -> Maybe PrivateKey -privateKeyFromBytes = - map wrap <<< toMaybe <<< Csl.privateKey_fromNormalBytes <<< unwrap +privateKeyFromBytes = PrivateKey.fromRawBytes privateKeyFromBech32 :: Bech32String -> Maybe PrivateKey -privateKeyFromBech32 = - coerce $ toMaybe <<< Csl.privateKey_fromBech32 +privateKeyFromBech32 = PrivateKey.fromBech32 publicKeyFromBytes :: RawBytes -> Maybe PublicKey publicKeyFromBytes = - map wrap <<< toMaybe <<< Csl.publicKey_fromBytes <<< unwrap + decodeCbor <<< wrap <<< unwrap publicKeyFromBech32 :: Bech32String -> Maybe PublicKey -publicKeyFromBech32 = - coerce Csl.publicKeyFromBech32 +publicKeyFromBech32 = PublicKey.fromBech32 diff --git a/src/Contract/Metadata.purs b/src/Contract/Metadata.purs deleted file mode 100644 index cb805c817..000000000 --- a/src/Contract/Metadata.purs +++ /dev/null @@ -1,24 +0,0 @@ -module Contract.Metadata - ( module Cip25Metadata - , module Cip25String - , module TransactionMetadata - ) where - -import Ctl.Internal.Metadata.Cip25.Cip25String - ( Cip25String - , mkCip25String - , unCip25String - ) as Cip25String -import Ctl.Internal.Metadata.Cip25.V2 - ( Cip25AssetName(Cip25AssetName) - , Cip25Metadata(Cip25Metadata) - , Cip25MetadataEntry(Cip25MetadataEntry) - , Cip25MetadataFile(Cip25MetadataFile) - , nftMetadataLabel - ) as Cip25Metadata -import Ctl.Internal.Types.TransactionMetadata - ( GeneralTransactionMetadata(GeneralTransactionMetadata) - , TransactionMetadatum(Bytes, Int, MetadataList, MetadataMap, Text) - , TransactionMetadatumLabel(TransactionMetadatumLabel) - ) as TransactionMetadata - diff --git a/src/Contract/Monad.purs b/src/Contract/Monad.purs index 2b7ffd610..2d750e0bc 100644 --- a/src/Contract/Monad.purs +++ b/src/Contract/Monad.purs @@ -2,7 +2,6 @@ module Contract.Monad ( module ExportAff , module ExportContract - , module ExportLogTag , liftContractAffM , liftContractE , liftContractE' @@ -32,15 +31,6 @@ import Ctl.Internal.Contract.Monad , stopContractEnv ) as Contract import Data.Either (Either, either, hush) -import Data.Log.Tag - ( TagSet - , booleanTag - , intTag - , jsDateTag - , numberTag - , tag - , tagSetTag - ) as ExportLogTag import Data.Maybe (Maybe, maybe) import Effect.Aff (Aff) import Effect.Aff (Aff, launchAff_) as ExportAff diff --git a/src/Contract/Numeric/NatRatio.purs b/src/Contract/Numeric/NatRatio.purs index a5d8fe747..93abdb910 100644 --- a/src/Contract/Numeric/NatRatio.purs +++ b/src/Contract/Numeric/NatRatio.purs @@ -5,11 +5,8 @@ module Contract.Numeric.NatRatio (module NatRatio) where import Ctl.Internal.Types.NatRatio ( NatRatio , denominator - , denominatorAsNat , fromBigInts - , fromNaturals , fromRational , numerator - , numeratorAsNat , toRational ) as NatRatio diff --git a/src/Contract/Numeric/Rational.purs b/src/Contract/Numeric/Rational.purs index 21cc61ca0..f689ad39c 100644 --- a/src/Contract/Numeric/Rational.purs +++ b/src/Contract/Numeric/Rational.purs @@ -7,7 +7,6 @@ import Ctl.Internal.Types.Rational ( class RationalComponent , Rational , denominator - , denominatorAsNat , numerator , recip , reduce diff --git a/src/Contract/PlutusData.purs b/src/Contract/PlutusData.purs index 01aa8f1e8..eb5e4b21a 100644 --- a/src/Contract/PlutusData.purs +++ b/src/Contract/PlutusData.purs @@ -1,102 +1,17 @@ --- | This module that defines query functionality via Ogmios to get `PlutusData` --- | from `DatumHash` along with related `PlutusData` newtype wrappers such as --- | `Datum` and `Redeemer`. It also contains typeclasses like `FromData` and --- | `ToData` plus everything related to `PlutusSchema`. +-- | This module that defines query functionality to get `PlutusData` +-- | from `DatumHash`. module Contract.PlutusData ( getDatumByHash , getDatumsByHashes , getDatumsByHashesWithErrors - , module DataSchema - , module Datum - , module Hashing - , module IsData - , module Nat - , module PlutusData - , module Serialization - , module Deserialization - , module Redeemer - , module FromData - , module ToData - , module OutputDatum ) where import Prelude -import Cardano.Types.PlutusData - ( PlutusData(Constr, Map, List, Integer, Bytes) - ) as PlutusData +import Cardano.Types (DataHash, PlutusData) import Contract.Monad (Contract) import Control.Parallel (parTraverse) import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.Deserialization.PlutusData (deserializeData) as Deserialization -import Ctl.Internal.FromData - ( class FromData - , class FromDataArgs - , class FromDataArgsRL - , class FromDataWithSchema - , FromDataError - ( ArgsWantedButGot - , FromDataFailed - , BigNumToIntFailed - , IndexWantedButGot - , WantedConstrGot - ) - , fromData - , fromDataArgs - , fromDataArgsRec - , fromDataWithSchema - , genericFromData - ) as FromData -import Ctl.Internal.Hashing (datumHash) as Hashing -import Ctl.Internal.IsData (class IsData) as IsData -import Ctl.Internal.Plutus.Types.DataSchema - ( class AllUnique2 - , class HasPlutusSchema - , class PlutusSchemaToRowListI - , class SchemaToRowList - , class ValidPlutusSchema - , type (:+) - , type (:=) - , type (@@) - , ApPCons - , Field - , I - , Id - , IxK - , MkField - , MkField_ - , MkIxK - , MkIxK_ - , PCons - , PNil - , PSchema - ) as DataSchema -import Ctl.Internal.Serialization (serializeData) as Serialization -import Ctl.Internal.ToData - ( class ToData - , class ToDataArgs - , class ToDataArgsRL - , class ToDataArgsRLHelper - , class ToDataWithSchema - , genericToData - , toData - , toDataArgs - , toDataArgsRec - , toDataArgsRec' - , toDataWithSchema - ) as ToData -import Ctl.Internal.TypeLevel.Nat (Nat, S, Z) as Nat -import Ctl.Internal.Types.Datum (DataHash, Datum) -import Ctl.Internal.Types.Datum (DataHash(DataHash), Datum(Datum), unitDatum) as Datum -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - ) as OutputDatum -import Ctl.Internal.Types.Redeemer - ( Redeemer(Redeemer) - , RedeemerHash(RedeemerHash) - , redeemerHash - , unitRedeemer - ) as Redeemer import Data.Either (Either(Left, Right), hush) import Data.Map (Map) import Data.Map as Map @@ -105,7 +20,7 @@ import Data.Tuple (Tuple(Tuple)) import Effect.Aff.Class (liftAff) -- | Retrieve the full resolved datum associated to a given datum hash. -getDatumByHash :: DataHash -> Contract (Maybe Datum) +getDatumByHash :: DataHash -> Contract (Maybe PlutusData) getDatumByHash dataHash = do queryHandle <- getQueryHandle liftAff $ join <<< hush <$> queryHandle.getDatumByHash dataHash @@ -113,14 +28,14 @@ getDatumByHash dataHash = do -- | Retrieve full resolved datums associated with given datum hashes. -- | The resulting `Map` will only contain datums that have been successfully -- | resolved. -getDatumsByHashes :: Array DataHash -> Contract (Map DataHash Datum) +getDatumsByHashes :: Array DataHash -> Contract (Map DataHash PlutusData) getDatumsByHashes hashes = Map.mapMaybe hush <$> getDatumsByHashesWithErrors hashes -- | Retrieve full resolved datums associated with given datum hashes. -- | Errors are returned per datum. getDatumsByHashesWithErrors - :: Array DataHash -> Contract (Map DataHash (Either String Datum)) + :: Array DataHash -> Contract (Map DataHash (Either String PlutusData)) getDatumsByHashesWithErrors hashes = do queryHandle <- getQueryHandle liftAff $ Map.fromFoldable <$> flip parTraverse hashes diff --git a/src/Contract/Prim/ByteArray.purs b/src/Contract/Prim/ByteArray.purs index 51ba3f47e..6efc7cec5 100644 --- a/src/Contract/Prim/ByteArray.purs +++ b/src/Contract/Prim/ByteArray.purs @@ -5,7 +5,7 @@ module Contract.Prim.ByteArray , module RawBytes ) where -import Ctl.Internal.Types.CborBytes +import Cardano.Types.CborBytes ( CborBytes(CborBytes) ) as CborBytes import Ctl.Internal.Types.RawBytes diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index 3e489fba0..11f7ebd28 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -7,13 +7,8 @@ import Ctl.Internal.Types.ScriptLookups ( ScriptLookups(ScriptLookups) , datum , mintingPolicy - , mintingPolicyM , ownPaymentPubKeyHash - , ownPaymentPubKeyHashM , ownStakePubKeyHash - , ownStakePubKeyHashM , unspentOutputs - , unspentOutputsM , validator - , validatorM ) as X diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index 6a19018d8..2c62afd55 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -4,50 +4,16 @@ module Contract.Scripts ( getScriptByHash , getScriptsByHashes - , module ExportScripts - , module Hash - , module NativeScript - , module TypesScripts - , module X ) where import Prelude +import Cardano.Types (ScriptHash) +import Cardano.Types.ScriptRef (ScriptRef) import Contract.Monad (Contract) import Control.Parallel (parTraverse) -import Ctl.Internal.ApplyArgs (ApplyArgsError(ApplyArgsError), applyArgs) as X -import Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptPubkey - , ScriptAll - , ScriptAny - , ScriptNOfK - , TimelockStart - , TimelockExpiry - ) - ) as NativeScript -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef) import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.NativeScripts (NativeScriptHash(NativeScriptHash)) as X -import Ctl.Internal.Scripts - ( mintingPolicyHash - , nativeScriptStakeValidatorHash - , plutusScriptStakeValidatorHash - , validatorHash - ) as ExportScripts -import Ctl.Internal.Serialization.Hash (ScriptHash) -import Ctl.Internal.Serialization.Hash (ScriptHash) as Hash import Ctl.Internal.Service.Error (ClientError) -import Ctl.Internal.Types.Scripts - ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) - , MintingPolicyHash(MintingPolicyHash) - , NativeScriptStakeValidator(NativeScriptStakeValidator) - , PlutusScript(PlutusScript) - , PlutusScriptStakeValidator(PlutusScriptStakeValidator) - , StakeValidatorHash(StakeValidatorHash) - , Validator(Validator) - , ValidatorHash(ValidatorHash) - ) as TypesScripts import Data.Either (Either) import Data.Map (Map) import Data.Map as Map diff --git a/src/Contract/Staking.purs b/src/Contract/Staking.purs index befb8fba1..4e1517c9d 100644 --- a/src/Contract/Staking.purs +++ b/src/Contract/Staking.purs @@ -7,16 +7,16 @@ module Contract.Staking import Prelude +import Cardano.Types (PoolPubKeyHash, StakePubKeyHash) import Contract.Monad (Contract) import Control.Monad.Reader (asks) -import Ctl.Internal.Cardano.Types.Transaction (PoolPubKeyHash) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) as X --- import Ctl.Internal.Types.PubKeyHash (StakePubKeyHash) -import Ctl.Internal.Types.Scripts (StakeValidatorHash) +import Ctl.Internal.Types.StakeValidatorHash (StakeValidatorHash) import Data.Either (either) import Data.Maybe (Maybe) +import Data.Newtype (unwrap) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (throw) @@ -46,5 +46,5 @@ getValidatorHashDelegationsAndRewards stakeValidatorHash = do networkId <- asks _.networkId liftAff do queryHandle.getValidatorHashDelegationsAndRewards networkId - stakeValidatorHash + (unwrap stakeValidatorHash) >>= either (liftEffect <<< throw <<< show) pure diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 255e25430..2476559e3 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -65,46 +65,42 @@ module Contract.Test.Assert import Prelude +import Cardano.FromMetadata (fromMetadata) import Cardano.Serialization.Lib (toBytes) -import Contract.Address (Address) -import Contract.Monad (Contract) -import Contract.PlutusData (OutputDatum) -import Contract.Prelude (Effect) -import Contract.Transaction - ( ScriptRef +import Cardano.Types + ( Address + , Asset(Asset) + , AssetName + , ExUnits(ExUnits) + , OutputDatum + , ScriptHash + , ScriptRef + , Transaction , TransactionHash - , TransactionOutputWithRefScript - , getTxMetadata + , TransactionOutput + , Value ) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Value as Value +import Contract.Monad (Contract) +import Contract.Prelude (Effect) +import Contract.Transaction (getTxMetadata) import Contract.Utxos (utxosAt) -import Contract.Value (AssetName, CurrencySymbol, Value, valueOf, valueToCoin') import Contract.Wallet (getWalletBalance, getWalletUtxos) import Control.Monad.Error.Class (liftEither, throwError) import Control.Monad.Error.Class as E import Control.Monad.Reader (ReaderT, ask, local, mapReaderT, runReaderT) import Control.Monad.Trans.Class (lift) -import Ctl.Internal.Cardano.Types.Transaction - ( ExUnits - , Transaction - , _redeemers - , _witnessSet - ) import Ctl.Internal.Contract.Monad (ContractEnv) -import Ctl.Internal.Metadata.FromMetadata (fromMetadata) +import Ctl.Internal.Lens (_amount, _datum, _redeemers, _scriptRef, _witnessSet) import Ctl.Internal.Metadata.MetadataType (class MetadataType, metadataLabel) -import Ctl.Internal.Plutus.Types.Transaction - ( _amount - , _datum - , _output - , _scriptRef - ) import Data.Array (foldr) import Data.Array (fromFoldable, length, mapWithIndex, partition) as Array import Data.ByteArray (byteArrayToHex) import Data.Either (Either, either, hush) -import Data.Foldable (fold, foldMap, null, sum) +import Data.Foldable (fold, foldMap, null) import Data.Generic.Rep (class Generic) -import Data.Lens (non, to, traversed, view, (%~), (^.), (^..)) +import Data.Lens (to, view, (%~), (^.)) import Data.Lens.Record (prop) import Data.List (List(Cons, Nil)) import Data.Map (empty, filterKeys, lookup, values) as Map @@ -133,11 +129,11 @@ data ContractAssertionFailure = CouldNotGetTxByHash TransactionHash | CouldNotParseMetadata Label | TransactionHasNoMetadata TransactionHash (Maybe Label) - | UnexpectedDatumInOutput (Labeled TransactionOutputWithRefScript) - (ExpectedActual OutputDatum) + | UnexpectedDatumInOutput (Labeled TransactionOutput) + (ExpectedActual (Maybe OutputDatum)) | UnexpectedLovelaceDelta (Maybe (Labeled Address)) (ExpectedActual BigInt) | UnexpectedMetadataValue Label (ExpectedActual String) - | UnexpectedRefScriptInOutput (Labeled TransactionOutputWithRefScript) + | UnexpectedRefScriptInOutput (Labeled TransactionOutput) (ExpectedActual (Maybe ScriptRef)) | UnexpectedTokenDelta (Maybe (Labeled Address)) AssetName (ExpectedActual BigInt) @@ -403,7 +399,7 @@ assertNewUtxosAtAddress :: forall (a :: Type) . Labeled Address -> TransactionHash - -> (Array TransactionOutputWithRefScript -> ContractAssertion a) + -> (Array TransactionOutput -> ContractAssertion a) -> ContractAssertion a assertNewUtxosAtAddress addr txHash check = lift (utxosAt $ unlabel addr) >>= \utxos -> @@ -414,7 +410,7 @@ assertNewUtxosAtAddress addr txHash check = assertNewUtxosInWallet :: forall (a :: Type) . TransactionHash - -> (Array TransactionOutputWithRefScript -> ContractAssertion a) + -> (Array TransactionOutput -> ContractAssertion a) -> ContractAssertion a assertNewUtxosInWallet txHash check = lift getWalletUtxos >>= fromMaybe Map.empty >>> \utxos -> @@ -433,18 +429,19 @@ checkExUnitsNotExceed . ExUnits -> ContractCheck a checkExUnitsNotExceed maxExUnits contract = do - (ref :: Ref ExUnits) <- liftEffect $ Ref.new { mem: zero, steps: zero } + (ref :: Ref ExUnits) <- liftEffect $ Ref.new $ ExUnits + { mem: BigNum.zero, steps: BigNum.zero } let submitHook :: Transaction -> Effect Unit submitHook tx = do let - (newExUnits :: ExUnits) = sum $ tx ^.. - _witnessSet - <<< _redeemers - <<< non [] - <<< traversed - <<< to (unwrap >>> _.exUnits) - Ref.modify_ (add newExUnits) ref + (newExUnits :: ExUnits) = + foldr append (ExUnits { mem: BigNum.zero, steps: BigNum.zero }) $ tx + ^. + _witnessSet + <<< _redeemers + <<< to (map (unwrap >>> _.exUnits)) + Ref.modify_ (append newExUnits) ref setSubmitHook :: ContractEnv -> ContractEnv setSubmitHook = @@ -460,7 +457,9 @@ checkExUnitsNotExceed maxExUnits contract = do finalize = do exUnits <- liftEffect $ Ref.read ref assertContract (MaxExUnitsExceeded (ExpectedActual maxExUnits exUnits)) - (maxExUnits.mem >= exUnits.mem && maxExUnits.steps >= exUnits.steps) + ( (unwrap maxExUnits).mem >= (unwrap exUnits).mem && + (unwrap maxExUnits).steps >= (unwrap exUnits).steps + ) pure (mapReaderT (local setSubmitHook) contract /\ finalize) @@ -506,7 +505,8 @@ checkLovelaceDeltaAtAddress addr getExpected comp contract = do \expected -> do let actual :: BigInt - actual = valueToCoin' valueAfter - valueToCoin' valueBefore + actual = BigNum.toBigInt (unwrap (Value.getCoin valueAfter)) - + BigNum.toBigInt (unwrap $ Value.getCoin valueBefore) unexpectedLovelaceDelta :: ContractAssertionFailure unexpectedLovelaceDelta = @@ -557,7 +557,7 @@ checkLossAtAddress' addr minLoss = checkTokenDeltaAtAddress :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ AssetName) + -> (ScriptHash /\ AssetName) -> (Maybe a -> Contract BigInt) -> (BigInt -> BigInt -> Boolean) -> ContractCheck a @@ -571,7 +571,9 @@ checkTokenDeltaAtAddress addr (cs /\ tn) getExpected comp contract = \expected -> do let actual :: BigInt - actual = valueOf valueAfter cs tn - valueOf valueBefore cs tn + actual = + (BigNum.toBigInt $ Value.valueOf (Asset cs tn) valueAfter) - + (BigNum.toBigInt $ Value.valueOf (Asset cs tn) valueBefore) unexpectedTokenDelta :: ContractAssertionFailure unexpectedTokenDelta = @@ -584,7 +586,7 @@ checkTokenDeltaAtAddress addr (cs /\ tn) getExpected comp contract = checkTokenGainAtAddress :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ AssetName) + -> (ScriptHash /\ AssetName) -> (Maybe a -> Contract BigInt) -> ContractCheck a checkTokenGainAtAddress addr token getMinGain = @@ -595,7 +597,7 @@ checkTokenGainAtAddress addr token getMinGain = checkTokenGainAtAddress' :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ AssetName /\ BigInt) + -> (ScriptHash /\ AssetName /\ BigInt) -> ContractCheck a checkTokenGainAtAddress' addr (cs /\ tn /\ minGain) = checkTokenGainAtAddress addr (cs /\ tn) (const $ pure minGain) @@ -605,7 +607,7 @@ checkTokenGainAtAddress' addr (cs /\ tn /\ minGain) = checkTokenLossAtAddress :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ AssetName) + -> (ScriptHash /\ AssetName) -> (Maybe a -> Contract BigInt) -> ContractCheck a checkTokenLossAtAddress addr token getMinLoss = @@ -616,7 +618,7 @@ checkTokenLossAtAddress addr token getMinLoss = checkTokenLossAtAddress' :: forall (a :: Type) . Labeled Address - -> (CurrencySymbol /\ AssetName /\ BigInt) + -> (ScriptHash /\ AssetName /\ BigInt) -> ContractCheck a checkTokenLossAtAddress' addr (cs /\ tn /\ minLoss) = checkTokenLossAtAddress addr (cs /\ tn) (const $ pure minLoss) @@ -657,7 +659,8 @@ checkLovelaceDeltaInWallet getExpected comp contract = do \expected -> do let actual :: BigInt - actual = valueToCoin' valueAfter - valueToCoin' valueBefore + actual = BigNum.toBigInt (unwrap (Value.getCoin valueAfter)) - + BigNum.toBigInt (unwrap (Value.getCoin valueBefore)) unexpectedLovelaceDelta :: ContractAssertionFailure unexpectedLovelaceDelta = @@ -703,7 +706,7 @@ checkLossInWallet' minLoss = checkTokenDeltaInWallet :: forall (a :: Type) - . (CurrencySymbol /\ AssetName) + . (ScriptHash /\ AssetName) -> (Maybe a -> Contract BigInt) -> (BigInt -> BigInt -> Boolean) -> ContractCheck a @@ -717,7 +720,8 @@ checkTokenDeltaInWallet (cs /\ tn) getExpected comp contract = \expected -> do let actual :: BigInt - actual = valueOf valueAfter cs tn - valueOf valueBefore cs tn + actual = BigNum.toBigInt (Value.valueOf (Asset cs tn) valueAfter) - + BigNum.toBigInt (Value.valueOf (Asset cs tn) valueBefore) unexpectedTokenDelta :: ContractAssertionFailure unexpectedTokenDelta = @@ -729,7 +733,7 @@ checkTokenDeltaInWallet (cs /\ tn) getExpected comp contract = -- | by calling the contract. checkTokenGainInWallet :: forall (a :: Type) - . (CurrencySymbol /\ AssetName) + . (ScriptHash /\ AssetName) -> (Maybe a -> Contract BigInt) -> ContractCheck a checkTokenGainInWallet token getMinGain = @@ -739,7 +743,7 @@ checkTokenGainInWallet token getMinGain = -- | by calling the contract. checkTokenGainInWallet' :: forall (a :: Type) - . (CurrencySymbol /\ AssetName /\ BigInt) + . (ScriptHash /\ AssetName /\ BigInt) -> ContractCheck a checkTokenGainInWallet' (cs /\ tn /\ minGain) = checkTokenGainInWallet (cs /\ tn) (const $ pure minGain) @@ -748,7 +752,7 @@ checkTokenGainInWallet' (cs /\ tn /\ minGain) = -- | by calling the contract. checkTokenLossInWallet :: forall (a :: Type) - . (CurrencySymbol /\ AssetName) + . (ScriptHash /\ AssetName) -> (Maybe a -> Contract BigInt) -> ContractCheck a checkTokenLossInWallet token getMinLoss = @@ -758,21 +762,21 @@ checkTokenLossInWallet token getMinLoss = -- | by calling the contract. checkTokenLossInWallet' :: forall (a :: Type) - . (CurrencySymbol /\ AssetName /\ BigInt) + . (ScriptHash /\ AssetName /\ BigInt) -> ContractCheck a checkTokenLossInWallet' (cs /\ tn /\ minLoss) = checkTokenLossInWallet (cs /\ tn) (const $ pure minLoss) --------------------- Datums and scripts ---------------------------------------- --- | Requires that the transaction output contains the specified datum or --- | datum hash. +-- | Requires that the transaction output contains the specified datum, +-- | datum hash or does not contain anything. assertOutputHasDatum - :: OutputDatum - -> Labeled TransactionOutputWithRefScript + :: Maybe OutputDatum + -> Labeled TransactionOutput -> ContractAssertion Unit assertOutputHasDatum expectedDatum txOutput = do - let actualDatum = unlabel txOutput ^. _output <<< _datum + let actualDatum = unlabel txOutput ^. _datum assertContractExpectedActual (UnexpectedDatumInOutput txOutput) expectedDatum actualDatum @@ -781,7 +785,7 @@ assertOutputHasDatum expectedDatum txOutput = do -- | script. assertOutputHasRefScript :: ScriptRef - -> Labeled TransactionOutputWithRefScript + -> Labeled TransactionOutput -> ContractAssertion Unit assertOutputHasRefScript expectedRefScript txOutput = do let actualRefScript = unlabel txOutput ^. _scriptRef @@ -807,7 +811,7 @@ assertTxHasMetadata mdLabel txHash expectedMetadata = do rawMetadata <- assertContractMaybe (TransactionHasNoMetadata txHash (Just mdLabel)) - ( Map.lookup (metadataLabel (Proxy :: Proxy metadata)) + ( Map.lookup (unwrap $ metadataLabel (Proxy :: Proxy metadata)) (unwrap generalMetadata) ) @@ -824,7 +828,7 @@ assertTxHasMetadata mdLabel txHash expectedMetadata = do getValueAtAddress :: Labeled Address -> ContractAssertion Value -getValueAtAddress = map (foldMap (view (_output <<< _amount))) <<< lift +getValueAtAddress = map (foldMap (view (_amount))) <<< lift <<< utxosAt <<< unlabel diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index 0fc401650..8a5d4b5ad 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -10,16 +10,16 @@ module Contract.Time , module ExportOgmios , module ExportSystemStart , module Interval - , module SerializationAddress ) where import Prelude +import Cardano.Types (BigNum(..), Epoch(..), Slot) +import Cardano.Types.BigNum as BigNum import Contract.Chain (getTip) as Chain import Contract.Log (logInfo') import Contract.Monad (Contract, liftContractM, liftedE) import Control.Monad.Reader.Class (asks) -import Ctl.Internal.Cardano.Types.Transaction (Epoch(Epoch)) import Ctl.Internal.Contract (getChainTip) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Helpers (liftM) @@ -28,8 +28,6 @@ import Ctl.Internal.QueryM.Ogmios ( CurrentEpoch(CurrentEpoch) , OgmiosEraSummaries(OgmiosEraSummaries) ) as ExportOgmios -import Ctl.Internal.Serialization.Address (BlockId(BlockId), Slot(Slot)) as SerializationAddress -import Ctl.Internal.Serialization.Address (Slot) import Ctl.Internal.Types.Chain ( BlockHeaderHash(BlockHeaderHash) , ChainTip(ChainTip) @@ -44,10 +42,7 @@ import Ctl.Internal.Types.EraSummaries , SafeZone(SafeZone) , SlotLength(SlotLength) ) as ExportEraSummaries -import Ctl.Internal.Types.EraSummaries - ( EraSummaries - , EraSummary - ) +import Ctl.Internal.Types.EraSummaries (EraSummaries, EraSummary) import Ctl.Internal.Types.Interval ( AbsTime(AbsTime) , Closure @@ -178,10 +173,10 @@ normalizeTimeInterval = case _ of getCurrentEpoch :: Contract Epoch getCurrentEpoch = do queryHandle <- getQueryHandle - CurrentEpoch bigInt <- liftAff $ queryHandle.getCurrentEpoch + CurrentEpoch bigNum <- liftAff $ queryHandle.getCurrentEpoch map Epoch $ liftM (error "Unable to convert CurrentEpoch") $ UInt.fromString - $ BigInt.toString (bigInt :: BigInt.BigInt) + $ BigNum.toString (bigNum :: BigNum) -- | Get `EraSummaries` as used for Slot arithemetic. -- | diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index ecbb79892..d1d5423b5 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -8,19 +8,10 @@ module Contract.Transaction , balanceTxWithConstraintsE , balanceTxs , balanceTxsWithConstraints - , calculateMinFee , createAdditionalUtxos - , getTxFinalFee , getTxMetadata , module BalanceTxError , module FinalizedTransaction - , module NativeScript - , module OutputDatum - , module PTransaction - , module PTransactionUnspentOutput - , module ScriptRef - , module Scripts - , module Transaction , module X , signTransaction , submit @@ -36,19 +27,22 @@ module Contract.Transaction import Prelude import Aeson (class EncodeAeson) -import Contract.ClientError (ClientError) -import Contract.Metadata (GeneralTransactionMetadata) -import Contract.Monad - ( Contract - , liftContractM - , runContractInEnv +import Cardano.Types + ( Coin + , GeneralTransactionMetadata + , Transaction(Transaction) + , TransactionHash + , TransactionInput(TransactionInput) + , TransactionOutput + , UtxoMap ) -import Contract.TxConstraints (TxConstraints) +import Cardano.Types.Transaction as Hashing +import Contract.Monad (Contract, runContractInEnv) import Contract.UnbalancedTx (mkUnbalancedTx) import Control.Monad.Error.Class (catchError, liftEither, throwError) import Control.Monad.Reader (ReaderT, asks, runReaderT) import Control.Monad.Reader.Class (ask) -import Ctl.Internal.BalanceTx (balanceTxWithConstraints) as BalanceTx +import Ctl.Internal.BalanceTx as B import Ctl.Internal.BalanceTx.Constraints (BalanceTxConstraintsBuilder) import Ctl.Internal.BalanceTx.Error ( Actual(Actual) @@ -70,101 +64,17 @@ import Ctl.Internal.BalanceTx.Error , explainBalanceTxError ) as BalanceTxError import Ctl.Internal.BalanceTx.Types (FinalizedTransaction) -import Ctl.Internal.BalanceTx.Types (FinalizedTransaction(FinalizedTransaction)) as FinalizedTransaction +import Ctl.Internal.BalanceTx.Types + ( FinalizedTransaction(FinalizedTransaction) + ) as FinalizedTransaction import Ctl.Internal.BalanceTx.UnattachedTx (UnindexedTx) -import Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptPubkey - , ScriptAll - , ScriptAny - , ScriptNOfK - , TimelockStart - , TimelockExpiry - ) - ) as NativeScript -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(NativeScriptRef, PlutusScriptRef) - , scriptRefFromMintingPolicy - ) as ScriptRef -import Ctl.Internal.Cardano.Types.Transaction - ( AuxiliaryData(AuxiliaryData) - , AuxiliaryDataHash(AuxiliaryDataHash) - , BootstrapWitness - , Certificate - ( StakeRegistration - , StakeDeregistration - , StakeDelegation - , PoolRegistration - , PoolRetirement - , GenesisKeyDelegation - , MoveInstantaneousRewardsCert - ) - , CostModel(CostModel) - , Costmdls(Costmdls) - , Ed25519Signature - , Epoch(Epoch) - , ExUnitPrices - , ExUnits - , GenesisHash(GenesisHash) - , Mint(Mint) - , Nonce(IdentityNonce, HashNonce) - , PoolPubKeyHash(PoolPubKeyHash) - , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) - , ProtocolParamUpdate - , ProtocolVersion - , PublicKey - , Redeemer - , RequiredSigner(RequiredSigner) - , ScriptDataHash(ScriptDataHash) - , SubCoin - , Transaction(Transaction) - , TransactionWitnessSet(TransactionWitnessSet) - , TxBody(TxBody) - , URL(URL) - , UnitInterval - , Update - , Vkey(Vkey) - , Vkeywitness(Vkeywitness) - , _auxiliaryData - , _auxiliaryDataHash - , _body - , _bootstraps - , _certs - , _collateral - , _fee - , _inputs - , _isValid - , _mint - , _nativeScripts - , _networkId - , _outputs - , _plutusData - , _plutusScripts - , _referenceInputs - , _requiredSigners - , _scriptDataHash - , _ttl - , _update - , _validityStartInterval - , _vkeys - , _withdrawals - , _witnessSet - , mkPoolPubKeyHash - , poolPubKeyHashToBech32 - ) as Transaction -import Ctl.Internal.Cardano.Types.Transaction - ( Transaction - , TransactionOutput - , _body - , _outputs - ) import Ctl.Internal.Contract.AwaitTxConfirmed ( awaitTxConfirmed , awaitTxConfirmedWithTimeout , awaitTxConfirmedWithTimeoutSlots , isTxConfirmed ) as X -import Ctl.Internal.Contract.MinFee (calculateMinFee) as Contract +import Ctl.Internal.Contract.MinFee (calculateMinFee) as X import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Contract.QueryHandle.Error (GetTxMetadataError) import Ctl.Internal.Contract.QueryHandle.Error @@ -175,64 +85,16 @@ import Ctl.Internal.Contract.QueryHandle.Error ) ) as X import Ctl.Internal.Contract.Sign (signTransaction) as Contract -import Ctl.Internal.Hashing (transactionHash) as Hashing -import Ctl.Internal.Plutus.Conversion - ( fromPlutusUtxoMap - , toPlutusCoin - , toPlutusTxOutputWithRefScript - ) -import Ctl.Internal.Plutus.Types.Transaction - ( TransactionOutput(TransactionOutput) - , TransactionOutputWithRefScript(TransactionOutputWithRefScript) - ) as PTransaction -import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) -import Ctl.Internal.Plutus.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - , _input - , _output - , lookupTxHash - , mkTxUnspentOut - ) as PTransactionUnspentOutput -import Ctl.Internal.Plutus.Types.Value (Coin) +import Ctl.Internal.Lens (_body, _fee, _outputs) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) -import Ctl.Internal.Serialization (convertTransaction) -import Ctl.Internal.Types.OutputDatum - ( OutputDatum(NoOutputDatum, OutputDatumHash, OutputDatum) - , outputDatumDataHash - , outputDatumDatum - ) as OutputDatum -import Ctl.Internal.Types.RewardAddress - ( RewardAddress - , rewardAddressFromBech32 - , rewardAddressFromBytes - , rewardAddressToBech32 - , rewardAddressToBytes - ) as X +import Ctl.Internal.Service.Error (ClientError) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) -import Ctl.Internal.Types.Scripts - ( Language(PlutusV1, PlutusV2) - , plutusV1Script - , plutusV2Script - ) as Scripts -import Ctl.Internal.Types.Transaction - ( DataHash(DataHash) - , TransactionHash(TransactionHash) - , TransactionInput(TransactionInput) - ) as Transaction -import Ctl.Internal.Types.Transaction - ( TransactionHash - , TransactionInput(TransactionInput) - ) +import Ctl.Internal.Types.TxConstraints (TxConstraints) import Ctl.Internal.Types.UsedTxOuts ( UsedTxOuts , lockTransactionInputs , unlockTransactionInputs ) -import Ctl.Internal.Types.VRFKeyHash - ( VRFKeyHash - , vrfKeyHashFromBytes - , vrfKeyHashToBytes - ) as X import Data.Array.NonEmpty as NonEmptyArray import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right)) @@ -251,18 +113,19 @@ import Effect.Aff (bracket, error) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (try) -import JS.BigInt (BigInt) +import Prim.Coerce (class Coercible) +import Safe.Coerce (coerce) -- | Signs a transaction with potential failure. signTransaction :: forall (tx :: Type) - . Newtype tx Transaction + . Coercible tx Transaction => tx -> Contract BalancedSignedTransaction signTransaction = map BalancedSignedTransaction <<< Contract.signTransaction - <<< unwrap + <<< coerce -- | Submits a `BalancedSignedTransaction`, which is the output of -- | `signTransaction`. @@ -287,16 +150,6 @@ submitE tx = do traverse \hook -> liftEffect $ void $ try $ hook $ unwrap tx pure eiTxHash --- | Calculate the minimum transaction fee. -calculateMinFee - :: Transaction - -> UtxoMap - -> Contract Coin -calculateMinFee tx additionalUtxos = do - networkId <- asks _.networkId - let additionalUtxos' = fromPlutusUtxoMap networkId additionalUtxos - toPlutusCoin <$> Contract.calculateMinFee tx additionalUtxos' - -- | Helper to adapt to UsedTxOuts. withUsedTxOuts :: forall (a :: Type) @@ -413,7 +266,7 @@ balanceTxWithConstraintsE tx = let tx' /\ ix = unUnbalancedTx tx in - BalanceTx.balanceTxWithConstraints tx' ix + B.balanceTxWithConstraints tx' ix -- | Attempts to balance an `UnbalancedTx` using the specified -- | balancer constraints. @@ -500,9 +353,9 @@ derive newtype instance EncodeAeson BalancedSignedTransaction instance Show BalancedSignedTransaction where show = genericShow -getTxFinalFee :: BalancedSignedTransaction -> BigInt +getTxFinalFee :: BalancedSignedTransaction -> Coin getTxFinalFee = - unwrap <<< view (Transaction._body <<< Transaction._fee) <<< unwrap + view (_body <<< _fee) <<< unwrap -- | Fetch transaction metadata. -- | Returns `Right` when the transaction exists and metadata was non-empty @@ -518,33 +371,27 @@ getTxMetadata th = do -- | transaction hash and indexing the outputs in the order they appear in the -- | transaction. This function should be used for transaction chaining -- | in conjunction with `mustUseAdditionalUtxos` balancer constraint. --- | Throws an exception if conversion to Plutus outputs fails. createAdditionalUtxos :: forall (tx :: Type) - . Newtype tx Transaction + . Coercible tx Transaction => tx -> Contract UtxoMap createAdditionalUtxos tx = do - transactionId <- - liftEffect $ Hashing.transactionHash <$> convertTransaction (unwrap tx) + let transactionId = Hashing.hashTransaction $ coerce tx let txOutputs :: Array TransactionOutput - txOutputs = view (_body <<< _outputs) (unwrap tx) + txOutputs = view (_body <<< _outputs) $ coerce tx txIn :: UInt -> TransactionInput txIn index = TransactionInput { transactionId, index } - plutusOutputs <- - liftContractM "createAdditionalUtxos: Failed to convert to Plutus outputs" - (traverse toPlutusTxOutputWithRefScript txOutputs) - - pure $ plutusOutputs # + pure $ txOutputs # foldl (\utxo txOut -> Map.insert (txIn $ length utxo) txOut utxo) Map.empty submitTxFromConstraintsReturningFee :: ScriptLookups -> TxConstraints - -> Contract { txHash :: TransactionHash, txFinalFee :: BigInt } + -> Contract { txHash :: TransactionHash, txFinalFee :: Coin } submitTxFromConstraintsReturningFee lookups constraints = do unbalancedTx <- mkUnbalancedTx lookups constraints balancedTx <- balanceTx unbalancedTx diff --git a/src/Contract/TxConstraints.purs b/src/Contract/TxConstraints.purs index 0ccfdde20..cd87d375e 100644 --- a/src/Contract/TxConstraints.purs +++ b/src/Contract/TxConstraints.purs @@ -8,7 +8,6 @@ import Ctl.Internal.Types.TxConstraints , InputWithScriptRef(RefInput, SpendInput) , OutputConstraint(OutputConstraint) , TxConstraints(TxConstraints) - , isSatisfiable , mustBeSignedBy , mustDelegateStakeNativeScript , mustDelegateStakePlutusScript @@ -41,7 +40,6 @@ import Ctl.Internal.Types.TxConstraints , mustPayToScriptAddressWithScriptRef , mustPayToScriptWithScriptRef , mustProduceAtLeast - , mustProduceAtLeastTotal , mustReferenceOutput , mustRegisterPool , mustRegisterStakePubKey @@ -49,7 +47,6 @@ import Ctl.Internal.Types.TxConstraints , mustRetirePool , mustSatisfyAnyOf , mustSpendAtLeast - , mustSpendAtLeastTotal , mustSpendNativeScriptOutput , mustSpendPubKeyOutput , mustSpendScriptOutput @@ -58,9 +55,5 @@ import Ctl.Internal.Types.TxConstraints , mustWithdrawStakeNativeScript , mustWithdrawStakePlutusScript , mustWithdrawStakePubKey - , pubKeyPayments - , requiredDatums - , requiredMonetaryPolicies - , requiredSignatories , singleton ) as TxConstraints diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 1bb9ceec5..4d13f7fb4 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -10,7 +10,7 @@ import Prelude import Contract.Monad (Contract) import Control.Monad.Error.Class (throwError) -import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) as PC +import Ctl.Internal.ProcessConstraints as PC import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError , explainMkUnbalancedTxError diff --git a/src/Contract/Value.purs b/src/Contract/Value.purs deleted file mode 100644 index 1f187a966..000000000 --- a/src/Contract/Value.purs +++ /dev/null @@ -1,46 +0,0 @@ --- | A module that defines tokens in Cardano and helpers. -module Contract.Value - ( module CurrencySymbol - , module AssetName - , module Value - ) where - -import Cardano.Types.AssetName - ( AssetName - , mkAssetName - ) as AssetName -import Ctl.Internal.Plutus.Types.CurrencySymbol - ( CurrencySymbol - , adaSymbol - , currencyMPSHash - , getCurrencySymbol - , mkCurrencySymbol - , mpsSymbol - , scriptHashAsCurrencySymbol - ) as CurrencySymbol -import Ctl.Internal.Plutus.Types.Value - ( Coin(Coin) - , Value - , coinToValue - , flattenMultiAssets - , flattenValue - , geq - , getLovelace - , getValue - , gt - , isCoinZero - , isZero - , leq - , lovelaceValueOf - , lt - , negation - , scale - , singleton - , singleton' - , split - , symbols - , unionWith - , valueOf - , valueToCoin - , valueToCoin' - ) as Value diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 1f89fbcc8..12ddc324f 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -4,9 +4,35 @@ module Ctl.Internal.BalanceTx import Prelude +import Cardano.Types + ( AssetClass(AssetClass) + , Certificate(StakeDeregistration, StakeRegistration) + , Coin(Coin) + , Language(PlutusV1) + , PlutusScript(PlutusScript) + , Transaction + , TransactionBody + , TransactionOutput + , UtxoMap + , Value(Value) + ) +import Cardano.Types.Address (Address) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Coin as Coin +import Cardano.Types.OutputDatum (OutputDatum(OutputDatum)) import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutputs +import Cardano.Types.UtxoMap (pprintUtxoMap) +import Cardano.Types.Value + ( getMultiAsset + , lovelaceValueOf + , mkValue + , pprintValue + ) +import Cardano.Types.Value as Value import Contract.Log (logWarn') -import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) +import Control.Monad.Except (class MonadError) +import Control.Monad.Except.Trans (except, runExceptT) import Control.Monad.Logger.Class (info) as Logger import Control.Monad.Reader (asks) import Control.Parallel (parTraverse) @@ -35,16 +61,7 @@ import Ctl.Internal.BalanceTx.Constraints , _selectionStrategy , _srcAddresses ) as Constraints -import Ctl.Internal.BalanceTx.Error - ( BalanceTxError - ( UtxoLookupFailedFor - , UtxoMinAdaValueCalculationFailed - , ReindexRedeemersError - , InsufficientCollateralUtxos - , CouldNotGetCollateral - , CouldNotGetUtxos - ) - ) +import Ctl.Internal.BalanceTx.Error (BalanceTxError(..)) import Ctl.Internal.BalanceTx.ExUnitsAndMinFee ( evalExUnitsAndMinFee , finalizeTransaction @@ -72,12 +89,17 @@ import Ctl.Internal.BalanceTx.UnattachedTx , indexTx ) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) -import Ctl.Internal.Cardano.Types.Transaction - ( Certificate(StakeRegistration, StakeDeregistration) - , Transaction - , TransactionOutput - , TxBody - , UtxoMap +import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex, buildUtxoIndex) +import Ctl.Internal.Contract (getProtocolParameters) +import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos, getQueryHandle) +import Ctl.Internal.Contract.Wallet + ( getChangeAddress + , getWalletCollateral + , getWalletUtxos + ) as Wallet +import Ctl.Internal.Helpers (liftEither, pprintTagSet, (??)) +import Ctl.Internal.Lens + ( _amount , _body , _certs , _fee @@ -89,46 +111,17 @@ import Ctl.Internal.Cardano.Types.Transaction , _referenceInputs , _withdrawals , _witnessSet - , pprintUtxoMap ) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( transactionUnspentOutputsToUtxoMap - ) -import Ctl.Internal.Cardano.Types.Value - ( AssetClass - , Coin(Coin) - , Value(Value) - , coinToValue +import Ctl.Internal.Partition + ( equipartition , equipartitionValueWithTokenQuantityUpperBound - , getMultiAsset - , lovelaceValueOf - , minus - , mkValue - , posMultiAsset - , pprintValue - , valueToCoin' + , partition ) -import Ctl.Internal.Cardano.Types.Value as Value -import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex, buildUtxoIndex) -import Ctl.Internal.Contract (getProtocolParameters) -import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos, getQueryHandle) -import Ctl.Internal.Contract.Wallet - ( getChangeAddress - , getWalletCollateral - , getWalletUtxos - ) as Wallet -import Ctl.Internal.Helpers (liftEither, pprintTagSet, (??)) -import Ctl.Internal.Partition (equipartition, partition) -import Ctl.Internal.Plutus.Conversion (fromPlutusUtxoMap) -import Ctl.Internal.Serialization.Address (Address) -import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) import Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) ) -import Ctl.Internal.Types.Scripts - ( Language(PlutusV1) - , PlutusScript(PlutusScript) - ) +import Ctl.Internal.Types.Val (Val(..), pprintVal) +import Ctl.Internal.Types.Val as Val import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty @@ -143,17 +136,18 @@ import Data.Array.NonEmpty ) as NEArray import Data.Array.NonEmpty as NEA import Data.Bifunctor (lmap) +import Data.Bitraversable (ltraverse) import Data.Either (Either, hush, note) import Data.Foldable (fold, foldMap, foldr, length, null, sum) -import Data.Function (on) +import Data.Lens (view) import Data.Lens.Getter ((^.)) import Data.Lens.Setter ((%~), (.~), (?~)) import Data.Log.Tag (TagSet, tag, tagSetTag) import Data.Log.Tag (fromArray) as TagSet import Data.Map (Map) -import Data.Map (empty, filterKeys, insert, lookup, toUnfoldable, union) as Map -import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isJust, maybe) -import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Map (empty, insert, lookup, singleton, toUnfoldable, union) as Map +import Data.Maybe (Maybe(Just, Nothing), fromJust, isJust, maybe) +import Data.Newtype (unwrap, wrap) import Data.Set (Set) import Data.Set as Set import Data.Traversable (for, traverse) @@ -161,9 +155,8 @@ import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (toInt) as UInt import Effect.Aff.Class (liftAff) -import Effect.Class (liftEffect) import JS.BigInt (BigInt) -import JS.BigInt (toString) as BigInt +import Partial.Unsafe (unsafePartial) -- | Balances an unbalanced transaction using the specified balancer -- | constraints. @@ -177,7 +170,8 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do withBalanceTxConstraints constraintsBuilder $ runExceptT do let - depositValuePerCert = (unwrap pparams).stakeAddressDeposit + depositValuePerCert = BigNum.toBigInt $ unwrap + (unwrap pparams).stakeAddressDeposit certsFee = getStakingBalance (transaction.transaction) depositValuePerCert @@ -246,7 +240,7 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do { strategy: selectionStrategy , transaction: reindexedTransaction , changeAddress - , changeDatum: fromMaybe NoOutputDatum changeDatum' + , changeDatum: changeDatum' , allUtxos , utxos: availableUtxos , certsFee @@ -281,21 +275,18 @@ setTransactionCollateral changeAddr transaction = do when (not $ Array.null filteredUtxos) do logWarn' $ pprintTagSet "Some of the collateral UTxOs returned by the wallet were marked as non-spendable and ignored" - (pprintUtxoMap (transactionUnspentOutputsToUtxoMap filteredUtxos)) + (pprintUtxoMap (TransactionUnspentOutputs.toUtxoMap filteredUtxos)) pure spendableUtxos -- otherwise, get all the utxos, filter out unspendable, and select -- collateral using internal algo, that is also used in KeyWallet Just utxoMap -> do ProtocolParameters params <- liftContract getProtocolParameters - networkId <- askNetworkId let - coinsPerUtxoUnit = params.coinsPerUtxoUnit maxCollateralInputs = UInt.toInt $ params.maxCollateralInputs - utxoMap' = fromPlutusUtxoMap networkId $ Map.filterKeys isSpendable - utxoMap - mbCollateral <- liftEffect $ map Array.fromFoldable <$> - selectCollateral coinsPerUtxoUnit maxCollateralInputs utxoMap' - liftEither $ note (InsufficientCollateralUtxos utxoMap') mbCollateral + mbCollateral = + Array.fromFoldable <$> + selectCollateral params.coinsPerUtxoByte maxCollateralInputs utxoMap + liftEither $ note (InsufficientCollateralUtxos utxoMap) mbCollateral addTxCollateralReturn collateral (addTxCollateral collateral transaction) changeAddr @@ -307,17 +298,17 @@ type BalancerParams = { strategy :: SelectionStrategy , transaction :: UnindexedTx , changeAddress :: Address - , changeDatum :: OutputDatum + , changeDatum :: Maybe OutputDatum , allUtxos :: UtxoMap , utxos :: UtxoMap - , certsFee :: Coin + , certsFee :: BigInt -- can be negative (deregistration) } type BalancerState tx = { transaction :: tx , leftoverUtxos :: UtxoIndex , changeOutputs :: Array TransactionOutput - , minFee :: BigInt + , minFee :: Coin } initBalancerState @@ -326,7 +317,7 @@ initBalancerState -> BalancerState UnindexedTx initBalancerState transaction = buildUtxoIndex >>> - { transaction, leftoverUtxos: _, changeOutputs: mempty, minFee: zero } + { transaction, leftoverUtxos: _, changeOutputs: mempty, minFee: Coin.zero } data BalancerStep = PrebalanceTx (BalancerState UnindexedTx) @@ -338,15 +329,18 @@ runBalancer p = do transaction <- addLovelacesToTransactionOutputs p.transaction mainLoop (initBalancerState transaction utxos.spendable) where + referenceInputSet = Set.fromFoldable $ p.transaction ^. _transaction <<< _body + <<< _referenceInputs + -- We check if the transaction uses a plutusv1 script, so that we can filter -- out utxos which use plutusv2 features if so. txHasPlutusV1 :: Boolean txHasPlutusV1 = case p.transaction ^. _transaction <<< _witnessSet <<< _plutusScripts of - Just scripts -> flip Array.any scripts case _ of + [] -> false + scripts -> flip Array.any scripts case _ of PlutusScript (_ /\ PlutusV1) -> true _ -> false - Nothing -> false partitionAndFilterUtxos :: BalanceTxM { spendable :: UtxoMap, invalidInContext :: UtxoMap } @@ -367,7 +361,7 @@ runBalancer p = do let hasInlineDatum :: Boolean hasInlineDatum = case (unwrap output).datum of - OutputDatum _ -> true + Just (OutputDatum _) -> true _ -> false hasScriptRef :: Boolean @@ -375,10 +369,7 @@ runBalancer p = do spendable :: Boolean spendable = not $ Set.member oref nonSpendableInputs || - Set.member oref - ( p.transaction ^. _transaction <<< _body <<< - _referenceInputs - ) + Set.member oref referenceInputSet validInContext :: Boolean validInContext = not $ txHasPlutusV1 && @@ -413,14 +404,14 @@ runBalancer p = do true -> do logTransaction "Balanced transaction (Done)" p.allUtxos evaluatedTx.transaction - if Set.isEmpty $ evaluatedTx.transaction ^. _body <<< _inputs then + if Array.null $ evaluatedTx.transaction ^. _body <<< _inputs then do selectionState <- performMultiAssetSelection p.strategy leftoverUtxos - (lovelaceValueOf one) + (lovelaceValueOf $ BigNum.one) runNextBalancerStep $ state { transaction = transaction # - _transaction <<< _body <<< _inputs %~ Set.union + _transaction <<< _body <<< _inputs %~ append (selectedInputs selectionState) , leftoverUtxos = selectionState ^. _leftoverUtxos @@ -432,7 +423,7 @@ runBalancer p = do false -> runNextBalancerStep $ state { transaction = transaction - # _transaction <<< _body <<< _fee .~ Coin newMinFee + # _transaction <<< _body <<< _fee .~ newMinFee , minFee = newMinFee } @@ -445,11 +436,12 @@ runBalancer p = do :: BalancerState UnindexedTx -> BalanceTxM FinalizedTransaction runNextBalancerStep state@{ transaction } = do let txBody = transaction ^. _transaction <<< _body - inputValue <- except $ getInputValue p.allUtxos txBody + inputValue <- except $ getInputVal p.allUtxos txBody ownWalletAddresses <- asks _.ownAddresses + inputValue' <- liftValue inputValue changeOutputs <- makeChange ownWalletAddresses p.changeAddress p.changeDatum - inputValue + inputValue' p.certsFee txBody @@ -473,7 +465,7 @@ runBalancer p = do { transaction = ( transaction # _transaction <<< _body <<< _inputs %~ - Set.union (selectedInputs selectionState) + append (selectedInputs selectionState) ) , leftoverUtxos = selectionState ^. _leftoverUtxos @@ -482,7 +474,7 @@ runBalancer p = do performCoinSelection :: BalanceTxM SelectionState performCoinSelection = let - txBody :: TxBody + txBody :: TransactionBody txBody = setTxChangeOutputs changeOutputs transaction ^. _transaction <<< _body in @@ -522,17 +514,15 @@ addLovelacesToTransactionOutput :: TransactionOutput -> BalanceTxM TransactionOutput addLovelacesToTransactionOutput txOutput = do coinsPerUtxoUnit <- askCoinsPerUtxoUnit - txOutputMinAda <- - ExceptT $ liftEffect $ utxoMinAdaValue coinsPerUtxoUnit txOutput - <#> note UtxoMinAdaValueCalculationFailed let + txOutputMinAda = Coin $ utxoMinAdaValue coinsPerUtxoUnit txOutput txOutputRec = unwrap txOutput txOutputValue :: Value txOutputValue = txOutputRec.amount newCoin :: Coin - newCoin = Coin $ max (valueToCoin' txOutputValue) txOutputMinAda + newCoin = max (Value.getCoin txOutputValue) txOutputMinAda pure $ wrap txOutputRec { amount = mkValue newCoin (getMultiAsset txOutputValue) } @@ -565,28 +555,31 @@ setTxChangeOutputs outputs tx = makeChange :: Set Address -> Address - -> OutputDatum + -> Maybe OutputDatum -> Value - -> Coin - -> TxBody + -> BigInt + -> TransactionBody -> BalanceTxM (Array TransactionOutput) makeChange ownWalletAddresses changeAddress changeDatum - inputValue + inputValue' certsFee txBody = -- Always generate change when a transaction has no outputs to avoid issues -- with transaction confirmation: -- FIXME: https://github.com/Plutonomicon/cardano-transaction-lib/issues/1293 if excessValue == mempty && (txBody ^. _outputs) /= mempty then pure mempty - else - map (mkChangeOutput changeAddress changeDatum) <$> - ( assignCoinsToChangeValues changeAddress excessCoin - =<< splitOversizedValues changeValueOutputCoinPairs - ) + else do + res <- traverse (ltraverse liftValue) changeValueOutputCoinPairs + >>= splitOversizedValues + >>= + assignCoinsToChangeValues changeAddress excessCoin + pure $ mkChangeOutput changeAddress changeDatum <$> res where + inputValue = Val.fromValue inputValue' + -- | Change `Value`s for all assets, where each change map is paired with a -- | corresponding coin from the original outputs. -- | @@ -595,34 +588,40 @@ makeChange -- | -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/4c2eb651d79212157a749d8e69a48fff30862e93/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1447 - changeValueOutputCoinPairs :: NonEmptyArray (Value /\ BigInt) + changeValueOutputCoinPairs :: NonEmptyArray (Val /\ BigInt) changeValueOutputCoinPairs = outputCoins # NEArray.zip changeForAssets - # NEArray.sortWith (AssetCount <<< fst) + # NEArray.sortWith (Array.length <<< Val.valueAssets <<< fst) where outputCoins :: NonEmptyArray BigInt outputCoins = NEArray.fromArray - (valueToCoin' <<< _.amount <<< unwrap <$> ownAddressOutputs) + ( BigNum.toBigInt <<< unwrap <<< Value.getCoin <<< _.amount <<< unwrap + <$> ownAddressOutputs + ) ?? NEArray.singleton zero splitOversizedValues :: NonEmptyArray (Value /\ BigInt) -> BalanceTxM (NonEmptyArray (Value /\ BigInt)) splitOversizedValues pairs = - asksConstraints Constraints._maxChangeOutputTokenQuantity <#> case _ of - Nothing -> pairs - Just maxTokenQuantity -> - unbundle <$> - ( equipartitionValueWithTokenQuantityUpperBound maxTokenQuantity - =<< map bundle pairs - ) + asksConstraints Constraints._maxChangeOutputTokenQuantity >>= case _ of + Nothing -> pure pairs + Just maxTokenQuantity -> do + traverse bundle pairs <#> \bundled -> + unbundle <$> + ( equipartitionValueWithTokenQuantityUpperBound maxTokenQuantity =<< + bundled + ) where - bundle :: Value /\ BigInt -> Value - bundle (Value _ assets /\ coin) = mkValue (wrap coin) assets + bundle :: Value /\ BigInt -> BalanceTxM Value + bundle (Value _ assets /\ coin) = do + coin' <- liftEither (note NumericOverflowError $ BigNum.fromBigInt coin) + pure $ mkValue (wrap coin') assets unbundle :: Value -> Value /\ BigInt - unbundle (Value coin assets) = mkValue mempty assets /\ unwrap coin + unbundle (Value coin assets) = mkValue mempty assets /\ BigNum.toBigInt + (unwrap coin) -- outputs belonging to one of the wallet's addresses. ownAddressOutputs :: Array TransactionOutput @@ -631,26 +630,27 @@ makeChange isOwnWalletAddress = unwrap >>> _.address >>> flip Set.member ownWalletAddresses - changeForAssets :: NonEmptyArray Value + changeForAssets :: NonEmptyArray Val changeForAssets = foldr (NEArray.zipWith (<>) <<< makeChangeForAsset ownAddressOutputs) (NEArray.replicate (length ownAddressOutputs) mempty) excessAssets excessAssets :: Array (AssetClass /\ BigInt) - excessAssets = Value.valueAssets excessValue + excessAssets = Val.valueAssets excessValue excessCoin :: BigInt - excessCoin = valueToCoin' excessValue + excessCoin = case excessValue of + Val c _ -> c - excessValue :: Value - excessValue = posValue $ - (inputValue <> mintValue txBody) `minus` - (outputValue txBody <> minFeeValue txBody <> coinToValue certsFee) + excessValue :: Val + excessValue = posVal $ + (inputValue <> mintValue txBody) `Val.minus` + (outputValue txBody <> minFeeValue txBody <> Val certsFee Map.empty) - posValue :: Value -> Value - posValue (Value (Coin coin) nonAdaAsset) = - mkValue (Coin $ max coin zero) (posMultiAsset nonAdaAsset) + posVal :: Val -> Val + posVal (Val coin nonAdaAsset) = + Val (max coin zero) $ map (map (max zero)) nonAdaAsset -- | Constructs change outputs for an asset. -- | @@ -668,18 +668,24 @@ makeChange makeChangeForAsset :: Array TransactionOutput -> (AssetClass /\ BigInt) - -> NonEmptyArray Value -makeChangeForAsset ownAddressOutputs (assetClass /\ excess) = - Value.assetToValue assetClass <$> + -> NonEmptyArray Val +makeChangeForAsset + ownAddressOutputs + (assetClass@(AssetClass scriptHash assetName) /\ excess) = + mkVal <$> partition excess weights ?? equipartition excess (length weights) where + mkVal n = Val zero (Map.singleton scriptHash $ Map.singleton assetName n) + weights :: NonEmptyArray BigInt weights = NEArray.fromArray assetQuantities ?? NEArray.singleton one assetQuantities :: Array BigInt assetQuantities = - ownAddressOutputs <#> Value.getAssetQuantity assetClass <<< _.amount <<< - unwrap + ownAddressOutputs <#> BigNum.toBigInt <<< Value.getAssetQuantity assetClass + <<< _.amount + <<< + unwrap -- | Constructs an array of ada change outputs based on the given distribution. -- | @@ -694,9 +700,9 @@ makeChangeForAsset ownAddressOutputs (assetClass /\ excess) = -- | -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/4c2eb651d79212157a749d8e69a48fff30862e93/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1799 -makeChangeForCoin :: NonEmptyArray BigInt -> BigInt -> NonEmptyArray Value +makeChangeForCoin :: NonEmptyArray BigInt -> BigInt -> NonEmptyArray Val makeChangeForCoin weights excess = - lovelaceValueOf <$> + flip Val Map.empty <$> partition excess weights ?? equipartition excess (length weights) -- | Assigns coin quantities to a list of pre-computed change `Value`s. @@ -728,10 +734,11 @@ assignCoinsToChangeValues -> NonEmptyArray (Value /\ BigInt) -> BalanceTxM (Array Value) assignCoinsToChangeValues changeAddress adaAvailable pairsAtStart = - changeValuesAtStart <#> \changeValues -> - worker (adaRequiredAtStart changeValues) changeValues + unsafePartial $ changeValuesAtStart <#> \changeValues -> + fromJust <<< Val.toValue <$> worker (adaRequiredAtStart changeValues) + changeValues where - worker :: BigInt -> NonEmptyArray ChangeValue -> Array Value + worker :: BigInt -> NonEmptyArray ChangeValue -> Array Val worker adaRequired changeValues = changeValues # NEArray.uncons >>> case _ of { head: x, tail } | Just xs <- NEA.fromArray tail @@ -742,14 +749,14 @@ assignCoinsToChangeValues changeAddress adaAvailable pairsAtStart = adaRemaining :: BigInt adaRemaining = max zero (adaAvailable - adaRequired) - changeValuesForOutputCoins :: NonEmptyArray Value + changeValuesForOutputCoins :: NonEmptyArray Val changeValuesForOutputCoins = let weights = _.outputAda <$> changeValues in makeChangeForCoin weights adaRemaining - changeValuesWithMinCoins :: NonEmptyArray Value + changeValuesWithMinCoins :: NonEmptyArray Val changeValuesWithMinCoins = assignMinCoin <$> changeValues in NEArray.toArray $ @@ -757,11 +764,11 @@ assignCoinsToChangeValues changeAddress adaAvailable pairsAtStart = changeValuesForOutputCoins where noTokens :: ChangeValue -> Boolean - noTokens = null <<< Value.valueAssets <<< _.value + noTokens = null <<< Val.getAssets <<< _.value - assignMinCoin :: ChangeValue -> Value - assignMinCoin { value: (Value _ assets), minCoin } = - mkValue (wrap minCoin) assets + assignMinCoin :: ChangeValue -> Val + assignMinCoin { value: (Val _ assets), minCoin } = + Val minCoin assets adaRequiredAtStart :: NonEmptyArray ChangeValue -> BigInt adaRequiredAtStart = sum <<< map _.minCoin @@ -769,28 +776,19 @@ assignCoinsToChangeValues changeAddress adaAvailable pairsAtStart = changeValuesAtStart :: BalanceTxM (NonEmptyArray ChangeValue) changeValuesAtStart = for pairsAtStart \(value /\ outputAda) -> - { value, outputAda, minCoin: _ } <$> minCoinFor value + { value: Val.fromValue value, outputAda, minCoin: _ } <$> minCoinFor value minCoinFor :: Value -> BalanceTxM BigInt minCoinFor value = do let -- NOTE: Datum here doesn't matter, we deconstruct UTxO immediately anyway - txOutput = mkChangeOutput changeAddress NoOutputDatum value - coinsPerUtxoUnit <- askCoinsPerUtxoUnit - ExceptT $ liftEffect $ utxoMinAdaValue coinsPerUtxoUnit txOutput - <#> note UtxoMinAdaValueCalculationFailed + txOutput = mkChangeOutput changeAddress Nothing value + coinsPerUtxoByte <- askCoinsPerUtxoUnit + pure $ BigNum.toBigInt $ utxoMinAdaValue coinsPerUtxoByte txOutput -type ChangeValue = { value :: Value, outputAda :: BigInt, minCoin :: BigInt } +type ChangeValue = { value :: Val, outputAda :: BigInt, minCoin :: BigInt } -newtype AssetCount = AssetCount Value - -derive instance Newtype AssetCount _ -derive newtype instance Eq AssetCount - -instance Ord AssetCount where - compare = compare `on` (Array.length <<< Value.valueAssets <<< unwrap) - -mkChangeOutput :: Address -> OutputDatum -> Value -> TransactionOutput +mkChangeOutput :: Address -> Maybe OutputDatum -> Value -> TransactionOutput mkChangeOutput changeAddress datum amount = wrap { address: changeAddress, amount, datum, scriptRef: Nothing } @@ -798,53 +796,60 @@ mkChangeOutput changeAddress datum amount = wrap -- Getters for various `Value`s -------------------------------------------------------------------------------- -getRequiredValue :: Coin -> UtxoMap -> TxBody -> Either BalanceTxError Value -getRequiredValue certsFee utxos txBody = - getInputValue utxos txBody <#> \inputValue -> - (outputValue txBody <> minFeeValue txBody <> coinToValue certsFee) - `minus` (inputValue <> mintValue txBody) +getRequiredValue + :: BigInt -> UtxoMap -> TransactionBody -> Either BalanceTxError Value +getRequiredValue certsFee utxos txBody = do + val <- getInputVal utxos txBody <#> \inputValue -> + ( outputValue txBody <> minFeeValue txBody <> Val certsFee Map.empty + ) + `Val.minus` (inputValue <> mintValue txBody) + note NumericOverflowError $ Val.toValue val getAmount :: TransactionOutput -> Value getAmount = _.amount <<< unwrap -getInputValue :: UtxoMap -> TxBody -> Either BalanceTxError Value -getInputValue utxos txBody = - foldMap getAmount <$> +getInputVal :: UtxoMap -> TransactionBody -> Either BalanceTxError Val +getInputVal utxos txBody = + foldMap (view _amount >>> Val.fromValue) <$> for (Array.fromFoldable $ txBody ^. _inputs) \oref -> note (UtxoLookupFailedFor oref) (Map.lookup oref utxos) -outputValue :: TxBody -> Value -outputValue txBody = foldMap getAmount (txBody ^. _outputs) +outputValue :: TransactionBody -> Val +outputValue txBody = foldMap (view _amount >>> Val.fromValue) + (txBody ^. _outputs) -minFeeValue :: TxBody -> Value -minFeeValue txBody = mkValue (txBody ^. _fee) mempty +minFeeValue :: TransactionBody -> Val +minFeeValue txBody = Val.fromCoin $ txBody ^. _fee -mintValue :: TxBody -> Value -mintValue txBody = maybe mempty (mkValue mempty <<< unwrap) (txBody ^. _mint) +mintValue :: TransactionBody -> Val +mintValue txBody = maybe mempty Val.fromMint (txBody ^. _mint) -- | Accounts for: -- | -- | - stake registration deposit -- | - stake deregistration deposit returns -- | - stake withdrawals fees -getStakingBalance :: Transaction -> Coin -> Coin +getStakingBalance :: Transaction -> BigInt -> BigInt getStakingBalance tx depositLovelacesPerCert = let stakeDeposits :: BigInt stakeDeposits = - (tx ^. _body <<< _certs) # fold - >>> map - case _ of - StakeRegistration _ -> unwrap depositLovelacesPerCert - StakeDeregistration _ -> negate $ unwrap depositLovelacesPerCert - _ -> zero - >>> sum + (tx ^. _body <<< _certs) # + map + ( case _ of + StakeRegistration _ -> depositLovelacesPerCert + StakeDeregistration _ -> negate $ depositLovelacesPerCert + _ -> zero + ) + >>> sum + + stakeWithdrawals :: BigInt stakeWithdrawals = - unwrap $ fold $ fromMaybe Map.empty $ tx ^. _body <<< + sum $ map (BigNum.toBigInt <<< unwrap) $ tx ^. _body <<< _withdrawals fee = stakeDeposits - stakeWithdrawals in - Coin fee + fee -------------------------------------------------------------------------------- -- Helpers @@ -872,25 +877,29 @@ logTransactionWithChange -> BalanceTxM Unit logTransactionWithChange message utxos mChangeOutputs tx = let - txBody :: TxBody + txBody :: TransactionBody txBody = tx ^. _body outputValuesTagSet :: Maybe (Array TransactionOutput) -> Array TagSet outputValuesTagSet Nothing = - [ "Output Value" `tagSetTag` pprintValue (outputValue txBody) ] + [ "Output Value" `tagSetTag` pprintVal (outputValue txBody) ] outputValuesTagSet (Just changeOutputs) = - [ "Output Value without change" `tagSetTag` pprintValue + [ "Output Value without change" `tagSetTag` pprintVal (outputValue txBody) - , "Change Value" `tagSetTag` pprintValue (foldMap getAmount changeOutputs) + , "Change Value" `tagSetTag` pprintValue + (foldMap (getAmount) changeOutputs) ] - transactionInfo :: Value -> TagSet + transactionInfo :: Val -> TagSet transactionInfo inputValue = TagSet.fromArray $ - [ "Input Value" `tagSetTag` pprintValue inputValue - , "Mint Value" `tagSetTag` pprintValue (mintValue txBody) - , "Fees" `tag` BigInt.toString (unwrap (txBody ^. _fee)) + [ "Input Value" `tagSetTag` pprintVal inputValue + , "Mint Value" `tagSetTag` pprintVal (mintValue txBody) + , "Fees" `tag` BigNum.toString (unwrap (txBody ^. _fee)) ] <> outputValuesTagSet mChangeOutputs in - except (getInputValue utxos txBody) + except (getInputVal utxos txBody) >>= (flip Logger.info (message <> ":") <<< transactionInfo) + +liftValue :: forall a. MonadError BalanceTxError a => Val -> a Value +liftValue val = liftEither $ note NumericOverflowError $ Val.toValue val diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index dad3c7635..863a27eae 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -36,7 +36,6 @@ import Cardano.Types.Value , leq , valueAssets , valueToCoin - , zero ) as Value import Control.Monad.Error.Class ( class MonadError @@ -224,7 +223,7 @@ selectUtxo utxo@(oref /\ out) = balance :: UtxoMap -> Maybe Value balance = Array.fromFoldable >>> map (unwrap >>> _.amount) >>> foldr (\bn mbn -> mbn >>= Value.add bn) - (Just Value.zero) + (Just mempty) -- | Returns the balance of selected utxos. -- | @@ -249,8 +248,8 @@ selectedCoinQuantity :: SelectionState -> Maybe BigNum selectedCoinQuantity = map (unwrap <<< Value.getCoin) <<< selectedBalance -- | Returns the output references of the selected utxos. -selectedInputs :: SelectionState -> Set TransactionInput -selectedInputs = Set.fromFoldable <<< Map.keys <<< view _selectedUtxos +selectedInputs :: SelectionState -> Array TransactionInput +selectedInputs = Array.fromFoldable <<< Map.keys <<< view _selectedUtxos -- | A `SelectionLens` gives `runSelectionStep` the information on the current -- | selection state along with the functions required to transition to the next diff --git a/src/Internal/BalanceTx/Constraints.purs b/src/Internal/BalanceTx/Constraints.purs index 3aaef904d..8fd509df9 100644 --- a/src/Internal/BalanceTx/Constraints.purs +++ b/src/Internal/BalanceTx/Constraints.purs @@ -24,11 +24,11 @@ module Ctl.Internal.BalanceTx.Constraints import Prelude -import Cardano.Types (UtxoMap, Address, TransactionInput) +import Cardano.Types (Address, TransactionInput, UtxoMap) +import Cardano.Types.OutputDatum (OutputDatum) import Ctl.Internal.BalanceTx.CoinSelection ( SelectionStrategy(SelectionStrategyOptimal) ) -import Cardano.Types.OutputDatum (OutputDatum) import Data.Array (singleton) as Array import Data.Function (applyFlipped) import Data.Lens (Lens') diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index f72adb7e4..ea8bbe406 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -16,6 +16,7 @@ module Ctl.Internal.BalanceTx.Error , ReindexRedeemersError , UtxoLookupFailedFor , UtxoMinAdaValueCalculationFailed + , NumericOverflowError ) , Expected(Expected) , printTxEvaluationFailure @@ -81,6 +82,7 @@ data BalanceTxError | ReindexRedeemersError UnindexedRedeemer | UtxoLookupFailedFor TransactionInput | UtxoMinAdaValueCalculationFailed + | NumericOverflowError derive instance Generic BalanceTxError _ @@ -131,6 +133,8 @@ explainBalanceTxError = case _ of <> bugTrackerLink UtxoMinAdaValueCalculationFailed -> "Could not calculate min ADA for UTxO" + NumericOverflowError -> + "Could not compute output value due to numeric overflow. Decrease the quantity of assets" where prettyValue :: String -> Value -> String prettyValue str = pprintValue >>> pprintTagSet str diff --git a/src/Internal/Cardano/TextEnvelope.purs b/src/Internal/Cardano/TextEnvelope.purs index 2842e802c..a161871da 100644 --- a/src/Internal/Cardano/TextEnvelope.purs +++ b/src/Internal/Cardano/TextEnvelope.purs @@ -17,7 +17,6 @@ import Aeson (class DecodeAeson, decodeAeson, parseJsonStringToAeson) import Cardano.Types.Language (Language(..)) import Cardano.Types.PlutusScript (PlutusScript(..)) import Control.Alt ((<|>)) -import Ctl.Internal.Types.Cbor (toByteArray) import Data.ByteArray (ByteArray, hexToByteArray) import Data.Either (hush) import Data.Maybe (Maybe(Nothing)) @@ -68,18 +67,13 @@ newtype TextEnvelope = derive instance Newtype TextEnvelope _ -decodeCborHexToBytes :: String -> Maybe ByteArray -decodeCborHexToBytes cborHex = do - cborBa <- hexToByteArray cborHex - hush $ toByteArray $ wrap $ wrap cborBa - decodeTextEnvelope :: String -> Maybe TextEnvelope decodeTextEnvelope json = do aeson <- hush $ parseJsonStringToAeson json { "type": type_, description, cborHex } <- hush $ decodeAeson aeson :: _ TextEnvelopeRaw - ba <- decodeCborHexToBytes cborHex + ba <- hexToByteArray cborHex pure $ wrap { type_, description, bytes: ba } plutusScriptFromEnvelope diff --git a/src/Internal/Cardano/Types/Value.purs b/src/Internal/Cardano/Types/Value.purs deleted file mode 100644 index 8b35af66f..000000000 --- a/src/Internal/Cardano/Types/Value.purs +++ /dev/null @@ -1,47 +0,0 @@ -module Ctl.Internal.Cardano.Types.Value - ( module X - ) where - -import Cardano.Types.AssetClass (AssetClass(..)) as X -import Cardano.Types.Coin (Coin(..), fromInt, zero) as X -import Cardano.Types.MultiAsset - ( MultiAsset(..) - , add - , empty - , filterMultiAsset - , flatten - , normalizeMultiAsset - , pprintMultiAsset - , singleton - , unflatten - , union - , unionNonAda - , unionWithNonAda - ) as X -import Cardano.Types.Value - ( Value(..) - , assetToValue - , checkBinRel - , checkPred - , coinToValue - , equipartitionAssetsWithTokenQuantityUpperBound - , equipartitionValueWithTokenQuantityUpperBound - , geq - , getAssetQuantity - , getCoin - , getMultiAsset - , gt - , isPositive - , isZero - , leq - , lovelaceValueOf - , lt - , minus - , mkValue - , pprintValue - , unionWith - , valueAssetClasses - , valueAssets - , valueOf - , valueToCoin - ) as X diff --git a/src/Internal/CoinSelection/UtxoIndex.purs b/src/Internal/CoinSelection/UtxoIndex.purs index 48efebf0c..5bae489e9 100644 --- a/src/Internal/CoinSelection/UtxoIndex.purs +++ b/src/Internal/CoinSelection/UtxoIndex.purs @@ -21,13 +21,13 @@ module Ctl.Internal.CoinSelection.UtxoIndex import Prelude +import Cardano.Types (AssetClass, Value) import Cardano.Types.Asset (Asset(AdaAsset)) import Cardano.Types.Asset as Asset import Cardano.Types.BigNum as BigNum import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionOutput (TransactionOutput(..)) import Cardano.Types.UtxoMap (UtxoMap) -import Cardano.Types (AssetClass, Value) import Cardano.Types.Value ( valueAssetClasses , valueAssets diff --git a/src/Internal/Contract.purs b/src/Internal/Contract.purs index 17ac25415..9e7075194 100644 --- a/src/Internal/Contract.purs +++ b/src/Internal/Contract.purs @@ -23,4 +23,3 @@ getChainTip = do getProtocolParameters :: Contract ProtocolParameters getProtocolParameters = asks $ _.ledgerConstants >>> _.pparams - diff --git a/src/Internal/Contract/AwaitTxConfirmed.purs b/src/Internal/Contract/AwaitTxConfirmed.purs index 3b9efbb9f..3492215a2 100644 --- a/src/Internal/Contract/AwaitTxConfirmed.purs +++ b/src/Internal/Contract/AwaitTxConfirmed.purs @@ -7,6 +7,7 @@ module Ctl.Internal.Contract.AwaitTxConfirmed import Prelude +import Cardano.Types (Slot, TransactionHash, TransactionInput(TransactionInput)) import Cardano.Types.BigNum as BigNum import Contract.Monad (liftedE) import Control.Monad.Reader.Class (asks) @@ -15,12 +16,7 @@ import Ctl.Internal.BalanceTx.Sync (syncWalletWithTransaction) import Ctl.Internal.Contract (getChainTip) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Contract.QueryBackend (getBlockfrostBackend) -import Ctl.Internal.Serialization.Address (Slot) import Ctl.Internal.Types.Chain as Chain -import Ctl.Internal.Types.Transaction - ( TransactionHash - , TransactionInput(TransactionInput) - ) import Data.Either (either) import Data.Maybe (isJust, maybe) import Data.Newtype (unwrap, wrap) diff --git a/src/Internal/Contract/Hooks.purs b/src/Internal/Contract/Hooks.purs index 591ed76eb..51a177fdc 100644 --- a/src/Internal/Contract/Hooks.purs +++ b/src/Internal/Contract/Hooks.purs @@ -1,8 +1,7 @@ module Ctl.Internal.Contract.Hooks ( Hooks , emptyHooks - ) -where + ) where import Prelude diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index 086be4b84..05fd89c54 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -25,7 +25,7 @@ import Data.Traversable (for) import Effect.Aff (error) import Effect.Aff.Class (liftAff) --- | Calculate `min_fee` using CSL with protocol parameters from Ogmios. +-- | Calculate the minimum transaction fee. calculateMinFee :: Transaction -> UtxoMap -> Contract Coin calculateMinFee tx additionalUtxos = do selfSigners <- getSelfSigners tx additionalUtxos diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index f6164335b..b53cae15c 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -4,19 +4,13 @@ module Ctl.Internal.Contract.Sign import Prelude +import Cardano.Types (Transaction) import Control.Monad.Reader (asks) import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncWalletWithTxInputs) -import Ctl.Internal.Cardano.Types.Transaction - ( Transaction - , _body - , _inputs - , _witnessSet - ) import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Contract.Wallet (withWallet) -import Ctl.Internal.Wallet - ( Wallet(GenericCip30, KeyWallet) - ) +import Ctl.Internal.Lens (_body, _inputs, _witnessSet) +import Ctl.Internal.Wallet (Wallet(GenericCip30, KeyWallet)) import Data.Array (fromFoldable) import Data.Lens ((<>~)) import Data.Lens.Getter ((^.)) diff --git a/src/Internal/Contract/WaitUntilSlot.purs b/src/Internal/Contract/WaitUntilSlot.purs index 56b180418..84e022f70 100644 --- a/src/Internal/Contract/WaitUntilSlot.purs +++ b/src/Internal/Contract/WaitUntilSlot.purs @@ -7,6 +7,7 @@ module Ctl.Internal.Contract.WaitUntilSlot import Prelude +import Cardano.Types (BigNum, Slot(Slot)) import Cardano.Types.BigNum as BigNum import Contract.Log (logTrace') import Control.Monad.Error.Class (liftEither, liftMaybe) @@ -14,7 +15,6 @@ import Control.Monad.Reader (asks) import Ctl.Internal.Contract (getChainTip) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.EraSummaries (EraSummaries(EraSummaries)) import Ctl.Internal.Types.Interval @@ -24,8 +24,6 @@ import Ctl.Internal.Types.Interval , getSlotLength , slotToPosixTime ) -import Ctl.Internal.Types.Natural (Natural) -import Ctl.Internal.Types.Natural as Natural import Ctl.Internal.Types.SystemStart (SystemStart) import Data.Array (length, mapMaybe) import Data.Bifunctor (lmap) @@ -166,15 +164,13 @@ posixTimeToSeconds (POSIXTime futureTimeBigInt) = do $ futureTimeBigInt / BigInt.fromInt 1000 -- | Wait at least `offset` number of slots. -waitNSlots :: Natural -> Contract Chain.Tip +waitNSlots :: BigNum -> Contract Chain.Tip waitNSlots offset = do - offsetBigNum <- liftM (error "Unable to convert BigInt to BigNum") - $ (BigNum.fromBigInt <<< Natural.toBigInt) offset - if offsetBigNum == BigNum.fromInt 0 then getChainTip + if offset == BigNum.fromInt 0 then getChainTip else do slot <- currentSlot - newSlot <- liftM (error "Unable to advance slot") - $ wrap <$> BigNum.add (unwrap slot) offsetBigNum + newSlot <- liftM (error "waitNSlots: Unable to advance slot") + $ wrap <$> BigNum.add (unwrap slot) offset waitUntilSlot newSlot currentSlot :: Contract Slot diff --git a/src/Internal/Deserialization/Language.js b/src/Internal/Deserialization/Language.js deleted file mode 100644 index c299f8434..000000000 --- a/src/Internal/Deserialization/Language.js +++ /dev/null @@ -1,13 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function _convertLanguage(langCtors) { - return cslLang => { - if (cslLang.kind() == lib.LanguageKind.PlutusV1) { - return langCtors.plutusV1; - } else if (cslLang.kind() == lib.LanguageKind.PlutusV2) { - return langCtors.plutusV2; - } else { - throw "_convertLanguage: Unsupported language kind: " + cslLang.kind(); - } - }; -} diff --git a/src/Internal/Deserialization/Language.purs b/src/Internal/Deserialization/Language.purs deleted file mode 100644 index 8d7c34e43..000000000 --- a/src/Internal/Deserialization/Language.purs +++ /dev/null @@ -1,19 +0,0 @@ -module Ctl.Internal.Deserialization.Language - ( _convertLanguage - , convertLanguage - ) where - -import Ctl.Internal.Serialization.Types (Language) as Csl -import Ctl.Internal.Types.Scripts (Language(PlutusV1, PlutusV2)) as T - -convertLanguage :: Csl.Language -> T.Language -convertLanguage = _convertLanguage - { plutusV1: T.PlutusV1 - , plutusV2: T.PlutusV2 - } - -foreign import _convertLanguage - :: { plutusV1 :: T.Language, plutusV2 :: T.Language } - -> Csl.Language - -> T.Language - diff --git a/src/Internal/Deserialization/NativeScript.js b/src/Internal/Deserialization/NativeScript.js deleted file mode 100644 index 9cccf27f8..000000000 --- a/src/Internal/Deserialization/NativeScript.js +++ /dev/null @@ -1,42 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function _convertNativeScript(handler) { - return ns => { - switch (ns.kind()) { - case lib.NativeScriptKind.ScriptPubkey: - return handler.scriptPubkey(ns.as_script_pubkey()); - case lib.NativeScriptKind.ScriptAll: - return handler.scriptAll(ns.as_script_all()); - case lib.NativeScriptKind.ScriptAny: - return handler.scriptAny(ns.as_script_any()); - case lib.NativeScriptKind.ScriptNOfK: - return handler.scriptNOfK(ns.as_script_n_of_k()); - case lib.NativeScriptKind.TimelockStart: - return handler.timelockStart(ns.as_timelock_start()); - case lib.NativeScriptKind.TimelockExpiry: - return handler.timelockExpiry(ns.as_timelock_expiry()); - default: - throw "Impossible native script kind: " + ns.kind(); - } - }; -} - -const call = property => object => object[property](); - -export const scriptPubkey_addr_keyhash = call("addr_keyhash"); - -export function scriptAllScripts(helper) { - return helper.unpackFromProperty("native_scripts"); -} - -export function scriptAnyScripts(helper) { - return helper.unpackFromProperty("native_scripts"); -} - -export function scriptNOfKScripts(helper) { - return helper.unpackFromProperty("native_scripts"); -} - -export const scriptNOfK_n = call("n"); -export const timelockStart_slot = call("slot_bignum"); -export const timelockExpiry_slot = call("slot_bignum"); diff --git a/src/Internal/Deserialization/NativeScript.purs b/src/Internal/Deserialization/NativeScript.purs deleted file mode 100644 index 1a90e3ced..000000000 --- a/src/Internal/Deserialization/NativeScript.purs +++ /dev/null @@ -1,72 +0,0 @@ -module Ctl.Internal.Deserialization.NativeScript - ( convertNativeScript - , decodeNativeScript - ) where - -import Prelude - -import Aeson (JsonDecodeError(TypeMismatch)) -import Cardano.Serialization.Lib (fromBytes) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.Slot (Slot(Slot)) -import Ctl.Internal.Cardano.Types.NativeScript as T -import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) -import Ctl.Internal.Serialization.Hash (Ed25519KeyHash) -import Ctl.Internal.Serialization.Types - ( NativeScript - , ScriptAll - , ScriptAny - , ScriptNOfK - , ScriptPubkey - , TimelockExpiry - , TimelockStart - ) -import Data.ByteArray (ByteArray) -import Data.Either (Either, note) - -type ConvertNativeScript (r :: Type) = - { scriptPubkey :: ScriptPubkey -> r - , scriptAll :: ScriptAll -> r - , scriptAny :: ScriptAny -> r - , scriptNOfK :: ScriptNOfK -> r - , timelockStart :: TimelockStart -> r - , timelockExpiry :: TimelockExpiry -> r - } - -decodeNativeScript :: ByteArray -> Either JsonDecodeError T.NativeScript -decodeNativeScript scriptBytes = do - nativeScript <- - flip note (fromBytes scriptBytes) $ - TypeMismatch "decodeNativeScript: from_bytes() call failed" - pure $ convertNativeScript nativeScript - -convertNativeScript :: NativeScript -> T.NativeScript -convertNativeScript ns = _convertNativeScript - { scriptPubkey: T.ScriptPubkey <<< scriptPubkey_addr_keyhash - , scriptAll: T.ScriptAll <<< map convertNativeScript <<< scriptAllScripts - containerHelper - , scriptAny: T.ScriptAny <<< map convertNativeScript <<< scriptAnyScripts - containerHelper - , scriptNOfK: T.ScriptNOfK <$> scriptNOfK_n <*> - (map convertNativeScript <<< scriptNOfKScripts containerHelper) - , timelockStart: T.TimelockStart <<< Slot <<< timelockStart_slot - , timelockExpiry: T.TimelockExpiry <<< Slot <<< timelockExpiry_slot - } - ns - -foreign import _convertNativeScript - :: ConvertNativeScript T.NativeScript -> NativeScript -> T.NativeScript - -foreign import scriptPubkey_addr_keyhash :: ScriptPubkey -> Ed25519KeyHash -foreign import scriptAllScripts - :: ContainerHelper -> ScriptAll -> Array NativeScript - -foreign import scriptAnyScripts - :: ContainerHelper -> ScriptAny -> Array NativeScript - -foreign import scriptNOfKScripts - :: ContainerHelper -> ScriptNOfK -> Array NativeScript - -foreign import scriptNOfK_n :: ScriptNOfK -> Int -foreign import timelockStart_slot :: TimelockStart -> BigNum -foreign import timelockExpiry_slot :: TimelockExpiry -> BigNum diff --git a/src/Internal/Hashing.purs b/src/Internal/Hashing.purs index 10e640d83..d58cda033 100644 --- a/src/Internal/Hashing.purs +++ b/src/Internal/Hashing.purs @@ -11,7 +11,6 @@ module Ctl.Internal.Hashing , sha256HashHex , sha3_256Hash , sha3_256HashHex - , transactionHash , mintingPolicyHash ) where @@ -30,13 +29,12 @@ import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.ScriptHash (ScriptHash) -import Ctl.Internal.Cardano.Types.ScriptRef +import Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) -import Ctl.Internal.Helpers (notImplemented) -import Ctl.Internal.Serialization.Types (Transaction) as Serialization -import Ctl.Internal.Types.Scripts (MintingPolicy(..)) -import Ctl.Internal.Types.Transaction (TransactionHash) +import Ctl.Internal.Types.MintingPolicy + ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) + ) import Data.ByteArray (ByteArray) import Data.Newtype (wrap) import Effect (Effect) @@ -76,12 +74,6 @@ mintingPolicyHash = case _ of PlutusMintingPolicy script -> plutusScriptHash script NativeMintingPolicy nscript -> nativeScriptHash nscript --- | Calculates the hash of the transaction by applying `blake2b256Hash` to --- | the cbor-encoded transaction body. -transactionHash :: Serialization.Transaction -> TransactionHash -transactionHash tx = - notImplemented - -- -- can't fail, because the length is correct -- wrap $ unsafePartial $ fromJust $ fromBytes $ blake2b256Hash $ toBytes -- $ _txBody diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index cf6859f24..4101b066f 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -36,6 +36,7 @@ module Ctl.Internal.Helpers , showFromCbor , compareViaCslBytes , decodeMap + , decodeTaggedNewtype ) where import Prelude @@ -45,9 +46,11 @@ import Aeson , class DecodeTupleAux , class EncodeAeson , Aeson - , JsonDecodeError + , JsonDecodeError(..) + , caseAesonObject , decodeAeson , encodeAeson + , getField , toString ) import Cardano.Serialization.Lib (class IsBytes, toBytes) @@ -59,7 +62,7 @@ import Data.Array (union) import Data.Bifunctor (bimap) import Data.Bitraversable (ltraverse) import Data.ByteArray (byteArrayToHex) -import Data.Either (Either(Right), either) +import Data.Either (Either(..), either) import Data.Function (on) import Data.JSDate (now) import Data.List.Lazy as LL @@ -302,6 +305,17 @@ decodeMap aeson = do decodeAsArray = do Map.fromFoldable <$> (decodeAeson aeson :: Either _ (Array (k /\ v))) +decodeTaggedNewtype + :: ∀ (a :: Type) (b :: Type) + . DecodeAeson a + => String + -> (a -> b) + -> Aeson + -> Either JsonDecodeError b +decodeTaggedNewtype constrName constr = caseAesonObject + (Left $ TypeMismatch "Expected object") + (flip getField constrName >=> decodeAeson >>> map constr) + -- | Args: tag value encoder -- | Encodes `value` using `encoder` as `{ "tag": *encoded tag*, "contents": *encoded value* }` encodeTagged :: forall a. String -> a -> (a -> Aeson) -> Aeson diff --git a/src/Internal/IsData.purs b/src/Internal/IsData.purs index 06c5552cd..95551efb8 100644 --- a/src/Internal/IsData.purs +++ b/src/Internal/IsData.purs @@ -1,7 +1,7 @@ module Ctl.Internal.IsData (class IsData) where -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.ToData (class ToData) +import Cardano.FromData (class FromData) +import Cardano.ToData (class ToData) class IsData :: Type -> Constraint class (FromData a, ToData a) <= IsData a diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index c57d3f974..dcb991e99 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -1,5 +1,6 @@ module Ctl.Internal.Lens - ( _auxiliaryData + ( _amount + , _auxiliaryData , _auxiliaryDataHash , _body , _certs @@ -12,6 +13,7 @@ module Ctl.Internal.Lens , _networkId , _outputs , _plutusData + , _plutusScripts , _redeemers , _referenceInputs , _requiredSigners @@ -20,6 +22,8 @@ module Ctl.Internal.Lens , _vkeys , _withdrawals , _witnessSet + , _datum + , _scriptRef ) where import Prelude @@ -32,14 +36,18 @@ import Cardano.Types , Ed25519KeyHash , Mint , NetworkId + , OutputDatum , PlutusData + , PlutusScript , Redeemer , ScriptDataHash + , ScriptRef , Transaction , TransactionBody , TransactionInput , TransactionOutput , TransactionWitnessSet + , Value , Vkeywitness ) import Cardano.Types.RewardAddress (RewardAddress) @@ -108,6 +116,17 @@ _mint = _Newtype <<< prop (Proxy :: Proxy "mint") _auxiliaryDataHash :: Lens' TransactionBody (Maybe AuxiliaryDataHash) _auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") +-- TransactionOutput + +_amount :: Lens' TransactionOutput Value +_amount = _Newtype <<< prop (Proxy :: Proxy "amount") + +_scriptRef :: Lens' TransactionOutput (Maybe ScriptRef) +_scriptRef = _Newtype <<< prop (Proxy :: Proxy "scriptRef") + +_datum :: Lens' TransactionOutput (Maybe OutputDatum) +_datum = _Newtype <<< prop (Proxy :: Proxy "datum") + -- TransactionWitnessSet _redeemers :: Lens' TransactionWitnessSet (Array Redeemer) @@ -116,5 +135,8 @@ _redeemers = _Newtype <<< prop (Proxy :: Proxy "redeemers") _plutusData :: Lens' TransactionWitnessSet (Array PlutusData) _plutusData = _Newtype <<< prop (Proxy :: Proxy "plutusData") +_plutusScripts :: Lens' TransactionWitnessSet (Array PlutusScript) +_plutusScripts = _Newtype <<< prop (Proxy :: Proxy "plutusScripts") + _vkeys :: Lens' TransactionWitnessSet (Array Vkeywitness) _vkeys = _Newtype <<< prop (Proxy :: Proxy "vkeys") diff --git a/src/Internal/NativeScripts.purs b/src/Internal/NativeScripts.purs index f0fa89617..573118306 100644 --- a/src/Internal/NativeScripts.purs +++ b/src/Internal/NativeScripts.purs @@ -7,7 +7,7 @@ module Ctl.Internal.NativeScripts import Prelude import Cardano.Serialization.Lib (nativeScript_hash) -import Cardano.Types.NativeScript as NativeScript +import Cardano.Types (Ed25519KeyHash, ScriptHash) import Cardano.Types.NativeScript ( NativeScript ( ScriptPubkey @@ -18,7 +18,7 @@ import Cardano.Types.NativeScript , TimelockExpiry ) ) -import Cardano.Types (Ed25519KeyHash, ScriptHash) +import Cardano.Types.NativeScript as NativeScript import Data.Array as Array import Data.Foldable (foldr, maximumBy) import Data.Function (on) diff --git a/src/Internal/Partition.purs b/src/Internal/Partition.purs index 9677368b5..22b6ca6a2 100644 --- a/src/Internal/Partition.purs +++ b/src/Internal/Partition.purs @@ -3,16 +3,18 @@ module Ctl.Internal.Partition , class Partition , equipartition , partition + , equipartitionValueWithTokenQuantityUpperBound ) where import Prelude -import Cardano.Types.AssetName (AssetName(..)) -import Cardano.Types.BigNum (BigNum(..)) +import Cardano.Types.AssetName (AssetName) +import Cardano.Types.BigInt (divCeil) +import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum as BigNum -import Cardano.Types.MultiAsset (MultiAsset(..)) +import Cardano.Types.MultiAsset (MultiAsset) import Cardano.Types.MultiAsset as MultiAsset -import Cardano.Types.ScriptHash (ScriptHash(..)) +import Cardano.Types.ScriptHash (ScriptHash) import Cardano.Types.Value (Value(..)) import Data.Array (replicate) import Data.Array.NonEmpty (NonEmptyArray) @@ -28,15 +30,15 @@ import Data.Array.NonEmpty ) as NEArray import Data.Foldable (any, foldl, length, sum) import Data.Function (on) -import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Newtype (class Newtype, unwrap) +import Data.Newtype (class Newtype, unwrap, wrap) import Data.Ordering (invert) as Ordering import Data.Tuple (fst, snd) import Data.Tuple.Nested (type (/\), (/\)) import JS.BigInt (BigInt) import JS.BigInt (fromInt, toInt) as BigInt import Partial.Unsafe (unsafePartial) +import Prelude as Prelude class Partition (a :: Type) where partition :: a -> NonEmptyArray a -> Maybe (NonEmptyArray a) @@ -133,7 +135,7 @@ instance Equipartition MultiAsset where foldl accumulate (NEArray.replicate numParts MultiAsset.empty) (MultiAsset.flatten nonAdaAssets) where - append' a b = unsafePartial $ fromJust $ add a b + append' a b = unsafePartial $ fromJust $ MultiAsset.add a b accumulate :: NonEmptyArray MultiAsset @@ -179,7 +181,7 @@ equipartitionValueWithTokenQuantityUpperBound maxTokenQuantity value = equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity in - NEArray.zipWith Value (equipartition coin numParts) ms + NEArray.zipWith Value (map wrap $ equipartition (unwrap coin) numParts) ms -- | Partitions a `MultiAsset` into smaller `MultiAsset`s, where the -- | quantity of each token is equipartitioned across the resultant diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index bbf468d79..d9de91b7e 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -16,6 +16,7 @@ import Affjax (defaultRequest) as Affjax import Affjax.RequestBody as RequestBody import Affjax.RequestHeader as Header import Affjax.ResponseFormat as Affjax.ResponseFormat +import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) import Contract.Address (NetworkId(MainnetId)) import Contract.Chain (waitNSlots) import Contract.Config (defaultSynchronizationParams, defaultTimeParams) @@ -25,7 +26,6 @@ import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) import Ctl.Internal.Affjax (request) as Affjax -import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.Monad ( buildBackend diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index 0733eff22..a6ac464b3 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -30,7 +30,7 @@ import Aeson , toStringifiedNumbersJson , (.:) ) -import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) +import Cardano.Types.Transaction (PrivateKey(PrivateKey)) import Ctl.Internal.Contract.Hooks (Hooks) import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.ServerConfig (ServerConfig) diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index d8fcea2ab..0b5c5930c 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -142,7 +142,7 @@ totalMissingValue { valueSpentBalancesInputs, valueSpentBalancesOutputs } = missingValueSpent valueSpentBalancesOutputs provideValue :: Value -> ValueSpentBalances -provideValue provided = ValueSpentBalances { provided, required: Value.zero } +provideValue provided = ValueSpentBalances { provided, required: mempty } requireValue :: Value -> ValueSpentBalances -requireValue required = ValueSpentBalances { required, provided: Value.zero } +requireValue required = ValueSpentBalances { required, provided: mempty } diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index fb3096ad3..3ebcfd5b3 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -10,7 +10,7 @@ module Ctl.Internal.QueryM.Pools import Prelude import Cardano.AsCbor (encodeCbor) -import Cardano.Types (PoolParams(PoolParams), PoolPubKeyHash, StakePubKeyHash) +import Cardano.Types (PoolParams, PoolPubKeyHash, StakePubKeyHash) import Cardano.Types.Ed25519KeyHash (toBech32Unsafe) as Ed25519KeyHash import Cardano.Types.ScriptHash as ScriptHash import Ctl.Internal.Helpers (liftM) @@ -35,7 +35,7 @@ import Record.Builder (build, merge) -- | Get pool parameters of all pools or of the provided pools. getStakePools - :: (Maybe (Array PoolPubKeyHash)) + :: Maybe (Array PoolPubKeyHash) -> QueryM (Map PoolPubKeyHash PoolParameters) getStakePools selected = unwrap <$> mkOgmiosRequest Ogmios.queryStakePoolsCall @@ -59,10 +59,10 @@ getPoolsParameters getPoolsParameters poolPubKeyHashes = do response <- getStakePools (Just poolPubKeyHashes) pure $ Map.mapMaybeWithKey - ( \poolPkh params -> Just $ build + ( \poolPkh params -> Just $ wrap $ build ( merge { operator: poolPkh - , poolOwners: params.poolOwners <#> wrap + , poolOwners: params.poolOwners } ) params diff --git a/src/Internal/Scripts.purs b/src/Internal/Scripts.purs deleted file mode 100644 index f4e5e8eb8..000000000 --- a/src/Internal/Scripts.purs +++ /dev/null @@ -1,32 +0,0 @@ -module Ctl.Internal.Scripts - ( validatorHash - ) where - -import Prelude - -import Ctl.Internal.Hashing (mintingPolicyHash, plutusScriptHash) -import Ctl.Internal.NativeScripts (NativeScriptHash, nativeScriptHash) -import Ctl.Internal.Plutus.Types.CurrencySymbol (CurrencySymbol(CurrencySymbol)) -import Ctl.Internal.Serialization.Hash (scriptHashToBytes) -import Ctl.Internal.Types.Scripts - ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) - , MintingPolicyHash - , NativeScriptStakeValidator - , PlutusScriptStakeValidator - , StakeValidatorHash - , Validator - , ValidatorHash - ) -import Data.Newtype (unwrap, wrap) - --- | Helpers for `PlutusScript` and `ScriptHash` newtype wrappers, separate from --- | the data type definitions to prevent cylic dependencies. - --- | Converts a Plutus-style `Validator` to an `ValidatorHash` -validatorHash :: Validator -> ValidatorHash -validatorHash = wrap <<< plutusScriptHash <<< unwrap - --- | Calculates a hash of a NativeScript stake validator -nativeScriptStakeValidatorHash - :: NativeScriptStakeValidator -> StakeValidatorHash -nativeScriptStakeValidatorHash = unwrap >>> nativeScriptHash >>> unwrap >>> wrap diff --git a/src/Internal/Serialization/Hash.js b/src/Internal/Serialization/Hash.js deleted file mode 100644 index ffa6a106b..000000000 --- a/src/Internal/Serialization/Hash.js +++ /dev/null @@ -1,53 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function hashFromBytes(name) { - return maybe => bytes => { - return hashFromImpl(lib[name].from_bytes)(maybe)(bytes); - }; -} - -export function hashToBech32Unsafe(prefix) { - return hash => { - return hash.to_bech32(prefix); - }; -} - -const hashFromImpl = hashClassFrom => maybe => input => { - let ret = null; - try { - ret = hashClassFrom(input); - } catch (e) { - // Do nothing - } - if (ret == null) { - return maybe.nothing; - } - return maybe.just(ret); -}; - -export function hashToBech32Impl(maybe) { - return prefix => hash => { - let ret = null; - try { - ret = hash.to_bech32(prefix); - } catch (e) { - // Do nothing - } - if (ret == null) { - return maybe.nothing; - } - return maybe.just(ret); - }; -} - -export function _ed25519KeyHashFromBech32Impl(maybe) { - return bech32str => { - return hashFromImpl(lib.Ed25519KeyHash.from_bech32)(maybe)(bech32str); - }; -} - -export function _scriptHashFromBech32Impl(maybe) { - return bech32str => { - return hashFromImpl(lib.ScriptHash.from_bech32)(maybe)(bech32str); - }; -} diff --git a/src/Internal/Serialization/Hash.purs b/src/Internal/Serialization/Hash.purs deleted file mode 100644 index 07501dc57..000000000 --- a/src/Internal/Serialization/Hash.purs +++ /dev/null @@ -1,48 +0,0 @@ -module Ctl.Internal.Serialization.Hash - ( module X - , scriptHashFromBytes - , scriptHashToBytes - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , caseAesonString - , encodeAeson - ) -import Cardano.Serialization.Lib (fromBytes, nativeScript_hash, toBytes) -import Cardano.Serialization.Lib as CSL -import Cardano.Serialization.Lib as Csl -import Cardano.AsCbor (decodeCbor, encodeCbor) -import Cardano.Types.Ed25519KeyHash as X -import Cardano.Types.PlutusData (PlutusData(Bytes)) -import Cardano.Types.ScriptHash as X -import Cardano.Types.VRFKeyHash as X -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.Metadata.FromMetadata (class FromMetadata) -import Ctl.Internal.Metadata.ToMetadata (class ToMetadata, toMetadata) -import Ctl.Internal.Serialization.Types (NativeScript) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.RawBytes (RawBytes, rawBytesToHex) -import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Bytes)) as Metadata -import Data.ByteArray - ( ByteArray - , byteArrayFromIntArrayUnsafe - , byteArrayToHex - , hexToByteArray - ) -import Data.Either (Either(Left, Right), note) -import Data.Function (on) -import Data.Maybe (Maybe(Nothing), fromJust) -import Data.Newtype (class Newtype, unwrap, wrap) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (class Arbitrary) -import Test.QuickCheck.Gen (chooseInt, vectorOf) - -scriptHashFromBytes = decodeCbor <<< wrap -scriptHashToBytes = encodeCbor diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 9cc15ef73..65a5686c2 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -195,7 +195,7 @@ import Ctl.Internal.Types.ProtocolParameters , convertPlutusV2CostModel ) import Ctl.Internal.Types.Rational (Rational, reduce) -import Ctl.Internal.Types.Scripts (StakeValidatorHash) +import Ctl.Internal.Types.StakeValidatorHash (StakeValidatorHash) import Ctl.Internal.Types.SystemStart (SystemStart(SystemStart)) import Data.Array (find, length) as Array import Data.Bifunctor (lmap) diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index df6cb6346..15c89ab11 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -9,6 +9,8 @@ module Ctl.Internal.Test.E2E.Route import Prelude +import Cardano.Types.Address (NetworkId(MainnetId)) +import Cardano.Types.PrivateKey (PrivateKey(..)) import Contract.Config (ContractParams) import Contract.Keys (privateKeyFromBytes) import Contract.Monad (Contract, runContract) @@ -20,11 +22,9 @@ import Contract.Wallet import Contract.Wallet.Key (privateKeysToKeyWallet) import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe) -import Ctl.Internal.Cardano.Types.Transaction (PrivateKey) import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) import Ctl.Internal.Helpers (liftEither) import Ctl.Internal.QueryM (ClusterSetup) -import Ctl.Internal.Serialization.Address (NetworkId(MainnetId)) import Ctl.Internal.Test.E2E.Feedback.Browser (getClusterSetupRepeatedly) import Ctl.Internal.Test.E2E.Feedback.Hooks (addE2EFeedbackHooks) import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 6d6b0c8fc..212814415 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -4,9 +4,9 @@ module Ctl.Internal.Test.KeyDir import Prelude +import Cardano.Types.PrivateKey (PrivateKey(..)) import Contract.Address (addressToBech32) import Contract.Config (ContractParams) -import Contract.Hashing (publicKeyHash) import Contract.Log (logError', logTrace') import Contract.Monad ( Contract @@ -25,7 +25,6 @@ import Contract.Transaction , submitTxFromConstraints ) import Contract.Utxos (utxosAt) -import Contract.Value (valueToCoin') import Contract.Wallet ( getWalletAddresses , getWalletBalance @@ -48,13 +47,9 @@ import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except (throwError) import Control.Monad.Reader (asks, local) import Control.Parallel (parTraverse, parTraverse_) -import Ctl.Internal.Cardano.Types.Transaction (PrivateKey(PrivateKey)) import Ctl.Internal.Deserialization.Keys (freshPrivateKey) import Ctl.Internal.Helpers (logWithLevel) -import Ctl.Internal.Plutus.Types.Transaction (_amount, _output) -import Ctl.Internal.Plutus.Types.Value (Value, lovelaceValueOf) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) -import Ctl.Internal.Serialization.Address (addressBech32) import Ctl.Internal.Test.ContractTest (ContractTest(ContractTest)) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution @@ -178,8 +173,7 @@ runContractTestsWithKeyDir params backup = do <> "\nFund it to continue." -- generate wallets - privateKeys <- liftEffect $ for distrArray \_ -> PrivateKey <$> - freshPrivateKey + privateKeys <- liftEffect $ for distrArray \_ -> PrivateKey.generate wallets <- liftMaybe ( error diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index 98cb62815..a66af03b2 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -14,17 +14,23 @@ module Ctl.Internal.Test.UtxoDistribution import Prelude -import Contract.Address - ( PaymentPubKeyHash +import Cardano.Types + ( Credential(PubKeyHashCredential) + , PaymentCredential(PaymentCredential) + , PaymentPubKeyHash , StakePubKeyHash - , getNetworkId - , payPubKeyHashEnterpriseAddress + , TransactionOutput(TransactionOutput) ) -import Contract.Monad (Contract, liftContractM, liftedM) +import Cardano.Types.Address (Address(EnterpriseAddress)) +import Cardano.Types.PrivateKey (PrivateKey) +import Cardano.Types.UtxoMap (UtxoMap) +import Contract.Address (getNetworkId) +import Contract.Monad (Contract, liftedM) import Contract.Prelude (foldM, foldMap, null) import Contract.ScriptLookups as Lookups import Contract.Transaction - ( TransactionOutputWithRefScript(TransactionOutputWithRefScript) + ( BalancedSignedTransaction(BalancedSignedTransaction) + , FinalizedTransaction(FinalizedTransaction) , awaitTxConfirmed , balanceTx , signTransaction @@ -43,8 +49,6 @@ import Contract.Wallet import Control.Alternative (guard) import Control.Monad.Reader (asks) import Control.Monad.State.Trans (StateT(StateT), runStateT) -import Ctl.Internal.Cardano.Types.Transaction (PrivateKey) -import Ctl.Internal.Plutus.Types.Transaction (UtxoMap) import Ctl.Internal.Wallet.Key ( KeyWallet , PrivatePaymentKey(PrivatePaymentKey) @@ -237,9 +241,8 @@ transferFundsFromEnterpriseToBase ourKey wallets = do Constraints.mustBeSignedBy payPkh <> Constraints.mustBeSignedBy (wrap $ unwrap stakePkh) <> foldMapWithIndex - ( \input (TransactionOutputWithRefScript { output }) -> - Constraints.mustPayToPubKeyAddress payPkh stakePkh - (unwrap output).amount + ( \input (TransactionOutput { amount }) -> + Constraints.mustPayToPubKeyAddress payPkh stakePkh amount <> Constraints.mustSpendPubKeyOutput input ) utxos @@ -255,9 +258,11 @@ transferFundsFromEnterpriseToBase ourKey wallets = do payPkh <- liftedM "Could not get payment pubkeyhash" $ head <$> ownPaymentPubKeyHashes networkId <- getNetworkId - addr <- liftContractM "Could not get wallet address" $ - payPubKeyHashEnterpriseAddress networkId payPkh - utxos' <- utxosAt addr + utxos' <- utxosAt $ EnterpriseAddress + { networkId + , paymentCredential: PaymentCredential $ PubKeyHashCredential $ unwrap + payPkh + } pure $ { utxos: utxos', payPkh, stakePkh, wallet } : walletsInfo withStakeKey :: PrivateStakeKey -> InitialUTxOs -> InitialUTxOsWithStakeKey diff --git a/src/Internal/Transaction.purs b/src/Internal/Transaction.purs index 5a80e8a50..777c6dc9a 100644 --- a/src/Internal/Transaction.purs +++ b/src/Internal/Transaction.purs @@ -1,3 +1,4 @@ +-- TODO: consider moving these utils closer to where they are used module Ctl.Internal.Transaction ( attachDatum , attachPlutusScript diff --git a/src/Internal/Types/Datum.purs b/src/Internal/Types/Datum.purs index 0e29c2e27..e6fc85140 100644 --- a/src/Internal/Types/Datum.purs +++ b/src/Internal/Types/Datum.purs @@ -1,16 +1,14 @@ module Ctl.Internal.Types.Datum ( Datum(Datum) , unitDatum - , module X ) where import Prelude import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) +import Cardano.FromData (class FromData) +import Cardano.ToData (class ToData, toData) import Cardano.Types.PlutusData (PlutusData) -import Ctl.Internal.FromData (class FromData) -import Ctl.Internal.ToData (class ToData, toData) -import Ctl.Internal.Types.Transaction (DataHash(DataHash)) as X import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) diff --git a/src/Internal/Types/EraSummaries.purs b/src/Internal/Types/EraSummaries.purs index d54ed3a71..252fdbc67 100644 --- a/src/Internal/Types/EraSummaries.purs +++ b/src/Internal/Types/EraSummaries.purs @@ -18,10 +18,10 @@ import Aeson , finiteNumber , getField ) +import Cardano.Types.Epoch (Epoch) import Cardano.Types.Slot (Slot) import Ctl.Internal.Helpers (showWithParens) import Ctl.Internal.Service.Helpers (aesonObject) -import Ctl.Internal.Types.Epoch (Epoch) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe, fromJust) import Data.Newtype (class Newtype, wrap) diff --git a/src/Internal/Types/NatRatio.purs b/src/Internal/Types/NatRatio.purs index a55a300d3..7be05641e 100644 --- a/src/Internal/Types/NatRatio.purs +++ b/src/Internal/Types/NatRatio.purs @@ -3,23 +3,17 @@ module Ctl.Internal.Types.NatRatio ( NatRatio , denominator - , denominatorAsNat , fromBigInts - , fromNaturals , fromRational , numerator - , numeratorAsNat , toRational ) where import Prelude -import Ctl.Internal.Types.Natural (Natural) -import Ctl.Internal.Types.Natural (fromBigInt', toBigInt) as Nat import Ctl.Internal.Types.Rational (Rational) import Ctl.Internal.Types.Rational ( denominator - , denominatorAsNat , numerator , (%) ) as Rational @@ -48,11 +42,6 @@ fromRational r = fromBigInts (Rational.numerator r) (Rational.denominator r) toRational :: NatRatio -> Rational toRational (NatRatio r) = r --- | Given two `Natural`s, attempts to convert to a `NatRatio`. Fails if the --- | denominator is `zero`. -fromNaturals :: Natural -> Natural -> Maybe NatRatio -fromNaturals n d = NatRatio <$> Nat.toBigInt n Rational.% Nat.toBigInt d - -- | Given two `BigInt`s, attempts to convert to a `NatRatio`. Fails if the -- | denominator is `zero` or the overall sign is negative. fromBigInts :: BigInt -> BigInt -> Maybe NatRatio @@ -64,16 +53,6 @@ fromBigInts n d numerator :: NatRatio -> BigInt numerator (NatRatio r) = Rational.numerator r --- This is safe because the numerator is guaranteed to be non-negative. --- | Get the numerator of a `NatRatio` as `Natural`. -numeratorAsNat :: NatRatio -> Natural -numeratorAsNat (NatRatio r) = Nat.fromBigInt' $ Rational.numerator r - -- | Get the denominator of a `NatRatio` as `BigInt`. denominator :: NatRatio -> BigInt denominator (NatRatio r) = Rational.denominator r - --- This is safe because the denominator is guaranteed to be positive. --- | Get the denominator of a `NatRatio` as `Natural`. -denominatorAsNat :: NatRatio -> Natural -denominatorAsNat (NatRatio r) = Rational.denominatorAsNat r diff --git a/src/Internal/Types/Redeemer.purs b/src/Internal/Types/Redeemer.purs index 883884736..3e8d685c9 100644 --- a/src/Internal/Types/Redeemer.purs +++ b/src/Internal/Types/Redeemer.purs @@ -9,7 +9,7 @@ import Prelude import Cardano.FromData (class FromData) import Cardano.ToData (class ToData, toData) -import Cardano.Types.DataHash (DataHash(..), hashPlutusData) +import Cardano.Types.DataHash (DataHash(DataHash), hashPlutusData) import Cardano.Types.PlutusData (PlutusData) import Data.Generic.Rep (class Generic) import Data.Newtype (class Newtype, unwrap) diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 73ad014ed..06888f96d 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -1,16 +1,11 @@ module Ctl.Internal.Types.ScriptLookups ( ScriptLookups(ScriptLookups) , mintingPolicy - , mintingPolicyM , datum , validator - , validatorM , ownPaymentPubKeyHash - , ownPaymentPubKeyHashM , ownStakePubKeyHash - , ownStakePubKeyHashM , unspentOutputs - , unspentOutputsM ) where import Prelude hiding (join) @@ -19,16 +14,16 @@ import Cardano.Types ( DataHash , PaymentPubKeyHash , PlutusData + , PlutusScript , PublicKey , StakePubKeyHash + , TransactionInput , TransactionOutput , UtxoMap ) import Cardano.Types.DataHash (hashPlutusData) -import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.Helpers ((<\>)) import Ctl.Internal.Types.MintingPolicy (MintingPolicy) -import Ctl.Internal.Types.Validator (Validator) import Data.Array (singleton, union) as Array import Data.Generic.Rep (class Generic) import Data.Map (Map, empty, singleton, union) @@ -55,7 +50,7 @@ newtype ScriptLookups = ScriptLookups { mintingPolicies :: Array MintingPolicy -- Minting policies that the script interacts with , txOutputs :: UtxoMap - , scripts :: Array Validator -- Script validators + , scripts :: Array PlutusScript -- Script validators , datums :: Map DataHash PlutusData -- Datums that we might need -- FIXME there's currently no way to set this field -- See https://github.com/Plutonomicon/cardano-transaction-lib/issues/569 @@ -112,34 +107,16 @@ unspentOutputs -> ScriptLookups unspentOutputs mp = over ScriptLookups _ { txOutputs = mp } mempty --- | Same as `unspentOutputs` but in `Maybe` context for convenience. --- | This should not fail. -unspentOutputsM - :: forall (a :: Type) - . Map TransactionInput TransactionOutput - -> Maybe ScriptLookups -unspentOutputsM = pure <<< unspentOutputs - -- | A script lookups value with a minting policy script. mintingPolicy :: MintingPolicy -> ScriptLookups mintingPolicy pl = over ScriptLookups _ { mintingPolicies = Array.singleton pl } mempty --- | Same as `mintingPolicy` but in `Maybe` context for convenience. This --- | should not fail. -mintingPolicyM :: forall (a :: Type). MintingPolicy -> Maybe ScriptLookups -mintingPolicyM = pure <<< mintingPolicy - -- | A script lookups value with a validator script. -validator :: forall (a :: Type). Validator -> ScriptLookups +validator :: forall (a :: Type). PlutusScript -> ScriptLookups validator vl = over ScriptLookups _ { scripts = Array.singleton vl } mempty --- | Same as `validator` but in `Maybe` context for convenience. This --- | should not fail. -validatorM :: forall (a :: Type). Validator -> Maybe ScriptLookups -validatorM = pure <<< validator - -- | A script lookups value with a datum. datum :: PlutusData -> ScriptLookups datum dt = @@ -150,19 +127,7 @@ ownPaymentPubKeyHash :: PaymentPubKeyHash -> ScriptLookups ownPaymentPubKeyHash pkh = over ScriptLookups _ { ownPaymentPubKeyHash = Just pkh } mempty --- | Same as `ownPaymentPubKeyHash` but in `Maybe` context for convenience. This --- | should not fail. -ownPaymentPubKeyHashM - :: PaymentPubKeyHash -> Maybe ScriptLookups -ownPaymentPubKeyHashM = pure <<< ownPaymentPubKeyHash - -- | Add your own `StakePubKeyHash` to the lookup. ownStakePubKeyHash :: StakePubKeyHash -> ScriptLookups ownStakePubKeyHash skh = over ScriptLookups _ { ownStakePubKeyHash = Just skh } mempty - --- | Same as `ownStakePubKeyHash` but in `Maybe` context for convenience. This --- | should not fail. -ownStakePubKeyHashM - :: StakePubKeyHash -> Maybe ScriptLookups -ownStakePubKeyHashM = pure <<< ownStakePubKeyHash diff --git a/src/Internal/Types/Val.purs b/src/Internal/Types/Val.purs new file mode 100644 index 000000000..3eed5529e --- /dev/null +++ b/src/Internal/Types/Val.purs @@ -0,0 +1,136 @@ +module Ctl.Internal.Types.Val where + +import Prelude + +import Cardano.AsCbor (encodeCbor) +import Cardano.Types + ( AssetClass(..) + , AssetName + , BigInt + , Coin + , MultiAsset(MultiAsset) + , ScriptHash + , Value(Value) + ) +import Cardano.Types.AssetName (fromAssetName) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Int as Int +import Cardano.Types.Mint (Mint(Mint)) +import Cardano.Types.MultiAsset as MultiAsset +import Data.ByteArray (byteArrayToHex) +import Data.Log.Tag (TagSet, tag, tagSetTag) +import Data.Log.Tag as TagSet +import Data.Map (Map) +import Data.Map as Map +import Data.Maybe (Maybe) +import Data.Newtype (unwrap, wrap) +import Data.These (These(This, That, Both)) +import Data.Traversable (traverse) +import Data.Tuple.Nested (type (/\), (/\)) +import JS.BigInt as BigInt + +data Val = Val BigInt (Map ScriptHash (Map AssetName BigInt)) + +instance Eq Val where + eq a b = + -- the second part is to check for empty outer Map + toValue a == toValue b && valueAssets a == valueAssets b + +instance Semigroup Val where + append (Val a ma) (Val b mb) = Val (a + b) (unionWithNonAda add ma mb) + +instance Monoid Val where + mempty = Val zero Map.empty + +getAssets :: Val -> Map ScriptHash (Map AssetName BigInt) +getAssets (Val _ ma) = ma + +valueAssets :: Val -> Array (AssetClass /\ BigInt) +valueAssets (Val _ ma) = + Map.toUnfoldable ma >>= \(scriptHash /\ mp) -> + Map.toUnfoldable mp >>= \(tokenName /\ amount) -> + [ AssetClass scriptHash tokenName /\ amount ] + +pprintVal :: Val -> TagSet +pprintVal (Val coin ma) = TagSet.fromArray $ + [ "Lovelace" `tag` BigInt.toString coin ] + <> + if ma /= Map.empty then + [ "Assets" `tagSetTag` pprintMultiAsset ma ] + else [] + where + + pprintMultiAsset :: Map ScriptHash (Map AssetName BigInt) -> TagSet + pprintMultiAsset mp = TagSet.fromArray $ + Map.toUnfoldable mp <#> \(scriptHash /\ tokens) -> + byteArrayToHex (unwrap $ encodeCbor scriptHash) `tagSetTag` + TagSet.fromArray + ( Map.toUnfoldable tokens <#> \(assetName /\ amount) -> + fromAssetName byteArrayToHex show assetName `tag` BigInt.toString + amount + ) + +fromCoin :: Coin -> Val +fromCoin = flip Val Map.empty <<< BigNum.toBigInt <<< unwrap + +fromValue :: Value -> Val +fromValue (Value coin ma) = Val (BigNum.toBigInt $ unwrap coin) + $ map (map BigNum.toBigInt) + $ unwrap ma + +toMultiAsset :: Map ScriptHash (Map AssetName BigInt) -> Maybe MultiAsset +toMultiAsset = map (map wrap) $ traverse $ traverse $ BigNum.fromBigInt + +toValue :: Val -> Maybe Value +toValue (Val coin ma) = do + ma' <- toMultiAsset ma + coin' <- BigNum.fromBigInt coin + pure $ Value (wrap coin') ma' + +fromMultiAsset :: MultiAsset -> Val +fromMultiAsset (MultiAsset ma) = Val zero $ map (map BigNum.toBigInt) ma + +fromMint :: Mint -> Val +fromMint (Mint ma) = Val zero $ map (map Int.toBigInt) $ ma + +minus :: Val -> Val -> Val +minus (Val a ma) (Val b mb) = Val (a - b) (unionWithNonAda (-) ma mb) + +unionWithNonAda + :: (BigInt -> BigInt -> BigInt) + -> Map ScriptHash (Map AssetName BigInt) + -> Map ScriptHash (Map AssetName BigInt) + -> Map ScriptHash (Map AssetName BigInt) +unionWithNonAda f ls rs = + let + combined :: Map ScriptHash (Map AssetName (These BigInt BigInt)) + combined = unionNonAda ls rs + + unBoth :: These BigInt BigInt -> BigInt + unBoth k' = case k' of + This a -> f a zero + That b -> f zero b + Both a b -> f a b + in + map (map unBoth) combined + +unionNonAda + :: Map ScriptHash (Map AssetName BigInt) + -> Map ScriptHash (Map AssetName BigInt) + -> Map ScriptHash (Map AssetName (These BigInt BigInt)) +unionNonAda l r = + let + combined + :: Map ScriptHash + (These (Map AssetName BigInt) (Map AssetName BigInt)) + combined = MultiAsset.union l r + + unBoth + :: These (Map AssetName BigInt) (Map AssetName BigInt) + -> Map AssetName (These BigInt BigInt) + unBoth k = case k of + This a -> This <$> a + That b -> That <$> b + Both a b -> MultiAsset.union a b + in + unBoth <$> combined diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index b6a9b1077..8e64e952f 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -10,16 +10,18 @@ module Ctl.Internal.Wallet.Cip30Mock ) ) where -import Cardano.Types.NetworkId import Prelude -import Cardano.Serialization.Lib (toBytes) -import Cardano.Types.Address - ( Address - ) -import Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) +import Cardano.AsCbor (decodeCbor, encodeCbor) +import Cardano.Types + ( Credential(PubKeyHashCredential) + , StakeCredential(StakeCredential) ) +import Cardano.Types.Address (Address(..)) +import Cardano.Types.NetworkId (NetworkId(..)) +import Cardano.Types.PrivateKey as PrivateKey +import Cardano.Types.PublicKey as PublicKey +import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutput import Contract.Monad (Contract) import Control.Monad.Error.Class (liftMaybe, try) import Control.Monad.Reader (ask) @@ -53,8 +55,6 @@ import Data.Function.Uncurried (Fn2, mkFn2) import Data.Map as Map import Data.Maybe (Maybe(Just), maybe) import Data.Newtype (unwrap, wrap) -import Data.Traversable (traverse) -import Data.Tuple.Nested ((/\)) import Data.UInt as UInt import Effect (Effect) import Effect.Aff (Aff) @@ -144,15 +144,14 @@ mkCip30Mock pKey mSKey = do getCollateralUtxos utxos = do let pparams = unwrap env.ledgerConstants.pparams - coinsPerUtxoUnit = pparams.coinsPerUtxoUnit + coinsPerUtxoByte = pparams.coinsPerUtxoByte maxCollateralInputs = UInt.toInt $ pparams.maxCollateralInputs - liftEffect $ - (unwrap keyWallet).selectCollateral coinsPerUtxoUnit - maxCollateralInputs - utxos - <#> fold - + mbCollateral = fold $ + (unwrap keyWallet).selectCollateral coinsPerUtxoByte + maxCollateralInputs + utxos + pure mbCollateral ownUtxos = do let ownAddress = (unwrap keyWallet).address env.networkId liftMaybe (error "No UTxOs at address") <<< hush =<< do @@ -161,19 +160,20 @@ mkCip30Mock pKey mSKey = do keyWallet = privateKeysToKeyWallet pKey mSKey addressHex = - byteArrayToHex $ toBytes $ unwrap + byteArrayToHex $ unwrap $ encodeCbor ((unwrap keyWallet).address env.networkId :: Address) mbRewardAddressHex = mSKey <#> \stakeKey -> let - stakePubKey = publicKeyFromPrivateKey (unwrap $ unwrap stakeKey) - stakePubKeyHash = publicKeyHash stakePubKey - rewardAddress = stakePubKeyHashRewardAddress env.networkId - $ StakePubKeyHash - $ PubKeyHash stakePubKeyHash + stakePubKey = PrivateKey.toPublicKey (unwrap stakeKey) + stakePubKeyHash = PublicKey.hash stakePubKey + rewardAddress = RewardAddress + { networkId: env.networkId + , stakeCredential: + StakeCredential $ PubKeyHashCredential stakePubKeyHash + } in - byteArrayToHex $ unwrap $ rewardAddressToBytes rewardAddress - + byteArrayToHex $ unwrap $ encodeCbor rewardAddress pure $ { getNetworkId: fromAff $ pure $ case env.networkId of @@ -185,26 +185,18 @@ mkCip30Mock pKey mSKey = do let collateralOutputs = collateralUtxos <#> unwrap >>> _.input -- filter out UTxOs that will be used as collateral - nonCollateralUtxos = + utxoMap = Map.filterKeys (not <<< flip Array.elem collateralOutputs) utxos - -- Convert to CSL representation and serialize - cslUtxos <- traverse (liftEffect <<< convertTransactionUnspentOutput) - $ Map.toUnfoldable nonCollateralUtxos <#> \(input /\ output) -> - TransactionUnspentOutput { input, output } - pure $ (byteArrayToHex <<< toBytes) <$> cslUtxos + pure $ byteArrayToHex <<< unwrap <<< encodeCbor <$> + TransactionUnspentOutput.fromUtxoMap utxoMap , getCollateral: fromAff do utxos <- ownUtxos collateralUtxos <- getCollateralUtxos utxos - cslUnspentOutput <- liftEffect $ traverse - convertTransactionUnspentOutput - collateralUtxos - pure $ byteArrayToHex <<< toBytes <$> cslUnspentOutput + pure $ byteArrayToHex <<< unwrap <<< encodeCbor <$> collateralUtxos , getBalance: fromAff do utxos <- ownUtxos - value <- liftEffect $ convertValue $ - (foldMap (_.amount <<< unwrap) <<< Map.values) - utxos - pure $ byteArrayToHex $ toBytes value + let value = foldMap (_.amount <<< unwrap) $ Map.values utxos + pure $ byteArrayToHex $ unwrap $ encodeCbor value , getUsedAddresses: fromAff do pure [ addressHex ] , getUnusedAddresses: fromAff $ pure [] @@ -216,18 +208,19 @@ mkCip30Mock pKey mSKey = do txBytes <- liftMaybe (error "Unable to convert CBOR") $ hexToByteArray str tx <- liftMaybe (error "Failed to decode Transaction CBOR") - $ hush - $ deserializeTransaction - $ cborBytesFromByteArray txBytes + $ decodeCbor + $ wrap txBytes witness <- (unwrap keyWallet).signTx tx - cslWitnessSet <- liftEffect $ convertWitnessSet witness - pure $ byteArrayToHex $ toBytes cslWitnessSet + pure $ byteArrayToHex $ unwrap $ encodeCbor witness , signData: mkFn2 \_addr msg -> unsafePerformEffect $ fromAff do msgBytes <- liftMaybe (error "Unable to convert CBOR") $ hexToByteArray msg { key, signature } <- (unwrap keyWallet).signData env.networkId (wrap msgBytes) - pure { key: cborBytesToHex key, signature: cborBytesToHex signature } + pure + { key: byteArrayToHex $ unwrap key + , signature: byteArrayToHex $ unwrap signature + } } -- returns an action that removes the mock. From cc47c5f7842cea3d67b3de0a9abd0d8a25eda11a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 14 Mar 2024 03:36:32 +0400 Subject: [PATCH 068/373] compiles --- packages.dhall | 4 +- spago-packages.nix | 12 ++-- spago.dhall | 2 + src/Contract/AuxiliaryData.purs | 33 +++++------ src/Contract/Backend/Ogmios.purs | 7 +-- src/Contract/Backend/Ogmios/Mempool.purs | 4 +- src/Contract/Keys.purs | 20 ++----- src/Contract/Plutarch/Types.purs | 1 - src/Contract/PlutusData.purs | 15 ++++- src/Contract/Prim/ByteArray.purs | 11 +--- src/Internal/Deserialization/Keys.purs | 2 +- src/Internal/Plutip/Server.purs | 5 +- src/Internal/Plutip/Types.purs | 4 +- src/Internal/Serialization/Keys.purs | 2 +- src/Internal/Test/E2E/Route.purs | 8 ++- src/Internal/Test/E2E/Runner.purs | 12 ++-- src/Internal/Test/KeyDir.purs | 64 ++++++++++++-------- src/Internal/Types/RawBytes.purs | 74 ------------------------ 18 files changed, 108 insertions(+), 172 deletions(-) delete mode 100644 src/Internal/Types/RawBytes.purs diff --git a/packages.dhall b/packages.dhall index 0543e5d22..a980c4fee 100644 --- a/packages.dhall +++ b/packages.dhall @@ -279,7 +279,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "793503bc88dbdeccea7602d4ae34ccc360112b3a" + , version = "e3c0891b377fc07d9f11833add2e6ff872ab119c" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -361,7 +361,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "ff6a1e6a303b0e52e7b53752166efa240362f45d" + , version = "26311cde53a927c68b5ac84ad008abb164ee14e4" } , cardano-message-signing = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index aa51b3542..1065afc94 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -247,11 +247,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "793503bc88dbdeccea7602d4ae34ccc360112b3a"; + version = "e3c0891b377fc07d9f11833add2e6ff872ab119c"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "793503bc88dbdeccea7602d4ae34ccc360112b3a"; - sha256 = "1hza31pv5j6lwx1cihjj479960lqsfy66v6qvb7l3x9v70cwag8j"; + rev = "e3c0891b377fc07d9f11833add2e6ff872ab119c"; + sha256 = "0c7mj0afqwj1g5qfg0pah6gmr4ky4902ijxgsahp2dcnyhj8hln3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -259,11 +259,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "6aac3ad846f8473bb10c14d2145f5f62dc4eb1a6"; + version = "26311cde53a927c68b5ac84ad008abb164ee14e4"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "6aac3ad846f8473bb10c14d2145f5f62dc4eb1a6"; - sha256 = "05wk0mp6a382n21k7zmvzz70y1cr9w8svlqpfxc9651g1mq2y9jz"; + rev = "26311cde53a927c68b5ac84ad008abb164ee14e4"; + sha256 = "0pmm17pixqi1ricgv42h1fwnvjdbq813kq3caqd7syj854vrvsis"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/spago.dhall b/spago.dhall index e5494d42e..5aaac14bb 100644 --- a/spago.dhall +++ b/spago.dhall @@ -20,6 +20,8 @@ You can edit this file as you like. , "bytearrays" , "cardano-hd-wallet" , "cardano-message-signing" + , "cardano-plutus-data-schema" + , "cardano-serialization-lib" , "cardano-types" , "checked-exceptions" , "cip30" diff --git a/src/Contract/AuxiliaryData.purs b/src/Contract/AuxiliaryData.purs index b82d10107..c85253d0b 100644 --- a/src/Contract/AuxiliaryData.purs +++ b/src/Contract/AuxiliaryData.purs @@ -13,42 +13,39 @@ import Cardano.Types , GeneralTransactionMetadata , Transaction ) -import Contract.Monad (Contract) -import Ctl.Internal.Lens - ( _auxiliaryData - , _auxiliaryDataHash - , _body - ) as Tx +import Cardano.Types.AuxiliaryData (hashAuxiliaryData) +import Ctl.Internal.Lens (_auxiliaryData, _auxiliaryDataHash, _body) as Tx import Ctl.Internal.Metadata.MetadataType ( class MetadataType , toGeneralTxMetadata ) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) -import Data.Lens (lens', (?~)) +import Data.Lens (lens', (.~), (?~)) import Data.Lens.Getter (view) import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) import Data.Lens.Types (Lens') -import Data.Maybe (Maybe, fromMaybe) +import Data.Maybe (Maybe) import Data.Tuple (Tuple(Tuple)) -import Effect.Class (liftEffect) import Type.Proxy (Proxy(Proxy)) setAuxiliaryData :: UnbalancedTx -> AuxiliaryData - -> Contract UnbalancedTx -setAuxiliaryData tx auxData = liftEffect do - auxDataHash <- hashAuxiliaryData auxData - pure (tx # _auxiliaryData ?~ auxData # _auxiliaryDataHash ?~ auxDataHash) + -> UnbalancedTx +setAuxiliaryData tx auxData = + let + auxDataHash = hashAuxiliaryData auxData + in + tx # _auxiliaryData .~ auxData # _auxiliaryDataHash ?~ auxDataHash setGeneralTxMetadata :: UnbalancedTx -> GeneralTransactionMetadata - -> Contract UnbalancedTx + -> UnbalancedTx setGeneralTxMetadata tx generalMetadata = let - auxData = fromMaybe mempty (view _auxiliaryData tx) + auxData = view _auxiliaryData tx in setAuxiliaryData tx (auxData # _metadata ?~ generalMetadata) @@ -57,7 +54,7 @@ setTxMetadata . MetadataType m => UnbalancedTx -> m - -> Contract UnbalancedTx + -> UnbalancedTx setTxMetadata tx = setGeneralTxMetadata tx <<< toGeneralTxMetadata @@ -68,9 +65,9 @@ setTxMetadata tx = _transaction :: Lens' UnbalancedTx Transaction _transaction = _Newtype <<< prop (Proxy :: Proxy "transaction") -_auxiliaryData :: Lens' UnbalancedTx (Maybe AuxiliaryData) +_auxiliaryData :: Lens' UnbalancedTx AuxiliaryData _auxiliaryData = - _transaction <<< Tx._auxiliaryData + _Newtype <<< prop (Proxy :: Proxy "transaction") <<< Tx._auxiliaryData _auxiliaryDataHash :: Lens' UnbalancedTx (Maybe AuxiliaryDataHash) _auxiliaryDataHash = diff --git a/src/Contract/Backend/Ogmios.purs b/src/Contract/Backend/Ogmios.purs index 7ef1dede4..c5b5af454 100644 --- a/src/Contract/Backend/Ogmios.purs +++ b/src/Contract/Backend/Ogmios.purs @@ -4,13 +4,12 @@ module Contract.Backend.Ogmios , submitTxE ) where -import Contract.Prelude +import Prelude +import Cardano.Types (PoolParams, PoolPubKeyHash) import Cardano.Types.CborBytes (CborBytes) -import Cardano.Types.Transaction (PoolRegistrationParams) import Cardano.Types.TransactionHash (TransactionHash) import Contract.Monad (Contract) -import Contract.Transaction (PoolPubKeyHash) import Ctl.Internal.Contract.Monad (wrapQueryM) import Ctl.Internal.QueryM (submitTxOgmios) as QueryM import Ctl.Internal.QueryM.Ogmios (SubmitTxR) @@ -22,7 +21,7 @@ import Ctl.Internal.QueryM.Pools (getPoolParameters) as QueryM -- | https://github.com/blockfrost/blockfrost-backend-ryo/issues/82 getPoolParameters :: PoolPubKeyHash - -> Contract PoolRegistrationParams + -> Contract PoolParams getPoolParameters = wrapQueryM <<< QueryM.getPoolParameters -- | Error returning variant diff --git a/src/Contract/Backend/Ogmios/Mempool.purs b/src/Contract/Backend/Ogmios/Mempool.purs index 855ac25b3..95a079203 100644 --- a/src/Contract/Backend/Ogmios/Mempool.purs +++ b/src/Contract/Backend/Ogmios/Mempool.purs @@ -14,6 +14,7 @@ module Contract.Backend.Ogmios.Mempool import Contract.Prelude +import Cardano.AsCbor (decodeCbor) import Cardano.Types.Transaction (Transaction) import Cardano.Types.TransactionHash (TransactionHash) import Contract.Monad (Contract) @@ -60,8 +61,7 @@ mempoolSnapshotNextTx mempoolAcquired = do byteArray <- liftMaybe (error "Failed to decode transaction") $ hexToByteArray raw liftMaybe (error "Failed to decode tx") - $ hush - $ deserializeTransaction + $ decodeCbor $ wrap byteArray -- | The acquired snapshot’s size (in bytes), number of transactions, and diff --git a/src/Contract/Keys.purs b/src/Contract/Keys.purs index f96c98630..5163011ba 100644 --- a/src/Contract/Keys.purs +++ b/src/Contract/Keys.purs @@ -6,22 +6,12 @@ module Contract.Keys , publicKeyFromBytes ) where -import Prelude - -import Cardano.AsCbor (decodeCbor) -import Cardano.Serialization.Lib - ( privateKey_fromBech32 - , privateKey_fromNormalBytes - , publicKey_fromBytes - ) as Csl -import Cardano.Types (Bech32String, RawBytes(..)) -import Cardano.Types.PrivateKey (PrivateKey(..)) +import Cardano.Types (Bech32String, RawBytes) +import Cardano.Types.PrivateKey (PrivateKey) import Cardano.Types.PrivateKey as PrivateKey -import Cardano.Types.PublicKey (PublicKey(..)) +import Cardano.Types.PublicKey (PublicKey) +import Cardano.Types.PublicKey as PublicKey import Data.Maybe (Maybe) -import Data.Newtype (unwrap, wrap) -import Data.Nullable (toMaybe) -import Safe.Coerce (coerce) privateKeyFromBytes :: RawBytes -> Maybe PrivateKey privateKeyFromBytes = PrivateKey.fromRawBytes @@ -31,7 +21,7 @@ privateKeyFromBech32 = PrivateKey.fromBech32 publicKeyFromBytes :: RawBytes -> Maybe PublicKey publicKeyFromBytes = - decodeCbor <<< wrap <<< unwrap + PublicKey.fromRawBytes publicKeyFromBech32 :: Bech32String -> Maybe PublicKey publicKeyFromBech32 = PublicKey.fromBech32 diff --git a/src/Contract/Plutarch/Types.purs b/src/Contract/Plutarch/Types.purs index 68cd2fbf4..977d4e8b4 100644 --- a/src/Contract/Plutarch/Types.purs +++ b/src/Contract/Plutarch/Types.purs @@ -58,4 +58,3 @@ denominator = unwrap >>> R.denominator recip :: PRational -> Maybe PRational recip = unwrap >>> R.recip >>> map wrap - diff --git a/src/Contract/PlutusData.purs b/src/Contract/PlutusData.purs index eb5e4b21a..fe4d37efa 100644 --- a/src/Contract/PlutusData.purs +++ b/src/Contract/PlutusData.purs @@ -4,11 +4,24 @@ module Contract.PlutusData ( getDatumByHash , getDatumsByHashes , getDatumsByHashesWithErrors + , module X ) where import Prelude -import Cardano.Types (DataHash, PlutusData) +import Cardano.FromData (class FromData) as X +import Cardano.ToData (class ToData) as X +import Cardano.Types (DataHash) +import Cardano.Types + ( PlutusData + ( Constr + , Map + , List + , Integer + , Bytes + ) + ) as X +import Cardano.Types.PlutusData (PlutusData) import Contract.Monad (Contract) import Control.Parallel (parTraverse) import Ctl.Internal.Contract.Monad (getQueryHandle) diff --git a/src/Contract/Prim/ByteArray.purs b/src/Contract/Prim/ByteArray.purs index 6efc7cec5..37a011b56 100644 --- a/src/Contract/Prim/ByteArray.purs +++ b/src/Contract/Prim/ByteArray.purs @@ -8,17 +8,8 @@ module Contract.Prim.ByteArray import Cardano.Types.CborBytes ( CborBytes(CborBytes) ) as CborBytes -import Ctl.Internal.Types.RawBytes +import Cardano.Types.RawBytes ( RawBytes(RawBytes) - , hexToRawBytes - , hexToRawBytesUnsafe - , rawBytesFromAscii - , rawBytesFromByteArray - , rawBytesFromIntArray - , rawBytesFromIntArrayUnsafe - , rawBytesToByteArray - , rawBytesToHex - , rawBytesToIntArray ) as RawBytes import Data.ByteArray ( ByteArray(ByteArray) diff --git a/src/Internal/Deserialization/Keys.purs b/src/Internal/Deserialization/Keys.purs index 0bd74b990..3e6ad09fd 100644 --- a/src/Internal/Deserialization/Keys.purs +++ b/src/Internal/Deserialization/Keys.purs @@ -7,6 +7,7 @@ module Ctl.Internal.Deserialization.Keys , freshPrivateKey ) where +import Cardano.Types.RawBytes (RawBytes) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) import Ctl.Internal.Serialization.Types ( Ed25519Signature @@ -14,7 +15,6 @@ import Ctl.Internal.Serialization.Types , PublicKey ) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.RawBytes (RawBytes) import Data.Maybe (Maybe) import Effect (Effect) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index d9de91b7e..e4c53de40 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -16,8 +16,9 @@ import Affjax (defaultRequest) as Affjax import Affjax.RequestBody as RequestBody import Affjax.RequestHeader as Header import Affjax.ResponseFormat as Affjax.ResponseFormat +import Cardano.Types (NetworkId(MainnetId)) +import Cardano.Types.BigNum as BigNum import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) -import Contract.Address (NetworkId(MainnetId)) import Contract.Chain (waitNSlots) import Contract.Config (defaultSynchronizationParams, defaultTimeParams) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) @@ -364,7 +365,7 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do "Impossible happened: could not decode wallets. Please report as bug" $ decodeWallets distr (coerce response.privateKeys) let walletsArray = keyWallets (Proxy :: Proxy distr) wallets - void $ waitNSlots one + void $ waitNSlots BigNum.one transferFundsFromEnterpriseToBase ourKey walletsArray pure wallets diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index a6ac464b3..3d2e18f90 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -30,12 +30,12 @@ import Aeson , toStringifiedNumbersJson , (.:) ) -import Cardano.Types.Transaction (PrivateKey(PrivateKey)) +import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) +import Cardano.Types.RawBytes (RawBytes(RawBytes)) import Ctl.Internal.Contract.Hooks (Hooks) import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) -import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) import Data.ByteArray (hexToByteArray) import Data.Either (Either(Left), note) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/Serialization/Keys.purs b/src/Internal/Serialization/Keys.purs index 5a6dd58ec..0a56bc5e1 100644 --- a/src/Internal/Serialization/Keys.purs +++ b/src/Internal/Serialization/Keys.purs @@ -7,13 +7,13 @@ module Ctl.Internal.Serialization.Keys , publicKeyFromPrivateKey ) where +import Cardano.Types.RawBytes (RawBytes) import Ctl.Internal.Serialization.Types ( Ed25519Signature , PrivateKey , PublicKey ) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.RawBytes (RawBytes) foreign import publicKeyFromPrivateKey :: PrivateKey -> PublicKey diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index 15c89ab11..270c86ef1 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -9,8 +9,10 @@ module Ctl.Internal.Test.E2E.Route import Prelude -import Cardano.Types.Address (NetworkId(MainnetId)) +import Cardano.Types (NetworkId(MainnetId)) import Cardano.Types.PrivateKey (PrivateKey(..)) +import Cardano.Types.PrivateKey as PrivateKey +import Cardano.Types.RawBytes (RawBytes(RawBytes)) import Contract.Config (ContractParams) import Contract.Keys (privateKeyFromBytes) import Contract.Monad (Contract, runContract) @@ -27,7 +29,6 @@ import Ctl.Internal.Helpers (liftEither) import Ctl.Internal.QueryM (ClusterSetup) import Ctl.Internal.Test.E2E.Feedback.Browser (getClusterSetupRepeatedly) import Ctl.Internal.Test.E2E.Feedback.Hooks (addE2EFeedbackHooks) -import Ctl.Internal.Types.RawBytes (RawBytes(RawBytes)) import Ctl.Internal.Wallet.Spec (WalletSpec(ConnectToEternl)) import Data.Array (last) import Data.Array as Array @@ -88,7 +89,8 @@ parseRoute queryString = _ -> Left "Unable to decode URL" where mkPrivateKey' :: String -> Maybe PrivateKey - mkPrivateKey' str = hexToByteArray str >>= RawBytes >>> privateKeyFromBytes + mkPrivateKey' str = hexToByteArray str >>= RawBytes >>> + PrivateKey.fromRawBytes mkPrivateKey :: String -> Maybe PrivateKey mkPrivateKey str = diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 4f6b0d720..9d9cc901c 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -10,13 +10,13 @@ import Prelude import Affjax (defaultRequest) as Affjax import Affjax (printError) import Affjax.ResponseFormat as Affjax.ResponseFormat +import Cardano.Types.PrivateKey as PrivateKey import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe) import Control.Promise (Promise, toAffE) import Ctl.Internal.Affjax (request) as Affjax import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.QueryBackend (QueryBackend(CtlBackend)) -import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.Helpers (liftedM, (<>)) import Ctl.Internal.Plutip.Server (withPlutipContractEnv) import Ctl.Internal.Plutip.Types (PlutipConfig) @@ -73,7 +73,6 @@ import Ctl.Internal.Test.E2E.Wallets ) import Ctl.Internal.Test.TestPlanM (TestPlanM, interpretWithConfig) import Ctl.Internal.Test.UtxoDistribution (withStakeKey) -import Ctl.Internal.Types.RawBytes (hexToRawBytes) import Ctl.Internal.Wallet.Key ( PrivateStakeKey , keyWalletPrivatePaymentKey @@ -81,6 +80,7 @@ import Ctl.Internal.Wallet.Key ) import Data.Array (catMaybes, mapMaybe, nub) import Data.Array as Array +import Data.ByteArray (hexToByteArray) import Data.Either (Either(Left, Right), isLeft) import Data.Foldable (fold) import Data.HTTP.Method (Method(GET)) @@ -223,9 +223,11 @@ buildPlutipConfig options = -- | Plutip does not generate private stake keys for us, so we make one and -- | fund it manually to get a usable base address. privateStakeKey :: PrivateStakeKey -privateStakeKey = wrap $ wrap $ unsafePartial $ fromJust - $ privateKeyFromBytes =<< hexToRawBytes - "633b1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" +privateStakeKey = wrap $ unsafePartial $ fromJust + $ PrivateKey.fromRawBytes =<< map wrap + ( hexToByteArray + "633b1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" + ) -- | Constructs a test plan given an array of tests. testPlan diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 212814415..4d1f26e1e 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -4,8 +4,13 @@ module Ctl.Internal.Test.KeyDir import Prelude -import Cardano.Types.PrivateKey (PrivateKey(..)) -import Contract.Address (addressToBech32) +import Cardano.Types (Value) +import Cardano.Types.Address (toBech32) as Address +import Cardano.Types.BigNum as BigNum +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.PrivateKey as PrivateKey +import Cardano.Types.PublicKey as PublicKey +import Cardano.Types.Value as Value import Contract.Config (ContractParams) import Contract.Log (logError', logTrace') import Contract.Monad @@ -18,7 +23,8 @@ import Contract.Monad ) import Contract.TextEnvelope (decodeTextEnvelope) import Contract.Transaction - ( awaitTxConfirmed + ( BalancedSignedTransaction(BalancedSignedTransaction) + , awaitTxConfirmed , balanceTx , signTransaction , submit @@ -35,7 +41,6 @@ import Contract.Wallet import Contract.Wallet.Key ( keyWalletPrivatePaymentKey , keyWalletPrivateStakeKey - , publicKeyFromPrivateKey ) import Contract.Wallet.KeyFile ( privatePaymentKeyFromTextEnvelope @@ -47,8 +52,8 @@ import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except (throwError) import Control.Monad.Reader (asks, local) import Control.Parallel (parTraverse, parTraverse_) -import Ctl.Internal.Deserialization.Keys (freshPrivateKey) import Ctl.Internal.Helpers (logWithLevel) +import Ctl.Internal.Lens (_amount) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) import Ctl.Internal.Test.ContractTest (ContractTest(ContractTest)) import Ctl.Internal.Test.TestPlanM (TestPlanM) @@ -76,7 +81,7 @@ import Data.Lens ((^.)) import Data.List (List(Cons, Nil)) import Data.List as List import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), isNothing, maybe) +import Data.Maybe (Maybe(Just, Nothing), fromJust, isNothing, maybe) import Data.Newtype (over, unwrap, wrap) import Data.String (joinWith) import Data.String.Utils (startsWith) as String @@ -104,6 +109,7 @@ import Node.FS.Aff (mkdir, readTextFile, readdir, writeTextFile) import Node.FS.Sync (exists) import Node.Path (FilePath) import Node.Path (concat) as Path +import Partial.Unsafe (unsafePartial) import Type.Prelude (Proxy(Proxy)) -- | Runs `ContractTest`s given a `ContractParams` value. @@ -134,9 +140,8 @@ runContractTestsWithKeyDir params backup = do ( error "Impossible happened: unable to get own address" ) =<< (getWalletAddresses <#> Array.head) - addressStr <- addressToBech32 address balance <- getWalletBalance <#> fold - pure $ addressStr /\ balance + pure $ Address.toBech32 address /\ balance let distrArray :: Array (Array UtxoAmount) distrArray = encodeDistribution distr @@ -159,18 +164,22 @@ runContractTestsWithKeyDir params backup = do (sum (Array.length <$> distrArray)) -- check if we have enough funds - when (valueToCoin' balance <= distrTotalAmount + feesToDistribute) do - liftEffect $ throw $ - "The test engine cannot satisfy the requested ADA distribution " - <> "because there are not enough funds left. \n\n" - <> "Total required value is: " - <> showLovelace distrTotalAmount - <> " (estimated)\n" - <> "Total available value is: " - <> BigInt.toString (valueToCoin' balance) - <> "\nThe test suite is using this address: " - <> addressStr - <> "\nFund it to continue." + when + ( BigNum.toBigInt (unwrap $ Value.getCoin balance) <= distrTotalAmount + + feesToDistribute + ) + do + liftEffect $ throw $ + "The test engine cannot satisfy the requested ADA distribution " + <> "because there are not enough funds left. \n\n" + <> "Total required value is: " + <> showLovelace distrTotalAmount + <> " (estimated)\n" + <> "Total available value is: " + <> BigNum.toString (unwrap $ Value.getCoin balance) + <> "\nThe test suite is using this address: " + <> addressStr + <> "\nFund it to continue." -- generate wallets privateKeys <- liftEffect $ for distrArray \_ -> PrivateKey.generate @@ -228,7 +237,7 @@ markAsInactive backup wallets = do flip parTraverse_ wallets \wallet -> do networkId <- asks _.networkId let - address = addressBech32 $ (unwrap wallet).address networkId + address = Address.toBech32 $ (unwrap wallet).address networkId inactiveFlagFile = Path.concat [ backup, address, "inactive" ] liftAff $ writeTextFile UTF8 inactiveFlagFile $ "This address was marked as inactive. " @@ -278,7 +287,7 @@ backupWallets backup env walletsArray = liftAff $ flip parTraverse_ walletsArray \wallet -> do let - address = addressBech32 $ (unwrap wallet).address env.networkId + address = Address.toBech32 $ (unwrap wallet).address env.networkId payment = keyWalletPrivatePaymentKey wallet mbStake = keyWalletPrivateStakeKey wallet folder = Path.concat [ backup, address ] @@ -297,7 +306,10 @@ fundWallets env walletsArray distrArray = runContractInEnv env $ noLogs do let constraints = flip foldMap (Array.zip walletsArray distrArray) \(wallet /\ walletDistr) -> flip foldMap walletDistr - \value -> mustPayToKeyWallet wallet $ lovelaceValueOf value + \value -> mustPayToKeyWallet wallet $ + Value.mkValue + (wrap $ unsafePartial $ fromJust $ BigNum.fromBigInt value) + MultiAsset.empty txHash <- submitTxFromConstraints mempty constraints awaitTxConfirmed txHash @@ -393,7 +405,9 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = let (refundTotal :: BigInt) = Array.foldl - (\acc txorf -> acc + valueToCoin' (txorf ^. _output ^. _amount)) + ( \acc txorf -> acc + BigNum.toBigInt + (unwrap $ Value.getCoin (txorf ^. _amount)) + ) zero (Array.fromFoldable $ Map.values utxos) @@ -432,7 +446,7 @@ mustPayToKeyWallet -> TxConstraints mustPayToKeyWallet wallet value = let - convert = publicKeyHash <<< publicKeyFromPrivateKey + convert = PublicKey.hash <<< PrivateKey.toPublicKey payment = over wrap convert $ keyWalletPrivatePaymentKey wallet mbStake = over wrap convert <$> keyWalletPrivateStakeKey wallet in diff --git a/src/Internal/Types/RawBytes.purs b/src/Internal/Types/RawBytes.purs deleted file mode 100644 index 9c03ed494..000000000 --- a/src/Internal/Types/RawBytes.purs +++ /dev/null @@ -1,74 +0,0 @@ --- | A wrapper over `ByteArray` to indicate a byte array with no further specified meaning - -module Ctl.Internal.Types.RawBytes - ( RawBytes(RawBytes) - , rawBytesToByteArray - , rawBytesFromByteArray - , rawBytesToIntArray - , rawBytesFromIntArray - , rawBytesFromIntArrayUnsafe - , rawBytesFromAscii - , rawBytesToHex - , byteLength - , hexToRawBytes - , hexToRawBytesUnsafe - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Cardano.FromMetadata (class FromMetadata) -import Cardano.ToMetadata (class ToMetadata) -import Data.ByteArray (ByteArray) -import Data.ByteArray as BytesArray -import Data.Maybe (Maybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Test.QuickCheck.Arbitrary (class Arbitrary) - --- | An array of Bytes with no information about the content format -newtype RawBytes = RawBytes ByteArray - -instance Show RawBytes where - show rb = "(hexToRawBytesUnsafe " <> show (rawBytesToHex rb) <> ")" - -derive instance Newtype RawBytes _ - -derive newtype instance Eq RawBytes -derive newtype instance Ord RawBytes -derive newtype instance Semigroup RawBytes -derive newtype instance Monoid RawBytes -derive newtype instance EncodeAeson RawBytes -derive newtype instance DecodeAeson RawBytes -derive newtype instance Arbitrary RawBytes -derive newtype instance ToMetadata RawBytes -derive newtype instance FromMetadata RawBytes - -rawBytesToIntArray :: RawBytes -> Array Int -rawBytesToIntArray = BytesArray.byteArrayToIntArray <<< unwrap - -rawBytesFromIntArray :: Array Int -> Maybe RawBytes -rawBytesFromIntArray = map wrap <<< BytesArray.byteArrayFromIntArray - -rawBytesFromIntArrayUnsafe :: Array Int -> RawBytes -rawBytesFromIntArrayUnsafe = wrap <<< BytesArray.byteArrayFromIntArrayUnsafe - -rawBytesToHex :: RawBytes -> String -rawBytesToHex = BytesArray.byteArrayToHex <<< unwrap - -byteLength :: RawBytes -> Int -byteLength = BytesArray.byteLength <<< unwrap - -hexToRawBytes :: String -> Maybe RawBytes -hexToRawBytes = map wrap <<< BytesArray.hexToByteArray - -hexToRawBytesUnsafe :: String -> RawBytes -hexToRawBytesUnsafe = wrap <<< BytesArray.hexToByteArrayUnsafe - -rawBytesToByteArray :: RawBytes -> ByteArray -rawBytesToByteArray = unwrap - -rawBytesFromByteArray :: ByteArray -> RawBytes -rawBytesFromByteArray = wrap - -rawBytesFromAscii :: String -> Maybe RawBytes -rawBytesFromAscii = map wrap <<< BytesArray.byteArrayFromAscii From 151527f48a1b3fce9bfb6144228f72e7fc153587 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 17 Mar 2024 02:57:48 +0400 Subject: [PATCH 069/373] Fix internal modules --- examples/AlwaysMints.purs | 16 +- examples/AlwaysSucceeds.purs | 54 +- examples/Helpers.purs | 32 +- examples/OneShotMinting.purs | 24 +- packages.dhall | 2 +- spago.dhall | 2 +- src/Contract/Address.purs | 23 +- src/Contract/CborBytes.purs | 59 +- src/Contract/Credential.purs | 5 + src/Contract/Hashing.purs | 19 + src/Contract/Metadata.purs | 8 + src/Contract/PlutusData.purs | 87 ++- src/Contract/Scripts.purs | 25 + src/Contract/Test/Assert.purs | 21 +- src/Contract/Transaction.purs | 64 +- src/Contract/Types.purs | 7 + .../Types/MintingPolicy.purs | 9 +- src/Contract/Value.purs | 46 ++ src/Internal/BalanceTx/BalanceTx.purs | 4 +- src/Internal/BalanceTx/CoinSelection.purs | 10 +- src/Internal/Cardano/Types/NativeScript.purs | 5 - src/Internal/Deserialization/BigInt.js | 3 - src/Internal/Deserialization/BigInt.purs | 14 - src/Internal/Deserialization/Error.purs | 88 --- src/Internal/Deserialization/Keys.js | 49 -- src/Internal/Deserialization/Keys.purs | 48 -- src/Internal/Deserialization/PlutusData.js | 45 -- src/Internal/Deserialization/PlutusData.purs | 91 --- src/Internal/Hashing.purs | 2 +- src/Internal/Helpers.purs | 12 +- src/Internal/Lens.purs | 11 + src/Internal/Plutip/Types.purs | 6 +- src/Internal/ProcessConstraints.purs | 13 +- src/Internal/ProcessConstraints/State.purs | 12 +- src/Internal/Serialization/BigInt.purs | 16 - src/Internal/Serialization/Keys.js | 14 - src/Internal/Serialization/Keys.purs | 34 -- src/Internal/Serialization/Types.purs | 90 --- src/Internal/Test/KeyDir.purs | 2 +- src/Internal/TypeLevel/Nat.purs | 31 - src/Internal/TypeLevel/RowList.purs | 23 - .../TypeLevel/RowList/Unordered/Indexed.purs | 160 ----- src/Internal/Types/CostModels.purs | 2 +- src/Internal/Types/Epoch.purs | 24 - src/Internal/Types/Int.js | 8 - src/Internal/Types/Int.purs | 4 - src/Internal/Types/RedeemerDatum.purs | 27 + src/Internal/Types/ScriptLookups.purs | 2 +- src/Internal/Types/TransactionMetadata.purs | 90 --- src/Internal/Types/TxConstraints.purs | 8 +- src/Internal/Wallet/Cip30Mock.purs | 3 +- test/Fixtures.purs | 569 ++++++------------ test/Fixtures/CostModels.js | 5 + test/Fixtures/CostModels.purs | 20 +- test/Serialization/Hash.purs | 67 +-- test/Transaction.purs | 177 ------ test/Types/Interval.purs | 20 +- test/Types/Ipv6.purs | 7 +- test/Unit.purs | 2 - test/UsedTxOuts.purs | 1 - test/Wallet/Bip32.purs | 8 +- test/Wallet/Cip30/SignData.purs | 35 +- 62 files changed, 762 insertions(+), 1603 deletions(-) create mode 100644 src/Contract/Credential.purs create mode 100644 src/Contract/Hashing.purs create mode 100644 src/Contract/Metadata.purs create mode 100644 src/Contract/Types.purs rename src/{Internal => Contract}/Types/MintingPolicy.purs (85%) create mode 100644 src/Contract/Value.purs delete mode 100644 src/Internal/Cardano/Types/NativeScript.purs delete mode 100644 src/Internal/Deserialization/BigInt.js delete mode 100644 src/Internal/Deserialization/BigInt.purs delete mode 100644 src/Internal/Deserialization/Error.purs delete mode 100644 src/Internal/Deserialization/Keys.js delete mode 100644 src/Internal/Deserialization/Keys.purs delete mode 100644 src/Internal/Deserialization/PlutusData.js delete mode 100644 src/Internal/Deserialization/PlutusData.purs delete mode 100644 src/Internal/Serialization/BigInt.purs delete mode 100644 src/Internal/Serialization/Keys.js delete mode 100644 src/Internal/Serialization/Keys.purs delete mode 100644 src/Internal/Serialization/Types.purs delete mode 100644 src/Internal/TypeLevel/Nat.purs delete mode 100644 src/Internal/TypeLevel/RowList.purs delete mode 100644 src/Internal/TypeLevel/RowList/Unordered/Indexed.purs delete mode 100644 src/Internal/Types/Epoch.purs delete mode 100644 src/Internal/Types/Int.js delete mode 100644 src/Internal/Types/Int.purs create mode 100644 src/Internal/Types/RedeemerDatum.purs delete mode 100644 src/Internal/Types/TransactionMetadata.purs create mode 100644 test/Fixtures/CostModels.js delete mode 100644 test/Transaction.purs diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index f8fddc2be..503eb292e 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -11,17 +11,17 @@ module Ctl.Examples.AlwaysMints import Contract.Prelude +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) import Contract.ScriptLookups as Lookups import Contract.Scripts (MintingPolicy(PlutusMintingPolicy)) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV1FromEnvelope) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints -import Contract.Value as Value -import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers -import JS.BigInt as BigInt +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers main :: Effect Unit main = example testnetNamiConfig @@ -30,12 +30,12 @@ contract :: Contract Unit contract = do logInfo' "Running Examples.AlwaysMints" mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy - tn <- Helpers.mkTokenName "TheToken" + tn <- Helpers.mkAssetName "TheToken" let constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue - $ Value.singleton cs tn - $ BigInt.fromInt 100 + $ Mint.singleton cs tn + $ Int.fromInt 100 lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp @@ -54,7 +54,7 @@ foreign import alwaysMints :: String alwaysMintsPolicyMaybe :: Maybe MintingPolicy alwaysMintsPolicyMaybe = do PlutusMintingPolicy <$> - (plutusScriptV1FromEnvelope =<< decodeTextEnvelope alwaysMints) + (plutusScriptFromEnvelope =<< decodeTextEnvelope alwaysMints) alwaysMintsPolicy :: Contract MintingPolicy alwaysMintsPolicy = diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index 26f1677de..b449d7410 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -12,18 +12,25 @@ module Ctl.Examples.AlwaysSucceeds import Contract.Prelude -import Contract.Address (scriptHashAddress) +import Cardano.Types + ( Credential(PubKeyHashCredential, ScriptHashCredential) + , PlutusScript + , ScriptHash + , TransactionHash + ) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData as Datum +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.PlutusScript as Script +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) -import Contract.Credential (Credential(PubKeyCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (unitDatum, unitRedeemer) +import Contract.PlutusData (unitRedeemer) import Contract.ScriptLookups as Lookups -import Contract.Scripts (Validator(Validator), ValidatorHash, validatorHash) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV1FromEnvelope) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction - ( TransactionHash - , _input + ( _input , awaitTxConfirmed , lookupTxHash , submitTxFromConstraints @@ -37,7 +44,6 @@ import Control.Monad.Error.Class (liftMaybe) import Data.Array (head) import Data.Lens (view) import Effect.Exception (error) -import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig @@ -46,7 +52,7 @@ contract :: Contract Unit contract = do logInfo' "Running Examples.AlwaysSucceeds" validator <- alwaysSucceedsScript - let vhash = validatorHash validator + let vhash = Script.hash validator logInfo' "Attempt to lock value" txId <- payToAlwaysSucceeds vhash awaitTxConfirmed txId @@ -57,26 +63,26 @@ example :: ContractParams -> Effect Unit example cfg = launchAff_ do runContract cfg contract -payToAlwaysSucceeds :: ValidatorHash -> Contract TransactionHash +payToAlwaysSucceeds :: ScriptHash -> Contract TransactionHash payToAlwaysSucceeds vhash = do -- Send to own stake credential. This is used to test mustPayToScriptAddress. mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes let + value = Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 + constraints :: TxConstraints constraints = case mbStakeKeyHash of Nothing -> - Constraints.mustPayToScript vhash unitDatum + Constraints.mustPayToScript vhash PlutusData.unit Constraints.DatumWitness - $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + value Just stakeKeyHash -> Constraints.mustPayToScriptAddress vhash - (PubKeyCredential $ unwrap stakeKeyHash) - unitDatum + (PubKeyHashCredential $ unwrap stakeKeyHash) + Datum.unit Constraints.DatumWitness - $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + value lookups :: Lookups.ScriptLookups lookups = mempty @@ -84,16 +90,16 @@ payToAlwaysSucceeds vhash = do submitTxFromConstraints lookups constraints spendFromAlwaysSucceeds - :: ValidatorHash - -> Validator + :: ScriptHash + -> PlutusScript -> TransactionHash -> Contract Unit spendFromAlwaysSucceeds vhash validator txId = do -- Use own stake credential if available mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes - let - scriptAddress = - scriptHashAddress vhash (PubKeyCredential <<< unwrap <$> mbStakeKeyHash) + scriptAddress <- mkAddress + (wrap $ ScriptHashCredential vhash) + (wrap <<< PubKeyHashCredential <<< unwrap <$> mbStakeKeyHash) utxos <- utxosAt scriptAddress txInput <- liftM @@ -117,10 +123,10 @@ spendFromAlwaysSucceeds vhash validator txId = do awaitTxConfirmed spendTxId logInfo' "Successfully spent locked values." -alwaysSucceedsScript :: Contract Validator +alwaysSucceedsScript :: Contract PlutusScript alwaysSucceedsScript = do liftMaybe (error "Error decoding alwaysSucceeds") do envelope <- decodeTextEnvelope alwaysSucceeds - Validator <$> plutusScriptV1FromEnvelope envelope + plutusScriptFromEnvelope envelope foreign import alwaysSucceeds :: String diff --git a/examples/Helpers.purs b/examples/Helpers.purs index 9f5dbb644..a6887d932 100644 --- a/examples/Helpers.purs +++ b/examples/Helpers.purs @@ -1,6 +1,6 @@ module Ctl.Examples.Helpers ( mkCurrencySymbol - , mkTokenName + , mkAssetName , mustPayToPubKeyStakeAddress , mustPayToPubKeyStakeAddressWithDatum , mustPayToPubKeyStakeAddressWithScriptRef @@ -9,35 +9,41 @@ module Ctl.Examples.Helpers import Contract.Prelude -import Contract.Address (PaymentPubKeyHash, StakePubKeyHash) +import Cardano.Types + ( AssetName + , PaymentPubKeyHash + , PlutusData + , ScriptHash + , ScriptRef + , StakePubKeyHash + , Value + ) +import Cardano.Types.AssetName as AssetName import Contract.Log (logInfo') import Contract.Monad (Contract, liftContractM) -import Contract.PlutusData (Datum) import Contract.Prim.ByteArray (byteArrayFromAscii) -import Contract.Scripts (MintingPolicy) import Contract.Transaction ( BalancedSignedTransaction - , ScriptRef , awaitTxConfirmed , submit ) import Contract.TxConstraints (DatumPresence) import Contract.TxConstraints as Constraints -import Contract.Value (CurrencySymbol, TokenName, Value) -import Contract.Value (mkTokenName, scriptCurrencySymbol) as Value +import Contract.Types.MintingPolicy (MintingPolicy) +import Contract.Types.MintingPolicy as MintingPolicy mkCurrencySymbol :: Contract MintingPolicy - -> Contract (MintingPolicy /\ CurrencySymbol) + -> Contract (MintingPolicy /\ ScriptHash) mkCurrencySymbol mintingPolicy = do mp <- mintingPolicy - let cs = Value.scriptCurrencySymbol mp + let cs = MintingPolicy.hash mp pure (mp /\ cs) -mkTokenName :: String -> Contract TokenName -mkTokenName = +mkAssetName :: String -> Contract AssetName +mkAssetName = liftContractM "Cannot make token name" - <<< (Value.mkTokenName <=< byteArrayFromAscii) + <<< (AssetName.mkAssetName <=< byteArrayFromAscii) mustPayToPubKeyStakeAddress :: forall (i :: Type) (o :: Type) @@ -54,7 +60,7 @@ mustPayToPubKeyStakeAddressWithDatum :: forall (i :: Type) (o :: Type) . PaymentPubKeyHash -> Maybe StakePubKeyHash - -> Datum + -> PlutusData -> DatumPresence -> Value -> Constraints.TxConstraints diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index b37bb08e2..2d0add8ee 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -13,6 +13,9 @@ module Ctl.Examples.OneShotMinting import Contract.Prelude +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -26,8 +29,7 @@ import Contract.Monad import Contract.PlutusData (PlutusData, toData) import Contract.ScriptLookups as Lookups import Contract.Scripts - ( ApplyArgsError - , MintingPolicy(PlutusMintingPolicy) + ( MintingPolicy(PlutusMintingPolicy) , PlutusScript , applyArgs ) @@ -37,19 +39,19 @@ import Contract.Test.Assert , checkTokenGainInWallet' , runChecks ) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV1FromEnvelope) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionInput , awaitTxConfirmed , submitTxFromConstraintsReturningFee ) import Contract.TxConstraints as Constraints -import Contract.Value (CurrencySymbol, TokenName) -import Contract.Value (singleton) as Value +import Contract.Value (AssetName, ScriptHash) import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) -import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers +import Ctl.Internal.ApplyArgs (ApplyArgsError) import Data.Array (head, singleton) as Array import Data.Map (toUnfoldable) as Map import Effect.Exception (error, throw) @@ -63,7 +65,7 @@ example cfg = launchAff_ do runContract cfg contract mkChecks - :: (CurrencySymbol /\ TokenName /\ BigInt) + :: (ScriptHash /\ AssetName /\ BigInt) -> Array (ContractCheck { txFinalFee :: BigInt }) mkChecks nft = [ checkTokenGainInWallet' nft @@ -90,12 +92,12 @@ mkContractWithAssertions exampleName mkMintingPolicy = do (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) mp /\ cs <- Helpers.mkCurrencySymbol (mkMintingPolicy oref) - tn <- Helpers.mkTokenName "CTLNFT" + tn <- Helpers.mkAssetName "CTLNFT" let constraints :: Constraints.TxConstraints constraints = - Constraints.mustMintValue (Value.singleton cs tn one) + Constraints.mustMintValue (Mint.singleton cs tn $ Int.fromInt one) <> Constraints.mustSpendPubKeyOutput oref lookups :: Lookups.ScriptLookups @@ -110,7 +112,7 @@ mkContractWithAssertions exampleName mkMintingPolicy = do logInfo' $ "Tx ID: " <> show txHash awaitTxConfirmed txHash logInfo' "Tx submitted successfully!" - pure { txFinalFee } + pure { txFinalFee: BigNum.toBigInt $ unwrap txFinalFee } oneShotMintingPolicy :: TransactionInput -> Contract MintingPolicy oneShotMintingPolicy = @@ -120,7 +122,7 @@ oneShotMintingPolicyScript :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScript txInput = do script <- liftMaybe (error "Error decoding oneShotMinting") do envelope <- decodeTextEnvelope oneShotMinting - plutusScriptV1FromEnvelope envelope + plutusScriptFromEnvelope envelope liftContractE $ mkOneShotMintingPolicy script txInput mkOneShotMintingPolicy diff --git a/packages.dhall b/packages.dhall index a980c4fee..353c569ec 100644 --- a/packages.dhall +++ b/packages.dhall @@ -361,7 +361,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "26311cde53a927c68b5ac84ad008abb164ee14e4" + , version = "685b3693471034ad06c63bc6d803708ba40b6c22" } , cardano-message-signing = { dependencies = diff --git a/spago.dhall b/spago.dhall index 5aaac14bb..5bd82214a 100644 --- a/spago.dhall +++ b/spago.dhall @@ -105,5 +105,5 @@ You can edit this file as you like. , "web-storage" ] , packages = ./packages.dhall -, sources = [ "src/**/*.purs" ] +, sources = [ "src/**/*.purs", "examples/**/*.purs", "test/**/*.purs" ] } diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index 04d3e3710..a779b3cd7 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -1,15 +1,30 @@ module Contract.Address ( getNetworkId , addressFromBech32 + , mkAddress + , module X ) where import Prelude -import Cardano.Types (Address, Bech32String, NetworkId) +import Cardano.Types + ( Address + , Bech32String + , NetworkId + , PaymentCredential + , StakeCredential + ) +import Cardano.Types + ( PaymentPubKeyHash(PaymentPubKeyHash) + , StakePubKeyHash(StakePubKeyHash) + ) as X +import Cardano.Types.Address (Address(..)) as X +import Cardano.Types.Address (mkPaymentAddress) import Cardano.Types.Address as Address import Contract.Monad (Contract, liftContractM) import Control.Monad.Error.Class (throwError) import Control.Monad.Reader.Class (asks) +import Data.Maybe (Maybe) import Effect.Exception (error) getNetworkId :: Contract NetworkId @@ -26,3 +41,9 @@ addressFromBech32 str = do when (networkId /= Address.getNetworkId addr) (throwError $ error "addressFromBech32: address has wrong NetworkId") pure addr + +mkAddress + :: PaymentCredential -> Maybe StakeCredential -> Contract Address +mkAddress pc msc = do + networkId <- getNetworkId + pure $ mkPaymentAddress networkId pc msc diff --git a/src/Contract/CborBytes.purs b/src/Contract/CborBytes.purs index e48e0128e..1bd9f198c 100644 --- a/src/Contract/CborBytes.purs +++ b/src/Contract/CborBytes.purs @@ -1,6 +1,57 @@ -- | A module with CBOR-related functionality. -module Contract.CborBytes (module CborBytes) where +module Contract.CborBytes + ( module CborBytes + , cborBytesToIntArray + , cborBytesFromIntArray + , cborBytesFromIntArrayUnsafe + , cborBytesToHex + , cborByteLength + , hexToCborBytes + , hexToCborBytesUnsafe + , cborBytesToByteArray + , cborBytesFromByteArray + , cborBytesFromAscii + , rawBytesAsCborBytes + ) where -import Cardano.Types.CborBytes - ( CborBytes(CborBytes) - ) as CborBytes +import Prelude + +import Cardano.Types (CborBytes, RawBytes) +import Cardano.Types.CborBytes (CborBytes(CborBytes)) as CborBytes +import Data.ByteArray (ByteArray) +import Data.ByteArray as ByteArray +import Data.Maybe (Maybe) +import Data.Newtype (unwrap, wrap) + +cborBytesToIntArray :: CborBytes -> Array Int +cborBytesToIntArray = ByteArray.byteArrayToIntArray <<< unwrap + +cborBytesFromIntArray :: Array Int -> Maybe CborBytes +cborBytesFromIntArray = map wrap <<< ByteArray.byteArrayFromIntArray + +cborBytesFromIntArrayUnsafe :: Array Int -> CborBytes +cborBytesFromIntArrayUnsafe = wrap <<< ByteArray.byteArrayFromIntArrayUnsafe + +cborBytesToHex :: CborBytes -> String +cborBytesToHex = ByteArray.byteArrayToHex <<< unwrap + +cborByteLength :: CborBytes -> Int +cborByteLength = ByteArray.byteLength <<< unwrap + +hexToCborBytes :: String -> Maybe CborBytes +hexToCborBytes = map wrap <<< ByteArray.hexToByteArray + +hexToCborBytesUnsafe :: String -> CborBytes +hexToCborBytesUnsafe = wrap <<< ByteArray.hexToByteArrayUnsafe + +cborBytesToByteArray :: CborBytes -> ByteArray +cborBytesToByteArray = unwrap + +cborBytesFromByteArray :: ByteArray -> CborBytes +cborBytesFromByteArray = wrap + +cborBytesFromAscii :: String -> Maybe CborBytes +cborBytesFromAscii = map wrap <<< ByteArray.byteArrayFromAscii + +rawBytesAsCborBytes :: RawBytes -> CborBytes +rawBytesAsCborBytes = wrap <<< unwrap diff --git a/src/Contract/Credential.purs b/src/Contract/Credential.purs new file mode 100644 index 000000000..a02f205ac --- /dev/null +++ b/src/Contract/Credential.purs @@ -0,0 +1,5 @@ +module Contract.Credential (module X) where + +import Cardano.Types.Credential + ( Credential(PubKeyHashCredential, ScriptHashCredential) + ) as X diff --git a/src/Contract/Hashing.purs b/src/Contract/Hashing.purs new file mode 100644 index 000000000..64c93e7fe --- /dev/null +++ b/src/Contract/Hashing.purs @@ -0,0 +1,19 @@ +module Contract.Hashing where + +import Cardano.Types (DataHash, Ed25519KeyHash, PlutusData, PublicKey) +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.PublicKey as PublicKey +import Prim.TypeError (class Warn, Text) + +publicKeyHash + :: Warn (Text "deprecated: publicKeyHash. use Cardano.Types.PublicKey.hash") + => PublicKey + -> Ed25519KeyHash +publicKeyHash = PublicKey.hash + +datumHash + :: Warn + (Text "deprecated: datumHash. use Cardano.Types.DataHash.hashPlutusData") + => PlutusData + -> DataHash +datumHash = hashPlutusData diff --git a/src/Contract/Metadata.purs b/src/Contract/Metadata.purs new file mode 100644 index 000000000..79ad77753 --- /dev/null +++ b/src/Contract/Metadata.purs @@ -0,0 +1,8 @@ +module Contract.Metadata + ( module X + ) where + +import Cardano.Types (GeneralTransactionMetadata(GeneralTransactionMetadata)) as X +import Cardano.Types.TransactionMetadatum + ( TransactionMetadatum(Map, List, Int, Bytes, Text) + ) as X diff --git a/src/Contract/PlutusData.purs b/src/Contract/PlutusData.purs index fe4d37efa..d492caa15 100644 --- a/src/Contract/PlutusData.purs +++ b/src/Contract/PlutusData.purs @@ -4,33 +4,90 @@ module Contract.PlutusData ( getDatumByHash , getDatumsByHashes , getDatumsByHashesWithErrors + , unitDatum + , unitRedeemer , module X + , Datum ) where import Prelude -import Cardano.FromData (class FromData) as X -import Cardano.ToData (class ToData) as X +import Cardano.FromData + ( class FromData + , class FromDataArgs + , class FromDataArgsRL + , class FromDataWithSchema + , FromDataError + ( ArgsWantedButGot + , FromDataFailed + , BigNumToIntFailed + , IndexWantedButGot + , WantedConstrGot + ) + , fromData + , fromDataArgs + , fromDataArgsRec + , fromDataWithSchema + , genericFromData + ) as X +import Cardano.Plutus.DataSchema + ( class AllUnique2 + , class HasPlutusSchema + , class PlutusSchemaToRowListI + , class SchemaToRowList + , class ValidPlutusSchema + , type (:+) + , type (:=) + , type (@@) + , ApPCons + , Field + , I + , Id + , IxK + , MkField + , MkField_ + , MkIxK + , MkIxK_ + , PCons + , PNil + , PSchema + ) as X +import Cardano.ToData + ( class ToData + , class ToDataArgs + , class ToDataArgsRL + , class ToDataArgsRLHelper + , class ToDataWithSchema + , genericToData + , toData + , toDataArgs + , toDataArgsRec + , toDataArgsRec' + , toDataWithSchema + ) as X import Cardano.Types (DataHash) import Cardano.Types - ( PlutusData - ( Constr - , Map - , List - , Integer - , Bytes - ) + ( DataHash(DataHash) + , PlutusData(Constr, Map, List, Integer, Bytes) + ) as X +import Cardano.Types.OutputDatum + ( OutputDatum(OutputDatumHash, OutputDatum) ) as X import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.PlutusData as Datum import Contract.Monad (Contract) import Control.Parallel (parTraverse) import Ctl.Internal.Contract.Monad (getQueryHandle) +import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) +import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum(RedeemerDatum)) as X +import Ctl.Internal.Types.RedeemerDatum as Redeemer import Data.Either (Either(Left, Right), hush) import Data.Map (Map) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Tuple (Tuple(Tuple)) import Effect.Aff.Class (liftAff) +import Prim.TypeError (class Warn, Text) -- | Retrieve the full resolved datum associated to a given datum hash. getDatumByHash :: DataHash -> Contract (Maybe PlutusData) @@ -56,3 +113,15 @@ getDatumsByHashesWithErrors hashes = do Right (Just datum) -> Right datum Right Nothing -> Left "Datum not found" Left err -> Left $ show err + +unitDatum + :: Warn (Text "Deprecated: use Cardano.Types.PlutusData.unit") => PlutusData +unitDatum = Datum.unit + +unitRedeemer + :: Warn (Text "Deprecated: use Cardano.Types.PlutusData.unit") + => RedeemerDatum +unitRedeemer = Redeemer.unit + +-- | DEPRECATED. Use `Cardano.Types.PlutusData` +type Datum = PlutusData diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index 2c62afd55..589bb61c9 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -4,22 +4,35 @@ module Contract.Scripts ( getScriptByHash , getScriptsByHashes + , module X + , Validator + , ValidatorHash + , validatorHash ) where import Prelude +import Cardano.Types (PlutusScript(PlutusScript)) as X import Cardano.Types (ScriptHash) +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.ScriptRef (ScriptRef) import Contract.Monad (Contract) import Control.Parallel (parTraverse) +import Ctl.Internal.ApplyArgs (applyArgs) as X import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Service.Error (ClientError) +import Contract.Types + ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) + , hash + ) as X import Data.Either (Either) import Data.Map (Map) import Data.Map as Map import Data.Maybe (Maybe) import Data.Tuple (Tuple(Tuple)) import Effect.Aff.Class (liftAff) +import Prim.TypeError (class Warn, Text) -- | Retrieve a `ScriptRef` given the hash getScriptByHash :: ScriptHash -> Contract (Either ClientError (Maybe ScriptRef)) @@ -35,3 +48,15 @@ getScriptsByHashes hashes = do queryHandle <- getQueryHandle liftAff $ Map.fromFoldable <$> flip parTraverse hashes \sh -> queryHandle.getScriptByHash sh <#> Tuple sh + +-- | Deprecated. Use `Cardano.Types.PlutusScript` +type Validator = PlutusScript + +-- | Deprecated. Use `Cardano.Types.ScriptHash` +type ValidatorHash = ScriptHash + +validatorHash + :: Warn (Text "Deprecated: Validator. Use Cardano.Types.PlutusData.hash") + => PlutusScript + -> ScriptHash +validatorHash = PlutusScript.hash diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 2476559e3..7a25e376e 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -115,6 +115,7 @@ import Effect.Exception (Error, error, message, throw, try) import Effect.Ref (Ref) import Effect.Ref as Ref import JS.BigInt (BigInt) +import Partial.Unsafe (unsafePartial) import Type.Proxy (Proxy(Proxy)) -- | Monad allowing for accumulation of assertion failures. @@ -436,12 +437,14 @@ checkExUnitsNotExceed maxExUnits contract = do submitHook tx = do let (newExUnits :: ExUnits) = - foldr append (ExUnits { mem: BigNum.zero, steps: BigNum.zero }) $ tx - ^. - _witnessSet - <<< _redeemers - <<< to (map (unwrap >>> _.exUnits)) - Ref.modify_ (append newExUnits) ref + unsafePartial + $ foldr append (ExUnits { mem: BigNum.zero, steps: BigNum.zero }) + $ tx + ^. + _witnessSet + <<< _redeemers + <<< to (map (unwrap >>> _.exUnits)) + Ref.modify_ (unsafePartial $ append newExUnits) ref setSubmitHook :: ContractEnv -> ContractEnv setSubmitHook = @@ -632,11 +635,11 @@ checkValueDeltaInWallet . (Maybe a -> Value -> Value -> ContractAssertion Unit) -> ContractCheck a checkValueDeltaInWallet check contract = do - valueBefore <- lift $ getWalletBalance <#> fold + valueBefore <- lift $ unsafePartial $ getWalletBalance <#> fold ref <- liftEffect $ Ref.new Nothing let finalize = do - valueAfter <- lift $ getWalletBalance <#> fold + valueAfter <- unsafePartial $ lift $ getWalletBalance <#> fold liftEffect (Ref.read ref) >>= \res -> check res valueBefore valueAfter run = do res <- contract @@ -828,7 +831,7 @@ assertTxHasMetadata mdLabel txHash expectedMetadata = do getValueAtAddress :: Labeled Address -> ContractAssertion Value -getValueAtAddress = map (foldMap (view (_amount))) <<< lift +getValueAtAddress = map (unsafePartial $ foldMap (view (_amount))) <<< lift <<< utxosAt <<< unlabel diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index d1d5423b5..07fb3b4cd 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -22,6 +22,9 @@ module Contract.Transaction , withBalancedTxWithConstraints , withBalancedTxs , withBalancedTxsWithConstraints + , lookupTxHash + , getTxFinalFee + , scriptRefFromMintingPolicy ) where import Prelude @@ -34,8 +37,17 @@ import Cardano.Types , TransactionHash , TransactionInput(TransactionInput) , TransactionOutput + , TransactionUnspentOutput(TransactionUnspentOutput) , UtxoMap ) +import Cardano.Types + ( TransactionHash(TransactionHash) + , TransactionInput(TransactionInput) + , TransactionOutput(TransactionOutput) + , TransactionUnspentOutput(TransactionUnspentOutput) + ) as X +import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash(PoolPubKeyHash)) as X +import Cardano.Types.ScriptRef (ScriptRef) import Cardano.Types.Transaction as Hashing import Contract.Monad (Contract, runContractInEnv) import Contract.UnbalancedTx (mkUnbalancedTx) @@ -85,9 +97,40 @@ import Ctl.Internal.Contract.QueryHandle.Error ) ) as X import Ctl.Internal.Contract.Sign (signTransaction) as Contract +import Ctl.Internal.Lens + ( _amount + , _auxiliaryData + , _auxiliaryDataHash + , _body + , _certs + , _collateral + , _collateralReturn + , _datum + , _fee + , _input + , _inputs + , _isValid + , _mint + , _networkId + , _output + , _outputs + , _plutusData + , _plutusScripts + , _redeemers + , _referenceInputs + , _requiredSigners + , _scriptDataHash + , _scriptRef + , _totalCollateral + , _vkeys + , _withdrawals + , _witnessSet + ) as X import Ctl.Internal.Lens (_body, _fee, _outputs) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) import Ctl.Internal.Service.Error (ClientError) +import Contract.Types (MintingPolicy) +import Contract.Types as MintingPolicy import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.TxConstraints (TxConstraints) import Ctl.Internal.Types.UsedTxOuts @@ -95,6 +138,7 @@ import Ctl.Internal.Types.UsedTxOuts , lockTransactionInputs , unlockTransactionInputs ) +import Data.Array as Array import Data.Array.NonEmpty as NonEmptyArray import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right)) @@ -102,7 +146,7 @@ import Data.Foldable (foldl, length) import Data.Generic.Rep (class Generic) import Data.Lens.Getter (view) import Data.Map (Map) -import Data.Map (empty, insert) as Map +import Data.Map (empty, insert, toUnfoldable) as Map import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) import Data.Traversable (class Traversable, for_, traverse) @@ -353,10 +397,6 @@ derive newtype instance EncodeAeson BalancedSignedTransaction instance Show BalancedSignedTransaction where show = genericShow -getTxFinalFee :: BalancedSignedTransaction -> Coin -getTxFinalFee = - view (_body <<< _fee) <<< unwrap - -- | Fetch transaction metadata. -- | Returns `Right` when the transaction exists and metadata was non-empty getTxMetadata @@ -405,3 +445,17 @@ submitTxFromConstraints -> Contract TransactionHash submitTxFromConstraints lookups constraints = _.txHash <$> submitTxFromConstraintsReturningFee lookups constraints + +lookupTxHash + :: TransactionHash -> UtxoMap -> Array TransactionUnspentOutput +lookupTxHash txHash utxos = + map (\(input /\ output) -> TransactionUnspentOutput { input, output }) + $ Array.filter (fst >>> unwrap >>> _.transactionId >>> eq txHash) + $ Map.toUnfoldable utxos + +getTxFinalFee :: BalancedSignedTransaction -> Coin +getTxFinalFee = + view (_body <<< _fee) <<< unwrap + +scriptRefFromMintingPolicy :: MintingPolicy -> ScriptRef +scriptRefFromMintingPolicy = MintingPolicy.toScriptRef diff --git a/src/Contract/Types.purs b/src/Contract/Types.purs new file mode 100644 index 000000000..c5f11e829 --- /dev/null +++ b/src/Contract/Types.purs @@ -0,0 +1,7 @@ +module Contract.Types (module X) where + +import Contract.Types.MintingPolicy + ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) + , hash + , toScriptRef + ) as X diff --git a/src/Internal/Types/MintingPolicy.purs b/src/Contract/Types/MintingPolicy.purs similarity index 85% rename from src/Internal/Types/MintingPolicy.purs rename to src/Contract/Types/MintingPolicy.purs index 4fc7a0424..cd9473d6e 100644 --- a/src/Internal/Types/MintingPolicy.purs +++ b/src/Contract/Types/MintingPolicy.purs @@ -1,6 +1,7 @@ -module Ctl.Internal.Types.MintingPolicy +module Contract.Types.MintingPolicy ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) , hash + , toScriptRef ) where import Prelude @@ -11,6 +12,7 @@ import Cardano.Types.NativeScript (NativeScript) import Cardano.Types.NativeScript as NativeScript import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.ScriptRef (ScriptRef(..)) import Control.Alt ((<|>)) import Ctl.Internal.Helpers (decodeTaggedNewtype) import Data.Generic.Rep (class Generic) @@ -42,3 +44,8 @@ instance Show MintingPolicy where hash :: MintingPolicy -> ScriptHash hash (PlutusMintingPolicy ps) = PlutusScript.hash ps hash (NativeMintingPolicy ns) = NativeScript.hash ns + +toScriptRef :: MintingPolicy -> ScriptRef +toScriptRef = case _ of + PlutusMintingPolicy ps -> PlutusScriptRef ps + NativeMintingPolicy ns -> NativeScriptRef ns diff --git a/src/Contract/Value.purs b/src/Contract/Value.purs new file mode 100644 index 000000000..546e6d499 --- /dev/null +++ b/src/Contract/Value.purs @@ -0,0 +1,46 @@ +module Contract.Value + ( module X + , CurrencySymbol + , TokenName + ) where + +import Cardano.Types (AssetName, ScriptHash) +import Cardano.Types.AssetName (AssetName(AssetName)) as X +import Cardano.Types.ScriptHash (ScriptHash(ScriptHash)) as X +import Cardano.Types.Value + ( Value(Value) + , add + , assetToValue + , checkBinRel + , checkPred + , coinToValue + , empty + , fromCsl + , geq + , getAssetQuantity + , getCoin + , getMultiAsset + , gt + , isPositive + , isZero + , leq + , lovelaceValueOf + , lt + , minus + , mkValue + , pprintValue + , singleton + , sum + , toCsl + , unionWith + , valueAssetClasses + , valueAssets + , valueOf + , valueToCoin + ) as X + +-- | Deprecated, use `Cardano.Types.ScriptHash` +type CurrencySymbol = ScriptHash + +-- | Deprecated, use `Cardano.Types.AssetName` +type TokenName = AssetName diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 12ddc324f..7f282cb67 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -451,7 +451,7 @@ runBalancer p = do _body worker $ - if requiredValue == mempty then BalanceChangeAndMinFee $ state + if requiredValue == Value.empty then BalanceChangeAndMinFee $ state { changeOutputs = changeOutputs, transaction = transaction } else PrebalanceTx $ state { changeOutputs = changeOutputs } @@ -887,7 +887,7 @@ logTransactionWithChange message utxos mChangeOutputs tx = [ "Output Value without change" `tagSetTag` pprintVal (outputValue txBody) , "Change Value" `tagSetTag` pprintValue - (foldMap (getAmount) changeOutputs) + (unsafePartial $ foldMap (getAmount) changeOutputs) ] transactionInfo :: Val -> TagSet diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index 863a27eae..dec207ec3 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -31,6 +31,7 @@ import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.UtxoMap (UtxoMap) import Cardano.Types.Value ( add + , empty , getAssetQuantity , getCoin , leq @@ -38,8 +39,7 @@ import Cardano.Types.Value , valueToCoin ) as Value import Control.Monad.Error.Class - ( class MonadError - , class MonadThrow + ( class MonadThrow , throwError ) import Ctl.Internal.BalanceTx.Error @@ -77,8 +77,6 @@ import Data.Lens.Setter (over) import Data.Map as Map import Data.Maybe (Maybe(..), isNothing, maybe, maybe') import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Set (Set) -import Data.Set (fromFoldable) as Set import Data.Show.Generic (genericShow) import Data.Tuple (fst) as Tuple import Data.Tuple.Nested (type (/\), (/\)) @@ -129,7 +127,7 @@ instance Arbitrary SelectionStrategy where performMultiAssetSelection :: forall (m :: Type -> Type) . MonadEffect m - => MonadError BalanceTxError m + => MonadThrow BalanceTxError m => SelectionStrategy -> UtxoIndex -> Value @@ -223,7 +221,7 @@ selectUtxo utxo@(oref /\ out) = balance :: UtxoMap -> Maybe Value balance = Array.fromFoldable >>> map (unwrap >>> _.amount) >>> foldr (\bn mbn -> mbn >>= Value.add bn) - (Just mempty) + (Just Value.empty) -- | Returns the balance of selected utxos. -- | diff --git a/src/Internal/Cardano/Types/NativeScript.purs b/src/Internal/Cardano/Types/NativeScript.purs deleted file mode 100644 index fee95d066..000000000 --- a/src/Internal/Cardano/Types/NativeScript.purs +++ /dev/null @@ -1,5 +0,0 @@ -module Ctl.Internal.Cardano.Types.NativeScript - ( module X - ) where - -import Cardano.Types.NativeScript as X diff --git a/src/Internal/Deserialization/BigInt.js b/src/Internal/Deserialization/BigInt.js deleted file mode 100644 index 0fd6fef55..000000000 --- a/src/Internal/Deserialization/BigInt.js +++ /dev/null @@ -1,3 +0,0 @@ -export function _BigInt_to_str(x) { - return x.to_str(); -} diff --git a/src/Internal/Deserialization/BigInt.purs b/src/Internal/Deserialization/BigInt.purs deleted file mode 100644 index 370a99d9c..000000000 --- a/src/Internal/Deserialization/BigInt.purs +++ /dev/null @@ -1,14 +0,0 @@ -module Ctl.Internal.Deserialization.BigInt - ( convertBigInt - ) where - -import Prelude - -import Ctl.Internal.Serialization.Types (BigInt) -import Data.Maybe (Maybe) -import JS.BigInt as BigInt - -convertBigInt :: BigInt -> Maybe BigInt.BigInt -convertBigInt = BigInt.fromString <<< _BigInt_to_str - -foreign import _BigInt_to_str :: BigInt -> String diff --git a/src/Internal/Deserialization/Error.purs b/src/Internal/Deserialization/Error.purs deleted file mode 100644 index 5edb6631e..000000000 --- a/src/Internal/Deserialization/Error.purs +++ /dev/null @@ -1,88 +0,0 @@ --- | Error-centered types and functions used by Deserialization modules. -module Ctl.Internal.Deserialization.Error - ( Err - , FromBytesError - , FromCslRepError - , _fromCslRepError - , addErrTrace - , cslErr - , fromBytesErrorHelper - , fromBytesError - , fromCslRepError - , toError - ) where - -import Prelude - -import Ctl.Internal.Error (E, NotImplementedError, _notImplementedError, noteE) -import Ctl.Internal.FfiHelpers (ErrorFfiHelper, errorHelper) -import Data.Either (Either(Left)) -import Data.Maybe (Maybe) -import Data.Variant (Variant, default, inj, match, onMatch) -import Effect.Exception (Error, error) -import Type.Proxy (Proxy(Proxy)) -import Type.Row (type (+)) - --- | Error type returned by Deserialization modules -type Err r a = E (FromBytesError + NotImplementedError + FromCslRepError + r) a - --- | Error type for errors returned when conversion from CSL representations fails. -type FromCslRepError r = (fromCslRepError :: String | r) - -_fromCslRepError = Proxy :: Proxy "fromCslRepError" - --- | Creates an error E value from a string. -fromCslRepError - :: forall (r :: Row Type) (a :: Type) - . String - -> E (FromCslRepError + r) a -fromCslRepError = Left <<< inj _fromCslRepError - --- | Annotates Maybe's Nothing as a CSL error. -cslErr - :: forall a r - . String - -> Maybe a - -> E (FromCslRepError + r) a -cslErr = noteE <<< fromCslRepError - --- TODO make it so that it detects non-exhaustiveness --- | Add trace string to an error. -addErrTrace :: forall r a. String -> Err r a -> Err r a -addErrTrace s (Left e) = - Left $ e # - ( default e # onMatch - { fromCslRepError: \orig -> inj _fromCslRepError (s <> ": " <> orig) - , notImplementedError: \orig -> inj _notImplementedError - (s <> ": " <> orig) - , fromBytesError: \orig -> inj _fromBytesError (s <> ": " <> orig) - } - ) -addErrTrace _ a = a - --- | Convert a deserialization error into an `Effect` error -toError - :: Variant (FromBytesError + NotImplementedError + FromCslRepError + ()) - -> Error -toError = error <<< match - { fromCslRepError: \err -> "FromCslRepError: " <> err - , fromBytesError: \err -> "FromBytesError: " <> err - , notImplementedError: \err -> "NotImplementedError: " <> err - } - --- | FromBytesError row alias -type FromBytesError r = (fromBytesError :: String | r) - --- | Needed to create a variant type -_fromBytesError = Proxy :: Proxy "fromBytesError" - -fromBytesError - :: forall (r :: Row Type) (a :: Type) - . String - -> E (FromBytesError + r) a -fromBytesError = Left <<< inj _fromBytesError - -fromBytesErrorHelper - :: forall (r :: Row Type) - . ErrorFfiHelper (FromBytesError + r) -fromBytesErrorHelper = errorHelper $ inj _fromBytesError diff --git a/src/Internal/Deserialization/Keys.js b/src/Internal/Deserialization/Keys.js deleted file mode 100644 index 60f8e7c65..000000000 --- a/src/Internal/Deserialization/Keys.js +++ /dev/null @@ -1,49 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function freshPrivateKey() { - return lib.PrivateKey.generate_ed25519(); -} - -export function _publicKeyFromBech32(maybe) { - return bech32 => { - try { - return maybe.just(lib.PublicKey.from_bech32(bech32)); - } catch (_) { - return maybe.nothing; - } - }; -} - -export function _ed25519SignatureFromBech32(maybe) { - return bech32 => { - try { - return maybe.just(lib.Ed25519Signature.from_bech32(bech32)); - } catch (_) { - return maybe.nothing; - } - }; -} - -export function _privateKeyFromBytes(maybe) { - return bytes => { - try { - return maybe.just(lib.PrivateKey.from_normal_bytes(bytes)); - } catch (_) { - return maybe.nothing; - } - }; -} - -export function privateKeyToBech32(privateKey) { - return privateKey.to_bech32(); -} - -export function _privateKeyFromBech32(maybe) { - return bech32 => { - try { - return maybe.just(lib.PrivateKey.from_bech32(bech32)); - } catch (_) { - return maybe.nothing; - } - }; -} diff --git a/src/Internal/Deserialization/Keys.purs b/src/Internal/Deserialization/Keys.purs deleted file mode 100644 index 3e6ad09fd..000000000 --- a/src/Internal/Deserialization/Keys.purs +++ /dev/null @@ -1,48 +0,0 @@ -module Ctl.Internal.Deserialization.Keys - ( publicKeyFromBech32 - , privateKeyFromBytes - , ed25519SignatureFromBech32 - , privateKeyToBech32 - , privateKeyFromBech32 - , freshPrivateKey - ) where - -import Cardano.Types.RawBytes (RawBytes) -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Serialization.Types - ( Ed25519Signature - , PrivateKey - , PublicKey - ) -import Ctl.Internal.Types.Aliases (Bech32String) -import Data.Maybe (Maybe) -import Effect (Effect) - -publicKeyFromBech32 :: Bech32String -> Maybe PublicKey -publicKeyFromBech32 = _publicKeyFromBech32 maybeFfiHelper - -privateKeyFromBytes :: RawBytes -> Maybe PrivateKey -privateKeyFromBytes = _privateKeyFromBytes maybeFfiHelper - -ed25519SignatureFromBech32 :: Bech32String -> Maybe Ed25519Signature -ed25519SignatureFromBech32 = _ed25519SignatureFromBech32 maybeFfiHelper - -privateKeyFromBech32 :: Bech32String -> Maybe PrivateKey -privateKeyFromBech32 = _privateKeyFromBech32 maybeFfiHelper - -foreign import freshPrivateKey - :: Effect PrivateKey - -foreign import _ed25519SignatureFromBech32 - :: MaybeFfiHelper -> Bech32String -> Maybe Ed25519Signature - -foreign import _publicKeyFromBech32 - :: MaybeFfiHelper -> Bech32String -> Maybe PublicKey - -foreign import _privateKeyFromBytes - :: MaybeFfiHelper -> RawBytes -> Maybe PrivateKey - -foreign import privateKeyToBech32 :: PrivateKey -> Bech32String - -foreign import _privateKeyFromBech32 - :: MaybeFfiHelper -> Bech32String -> Maybe PrivateKey diff --git a/src/Internal/Deserialization/PlutusData.js b/src/Internal/Deserialization/PlutusData.js deleted file mode 100644 index 44425ea4e..000000000 --- a/src/Internal/Deserialization/PlutusData.js +++ /dev/null @@ -1,45 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export function _convertPlutusData(handle) { - return pd => { - switch (pd.kind()) { - case lib.PlutusDataKind.ConstrPlutusData: - return handle.constr(pd.as_constr_plutus_data()); - case lib.PlutusDataKind.Map: - return handle.map(pd.as_map()); - case lib.PlutusDataKind.List: - return handle.list(pd.as_list()); - case lib.PlutusDataKind.Integer: - return handle.integer(pd.as_integer()); - case lib.PlutusDataKind.Bytes: - return handle.bytes(pd.as_bytes()); - default: - throw "Impossible PlutusData kind: " + pd.kind(); - } - }; -} - -export function _unpackPlutusList(containerHelper) { - return containerHelper.unpack; -} - -export function _ConstrPlutusData_alternative(x) { - return x.alternative(); -} - -export function _ConstrPlutusData_data(x) { - return x.data(); -} - -export function _unpackPlutusMap(containerHelper) { - return tuple => plutusMap => { - const keys = containerHelper.unpack(plutusMap.keys()); - const res = []; - for (let key of keys) { - // Assuming that `PlutusMap.get()` never fails on elements from result of - // its `.keys()` call. - res.push(tuple(key)(plutusMap.get(key))); - } - return res; - }; -} diff --git a/src/Internal/Deserialization/PlutusData.purs b/src/Internal/Deserialization/PlutusData.purs deleted file mode 100644 index c0488e87a..000000000 --- a/src/Internal/Deserialization/PlutusData.purs +++ /dev/null @@ -1,91 +0,0 @@ -module Ctl.Internal.Deserialization.PlutusData - ( convertPlutusData - , deserializeData - ) where - -import Prelude - -import Cardano.FromData (class FromData, fromData) -import Cardano.Serialization.Lib (fromBytes) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.CborBytes (CborBytes) -import Cardano.Types.PlutusData - ( PlutusData(Constr, Map, List, Integer, Bytes) - ) as T -import Ctl.Internal.Deserialization.BigInt (convertBigInt) -import Ctl.Internal.FfiHelpers (ContainerHelper, containerHelper) -import Ctl.Internal.Serialization.Types - ( BigInt - , ConstrPlutusData - , PlutusData - , PlutusList - , PlutusMap - ) -import Data.ByteArray (ByteArray) -import Data.Maybe (Maybe, fromJust) -import Data.Newtype (unwrap) -import Data.Tuple (Tuple(Tuple)) -import Data.Tuple.Nested (type (/\), (/\)) -import Partial.Unsafe (unsafePartial) - -type ConvertPlutusData = - { constr :: ConstrPlutusData -> T.PlutusData - , map :: PlutusMap -> T.PlutusData - , list :: PlutusList -> T.PlutusData - , integer :: BigInt -> T.PlutusData - , bytes :: ByteArray -> T.PlutusData - } - -convertPlutusData :: PlutusData -> T.PlutusData -convertPlutusData pd = _convertPlutusData - { constr: convertPlutusConstr - , map: convertPlutusMap - , list: convertPlutusList - , integer: convertPlutusInteger - , bytes: convertPlutusBytes - } - pd - -convertPlutusConstr :: ConstrPlutusData -> T.PlutusData -convertPlutusConstr constr = do - let - data' = convertPlutusData <$> - _unpackPlutusList containerHelper (_ConstrPlutusData_data constr) - alt = _ConstrPlutusData_alternative constr - T.Constr alt data' - -convertPlutusMap :: PlutusMap -> T.PlutusData -convertPlutusMap = - _unpackPlutusMap containerHelper Tuple - >>> map - (\(k /\ v) -> (convertPlutusData k /\ convertPlutusData v)) - >>> T.Map - -convertPlutusList :: PlutusList -> T.PlutusData -convertPlutusList = - _unpackPlutusList containerHelper >>> map (\d -> convertPlutusData d) >>> - T.List - --- Unsafe fromJust here is correct, due to arbitrary sized integers -convertPlutusInteger :: BigInt -> T.PlutusData -convertPlutusInteger i = T.Integer $ unsafePartial $ fromJust $ convertBigInt i - -convertPlutusBytes :: ByteArray -> T.PlutusData -convertPlutusBytes = T.Bytes - -deserializeData :: forall (a :: Type). FromData a => CborBytes -> Maybe a -deserializeData = fromData <<< convertPlutusData <=< fromBytes <<< unwrap - -foreign import _convertPlutusData - :: ConvertPlutusData -> PlutusData -> T.PlutusData - -foreign import _unpackPlutusList - :: ContainerHelper -> PlutusList -> Array PlutusData - -foreign import _ConstrPlutusData_alternative :: ConstrPlutusData -> BigNum -foreign import _ConstrPlutusData_data :: ConstrPlutusData -> PlutusList -foreign import _unpackPlutusMap - :: ContainerHelper - -> (forall a b. a -> b -> Tuple a b) - -> PlutusMap - -> Array (PlutusData /\ PlutusData) diff --git a/src/Internal/Hashing.purs b/src/Internal/Hashing.purs index d58cda033..9e87c76ea 100644 --- a/src/Internal/Hashing.purs +++ b/src/Internal/Hashing.purs @@ -32,7 +32,7 @@ import Cardano.Types.ScriptHash (ScriptHash) import Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) -import Ctl.Internal.Types.MintingPolicy +import Contract.Types ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) ) import Data.ByteArray (ByteArray) diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index 4101b066f..b3ceac72c 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -56,7 +56,11 @@ import Aeson import Cardano.Serialization.Lib (class IsBytes, toBytes) import Cardano.Serialization.Lib.Internal (class IsCsl) import Control.Alt ((<|>)) -import Control.Monad.Error.Class (class MonadError, throwError) +import Control.Monad.Error.Class + ( class MonadError + , class MonadThrow + , throwError + ) import Ctl.Internal.Helpers.Formatter (showTags) import Data.Array (union) import Data.Bifunctor (bimap) @@ -77,7 +81,7 @@ import Data.Maybe.First (First(First)) import Data.Maybe.Last (Last(Last)) import Data.String (Pattern(Pattern), null, stripPrefix, stripSuffix) import Data.Traversable (for, traverse) -import Data.Tuple (fst, snd, uncurry) +import Data.Tuple (snd, uncurry) import Data.Tuple.Nested (type (/\), (/\)) import Data.Typelevel.Undefined (undefined) import Data.UInt (UInt) @@ -109,7 +113,7 @@ fromJustEff e = case _ of liftEither :: forall (a :: Type) (e :: Type) (m :: Type -> Type) - . MonadError e m + . MonadThrow e m => Either e a -> m a liftEither = either throwError pure @@ -129,7 +133,7 @@ liftedM err mma = mma >>= maybe (throwError err) Right >>> liftEither -- | Given an error and a `Maybe` value, lift the context via `liftEither`. liftM :: forall (e :: Type) (m :: Type -> Type) (a :: Type) - . MonadError e m + . MonadThrow e m => e -> Maybe a -> m a diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index dcb991e99..8986e4bba 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -24,6 +24,8 @@ module Ctl.Internal.Lens , _witnessSet , _datum , _scriptRef + , _input + , _output ) where import Prelude @@ -46,6 +48,7 @@ import Cardano.Types , TransactionBody , TransactionInput , TransactionOutput + , TransactionUnspentOutput , TransactionWitnessSet , Value , Vkeywitness @@ -116,6 +119,14 @@ _mint = _Newtype <<< prop (Proxy :: Proxy "mint") _auxiliaryDataHash :: Lens' TransactionBody (Maybe AuxiliaryDataHash) _auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") +-- TransactionUnspentOutput + +_output :: Lens' TransactionUnspentOutput TransactionOutput +_output = _Newtype <<< prop (Proxy :: Proxy "output") + +_input :: Lens' TransactionUnspentOutput TransactionInput +_input = _Newtype <<< prop (Proxy :: Proxy "input") + -- TransactionOutput _amount :: Lens' TransactionOutput Value diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index 3d2e18f90..50f59126e 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -31,9 +31,9 @@ import Aeson , (.:) ) import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) +import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.RawBytes (RawBytes(RawBytes)) import Ctl.Internal.Contract.Hooks (Hooks) -import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) import Data.ByteArray (hexToByteArray) @@ -111,8 +111,8 @@ instance DecodeAeson PrivateKeyResponse where decodeAeson json = do cborStr <- decodeAeson json cborBytes <- note err $ hexToByteArray cborStr - PrivateKeyResponse <<< PrivateKey <$> note err - (privateKeyFromBytes (RawBytes cborBytes)) + PrivateKeyResponse <$> note err + (PrivateKey.fromRawBytes (RawBytes cborBytes)) where err :: JsonDecodeError err = TypeMismatch "PrivateKey" diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index c22b19ed5..c4668cdad 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -45,6 +45,7 @@ import Cardano.Types.OutputDatum (OutputDatum(..)) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Transaction as Transaction import Cardano.Types.Value (isZero) +import Cardano.Types.Value as Value import Control.Monad.Error.Class (catchError, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Reader.Class (asks) @@ -131,10 +132,10 @@ import Ctl.Internal.Types.Interval , isEmpty , posixTimeRangeToTransactionValidity ) -import Ctl.Internal.Types.MintingPolicy +import Contract.Types ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) ) -import Ctl.Internal.Types.MintingPolicy as MintingPolicy +import Contract.Types as MintingPolicy import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.TxConstraints ( DatumPresence(DatumWitness, DatumInline) @@ -264,9 +265,9 @@ runConstraintsM lookups txConstraints = do { transaction: Transaction.empty , usedUtxos: Map.empty , valueSpentBalancesInputs: - ValueSpentBalances { required: mempty, provided: mempty } + ValueSpentBalances { required: Value.empty, provided: Value.empty } , valueSpentBalancesOutputs: - ValueSpentBalances { required: mempty, provided: mempty } + ValueSpentBalances { required: Value.empty, provided: Value.empty } , datums: mempty , redeemers: [] , lookups @@ -603,7 +604,7 @@ processConstraint mpsMap osMap c = do _redeemers <>= [ UnindexedRedeemer { purpose: ForMint scriptHash, datum: unwrap red } ] -- Remove mint redeemers from array before reindexing. - _cpsTransaction <<< _body <<< _mint <<< _Just <>= mint + unsafePartial $ _cpsTransaction <<< _body <<< _mint <<< _Just <>= mint MustMintValueUsingNativeScript ns tn i -> runExceptT do let @@ -624,7 +625,7 @@ processConstraint mpsMap osMap c = do let value = mkValue $ unsafePartial $ fromJust $ Int.asPositive i _valueSpentBalancesOutputs <>= provideValue value - _cpsTransaction <<< _body <<< _mint <>= Just mint + unsafePartial $ _cpsTransaction <<< _body <<< _mint <>= Just mint MustPayToPubKeyAddress pkh skh mDatum scriptRef amount -> do networkId <- getNetworkId diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index 0b5c5930c..d598993ec 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -20,7 +20,13 @@ module Ctl.Internal.ProcessConstraints.State import Prelude hiding (join) -import Cardano.Types (CostModel, Language, PlutusData, Transaction, UtxoMap) +import Cardano.Types + ( CostModel + , Language + , PlutusData + , Transaction + , UtxoMap + ) import Cardano.Types.Value (Value) import Cardano.Types.Value as Value import Control.Monad.State.Trans (StateT) @@ -142,7 +148,7 @@ totalMissingValue { valueSpentBalancesInputs, valueSpentBalancesOutputs } = missingValueSpent valueSpentBalancesOutputs provideValue :: Value -> ValueSpentBalances -provideValue provided = ValueSpentBalances { provided, required: mempty } +provideValue provided = ValueSpentBalances { provided, required: Value.empty } requireValue :: Value -> ValueSpentBalances -requireValue required = ValueSpentBalances { required, provided: mempty } +requireValue required = ValueSpentBalances { required, provided: Value.empty } diff --git a/src/Internal/Serialization/BigInt.purs b/src/Internal/Serialization/BigInt.purs deleted file mode 100644 index e179760b3..000000000 --- a/src/Internal/Serialization/BigInt.purs +++ /dev/null @@ -1,16 +0,0 @@ -module Ctl.Internal.Serialization.BigInt - ( convertBigInt - ) where - -import Prelude - -import Cardano.Serialization.Lib (bigInt_fromStr) -import Ctl.Internal.Serialization.Types (BigInt) -import Data.Maybe (fromJust) -import Data.Nullable (toMaybe) -import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) - -convertBigInt :: BigInt.BigInt -> BigInt -convertBigInt bi = unsafePartial $ fromJust $ toMaybe $ bigInt_fromStr $ - BigInt.toString bi diff --git a/src/Internal/Serialization/Keys.js b/src/Internal/Serialization/Keys.js deleted file mode 100644 index 9d80aa7ec..000000000 --- a/src/Internal/Serialization/Keys.js +++ /dev/null @@ -1,14 +0,0 @@ -const bytesFromKey = key => key.as_bytes(); - -export { bytesFromKey as bytesFromPublicKey }; -export { bytesFromKey as bytesFromPrivateKey }; - -export function publicKeyFromPrivateKey(private_key) { - return private_key.to_public(); -} - -const bech32FromX = key => key.to_bech32(); - -export { bech32FromX as bech32FromPublicKey }; -export { bech32FromX as bech32FromPrivateKey }; -export { bech32FromX as bech32FromEd25519Signature }; diff --git a/src/Internal/Serialization/Keys.purs b/src/Internal/Serialization/Keys.purs deleted file mode 100644 index 0a56bc5e1..000000000 --- a/src/Internal/Serialization/Keys.purs +++ /dev/null @@ -1,34 +0,0 @@ -module Ctl.Internal.Serialization.Keys - ( bytesFromPrivateKey - , bytesFromPublicKey - , bech32FromPublicKey - , bech32FromPrivateKey - , bech32FromEd25519Signature - , publicKeyFromPrivateKey - ) where - -import Cardano.Types.RawBytes (RawBytes) -import Ctl.Internal.Serialization.Types - ( Ed25519Signature - , PrivateKey - , PublicKey - ) -import Ctl.Internal.Types.Aliases (Bech32String) - -foreign import publicKeyFromPrivateKey - :: PrivateKey -> PublicKey - -foreign import bytesFromPrivateKey - :: PrivateKey -> RawBytes - -foreign import bytesFromPublicKey - :: PublicKey -> RawBytes - -foreign import bech32FromPublicKey - :: PublicKey -> Bech32String - -foreign import bech32FromPrivateKey - :: PrivateKey -> Bech32String - -foreign import bech32FromEd25519Signature - :: Ed25519Signature -> Bech32String diff --git a/src/Internal/Serialization/Types.purs b/src/Internal/Serialization/Types.purs deleted file mode 100644 index e4ec0e017..000000000 --- a/src/Internal/Serialization/Types.purs +++ /dev/null @@ -1,90 +0,0 @@ -module Ctl.Internal.Serialization.Types - ( module X - ) where - -import Cardano.Serialization.Lib - ( AssetName - , Assets - , AuxiliaryData - , AuxiliaryDataHash - , BigInt - , Bip32PrivateKey - , Bip32PublicKey - , BootstrapWitness - , BootstrapWitnesses - , Certificate - , Certificates - , ConstrPlutusData - , CostModel - , Costmdls - , DataCost - , DataHash - , Ed25519KeyHashes - , Ed25519Signature - , ExUnitPrices - , ExUnits - , GeneralTransactionMetadata - , GenesisDelegateHash - , GenesisHash - , GenesisKeyDelegation - , Ipv4 - , Ipv6 - , Language - , MIRToStakeCredentials - , MetadataList - , MetadataMap - , Mint - , MintAssets - , MoveInstantaneousReward - , MultiAsset - , MultiHostName - , NativeScript - , NativeScripts - , NetworkId - , Nonce - , PlutusData - , PlutusList - , PlutusMap - , PlutusScript - , PlutusScripts - , PoolMetadata - , PoolMetadataHash - , PoolParams - , PrivateKey - , ProposedProtocolParameterUpdates - , ProtocolParamUpdate - , ProtocolVersion - , PublicKey - , Redeemer - , RedeemerTag - , Redeemers - , Relay - , Relays - , ScriptAll - , ScriptAny - , ScriptDataHash - , ScriptNOfK - , ScriptPubkey - , ScriptRef - , SingleHostAddr - , SingleHostName - , TimelockExpiry - , TimelockStart - , Transaction - , TransactionBody - , TransactionHash - , TransactionInput - , TransactionInputs - , TransactionMetadatum - , TransactionOutput - , TransactionOutputs - , TransactionUnspentOutput - , TransactionWitnessSet - , UnitInterval - , Update - , Value - , Vkey - , Vkeywitness - , Vkeywitnesses - , Withdrawals - ) as X diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 4d1f26e1e..4d4c0f95b 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -140,7 +140,7 @@ runContractTestsWithKeyDir params backup = do ( error "Impossible happened: unable to get own address" ) =<< (getWalletAddresses <#> Array.head) - balance <- getWalletBalance <#> fold + balance <- unsafePartial $ getWalletBalance <#> fold pure $ Address.toBech32 address /\ balance let distrArray :: Array (Array UtxoAmount) diff --git a/src/Internal/TypeLevel/Nat.purs b/src/Internal/TypeLevel/Nat.purs deleted file mode 100644 index 10dddf3f3..000000000 --- a/src/Internal/TypeLevel/Nat.purs +++ /dev/null @@ -1,31 +0,0 @@ -module Ctl.Internal.TypeLevel.Nat - ( Z - , S - , Nat - , class KnownNat - , natVal - ) where - -import Prelude ((+)) -import Type.Proxy (Proxy(Proxy)) - --- | The kind of type level natural number. This is not strictly needed, but improves the --- | legibility of type errors and facilitates more comprehensible type signatures -data Nat :: Type -data Nat - --- | Type level natural numbers. We need these for a variety of inductive "operations" (i.e. type classes w/ fundeps) -foreign import data Z :: Nat - -foreign import data S :: Nat -> Nat - --- | PureScript version of the Haskell class defined in GHC.TypeLits. This is the Nat version of IsSymbol, more or less. -class KnownNat :: Nat -> Constraint -class KnownNat n where - natVal :: Proxy n -> Int - -instance KnownNat Z where - natVal _ = 0 - -instance KnownNat n => KnownNat (S n) where - natVal _ = 1 + natVal (Proxy :: Proxy n) diff --git a/src/Internal/TypeLevel/RowList.purs b/src/Internal/TypeLevel/RowList.purs deleted file mode 100644 index 417f2a853..000000000 --- a/src/Internal/TypeLevel/RowList.purs +++ /dev/null @@ -1,23 +0,0 @@ -module Ctl.Internal.TypeLevel.RowList - ( class AllUniqueLabels - ) where - -import Prim.TypeError (class Fail, Text) -import Type.RowList (Cons, Nil, RowList) - --- | Uniqueness constraint on the labels of an unordered RowList --- | Current implementation causes a compilation slowdown for complex types --- | GH Issue: https://github.com/Plutonomicon/cardano-transaction-lib/issues/433 -class AllUniqueLabels :: forall (k :: Type). RowList k -> Constraint -class AllUniqueLabels list - -instance AllUniqueLabels Nil -instance AllUniqueLabels (Cons k a Nil) -instance - Fail (Text "Labels are not unique!") => - AllUniqueLabels (Cons k a (Cons k a' xs)) -else instance - ( AllUniqueLabels (Cons k a xs) - , AllUniqueLabels (Cons k' a' xs) - ) => - AllUniqueLabels (Cons k a (Cons k' a' xs)) diff --git a/src/Internal/TypeLevel/RowList/Unordered/Indexed.purs b/src/Internal/TypeLevel/RowList/Unordered/Indexed.purs deleted file mode 100644 index fdf3d8533..000000000 --- a/src/Internal/TypeLevel/RowList/Unordered/Indexed.purs +++ /dev/null @@ -1,160 +0,0 @@ -module Ctl.Internal.TypeLevel.RowList.Unordered.Indexed - ( ConsI - , NilI - , RowListI - , class AllUniqueLabelsI - , class GetIndexWithLabel - , class GetLabelIndex - , class GetLabelWithIndex - , class GetWithLabel - , class IndexRowList - , class IndexRowListWithAcc - , class UniqueIndices - ) where - -import Data.Symbol - -import Ctl.Internal.TypeLevel.Nat (class KnownNat, Nat, S, Z) -import Prim.TypeError (class Fail, Text) -import Type.RowList (Cons, Nil, RowList) - --- | A kind for unordered RowLists which contain a Nat representation of their --- | intended position in a non-lexicographic order. Actual RowLists are automagically --- | ordered lexicographically, Haskell records are not ordered lexicographically, so we need --- | this to encode the structure of Haskell records precisely. -data RowListI :: forall (k :: Type). k -> Type -data RowListI k - --- Data constructors for RowListI. -foreign import data ConsI - :: forall (k :: Type). Symbol -> k -> Nat -> RowListI k -> RowListI k - -foreign import data NilI :: forall (k :: Type). RowListI k - --- TODO: See if we can optimize this. Slows down compilation time considerably for complex types --- GH Issue: https://github.com/Plutonomicon/cardano-transaction-lib/issues/433 --- | Uniqueness constraint on the Nat indices of a RowListI which asserts that all indices --- | are unique. This is needed to ensure that the various "lookup" classes return the --- | "values" (types) that we expect. -class UniqueIndices :: forall (k :: Type). RowListI k -> Constraint -class UniqueIndices list - -instance UniqueIndices NilI -instance UniqueIndices (ConsI k a n NilI) -instance - Fail (Text "Indices are not unique!") => - UniqueIndices (ConsI k a n (ConsI k' a' n xs)) -else instance - ( UniqueIndices (ConsI k a n xs) - , UniqueIndices - (ConsI k' a' n' xs) - ) => - UniqueIndices (ConsI k a n (ConsI k' a' n' xs)) - --- TODO: See if we can optimize this. Slows down compilation considerably for complex types. --- GH Issue: https://github.com/Plutonomicon/cardano-transaction-lib/issues/433 --- | Uniqueness constraint on the labels of a RowListI which asserts that all labels are unique. --- | Again, this is needed so that the lookup functions perform in the expected manner. -class AllUniqueLabelsI :: forall (k :: Type). RowListI k -> Constraint -class AllUniqueLabelsI list - -instance AllUniqueLabelsI NilI -instance AllUniqueLabelsI (ConsI k a n NilI) -instance - Fail (Text "Labels are not unique!") => - AllUniqueLabelsI (ConsI k a n (ConsI k a' n' xs)) -else instance - ( AllUniqueLabelsI (ConsI k a n xs) - , AllUniqueLabelsI (ConsI k' a' n' xs) - ) => - AllUniqueLabelsI (ConsI k a n (ConsI k' a' n' xs)) - --- | Get the Nat index corresponding to a given symbol index in a RowListI. --- | This is meant to be used primarily in the context of an instance declaration for some --- | other class (see examples in ToData.purs), and is probably not particularly useful --- | outside of those instance contexts. -class GetIndexWithLabel - :: forall (k :: Type). Symbol -> RowListI k -> Nat -> Constraint -class IsSymbol label <= GetIndexWithLabel label list n | label list -> n - -instance - ( AllUniqueLabelsI (ConsI label a n xs) - , UniqueIndices (ConsI label a n xs) - , IsSymbol label - , KnownNat n - ) => - GetIndexWithLabel label (ConsI label a n xs) n - -else instance - ( GetIndexWithLabel label xs n - , AllUniqueLabelsI (ConsI label' a' n' xs) - , UniqueIndices (ConsI label' a' n' xs) - , IsSymbol label - , KnownNat n - ) => - GetIndexWithLabel label (ConsI label' a' n' xs) n - --- | Given a Nat which appears as an index in the given RowListI, get its corresponding Symbol label -class GetLabelWithIndex - :: forall (k :: Type). Nat -> RowListI k -> Symbol -> Constraint -class - ( KnownNat ix - , AllUniqueLabelsI list - , UniqueIndices list - ) <= - GetLabelWithIndex ix list label - | ix list -> label - -instance - ( AllUniqueLabelsI (ConsI label a ix xs) - , UniqueIndices (ConsI label a ix xs) - , IsSymbol label - , KnownNat ix - ) => - GetLabelWithIndex ix (ConsI label a ix xs) label -else instance - ( GetLabelWithIndex ix xs label - , AllUniqueLabelsI (ConsI label' a' n' xs) - , UniqueIndices (ConsI label' a' n' xs) - , IsSymbol label - , KnownNat ix - ) => - GetLabelWithIndex ix (ConsI label' a' n' xs) label - --- | Given a Symbol which appears as a label in the given RowListI, get ahold of the type indexed by that symbol. --- | Note that this does not "return" a *value* of that type, but the type itself, and is therefore only suitable --- | for type class instance contexts (& other type level computational contexts if any exist) -class GetWithLabel - :: forall (k :: Type). Symbol -> RowListI k -> k -> Constraint -class GetWithLabel label rlist result | label rlist -> result - -instance IsSymbol l => GetWithLabel l (ConsI l a n xs) a -else instance (GetWithLabel l xs a) => GetWithLabel l (ConsI _l _a _n xs) a - --- | Get the nat index at a symbol in a RowList (Note: Not a RowListI! Use GetIndexWithLabel for a RowListI) -class GetLabelIndex - :: forall (k :: Type). Symbol -> RowList k -> Nat -> Constraint -class GetLabelIndex label list result | label list -> result - -instance - ( IndexRowList rowList rowListI - , GetIndexWithLabel label rowListI result - ) => - GetLabelIndex label rowList result - --- | Helper class for GetLabelIndex. Converts a RowList into a RowListI using its natural order (beginning with Z) -class IndexRowList :: forall (k :: Type). RowList k -> RowListI k -> Constraint -class IndexRowList list result | list -> result - -instance IndexRowListWithAcc Z list result => IndexRowList list result - --- | Helper class for IndexRowListWithAcc. -class IndexRowListWithAcc - :: forall (k :: Type). Nat -> RowList k -> RowListI k -> Constraint -class IndexRowListWithAcc acc list result | acc list -> result - --- purescript sure is an ugly dialect of prolog -instance IndexRowListWithAcc n Nil NilI -else instance - IndexRowListWithAcc (S n) xs xs' => - IndexRowListWithAcc n (Cons l a xs) (ConsI l a n xs') diff --git a/src/Internal/Types/CostModels.purs b/src/Internal/Types/CostModels.purs index 72bc38d9c..d083114d9 100644 --- a/src/Internal/Types/CostModels.purs +++ b/src/Internal/Types/CostModels.purs @@ -8,7 +8,7 @@ module Ctl.Internal.Types.CostModels import Prelude import Cardano.Types.CostModel (CostModel) -import Ctl.Internal.Types.Int as Csl +import Cardano.Types.Int as Csl import Data.Array (reverse) import Data.List (List) import Data.List as List diff --git a/src/Internal/Types/Epoch.purs b/src/Internal/Types/Epoch.purs deleted file mode 100644 index fed438326..000000000 --- a/src/Internal/Types/Epoch.purs +++ /dev/null @@ -1,24 +0,0 @@ -module Ctl.Internal.Types.Epoch (Epoch(Epoch)) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson) -import Ctl.Internal.Helpers (showWithParens) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import JS.BigInt (BigInt) - --- | An epoch number or length with greater precision for Ogmios than --- | `Cardano.Types.Epoch`. [ 0 .. 18446744073709552000 ] -newtype Epoch = Epoch BigInt - -derive instance Generic Epoch _ -derive instance Newtype Epoch _ -derive newtype instance Eq Epoch -derive newtype instance Ord Epoch -derive newtype instance DecodeAeson Epoch -derive newtype instance EncodeAeson Epoch - -instance Show Epoch where - show (Epoch e) = showWithParens "Epoch" e - diff --git a/src/Internal/Types/Int.js b/src/Internal/Types/Int.js deleted file mode 100644 index 0451643da..000000000 --- a/src/Internal/Types/Int.js +++ /dev/null @@ -1,8 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; - -export const newPositive = lib.Int.new; -export const newNegative = lib.Int.new_negative; - -export function _intToStr(n) { - return n.to_str(); -} diff --git a/src/Internal/Types/Int.purs b/src/Internal/Types/Int.purs deleted file mode 100644 index de26a99b4..000000000 --- a/src/Internal/Types/Int.purs +++ /dev/null @@ -1,4 +0,0 @@ --- | `cardano-serialization-lib` Int type (can be positive or negative). -module Ctl.Internal.Types.Int (module X) where - -import Cardano.Types.Int as X diff --git a/src/Internal/Types/RedeemerDatum.purs b/src/Internal/Types/RedeemerDatum.purs new file mode 100644 index 000000000..c5ef2dc6a --- /dev/null +++ b/src/Internal/Types/RedeemerDatum.purs @@ -0,0 +1,27 @@ +module Ctl.Internal.Types.RedeemerDatum where + +import Prelude + +import Cardano.FromData (class FromData) +import Cardano.ToData (class ToData, toData) +import Cardano.Types.PlutusData (PlutusData) +import Data.Generic.Rep (class Generic) +import Data.Newtype (class Newtype) +import Data.Show.Generic (genericShow) +import Prelude as Prelude + +-- | Redeemer without ExUnits, tag or index - just a plain wrapper over `PlutusData` +newtype RedeemerDatum = RedeemerDatum PlutusData + +derive instance Generic RedeemerDatum _ +derive instance Newtype RedeemerDatum _ +derive newtype instance Eq RedeemerDatum +derive newtype instance FromData RedeemerDatum +derive newtype instance Ord RedeemerDatum +derive newtype instance ToData RedeemerDatum + +instance Show RedeemerDatum where + show = genericShow + +unit :: RedeemerDatum +unit = RedeemerDatum (toData Prelude.unit) diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 06888f96d..134f3b276 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -23,7 +23,7 @@ import Cardano.Types ) import Cardano.Types.DataHash (hashPlutusData) import Ctl.Internal.Helpers ((<\>)) -import Ctl.Internal.Types.MintingPolicy (MintingPolicy) +import Contract.Types (MintingPolicy) import Data.Array (singleton, union) as Array import Data.Generic.Rep (class Generic) import Data.Map (Map, empty, singleton, union) diff --git a/src/Internal/Types/TransactionMetadata.purs b/src/Internal/Types/TransactionMetadata.purs deleted file mode 100644 index 3a967ef0f..000000000 --- a/src/Internal/Types/TransactionMetadata.purs +++ /dev/null @@ -1,90 +0,0 @@ -module Ctl.Internal.Types.TransactionMetadata - ( GeneralTransactionMetadata(GeneralTransactionMetadata) - , TransactionMetadatum - ( MetadataMap - , MetadataList - , Int - , Bytes - , Text - ) - , TransactionMetadatumLabel(TransactionMetadatumLabel) - ) where - -import Prelude - -import Aeson (class EncodeAeson) -import Ctl.Internal.Helpers - ( appendRightMap - , encodeMap - , encodeTagged' - , showWithParens - ) -import Ctl.Internal.Types.Int (Int) as Int -import Data.ByteArray (ByteArray) -import Data.Generic.Rep (class Generic) -import Data.Map (Map) -import Data.Map (empty) as Map -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) -import JS.BigInt (BigInt) - -newtype GeneralTransactionMetadata = - GeneralTransactionMetadata - (Map TransactionMetadatumLabel TransactionMetadatum) - -derive instance Newtype GeneralTransactionMetadata _ - -derive newtype instance Eq GeneralTransactionMetadata -derive instance Generic GeneralTransactionMetadata _ - -instance Show GeneralTransactionMetadata where - show = genericShow - -instance EncodeAeson GeneralTransactionMetadata where - encodeAeson (GeneralTransactionMetadata m) = encodeMap m - --- This Semigroup instance simply takes the Last value for duplicate keys --- to avoid a Semigroup instance for TransactionMetadatum. --- Do we want to avoid a Semigroup instance for TransactionMetadatum? Recursion --- is fine but how to combine Text with Bytes for example? One would have to take --- precedence and replace the other. -instance Semigroup GeneralTransactionMetadata where - append (GeneralTransactionMetadata hm) (GeneralTransactionMetadata hm') = - GeneralTransactionMetadata $ hm `appendRightMap` hm' - -instance Monoid GeneralTransactionMetadata where - mempty = GeneralTransactionMetadata Map.empty - -newtype TransactionMetadatumLabel = TransactionMetadatumLabel BigInt - -derive instance Newtype TransactionMetadatumLabel _ -derive newtype instance Eq TransactionMetadatumLabel -derive newtype instance Ord TransactionMetadatumLabel -derive newtype instance EncodeAeson TransactionMetadatumLabel -derive instance Generic TransactionMetadatumLabel _ - -instance Show TransactionMetadatumLabel where - show (TransactionMetadatumLabel tml) = - showWithParens "TransactionMetadatumLabel" tml - -data TransactionMetadatum - = MetadataMap (Map TransactionMetadatum TransactionMetadatum) - | MetadataList (Array TransactionMetadatum) - | Int Int.Int - | Bytes ByteArray - | Text String - -derive instance Eq TransactionMetadatum -derive instance Ord TransactionMetadatum -derive instance Generic TransactionMetadatum _ - -instance Show TransactionMetadatum where - show x = genericShow x - -instance EncodeAeson TransactionMetadatum where - encodeAeson = case _ of - MetadataMap m -> encodeTagged' "MetadataMap" $ encodeMap m - MetadataList arr -> encodeTagged' "MetadataList" arr - Int n -> encodeTagged' "Int" n - Bytes bytes -> encodeTagged' "Bytes" bytes - Text string -> encodeTagged' "Text" string diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index da7e7a84e..c710c65b2 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -113,6 +113,7 @@ import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Ctl.Internal.Types.Interval (POSIXTimeRange) import Ctl.Internal.Types.Redeemer (Redeemer, unitRedeemer) +import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) import Data.Array as Array import Data.Foldable (class Foldable) import Data.Generic.Rep (class Generic) @@ -141,7 +142,8 @@ data TxConstraint | MustProduceAtLeast Value | MustSpendPubKeyOutput TransactionInput | MustSpendNativeScriptOutput TransactionInput NativeScript - | MustSpendScriptOutput TransactionInput Redeemer (Maybe InputWithScriptRef) + | MustSpendScriptOutput TransactionInput RedeemerDatum + (Maybe InputWithScriptRef) | MustReferenceOutput TransactionInput | MustMintValue ScriptHash Redeemer AssetName Int.Int (Maybe InputWithScriptRef) @@ -537,7 +539,7 @@ mustSpendPubKeyOutput = singleton <<< MustSpendPubKeyOutput -- | Spend the given unspent transaction script output. mustSpendScriptOutput :: TransactionInput - -> Redeemer + -> RedeemerDatum -> TxConstraints mustSpendScriptOutput txOutRef red = singleton (MustSpendScriptOutput txOutRef red Nothing) @@ -546,7 +548,7 @@ mustSpendScriptOutput txOutRef red = -- | to satisfy the script witnessing requirement. mustSpendScriptOutputUsingScriptRef :: TransactionInput - -> Redeemer + -> RedeemerDatum -> InputWithScriptRef -> TxConstraints mustSpendScriptOutputUsingScriptRef txOutRef red = diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 8e64e952f..f939a70cd 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -62,6 +62,7 @@ import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error) import Effect.Unsafe (unsafePerformEffect) +import Partial.Unsafe (unsafePartial) data WalletMock = MockFlint @@ -193,7 +194,7 @@ mkCip30Mock pKey mSKey = do utxos <- ownUtxos collateralUtxos <- getCollateralUtxos utxos pure $ byteArrayToHex <<< unwrap <<< encodeCbor <$> collateralUtxos - , getBalance: fromAff do + , getBalance: unsafePartial $ fromAff do utxos <- ownUtxos let value = foldMap (_.amount <<< unwrap) $ Map.values utxos pure $ byteArrayToHex $ unwrap $ encodeCbor value diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 1d1f0afbb..ea0e12f16 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -11,13 +11,6 @@ -- ``` module Test.Ctl.Fixtures ( addressString1 - , cip25MetadataFixture1 - , cip25MetadataFixture2 - , cip25MetadataFixture3 - , cip25MetadataFixture4 - , cip25MetadataJsonFixture1 - , cip25MetadataJsonFixture2 - , cip25MetadataJsonFixture3 , currencySymbol1 , ed25519KeyHash1 , ed25519KeyHashFixture1 @@ -67,7 +60,6 @@ module Test.Ctl.Fixtures , txOutputFixture1 , txOutputFixture2 , unappliedScriptFixture - , unsafeMkCip25String , utxoFixture1 , utxoFixture1' , witnessSetFixture1 @@ -82,128 +74,43 @@ module Test.Ctl.Fixtures import Prelude import Aeson (Aeson, aesonNull, decodeAeson, fromString, parseJsonStringToAeson) +import Cardano.AsCbor (decodeCbor) +import Cardano.Plutus.Types.PubKeyHash (PubKeyHash(..)) import Cardano.Serialization.Lib (fromBytes) -import Cardano.Types.AssetName (TokenName, mkTokenName) +import Cardano.Types (AuxiliaryData(AuxiliaryData), AuxiliaryDataHash(AuxiliaryDataHash), Certificate(MoveInstantaneousRewardsCert, GenesisKeyDelegation, PoolRetirement, PoolRegistration, StakeDelegation, StakeDeregistration, StakeRegistration), Ed25519KeyHash(..), Epoch(Epoch), GenesisDelegateHash(GenesisDelegateHash), GenesisHash(GenesisHash), Ipv4(Ipv4), Ipv6(Ipv6), MIRToStakeCredentials(MIRToStakeCredentials), MoveInstantaneousReward(ToStakeCreds, ToOtherPot), PaymentPubKeyHash(..), PlutusScript(..), PoolMetadata(PoolMetadata), PoolMetadataHash(PoolMetadataHash), ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates), Redeemer(Redeemer), Relay(MultiHostName, SingleHostName, SingleHostAddr), Transaction(Transaction), TransactionBody(TransactionBody), TransactionOutput(TransactionOutput), TransactionWitnessSet(TransactionWitnessSet), URL(URL), UtxoMap, Vkey(Vkey), Vkeywitness(Vkeywitness)) +import Cardano.Types (Coin(Coin), ScriptHash, Value(Value)) +import Cardano.Types (TransactionHash(TransactionHash), TransactionInput(TransactionInput)) +import Cardano.Types.Address (Address(..)) +import Cardano.Types.AssetName (AssetName, mkAssetName) +import Cardano.Types.Credential (Credential(..)) +import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash +import Cardano.Types.Ed25519Signature as Ed25519Signature +import Cardano.Types.ExUnits (ExUnits(..)) +import Cardano.Types.GeneralTransactionMetadata (GeneralTransactionMetadata(..)) +import Cardano.Types.Mint (Mint(..)) +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.NetworkId (NetworkId(..)) +import Cardano.Types.OutputDatum (OutputDatum(OutputDatum)) import Cardano.Types.PlutusData as PD +import Cardano.Types.PlutusScript (plutusV1Script, plutusV2Script) +import Cardano.Types.PublicKey as PublicKey +import Cardano.Types.RedeemerTag (RedeemerTag(Spend)) +import Cardano.Types.RewardAddress (RewardAddress) +import Cardano.Types.Slot (Slot(..)) +import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput(TransactionUnspentOutput)) +import Cardano.Types.Vkey (Vkey(..)) import Contract.Keys (publicKeyFromBech32) import Contract.Numeric.BigNum (BigNum) import Contract.Numeric.BigNum (fromBigInt, fromInt, one, zero) as BigNum -import Contract.Transaction - ( PoolPubKeyHash(PoolPubKeyHash) - , vrfKeyHashFromBytes - ) -import Ctl.Internal.Cardano.Types.NativeScript - ( NativeScript - ( ScriptPubkey - , ScriptAll - , ScriptAny - , ScriptNOfK - , TimelockStart - , TimelockExpiry - ) - ) -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(PlutusScriptRef, NativeScriptRef) - ) -import Ctl.Internal.Cardano.Types.Transaction - ( AuxiliaryData(AuxiliaryData) - , AuxiliaryDataHash(AuxiliaryDataHash) - , Certificate - ( MoveInstantaneousRewardsCert - , GenesisKeyDelegation - , PoolRetirement - , PoolRegistration - , StakeDelegation - , StakeDeregistration - , StakeRegistration - ) - , Epoch(Epoch) - , GenesisDelegateHash(GenesisDelegateHash) - , GenesisHash(GenesisHash) - , Ipv4(Ipv4) - , Ipv6(Ipv6) - , MIRToStakeCredentials(MIRToStakeCredentials) - , Mint(Mint) - , MoveInstantaneousReward(ToStakeCreds, ToOtherPot) - , PoolMetadata(PoolMetadata) - , PoolMetadataHash(PoolMetadataHash) - , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) - , Redeemer(Redeemer) - , Relay(MultiHostName, SingleHostName, SingleHostAddr) - , RequiredSigner(RequiredSigner) - , Transaction(Transaction) - , TransactionOutput(TransactionOutput) - , TransactionWitnessSet(TransactionWitnessSet) - , TxBody(TxBody) - , URL(URL) - , UtxoMap - , Vkey(Vkey) - , Vkeywitness(Vkeywitness) - , mkEd25519Signature - ) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) -import Ctl.Internal.Cardano.Types.Value - ( Coin(Coin) - , CurrencySymbol - , Value(Value) - , mkCurrencySymbol - , mkNonAdaAsset - , mkSingletonNonAdaAsset - ) -import Ctl.Internal.Metadata.Cip25.Cip25String (Cip25String, mkCip25String) -import Ctl.Internal.Metadata.Cip25.Common (Cip25TokenName(Cip25TokenName)) -import Ctl.Internal.Metadata.Cip25.V2 - ( Cip25Metadata(Cip25Metadata) - , Cip25MetadataEntry(Cip25MetadataEntry) - , Cip25MetadataFile(Cip25MetadataFile) - ) -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId(MainnetId, TestnetId) - , Slot(Slot) - , StakeCredential - , baseAddress - , baseAddressToAddress - , keyHashCredential - , rewardAddress - ) -import Ctl.Internal.Serialization.Hash - ( Ed25519KeyHash - , ScriptHash - , ed25519KeyHashFromBech32 - , ed25519KeyHashFromBytes - , scriptHashFromBytes - ) +import Contract.Transaction (PoolPubKeyHash(PoolPubKeyHash)) +import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK, TimelockStart, TimelockExpiry)) +import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef, NativeScriptRef)) import Ctl.Internal.Types.Aliases (Bech32String) import Ctl.Internal.Types.Int as Int -import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum, OutputDatum)) -import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend)) -import Ctl.Internal.Types.RewardAddress (RewardAddress(RewardAddress)) -import Ctl.Internal.Types.Scripts - ( MintingPolicyHash(MintingPolicyHash) - , PlutusScript - , Validator - , plutusV1Script - , plutusV2Script - ) -import Ctl.Internal.Types.Transaction - ( TransactionHash(TransactionHash) - , TransactionInput(TransactionInput) - ) -import Ctl.Internal.Types.TransactionMetadata - ( GeneralTransactionMetadata(GeneralTransactionMetadata) - , TransactionMetadatum(Text) - , TransactionMetadatumLabel(TransactionMetadatumLabel) - ) +import Ctl.Internal.Types.MintingPolicyHash (MintingPolicyHash(..)) +import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Text), TransactionMetadatumLabel(TransactionMetadatumLabel)) import Data.Array as Array -import Data.ByteArray - ( ByteArray - , byteArrayFromIntArrayUnsafe - , hexToByteArray - , hexToByteArrayUnsafe - ) +import Data.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe, hexToByteArray, hexToByteArrayUnsafe) import Data.Either (fromRight, hush) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) @@ -222,23 +129,23 @@ import Test.Ctl.Fixtures.CostModels (costModelsFixture1) txOutputFixture1 :: TransactionOutput txOutputFixture1 = TransactionOutput - { address: baseAddressToAddress $ baseAddress - { network: TestnetId - , delegationCred: - keyHashCredential $ unsafePartial $ fromJust - $ ed25519KeyHashFromBytes + { address: BaseAddress + { networkId: TestnetId + , stakeCredential: + wrap $ PubKeyHashCredential $ unsafePartial $ fromJust + $ decodeCbor $ wrap -- $ T.Bech32 "hstk_1rsf0q0q77t5nttxrtmpwd7tvv58a80a686t92pgy65ekz0s8ncu" $ hexToByteArrayUnsafe "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" - , paymentCred: - keyHashCredential $ unsafePartial $ fromJust - $ ed25519KeyHashFromBytes + , paymentCredential: + wrap $ PubKeyHashCredential $ unsafePartial $ fromJust + $ decodeCbor $ wrap -- "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" $ hexToByteArrayUnsafe "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigInt.fromInt 0) mempty - , datum: NoOutputDatum + , amount: Value (Coin $ BigNum.fromInt 0) MultiAsset.empty + , datum: Nothing , scriptRef: Nothing } @@ -249,29 +156,29 @@ txOutputFixture2 = { stake: "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" , payment: "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigInt.fromInt 0) $ - mkSingletonNonAdaAsset currencySymbol1 tokenName1 - (BigInt.fromInt 1000000) - , datum: NoOutputDatum + , amount: Value (Coin $ BigNum.fromInt 0) $ + MultiAsset.singleton currencySymbol1 tokenName1 + (BigNum.fromInt 1000000) + , datum: Nothing , scriptRef: Nothing } -currencySymbol1 :: CurrencySymbol -currencySymbol1 = unsafePartial $ fromJust $ mkCurrencySymbol $ +currencySymbol1 :: ScriptHash +currencySymbol1 = unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "1d6445ddeda578117f393848e685128f1e78ad0c4e48129c5964dc2e" -tokenNameFromString :: String -> TokenName -tokenNameFromString s = unsafePartial $ fromJust $ mkTokenName $ +tokenNameFromString :: String -> AssetName +tokenNameFromString s = unsafePartial $ fromJust $ mkAssetName $ hexToByteArrayUnsafe s -tokenName1 :: TokenName +tokenName1 :: AssetName tokenName1 = tokenNameFromString "4974657374546f6b656e" -tokenName2 :: TokenName +tokenName2 :: AssetName tokenName2 = tokenNameFromString "54657374546f6b656e32" -tokenName4 :: TokenName +tokenName4 :: AssetName tokenName4 = tokenNameFromString "abcdef" txOutputBinaryFixture1 :: String @@ -282,19 +189,18 @@ txOutputBinaryFixture1 = pkhBech32 :: Bech32String pkhBech32 = "addr_vkh1zuctrdcq6ctd29242w8g84nlz0q38t2lnv3zzfcrfqktx0c9tzp" -stake1 :: StakeCredential +stake1 :: Credential stake1 = unsafePartial $ fromJust do - keyHashCredential <$> ed25519KeyHashFromBech32 pkhBech32 + PubKeyHashCredential <$> Ed25519KeyHash.fromBech32 pkhBech32 ed25519KeyHash1 :: Ed25519KeyHash -ed25519KeyHash1 = unsafePartial $ fromJust $ ed25519KeyHashFromBech32 pkhBech32 +ed25519KeyHash1 = unsafePartial $ fromJust $ Ed25519KeyHash.fromBech32 pkhBech32 bigNumOne :: BigNum -bigNumOne = unsafePartial $ fromJust $ BigNum.fromBigInt $ BigInt.fromInt 1 +bigNumOne = unsafePartial $ fromJust $ BigNum.fromBigInt $ BigNum.fromInt 1 rewardAddress1 :: RewardAddress -rewardAddress1 = RewardAddress $ rewardAddress - { network: TestnetId, paymentCred: stake1 } +rewardAddress1 = { networkId: TestnetId, stakeCredential: wrap stake1 } proposedProtocolParameterUpdates1 :: ProposedProtocolParameterUpdates proposedProtocolParameterUpdates1 = ProposedProtocolParameterUpdates $ @@ -303,13 +209,13 @@ proposedProtocolParameterUpdates1 = ProposedProtocolParameterUpdates $ ( hexToByteArrayUnsafe "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" ) /\ - { minfeeA: Just $ Coin $ BigInt.fromInt 1 - , minfeeB: Just $ Coin $ BigInt.fromInt 1 + { minfeeA: Just $ Coin $ BigNum.fromInt 1 + , minfeeB: Just $ Coin $ BigNum.fromInt 1 , maxBlockBodySize: Just $ UInt.fromInt 10000 , maxTxSize: Just $ UInt.fromInt 10000 , maxBlockHeaderSize: Just $ UInt.fromInt 1000 - , keyDeposit: Just $ Coin $ BigInt.fromInt 1 - , poolDeposit: Just $ Coin $ BigInt.fromInt 1 + , keyDeposit: Just $ Coin $ BigNum.fromInt 1 + , poolDeposit: Just $ Coin $ BigNum.fromInt 1 , maxEpoch: Just $ Epoch one , nOpt: Just $ UInt.fromInt 1 , poolPledgeInfluence: Just @@ -326,9 +232,9 @@ proposedProtocolParameterUpdates1 = ProposedProtocolParameterUpdates $ { memPrice: { numerator: bigNumOne, denominator: bigNumOne } , stepPrice: { numerator: bigNumOne, denominator: bigNumOne } } - , maxTxExUnits: Just { mem: BigInt.fromInt 1, steps: BigInt.fromInt 1 } + , maxTxExUnits: Just { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } , maxBlockExUnits: Just - { mem: BigInt.fromInt 1, steps: BigInt.fromInt 1 } + { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } , maxValueSize: Just $ UInt.fromInt 1 , collateralPercentage: Just $ UInt.fromInt 140 , maxCollateralInputs: Just $ UInt.fromInt 10 @@ -351,13 +257,13 @@ mkSampleTx startTx changes = where buildChanges :: Transaction -> (SampleTxConfig -> SampleTxConfig) -> SampleTxConfig - buildChanges (Transaction { body: TxBody { inputs } }) mkChanges = + buildChanges (Transaction { body: TransactionBody { inputs } }) mkChanges = mkChanges { inputs } applyChanges :: Transaction -> SampleTxConfig -> Transaction applyChanges ( Transaction - { body: TxBody + { body: TransactionBody { outputs , fee , ttl @@ -382,7 +288,7 @@ mkSampleTx startTx changes = ) { inputs: newInputs } = ( Transaction - { body: TxBody + { body: TransactionBody { inputs: newInputs , outputs , fee @@ -421,44 +327,44 @@ plutusScriptFixture2 = unsafePartial $ fromJust $ map plutusV2Script $ hush txFixture1 :: Transaction txFixture1 = Transaction - { body: TxBody - { inputs: Set.singleton txInputFixture1 + { body: TransactionBody + { inputs: [ txInputFixture1 ] , outputs: [ txOutputFixture1 ] - , fee: Coin $ BigInt.fromInt 177513 + , fee: Coin $ BigNum.fromInt 177513 , ttl: Nothing - , certs: Nothing - , withdrawals: Nothing + , certs: [] + , withdrawals: Map.empty , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing , referenceInputs: mempty , scriptDataHash: Nothing - , collateral: Nothing - , requiredSigners: Nothing + , collateral: [] + , requiredSigners: [] , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing } , witnessSet: TransactionWitnessSet - { vkeys: Nothing - , nativeScripts: Nothing - , bootstraps: Nothing - , plutusScripts: Nothing - , plutusData: Nothing - , redeemers: Nothing + { vkeys: [] + , nativeScripts: [] + , bootstraps: [] + , plutusScripts: [] + , plutusData: [] + , redeemers: [] } , isValid: true - , auxiliaryData: Nothing + , auxiliaryData: mempty } txFixture2 :: Transaction txFixture2 = Transaction - { body: TxBody - { inputs: Set.singleton txInputFixture1 + { body: TransactionBody + { inputs: [ txInputFixture1 ] , outputs: [ txOutputFixture2 ] - , fee: Coin $ BigInt.fromInt 177513 + , fee: Coin $ BigNum.fromInt 177513 , ttl: Nothing , certs: Nothing , withdrawals: Nothing @@ -475,12 +381,12 @@ txFixture2 = , totalCollateral: Nothing } , witnessSet: TransactionWitnessSet - { vkeys: Nothing - , nativeScripts: Nothing - , bootstraps: Nothing - , plutusScripts: Nothing - , plutusData: Nothing - , redeemers: Nothing + { vkeys: [] + , nativeScripts: [] + , bootstraps: [] + , plutusScripts: [] + , plutusData: [] + , redeemers: [] } , isValid: true , auxiliaryData: Nothing @@ -489,8 +395,8 @@ txFixture2 = txFixture3 :: Transaction txFixture3 = Transaction - { body: TxBody - { inputs: Set.singleton txInputFixture1 + { body: TransactionBody + { inputs: [ txInputFixture1 ] , outputs: [ TransactionOutput { address: keyHashBaseAddress @@ -500,8 +406,8 @@ txFixture3 = , payment: "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigInt.fromInt 2353402) mempty - , datum: NoOutputDatum + , amount: Value (Coin $ BigNum.fromInt 2353402) mempty + , datum: Nothing , scriptRef: Nothing } , TransactionOutput @@ -512,17 +418,17 @@ txFixture3 = , payment: "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigInt.fromInt 1000000) mempty - , datum: NoOutputDatum + , amount: Value (Coin $ BigNum.fromInt 1000000) mempty + , datum: Nothing , scriptRef: Nothing } ] - , fee: Coin $ BigInt.fromInt 177513 + , fee: Coin $ BigNum.fromInt 177513 , ttl: Nothing , certs: Nothing , withdrawals: Nothing , update: Nothing - , referenceInputs: Set.singleton txInputFixture1 + , referenceInputs: [ txInputFixture1 ] , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -534,12 +440,12 @@ txFixture3 = , totalCollateral: Nothing } , witnessSet: TransactionWitnessSet - { vkeys: Nothing - , nativeScripts: Nothing - , bootstraps: Nothing - , plutusScripts: Nothing - , plutusData: Nothing - , redeemers: Nothing + { vkeys: [] + , nativeScripts: [] + , bootstraps: [] + , plutusScripts: [] + , plutusData: [] + , redeemers: [] } , isValid: true , auxiliaryData: Nothing @@ -548,8 +454,8 @@ txFixture3 = txFixture4 :: Transaction txFixture4 = Transaction - { body: TxBody - { inputs: Set.singleton txInputFixture1 + { body: TransactionBody + { inputs: [ txInputFixture1 ] , outputs: [ TransactionOutput { address: keyHashBaseAddress @@ -559,7 +465,7 @@ txFixture4 = , payment: "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigInt.fromInt 2353402) mempty + , amount: Value (Coin $ BigNum.fromInt 2353402) mempty , datum: OutputDatum $ wrap plutusDataFixture1 , scriptRef: Just $ PlutusScriptRef plutusScriptFixture1 } @@ -571,12 +477,12 @@ txFixture4 = , payment: "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigInt.fromInt 1000000) mempty - , datum: NoOutputDatum + , amount: Value (Coin $ BigNum.fromInt 1000000) mempty + , datum: Nothing , scriptRef: Just $ NativeScriptRef nativeScriptFixture5 } ] - , fee: Coin $ BigInt.fromInt 177513 + , fee: Coin $ BigNum.fromInt 177513 , ttl: Just $ Slot $ BigNum.fromInt 123 , certs: Just [ StakeRegistration stake1 @@ -588,12 +494,12 @@ txFixture4 = , vrfKeyhash: unsafePartial $ fromJust $ hexToByteArray "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - >>= vrfKeyHashFromBytes + >>= decodeCbor , pledge: bigNumOne , cost: bigNumOne , margin: { numerator: bigNumOne, denominator: bigNumOne } - , rewardAccount: RewardAddress $ rewardAddress - { network: MainnetId, paymentCred: stake1 } + , rewardAccount: + { networkId: MainnetId, paymentCredential: stake1 } , poolOwners: [ wrap $ wrap ed25519KeyHash1 ] , relays: [ SingleHostAddr @@ -630,7 +536,7 @@ txFixture4 = , vrfKeyhash: unsafePartial $ fromJust $ hexToByteArray "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - >>= vrfKeyHashFromBytes + >>= decodeCbor } , MoveInstantaneousRewardsCert $ ToOtherPot { pot: one @@ -653,23 +559,23 @@ txFixture4 = $ byteArrayFromIntArrayUnsafe $ Array.replicate 32 0 , validityStartInterval: Just $ Slot $ BigNum.fromInt 124 - , mint: Just $ Mint $ mkNonAdaAsset $ Map.fromFoldable + , mint: Just $ Mint $ Map.fromFoldable [ currencySymbol1 /\ Map.fromFoldable [ tokenName1 /\ one ] ] , referenceInputs: mempty , scriptDataHash: Nothing , collateral: Nothing - , requiredSigners: Just [ RequiredSigner ed25519KeyHashFixture1 ] + , requiredSigners: Just [ ed25519KeyHashFixture1 ] , networkId: Just MainnetId , collateralReturn: Just txOutputFixture1 - , totalCollateral: Just $ Coin $ BigInt.fromInt 5_000_000 + , totalCollateral: Just $ Coin $ BigNum.fromInt 5_000_000 } , witnessSet: TransactionWitnessSet - { vkeys: Nothing - , nativeScripts: Nothing - , bootstraps: Nothing - , plutusScripts: Nothing - , plutusData: Nothing - , redeemers: Nothing + { vkeys: [] + , nativeScripts: [] + , bootstraps: [] + , plutusScripts: [] + , plutusData: [] + , redeemers: [] } , isValid: true , auxiliaryData: Nothing @@ -678,8 +584,8 @@ txFixture4 = txFixture5 :: Transaction txFixture5 = Transaction - { body: TxBody - { inputs: Set.singleton txInputFixture1 + { body: TransactionBody + { inputs: [ txInputFixture1 ] , outputs: [ TransactionOutput { address: keyHashBaseAddress @@ -689,12 +595,12 @@ txFixture5 = , payment: "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigInt.fromInt 490234098) mempty + , amount: Value (Coin $ BigNum.fromInt 490234098) mempty , datum: OutputDatum $ wrap plutusDataFixture1 , scriptRef: Just $ PlutusScriptRef plutusScriptFixture2 } ] - , fee: Coin $ BigInt.fromInt 89489324 + , fee: Coin $ BigNum.fromInt 89489324 , ttl: Nothing , certs: Nothing , withdrawals: Nothing @@ -711,12 +617,12 @@ txFixture5 = , totalCollateral: Nothing } , witnessSet: TransactionWitnessSet - { vkeys: Nothing - , nativeScripts: Nothing - , bootstraps: Nothing - , plutusScripts: Nothing - , plutusData: Nothing - , redeemers: Nothing + { vkeys: [] + , nativeScripts: [] + , bootstraps: [] + , plutusScripts: [] + , plutusData: [] + , redeemers: [] } , isValid: true , auxiliaryData: Nothing @@ -725,38 +631,38 @@ txFixture5 = txFixture6 :: Transaction txFixture6 = Transaction - { body: TxBody - { inputs: Set.singleton txInputFixture1 + { body: TransactionBody + { inputs: [ txInputFixture1 ] , outputs: [ txOutputFixture1 ] - , fee: Coin $ BigInt.fromInt 177513 + , fee: Coin $ BigNum.fromInt 177513 , ttl: Nothing - , certs: Nothing - , withdrawals: Nothing + , certs: [] + , withdrawals: Map.empty , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing , referenceInputs: mempty , scriptDataHash: Nothing - , collateral: Nothing - , requiredSigners: Nothing + , collateral: [] + , requiredSigners: [] , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing } , witnessSet: TransactionWitnessSet - { vkeys: Nothing - , nativeScripts: Nothing - , bootstraps: Nothing - , plutusScripts: Nothing - , plutusData: Nothing - , redeemers: Nothing + { vkeys: [] + , nativeScripts: [] + , bootstraps: [] + , plutusScripts: [] + , plutusData: [] + , redeemers: [] } , isValid: true - , auxiliaryData: Just $ AuxiliaryData + , auxiliaryData: AuxiliaryData { metadata: Just $ GeneralTransactionMetadata ( Map.fromFoldable - [ TransactionMetadatumLabel (BigInt.fromInt 8) /\ Text "foo" ] + [ (BigNum.fromInt 8) /\ Text "foo" ] ) , nativeScripts: Nothing , plutusScripts: Nothing @@ -921,11 +827,11 @@ input = TransactionInput output :: TransactionOutput output = ( TransactionOutput - { address: baseAddressToAddress $ baseAddress - { network: TestnetId - , paymentCred: keyHashCredential $ unsafePartial $ fromJust - $ ed25519KeyHashFromBytes - $ + { address: BaseAddress + { networkId: TestnetId + , paymentCredential: wrap $ PubKeyHashCredential $ unsafePartial $ fromJust + $ decodeCbor + $ wrap $ byteArrayFromIntArrayUnsafe [ 243 , 63 @@ -956,9 +862,9 @@ output = , 223 , 36 ] - , delegationCred: keyHashCredential $ unsafePartial $ fromJust - $ ed25519KeyHashFromBytes - $ + , stakeCredential: wrap $ PubKeyHashCredential $ unsafePartial $ fromJust + $ decodeCbor + $ wrap ( byteArrayFromIntArrayUnsafe [ 57 , 3 @@ -991,8 +897,8 @@ output = ] ) } - , amount: Value (Coin (BigInt.fromInt 5000000)) mempty - , datum: NoOutputDatum + , amount: Value (Coin (BigNum.fromInt 5000000)) MultiAsset.empty + , datum: Nothing , scriptRef: Nothing } ) @@ -1089,24 +995,24 @@ witnessSetFixture2 = hexToByteArrayUnsafe witnessSetFixture2Value :: TransactionWitnessSet witnessSetFixture2Value = TransactionWitnessSet - { bootstraps: Nothing - , nativeScripts: Nothing - , plutusData: Nothing - , plutusScripts: Nothing - , redeemers: Nothing - , vkeys: Just + { bootstraps: [] + , nativeScripts: [] + , plutusData: [] + , plutusScripts: [] + , redeemers: [] + , vkeys: [ Vkeywitness - ( Vkey - ( unsafePartial $ fromJust $ publicKeyFromBech32 + { vkey: Vkey + ( unsafePartial $ fromJust $ PublicKey.fromBech32 "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" ) - /\ - ( unsafePartial $ fromJust <<< mkEd25519Signature $ + , signature: + ( unsafePartial $ fromJust <<< Ed25519Signature.fromBech32 $ "ed25519_sig1mr6pm5kanam2wkmae70jx7fjkzepghefj0lmnczu6fra\ \6auf2urgrte5axxhunw4x34l3l8tj9c0t4le39tj8lpjdgxmqnujw07t\ \kzs9m6t6x" ) - ) + } ] } @@ -1120,10 +1026,9 @@ witnessSetFixture3 = hexToByteArrayUnsafe witnessSetFixture3Value :: TransactionWitnessSet witnessSetFixture3Value = TransactionWitnessSet - { bootstraps: Nothing - , nativeScripts: Nothing + { bootstraps: [] + , nativeScripts: [] , plutusData: - Just [ PD.Bytes ( byteArrayFromIntArrayUnsafe [ 43 @@ -1161,21 +1066,21 @@ witnessSetFixture3Value = ] ) ] - , plutusScripts: Nothing - , redeemers: Nothing - , vkeys: Just + , plutusScripts: [] + , redeemers: [] + , vkeys: [ Vkeywitness - ( Vkey - ( unsafePartial $ fromJust $ publicKeyFromBech32 + { vkey: Vkey + ( unsafePartial $ fromJust $ PublicKey.fromBech32 "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" ) - /\ - ( unsafePartial $ fromJust <<< mkEd25519Signature $ + , signature: + ( unsafePartial $ fromJust <<< Ed25519Signature.fromBech32 $ "ed25519_sig1clmhgxx9e9t24wzgkmcsr44uq98j935evsjnrj8nn7ge08\ \qrz0mgdxv5qtz8dyghs47q3lxwk4akq3u2ty8v4egeqvtl02ll0nfcqqq\ \6faxl6" ) - ) + } ] } @@ -1208,7 +1113,7 @@ ed25519KeyHashFixture1 :: Ed25519KeyHash ed25519KeyHashFixture1 = -- $ Bech32 "hstk_1rsf0q0q77t5nttxrtmpwd7tvv58a80a686t92pgy65ekz0s8ncu" unsafePartial $ fromJust - $ ed25519KeyHashFromBytes + $ decodeCbor $ hexToByteArrayUnsafe "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" @@ -1216,7 +1121,7 @@ ed25519KeyHashFixture2 :: Ed25519KeyHash ed25519KeyHashFixture2 = -- "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" unsafePartial $ fromJust - $ ed25519KeyHashFromBytes + $ decodeCbor $ hexToByteArrayUnsafe "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" @@ -1243,14 +1148,14 @@ nativeScriptFixture7 :: NativeScript nativeScriptFixture7 = TimelockExpiry $ Slot $ BigNum.fromInt 2000 keyHashBaseAddress :: { payment :: String, stake :: String } -> Address -keyHashBaseAddress { payment, stake } = baseAddressToAddress $ baseAddress - { network: TestnetId - , delegationCred: - keyHashCredential $ unsafePartial $ fromJust $ ed25519KeyHashFromBytes +keyHashBaseAddress { payment, stake } = BaseAddress + { networkId: TestnetId + , stakeCredential: + wrap $ PubKeyHashCredential $ unsafePartial $ fromJust $ decodeCbor -- $ T.Bech32 "hstk_1rsf0q0q77t5nttxrtmpwd7tvv58a80a686t92pgy65ekz0s8ncu" $ hexToByteArrayUnsafe stake , paymentCred: - keyHashCredential $ unsafePartial $ fromJust $ ed25519KeyHashFromBytes + wrap $ PubKeyHashCredential $ unsafePartial $ fromJust $ decodeCbor -- "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" $ hexToByteArrayUnsafe payment } @@ -1324,7 +1229,7 @@ plutusDataFixture8Bytes' = hexToByteArrayUnsafe \182d" scriptHashFromString :: String -> ScriptHash -scriptHashFromString s = unsafePartial $ fromJust $ scriptHashFromBytes $ +scriptHashFromString s = unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe s scriptHash1 :: ScriptHash @@ -1341,93 +1246,13 @@ policyId = MintingPolicyHash scriptHash1 policyId4 :: MintingPolicyHash policyId4 = MintingPolicyHash scriptHash4 -cip25MetadataFilesFixture1 :: Array Cip25MetadataFile -cip25MetadataFilesFixture1 = Cip25MetadataFile <$> - [ { name: unsafeMkCip25String "file_name_1" - , mediaType: unsafeMkCip25String "media_type" - , src: "uri1" - } - , { name: unsafeMkCip25String "file_name_2" - , mediaType: unsafeMkCip25String "media_type_2" - , src: "uri4" - } - ] - -cip25MetadataEntryFixture1 :: Cip25MetadataEntry -cip25MetadataEntryFixture1 = Cip25MetadataEntry - { policyId: policyId - , assetName: Cip25TokenName tokenName1 - , name: unsafeMkCip25String "ItestToken" - , image: "image_uri1" - , mediaType: Just $ unsafeMkCip25String "media_type" - , description: Just "desc1" - , files: cip25MetadataFilesFixture1 - } - -cip25MetadataEntryFixture2 :: Cip25MetadataEntry -cip25MetadataEntryFixture2 = Cip25MetadataEntry - { policyId: policyId - , assetName: Cip25TokenName tokenName2 - , name: unsafeMkCip25String "TestToken2" - , image: "image_uri1" - , mediaType: Nothing - , description: Nothing - , files: [] - } - -cip25MetadataFixture1 :: Cip25Metadata -cip25MetadataFixture1 = Cip25Metadata - [ cip25MetadataEntryFixture1, cip25MetadataEntryFixture2 ] - -cip25MetadataFixture2 :: Cip25Metadata -cip25MetadataFixture2 = Cip25Metadata - [ Cip25MetadataEntry - { policyId: policyId - , assetName: Cip25TokenName tokenName1 - , name: unsafeMkCip25String "ItestToken" - , image: "image_uri1" - , mediaType: Nothing - , description: Nothing - , files: [] - } - ] - -cip25MetadataFixture3 :: Cip25Metadata -cip25MetadataFixture3 = Cip25Metadata - [ Cip25MetadataEntry - { policyId: policyId - , assetName: Cip25TokenName tokenName1 - , name: unsafeMkCip25String "monkey.jpg" - , image: - -- checking long strings - "https://upload.wikimedia.org/wikipedia/commons/3/35/Olive_baboon_Ngorongoro.jpg?download" - , mediaType: Nothing - , description: Nothing - , files: [] - } - ] - -cip25MetadataFixture4 :: Cip25Metadata -cip25MetadataFixture4 = Cip25Metadata - [ Cip25MetadataEntry - { policyId: policyId4 - , assetName: Cip25TokenName tokenName4 - , name: unsafeMkCip25String "Allium" - , image: "ipfs://k2cwuee3arxg398hwxx6c0iferxitu126xntuzg8t765oo020h5y6npn" - , mediaType: Nothing - , description: Just "From pixabay" - , files: [] - } - ] - -unsafeMkCip25String :: String -> Cip25String -unsafeMkCip25String str = unsafePartial $ fromJust $ mkCip25String str - readJsonFixtureFile :: String -> Effect Aeson readJsonFixtureFile path = readTextFile UTF8 path >>= pure <<< fromRight aesonNull <<< parseJsonStringToAeson +-- TODO: remove CIP25 fixtures below + cip25MetadataJsonFixture1 :: Effect Aeson cip25MetadataJsonFixture1 = readJsonFixtureFile "test/Fixtures/cip25MetadataJsonFixture1.json" @@ -1462,40 +1287,40 @@ ogmiosEvaluateTxFailScriptErrorsFixture = redeemerFixture1 :: Redeemer redeemerFixture1 = Redeemer { tag: Spend - , index: BigInt.fromInt 0 + , index: BigNum.fromInt 0 , data: plutusDataFixture7 - , exUnits: - { mem: BigInt.fromInt 1 - , steps: BigInt.fromInt 1 + , exUnits: ExUnits + { mem: BigNum.fromInt 1 + , steps: BigNum.fromInt 1 } } -unappliedScriptFixture :: Validator +unappliedScriptFixture :: PlutusScript unappliedScriptFixture = - wrap $ plutusV1Script $ hexToByteArrayUnsafe $ + plutusV1Script $ hexToByteArrayUnsafe $ "586f010000333222323233222233222225335300c33225335300e0021001100f333500b223\ \33573466e1c00800404003c0152002333500b22333573466e3c00800404003c01122010010\ \091326353008009498cd4015d680119a802bae001120012001120011200112200212200120\ \0101" -partiallyAppliedScriptFixture :: Validator +partiallyAppliedScriptFixture :: PlutusScript partiallyAppliedScriptFixture = - wrap $ plutusV1Script $ hexToByteArrayUnsafe $ + plutusV1Script $ hexToByteArrayUnsafe $ "58750100003333222323233222233222225335300c33225335300e0021001100f333500b22\ \333573466e1c00800404003c0152002333500b22333573466e3c00800404003c0112210010\ \091326353008009498cd4015d680119a802bae001120012001120011200112200212200120\ \014c010218200001" -fullyAppliedScriptFixture :: Validator +fullyAppliedScriptFixture :: PlutusScript fullyAppliedScriptFixture = - wrap $ plutusV1Script $ hexToByteArrayUnsafe $ + plutusV1Script $ hexToByteArrayUnsafe $ "587f01000033333222323233222233222225335300c33225335300e0021001100f333500b2\ \2333573466e1c00800404003c0152002333500b22333573466e3c00800404003c011220100\ \10091326353008009498cd4015d680119a802bae0011200120011200112001122002122001\ \20014c01021820004c010544746573740001" nullPaymentPubKeyHash :: PaymentPubKeyHash -nullPaymentPubKeyHash = PaymentPubKeyHash $ PubKeyHash $ wrap +nullPaymentPubKeyHash = PaymentPubKeyHash $ wrap $ unsafePartial $ fromJust $ fromBytes diff --git a/test/Fixtures/CostModels.js b/test/Fixtures/CostModels.js new file mode 100644 index 000000000..4c7d4ddb0 --- /dev/null +++ b/test/Fixtures/CostModels.js @@ -0,0 +1,5 @@ +import * as CSL from "@mlabs-haskell/cardano-serialization-lib-gc"; + +export function defaultCostmdls() { + return lib.TxBuilderConstants.plutus_vasil_cost_models(); +} diff --git a/test/Fixtures/CostModels.purs b/test/Fixtures/CostModels.purs index 9c4ddc4c9..9374ab586 100644 --- a/test/Fixtures/CostModels.purs +++ b/test/Fixtures/CostModels.purs @@ -4,14 +4,18 @@ module Test.Ctl.Fixtures.CostModels import Prelude -import Control.Monad.Error.Class (liftEither) -import Ctl.Internal.Cardano.Types.Transaction (Costmdls) -import Ctl.Internal.Deserialization.Error (toError) -import Ctl.Internal.Deserialization.Transaction (convertCostModels) -import Ctl.Internal.Serialization (defaultCostmdls) -import Data.Bifunctor (lmap) +import Cardano.Serialization.Lib (Costmdls, unpackMapContainerToMapWith) +import Cardano.Types (CostModel, Language) +import Cardano.Types.CostModel as CostModel +import Cardano.Types.Language as Language +import Data.Map (Map) +import Effect (Effect) import Effect.Unsafe (unsafePerformEffect) -costModelsFixture1 :: Costmdls +foreign import defaultCostmdls :: Effect Costmdls + +costModelsFixture1 :: Map Language CostModel costModelsFixture1 = unsafePerformEffect - (defaultCostmdls >>= convertCostModels >>> lmap toError >>> liftEither) + ( defaultCostmdls <#> unpackMapContainerToMapWith Language.fromCsl + CostModel.fromCsl + ) diff --git a/test/Serialization/Hash.purs b/test/Serialization/Hash.purs index 06170a2f1..58714a5f5 100644 --- a/test/Serialization/Hash.purs +++ b/test/Serialization/Hash.purs @@ -1,28 +1,20 @@ module Test.Ctl.Serialization.Hash (suite) where +import Cardano.AsCbor (decodeCbor, encodeCbor) +import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash +import Cardano.Types.ScriptHash as ScriptHash import Control.Bind (bind, discard) -import Ctl.Internal.Serialization.Hash - ( ed25519KeyHashFromBech32 - , ed25519KeyHashFromBytes - , ed25519KeyHashToBech32 - , ed25519KeyHashToBech32Unsafe - , ed25519KeyHashToBytes - , scriptHashFromBech32 - , scriptHashFromBytes - , scriptHashToBech32 - , scriptHashToBech32Unsafe - , scriptHashToBytes - ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Aliases (Bech32String) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Eq ((==)) import Data.Function (($)) import Data.Maybe (Maybe(Just, Nothing), isNothing) -import Data.Newtype (unwrap) +import Data.Newtype (wrap) import Data.Unit (Unit) import Effect.Aff (Aff) import Mote (test) +import Partial.Unsafe (unsafePartial) import Test.Ctl.Utils (assertTrue, errMaybe) pkhBech32 :: Bech32String @@ -35,56 +27,45 @@ invalidBech32 :: Bech32String invalidBech32 = "addr_vkh1zuctrdcq6ctd29242w8g8444z0q38t2lnv3zzf44fqktx044444" suite :: TestPlanM (Aff Unit) Unit -suite = test "Serialization.Hash" do +suite = unsafePartial $ test "Serialization.Hash" do assertTrue "ed25519KeyHashFromBech32 returns Nothing on random string" - (isNothing $ ed25519KeyHashFromBech32 invalidBech32) + (isNothing $ Ed25519KeyHash.fromBech32 invalidBech32) - pkh <- errMaybe "ed25519KeyHashFromBech32 failed" $ ed25519KeyHashFromBech32 + pkh <- errMaybe "ed25519KeyHashFromBech32 failed" $ Ed25519KeyHash.fromBech32 pkhBech32 let - pkhB32 = ed25519KeyHashToBech32Unsafe "addr_vkh" pkh - mPkhB32 = ed25519KeyHashToBech32 "addr_vkh" pkh - pkhBts = ed25519KeyHashToBytes pkh - pkh2 = ed25519KeyHashFromBytes $ unwrap pkhBts + pkhB32 = Ed25519KeyHash.toBech32Unsafe "addr_vkh" pkh + mPkhB32 = Ed25519KeyHash.toBech32 "addr_vkh" pkh + pkhBts = encodeCbor pkh + pkh2 = decodeCbor pkhBts assertTrue - "Safe ed25519KeyHashToBech32 should produce Just when unsafe version works" + "Safe Ed25519KeyHash.toBech32 should produce Just when unsafe version works" (mPkhB32 == Just pkhB32) assertTrue - "Safe ed25519KeyHashToBech32 should return Nothing on invalid prefix" - (ed25519KeyHashToBech32 "" pkh == Nothing) + "Safe Ed25519KeyHash.toBech32 should return Nothing on invalid prefix" + (Ed25519KeyHash.toBech32 "" pkh == Nothing) assertTrue "ed25519KeyHashFromBytes does not reverts ed25519KeyHashToBytes" (pkh2 == Just pkh) assertTrue - "ed25519KeyHashFromBech32 does not reverts ed25519KeyHashToBech32Unsafe" + "ed25519KeyHashFromBech32 does not reverts Ed25519KeyHash.toBech32Unsafe" (pkhB32 == pkhBech32) -- assertTrue "scriptHashFromBech32 returns Nothing on random string" - (isNothing $ scriptHashFromBech32 invalidBech32) + (isNothing $ ScriptHash.fromBech32 invalidBech32) - scrh <- errMaybe "scriptHashFromBytes failed" $ scriptHashFromBytes - $ hexToByteArrayUnsafe - scriptHashHex + scrh <- errMaybe "scriptHashFromBytes failed" $ decodeCbor + $ wrap $ hexToByteArrayUnsafe scriptHashHex let - scrhB32 = scriptHashToBech32Unsafe "stake_vkh" scrh - mScrhB32 = scriptHashToBech32 "stake_vkh" scrh - scrhBts = scriptHashToBytes scrh - scrhFromBytes = scriptHashFromBytes $ unwrap scrhBts - scrhFromBech = scriptHashFromBech32 scrhB32 + scrhB32 = ScriptHash.toBech32Unsafe "stake_vkh" scrh + mScrhB32 = ScriptHash.toBech32Unsafe "stake_vkh" scrh + scrhBts = encodeCbor scrh + scrhFromBech = ScriptHash.fromBech32 scrhB32 - assertTrue "Safe scriptHashToBech32 should produce Just when unsafe works" - (mScrhB32 == Just scrhB32) - - assertTrue "Safe scriptHashToBech32 should return Nothing on invalid prefix" - (scriptHashToBech32 "" scrh == Nothing) - - assertTrue "scriptHashFromBytes does not reverts scriptHashToBytes" - (scrhFromBytes == Just scrh) - - assertTrue "scriptHashFromBech32 does not reverts scriptHashToBech32Unsafe" + assertTrue "ScriptHash.fromBech32 does not reverts ScriptHash.toBech32Unsafe" (scrhFromBech == Just scrh) diff --git a/test/Transaction.purs b/test/Transaction.purs deleted file mode 100644 index 84f64c35d..000000000 --- a/test/Transaction.purs +++ /dev/null @@ -1,177 +0,0 @@ -module Test.Ctl.Transaction (suite) where - -import Prelude - -import Cardano.Types.PlutusData (PlutusData(Integer)) -import Contract.Keys (publicKeyFromBech32) -import Ctl.Internal.Cardano.Types.Transaction - ( Redeemer(Redeemer) - , ScriptDataHash(ScriptDataHash) - , Transaction(Transaction) - , TransactionWitnessSet(TransactionWitnessSet) - , TxBody(TxBody) - , Vkey(Vkey) - , Vkeywitness(Vkeywitness) - , mkEd25519Signature - ) -import Ctl.Internal.Deserialization.WitnessSet as Deserialization.WitnessSet -import Ctl.Internal.Serialization.WitnessSet as Serialization.WitnessSet -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Transaction - ( attachDatum - , attachPlutusScript - , attachRedeemer - , setScriptDataHash - ) -import Ctl.Internal.Types.Datum (Datum(Datum)) -import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend)) -import Ctl.Internal.Types.Scripts - ( Language(PlutusV1, PlutusV2) - , PlutusScript(PlutusScript) - ) -import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Newtype (over, unwrap) -import Data.Tuple.Nested ((/\)) -import Effect (Effect) -import Effect.Aff (Aff) -import Effect.Class (liftEffect) -import Effect.Exception (throw) -import JS.BigInt as BigInt -import Mote (group, test) -import Partial.Unsafe (unsafePartial) -import Test.Ctl.Fixtures.CostModels (costModelsFixture1) -import Test.Spec.Assertions (shouldEqual) - -suite :: TestPlanM (Aff Unit) Unit -suite = group "attach datums to tx" $ do - test "datum should be correctly attached" testAttachDatum - test "redeemer should be correctly attached" testAttachRedeemer - test "scripts should be correctly attached (PlutusV1)" $ testAttachScript - PlutusV1 - test "scripts should be correctly attached (PlutusV2)" $ testAttachScript - PlutusV2 - test "scripts data hash should be correctly set" testSetScriptDataHash - test "existing witnesses should be preserved" testPreserveWitness - -testAttachDatum :: Aff Unit -testAttachDatum = liftEffect $ - attachDatum datum tx >>= case _ of - Transaction { witnessSet: TransactionWitnessSet ws } -> - case ws.plutusData of - Just [ pd ] -> do - pd `shouldEqual` unwrap datum - Just _ -> throw "Incorrect number of datums attached" - Nothing -> throw "Datum wasn't attached" - where - tx :: Transaction - tx = mempty - - datum :: Datum - datum = Datum $ Integer $ BigInt.fromInt 1 - -testAttachRedeemer :: Aff Unit -testAttachRedeemer = liftEffect $ do - redeemer <- mkRedeemer datum - attachRedeemer redeemer tx >>= case _ of - Transaction { witnessSet: TransactionWitnessSet ws } -> do - case ws.redeemers of - Just [ r ] -> r `shouldEqual` redeemer - Just _ -> throw "Incorrect number of redeemers attached" - Nothing -> throw "Redeemer wasn't attached" - where - tx :: Transaction - tx = mempty - - datum :: PlutusData - datum = Integer $ BigInt.fromInt 1 - -testAttachScript :: Language -> Aff Unit -testAttachScript language = liftEffect $ - attachPlutusScript script tx >>= case _ of - Transaction { witnessSet: TransactionWitnessSet ws } -> - case ws.plutusScripts of - Just [ ps ] -> ps `shouldEqual` script - Just _ -> throw "Incorrect number of scripts attached" - Nothing -> throw "Script wasn't attached" - where - tx :: Transaction - tx = mempty - - script :: PlutusScript - script = PlutusScript $ hexToByteArrayUnsafe "4e4d01000033222220051200120011" - /\ language - -testSetScriptDataHash :: Aff Unit -testSetScriptDataHash = liftEffect $ do - redeemer <- mkRedeemer datum2 - Transaction { body: TxBody body } <- - setScriptDataHash costModelsFixture1 [ redeemer ] [ datum1 ] tx - case body.scriptDataHash of - Nothing -> throw "Script data hash wasn't set" - Just (ScriptDataHash sdh) -> - -- TODO - -- Verify the hash with some external tool - byteArrayToHex sdh - `shouldEqual` - "dde4d4f89151fdbcea51fa4e9edcac89d69febe036a4976b643c713c19b0cad1" - where - tx :: Transaction - tx = mempty - - datum1 :: Datum - datum1 = Datum $ Integer $ BigInt.fromInt 1 - - datum2 :: PlutusData - datum2 = Integer $ BigInt.fromInt 2 - -testPreserveWitness :: Aff Unit -testPreserveWitness = liftEffect $ do - Transaction { witnessSet: TransactionWitnessSet { plutusData, vkeys } } <- - attachDatum datum tx - case plutusData /\ vkeys of - Just [ pd ] /\ Just vs@[ _ ] -> do - pd `shouldEqual` unwrap datum - vk' <- Deserialization.WitnessSet.convertVkeyWitnesses <$> - Serialization.WitnessSet.convertVkeywitnesses vs - - vk' `shouldEqual` [ vk ] - Just _ /\ Just _ -> throw "Incorrect number of witnesses" - Nothing /\ _ -> throw "Datum wasn't attached" - _ /\ Nothing -> throw "Vkey witness wasn't preserved" - where - tx :: Transaction - tx = over Transaction _ { witnessSet = initialWitnessSet } - $ mempty - - datum :: Datum - datum = Datum $ Integer $ BigInt.fromInt 1 - - initialWitnessSet :: TransactionWitnessSet - initialWitnessSet = over TransactionWitnessSet _ { vkeys = Just [ vk ] } - $ mempty - - vk :: Vkeywitness - vk = Vkeywitness - ( Vkey - ( unsafePartial $ fromJust <<< publicKeyFromBech32 $ - "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" - ) - /\ - ( unsafePartial $ fromJust <<< mkEd25519Signature $ - "ed25519_sig1clmhgxx9e9t24wzgkmcsr44uq98j935evsjnrj8nn7ge08qrz0mgdx\ - \v5qtz8dyghs47q3lxwk4akq3u2ty8v4egeqvtl02ll0nfcqqq6faxl6" - ) - ) - -mkRedeemer :: PlutusData -> Effect Redeemer -mkRedeemer pd = do - pure $ Redeemer - { tag: Spend - , index: BigInt.fromInt 0 - , data: pd - , exUnits: - { mem: BigInt.fromInt 7000000 - , steps: BigInt.fromInt 300000000 - } - } diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index 20c60fc06..83dedd52c 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -7,30 +7,14 @@ module Test.Ctl.Types.Interval import Prelude import Aeson (class DecodeAeson, decodeJsonString, printJsonDecodeError) +import Cardano.Types (Slot(..)) import Cardano.Types.BigNum (fromInt) as BigNum import Control.Monad.Error.Class (liftEither) import Control.Monad.Except (throwError) import Ctl.Internal.QueryM.Ogmios (OgmiosEraSummaries, OgmiosSystemStart) -import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.EraSummaries (EraSummaries) -import Ctl.Internal.Types.Interval - ( Interval - , POSIXTime(POSIXTime) - , PosixTimeToSlotError(PosixTimeBeforeSystemStart) - , always - , contains - , from - , hull - , intersection - , isEmpty - , member - , mkFiniteInterval - , never - , posixTimeToSlot - , slotToPosixTime - , to - ) +import Ctl.Internal.Types.Interval (Interval, POSIXTime(POSIXTime), PosixTimeToSlotError(PosixTimeBeforeSystemStart), always, contains, from, hull, intersection, isEmpty, member, mkFiniteInterval, never, posixTimeToSlot, slotToPosixTime, to) import Ctl.Internal.Types.SystemStart (SystemStart) import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either) diff --git a/test/Types/Ipv6.purs b/test/Types/Ipv6.purs index 69eb97e19..d7d847636 100644 --- a/test/Types/Ipv6.purs +++ b/test/Types/Ipv6.purs @@ -4,10 +4,11 @@ module Test.Ctl.Types.Ipv6 import Prelude -import Contract.Prim.ByteArray (hexToByteArray) -import Ctl.Internal.Cardano.Types.Transaction (Ipv6(Ipv6)) +import Cardano.AsCbor (decodeCbor) import Ctl.Internal.QueryM.Ogmios (parseIpv6String) import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Data.ByteArray (hexToByteArrayUnsafe) +import Data.Newtype (wrap) import Effect.Aff (Aff) import Mote (group, test) import Test.Spec.Assertions (shouldEqual) @@ -26,4 +27,4 @@ suite = do testIpv6 :: String -> String -> TestPlanM (Aff Unit) Unit testIpv6 str expected = test str do - parseIpv6String str `shouldEqual` (Ipv6 <$> hexToByteArray expected) + parseIpv6String str `shouldEqual` (decodeCbor (wrap $ hexToByteArrayUnsafe expected)) diff --git a/test/Unit.purs b/test/Unit.purs index b554a7822..2ec42e683 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -34,7 +34,6 @@ import Test.Ctl.ProtocolParams as ProtocolParams import Test.Ctl.Serialization as Serialization import Test.Ctl.Serialization.Address as Serialization.Address import Test.Ctl.Serialization.Hash as Serialization.Hash -import Test.Ctl.Transaction as Transaction import Test.Ctl.Types.Interval as Types.Interval import Test.Ctl.Types.Ipv6 as Ipv6 import Test.Ctl.Types.TokenName as Types.TokenName @@ -71,7 +70,6 @@ testPlan = do Serialization.suite Serialization.Address.suite Serialization.Hash.suite - Transaction.suite UsedTxOuts.suite Ogmios.Aeson.suite Ogmios.EvaluateTx.suite diff --git a/test/UsedTxOuts.purs b/test/UsedTxOuts.purs index 3737e6a48..fddb37e7b 100644 --- a/test/UsedTxOuts.purs +++ b/test/UsedTxOuts.purs @@ -4,7 +4,6 @@ import Prelude import Cardano.Types.TransactionHash (TransactionHash) import Control.Monad.Reader (runReaderT) -import Ctl.Internal.Cardano.Types.Transaction (Transaction) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.UsedTxOuts ( isTxOutRefUsed diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index 22e5e1ac1..57e6142d1 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -4,14 +4,12 @@ module Test.Ctl.Wallet.Bip32 import Contract.Prelude +import Cardano.Types.Address as Address +import Cardano.Types.NetworkId (NetworkId(MainnetId)) import Contract.Wallet.Key ( StakeKeyPresence(WithStakeKey) , mkKeyWalletFromMnemonic ) -import Ctl.Internal.Serialization.Address - ( NetworkId(MainnetId) - , addressFromBech32 - ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) import Data.Lens (_Left, preview) @@ -33,7 +31,7 @@ suite = do <> ")" ) do - addressFromBech32 addressStr `shouldEqual` + Address.fromBech32 addressStr `shouldEqual` hush ( mkKeyWalletFromMnemonic phrase1 { accountIndex: UInt.fromInt accountIndex diff --git a/test/Wallet/Cip30/SignData.purs b/test/Wallet/Cip30/SignData.purs index 74b9e250e..57ad2c64a 100644 --- a/test/Wallet/Cip30/SignData.purs +++ b/test/Wallet/Cip30/SignData.purs @@ -7,29 +7,27 @@ module Test.Ctl.Wallet.Cip30.SignData import Prelude -import Cardano.Serialization.Lib (toBytes) +import Cardano.AsCbor (encodeCbor) +import Cardano.MessageSigning (signData) import Cardano.Serialization.Lib as Csl -import Contract.Keys (publicKeyFromBytes) -import Ctl.Internal.Cardano.Types.Transaction - ( PrivateKey(PrivateKey) +import Cardano.Types + ( Address + , CborBytes + , PrivateKey(PrivateKey) , PublicKey + , RawBytes ) -import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) +import Cardano.Types.NetworkId (NetworkId(MainnetId)) +import Cardano.Types.NetworkId as NetworkId +import Cardano.Types.PrivateKey as PrivateKey +import Contract.Keys (publicKeyFromBytes) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Serialization.Address - ( Address - , NetworkId(MainnetId) - , intToNetworkId - ) import Ctl.Internal.Serialization.Keys ( bytesFromPublicKey , publicKeyFromPrivateKey ) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.CborBytes (CborBytes) -import Ctl.Internal.Types.RawBytes (RawBytes) import Ctl.Internal.Wallet.Cip30 (DataSignature) -import Ctl.Internal.Wallet.Cip30.SignData (signData) import Ctl.Internal.Wallet.Key ( PrivatePaymentKey , PrivateStakeKey @@ -77,7 +75,8 @@ testCip30SignData { privateKey, privateStakeKey, payload, networkId } = do (unwrap <$> privateStakeKey) (unwrap networkId) - dataSignature <- liftEffect $ signData privatePaymentKey address payload + dataSignature <- liftEffect $ signData (wrap privatePaymentKey) address + payload { coseKey } <- checkCip30SignDataResponse address dataSignature assertTrue "COSE_Key's x (-2) header must be set to public key bytes" @@ -108,7 +107,7 @@ checkCip30SignDataResponse address { key, signature } = do assertTrue "COSE_Sign1's \"address\" header must be set to address bytes" ( getCoseSign1ProtectedHeaderAddress coseSign1 - == Just (wrap $ toBytes $ unwrap address) + == Just (encodeCbor address) ) checkCoseKeyHeaders :: COSEKey -> Aff Unit @@ -165,8 +164,8 @@ derive instance Newtype ArbitraryPrivateKey _ instance Arbitrary ArbitraryPrivateKey where arbitrary = - wrap <<< wrap <<< unsafePartial fromJust <<< privateKeyFromBytes <$> - privateKeyBytes + wrap <<< unsafePartial fromJust <$> + (PrivateKey.fromRawBytes <$> privateKeyBytes) where privateKeyBytes :: Gen RawBytes privateKeyBytes = @@ -178,7 +177,7 @@ derive instance Newtype ArbitraryNetworkId _ instance Arbitrary ArbitraryNetworkId where arbitrary = - wrap <<< fromMaybe MainnetId <<< intToNetworkId <$> chooseInt 0 1 + wrap <<< fromMaybe MainnetId <<< NetworkId.fromInt <$> chooseInt 0 1 -------------------------------------------------------------------------------- -- FFI From 5c820448726e4bc0eea99c4cb472becfc9cde305 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 25 Mar 2024 17:49:01 +0300 Subject: [PATCH 070/373] Update using-from-js.md --- doc/using-from-js.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/using-from-js.md b/doc/using-from-js.md index 151b44b56..b3f3b4471 100644 --- a/doc/using-from-js.md +++ b/doc/using-from-js.md @@ -38,7 +38,7 @@ SDKs must be bundled to be usable in the browser. We support two bundlers: esbui ## Defining SDK APIs in PureScript -Developers should start from reading [this PureScript guide](https://book.purescript.org/chapter10.html#calling-purescript-from-javascript) that shows how to call PureScript from JS. Our (older) PureScript version is using CommonJS modules and not ES modules, so `import` statements should be replaced with `require`. +Developers should start from reading [this PureScript guide](https://book.purescript.org/chapter10.html#calling-purescript-from-javascript) that shows how to call PureScript from JS. Suppose we want to wrap a single `Contract` into an interface to call it from JS with Nami wallet. From 0ec49f3409a03373d42ddaf622efa05a8204b67a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 28 Mar 2024 20:49:51 +0400 Subject: [PATCH 071/373] WIP: fixing the tests --- CHANGELOG.md | 16 + examples/AdditionalUtxos.purs | 15 +- examples/BalanceTxConstraints.purs | 35 +- examples/ChangeGeneration.purs | 13 +- examples/Cip30.purs | 6 +- examples/ContractTestUtils.purs | 81 +- examples/Datums.purs | 7 +- examples/DropTokens.purs | 20 +- examples/ECDSA.purs | 25 +- examples/ExUnits.purs | 36 +- examples/Helpers.purs | 11 +- examples/IncludeDatum.purs | 20 +- .../KeyWallet/Internal/Cip30Contract.purs | 16 +- .../KeyWallet/Internal/Pkh2PkhContract.purs | 18 +- examples/KeyWallet/MintsAndSendsToken.purs | 18 +- examples/KeyWallet/SignMultiple.purs | 6 +- examples/Lose7Ada.purs | 29 +- examples/ManyAssets.purs | 11 +- examples/MintsMultipleTokens.purs | 40 +- examples/MultipleRedeemers.purs | 42 +- examples/NativeScriptMints.purs | 27 +- examples/PaysWithDatum.purs | 18 +- examples/Pkh2Pkh.purs | 4 +- examples/PlutusV2/AlwaysSucceeds.purs | 1 - examples/PlutusV2/InlineDatum.purs | 59 +- examples/PlutusV2/OneShotMinting.purs | 4 +- examples/PlutusV2/ReferenceInputs.purs | 17 +- .../PlutusV2/ReferenceInputsAndScripts.purs | 68 +- examples/PlutusV2/ReferenceScripts.purs | 27 +- examples/PlutusV2/Scripts/AlwaysMints.purs | 4 +- examples/PlutusV2/Scripts/AlwaysSucceeds.purs | 8 +- examples/SatisfiesAnyOf.purs | 55 -- examples/Schnorr.purs | 40 +- examples/SendsToken.purs | 21 +- examples/SignData.purs | 7 +- examples/SignMultiple.purs | 18 +- examples/TxChaining.purs | 4 +- examples/Utxos.purs | 31 +- package-lock.json | 63 +- package.json | 2 + packages.dhall | 9 +- spago-packages.nix | 24 +- spago.dhall | 1 + src/Contract/Address.purs | 3 +- src/Contract/Crypto/Secp256k1/ECDSA.purs | 10 +- src/Contract/Crypto/Secp256k1/Schnorr.purs | 10 +- src/Contract/Crypto/Secp256k1/Utils.purs | 6 +- src/Contract/Hashing.purs | 22 +- src/Contract/Numeric/BigNum.purs | 11 +- src/Contract/Prim/ByteArray.purs | 51 +- src/Contract/RewardAddress.purs | 3 - src/Contract/Scripts.purs | 23 +- src/Contract/Staking.purs | 14 +- src/Contract/Time.purs | 4 +- src/Contract/Transaction.purs | 135 ++-- src/Contract/Types.purs | 2 +- src/Contract/Utxos.purs | 2 + src/Contract/Value.purs | 1 + src/Internal/BalanceTx/BalanceTx.purs | 11 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 9 +- src/Internal/BalanceTx/Types.purs | 16 +- src/Internal/Contract/QueryHandle.purs | 4 +- src/Internal/Contract/Sign.purs | 1 + src/Internal/Helpers.purs | 4 - src/Internal/Plutip/Server.purs | 14 +- src/Internal/ProcessConstraints.purs | 182 +---- src/Internal/ProcessConstraints/State.purs | 39 +- src/Internal/Test/E2E/Runner.purs | 15 +- src/Internal/Test/KeyDir.purs | 24 +- src/Internal/Test/UtxoDistribution.purs | 11 +- src/Internal/Transaction.purs | 1 + src/Internal/Types/ScriptLookups.purs | 2 +- src/Internal/Types/TxConstraints.purs | 28 +- src/Internal/Types/Val.purs | 79 +- src/Internal/Wallet/Key.purs | 8 +- templates/ctl-scaffold/packages.dhall | 27 +- test/ApplyArgs.purs | 7 +- test/BalanceTx/ChangeGeneration.purs | 6 +- test/BalanceTx/Collateral.purs | 72 +- test/Blockfrost.purs | 18 +- .../GenerateFixtures/NativeScript.purs | 8 +- .../GenerateFixtures/ScriptInfo.purs | 8 +- test/CoinSelection/Arbitrary.purs | 51 +- test/CoinSelection/CoinSelection.purs | 63 +- test/CoinSelection/RoundRobin.purs | 14 +- test/CoinSelection/SelectionState.purs | 3 +- test/Data.purs | 43 +- test/Data/Interval.purs | 18 +- test/Deserialization.purs | 343 ++------- test/Fixtures.purs | 642 ++++++++-------- test/Fixtures/CostModels.js | 2 +- test/Fixtures/CostModels.purs | 5 +- test/Hashing.purs | 26 +- test/Integration.purs | 12 +- test/Metadata/Cip25.purs | 119 --- test/MustSpendTotal.purs | 60 -- test/NativeScript.purs | 21 +- test/Ogmios/EvaluateTx.purs | 45 +- test/Plutip.purs | 2 - test/Plutip/Common.purs | 8 +- test/Plutip/Contract.purs | 714 ++++++++---------- test/Plutip/Contract/Assert.purs | 61 +- test/Plutip/Contract/NetworkId.purs | 26 - test/Plutip/Contract/OgmiosMempool.purs | 18 +- test/Plutip/ExUnits.purs | 9 +- test/Plutip/Staking.purs | 170 ++--- test/Plutip/Utils.purs | 8 +- test/Plutip/UtxoDistribution.purs | 62 +- test/Plutus/Conversion/Address.purs | 192 ----- test/Plutus/Conversion/Value.purs | 79 -- test/Plutus/Credential.purs | 19 +- test/Plutus/Time.purs | 8 +- test/PrivateKey.purs | 26 +- test/Serialization.purs | 53 +- test/Serialization/Address.purs | 195 ----- test/Serialization/Hash.purs | 3 +- test/Types/Interval.purs | 18 +- test/Types/Ipv6.purs | 3 +- test/Types/Transaction.purs | 7 - test/Unit.purs | 48 +- test/UsedTxOuts.purs | 10 +- test/Wallet/Cip30/SignData.purs | 18 +- 122 files changed, 2041 insertions(+), 3051 deletions(-) delete mode 100644 examples/SatisfiesAnyOf.purs delete mode 100644 src/Contract/RewardAddress.purs delete mode 100644 test/Metadata/Cip25.purs delete mode 100644 test/MustSpendTotal.purs delete mode 100644 test/Plutip/Contract/NetworkId.purs delete mode 100644 test/Plutus/Conversion/Address.purs delete mode 100644 test/Plutus/Conversion/Value.purs delete mode 100644 test/Serialization/Address.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index 650ac030f..7f5eeaf00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,22 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `ToData`/`FromData` Instances for `purescript-noble-secp256k1` types (PS does not allow orphans) - `ToMetadata`/`FromMetadata` instance for `BigInt`: it was partial and unsafe - `Cardano.Types.BigNum.toInt'` method +- `Contract.Address`: + - `scriptHashAddress` - use `Contract.Address.mkAddress` + - `payPubKeyHashBaseAddress` - use `Contract.Address.mkAddress` + - `payPubKeyHashEnterpriseAddress` - use `Contract.Address.mkAddress` +- `Contract.Value`: + - `flattenNonAdaAssets` - use `Cardano.Types.Value.flatten`. +- `Contract.PlutusData`: + - `Datum`: removed, use `Cardano.Types.PlutusData` + - `unitDatum` +- `Contract.TextEnvelope`: + - `plutusScriptV1FromEnvelope` - use `plutusScriptFromEnvelope` +- `Contract.Hashing` +- `Contract.Transaction`: + - `TransactionOutputWithRefScript` - use `Cardano.Types.TransactionOutput`. It comes with refscript included. + - `getTxFinalFee` + diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index 6617e3144..7c61b9fbb 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -5,7 +5,10 @@ module Ctl.Examples.AdditionalUtxos import Contract.Prelude -import Contract.Address (scriptHashAddress) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Credential (Credential(..)) +import Cardano.Types.PlutusScript as PlutusScript +import Contract.Address (mkAddress) import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder) import Contract.BalanceTxConstraints (mustUseAdditionalUtxos) as BalancerConstraints import Contract.Config (ContractParams, testnetNamiConfig) @@ -75,10 +78,9 @@ payToValidator vhash = do scriptRef <- liftEffect (NativeScriptRef <$> randomSampleOne arbitrary) let value :: Value - value = Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 + value = Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 - datum :: Datum - datum = wrap $ Integer $ BigInt.fromInt 42 + datum = Integer $ BigInt.fromInt 42 constraints :: TxConstraints constraints = @@ -95,12 +97,13 @@ payToValidator vhash = do spendFromValidator :: Validator -> UtxoMap -> Datum -> Contract Unit spendFromValidator validator additionalUtxos datum = do + addr <- mkAddress (wrap $ ScriptHashCredential $ PlutusScript.hash validator) + Nothing let scriptUtxos :: UtxoMap scriptUtxos = additionalUtxos # Map.filter \out -> - (unwrap (unwrap out).output).address - == scriptHashAddress (validatorHash validator) Nothing + (unwrap out).address == addr scriptOrefs :: Array TransactionInput scriptOrefs = Array.fromFoldable $ Map.keys scriptUtxos diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index 8b971bf57..e5cb841ef 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -5,6 +5,10 @@ module Ctl.Examples.BalanceTxConstraints import Contract.Prelude +import Cardano.Types (Asset(Asset), BigNum) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint import Contract.Address (Address) import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder @@ -38,22 +42,22 @@ import Contract.TxConstraints as Constraints import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (utxosAt) import Contract.Value (CurrencySymbol, TokenName, Value) -import Contract.Value (singleton, valueOf) as Value +import Contract.Value (valueOf) as Value import Contract.Wallet ( KeyWallet - , getWalletAddressesWithNetworkTag + , getWalletAddresses , getWalletCollateral , ownPaymentPubKeyHashes , withKeyWallet ) import Control.Monad.Trans.Class (lift) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) -import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers import Data.Array (head) import Data.Array (sort) as Array import Data.Map (fromFoldable, keys, member) as Map import Data.Set (findMin) as Set -import JS.BigInt (BigInt, fromInt) +import JS.BigInt as BigInt newtype ContractParams = ContractParams { aliceKeyWallet :: KeyWallet @@ -87,13 +91,13 @@ assertChangeOutputsPartitionedCorrectly = assertionToCheck let values :: Array Value values = - changeOutputs <#> _.amount <<< unwrap <<< _.output <<< unwrap + changeOutputs <#> _.amount <<< unwrap - tokenQuantities :: Array BigInt + tokenQuantities :: Array BigNum tokenQuantities = - Array.sort $ values <#> \v -> Value.valueOf v cs tn + Array.sort $ values <#> \v -> Value.valueOf (Asset cs tn) v - tokenQuantities == map fromInt [ 3, 4, 4 ] + tokenQuantities == map BigNum.fromInt [ 3, 4, 4 ] -- | Checks that the utxo with the specified output reference -- | (`nonSpendableOref`) is not consumed during transaction balancing. @@ -124,7 +128,7 @@ contract (ContractParams p) = do aliceAddress <- liftedM "Failed to get Alice's address" $ head - <$> (withKeyWallet p.aliceKeyWallet getWalletAddressesWithNetworkTag) + <$> (withKeyWallet p.aliceKeyWallet getWalletAddresses) alicePubKeyHash <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes @@ -137,7 +141,7 @@ contract (ContractParams p) = do bobAddress <- liftedM "Failed to get Bob's address" $ head - <$> (withKeyWallet p.bobKeyWallet getWalletAddressesWithNetworkTag) + <$> (withKeyWallet p.bobKeyWallet getWalletAddresses) bobsCollateralArray <- withKeyWallet p.bobKeyWallet do fold <$> getWalletCollateral @@ -151,11 +155,11 @@ contract (ContractParams p) = do (Set.findMin <<< Map.keys <$> utxosAt aliceAddress) mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy - tn <- Helpers.mkTokenName "The Token" + tn <- Helpers.mkAssetName "The Token" let constraints :: Constraints.TxConstraints constraints = - Constraints.mustMintValue (Value.singleton cs tn $ fromInt 11) + Constraints.mustMintValue (Mint.singleton cs tn $ Int.fromInt 11) <> foldMap Constraints.mustBeSignedBy [ alicePubKeyHash, bobPubKeyHash ] lookups :: Lookups.ScriptLookups @@ -163,7 +167,8 @@ contract (ContractParams p) = do balanceTxConstraints :: BalanceTxConstraints.BalanceTxConstraintsBuilder balanceTxConstraints = - BalanceTxConstraints.mustGenChangeOutsWithMaxTokenQuantity (fromInt 4) + BalanceTxConstraints.mustGenChangeOutsWithMaxTokenQuantity + (BigInt.fromInt 4) <> BalanceTxConstraints.mustUseUtxosAtAddress bobAddress <> BalanceTxConstraints.mustSendChangeToAddress bobAddress <> BalanceTxConstraints.mustNotSpendUtxoWithOutRef nonSpendableOref @@ -184,11 +189,11 @@ contract (ContractParams p) = do awaitTxConfirmed txHash logInfo' "Tx submitted successfully!" - let changeAddress = (unwrap bobAddress).address + let changeAddress = bobAddress pure { txHash , changeAddress - , nonSpendableAddress: (unwrap aliceAddress).address + , nonSpendableAddress: aliceAddress , mintedToken: cs /\ tn , nonSpendableOref } diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 1c416701e..5942b72a1 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -2,11 +2,11 @@ module Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) where import Prelude +import Cardano.Types.BigNum as BigNum import Contract.BalanceTxConstraints (mustSendChangeWithDatum) import Contract.Monad (Contract) import Contract.PlutusData - ( Datum(Datum) - , OutputDatum(OutputDatum) + ( OutputDatum(OutputDatum) , PlutusData(Integer) , unitDatum ) @@ -27,9 +27,8 @@ import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds import Data.Array (fold, length, replicate, take, zip) -import Data.Lens (to, (^.)) +import Data.Lens ((^.)) import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) import Data.Tuple (Tuple(Tuple)) import JS.BigInt (fromInt) as BigInt import Test.Spec.Assertions (shouldEqual) @@ -45,7 +44,7 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = validator <- AlwaysSucceeds.alwaysSucceedsScript let vhash = validatorHash validator - value = Value.lovelaceValueOf $ BigInt.fromInt 1000001 + value = Value.lovelaceValueOf $ BigNum.fromInt 1000001 constraintsToSelf :: TxConstraints constraintsToSelf = fold <<< take outputsToSelf <<< fold @@ -67,11 +66,11 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = unbalancedTx <- mkUnbalancedTx lookups constraints balancedTx <- balanceTxWithConstraints unbalancedTx -- just to check that attaching datums works - ( mustSendChangeWithDatum $ OutputDatum $ Datum $ Integer $ BigInt.fromInt + ( mustSendChangeWithDatum $ OutputDatum $ Integer $ BigInt.fromInt 1000 ) balancedSignedTx <- signTransaction balancedTx - let outputs = balancedTx ^. to unwrap <<< _body <<< _outputs + let outputs = balancedTx ^. _body <<< _outputs length outputs `shouldEqual` expectedOutputs txHash <- submit balancedSignedTx awaitTxConfirmed txHash diff --git a/examples/Cip30.purs b/examples/Cip30.purs index 4b6c43a75..2241779a1 100644 --- a/examples/Cip30.purs +++ b/examples/Cip30.purs @@ -18,7 +18,7 @@ import Cardano.Wallet.Cip30.TypeSafe as Cip30 import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractAffM, runContract) -import Contract.Prim.ByteArray (rawBytesFromAscii) +import Contract.Prim.ByteArray (byteArrayFromAscii) import Contract.Wallet ( getChangeAddress , getRewardAddresses @@ -62,7 +62,7 @@ contract = do _ <- performAndLog "getUnusedAddresses" getUnusedAddresses dataBytes <- liftContractAffM ("can't convert : " <> msg <> " to RawBytes") - (pure mDataBytes) + (pure $ wrap <$> mDataBytes) mRewardAddress <- performAndLog "getRewardAddresses" getRewardAddresses rewardAddr <- liftMaybe (error "can't get reward address") $ head mRewardAddress @@ -71,7 +71,7 @@ contract = do void $ performAndLog "signData rewardAddress" $ signData rewardAddr dataBytes where msg = "hello world!" - mDataBytes = rawBytesFromAscii msg + mDataBytes = byteArrayFromAscii msg performAndLog :: forall (a :: Type) diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index 086735028..6b177ddd9 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -11,18 +11,15 @@ module Ctl.Examples.ContractTestUtils import Contract.Prelude -import Contract.Address - ( Address - , PaymentPubKeyHash - , StakePubKeyHash - , getNetworkId - , payPubKeyHashBaseAddress - , payPubKeyHashEnterpriseAddress - ) -import Contract.AuxiliaryData (setTxMetadata) +import Cardano.Types (BigNum, Coin, ExUnits(ExUnits), TransactionOutput) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Credential (Credential(PubKeyHashCredential)) +import Cardano.Types.Int as Int +import Cardano.Types.Mint (Mint) +import Cardano.Types.Mint as Mint +import Contract.Address (Address, PaymentPubKeyHash, StakePubKeyHash, mkAddress) import Contract.Hashing (datumHash) import Contract.Log (logInfo') -import Contract.Metadata (Cip25Metadata) import Contract.Monad (Contract, liftContractM, liftedM) import Contract.PlutusData (Datum, OutputDatum(OutputDatumHash)) import Contract.ScriptLookups as Lookups @@ -31,7 +28,6 @@ import Contract.Test.Assert ( ContractCheck , assertOutputHasDatum , assertOutputHasRefScript - , assertTxHasMetadata , assertionToCheck , checkExUnitsNotExceed , checkGainAtAddress' @@ -41,12 +37,13 @@ import Contract.Test.Assert ) import Contract.Transaction ( TransactionHash - , TransactionOutputWithRefScript , TransactionUnspentOutput + , _body + , _datum + , _fee , _output , awaitTxConfirmed , balanceTx - , getTxFinalFee , lookupTxHash , scriptRefFromMintingPolicy , signTransaction @@ -65,25 +62,22 @@ import Contract.Wallet ) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) -import Data.Lens (view) +import Data.Lens (_1, _2, view, (%~)) import Effect.Exception (throw) -import JS.BigInt (BigInt) -import JS.BigInt as BigInt type ContractParams = { receiverPkh :: PaymentPubKeyHash , receiverSkh :: Maybe StakePubKeyHash - , adaToSend :: BigInt + , adaToSend :: Coin , mintingPolicy :: MintingPolicy - , tokensToMint :: Tuple3 CurrencySymbol TokenName BigInt + , tokensToMint :: Tuple3 CurrencySymbol TokenName BigNum , datumToAttach :: Datum - , txMetadata :: Cip25Metadata } type ContractResult = { txHash :: TransactionHash - , txFinalFee :: BigInt - , txOutputUnderTest :: TransactionOutputWithRefScript + , txFinalFee :: Coin + , txOutputUnderTest :: TransactionOutput } mkChecks @@ -92,30 +86,32 @@ mkChecks mkChecks p = do senderAddress <- liftedM "Failed to get sender address" $ head <$> getWalletAddresses - receiverAddress <- - liftedM "Failed to get receiver address" (getReceiverAddress p) + receiverAddress <- getReceiverAddress p let dhash = datumHash p.datumToAttach pure [ checkGainAtAddress' (label receiverAddress "Receiver") - p.adaToSend + (BigNum.toBigInt $ unwrap p.adaToSend) , checkLossAtAddress (label senderAddress "Sender") case _ of - Just { txFinalFee } -> pure (p.adaToSend + txFinalFee) + Just { txFinalFee } -> pure + ( BigNum.toBigInt (unwrap p.adaToSend) + BigNum.toBigInt + (unwrap txFinalFee) + ) Nothing -> liftEffect $ throw "Unable to estimate expected loss in wallet" , checkTokenGainAtAddress' (label senderAddress "Sender") - ( uncurry3 (\cs tn amount -> cs /\ tn /\ amount) + ( uncurry3 (\cs tn amount -> cs /\ tn /\ BigNum.toBigInt amount) p.tokensToMint ) , checkExUnitsNotExceed - { mem: BigInt.fromInt 800, steps: BigInt.fromInt 161100 } + (ExUnits { mem: BigNum.fromInt 800, steps: BigNum.fromInt 161100 }) , assertionToCheck "Sender's output has a datum" \{ txOutputUnderTest } -> - assertOutputHasDatum (OutputDatumHash dhash) + assertOutputHasDatum (Just $ OutputDatumHash dhash) (label txOutputUnderTest "Sender's output with datum hash") , assertionToCheck "Output has a reference script" @@ -124,8 +120,6 @@ mkChecks p = do (scriptRefFromMintingPolicy p.mintingPolicy) (label txOutputUnderTest "Sender's output with reference script") - , assertionToCheck "Contains CIP-25 metadata" \{ txHash } -> - assertTxHasMetadata "CIP25 Metadata" txHash p.txMetadata ] mkContract :: ContractParams -> Contract ContractResult @@ -140,7 +134,11 @@ mkContract p = do Constraints.mustPayToPubKeyAddressWithDatumAndScriptRef pkh skh adaValue :: Value - adaValue = Value.lovelaceValueOf p.adaToSend + adaValue = Value.lovelaceValueOf (unwrap p.adaToSend) + + nonAdaMint :: Mint + nonAdaMint = uncurry3 Mint.singleton + (p.tokensToMint <#> _2 <<< _1 %~ Int.newPositive) nonAdaValue :: Value nonAdaValue = uncurry3 Value.singleton p.tokensToMint @@ -149,7 +147,7 @@ mkContract p = do constraints = mconcat [ Helpers.mustPayToPubKeyStakeAddress p.receiverPkh p.receiverSkh adaValue - , Constraints.mustMintValue nonAdaValue + , Constraints.mustMintValue nonAdaMint , mustPayToPubKeyStakeAddressWithDatumAndScriptRef ownPkh p.datumToAttach DatumWitness @@ -161,8 +159,7 @@ mkContract p = do lookups = Lookups.mintingPolicy p.mintingPolicy unbalancedTx <- mkUnbalancedTx lookups constraints - unbalancedTxWithMetadata <- setTxMetadata unbalancedTx p.txMetadata - balancedTx <- balanceTx unbalancedTxWithMetadata + balancedTx <- balanceTx unbalancedTx balancedSignedTx <- signTransaction balancedTx txId <- submit balancedSignedTx @@ -182,21 +179,17 @@ mkContract p = do pure { txHash: txId - , txFinalFee: getTxFinalFee balancedSignedTx + , txFinalFee: view (_body <<< _fee) balancedSignedTx , txOutputUnderTest } where hasDatumHash :: TransactionUnspentOutput -> Boolean - hasDatumHash = view _output >>> unwrap >>> _.output >>> unwrap >>> _.datum >>> + hasDatumHash = view (_output <<< _datum) >>> case _ of - OutputDatumHash _ -> true + Just (OutputDatumHash _) -> true _ -> false -getReceiverAddress :: ContractParams -> Contract (Maybe Address) +getReceiverAddress :: ContractParams -> Contract Address getReceiverAddress { receiverPkh, receiverSkh } = - getNetworkId <#> \networkId -> - case receiverSkh of - Just skh -> - payPubKeyHashBaseAddress networkId receiverPkh skh - Nothing -> - payPubKeyHashEnterpriseAddress networkId receiverPkh + mkAddress (wrap $ PubKeyHashCredential $ unwrap receiverPkh) + (wrap <<< PubKeyHashCredential <<< unwrap <$> receiverSkh) diff --git a/examples/Datums.purs b/examples/Datums.purs index ca631287c..a363cea92 100644 --- a/examples/Datums.purs +++ b/examples/Datums.purs @@ -20,11 +20,13 @@ module Ctl.Examples.Datums (main, contract, example) where import Contract.Prelude +import Cardano.AsCbor (decodeCbor) import Contract.Config (ContractParams, testnetConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (DataHash, getDatumByHash, getDatumsByHashes) -import Contract.Prim.ByteArray (hexToByteArrayUnsafe) +import Data.ByteArray (hexToByteArrayUnsafe) +import Partial.Unsafe (unsafePartial) main :: Effect Unit main = example testnetConfig @@ -44,7 +46,8 @@ contract = do ] where mkDatumHash :: String -> DataHash - mkDatumHash = wrap <<< hexToByteArrayUnsafe + mkDatumHash = unsafePartial $ fromJust <<< decodeCbor <<< wrap <<< + hexToByteArrayUnsafe example :: ContractParams -> Effect Unit example cfg = launchAff_ $ do diff --git a/examples/DropTokens.purs b/examples/DropTokens.purs index 6ef12aeee..499ba0833 100644 --- a/examples/DropTokens.purs +++ b/examples/DropTokens.purs @@ -4,6 +4,8 @@ module Ctl.Examples.DropTokens (main, example, contract) where import Contract.Prelude +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.Value as Value import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -11,15 +13,10 @@ import Contract.ScriptLookups as Lookups import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.TxConstraints as Helpers -import Contract.Value - ( coinToValue - , flattenNonAdaAssets - , negation - , singleton - , valueToCoin - ) +import Contract.Value (singleton) import Contract.Wallet (getWalletBalance) import Data.Array as Array +import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures (nullPaymentPubKeyHash) main :: Effect Unit @@ -33,15 +30,16 @@ contract :: Contract Unit contract = do logInfo' "Running Examples.DropTokens" logInfo' "Going to get rid of half of the tokens available" - value <- getWalletBalance <#> fold + value <- unsafePartial $ getWalletBalance <#> fold let - tokenValue = value <> negation (coinToValue (valueToCoin value)) halfArray arr = Array.take (Array.length arr `div` 2) arr -- drop half of the tokens tokenValueHalf = - fold $ halfArray (flattenNonAdaAssets tokenValue) <#> - \(cs /\ tn /\ n) -> singleton cs tn n + unsafePartial $ fold + $ halfArray (MultiAsset.flatten $ Value.getMultiAsset value) + <#> + \(cs /\ tn /\ n) -> singleton cs tn n constraints :: Constraints.TxConstraints constraints = Helpers.mustPayToPubKey nullPaymentPubKeyHash tokenValueHalf diff --git a/examples/ECDSA.purs b/examples/ECDSA.purs index 5cec16613..591680055 100644 --- a/examples/ECDSA.purs +++ b/examples/ECDSA.purs @@ -2,13 +2,16 @@ module Ctl.Examples.ECDSA (contract) where import Contract.Prelude -import Contract.Address (getNetworkId, validatorHashEnterpriseAddress) +import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Contract.Address (getNetworkId, mkAddress) import Contract.Crypto.Secp256k1.ECDSA ( ECDSAPublicKey , ECDSASignature , MessageHash , deriveEcdsaSecp256k1PublicKey , signEcdsaSecp256k1 + , unECDSAPublicKey + , unMessageHash ) import Contract.Crypto.Secp256k1.Utils ( hashMessageSha256 @@ -20,14 +23,14 @@ import Contract.Numeric.BigNum as BigNum import Contract.PlutusData ( class ToData , PlutusData(Constr) - , Redeemer(Redeemer) + , RedeemerDatum(RedeemerDatum) , toData , unitDatum ) import Contract.Prim.ByteArray (byteArrayFromIntArrayUnsafe) import Contract.ScriptLookups as Lookups import Contract.Scripts (Validator, validatorHash) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash , awaitTxConfirmed @@ -38,6 +41,7 @@ import Contract.Utxos (utxosAt) import Contract.Value as Value import Data.Map as Map import Data.Set as Set +import Noble.Secp256k1.ECDSA (unECDSASignature) newtype ECDSARedemeer = ECDSARedemeer { msg :: MessageHash @@ -50,7 +54,10 @@ derive instance Newtype ECDSARedemeer _ instance ToData ECDSARedemeer where toData (ECDSARedemeer { msg, sig, pk }) = Constr BigNum.zero - [ toData msg, toData sig, toData pk ] + [ toData $ unMessageHash msg + , toData $ unECDSASignature sig + , toData $ unECDSAPublicKey pk + ] contract :: Contract Unit contract = do @@ -63,7 +70,7 @@ prepTest = do let valHash = validatorHash validator - val = Value.lovelaceValueOf one + val = Value.lovelaceValueOf BigNum.one lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator @@ -83,14 +90,12 @@ prepTest = do testVerification :: TransactionHash -> ECDSARedemeer -> Contract TransactionHash testVerification txId ecdsaRed = do - let red = Redeemer $ toData ecdsaRed + let red = RedeemerDatum $ toData ecdsaRed validator <- liftContractM "Can't get validator" getValidator let valHash = validatorHash validator - netId <- getNetworkId - valAddr <- liftContractM "cannot get validator address" - (validatorHashEnterpriseAddress netId valHash) + valAddr <- mkAddress (wrap $ ScriptHashCredential valHash) Nothing scriptUtxos <- utxosAt valAddr txIn <- liftContractM "No UTxOs found at validator address" @@ -130,7 +135,7 @@ testECDSA txId = do getValidator :: Maybe Validator getValidator = - decodeTextEnvelope validateECDSA >>= plutusScriptV2FromEnvelope >>> map wrap + decodeTextEnvelope validateECDSA >>= plutusScriptFromEnvelope validateECDSA :: String validateECDSA = diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index 6340d689f..434b27f33 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -2,23 +2,17 @@ module Ctl.Examples.ExUnits where import Contract.Prelude -import Contract.Address (scriptHashAddress) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) -import Contract.Credential (Credential(PubKeyCredential)) +import Contract.Credential (Credential(PubKeyHashCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData - ( Redeemer(Redeemer) - , toData - , unitDatum - ) +import Contract.PlutusData (RedeemerDatum(RedeemerDatum), toData, unitDatum) import Contract.ScriptLookups as Lookups -import Contract.Scripts - ( Validator(Validator) - , ValidatorHash - , validatorHash - ) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) +import Contract.Scripts (Validator, ValidatorHash, validatorHash) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash , _input @@ -68,14 +62,14 @@ payToExUnits vhash = do Constraints.mustPayToScript vhash unitDatum Constraints.DatumWitness $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 Just stakeKeyHash -> Constraints.mustPayToScriptAddress vhash - (PubKeyCredential $ unwrap stakeKeyHash) + (PubKeyHashCredential $ unwrap stakeKeyHash) unitDatum Constraints.DatumWitness $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -92,9 +86,9 @@ spendFromExUnits spendFromExUnits iters vhash validator txId = do -- Use own stake credential if available mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes - let - scriptAddress = - scriptHashAddress vhash (PubKeyCredential <<< unwrap <$> mbStakeKeyHash) + scriptAddress <- + mkAddress (wrap $ ScriptHashCredential vhash) + (wrap <<< PubKeyHashCredential <<< unwrap <$> mbStakeKeyHash) utxos <- utxosAt scriptAddress txInput <- liftM @@ -113,7 +107,7 @@ spendFromExUnits iters vhash validator txId = do constraints :: TxConstraints constraints = - Constraints.mustSpendScriptOutput txInput (Redeemer $ toData iters) + Constraints.mustSpendScriptOutput txInput (RedeemerDatum $ toData iters) spendTxId <- submitTxFromConstraints lookups constraints awaitTxConfirmed spendTxId @@ -123,6 +117,6 @@ exUnitsScript :: Contract Validator exUnitsScript = do liftMaybe (error "Error decoding exUnits") do envelope <- decodeTextEnvelope exUnits - Validator <$> plutusScriptV2FromEnvelope envelope + plutusScriptFromEnvelope envelope foreign import exUnits :: String diff --git a/examples/Helpers.purs b/examples/Helpers.purs index a6887d932..1d6840718 100644 --- a/examples/Helpers.purs +++ b/examples/Helpers.purs @@ -16,20 +16,17 @@ import Cardano.Types , ScriptHash , ScriptRef , StakePubKeyHash + , Transaction , Value ) import Cardano.Types.AssetName as AssetName import Contract.Log (logInfo') import Contract.Monad (Contract, liftContractM) import Contract.Prim.ByteArray (byteArrayFromAscii) -import Contract.Transaction - ( BalancedSignedTransaction - , awaitTxConfirmed - , submit - ) +import Contract.Scripts (MintingPolicy) +import Contract.Transaction (awaitTxConfirmed, submit) import Contract.TxConstraints (DatumPresence) import Contract.TxConstraints as Constraints -import Contract.Types.MintingPolicy (MintingPolicy) import Contract.Types.MintingPolicy as MintingPolicy mkCurrencySymbol @@ -82,7 +79,7 @@ mustPayToPubKeyStakeAddressWithScriptRef pkh (Just skh) scriptRef = Constraints.mustPayToPubKeyAddressWithScriptRef pkh skh scriptRef submitAndLog - :: BalancedSignedTransaction -> Contract Unit + :: Transaction -> Contract Unit submitAndLog bsTx = do txId <- submit bsTx logInfo' $ "Tx ID: " <> show txId diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 5a21a4094..4b5a97900 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -12,14 +12,16 @@ module Ctl.Examples.IncludeDatum import Contract.Prelude -import Contract.Address (scriptHashAddress) +import Cardano.Types (Credential(ScriptHashCredential)) +import Cardano.Types.BigNum as BigNum +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) -import Contract.PlutusData (Datum(Datum), PlutusData(Integer), unitRedeemer) +import Contract.PlutusData (PlutusData(Integer), unitRedeemer) import Contract.ScriptLookups as Lookups -import Contract.Scripts (Validator(Validator), ValidatorHash, validatorHash) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV1FromEnvelope) +import Contract.Scripts (Validator, ValidatorHash, validatorHash) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash , _input @@ -52,8 +54,8 @@ example cfg = launchAff_ do logInfo' "Tx submitted successfully, Try to spend locked values" spendFromIncludeDatum vhash validator txId -datum :: Datum -datum = Datum $ Integer $ BigInt.fromInt 42 +datum :: PlutusData +datum = Integer $ BigInt.fromInt 42 payToIncludeDatum :: ValidatorHash -> Contract TransactionHash payToIncludeDatum vhash = @@ -62,7 +64,7 @@ payToIncludeDatum vhash = constraints = ( Constraints.mustPayToScript vhash datum Constraints.DatumWitness $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 ) <> Constraints.mustIncludeDatum datum @@ -77,7 +79,7 @@ spendFromIncludeDatum -> TransactionHash -> Contract Unit spendFromIncludeDatum vhash validator txId = do - let scriptAddress = scriptHashAddress vhash Nothing + scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing utxos <- utxosAt scriptAddress txInput <- liftContractM "no locked output at address" (view _input <$> head (lookupTxHash txId utxos)) @@ -99,7 +101,7 @@ only42Script :: Contract Validator only42Script = do liftMaybe (error "Error decoding includeDatum") do envelope <- decodeTextEnvelope includeDatum - Validator <$> plutusScriptV1FromEnvelope envelope + plutusScriptFromEnvelope envelope includeDatum :: String includeDatum = diff --git a/examples/KeyWallet/Internal/Cip30Contract.purs b/examples/KeyWallet/Internal/Cip30Contract.purs index 930faa13e..240b15eb6 100644 --- a/examples/KeyWallet/Internal/Cip30Contract.purs +++ b/examples/KeyWallet/Internal/Cip30Contract.purs @@ -4,6 +4,8 @@ module Ctl.Examples.KeyWallet.Internal.Cip30Contract import Contract.Prelude +import Cardano.Types (RawBytes) +import Cardano.Types.PrivateKey as PrivateKey import Contract.Config ( PrivatePaymentKeySource(PrivatePaymentKeyValue) , WalletSpec(UseKeys) @@ -18,8 +20,7 @@ import Ctl.Examples.KeyWallet.Internal.Cip30HtmlForm , logError , mkForm ) as HtmlForm -import Ctl.Internal.Deserialization.Keys (privateKeyFromBytes) -import Ctl.Internal.Types.RawBytes (RawBytes, hexToRawBytes, rawBytesFromAscii) +import Data.ByteArray (hexToByteArray) import Data.Log.Formatter.Pretty (prettyFormatter) import Data.Log.Level (LogLevel) import Data.Log.Message (Message) @@ -32,14 +33,15 @@ runKeyWalletContract_ contract = HtmlForm.mkForm \input log' unlock -> launchAff_ $ flip catchError (errorHandler log' unlock) $ do privateKey <- liftMaybe (error "Failed to parse private key") - $ privateKeyFromBytes - =<< hexToRawBytes input.privateKey - message <- liftMaybe (error "Failed to encode message") $ - rawBytesFromAscii input.message + $ PrivateKey.fromRawBytes + =<< map wrap (hexToByteArray input.privateKey) + message <- liftMaybe (error "Failed to encode message") + $ map wrap + $ hexToByteArray input.message let cfg = testnetConfig { walletSpec = Just $ UseKeys - (PrivatePaymentKeyValue $ wrap $ wrap privateKey) + (PrivatePaymentKeyValue $ wrap privateKey) Nothing , customLogger = Just printLog } diff --git a/examples/KeyWallet/Internal/Pkh2PkhContract.purs b/examples/KeyWallet/Internal/Pkh2PkhContract.purs index c0604d196..2ac25d530 100644 --- a/examples/KeyWallet/Internal/Pkh2PkhContract.purs +++ b/examples/KeyWallet/Internal/Pkh2PkhContract.purs @@ -4,6 +4,9 @@ module Ctl.Examples.KeyWallet.Internal.Pkh2PkhContract import Contract.Prelude +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Contract.Address (PaymentPubKeyHash) import Contract.Config ( PrivatePaymentKeySource(PrivatePaymentKeyValue) @@ -20,29 +23,26 @@ import Ctl.Examples.KeyWallet.Internal.Pkh2PkhHtmlForm , logError , mkForm ) as HtmlForm -import Ctl.Internal.Serialization.Hash (ed25519KeyHashFromBech32) -import Ctl.Internal.Types.RawBytes (hexToRawBytes) +import Data.ByteArray (hexToByteArray) import Data.Log.Formatter.Pretty (prettyFormatter) import Data.Log.Level (LogLevel) import Data.Log.Message (Message) import Effect.Class (class MonadEffect) import Effect.Exception (Error, error, message) -import JS.BigInt (BigInt) -import JS.BigInt (fromString) as BigInt runKeyWalletContract_ - :: (PaymentPubKeyHash -> BigInt -> Unlock -> Contract Unit) -> Effect Unit + :: (PaymentPubKeyHash -> BigNum -> Unlock -> Contract Unit) -> Effect Unit runKeyWalletContract_ contract = HtmlForm.mkForm \input log' unlock -> launchAff_ $ flip catchError (errorHandler log' unlock) $ do privateKey <- liftMaybe (error "Failed to parse private key") $ privateKeyFromBytes - =<< hexToRawBytes input.privateKey + =<< map wrap (hexToByteArray input.privateKey) pkh <- liftMaybe (error "Failed to parse public key hash") - $ map (wrap <<< wrap) - $ ed25519KeyHashFromBech32 input.toPkh + $ map wrap + $ Ed25519KeyHash.fromBech32 input.toPkh lovelace <- liftMaybe (error "Failed to parse lovelace amount") $ - BigInt.fromString input.lovelace + BigNum.fromString input.lovelace let cfg = testnetConfig { walletSpec = Just $ UseKeys diff --git a/examples/KeyWallet/MintsAndSendsToken.purs b/examples/KeyWallet/MintsAndSendsToken.purs index c71a6ca6e..a1d837f3c 100644 --- a/examples/KeyWallet/MintsAndSendsToken.purs +++ b/examples/KeyWallet/MintsAndSendsToken.purs @@ -6,31 +6,35 @@ module Ctl.Examples.KeyWallet.MintsAndSendsToken (main) where import Contract.Prelude +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint import Contract.Log (logInfo') import Contract.ScriptLookups as Lookups import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Value as Value import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) -import Ctl.Examples.Helpers - ( mkCurrencySymbol - , mkTokenName - ) as Helpers +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers import Ctl.Examples.KeyWallet.Internal.Pkh2PkhContract (runKeyWalletContract_) +import Partial.Unsafe (unsafePartial) main :: Effect Unit main = runKeyWalletContract_ \pkh lovelace unlock -> do logInfo' "Running Examples.KeyWallet.MintsAndSendsToken" mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy - tn <- Helpers.mkTokenName "TheToken" + tn <- Helpers.mkAssetName "TheToken" let constraints :: Constraints.TxConstraints constraints = mconcat - [ Constraints.mustMintValue (Value.singleton cs tn one) + [ Constraints.mustMintValue (Mint.singleton cs tn Int.one) , Constraints.mustPayToPubKey pkh - (Value.lovelaceValueOf lovelace <> Value.singleton cs tn one) + ( unsafePartial $ Value.lovelaceValueOf lovelace <> Value.singleton cs + tn + BigNum.one + ) ] lookups :: Lookups.ScriptLookups diff --git a/examples/KeyWallet/SignMultiple.purs b/examples/KeyWallet/SignMultiple.purs index fc998ca5a..146eef7c3 100644 --- a/examples/KeyWallet/SignMultiple.purs +++ b/examples/KeyWallet/SignMultiple.purs @@ -2,12 +2,12 @@ module Ctl.Examples.KeyWallet.SignMultiple where import Contract.Prelude +import Cardano.Types (Transaction(..)) import Contract.Log (logInfo') import Contract.Monad (Contract, throwContractError) import Contract.ScriptLookups as Lookups import Contract.Transaction - ( BalancedSignedTransaction - , TransactionHash + ( TransactionHash , awaitTxConfirmed , signTransaction , submit @@ -65,7 +65,7 @@ main = runKeyWalletContract_ \pkh lovelace unlock -> do liftEffect unlock where submitAndLog - :: BalancedSignedTransaction + :: Transaction -> Contract TransactionHash submitAndLog bsTx = do txId <- submit bsTx diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index 43cbd25b9..5a0f04f62 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -13,17 +13,16 @@ module Ctl.Examples.Lose7Ada import Contract.Prelude -import Contract.Address (scriptHashAddress) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.ScriptLookups as Lookups -import Contract.Scripts (Validator(Validator), ValidatorHash, validatorHash) -import Contract.TextEnvelope - ( decodeTextEnvelope - , plutusScriptV1FromEnvelope - ) +import Contract.Scripts (Validator, ValidatorHash, validatorHash) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash , TransactionInput(TransactionInput) @@ -33,14 +32,14 @@ import Contract.Transaction import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) -import Contract.Value as Value +import Contract.Value (lovelaceValueOf, minus) as Value import Contract.Wallet (getWalletBalance) import Control.Monad.Error.Class (liftMaybe) import Data.Foldable (fold) import Data.Functor ((<$>)) import Data.Map as Map import Effect.Exception (error) -import JS.BigInt as BigInt +import Partial.Unsafe (unsafePartial) import Test.Spec.Assertions (shouldEqual) main :: Effect Unit @@ -66,7 +65,7 @@ payToAlwaysFails vhash = do Constraints.mustPayToScript vhash unitDatum Constraints.DatumWitness $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -79,8 +78,8 @@ spendFromAlwaysFails -> TransactionHash -> Contract Unit spendFromAlwaysFails vhash validator txId = do - balanceBefore <- fold <$> getWalletBalance - let scriptAddress = scriptHashAddress vhash Nothing + balanceBefore <- unsafePartial $ fold <$> getWalletBalance + scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing utxos <- utxosAt scriptAddress txInput <- liftM ( error @@ -106,9 +105,9 @@ spendFromAlwaysFails vhash validator txId = do awaitTxConfirmed spendTxId logInfo' "Successfully spent locked values." - balance <- fold <$> getWalletBalance - let collateralLoss = Value.lovelaceValueOf $ BigInt.fromInt (-5_000_000) - balance `shouldEqual` (balanceBefore <> collateralLoss) + balance <- unsafePartial $ fold <$> getWalletBalance + let collateralLoss = Value.lovelaceValueOf $ BigNum.fromInt (5_000_000) + Just balance `shouldEqual` (Value.minus balanceBefore collateralLoss) where hasTransactionId :: TransactionInput /\ _ -> Boolean @@ -119,7 +118,7 @@ alwaysFailsScript :: Contract Validator alwaysFailsScript = do liftMaybe (error "Error decoding alwaysFails") do envelope <- decodeTextEnvelope alwaysFails - Validator <$> plutusScriptV1FromEnvelope envelope + plutusScriptFromEnvelope envelope alwaysFails :: String alwaysFails = diff --git a/examples/ManyAssets.purs b/examples/ManyAssets.purs index 70a6bccf4..d823190f4 100644 --- a/examples/ManyAssets.purs +++ b/examples/ManyAssets.purs @@ -8,6 +8,8 @@ module Ctl.Examples.ManyAssets import Contract.Prelude +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -20,9 +22,8 @@ import Contract.Monad import Contract.ScriptLookups as Lookups import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints -import Contract.Value (singleton) as Value import Contract.Wallet (getWalletUtxos) -import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyV2) import Data.Array (head, range) as Array import Data.Map (toUnfoldable) as Map @@ -49,13 +50,15 @@ mkContractWithAssertions exampleName = do (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) mp /\ cs <- Helpers.mkCurrencySymbol (alwaysMintsPolicyV2) - tns <- for (Array.range 0 600) \i -> Helpers.mkTokenName $ "CTLNFT" <> show i + tns <- for (Array.range 0 600) \i -> Helpers.mkAssetName $ "CTLNFT" <> show i let constraints :: Constraints.TxConstraints constraints = fold - (tns <#> \tn -> Constraints.mustMintValue (Value.singleton cs tn one)) + ( tns <#> \tn -> Constraints.mustMintValue + (Mint.singleton cs tn $ Int.fromInt one) + ) <> Constraints.mustSpendPubKeyOutput oref lookups :: Lookups.ScriptLookups diff --git a/examples/MintsMultipleTokens.purs b/examples/MintsMultipleTokens.purs index eb731b40d..d21e72e51 100644 --- a/examples/MintsMultipleTokens.purs +++ b/examples/MintsMultipleTokens.purs @@ -12,26 +12,22 @@ module Ctl.Examples.MintsMultipleTokens import Contract.Prelude +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (PlutusData(Integer), Redeemer(Redeemer)) +import Contract.PlutusData (PlutusData(Integer), RedeemerDatum(RedeemerDatum)) import Contract.ScriptLookups as Lookups import Contract.Scripts (MintingPolicy(PlutusMintingPolicy)) -import Contract.TextEnvelope - ( decodeTextEnvelope - , plutusScriptV1FromEnvelope - ) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints -import Contract.Value as Value import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers - ( mkCurrencySymbol - , mkTokenName - ) as Helpers +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers import Effect.Exception (error) import JS.BigInt (fromInt) as BigInt +import Partial.Unsafe (unsafePartial) main :: Effect Unit main = example testnetNamiConfig @@ -39,24 +35,24 @@ main = example testnetNamiConfig contract :: Contract Unit contract = do logInfo' "Running Examples.MintsMultipleTokens" - tn1 <- Helpers.mkTokenName "Token with a long name" - tn2 <- Helpers.mkTokenName "Token" + tn1 <- Helpers.mkAssetName "Token with a long name" + tn2 <- Helpers.mkAssetName "Token" mp1 /\ cs1 <- Helpers.mkCurrencySymbol mintingPolicyRdmrInt1 mp2 /\ cs2 <- Helpers.mkCurrencySymbol mintingPolicyRdmrInt2 mp3 /\ cs3 <- Helpers.mkCurrencySymbol mintingPolicyRdmrInt3 let constraints :: Constraints.TxConstraints - constraints = mconcat + constraints = unsafePartial $ mconcat [ Constraints.mustMintValueWithRedeemer - (Redeemer $ Integer (BigInt.fromInt 1)) - (Value.singleton cs1 tn1 one <> Value.singleton cs1 tn2 one) + (RedeemerDatum $ Integer (BigInt.fromInt 1)) + (Mint.singleton cs1 tn1 Int.one <> Mint.singleton cs1 tn2 Int.one) , Constraints.mustMintValueWithRedeemer - (Redeemer $ Integer (BigInt.fromInt 2)) - (Value.singleton cs2 tn1 one <> Value.singleton cs2 tn2 one) + (RedeemerDatum $ Integer (BigInt.fromInt 2)) + (Mint.singleton cs2 tn1 Int.one <> Mint.singleton cs2 tn2 Int.one) , Constraints.mustMintValueWithRedeemer - (Redeemer $ Integer (BigInt.fromInt 3)) - (Value.singleton cs3 tn1 one <> Value.singleton cs3 tn2 one) + (RedeemerDatum $ Integer (BigInt.fromInt 3)) + (Mint.singleton cs3 tn1 Int.one <> Mint.singleton cs3 tn2 Int.one) ] lookups :: Lookups.ScriptLookups @@ -82,16 +78,16 @@ mintingPolicyRdmrInt1 :: Contract MintingPolicy mintingPolicyRdmrInt1 = do liftMaybe (error "Error decoding redeemer1Script") do envelope <- decodeTextEnvelope redeemer1Script - PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope + PlutusMintingPolicy <$> plutusScriptFromEnvelope envelope mintingPolicyRdmrInt2 :: Contract MintingPolicy mintingPolicyRdmrInt2 = do liftMaybe (error "Error decoding redeemer2Script") do envelope <- decodeTextEnvelope redeemer2Script - PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope + PlutusMintingPolicy <$> plutusScriptFromEnvelope envelope mintingPolicyRdmrInt3 :: Contract MintingPolicy mintingPolicyRdmrInt3 = do liftMaybe (error "Error decoding redeemer3Script") do envelope <- decodeTextEnvelope redeemer3Script - PlutusMintingPolicy <$> plutusScriptV1FromEnvelope envelope + PlutusMintingPolicy <$> plutusScriptFromEnvelope envelope diff --git a/examples/MultipleRedeemers.purs b/examples/MultipleRedeemers.purs index f5bef4b0b..7d22ea9a6 100644 --- a/examples/MultipleRedeemers.purs +++ b/examples/MultipleRedeemers.purs @@ -8,31 +8,25 @@ module Ctl.Examples.MultipleRedeemers import Contract.Prelude -import Contract.Address (scriptHashAddress) +import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint +import Contract.Address (mkAddress) import Contract.Monad (Contract) import Contract.PlutusData ( PlutusData(Integer) - , Redeemer(Redeemer) + , RedeemerDatum(RedeemerDatum) , toData ) import Contract.ScriptLookups as Lookups -import Contract.Scripts - ( Validator(Validator) - , validatorHash - ) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV1FromEnvelope) +import Contract.Scripts (Validator, validatorHash) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) -import Contract.Value as Value import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers - ( mkCurrencySymbol - , mkTokenName - ) -import Ctl.Examples.MintsMultipleTokens - ( mintingPolicyRdmrInt3 - ) +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) +import Ctl.Examples.MintsMultipleTokens (mintingPolicyRdmrInt3) import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts ( mintAlwaysMintsV2ToTheScript ) @@ -45,7 +39,7 @@ import JS.BigInt as BigInt contract :: Contract Unit contract = do - tokenName <- mkTokenName "Token" + tokenName <- mkAssetName "Token" validator1 <- redeemerIs1Validator validator2 <- redeemerIs2Validator mintingPolicy <- alwaysMintsPolicyV2 @@ -70,7 +64,7 @@ contract = do contractWithMintRedeemers :: Contract Unit contractWithMintRedeemers = do - tokenName <- mkTokenName "Token" + tokenName <- mkAssetName "Token" validator1 <- redeemerIs1Validator mintingPolicy <- alwaysMintsPolicyV2 mp /\ cs <- mkCurrencySymbol mintingPolicyRdmrInt3 @@ -87,8 +81,8 @@ contractWithMintRedeemers = do let mintingConstraints = ( Constraints.mustMintValueWithRedeemer - (Redeemer $ Integer $ BigInt.fromInt 3) - (Value.singleton cs tokenName one) + (RedeemerDatum $ Integer $ BigInt.fromInt 3) + (Mint.singleton cs tokenName Int.one) ) txHash <- submitTxFromConstraints ( Lookups.mintingPolicy mintingPolicy <> Lookups.mintingPolicy mp <> @@ -105,12 +99,12 @@ spendLockedByIntOutputParams ) spendLockedByIntOutputParams (validator /\ redeemerVal) = do let vhash = validatorHash validator - utxo <- utxosAt (scriptHashAddress vhash Nothing) + utxo <- utxosAt =<< mkAddress (wrap $ ScriptHashCredential vhash) Nothing constraints <- pure $ mconcat do input <- List.fromFoldable $ Map.keys utxo pure $ ( Constraints.mustSpendScriptOutput input - $ Redeemer + $ RedeemerDatum $ toData $ Integer $ BigInt.fromInt redeemerVal @@ -127,18 +121,18 @@ redeemerIs1Validator :: Contract Validator redeemerIs1Validator = do liftMaybe (error "Error decoding redeemerIs1Script") do envelope <- decodeTextEnvelope redeemerIs1Script - Validator <$> plutusScriptV1FromEnvelope envelope + plutusScriptFromEnvelope envelope -- | checks whether redeemer is 2 redeemerIs2Validator :: Contract Validator redeemerIs2Validator = do liftMaybe (error "Error decoding redeemerIs2Script") do envelope <- decodeTextEnvelope redeemerIs2Script - Validator <$> plutusScriptV1FromEnvelope envelope + plutusScriptFromEnvelope envelope -- | checks whether redeemer is 3 redeemerIs3Validator :: Contract Validator redeemerIs3Validator = do liftMaybe (error "Error decoding redeemerIs3Script") do envelope <- decodeTextEnvelope redeemerIs3Script - Validator <$> plutusScriptV1FromEnvelope envelope + plutusScriptFromEnvelope envelope diff --git a/examples/NativeScriptMints.purs b/examples/NativeScriptMints.purs index eb3cc0d0d..fbf3b7777 100644 --- a/examples/NativeScriptMints.purs +++ b/examples/NativeScriptMints.purs @@ -4,9 +4,10 @@ module Ctl.Examples.NativeScriptMints (main, example, contract, pkhPolicy) where import Contract.Prelude -import Contract.Address - ( PaymentPubKeyHash - ) +import Cardano.Types (BigNum) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Int as Int +import Contract.Address (PaymentPubKeyHash) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -19,17 +20,13 @@ import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Value (CurrencySymbol, TokenName) import Contract.Value as Value -import Contract.Wallet - ( ownPaymentPubKeyHashes - , ownStakePubKeyHashes - ) +import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.Helpers - ( mkCurrencySymbol - , mkTokenName + ( mkAssetName + , mkCurrencySymbol , mustPayToPubKeyStakeAddress ) as Helpers import Data.Array (head) -import JS.BigInt (BigInt) import JS.BigInt as BigInt main :: Effect Unit @@ -42,14 +39,14 @@ contract = do pkh <- liftedM "Couldn't get own pkh" $ head <$> ownPaymentPubKeyHashes mp /\ cs <- Helpers.mkCurrencySymbol <<< pure $ pkhPolicy pkh - tn <- Helpers.mkTokenName "NSToken" + tn <- Helpers.mkAssetName "NSToken" let constraints :: Constraints.TxConstraints constraints = Constraints.mustMintCurrencyUsingNativeScript (nsPolicy pkh) - tn $ BigInt.fromInt 100 + tn $ Int.fromInt 100 lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp @@ -59,9 +56,9 @@ contract = do awaitTxConfirmed txId logInfo' "Minted successfully" - toSelfContract cs tn $ BigInt.fromInt 50 + toSelfContract cs tn $ BigNum.fromInt 50 -toSelfContract :: CurrencySymbol -> TokenName -> BigInt -> Contract Unit +toSelfContract :: CurrencySymbol -> TokenName -> BigNum -> Contract Unit toSelfContract cs tn amount = do pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes skh <- join <<< head <$> ownStakePubKeyHashes @@ -85,7 +82,7 @@ example cfg = launchAff_ $ do runContract cfg contract nsPolicy :: PaymentPubKeyHash -> NativeScript -nsPolicy = ScriptPubkey <<< unwrap <<< unwrap +nsPolicy = ScriptPubkey <<< unwrap pkhPolicy :: PaymentPubKeyHash -> MintingPolicy pkhPolicy = NativeMintingPolicy <<< nsPolicy diff --git a/examples/PaysWithDatum.purs b/examples/PaysWithDatum.purs index 1cc9efded..1e370e152 100644 --- a/examples/PaysWithDatum.purs +++ b/examples/PaysWithDatum.purs @@ -8,16 +8,15 @@ module Ctl.Examples.PaysWithDatum (contract, example, main) where import Contract.Prelude -import Contract.Address - ( Address - ) +import Cardano.Types (TransactionOutput) +import Cardano.Types.BigNum as BigNum +import Contract.Address (Address) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Hashing (datumHash) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.PlutusData ( DataHash - , Datum(Datum) , OutputDatum(OutputDatum, OutputDatumHash) , PlutusData(Integer) ) @@ -33,7 +32,6 @@ import Contract.Test.Assert ) import Contract.Transaction ( TransactionHash - , TransactionOutputWithRefScript , awaitTxConfirmed , submitTxFromConstraints ) @@ -54,7 +52,7 @@ import JS.BigInt (fromInt) as BigInt type ContractResult = { address :: Address , txHash :: TransactionHash - , datum :: Datum + , datum :: PlutusData , datumHash :: DataHash } @@ -73,11 +71,11 @@ contract = do address <- liftedM "Could not get own address" (head <$> getWalletAddresses) let - datum = Datum $ Integer $ BigInt.fromInt 42 + datum = Integer $ BigInt.fromInt 42 datumHash' = datumHash datum value :: Value - value = Value.lovelaceValueOf (BigInt.fromInt 2_000_000) + value = Value.lovelaceValueOf (BigNum.fromInt 2_000_000) constraints :: Constraints.TxConstraints constraints = @@ -126,6 +124,6 @@ assertTxCreatesOutputWithDatumHash = assertionToCheck hasOutputWithOutputDatum (OutputDatumHash datumHash) outputs hasOutputWithOutputDatum - :: OutputDatum -> Array TransactionOutputWithRefScript -> Boolean + :: OutputDatum -> Array TransactionOutput -> Boolean hasOutputWithOutputDatum datum = - any (eq datum <<< _.datum <<< unwrap <<< _.output <<< unwrap) + any (eq (Just datum) <<< _.datum <<< unwrap) diff --git a/examples/Pkh2Pkh.purs b/examples/Pkh2Pkh.purs index 85b3752d7..88b37a4cd 100644 --- a/examples/Pkh2Pkh.purs +++ b/examples/Pkh2Pkh.purs @@ -5,6 +5,7 @@ module Ctl.Examples.Pkh2Pkh (main, contract, example) where import Contract.Prelude +import Cardano.Types.BigNum as BigNum import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -17,7 +18,6 @@ import Contract.TxConstraints as Constraints import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Data.Array (head) -import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig @@ -33,7 +33,7 @@ contract = do constraints :: Constraints.TxConstraints constraints = Constraints.mustPayToPubKeyAddress pkh skh $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 lookups :: Lookups.ScriptLookups lookups = mempty diff --git a/examples/PlutusV2/AlwaysSucceeds.purs b/examples/PlutusV2/AlwaysSucceeds.purs index 70122b3f7..b139fc068 100644 --- a/examples/PlutusV2/AlwaysSucceeds.purs +++ b/examples/PlutusV2/AlwaysSucceeds.purs @@ -39,4 +39,3 @@ contract = do example :: ContractParams -> Effect Unit example cfg = launchAff_ do runContract cfg contract - diff --git a/examples/PlutusV2/InlineDatum.purs b/examples/PlutusV2/InlineDatum.purs index d2f2eca5f..a9cc81293 100644 --- a/examples/PlutusV2/InlineDatum.purs +++ b/examples/PlutusV2/InlineDatum.purs @@ -13,23 +13,20 @@ module Ctl.Examples.PlutusV2.InlineDatum import Contract.Prelude -import Contract.Address (scriptHashAddress) +import Cardano.Types (Credential(..)) +import Cardano.Types.BigNum as BigNum +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData - ( Datum(Datum) - , PlutusData(Integer) - , Redeemer(Redeemer) - ) +import Contract.PlutusData (PlutusData(Integer), RedeemerDatum(RedeemerDatum)) import Contract.ScriptLookups as Lookups -import Contract.Scripts (Validator(Validator), ValidatorHash, validatorHash) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) +import Contract.Scripts (Validator, ValidatorHash, validatorHash) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( OutputDatum(OutputDatum) , TransactionHash , TransactionInput(TransactionInput) - , TransactionOutputWithRefScript(TransactionOutputWithRefScript) , awaitTxConfirmed , submitTxFromConstraints ) @@ -64,15 +61,12 @@ plutusData = Integer $ BigInt.fromInt 31415927 payToCheckDatumIsInline :: ValidatorHash -> Contract TransactionHash payToCheckDatumIsInline vhash = do let - datum :: Datum - datum = Datum plutusData - constraints :: TxConstraints constraints = - Constraints.mustPayToScript vhash datum + Constraints.mustPayToScript vhash plutusData Constraints.DatumInline $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -85,7 +79,7 @@ spendFromCheckDatumIsInline -> TransactionHash -> Contract Unit spendFromCheckDatumIsInline vhash validator txId = do - let scriptAddress = scriptHashAddress vhash Nothing + scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing utxos <- utxosAt scriptAddress txInput <- liftM @@ -98,8 +92,8 @@ spendFromCheckDatumIsInline vhash validator txId = do ) (fst <$> find hasTransactionId (Map.toUnfoldable utxos :: Array _)) let - redeemer :: Redeemer - redeemer = Redeemer plutusData + redeemer :: RedeemerDatum + redeemer = RedeemerDatum plutusData lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator @@ -121,15 +115,13 @@ spendFromCheckDatumIsInline vhash validator txId = do payToCheckDatumIsInlineWrong :: ValidatorHash -> Contract TransactionHash payToCheckDatumIsInlineWrong vhash = do let - datum :: Datum - datum = Datum plutusData constraints :: TxConstraints constraints = - Constraints.mustPayToScript vhash datum + Constraints.mustPayToScript vhash plutusData Constraints.DatumWitness $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -141,19 +133,18 @@ readFromCheckDatumIsInline -> TransactionHash -> Contract Unit readFromCheckDatumIsInline vhash txId = do - let scriptAddress = scriptHashAddress vhash Nothing + scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing utxos <- utxosAt scriptAddress - TransactionOutputWithRefScript { output } <- - liftM - ( error - ( "The id " - <> show txId - <> " does not have output locked at: " - <> show scriptAddress - ) - ) - (snd <$> find hasTransactionId (Map.toUnfoldable utxos :: Array _)) - (unwrap output).datum `shouldEqual` OutputDatum (Datum plutusData) + output <- liftM + ( error + ( "The id " + <> show txId + <> " does not have output locked at: " + <> show scriptAddress + ) + ) + (snd <$> find hasTransactionId (Map.toUnfoldable utxos :: Array _)) + (unwrap output).datum `shouldEqual` Just (OutputDatum plutusData) logInfo' "Successfully read inline datum." where @@ -165,6 +156,6 @@ checkDatumIsInlineScript :: Contract Validator checkDatumIsInlineScript = do liftMaybe (error "Error decoding checkDatumIsInline") do envelope <- decodeTextEnvelope checkDatumIsInline - Validator <$> plutusScriptV2FromEnvelope envelope + plutusScriptFromEnvelope envelope foreign import checkDatumIsInline :: String diff --git a/examples/PlutusV2/OneShotMinting.purs b/examples/PlutusV2/OneShotMinting.purs index 83c1d4413..ac8b887a5 100644 --- a/examples/PlutusV2/OneShotMinting.purs +++ b/examples/PlutusV2/OneShotMinting.purs @@ -19,7 +19,7 @@ import Contract.Monad , runContract ) import Contract.Scripts (MintingPolicy(PlutusMintingPolicy), PlutusScript) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction (TransactionInput) import Control.Monad.Error.Class (liftMaybe) import Ctl.Examples.OneShotMinting @@ -48,7 +48,7 @@ oneShotMintingPolicyScriptV2 :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScriptV2 txInput = do script <- liftMaybe (error "Error decoding oneShotMinting") do envelope <- decodeTextEnvelope oneShotMinting - plutusScriptV2FromEnvelope envelope + plutusScriptFromEnvelope envelope liftContractE $ mkOneShotMintingPolicy script txInput diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index d97f614b0..cf75d955b 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -2,6 +2,8 @@ module Ctl.Examples.PlutusV2.ReferenceInputs (contract, example, main) where import Contract.Prelude +import Cardano.Types (Transaction) +import Cardano.Types.BigNum as BigNum import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -20,8 +22,7 @@ import Contract.Test.Assert , runChecks ) import Contract.Transaction - ( BalancedSignedTransaction - , TransactionInput + ( TransactionInput , _body , _referenceInputs , awaitTxConfirmed @@ -39,11 +40,9 @@ import Contract.Wallet ) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers -import Data.Array (head) as Array +import Data.Array (elem, head) as Array import Data.Lens.Getter ((^.)) import Data.Map (member, toUnfoldable) as Map -import Data.Set (member) as Set -import JS.BigInt (fromInt) as BigInt main :: Effect Unit main = example testnetNamiConfig @@ -69,7 +68,7 @@ contract = do constraints = mconcat [ Constraints.mustReferenceOutput oref , Helpers.mustPayToPubKeyStakeAddress pkh skh - (Value.lovelaceValueOf $ BigInt.fromInt 2_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) ] lookups :: Lookups.ScriptLookups @@ -87,7 +86,7 @@ contract = do type ContractResult = { referenceInput :: TransactionInput - , balancedSignedTx :: BalancedSignedTransaction + , balancedSignedTx :: Transaction } assertTxContainsReferenceInput :: ContractCheck ContractResult @@ -99,8 +98,8 @@ assertTxContainsReferenceInput = assertionFailure = CustomFailure "Could not find given input in `referenceInputs`" assertContract assertionFailure do - Set.member referenceInput - (unwrap balancedSignedTx ^. _body <<< _referenceInputs) + Array.elem referenceInput + (balancedSignedTx ^. _body <<< _referenceInputs) assertReferenceInputNotSpent :: ContractCheck ContractResult assertReferenceInputNotSpent = assertionToCheck "A reference input UTxO" diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index b0a453bf9..93d946eb6 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -7,11 +7,15 @@ module Ctl.Examples.PlutusV2.ReferenceInputsAndScripts import Contract.Prelude -import Contract.Address - ( PaymentPubKeyHash - , StakePubKeyHash - , scriptHashAddress +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.TransactionUnspentOutput + ( TransactionUnspentOutput(TransactionUnspentOutput) ) +import Contract.Address (PaymentPubKeyHash, StakePubKeyHash, mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -23,22 +27,13 @@ import Contract.Monad ) import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.ScriptLookups as Lookups -import Contract.Scripts - ( MintingPolicy(PlutusMintingPolicy) - , MintingPolicyHash - , PlutusScript - , Validator - , ValidatorHash - , mintingPolicyHash - , validatorHash - ) +import Contract.Scripts (PlutusScript, Validator, ValidatorHash) import Contract.Transaction ( ScriptRef(PlutusScriptRef) , TransactionHash , TransactionInput(TransactionInput) - , TransactionOutputWithRefScript + , TransactionOutput , awaitTxConfirmed - , mkTxUnspentOut , submitTxFromConstraints ) import Contract.TxConstraints @@ -47,6 +42,7 @@ import Contract.TxConstraints , TxConstraints ) import Contract.TxConstraints as Constraints +import Contract.Types.MintingPolicy as MintingPolicy import Contract.Utxos (utxosAt) import Contract.Value (TokenName, Value) import Contract.Value as Value @@ -55,7 +51,7 @@ import Contract.Wallet , ownPaymentPubKeyHashes , ownStakePubKeyHashes ) -import Ctl.Examples.Helpers (mkTokenName) as Helpers +import Ctl.Examples.Helpers (mkAssetName) as Helpers import Ctl.Examples.PlutusV2.Scripts.AlwaysMints ( alwaysMintsPolicyScriptV2 , alwaysMintsPolicyV2 @@ -63,7 +59,6 @@ import Ctl.Examples.PlutusV2.Scripts.AlwaysMints import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (head) import Data.Map (toUnfoldable) as Map -import JS.BigInt (fromInt) as BigInt main :: Effect Unit main = example testnetNamiConfig @@ -77,13 +72,13 @@ contract = do logInfo' "Running Examples.PlutusV2.ReferenceInputsAndScripts" validator <- alwaysSucceedsScriptV2 mintsScript <- alwaysMintsPolicyScriptV2 - tokenName <- Helpers.mkTokenName "TheToken" + tokenName <- Helpers.mkAssetName "TheToken" let vhash :: ValidatorHash - vhash = validatorHash validator + vhash = PlutusScript.hash validator validatorRef :: ScriptRef - validatorRef = PlutusScriptRef (unwrap validator) + validatorRef = PlutusScriptRef validator mpRef :: ScriptRef mpRef = PlutusScriptRef mintsScript @@ -92,7 +87,7 @@ contract = do txId <- payToAlwaysSucceedsAndCreateScriptRefOutput vhash validatorRef mpRef awaitTxConfirmed txId logInfo' "Tx submitted successfully, Try to spend locked values" - spendFromAlwaysSucceeds vhash txId (unwrap validator) mintsScript + spendFromAlwaysSucceeds vhash txId validator mintsScript tokenName payToAlwaysSucceedsAndCreateScriptRefOutput @@ -102,7 +97,7 @@ payToAlwaysSucceedsAndCreateScriptRefOutput vhash validatorRef mpRef = do skh <- join <<< head <$> ownStakePubKeyHashes let value :: Value - value = Value.lovelaceValueOf (BigInt.fromInt 2_000_000) + value = Value.lovelaceValueOf (BigNum.fromInt 2_000_000) createOutputWithScriptRef :: ScriptRef -> TxConstraints createOutputWithScriptRef scriptRef = @@ -127,7 +122,7 @@ spendFromAlwaysSucceeds -> TokenName -> Contract Unit spendFromAlwaysSucceeds vhash txId validator mp tokenName = do - let scriptAddress = scriptHashAddress vhash Nothing + scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing ownAddress <- liftedM "Failed to get own address" $ head <$> getWalletAddresses (utxos :: Array _) <- Map.toUnfoldable <$> utxosAt ownAddress @@ -146,16 +141,19 @@ spendFromAlwaysSucceeds vhash txId validator mp tokenName = do $ find (hasRefPlutusScript mp) utxos let - mph :: MintingPolicyHash - mph = mintingPolicyHash (PlutusMintingPolicy mp) + mph = PlutusScript.hash mp constraints :: TxConstraints constraints = mconcat [ Constraints.mustSpendScriptOutputUsingScriptRef txInput unitRedeemer - (RefInput $ mkTxUnspentOut refValidatorInput refValidatorOutput) - - , Constraints.mustMintCurrencyUsingScriptRef mph tokenName one - (RefInput $ mkTxUnspentOut refMpInput refMpOutput) + ( RefInput $ TransactionUnspentOutput + { input: refValidatorInput, output: refValidatorOutput } + ) + + , Constraints.mustMintCurrencyUsingScriptRef mph tokenName (Int.fromInt 1) + ( RefInput $ TransactionUnspentOutput + { input: refMpInput, output: refMpOutput } + ) ] lookups :: Lookups.ScriptLookups @@ -170,7 +168,7 @@ spendFromAlwaysSucceeds vhash txId validator mp tokenName = do txInput.transactionId == txId hasRefPlutusScript - :: PlutusScript -> _ /\ TransactionOutputWithRefScript -> Boolean + :: PlutusScript -> _ /\ TransactionOutput -> Boolean hasRefPlutusScript plutusScript (_ /\ txOutput) = (unwrap txOutput).scriptRef == Just (PlutusScriptRef plutusScript) @@ -190,19 +188,19 @@ mintAlwaysMintsV2ToTheScript :: TokenName -> Validator -> Int -> Contract Unit mintAlwaysMintsV2ToTheScript tokenName validator sum = do mp <- alwaysMintsPolicyV2 - let cs = Value.scriptCurrencySymbol mp + let cs = MintingPolicy.hash mp let - vhash = validatorHash validator + vhash = PlutusScript.hash validator constraints :: Constraints.TxConstraints constraints = mconcat [ Constraints.mustMintValue - $ Value.singleton cs tokenName - $ BigInt.fromInt sum + $ Mint.singleton cs tokenName + $ Int.fromInt sum , Constraints.mustPayToScript vhash unitDatum Constraints.DatumWitness $ Value.singleton cs tokenName - $ BigInt.fromInt sum + $ BigNum.fromInt sum ] lookups :: Lookups.ScriptLookups diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs index a52783f7a..22aa6929a 100644 --- a/examples/PlutusV2/ReferenceScripts.purs +++ b/examples/PlutusV2/ReferenceScripts.purs @@ -6,9 +6,11 @@ module Ctl.Examples.PlutusV2.ReferenceScripts import Contract.Prelude -import Contract.Address (scriptHashAddress) +import Cardano.Types (Credential(..), TransactionUnspentOutput(..)) +import Cardano.Types.BigNum as BigNum +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) -import Contract.Credential (Credential(PubKeyCredential)) +import Contract.Credential (Credential(PubKeyHashCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) import Contract.PlutusData (unitDatum, unitRedeemer) @@ -19,7 +21,6 @@ import Contract.Transaction , TransactionHash , TransactionInput(TransactionInput) , awaitTxConfirmed - , mkTxUnspentOut , submitTxFromConstraints ) import Contract.TxConstraints @@ -34,7 +35,6 @@ import Contract.Wallet (ownStakePubKeyHashes) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (head) import Data.Map (toUnfoldable) as Map -import JS.BigInt (fromInt) as BigInt main :: Effect Unit main = example testnetNamiConfig @@ -52,7 +52,7 @@ contract = do vhash = validatorHash validator scriptRef :: ScriptRef - scriptRef = PlutusScriptRef (unwrap validator) + scriptRef = PlutusScriptRef validator logInfo' "Attempt to lock value" txId <- payWithScriptRefToAlwaysSucceeds vhash scriptRef @@ -73,15 +73,15 @@ payWithScriptRefToAlwaysSucceeds vhash scriptRef = do Nothing -> Constraints.mustPayToScriptWithScriptRef vhash unitDatum DatumWitness scriptRef - (Value.lovelaceValueOf $ BigInt.fromInt 2_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) Just stakeKeyHash -> Constraints.mustPayToScriptAddressWithScriptRef vhash - (PubKeyCredential $ unwrap stakeKeyHash) + (PubKeyHashCredential $ unwrap stakeKeyHash) unitDatum DatumWitness scriptRef - (Value.lovelaceValueOf $ BigInt.fromInt 2_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) lookups :: Lookups.ScriptLookups lookups = mempty @@ -93,20 +93,19 @@ spendFromAlwaysSucceeds vhash txId = do -- Send to own stake credential. This is used to test -- `mustPayToScriptAddressWithScriptRef` mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes - let - scriptAddress = - scriptHashAddress vhash (PubKeyCredential <<< unwrap <$> mbStakeKeyHash) + scriptAddress <- mkAddress (wrap $ ScriptHashCredential $ vhash) + (wrap <<< PubKeyHashCredential <<< unwrap <$> mbStakeKeyHash) utxos <- utxosAt scriptAddress - txInput /\ txOutput <- + input /\ output <- liftContractM "Could not find unspent output locked at script address" $ find hasTransactionId (Map.toUnfoldable utxos :: Array _) let constraints :: TxConstraints constraints = - Constraints.mustSpendScriptOutputUsingScriptRef txInput unitRedeemer - (SpendInput $ mkTxUnspentOut txInput txOutput) + Constraints.mustSpendScriptOutputUsingScriptRef input unitRedeemer + (SpendInput $ TransactionUnspentOutput { input, output }) lookups :: Lookups.ScriptLookups lookups = mempty diff --git a/examples/PlutusV2/Scripts/AlwaysMints.purs b/examples/PlutusV2/Scripts/AlwaysMints.purs index 15b9f072e..f40e74ba6 100644 --- a/examples/PlutusV2/Scripts/AlwaysMints.purs +++ b/examples/PlutusV2/Scripts/AlwaysMints.purs @@ -7,7 +7,7 @@ import Contract.Prelude import Contract.Monad (Contract) import Contract.Scripts (MintingPolicy(PlutusMintingPolicy), PlutusScript) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Control.Monad.Error.Class (liftMaybe) import Effect.Exception (error) @@ -18,7 +18,7 @@ alwaysMintsPolicyScriptV2 :: Contract PlutusScript alwaysMintsPolicyScriptV2 = do liftMaybe (error "Error decoding alwaysMintsV2") do envelope <- decodeTextEnvelope alwaysMintsV2 - plutusScriptV2FromEnvelope envelope + plutusScriptFromEnvelope envelope alwaysMintsV2 :: String alwaysMintsV2 = diff --git a/examples/PlutusV2/Scripts/AlwaysSucceeds.purs b/examples/PlutusV2/Scripts/AlwaysSucceeds.purs index 6fd1387c7..77a11df5d 100644 --- a/examples/PlutusV2/Scripts/AlwaysSucceeds.purs +++ b/examples/PlutusV2/Scripts/AlwaysSucceeds.purs @@ -4,17 +4,17 @@ module Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds import Contract.Prelude +import Cardano.Types (PlutusScript) import Contract.Monad (Contract) -import Contract.Scripts (Validator(Validator)) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Control.Monad.Error.Class (liftMaybe) import Effect.Exception (error) -alwaysSucceedsScriptV2 :: Contract Validator +alwaysSucceedsScriptV2 :: Contract PlutusScript alwaysSucceedsScriptV2 = do liftMaybe (error "Error decoding alwaysSucceeds") do envelope <- decodeTextEnvelope alwaysSucceedsV2 - Validator <$> plutusScriptV2FromEnvelope envelope + plutusScriptFromEnvelope envelope alwaysSucceedsV2 :: String alwaysSucceedsV2 = diff --git a/examples/SatisfiesAnyOf.purs b/examples/SatisfiesAnyOf.purs deleted file mode 100644 index f7862b360..000000000 --- a/examples/SatisfiesAnyOf.purs +++ /dev/null @@ -1,55 +0,0 @@ --- | This module creates an unbalanced transaction --- | with the `mustSatisfyAnyOf` constraint in which --- | the evaluation of the first constraint list throws --- | a catched error and the evaluation of the second list succeeds. -module Ctl.Examples.SatisfiesAnyOf - ( example - , main - , testMustSatisfyAnyOf - ) where - -import Contract.Prelude - -import Contract.Config (ContractParams, testnetNamiConfig) -import Contract.Hashing (datumHash) as Hashing -import Contract.Log (logInfo') -import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData - ( Datum(Datum) - , PlutusData(Integer) - , unitDatum - ) -import Contract.ScriptLookups as Lookups -import Contract.TxConstraints (TxConstraints) -import Contract.TxConstraints as Constraints -import Contract.UnbalancedTx (mkUnbalancedTx) -import JS.BigInt as BigInt - -main :: Effect Unit -main = example testnetNamiConfig - -example :: ContractParams -> Effect Unit -example cfg = launchAff_ do - runContract cfg do - logInfo' "Running Examples.SatisfiesAnyOf" - testMustSatisfyAnyOf - -wrongDatum :: Datum -wrongDatum = Datum $ Integer $ BigInt.fromInt 42 - -testMustSatisfyAnyOf :: Contract Unit -testMustSatisfyAnyOf = do - let - wrongDatumHash = Hashing.datumHash wrongDatum - correctDatumHash = Hashing.datumHash unitDatum - - constraints :: TxConstraints - constraints = Constraints.mustSatisfyAnyOf - [ Constraints.mustHashDatum wrongDatumHash unitDatum - , Constraints.mustHashDatum correctDatumHash unitDatum - ] - - lookups :: Lookups.ScriptLookups - lookups = mempty - - void $ mkUnbalancedTx lookups constraints diff --git a/examples/Schnorr.purs b/examples/Schnorr.purs index b4aa431b4..789449bde 100644 --- a/examples/Schnorr.purs +++ b/examples/Schnorr.purs @@ -2,11 +2,11 @@ module Ctl.Examples.Schnorr (contract) where import Contract.Prelude -import Contract.Address (getNetworkId, validatorHashEnterpriseAddress) +import Cardano.Types (Credential(..)) +import Cardano.Types.Address (Address(..)) +import Contract.Address (getNetworkId) import Contract.Crypto.Secp256k1.Schnorr - ( SchnorrPublicKey - , SchnorrSignature - , deriveSchnorrSecp256k1PublicKey + ( deriveSchnorrSecp256k1PublicKey , signSchnorrSecp256k1 ) import Contract.Crypto.Secp256k1.Utils (randomSecp256k1PrivateKey) @@ -16,14 +16,14 @@ import Contract.Numeric.BigNum as BigNum import Contract.PlutusData ( class ToData , PlutusData(Constr) - , Redeemer(Redeemer) + , RedeemerDatum(RedeemerDatum) , toData , unitDatum ) import Contract.Prim.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe) import Contract.ScriptLookups as Lookups -import Contract.Scripts (Validator(Validator), validatorHash) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptV2FromEnvelope) +import Contract.Scripts (Validator, validatorHash) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash , awaitTxConfirmed @@ -33,7 +33,14 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value import Data.Map as Map +import Data.Newtype (unwrap) import Data.Set as Set +import Noble.Secp256k1.Schnorr + ( SchnorrPublicKey + , SchnorrSignature + , unSchnorrPublicKey + , unSchnorrSignature + ) newtype SchnorrRedeemer = SchnorrRedeemer { msg :: ByteArray @@ -46,7 +53,10 @@ derive instance Newtype SchnorrRedeemer _ instance ToData SchnorrRedeemer where toData (SchnorrRedeemer { msg, sig, pk }) = Constr BigNum.zero - [ toData msg, toData sig, toData pk ] + [ toData $ unwrap msg + , toData $ unSchnorrSignature sig + , toData $ unSchnorrPublicKey pk + ] contract :: Contract Unit contract = do @@ -58,7 +68,7 @@ prepTest = do validator <- liftContractM "Caonnot get validator" getValidator let valHash = validatorHash validator - val = Value.lovelaceValueOf one + val = Value.lovelaceValueOf $ BigNum.one lookups :: Lookups.ScriptLookups lookups = Lookups.validator validator @@ -78,14 +88,15 @@ prepTest = do testVerification :: TransactionHash -> SchnorrRedeemer -> Contract TransactionHash testVerification txId ecdsaRed = do - let red = Redeemer $ toData ecdsaRed + let red = RedeemerDatum $ toData ecdsaRed validator <- liftContractM "Can't get validator" getValidator let valHash = validatorHash validator - netId <- getNetworkId - valAddr <- liftContractM "cannot get validator address" - (validatorHashEnterpriseAddress netId valHash) + networkId <- getNetworkId + let + valAddr = EnterpriseAddress + { networkId, paymentCredential: wrap $ ScriptHashCredential valHash } scriptUtxos <- utxosAt valAddr txIn <- liftContractM "No UTxOs found at validator address" @@ -124,8 +135,7 @@ testSchnorr txId = do getValidator :: Maybe Validator getValidator = do - Validator <$> - (plutusScriptV2FromEnvelope =<< decodeTextEnvelope validateSchnorrScript) + (plutusScriptFromEnvelope =<< decodeTextEnvelope validateSchnorrScript) validateSchnorrScript :: String validateSchnorrScript = diff --git a/examples/SendsToken.purs b/examples/SendsToken.purs index 7993c4e11..2e77eb3eb 100644 --- a/examples/SendsToken.purs +++ b/examples/SendsToken.purs @@ -6,6 +6,10 @@ module Ctl.Examples.SendsToken (main, example, contract) where import Contract.Prelude +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Int as Int +import Cardano.Types.Mint (Mint) +import Cardano.Types.Mint as Mint import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -22,8 +26,8 @@ import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) import Ctl.Examples.Helpers - ( mkCurrencySymbol - , mkTokenName + ( mkAssetName + , mkCurrencySymbol , mustPayToPubKeyStakeAddress ) as Helpers import Data.Array (head) @@ -47,10 +51,10 @@ contract = do mintToken :: Contract TransactionHash mintToken = do - mp /\ value <- tokenValue + mp /\ mint /\ _value <- tokenValue let constraints :: Constraints.TxConstraints - constraints = Constraints.mustMintValue value + constraints = Constraints.mustMintValue mint lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp @@ -61,7 +65,7 @@ sendToken :: Contract TransactionHash sendToken = do pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes skh <- join <<< head <$> ownStakePubKeyHashes - _ /\ value <- tokenValue + _ /\ _mint /\ value <- tokenValue let constraints :: Constraints.TxConstraints constraints = Helpers.mustPayToPubKeyStakeAddress pkh skh value @@ -71,8 +75,9 @@ sendToken = do submitTxFromConstraints lookups constraints -tokenValue :: Contract (MintingPolicy /\ Value) +tokenValue :: Contract (MintingPolicy /\ Mint /\ Value) tokenValue = do mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy - tn <- Helpers.mkTokenName "TheToken" - pure $ mp /\ Value.singleton cs tn one + tn <- Helpers.mkAssetName "TheToken" + pure $ mp /\ Mint.singleton cs tn (Int.fromInt 1) /\ Value.singleton cs tn + (BigNum.fromInt 1) diff --git a/examples/SignData.purs b/examples/SignData.purs index dfa44dee1..5ac619d01 100644 --- a/examples/SignData.purs +++ b/examples/SignData.purs @@ -2,13 +2,14 @@ module Ctl.Examples.SignData (main, example, contract) where import Contract.Prelude +import Cardano.Types (RawBytes) +import Contract.Address (Address) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) -import Contract.Prim.ByteArray (RawBytes, rawBytesFromAscii) import Contract.Wallet (getChangeAddress, getRewardAddresses, signData) -import Ctl.Internal.Serialization.Address (Address) import Data.Array (head) as Array +import Data.ByteArray (byteArrayFromAscii) import Data.Maybe (fromJust) import Partial.Unsafe (unsafePartial) import Test.Ctl.Wallet.Cip30.SignData (checkCip30SignDataResponse) @@ -33,7 +34,7 @@ contract = do testSignDataWithAddress "rewardAddress" rewardAddress where payload :: RawBytes - payload = unsafePartial fromJust $ rawBytesFromAscii "Hello world!" + payload = wrap $ unsafePartial fromJust $ byteArrayFromAscii "Hello world!" testSignDataWithAddress :: String -> Address -> Contract Unit testSignDataWithAddress addressLabel address = do diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index c5eb936e7..2d5ddc3de 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -5,6 +5,7 @@ module Ctl.Examples.SignMultiple (example, contract, main) where import Contract.Prelude +import Cardano.Types (Transaction) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo', logWarn') import Contract.Monad @@ -14,10 +15,10 @@ import Contract.Monad , runContract , throwContractError ) +import Contract.Numeric.BigNum as BigNum import Contract.ScriptLookups as Lookups import Contract.Transaction - ( BalancedSignedTransaction - , TransactionHash + ( TransactionHash , awaitTxConfirmed , awaitTxConfirmedWithTimeout , signTransaction @@ -40,7 +41,6 @@ import Data.Map (Map, filter) import Data.Set (Set) import Data.UInt (UInt) import Effect.Ref as Ref -import JS.BigInt as BigInt getLockedInputs :: Contract (Map TransactionHash (Set UInt)) @@ -67,7 +67,7 @@ contract = do constraints :: Constraints.TxConstraints constraints = Constraints.mustPayToPubKeyAddress pkh skh $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -94,7 +94,7 @@ contract = do where submitAndLog - :: BalancedSignedTransaction + :: Transaction -> Contract TransactionHash submitAndLog bsTx = do txId <- submit bsTx @@ -105,8 +105,8 @@ contract = do hasSufficientUtxos = do let -- 4 Ada: enough to cover 2 Ada transfer and fees - isUtxoValid u = (Value.lovelaceValueOf $ BigInt.fromInt 4_000_000) `leq` - (unwrap (unwrap u).output).amount + isUtxoValid u = (Value.lovelaceValueOf $ BigNum.fromInt 4_000_000) `leq` + (unwrap u).amount walletValidUtxos <- liftedM "Failed to get wallet Utxos" $ map (filter isUtxoValid) @@ -126,11 +126,11 @@ createAdditionalUtxos = do constraints = Constraints.mustPayToPubKeyAddress pkh skh ( Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 ) <> Constraints.mustPayToPubKeyAddress pkh skh ( Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 ) lookups :: Lookups.ScriptLookups diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index 4e82e1fa0..7a4c53a0c 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -10,6 +10,7 @@ module Ctl.Examples.TxChaining import Contract.Prelude +import Cardano.Types.BigNum as BigNum import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder , mustUseAdditionalUtxos @@ -32,7 +33,6 @@ import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes) import Data.Array (head) -import JS.BigInt as BigInt main :: Effect Unit main = example testnetNamiConfig @@ -48,7 +48,7 @@ contract = do constraints :: TxConstraints constraints = Constraints.mustPayToPubKey pkh - (Value.lovelaceValueOf $ BigInt.fromInt 1_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 1_000_000) lookups0 :: Lookups.ScriptLookups lookups0 = mempty diff --git a/examples/Utxos.purs b/examples/Utxos.purs index 8b782c711..8e3272360 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -2,10 +2,11 @@ module Ctl.Examples.Utxos (main, example, contract) where import Contract.Prelude -import Contract.Address - ( PaymentPubKeyHash - , StakePubKeyHash - ) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Int as Int +import Cardano.Types.Mint (Mint(..)) +import Cardano.Types.Mint as Mint +import Contract.Address (PaymentPubKeyHash, StakePubKeyHash) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo, logInfo') import Contract.Monad @@ -15,7 +16,7 @@ import Contract.Monad , liftedM , runContract ) -import Contract.PlutusData (Datum(Datum), PlutusData(Integer)) +import Contract.PlutusData (PlutusData(Integer)) import Contract.ScriptLookups as Lookups import Contract.Scripts (MintingPolicy(PlutusMintingPolicy)) import Contract.Transaction @@ -32,12 +33,13 @@ import Contract.Wallet , ownPaymentPubKeyHash , ownStakePubKeyHash ) -import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) as Helpers +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers import Ctl.Examples.PlutusV2.OneShotMinting (oneShotMintingPolicyScriptV2) import Data.Array (head) as Array import Data.Log.Tag (tag) import Data.Map (toUnfoldable) as Map import JS.BigInt (fromInt) as BigInt +import Partial.Unsafe (unsafePartial) import Test.QuickCheck.Arbitrary (arbitrary) import Test.QuickCheck.Gen (randomSampleOne) @@ -54,8 +56,7 @@ contract = do skh <- ownStakePubKeyHash datum <- liftEffect - $ Datum - <<< Integer + $ Integer <<< BigInt.fromInt <$> randomSampleOne arbitrary @@ -69,23 +70,25 @@ contract = do mp0 /\ cs0 <- Helpers.mkCurrencySymbol (pure $ PlutusMintingPolicy $ oneShotMintingPolicy) - tn0 <- Helpers.mkTokenName "CTLNFT" + tn0 <- Helpers.mkAssetName "CTLNFT" let plutusScriptRef = PlutusScriptRef oneShotMintingPolicy nativeScriptRef <- liftEffect $ NativeScriptRef <$> randomSampleOne arbitrary let adaValue :: Value - adaValue = Value.lovelaceValueOf (BigInt.fromInt 2_000_000) + adaValue = Value.lovelaceValueOf (BigNum.fromInt 2_000_000) + + mintValue :: Mint + mintValue = Mint.singleton cs0 tn0 (Int.fromInt one) - mintValue :: Value - mintValue = Value.singleton cs0 tn0 one + tokenValue = Value.singleton cs0 tn0 BigNum.one constraints :: Constraints.TxConstraints constraints = mconcat [ Constraints.mustMintValue mintValue , mustPayWithDatumAndScriptRef pkh skh datum DatumWitness plutusScriptRef - (mintValue <> adaValue) + (unsafePartial $ tokenValue <> adaValue) , mustPayWithDatumAndScriptRef pkh skh datum DatumInline nativeScriptRef adaValue ] @@ -108,7 +111,7 @@ mustPayWithDatumAndScriptRef :: forall (i :: Type) (o :: Type) . PaymentPubKeyHash -> Maybe StakePubKeyHash - -> Datum + -> PlutusData -> DatumPresence -> ScriptRef -> Value diff --git a/package-lock.json b/package-lock.json index 9c8e969c5..2cc4d7f7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.8", + "@mlabs-haskell/cardano-message-signing": "^1.0.1", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -31,7 +32,7 @@ "devDependencies": { "buffer": "6.0.3", "doctoc": "^2.2.1", - "esbuild": "^0.18.11", + "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", "node-polyfill-webpack-plugin": "2.0.1", @@ -65,9 +66,9 @@ "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -491,20 +492,29 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "node_modules/@mlabs-haskell/cardano-message-signing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-message-signing/-/cardano-message-signing-1.0.1.tgz", + "integrity": "sha512-LNX+Msq1rJ86d5mmaR2Om5tUqB0ZthfE69fpsZcxOYDHNw5s+qtcCyNEmzAWfHC+uIJ4NDEJA8Gk2RfWto7ChA==", + "dependencies": { + "@emurgo/cardano-message-signing-browser": "^1.0.1", + "@emurgo/cardano-message-signing-nodejs": "^1.0.1" + } + }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.8.tgz", - "integrity": "sha512-LTVYL/3ld698sPsrjz30WNUNm3qP20NXFrcwnkTFY5Z7muIgCVkJwJtzuKJ+OJge98m0kM22pZcpY7amQfcTTg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "node_modules/@mlabs-haskell/json-bigint": { "version": "2.0.0", @@ -6388,9 +6398,9 @@ "integrity": "sha512-VWMvLRBFo7MAYh42zledURFs5BpMTWvkP4DzsLNbyJxZlwjDS+bPyehJVyGc116d2gq8NHFmANbfdeuK8ffJ7A==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.4.0.tgz", - "integrity": "sha512-dMiofDcqv+IrAITCgWBZmsMLqwv2xImDsJDSrKiYYG1zRKaL8XfMOxx6S0WEnKVj5/343Q5FFURYcSu3iBRNMQ==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -6607,20 +6617,29 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "@mlabs-haskell/cardano-message-signing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-message-signing/-/cardano-message-signing-1.0.1.tgz", + "integrity": "sha512-LNX+Msq1rJ86d5mmaR2Om5tUqB0ZthfE69fpsZcxOYDHNw5s+qtcCyNEmzAWfHC+uIJ4NDEJA8Gk2RfWto7ChA==", + "requires": { + "@emurgo/cardano-message-signing-browser": "^1.0.1", + "@emurgo/cardano-message-signing-nodejs": "^1.0.1" + } + }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.8.tgz", - "integrity": "sha512-LTVYL/3ld698sPsrjz30WNUNm3qP20NXFrcwnkTFY5Z7muIgCVkJwJtzuKJ+OJge98m0kM22pZcpY7amQfcTTg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", + "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "@mlabs-haskell/json-bigint": { "version": "2.0.0", diff --git a/package.json b/package.json index 7d6486a23..8a81111c5 100755 --- a/package.json +++ b/package.json @@ -34,6 +34,8 @@ "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.8", + "@mlabs-haskell/cardano-message-signing": "^1.0.1", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/packages.dhall b/packages.dhall index 353c569ec..2daa784b4 100644 --- a/packages.dhall +++ b/packages.dhall @@ -193,6 +193,7 @@ let additions = { dependencies = [ "aff" , "aff-promise" + , "bytearrays" , "effect" , "prelude" , "spec" @@ -201,7 +202,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" - , version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd" + , version = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] @@ -279,13 +280,13 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "e3c0891b377fc07d9f11833add2e6ff872ab119c" + , version = "b0a0217b14ea92a9ffe53cb18f3dfa6e7aac5e0e" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema" - , version = "351003d931990949ce3d73f399a179e4a0fa40f1" + , version = "eb0bb78927c50c4bee364e932c9fa8cf94546191" } , plutus-types = { dependencies = @@ -361,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "685b3693471034ad06c63bc6d803708ba40b6c22" + , version = "01a039b5db83373a47d05f84e762ee977cf770db" } , cardano-message-signing = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 1065afc94..e58c51b0d 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -235,11 +235,11 @@ let "cardano-plutus-data-schema" = pkgs.stdenv.mkDerivation { name = "cardano-plutus-data-schema"; - version = "351003d931990949ce3d73f399a179e4a0fa40f1"; + version = "eb0bb78927c50c4bee364e932c9fa8cf94546191"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema"; - rev = "351003d931990949ce3d73f399a179e4a0fa40f1"; - sha256 = "1f6m6a4y4dzib75x1mrqrkl0y9hvm5c5ymall21zqns67ly207l3"; + rev = "eb0bb78927c50c4bee364e932c9fa8cf94546191"; + sha256 = "118i6dlfqk7q0va3bd4vplsv9i6sh83cr51gshas6jjwc5qbriks"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -247,11 +247,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "e3c0891b377fc07d9f11833add2e6ff872ab119c"; + version = "640a429eb0e57c3bfc8de5e3fdafa86491df0e7c"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "e3c0891b377fc07d9f11833add2e6ff872ab119c"; - sha256 = "0c7mj0afqwj1g5qfg0pah6gmr4ky4902ijxgsahp2dcnyhj8hln3"; + rev = "640a429eb0e57c3bfc8de5e3fdafa86491df0e7c"; + sha256 = "17xg5ggnx719ac2iyij5mpzcy4b7vxgx5qvb7515qhz1035lv6nm"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -259,11 +259,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "26311cde53a927c68b5ac84ad008abb164ee14e4"; + version = "147708a1398f2165c5babe083ba8ac7b095b267b"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "26311cde53a927c68b5ac84ad008abb164ee14e4"; - sha256 = "0pmm17pixqi1ricgv42h1fwnvjdbq813kq3caqd7syj854vrvsis"; + rev = "147708a1398f2165c5babe083ba8ac7b095b267b"; + sha256 = "1nmad9jwzwd510zd0cm6y2a6yfrlfkljr7xq1kfg6186lq3cjjs4"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -859,11 +859,11 @@ let "noble-secp256k1" = pkgs.stdenv.mkDerivation { name = "noble-secp256k1"; - version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd"; + version = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git"; - rev = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd"; - sha256 = "0n2q83n210ih5l54p6wrrjqmy40xhhdd3mam5mzixgr2hszm8969"; + rev = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1"; + sha256 = "0hrf7vgf2mh91803l4drygg6srmkg765x4gk6i6zqyr6398fyxw6"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/spago.dhall b/spago.dhall index 5bd82214a..092d26dc1 100644 --- a/spago.dhall +++ b/spago.dhall @@ -99,6 +99,7 @@ You can edit this file as you like. , "typelevel-prelude" , "uint" , "unfoldable" + , "unsafe-coerce" , "untagged-union" , "variant" , "web-html" diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index a779b3cd7..031f34cb0 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -15,7 +15,8 @@ import Cardano.Types , StakeCredential ) import Cardano.Types - ( PaymentPubKeyHash(PaymentPubKeyHash) + ( Ed25519KeyHash + , PaymentPubKeyHash(PaymentPubKeyHash) , StakePubKeyHash(StakePubKeyHash) ) as X import Cardano.Types.Address (Address(..)) as X diff --git a/src/Contract/Crypto/Secp256k1/ECDSA.purs b/src/Contract/Crypto/Secp256k1/ECDSA.purs index a39a10ef3..6c553e259 100644 --- a/src/Contract/Crypto/Secp256k1/ECDSA.purs +++ b/src/Contract/Crypto/Secp256k1/ECDSA.purs @@ -16,7 +16,7 @@ import Prelude import Contract.Crypto.Secp256k1 (Secp256k1PrivateKey) import Data.ByteArray (ByteArray) import Data.Maybe (Maybe) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (unwrap) import Effect.Aff (Aff) import Noble.Secp256k1.ECDSA (ECDSAPublicKey, ECDSASignature, MessageHash) as X import Noble.Secp256k1.ECDSA @@ -57,17 +57,17 @@ deriveEcdsaSecp256k1PublicKey = unwrap >>> flip ECDSA.getECDSAPublicKey true -- | Construct a public key from its byte representation. mkECDSAPublicKey :: ByteArray -> Maybe ECDSAPublicKey -mkECDSAPublicKey = unwrap >>> ECDSA.mkECDSAPublicKey +mkECDSAPublicKey = ECDSA.mkECDSAPublicKey unECDSAPublicKey :: ECDSAPublicKey -> ByteArray -unECDSAPublicKey = ECDSA.unECDSAPublicKey >>> wrap +unECDSAPublicKey = ECDSA.unECDSAPublicKey -- | Construct a message hash from its byte representation. -- | -- | This function **DOES NOT** compute the hash. -- | Use `Contract.Crypto.Utils.hashMessageSha256` for that. mkMessageHash :: ByteArray -> Maybe MessageHash -mkMessageHash = unwrap >>> ECDSA.mkMessageHash +mkMessageHash = ECDSA.mkMessageHash unMessageHash :: MessageHash -> ByteArray -unMessageHash = wrap <<< ECDSA.unMessageHash +unMessageHash = ECDSA.unMessageHash diff --git a/src/Contract/Crypto/Secp256k1/Schnorr.purs b/src/Contract/Crypto/Secp256k1/Schnorr.purs index 8df3865dc..e567fb659 100644 --- a/src/Contract/Crypto/Secp256k1/Schnorr.purs +++ b/src/Contract/Crypto/Secp256k1/Schnorr.purs @@ -14,7 +14,7 @@ import Prelude import Contract.Crypto.Secp256k1 (Secp256k1PrivateKey) import Data.ByteArray (ByteArray) import Data.Maybe (Maybe) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (unwrap) import Effect.Aff (Aff) import Noble.Secp256k1.Schnorr (SchnorrPublicKey, SchnorrSignature) as X import Noble.Secp256k1.Schnorr @@ -33,12 +33,12 @@ import Noble.Secp256k1.Schnorr (mkSchnorrPublicKey, unSchnorrPublicKey) as ECDSA verifySchnorrSecp256k1Signature :: SchnorrPublicKey -> ByteArray -> SchnorrSignature -> Aff Boolean verifySchnorrSecp256k1Signature publicKey message signature = - verifySchnorr signature (unwrap message) publicKey + verifySchnorr signature message publicKey -- | Sign a message using Schnorr signature scheme. signSchnorrSecp256k1 :: Secp256k1PrivateKey -> ByteArray -> Aff SchnorrSignature signSchnorrSecp256k1 privateKey message = - signSchnorr (unwrap message) (unwrap privateKey) + signSchnorr message (unwrap privateKey) deriveSchnorrSecp256k1PublicKey :: Secp256k1PrivateKey -> SchnorrPublicKey deriveSchnorrSecp256k1PublicKey = unwrap >>> getSchnorrPublicKey @@ -46,7 +46,7 @@ deriveSchnorrSecp256k1PublicKey = unwrap >>> getSchnorrPublicKey -- | Construct a public key from its byte representation. mkSchnorrPublicKey :: ByteArray -> Maybe SchnorrPublicKey -mkSchnorrPublicKey = unwrap >>> ECDSA.mkSchnorrPublicKey +mkSchnorrPublicKey = ECDSA.mkSchnorrPublicKey unSchnorrPublicKey :: SchnorrPublicKey -> ByteArray -unSchnorrPublicKey = wrap <<< ECDSA.unSchnorrPublicKey +unSchnorrPublicKey = ECDSA.unSchnorrPublicKey diff --git a/src/Contract/Crypto/Secp256k1/Utils.purs b/src/Contract/Crypto/Secp256k1/Utils.purs index e67550636..dc81204eb 100644 --- a/src/Contract/Crypto/Secp256k1/Utils.purs +++ b/src/Contract/Crypto/Secp256k1/Utils.purs @@ -25,7 +25,7 @@ randomSecp256k1PrivateKey = wrap <$> Utils.randomPrivateKey -- | Hash a byte array using sha256, for use with `signEcdsaSecp256k1` -- | and `verifyEcdsaSecp256k1Signature`. hashMessageSha256 :: ByteArray -> Aff MessageHash -hashMessageSha256 = unwrap >>> sha256 +hashMessageSha256 = sha256 -- | Deterministically derive a private key given an array of bytes. -- | Array size must be between 40 and 1024 bytes. @@ -38,7 +38,7 @@ deriveSecp256k1PrivateKey = unwrap >>> hashToPrivateKey >>> map wrap -- | Attempt to convert a byte array containing a byte-representation of a -- | private key to a private key. Invalid values will be rejected. mkSecp256k1PrivateKey :: ByteArray -> Maybe Secp256k1PrivateKey -mkSecp256k1PrivateKey = unwrap >>> ECDSA.mkPrivateKey >>> map wrap +mkSecp256k1PrivateKey = ECDSA.mkPrivateKey >>> map wrap unSecp256k1PrivateKey :: Secp256k1PrivateKey -> ByteArray -unSecp256k1PrivateKey = wrap <<< ECDSA.unPrivateKey <<< unwrap +unSecp256k1PrivateKey = ECDSA.unPrivateKey <<< unwrap diff --git a/src/Contract/Hashing.purs b/src/Contract/Hashing.purs index 64c93e7fe..bab5ee7af 100644 --- a/src/Contract/Hashing.purs +++ b/src/Contract/Hashing.purs @@ -1,10 +1,26 @@ module Contract.Hashing where -import Cardano.Types (DataHash, Ed25519KeyHash, PlutusData, PublicKey) +import Cardano.Types + ( DataHash + , Ed25519KeyHash + , NativeScript + , PlutusData + , PublicKey + ) import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.NativeScript as NativeScript +import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.PublicKey as PublicKey +import Cardano.Types.ScriptHash (ScriptHash) +import Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef, NativeScriptRef)) import Prim.TypeError (class Warn, Text) +nativeScriptHash + :: Warn (Text "deprecated: publicKeyHash. use Cardano.Types.PublicKey.hash") + => NativeScript + -> ScriptHash +nativeScriptHash = NativeScript.hash + publicKeyHash :: Warn (Text "deprecated: publicKeyHash. use Cardano.Types.PublicKey.hash") => PublicKey @@ -17,3 +33,7 @@ datumHash => PlutusData -> DataHash datumHash = hashPlutusData + +scriptRefHash :: ScriptRef -> ScriptHash +scriptRefHash (PlutusScriptRef ps) = PlutusScript.hash ps +scriptRefHash (NativeScriptRef ns) = NativeScript.hash ns diff --git a/src/Contract/Numeric/BigNum.purs b/src/Contract/Numeric/BigNum.purs index 2f219318c..a3836a9e9 100644 --- a/src/Contract/Numeric/BigNum.purs +++ b/src/Contract/Numeric/BigNum.purs @@ -1,14 +1,23 @@ module Contract.Numeric.BigNum (module X) where import Cardano.Types.BigNum - ( BigNum + ( BigNum(BigNum) + , abs , add + , divFloor , fromBigInt , fromInt , fromString + , fromStringUnsafe , fromUInt + , max , maxValue , mul , one + , sub + , toBigInt + , toInt + , toString + , toUInt , zero ) as X diff --git a/src/Contract/Prim/ByteArray.purs b/src/Contract/Prim/ByteArray.purs index 37a011b56..4301db35d 100644 --- a/src/Contract/Prim/ByteArray.purs +++ b/src/Contract/Prim/ByteArray.purs @@ -3,14 +3,23 @@ module Contract.Prim.ByteArray ( module ByteArray , module CborBytes , module RawBytes + , rawBytesToByteArray + , rawBytesFromByteArray + , rawBytesToIntArray + , rawBytesFromIntArray + , rawBytesFromIntArrayUnsafe + , rawBytesFromAscii + , rawBytesToHex + , hexToRawBytes + , hexToRawBytesUnsafe ) where -import Cardano.Types.CborBytes - ( CborBytes(CborBytes) - ) as CborBytes -import Cardano.Types.RawBytes - ( RawBytes(RawBytes) - ) as RawBytes +import Prelude + +import Cardano.Types.CborBytes (CborBytes(CborBytes)) as CborBytes +import Cardano.Types.RawBytes (RawBytes) +import Cardano.Types.RawBytes (RawBytes(RawBytes)) as RawBytes +import Data.ByteArray (ByteArray) import Data.ByteArray ( ByteArray(ByteArray) , byteArrayFromAscii @@ -22,3 +31,33 @@ import Data.ByteArray , hexToByteArray , hexToByteArrayUnsafe ) as ByteArray +import Data.ByteArray as BytesArray +import Data.Maybe (Maybe) +import Data.Newtype (unwrap, wrap) + +rawBytesToIntArray :: RawBytes -> Array Int +rawBytesToIntArray = BytesArray.byteArrayToIntArray <<< unwrap + +rawBytesFromIntArray :: Array Int -> Maybe RawBytes +rawBytesFromIntArray = map wrap <<< BytesArray.byteArrayFromIntArray + +rawBytesFromIntArrayUnsafe :: Array Int -> RawBytes +rawBytesFromIntArrayUnsafe = wrap <<< BytesArray.byteArrayFromIntArrayUnsafe + +rawBytesToHex :: RawBytes -> String +rawBytesToHex = BytesArray.byteArrayToHex <<< unwrap + +hexToRawBytes :: String -> Maybe RawBytes +hexToRawBytes = map wrap <<< BytesArray.hexToByteArray + +hexToRawBytesUnsafe :: String -> RawBytes +hexToRawBytesUnsafe = wrap <<< BytesArray.hexToByteArrayUnsafe + +rawBytesToByteArray :: RawBytes -> ByteArray +rawBytesToByteArray = unwrap + +rawBytesFromByteArray :: ByteArray -> RawBytes +rawBytesFromByteArray = wrap + +rawBytesFromAscii :: String -> Maybe RawBytes +rawBytesFromAscii = map wrap <<< BytesArray.byteArrayFromAscii diff --git a/src/Contract/RewardAddress.purs b/src/Contract/RewardAddress.purs deleted file mode 100644 index 1598e6038..000000000 --- a/src/Contract/RewardAddress.purs +++ /dev/null @@ -1,3 +0,0 @@ -module Contract.RewardAddress (module X) where - -import Cardano.Types.RewardAddress as X diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index 589bb61c9..ce5c1bec1 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -12,20 +12,33 @@ module Contract.Scripts import Prelude -import Cardano.Types (PlutusScript(PlutusScript)) as X +import Cardano.Types + ( PlutusScript(PlutusScript) + , ScriptHash + ) as X import Cardano.Types (ScriptHash) +import Cardano.Types.NativeScript + ( NativeScript + ( ScriptPubkey + , ScriptAll + , ScriptAny + , ScriptNOfK + , TimelockStart + , TimelockExpiry + ) + ) as X import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.ScriptRef (ScriptRef) import Contract.Monad (Contract) -import Control.Parallel (parTraverse) -import Ctl.Internal.ApplyArgs (applyArgs) as X -import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.Service.Error (ClientError) import Contract.Types ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) , hash ) as X +import Control.Parallel (parTraverse) +import Ctl.Internal.ApplyArgs (applyArgs) as X +import Ctl.Internal.Contract.Monad (getQueryHandle) +import Ctl.Internal.Service.Error (ClientError) import Data.Either (Either) import Data.Map (Map) import Data.Map as Map diff --git a/src/Contract/Staking.purs b/src/Contract/Staking.purs index 4e1517c9d..c13f9e803 100644 --- a/src/Contract/Staking.purs +++ b/src/Contract/Staking.purs @@ -7,16 +7,15 @@ module Contract.Staking import Prelude -import Cardano.Types (PoolPubKeyHash, StakePubKeyHash) +import Cardano.Types (Ed25519KeyHash, PoolPubKeyHash, ScriptHash) import Contract.Monad (Contract) import Control.Monad.Reader (asks) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) as X -import Ctl.Internal.Types.StakeValidatorHash (StakeValidatorHash) import Data.Either (either) import Data.Maybe (Maybe) -import Data.Newtype (unwrap) +import Data.Newtype (wrap) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (throw) @@ -29,22 +28,23 @@ getPoolIds = do >>= either (liftEffect <<< throw <<< show) pure getPubKeyHashDelegationsAndRewards - :: StakePubKeyHash + :: Ed25519KeyHash -> Contract (Maybe DelegationsAndRewards) getPubKeyHashDelegationsAndRewards stakePubKeyHash = do queryHandle <- getQueryHandle networkId <- asks _.networkId liftAff do - queryHandle.getPubKeyHashDelegationsAndRewards networkId stakePubKeyHash + queryHandle.getPubKeyHashDelegationsAndRewards networkId + (wrap stakePubKeyHash) >>= either (liftEffect <<< throw <<< show) pure getValidatorHashDelegationsAndRewards - :: StakeValidatorHash + :: ScriptHash -> Contract (Maybe DelegationsAndRewards) getValidatorHashDelegationsAndRewards stakeValidatorHash = do queryHandle <- getQueryHandle networkId <- asks _.networkId liftAff do queryHandle.getValidatorHashDelegationsAndRewards networkId - (unwrap stakeValidatorHash) + stakeValidatorHash >>= either (liftEffect <<< throw <<< show) pure diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index 8a5d4b5ad..d0931f9ec 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -10,11 +10,13 @@ module Contract.Time , module ExportOgmios , module ExportSystemStart , module Interval + , module X ) where import Prelude -import Cardano.Types (BigNum(..), Epoch(..), Slot) +import Cardano.Types (BigNum, Epoch(Epoch), Slot) +import Cardano.Types (Slot(Slot)) as X import Cardano.Types.BigNum as BigNum import Contract.Chain (getTip) as Chain import Contract.Log (logInfo') diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 07fb3b4cd..124800cbf 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -1,8 +1,7 @@ -- | A module that defines the different transaction data types, balancing -- | functionality, transaction fees, signing and submission. module Contract.Transaction - ( BalancedSignedTransaction(BalancedSignedTransaction) - , balanceTx + ( balanceTx , balanceTxE , balanceTxWithConstraints , balanceTxWithConstraintsE @@ -11,9 +10,7 @@ module Contract.Transaction , createAdditionalUtxos , getTxMetadata , module BalanceTxError - , module FinalizedTransaction , module X - , signTransaction , submit , submitE , submitTxFromConstraints @@ -23,16 +20,18 @@ module Contract.Transaction , withBalancedTxs , withBalancedTxsWithConstraints , lookupTxHash - , getTxFinalFee , scriptRefFromMintingPolicy + , mkPoolPubKeyHash + , hashTransaction ) where import Prelude -import Aeson (class EncodeAeson) import Cardano.Types - ( Coin + ( Bech32String + , Coin , GeneralTransactionMetadata + , PoolPubKeyHash(..) , Transaction(Transaction) , TransactionHash , TransactionInput(TransactionInput) @@ -41,15 +40,31 @@ import Cardano.Types , UtxoMap ) import Cardano.Types - ( TransactionHash(TransactionHash) + ( DataHash(DataHash) + , Epoch(Epoch) + , NativeScript + ( ScriptPubkey + , ScriptAll + , ScriptAny + , ScriptNOfK + , TimelockStart + , TimelockExpiry + ) + , TransactionHash(TransactionHash) , TransactionInput(TransactionInput) , TransactionOutput(TransactionOutput) , TransactionUnspentOutput(TransactionUnspentOutput) ) as X +import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash +import Cardano.Types.OutputDatum (OutputDatum(OutputDatum, OutputDatumHash)) as X import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash(PoolPubKeyHash)) as X import Cardano.Types.ScriptRef (ScriptRef) -import Cardano.Types.Transaction as Hashing +import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) as X +import Cardano.Types.Transaction (Transaction(Transaction), empty) as X +import Cardano.Types.Transaction as Transaction import Contract.Monad (Contract, runContractInEnv) +import Contract.Types (MintingPolicy) +import Contract.Types as MintingPolicy import Contract.UnbalancedTx (mkUnbalancedTx) import Control.Monad.Error.Class (catchError, liftEither, throwError) import Control.Monad.Reader (ReaderT, asks, runReaderT) @@ -75,10 +90,6 @@ import Ctl.Internal.BalanceTx.Error , Expected(Expected) , explainBalanceTxError ) as BalanceTxError -import Ctl.Internal.BalanceTx.Types (FinalizedTransaction) -import Ctl.Internal.BalanceTx.Types - ( FinalizedTransaction(FinalizedTransaction) - ) as FinalizedTransaction import Ctl.Internal.BalanceTx.UnattachedTx (UnindexedTx) import Ctl.Internal.Contract.AwaitTxConfirmed ( awaitTxConfirmed @@ -96,7 +107,8 @@ import Ctl.Internal.Contract.QueryHandle.Error , GetTxMetadataClientError ) ) as X -import Ctl.Internal.Contract.Sign (signTransaction) as Contract +import Ctl.Internal.Contract.Sign (signTransaction) +import Ctl.Internal.Contract.Sign (signTransaction) as X import Ctl.Internal.Lens ( _amount , _auxiliaryData @@ -129,8 +141,6 @@ import Ctl.Internal.Lens import Ctl.Internal.Lens (_body, _fee, _outputs) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) import Ctl.Internal.Service.Error (ClientError) -import Contract.Types (MintingPolicy) -import Contract.Types as MintingPolicy import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.TxConstraints (TxConstraints) import Ctl.Internal.Types.UsedTxOuts @@ -143,12 +153,12 @@ import Data.Array.NonEmpty as NonEmptyArray import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right)) import Data.Foldable (foldl, length) -import Data.Generic.Rep (class Generic) import Data.Lens.Getter (view) import Data.Map (Map) import Data.Map (empty, insert, toUnfoldable) as Map -import Data.Newtype (class Newtype, unwrap) -import Data.Show.Generic (genericShow) +import Data.Maybe (Maybe(Nothing)) +import Data.Newtype (unwrap) +import Data.String.Utils (startsWith) import Data.Traversable (class Traversable, for_, traverse) import Data.Tuple (Tuple(Tuple), fst) import Data.Tuple.Nested (type (/\), (/\)) @@ -158,40 +168,36 @@ import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (try) import Prim.Coerce (class Coercible) +import Prim.TypeError (class Warn, Text) import Safe.Coerce (coerce) --- | Signs a transaction with potential failure. -signTransaction - :: forall (tx :: Type) - . Coercible tx Transaction - => tx - -> Contract BalancedSignedTransaction -signTransaction = - map BalancedSignedTransaction - <<< Contract.signTransaction - <<< coerce +hashTransaction + :: Warn (Text "Deprecated: Validator. Use Cardano.Types.PlutusData.hash") + => Transaction + -> TransactionHash +hashTransaction = Transaction.hash --- | Submits a `BalancedSignedTransaction`, which is the output of +-- | Submits a `Transaction`, which is the output of -- | `signTransaction`. submit - :: BalancedSignedTransaction + :: Transaction -> Contract TransactionHash submit tx = do eiTxHash <- submitE tx liftEither $ flip lmap eiTxHash \err -> error $ "Failed to submit tx:\n" <> show err --- | Submits a `BalancedSignedTransaction`, which is the output of +-- | Submits a `Transaction` that normally should be retreived from -- | `signTransaction`. Preserves the errors returned by the backend in -- | the case they need to be inspected. submitE - :: BalancedSignedTransaction + :: Transaction -> Contract (Either ClientError TransactionHash) submitE tx = do queryHandle <- getQueryHandle - eiTxHash <- liftAff $ queryHandle.submitTx $ unwrap tx + eiTxHash <- liftAff $ queryHandle.submitTx tx void $ asks (_.hooks >>> _.onSubmit) >>= - traverse \hook -> liftEffect $ void $ try $ hook $ unwrap tx + traverse \hook -> liftEffect $ void $ try $ hook tx pure eiTxHash -- | Helper to adapt to UsedTxOuts. @@ -247,19 +253,19 @@ withSingleTransaction prepare extract utx action = withBalancedTxsWithConstraints :: forall (a :: Type) . Array (UnbalancedTx /\ BalanceTxConstraintsBuilder) - -> (Array FinalizedTransaction -> Contract a) + -> (Array Transaction -> Contract a) -> Contract a withBalancedTxsWithConstraints = - withTransactions balanceTxsWithConstraints unwrap + withTransactions balanceTxsWithConstraints identity -- | Same as `withBalancedTxsWithConstraints`, but uses the default balancer -- | constraints. withBalancedTxs :: forall (a :: Type) . Array UnbalancedTx - -> (Array FinalizedTransaction -> Contract a) + -> (Array Transaction -> Contract a) -> Contract a -withBalancedTxs = withTransactions balanceTxs unwrap +withBalancedTxs = withTransactions balanceTxs identity -- | Execute an action on a balanced transaction (`balanceTx` will -- | be called). Within this function, all transaction inputs @@ -271,10 +277,10 @@ withBalancedTxWithConstraints :: forall (a :: Type) . UnbalancedTx -> BalanceTxConstraintsBuilder - -> (FinalizedTransaction -> Contract a) + -> (Transaction -> Contract a) -> Contract a withBalancedTxWithConstraints unbalancedTx = - withSingleTransaction balanceAndLockWithConstraints unwrap + withSingleTransaction balanceAndLockWithConstraints identity <<< Tuple unbalancedTx -- | Same as `withBalancedTxWithConstraints`, but uses the default balancer @@ -282,9 +288,9 @@ withBalancedTxWithConstraints unbalancedTx = withBalancedTx :: forall (a :: Type) . UnbalancedTx - -> (FinalizedTransaction -> Contract a) + -> (Transaction -> Contract a) -> Contract a -withBalancedTx = withSingleTransaction balanceAndLock unwrap +withBalancedTx = withSingleTransaction balanceAndLock identity unUnbalancedTx :: UnbalancedTx -> UnindexedTx /\ Map TransactionInput TransactionOutput @@ -305,7 +311,7 @@ unUnbalancedTx balanceTxWithConstraintsE :: UnbalancedTx -> BalanceTxConstraintsBuilder - -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) + -> Contract (Either BalanceTxError.BalanceTxError Transaction) balanceTxWithConstraintsE tx = let tx' /\ ix = unUnbalancedTx tx @@ -319,7 +325,7 @@ balanceTxWithConstraintsE tx = balanceTxWithConstraints :: UnbalancedTx -> BalanceTxConstraintsBuilder - -> Contract FinalizedTransaction + -> Contract Transaction balanceTxWithConstraints tx bcb = do result <- balanceTxWithConstraintsE tx bcb case result of @@ -331,13 +337,13 @@ balanceTxWithConstraints tx bcb = do -- | `balanceTx` is a throwing variant. balanceTxE :: UnbalancedTx - -> Contract (Either BalanceTxError.BalanceTxError FinalizedTransaction) + -> Contract (Either BalanceTxError.BalanceTxError Transaction) balanceTxE = flip balanceTxWithConstraintsE mempty -- | Balance a transaction without providing balancer constraints. -- | -- | `balanceTxE` is a non-throwing version of this function. -balanceTx :: UnbalancedTx -> Contract FinalizedTransaction +balanceTx :: UnbalancedTx -> Contract Transaction balanceTx utx = do result <- balanceTxE utx case result of @@ -351,7 +357,7 @@ balanceTxsWithConstraints :: forall (t :: Type -> Type) . Traversable t => t (UnbalancedTx /\ BalanceTxConstraintsBuilder) - -> Contract (t FinalizedTransaction) + -> Contract (t Transaction) balanceTxsWithConstraints unbalancedTxs = unlockAllOnError $ traverse balanceAndLockWithConstraints unbalancedTxs where @@ -370,33 +376,22 @@ balanceTxs :: forall (t :: Type -> Type) . Traversable t => t UnbalancedTx - -> Contract (t FinalizedTransaction) + -> Contract (t Transaction) balanceTxs = balanceTxsWithConstraints <<< map (flip Tuple mempty) balanceAndLockWithConstraints :: UnbalancedTx /\ BalanceTxConstraintsBuilder - -> Contract FinalizedTransaction + -> Contract Transaction balanceAndLockWithConstraints (unbalancedTx /\ constraints) = do balancedTx <- balanceTxWithConstraints unbalancedTx constraints - void $ withUsedTxOuts $ - lockTransactionInputs (unwrap balancedTx) + void $ withUsedTxOuts $ lockTransactionInputs balancedTx pure balancedTx balanceAndLock :: UnbalancedTx - -> Contract FinalizedTransaction + -> Contract Transaction balanceAndLock = balanceAndLockWithConstraints <<< flip Tuple mempty -newtype BalancedSignedTransaction = BalancedSignedTransaction Transaction - -derive instance Generic BalancedSignedTransaction _ -derive instance Newtype BalancedSignedTransaction _ -derive newtype instance Eq BalancedSignedTransaction -derive newtype instance EncodeAeson BalancedSignedTransaction - -instance Show BalancedSignedTransaction where - show = genericShow - -- | Fetch transaction metadata. -- | Returns `Right` when the transaction exists and metadata was non-empty getTxMetadata @@ -417,7 +412,7 @@ createAdditionalUtxos => tx -> Contract UtxoMap createAdditionalUtxos tx = do - let transactionId = Hashing.hashTransaction $ coerce tx + let transactionId = Transaction.hash $ coerce tx let txOutputs :: Array TransactionOutput txOutputs = view (_body <<< _outputs) $ coerce tx @@ -437,7 +432,7 @@ submitTxFromConstraintsReturningFee lookups constraints = do balancedTx <- balanceTx unbalancedTx balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx - pure { txHash, txFinalFee: getTxFinalFee balancedSignedTx } + pure { txHash, txFinalFee: view (_body <<< _fee) balancedSignedTx } submitTxFromConstraints :: ScriptLookups @@ -453,9 +448,11 @@ lookupTxHash txHash utxos = $ Array.filter (fst >>> unwrap >>> _.transactionId >>> eq txHash) $ Map.toUnfoldable utxos -getTxFinalFee :: BalancedSignedTransaction -> Coin -getTxFinalFee = - view (_body <<< _fee) <<< unwrap - scriptRefFromMintingPolicy :: MintingPolicy -> ScriptRef scriptRefFromMintingPolicy = MintingPolicy.toScriptRef + +mkPoolPubKeyHash :: Bech32String -> Maybe PoolPubKeyHash +mkPoolPubKeyHash str + | startsWith "pool" str = PoolPubKeyHash <$> + Ed25519KeyHash.fromBech32 str + | otherwise = Nothing diff --git a/src/Contract/Types.purs b/src/Contract/Types.purs index c5f11e829..77d161dd8 100644 --- a/src/Contract/Types.purs +++ b/src/Contract/Types.purs @@ -4,4 +4,4 @@ import Contract.Types.MintingPolicy ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) , hash , toScriptRef - ) as X + ) as X diff --git a/src/Contract/Utxos.purs b/src/Contract/Utxos.purs index 65bd16800..958f7ee57 100644 --- a/src/Contract/Utxos.purs +++ b/src/Contract/Utxos.purs @@ -4,11 +4,13 @@ module Contract.Utxos ( getUtxo , utxosAt + , module X ) where import Prelude import Cardano.Types (Address, TransactionOutput, UtxoMap) +import Cardano.Types (UtxoMap) as X import Cardano.Types.TransactionInput (TransactionInput) import Contract.Log (logWarn') import Contract.Monad (Contract, liftedE) diff --git a/src/Contract/Value.purs b/src/Contract/Value.purs index 546e6d499..0f04cc104 100644 --- a/src/Contract/Value.purs +++ b/src/Contract/Value.purs @@ -6,6 +6,7 @@ module Contract.Value import Cardano.Types (AssetName, ScriptHash) import Cardano.Types.AssetName (AssetName(AssetName)) as X +import Cardano.Types.Coin (Coin(Coin)) as X import Cardano.Types.ScriptHash (ScriptHash(ScriptHash)) as X import Cardano.Types.Value ( Value(Value) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 7f282cb67..0a1d87958 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -74,7 +74,6 @@ import Ctl.Internal.BalanceTx.RedeemerIndex import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncBackendWithWallet) import Ctl.Internal.BalanceTx.Types ( BalanceTxM - , FinalizedTransaction , askCoinsPerUtxoUnit , askNetworkId , asksConstraints @@ -164,7 +163,7 @@ balanceTxWithConstraints :: UnindexedTx -> Map TransactionInput TransactionOutput -> BalanceTxConstraintsBuilder - -> Contract (Either BalanceTxError FinalizedTransaction) + -> Contract (Either BalanceTxError Transaction) balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do pparams <- getProtocolParameters @@ -323,7 +322,7 @@ data BalancerStep = PrebalanceTx (BalancerState UnindexedTx) | BalanceChangeAndMinFee (BalancerState UnindexedTx) -runBalancer :: BalancerParams -> BalanceTxM FinalizedTransaction +runBalancer :: BalancerParams -> BalanceTxM Transaction runBalancer p = do utxos <- partitionAndFilterUtxos transaction <- addLovelacesToTransactionOutputs p.transaction @@ -389,10 +388,10 @@ runBalancer p = do } (Map.toUnfoldable p.utxos :: Array _) - mainLoop :: BalancerState UnindexedTx -> BalanceTxM FinalizedTransaction + mainLoop :: BalancerState UnindexedTx -> BalanceTxM Transaction mainLoop = worker <<< PrebalanceTx where - worker :: BalancerStep -> BalanceTxM FinalizedTransaction + worker :: BalancerStep -> BalanceTxM Transaction worker (PrebalanceTx state) = do logBalancerState "Pre-balancing (Stage 1)" p.allUtxos state prebalanceTx state >>= runNextBalancerStep @@ -433,7 +432,7 @@ runBalancer p = do -- | after generation of change, the first balancing step `PrebalanceTx` -- | is performed, otherwise we proceed to `BalanceChangeAndMinFee`. runNextBalancerStep - :: BalancerState UnindexedTx -> BalanceTxM FinalizedTransaction + :: BalancerState UnindexedTx -> BalanceTxM Transaction runNextBalancerStep state@{ transaction } = do let txBody = transaction ^. _transaction <<< _body inputValue <- except $ getInputVal p.allUtxos txBody diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index 92b56b1ac..ebfe61123 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -34,7 +34,6 @@ import Ctl.Internal.BalanceTx.RedeemerIndex ) import Ctl.Internal.BalanceTx.Types ( BalanceTxM - , FinalizedTransaction(FinalizedTransaction) , askCostModelsForLanguages , asksConstraints , liftContract @@ -129,7 +128,7 @@ evalExUnitsAndMinFee unattachedTx allUtxos = do _ -> throwError $ ExUnitsEvaluationFailed attachedTx (UnparsedError "Unable to extract ExUnits from Ogmios response") -- Attach datums and redeemers, set the script integrity hash: - FinalizedTransaction finalizedTx <- finalizeTransaction txWithExUnits allUtxos + finalizedTx <- finalizeTransaction txWithExUnits allUtxos -- Calculate the minimum fee for a transaction: additionalUtxos <- asksConstraints Constraints._additionalUtxos collateralUtxos <- fromMaybe Map.empty @@ -141,7 +140,7 @@ evalExUnitsAndMinFee unattachedTx allUtxos = do -- | Attaches datums and redeemers, sets the script integrity hash, -- | for use after reindexing. finalizeTransaction - :: EvaluatedTx -> UtxoMap -> BalanceTxM FinalizedTransaction + :: EvaluatedTx -> UtxoMap -> BalanceTxM Transaction finalizeTransaction tx utxos = do let attachedTxWithExUnits :: Transaction @@ -171,8 +170,8 @@ finalizeTransaction tx utxos = do (costModels :: Map Language CostModel) <- askCostModelsForLanguages languages - liftEffect $ FinalizedTransaction <$> - setScriptDataHash costModels redeemers datums attachedTxWithExUnits + liftEffect $ setScriptDataHash costModels redeemers datums + attachedTxWithExUnits where getRefPlutusScripts :: TransactionBody -> Either BalanceTxError (Array PlutusScript) diff --git a/src/Internal/BalanceTx/Types.purs b/src/Internal/BalanceTx/Types.purs index 79c8a21c7..b73734ede 100644 --- a/src/Internal/BalanceTx/Types.purs +++ b/src/Internal/BalanceTx/Types.purs @@ -1,7 +1,6 @@ module Ctl.Internal.BalanceTx.Types ( BalanceTxM , BalanceTxMContext - , FinalizedTransaction(FinalizedTransaction) , askCoinsPerUtxoUnit , askCostModelsForLanguages , askNetworkId @@ -13,7 +12,7 @@ module Ctl.Internal.BalanceTx.Types import Prelude -import Cardano.Types (Coin, CostModel, Language, NetworkId, Transaction) +import Cardano.Types (Coin, CostModel, Language, NetworkId) import Cardano.Types.Address as Csl import Control.Monad.Except.Trans (ExceptT(ExceptT)) import Control.Monad.Reader.Class (asks) @@ -28,15 +27,13 @@ import Ctl.Internal.BalanceTx.Error (BalanceTxError) import Ctl.Internal.Contract.Monad (Contract, ContractEnv) import Ctl.Internal.Contract.Wallet (getWalletAddresses) import Data.Either (Either) -import Data.Generic.Rep (class Generic) import Data.Lens (Lens') import Data.Lens.Getter (view) import Data.Map (Map) import Data.Map (filterKeys) as Map -import Data.Newtype (class Newtype, unwrap) +import Data.Newtype (unwrap) import Data.Set (Set) import Data.Set (fromFoldable, member) as Set -import Data.Show.Generic (genericShow) type BalanceTxMContext = { constraints :: BalanceTxConstraints, ownAddresses :: Set Csl.Address } @@ -84,12 +81,3 @@ askCostModelsForLanguages :: Set Language -> BalanceTxM (Map Language CostModel) askCostModelsForLanguages languages = asksContractEnv (_.costModels <<< unwrap <<< _.pparams <<< _.ledgerConstants) <#> Map.filterKeys (flip Set.member languages) - -newtype FinalizedTransaction = FinalizedTransaction Transaction - -derive instance Generic FinalizedTransaction _ -derive instance Newtype FinalizedTransaction _ -derive newtype instance Eq FinalizedTransaction - -instance Show FinalizedTransaction where - show = genericShow diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index e88eca347..3d9e665b9 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -7,7 +7,7 @@ module Ctl.Internal.Contract.QueryHandle import Prelude import Cardano.AsCbor (encodeCbor) -import Cardano.Types.Transaction (hashTransaction) +import Cardano.Types.Transaction (hash) as Transaction import Contract.Log (logDebug') import Control.Monad.Error.Class (throwError) import Ctl.Internal.Contract.LogParams (LogParams) @@ -62,7 +62,7 @@ queryHandleForCtlBackend runQueryM params backend = , getChainTip: Right <$> runQueryM' QueryM.getChainTip , getCurrentEpoch: runQueryM' QueryM.getCurrentEpoch , submitTx: \tx -> runQueryM' do - let txHash = hashTransaction tx + let txHash = Transaction.hash tx logDebug' $ "Pre-calculated tx hash: " <> show txHash let txCborBytes = encodeCbor tx result <- QueryM.submitTxOgmios txHash txCborBytes diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index b53cae15c..6d269fc69 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -20,6 +20,7 @@ import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (try) +-- | Signs a transaction with potential failure. signTransaction :: Transaction -> Contract Transaction signTransaction tx = do diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index b3ceac72c..cbfcecd0f 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -27,7 +27,6 @@ module Ctl.Internal.Helpers , logWithLevel , maybeArrayMerge , mkErrorRecord - , notImplemented , showWithParens , uIntToBigInt , pprintTagSet @@ -231,9 +230,6 @@ uIntToBigInt = unsafePartial fromJust <<< BigInt.fromString <<< UInt.toString bigIntToUInt :: BigInt -> Maybe UInt bigIntToUInt = UInt.fromString <<< BigInt.toString -notImplemented :: forall a. Warn (Text "Function not implemented!") => a -notImplemented = undefined - -- | Log a message by printing it to the console, depending on the provided -- | `LogLevel` logWithLevel diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index e4c53de40..669ce748b 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -82,7 +82,7 @@ import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) import Data.Array as Array import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either, isLeft) -import Data.Foldable (sum) +import Data.Foldable (fold) import Data.HTTP.Method as Method import Data.Log.Level (LogLevel) import Data.Log.Message (Message) @@ -109,13 +109,13 @@ import Effect.Class (liftEffect) import Effect.Exception (error, message, throw) import Effect.Ref (Ref) import Effect.Ref as Ref -import JS.BigInt as BigInt import Mote (bracket) as Mote import Mote.Description (Description(Group, Test)) import Mote.Monad (MoteT(MoteT), mapTest) import Node.ChildProcess (defaultSpawnOptions) import Node.FS.Sync (exists, mkdir) as FSSync import Node.Path (FilePath, dirname) +import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Type.Prelude (Proxy(Proxy)) @@ -329,8 +329,8 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do encodeDistribution $ ourInitialUtxos (encodeDistribution distr) /\ distr - for_ distrArray $ traverse_ \n -> when (n < BigInt.fromInt 1_000_000) do - liftEffect $ throw $ "UTxO is too low: " <> BigInt.toString n <> + for_ distrArray $ traverse_ \n -> when (n < BigNum.fromInt 1_000_000) do + liftEffect $ throw $ "UTxO is too low: " <> BigNum.toString n <> ", must be at least 1_000_000 Lovelace" bracket (startPlutipCluster plutipCfg distrArray) @@ -489,12 +489,14 @@ startPlutipCluster cfg keysToGenerate = do ourInitialUtxos :: InitialUTxODistribution -> InitialUTxOs ourInitialUtxos utxoDistribution = let - total = Array.foldr (sum >>> add) zero utxoDistribution + total = Array.foldr (\e acc -> unsafePartial $ fold e # append acc) + BigNum.zero + utxoDistribution in [ -- Take the total value of the UTxOs and add some extra on top -- of it to cover the possible transaction fees. Also make sure -- we don't request a 0 ada UTxO - total + BigInt.fromInt 1_000_000_000 + unsafePartial $ append total (BigNum.fromInt 1_000_000) ] stopPlutipCluster :: PlutipConfig -> Aff StopClusterResponse diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index c4668cdad..f6efedd9d 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -4,37 +4,10 @@ module Ctl.Internal.ProcessConstraints import Prelude -import Cardano.Types - ( Certificate - ( StakeDelegation - , PoolRetirement - , PoolRegistration - , StakeDeregistration - , StakeRegistration - ) - , DataHash - , NetworkId - , PlutusData - , PlutusScript - , ScriptHash - , ScriptRef(NativeScriptRef, PlutusScriptRef) - , StakeCredential(StakeCredential) - , Transaction - , TransactionInput - , TransactionOutput(TransactionOutput) - , TransactionUnspentOutput(TransactionUnspentOutput) - , TransactionWitnessSet(TransactionWitnessSet) - , Value(Value) - ) -import Cardano.Types.Address - ( Address(BaseAddress, EnterpriseAddress) - , getPaymentCredential - ) +import Cardano.Types (Certificate(StakeDelegation, PoolRetirement, PoolRegistration, StakeDeregistration, StakeRegistration), DataHash, NetworkId, PlutusData, PlutusScript, ScriptHash, ScriptRef(NativeScriptRef, PlutusScriptRef), StakeCredential(StakeCredential), Transaction, TransactionInput, TransactionOutput(TransactionOutput), TransactionUnspentOutput(TransactionUnspentOutput), TransactionWitnessSet(TransactionWitnessSet), Value(Value)) +import Cardano.Types.Address (Address(..), getPaymentCredential) import Cardano.Types.Coin as Coin -import Cardano.Types.Credential - ( Credential(PubKeyHashCredential, ScriptHashCredential) - , asScriptHash - ) +import Cardano.Types.Credential (Credential(PubKeyHashCredential, ScriptHashCredential), asScriptHash) import Cardano.Types.DataHash (hashPlutusData) import Cardano.Types.DataHash as Datum import Cardano.Types.Int as Int @@ -46,135 +19,28 @@ import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Transaction as Transaction import Cardano.Types.Value (isZero) import Cardano.Types.Value as Value +import Contract.Log (logInfo') +import Contract.Types (MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy)) +import Contract.Types as MintingPolicy import Control.Monad.Error.Class (catchError, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Reader.Class (asks) import Control.Monad.State.Trans (get, gets, put, runStateT) import Control.Monad.Trans.Class (lift) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) - , UnindexedRedeemer(UnindexedRedeemer) - , unindexedRedeemerToRedeemer - ) +import Ctl.Internal.BalanceTx.RedeemerIndex (RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend), UnindexedRedeemer(UnindexedRedeemer), unindexedRedeemerToRedeemer) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) import Ctl.Internal.Helpers (liftEither, liftM) -import Ctl.Internal.Lens - ( _body - , _certs - , _inputs - , _isValid - , _mint - , _networkId - , _outputs - , _referenceInputs - , _requiredSigners - , _scriptDataHash - , _withdrawals - , _witnessSet - ) -import Ctl.Internal.ProcessConstraints.Error - ( MkUnbalancedTxError - ( CannotSatisfyAny - , CannotWithdrawRewardsNativeScript - , CannotWithdrawRewardsPlutusScript - , CannotWithdrawRewardsPubKey - , DatumWrongHash - , CannotMintZero - , ExpectedPlutusScriptGotNativeScript - , CannotFindDatum - , CannotQueryDatum - , CannotGetValidatorHashFromAddress - , TxOutRefWrongType - , CannotConvertPOSIXTimeRange - , NumericOverflow - , WrongRefScriptHash - , ValidatorHashNotFound - , MintingPolicyNotFound - , DatumNotFound - , TxOutRefNotFound - , CannotSolveTimeConstraints - , OwnPubKeyAndStakeKeyMissing - ) - ) -import Ctl.Internal.ProcessConstraints.State - ( ConstraintProcessingState - , ConstraintsM - , ValueSpentBalances(ValueSpentBalances) - , _costModels - , _cpsTransaction - , _cpsUsedUtxos - , _datums - , _lookups - , _redeemers - , _refScriptsUtxoMap - , _valueSpentBalancesInputs - , _valueSpentBalancesOutputs - , provideValue - , requireValue - , totalMissingValue - ) +import Ctl.Internal.Lens (_body, _certs, _inputs, _isValid, _mint, _networkId, _outputs, _referenceInputs, _requiredSigners, _scriptDataHash, _withdrawals, _witnessSet) +import Ctl.Internal.ProcessConstraints.Error (MkUnbalancedTxError(CannotSatisfyAny, CannotWithdrawRewardsNativeScript, CannotWithdrawRewardsPlutusScript, CannotWithdrawRewardsPubKey, DatumWrongHash, CannotMintZero, ExpectedPlutusScriptGotNativeScript, CannotFindDatum, CannotQueryDatum, CannotGetValidatorHashFromAddress, TxOutRefWrongType, CannotConvertPOSIXTimeRange, NumericOverflow, WrongRefScriptHash, ValidatorHashNotFound, MintingPolicyNotFound, DatumNotFound, TxOutRefNotFound, CannotSolveTimeConstraints, OwnPubKeyAndStakeKeyMissing)) +import Ctl.Internal.ProcessConstraints.State (ConstraintProcessingState, ConstraintsM, ValueSpentBalances(ValueSpentBalances), _costModels, _cpsTransaction, _cpsUsedUtxos, _datums, _lookups, _redeemers, _refScriptsUtxoMap, _valueSpentBalancesInputs, _valueSpentBalancesOutputs, provideValue, requireValue, totalMissingValue) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) -import Ctl.Internal.QueryM.Pools - ( getPubKeyHashDelegationsAndRewards - , getValidatorHashDelegationsAndRewards - ) -import Ctl.Internal.Transaction - ( attachDatum - , attachNativeScript - , attachPlutusScript - , setScriptDataHash - ) -import Ctl.Internal.Types.Interval - ( POSIXTimeRange - , always - , intersection - , isEmpty - , posixTimeRangeToTransactionValidity - ) -import Contract.Types - ( MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy) - ) -import Contract.Types as MintingPolicy +import Ctl.Internal.QueryM.Pools (getPubKeyHashDelegationsAndRewards, getValidatorHashDelegationsAndRewards) +import Ctl.Internal.Transaction (attachDatum, attachNativeScript, attachPlutusScript, setScriptDataHash) +import Ctl.Internal.Types.Interval (POSIXTimeRange, always, intersection, isEmpty, posixTimeRangeToTransactionValidity) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) -import Ctl.Internal.Types.TxConstraints - ( DatumPresence(DatumWitness, DatumInline) - , InputWithScriptRef(SpendInput, RefInput) - , TxConstraint - ( MustNotBeValid - , MustSatisfyAnyOf - , MustWithdrawStakeNativeScript - , MustWithdrawStakePlutusScript - , MustWithdrawStakePubKey - , MustDelegateStakeNativeScript - , MustDelegateStakePlutusScript - , MustDelegateStakePubKey - , MustRetirePool - , MustRegisterPool - , MustDeregisterStakeNativeScript - , MustDeregisterStakePlutusScript - , MustRegisterStakeScript - , MustDeregisterStakePubKey - , MustRegisterStakePubKey - , MustHashDatum - , MustPayToNativeScript - , MustPayToScript - , MustPayToPubKeyAddress - , MustMintValueUsingNativeScript - , MustMintValue - , MustReferenceOutput - , MustSpendNativeScriptOutput - , MustSpendScriptOutput - , MustSpendPubKeyOutput - , MustProduceAtLeast - , MustSpendAtLeast - , MustBeSignedBy - , MustValidateIn - , MustIncludeDatum - ) - , TxConstraints(TxConstraints) - , utxoWithScriptRef - ) +import Ctl.Internal.Types.TxConstraints (DatumPresence(DatumWitness, DatumInline), InputWithScriptRef(SpendInput, RefInput), TxConstraint(MustNotBeValid, MustSatisfyAnyOf, MustWithdrawStakeNativeScript, MustWithdrawStakePlutusScript, MustWithdrawStakePubKey, MustDelegateStakeNativeScript, MustDelegateStakePlutusScript, MustDelegateStakePubKey, MustRetirePool, MustRegisterPool, MustDeregisterStakeNativeScript, MustDeregisterStakePlutusScript, MustRegisterStakeScript, MustDeregisterStakePubKey, MustRegisterStakePubKey, MustHashDatum, MustPayToNativeScript, MustPayToScript, MustPayToPubKeyAddress, MustMintValueUsingNativeScript, MustMintValue, MustReferenceOutput, MustSpendNativeScriptOutput, MustSpendScriptOutput, MustSpendPubKeyOutput, MustProduceAtLeast, MustSpendAtLeast, MustBeSignedBy, MustValidateIn, MustIncludeDatum), TxConstraints(TxConstraints), utxoWithScriptRef) +import Ctl.Internal.Types.Val as Val import Data.Array (cons, partition, toUnfoldable, zip) import Data.Array (mapMaybe, singleton, (:)) as Array import Data.Bifunctor (lmap) @@ -193,6 +59,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) +import Effect.Console as Console import Effect.Exception (throw) import Partial.Unsafe (unsafePartial) import Prelude (join) as Bind @@ -265,9 +132,9 @@ runConstraintsM lookups txConstraints = do { transaction: Transaction.empty , usedUtxos: Map.empty , valueSpentBalancesInputs: - ValueSpentBalances { required: Value.empty, provided: Value.empty } + ValueSpentBalances { required: mempty, provided: mempty } , valueSpentBalancesOutputs: - ValueSpentBalances { required: Value.empty, provided: Value.empty } + ValueSpentBalances { required: mempty, provided: mempty } , datums: mempty , redeemers: [] , lookups @@ -302,11 +169,11 @@ addFakeScriptDataHash = runExceptT do -- | See note [Balance of value spent] addMissingValueSpent :: ConstraintsM (Either MkUnbalancedTxError Unit) -addMissingValueSpent = runExceptT do - missing <- liftEither =<< (note NumericOverflow <$> gets totalMissingValue) - networkId <- lift getNetworkId - if isZero missing then pure unit - else do +addMissingValueSpent = do + missing <- gets totalMissingValue + networkId <- getNetworkId + if missing == mempty then pure $ Right unit + else runExceptT do -- add 'missing' to the transaction's outputs. This ensures that the -- wallet will add a corresponding input when balancing the -- transaction. @@ -325,10 +192,11 @@ addMissingValueSpent = runExceptT do Just pkh, Nothing -> pure $ EnterpriseAddress { networkId, paymentCredential: wrap $ PubKeyHashCredential pkh } Nothing, _ -> throwError OwnPubKeyAndStakeKeyMissing + missingValue <- maybe (throwError NumericOverflow) pure $ Val.toValue missing let txOut = TransactionOutput { address: txOutAddress - , amount: missing + , amount: missingValue , datum: Nothing , scriptRef: Nothing } diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index d598993ec..748d91976 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -20,26 +20,21 @@ module Ctl.Internal.ProcessConstraints.State import Prelude hiding (join) -import Cardano.Types - ( CostModel - , Language - , PlutusData - , Transaction - , UtxoMap - ) -import Cardano.Types.Value (Value) -import Cardano.Types.Value as Value +import Cardano.Types (CostModel, Language, PlutusData, Transaction, UtxoMap) +import Cardano.Types.Value (Value(..)) import Control.Monad.State.Trans (StateT) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) +import Ctl.Internal.Types.Val (Val, split) +import Ctl.Internal.Types.Val as Val import Data.Generic.Rep (class Generic) import Data.Lattice (join) import Data.Lens.Record (prop) import Data.Lens.Types (Lens') import Data.Map (Map) -import Data.Maybe (Maybe) import Data.Show.Generic (genericShow) +import Data.Tuple (snd) import Type.Proxy (Proxy(Proxy)) -- A `StateT` ontop of `QueryM` ~ ReaderT QueryConfig Aff`. @@ -114,9 +109,9 @@ _refScriptsUtxoMap = prop (Proxy :: Proxy "refScriptsUtxoMap") -- | that needs to be added to the transaction. -- | See note [Balance of value spent]. newtype ValueSpentBalances = ValueSpentBalances - { required :: Value + { required :: Val -- Required value spent by the transaction. - , provided :: Value + , provided :: Val -- Value provided by an input or output of the transaction. } @@ -132,23 +127,23 @@ instance Semigroup ValueSpentBalances where } sumValueSpentBalances - :: ValueSpentBalances -> ValueSpentBalances -> Maybe ValueSpentBalances + :: ValueSpentBalances -> ValueSpentBalances -> ValueSpentBalances sumValueSpentBalances (ValueSpentBalances a) (ValueSpentBalances b) = do - required <- Value.add a.required b.required - provided <- Value.add a.provided b.provided - pure $ ValueSpentBalances { required, provided } + let required = a.required <> b.required + let provided = a.provided <> b.provided + ValueSpentBalances { required, provided } -missingValueSpent :: ValueSpentBalances -> Maybe Value +missingValueSpent :: ValueSpentBalances -> Val missingValueSpent (ValueSpentBalances { required, provided }) = - Value.minus required provided + snd $ split $ Val.minus required provided -totalMissingValue :: ConstraintProcessingState -> Maybe Value +totalMissingValue :: ConstraintProcessingState -> Val totalMissingValue { valueSpentBalancesInputs, valueSpentBalancesOutputs } = - join <$> missingValueSpent valueSpentBalancesInputs <*> + missingValueSpent valueSpentBalancesInputs `join` missingValueSpent valueSpentBalancesOutputs provideValue :: Value -> ValueSpentBalances -provideValue provided = ValueSpentBalances { provided, required: Value.empty } +provideValue provided = ValueSpentBalances { provided: Val.fromValue provided, required: mempty } requireValue :: Value -> ValueSpentBalances -requireValue required = ValueSpentBalances { required, provided: Value.empty } +requireValue required = ValueSpentBalances { required: Val.fromValue required, provided: mempty } diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 9d9cc901c..ed6ca32c5 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -10,6 +10,7 @@ import Prelude import Affjax (defaultRequest) as Affjax import Affjax (printError) import Affjax.ResponseFormat as Affjax.ResponseFormat +import Cardano.Types.BigNum as BigNum import Cardano.Types.PrivateKey as PrivateKey import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe) @@ -113,7 +114,6 @@ import Effect.Class (liftEffect) import Effect.Console (log) import Effect.Exception (Error, error, throw) import Effect.Ref as Ref -import JS.BigInt as BigInt import Mote (group, test) import Node.Buffer (fromArrayBuffer) import Node.ChildProcess @@ -246,12 +246,15 @@ testPlan opts@{ tests } rt@{ wallets } = -- Plutip in E2E tests { url, wallet: PlutipCluster } -> do let + amount = unsafePartial $ fromJust $ BigNum.mul + (BigNum.fromInt 2_000_000_000) + (BigNum.fromInt 100) distr = withStakeKey privateStakeKey - [ BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + [ amount + , amount + , amount + , amount + , amount ] -- TODO: don't connect to services in ContractEnv, just start them -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1197 diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 4d4c0f95b..d62d015a7 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -4,7 +4,7 @@ module Ctl.Internal.Test.KeyDir import Prelude -import Cardano.Types (Value) +import Cardano.Types (BigNum, Value) import Cardano.Types.Address (toBech32) as Address import Cardano.Types.BigNum as BigNum import Cardano.Types.MultiAsset as MultiAsset @@ -23,8 +23,7 @@ import Contract.Monad ) import Contract.TextEnvelope (decodeTextEnvelope) import Contract.Transaction - ( BalancedSignedTransaction(BalancedSignedTransaction) - , awaitTxConfirmed + ( awaitTxConfirmed , balanceTx , signTransaction , submit @@ -151,7 +150,7 @@ runContractTestsWithKeyDir params backup = do -- because it is expected that test wallets have thousands of ADA. let distrTotalAmount :: BigInt - distrTotalAmount = sum $ map sum distrArray + distrTotalAmount = sum $ map (sum <<< map BigNum.toBigInt) distrArray minAdaRoughEstimation :: BigInt minAdaRoughEstimation = BigInt.fromInt 1_000_000 @@ -300,7 +299,7 @@ backupWallets backup env walletsArray = -- | Create a transaction that builds a specific UTxO distribution on the wallets. fundWallets - :: ContractEnv -> Array KeyWallet -> Array (Array UtxoAmount) -> Aff BigInt + :: ContractEnv -> Array KeyWallet -> Array (Array UtxoAmount) -> Aff BigNum fundWallets env walletsArray distrArray = runContractInEnv env $ noLogs do logTrace' "Funding wallets" let @@ -308,16 +307,19 @@ fundWallets env walletsArray distrArray = runContractInEnv env $ noLogs do \(wallet /\ walletDistr) -> flip foldMap walletDistr \value -> mustPayToKeyWallet wallet $ Value.mkValue - (wrap $ unsafePartial $ fromJust $ BigNum.fromBigInt value) + (wrap value) MultiAsset.empty txHash <- submitTxFromConstraints mempty constraints awaitTxConfirmed txHash - let fundTotal = Array.foldl (+) zero $ join distrArray + let + fundTotal = + Array.foldl (\x y -> unsafePartial $ fromJust $ BigNum.add x y) + BigNum.zero $ join distrArray -- Use log so we can see, regardless of suppression info $ joinWith " " [ "Sent" - , showLovelace fundTotal + , showLovelace $ BigNum.toBigInt fundTotal , "to test wallets" ] pure fundTotal @@ -360,7 +362,7 @@ returnFunds :: FilePath -> ContractEnv -> Array KeyWallet - -> Maybe BigInt + -> Maybe BigNum -> Boolean -> Aff Unit returnFunds backup env allWalletsArray mbFundTotal hasRun = @@ -417,13 +419,13 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = ] <> maybe [] ( \fundTotal -> [ "of" - , showLovelace fundTotal + , showLovelace $ BigNum.toBigInt fundTotal , "from test wallets" ] ) mbFundTotal for_ mbFundTotal \fundTotal -> do - when (fundTotal == refundTotal && hasRun) do + when (BigNum.toBigInt fundTotal == refundTotal && hasRun) do info $ "The test below didn't spend any ADA. Perhaps it does not " <> "need any funds to succeed. Consider using `noWallet` to " <> "skip funds distribution step" diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index a66af03b2..ef0461315 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -15,7 +15,8 @@ module Ctl.Internal.Test.UtxoDistribution import Prelude import Cardano.Types - ( Credential(PubKeyHashCredential) + ( BigNum + , Credential(PubKeyHashCredential) , PaymentCredential(PaymentCredential) , PaymentPubKeyHash , StakePubKeyHash @@ -29,9 +30,7 @@ import Contract.Monad (Contract, liftedM) import Contract.Prelude (foldM, foldMap, null) import Contract.ScriptLookups as Lookups import Contract.Transaction - ( BalancedSignedTransaction(BalancedSignedTransaction) - , FinalizedTransaction(FinalizedTransaction) - , awaitTxConfirmed + ( awaitTxConfirmed , balanceTx , signTransaction , submit @@ -67,11 +66,10 @@ import Data.Tuple (Tuple) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Class (liftEffect) import Effect.Ref as Ref -import JS.BigInt (BigInt) import Type.Prelude (Proxy(Proxy)) -- | UTxO amount in Lovelaces -type UtxoAmount = BigInt +type UtxoAmount = BigNum -- | A list of UTxOs for a single wallet type InitialUTxOs = Array UtxoAmount @@ -213,6 +211,7 @@ transferFundsFromEnterpriseToBase ourKey wallets = do lookups :: Lookups.ScriptLookups lookups = Lookups.unspentOutputs ourUtxos <> foldMap (_.utxos >>> Lookups.unspentOutputs) walletsInfo + <> Lookups.ownPaymentPubKeyHash ourPkh constraints :: Constraints.TxConstraints constraints = Constraints.mustBeSignedBy ourPkh diff --git a/src/Internal/Transaction.purs b/src/Internal/Transaction.purs index 777c6dc9a..4b065a8a3 100644 --- a/src/Internal/Transaction.purs +++ b/src/Internal/Transaction.purs @@ -53,6 +53,7 @@ setScriptDataHash costModels rs ds tx@(Transaction { body, witnessSet }) -- * there are no datums -- | null (unwrap witnessSet).plutusScripts + , null (unwrap witnessSet).plutusData , null rs , null ds = pure tx | otherwise = do diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 134f3b276..9178a345d 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -22,8 +22,8 @@ import Cardano.Types , UtxoMap ) import Cardano.Types.DataHash (hashPlutusData) -import Ctl.Internal.Helpers ((<\>)) import Contract.Types (MintingPolicy) +import Ctl.Internal.Helpers ((<\>)) import Data.Array (singleton, union) as Array import Data.Generic.Rep (class Generic) import Data.Map (Map, empty, singleton, union) diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index c710c65b2..de6d26869 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -112,8 +112,8 @@ import Cardano.Types import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Ctl.Internal.Types.Interval (POSIXTimeRange) -import Ctl.Internal.Types.Redeemer (Redeemer, unitRedeemer) import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) +import Ctl.Internal.Types.RedeemerDatum as RedeemerDatum import Data.Array as Array import Data.Foldable (class Foldable) import Data.Generic.Rep (class Generic) @@ -145,7 +145,7 @@ data TxConstraint | MustSpendScriptOutput TransactionInput RedeemerDatum (Maybe InputWithScriptRef) | MustReferenceOutput TransactionInput - | MustMintValue ScriptHash Redeemer AssetName Int.Int + | MustMintValue ScriptHash RedeemerDatum AssetName Int.Int (Maybe InputWithScriptRef) | MustMintValueUsingNativeScript NativeScript AssetName Int.Int | MustPayToPubKeyAddress PaymentPubKeyHash (Maybe StakePubKeyHash) @@ -160,16 +160,16 @@ data TxConstraint | MustRegisterStakePubKey StakePubKeyHash | MustDeregisterStakePubKey StakePubKeyHash | MustRegisterStakeScript ScriptHash - | MustDeregisterStakePlutusScript PlutusScript Redeemer + | MustDeregisterStakePlutusScript PlutusScript RedeemerDatum | MustDeregisterStakeNativeScript NativeScript | MustRegisterPool PoolParams | MustRetirePool PoolPubKeyHash Epoch | MustDelegateStakePubKey StakePubKeyHash PoolPubKeyHash - | MustDelegateStakePlutusScript PlutusScript Redeemer + | MustDelegateStakePlutusScript PlutusScript RedeemerDatum PoolPubKeyHash | MustDelegateStakeNativeScript NativeScript PoolPubKeyHash | MustWithdrawStakePubKey StakePubKeyHash - | MustWithdrawStakePlutusScript PlutusScript Redeemer + | MustWithdrawStakePlutusScript PlutusScript RedeemerDatum | MustWithdrawStakeNativeScript NativeScript | MustSatisfyAnyOf (Array (Array TxConstraint)) | MustNotBeValid @@ -453,13 +453,13 @@ mustPayToNativeScriptAddress nsHash credential vl = -- | Mint the given `Value` -- | The amount to mint must not be zero. mustMintValue :: Mint -> TxConstraints -mustMintValue = mustMintValueWithRedeemer unitRedeemer +mustMintValue = mustMintValueWithRedeemer RedeemerDatum.unit -- | Mint the given `Value` by accessing non-Ada assets. -- | The amount to mint must not be zero. mustMintValueWithRedeemer :: forall (i :: Type) (o :: Type) - . Redeemer + . RedeemerDatum -> Mint -> TxConstraints mustMintValueWithRedeemer redeemer = @@ -478,7 +478,7 @@ mustMintCurrency -> Int.Int -> TxConstraints mustMintCurrency mph = - mustMintCurrencyWithRedeemer mph unitRedeemer + mustMintCurrencyWithRedeemer mph RedeemerDatum.unit mustMintCurrencyUsingNativeScript :: forall (i :: Type) (o :: Type) @@ -498,13 +498,13 @@ mustMintCurrencyUsingScriptRef -> InputWithScriptRef -> TxConstraints mustMintCurrencyUsingScriptRef mph = - mustMintCurrencyWithRedeemerUsingScriptRef mph unitRedeemer + mustMintCurrencyWithRedeemerUsingScriptRef mph RedeemerDatum.unit -- | Create the given amount of the currency. -- | The amount to mint must not be zero. mustMintCurrencyWithRedeemer :: ScriptHash - -> Redeemer + -> RedeemerDatum -> AssetName -> Int.Int -> TxConstraints @@ -515,7 +515,7 @@ mustMintCurrencyWithRedeemer mph red tn amount = -- | The amount to mint must not be zero. mustMintCurrencyWithRedeemerUsingScriptRef :: ScriptHash - -> Redeemer + -> RedeemerDatum -> AssetName -> Int.Int -> InputWithScriptRef @@ -580,7 +580,7 @@ mustRegisterStakeScript = singleton <<< MustRegisterStakeScript mustDeregisterStakePlutusScript :: forall (i :: Type) (o :: Type) . PlutusScript - -> Redeemer + -> RedeemerDatum -> TxConstraints mustDeregisterStakePlutusScript sv = singleton <<< MustDeregisterStakePlutusScript sv @@ -613,7 +613,7 @@ mustDelegateStakePubKey spkh ppkh = singleton $ MustDelegateStakePubKey spkh mustDelegateStakePlutusScript :: forall (i :: Type) (o :: Type) . PlutusScript - -> Redeemer + -> RedeemerDatum -> PoolPubKeyHash -> TxConstraints mustDelegateStakePlutusScript sv redeemer ppkh = singleton $ @@ -634,7 +634,7 @@ mustWithdrawStakePubKey spkh = singleton $ MustWithdrawStakePubKey spkh mustWithdrawStakePlutusScript :: forall (i :: Type) (o :: Type) . PlutusScript - -> Redeemer + -> RedeemerDatum -> TxConstraints mustWithdrawStakePlutusScript validator redeemer = singleton $ MustWithdrawStakePlutusScript validator redeemer diff --git a/src/Internal/Types/Val.purs b/src/Internal/Types/Val.purs index 3eed5529e..57d71234b 100644 --- a/src/Internal/Types/Val.purs +++ b/src/Internal/Types/Val.purs @@ -3,33 +3,56 @@ module Ctl.Internal.Types.Val where import Prelude import Cardano.AsCbor (encodeCbor) -import Cardano.Types - ( AssetClass(..) - , AssetName - , BigInt - , Coin - , MultiAsset(MultiAsset) - , ScriptHash - , Value(Value) - ) +import Cardano.Types (AssetClass(AssetClass), AssetName, BigInt, Coin, MultiAsset(MultiAsset), ScriptHash, Value(Value)) import Cardano.Types.AssetName (fromAssetName) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint (Mint(Mint)) import Cardano.Types.MultiAsset as MultiAsset +import Data.Array (cons) +import Data.Bifunctor (bimap) import Data.ByteArray (byteArrayToHex) +import Data.FoldableWithIndex (foldrWithIndex) +import Data.Generic.Rep (class Generic) +import Data.Lattice (class JoinSemilattice, class MeetSemilattice) import Data.Log.Tag (TagSet, tag, tagSetTag) import Data.Log.Tag as TagSet import Data.Map (Map) import Data.Map as Map import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) +import Data.Show.Generic (genericShow) import Data.These (These(This, That, Both)) import Data.Traversable (traverse) import Data.Tuple.Nested (type (/\), (/\)) import JS.BigInt as BigInt -data Val = Val BigInt (Map ScriptHash (Map AssetName BigInt)) +-- | Split a value into its positive and non-positive parts. The first element of +-- | the tuple contains the non-positive parts of the value, the second element +-- | contains the positive parts. The convention is non-positive parts are +-- | negated to make them positive in the output. +class Split (a :: Type) where + split :: a -> a /\ a + +instance Split BigInt where + split c = + if c <= zero then negate c /\ zero else zero /\ c + +instance Split Val where + split (Val c1 mp) = Val np npos /\ Val p pos + where + np /\ p = split c1 + splitIntl + :: Map AssetName BigInt + -> These (Map AssetName BigInt) (Map AssetName BigInt) + splitIntl mp' = Both l r + where + l /\ r = mapThese (\i -> if i <= zero then This (negate i) else That i) + mp' + + npos /\ pos = mapThese splitIntl mp + +data Val = Val BigInt ValAssets instance Eq Val where eq a b = @@ -42,6 +65,19 @@ instance Semigroup Val where instance Monoid Val where mempty = Val zero Map.empty +derive instance Generic Val _ + +instance Show Val where + show = genericShow + +instance JoinSemilattice Val where + join (Val c1 m1) (Val c2 m2) = Val (c1 `max` c2) (m1 `unionWithNonAda max` m2) + +instance MeetSemilattice Val where + meet (Val c1 m1) (Val c2 m2) = Val (c1 `min` c2) (m1 `unionWithNonAda min` m2) + +type ValAssets = Map ScriptHash (Map AssetName BigInt) + getAssets :: Val -> Map ScriptHash (Map AssetName BigInt) getAssets (Val _ ma) = ma @@ -96,6 +132,29 @@ fromMint (Mint ma) = Val zero $ map (map Int.toBigInt) $ ma minus :: Val -> Val -> Val minus (Val a ma) (Val b mb) = Val (a - b) (unionWithNonAda (-) ma mb) +-- Like `mapEither` that works with 'These'. +mapThese + :: forall (a :: Type) (b :: Type) (k :: Type) (v :: Type) + . Ord k + => (v -> These a b) + -> Map k v + -> Map k a /\ Map k b +mapThese f mps = + bimap Map.fromFoldable Map.fromFoldable $ foldrWithIndex f' ([] /\ []) mps' + where + mps' :: Map k (These a b) + mps' = map f mps + + f' + :: k + -> These a b + -> Array (k /\ a) /\ Array (k /\ b) + -> Array (k /\ a) /\ Array (k /\ b) + f' k v (as /\ bs) = case v of + This a -> (k /\ a) `cons` as /\ bs + That b -> as /\ (k /\ b) `cons` bs + Both a b -> (k /\ a) `cons` as /\ (k /\ b) `cons` bs + unionWithNonAda :: (BigInt -> BigInt -> BigInt) -> Map ScriptHash (Map AssetName BigInt) diff --git a/src/Internal/Wallet/Key.purs b/src/Internal/Wallet/Key.purs index 0aaec9ed2..be85f5218 100644 --- a/src/Internal/Wallet/Key.purs +++ b/src/Internal/Wallet/Key.purs @@ -29,7 +29,7 @@ import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.PublicKey as PublicKey import Cardano.Types.RawBytes (RawBytes) import Cardano.Types.StakeCredential (StakeCredential(StakeCredential)) -import Cardano.Types.Transaction (Transaction, hashTransaction) +import Cardano.Types.Transaction (Transaction, hash) import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) import Cardano.Types.TransactionWitnessSet (TransactionWitnessSet) import Cardano.Types.UtxoMap (UtxoMap) @@ -160,11 +160,11 @@ privateKeysToKeyWallet payKey mbStakeKey = signTx :: Transaction -> Aff TransactionWitnessSet signTx tx = liftEffect do let - hash = hashTransaction tx - payWitness = PrivateKey.makeVkeyWitness hash (unwrap payKey) + txHash = hash tx + payWitness = PrivateKey.makeVkeyWitness txHash (unwrap payKey) mbStakeWitness = mbStakeKey <#> \stakeKey -> - PrivateKey.makeVkeyWitness hash (unwrap stakeKey) + PrivateKey.makeVkeyWitness txHash (unwrap stakeKey) let witnessSet' = set _vkeys ([ payWitness ] <> fold (pure <$> mbStakeWitness)) diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index d6d88c4d7..10b07d448 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -109,7 +109,32 @@ let upstream = sha256:3e9fbc9ba03e9a1fcfd895f65e2d50ee2f5e86c4cd273f3d5c841b655a0e1bda let additions = - { aeson = + { js-fetch = + { dependencies = + [ "arraybuffer-types" + , "arrays" + , "effect" + , "foldable-traversable" + , "foreign" + , "foreign-object" + , "functions" + , "http-methods" + , "js-promise" + , "maybe" + , "newtype" + , "prelude" + , "record" + , "tuples" + , "typelevel-prelude" + , "unfoldable" + , "web-file" + , "web-streams" + ] + , repository = + "https://github.com/purescript-contrib/purescript-js-fetch.git" + , version = "v0.2.1" + } + , aeson = { dependencies = [ "aff" , "argonaut" diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs index da5048010..30f50d4cf 100644 --- a/test/ApplyArgs.purs +++ b/test/ApplyArgs.purs @@ -9,8 +9,7 @@ import Contract.Prim.ByteArray (hexToByteArrayUnsafe) import Contract.Scripts (PlutusScript) import Contract.TextEnvelope ( decodeTextEnvelope - , plutusScriptV1FromEnvelope - , plutusScriptV2FromEnvelope + , plutusScriptFromEnvelope ) import Control.Monad.Error.Class (class MonadError) import Ctl.Internal.ApplyArgs (applyArgs) @@ -356,7 +355,7 @@ v1 => Object String -> String -> m PlutusScript -v1 scripts name = lookupAux plutusScriptV1FromEnvelope scripts name +v1 scripts name = lookupAux plutusScriptFromEnvelope scripts name v2 :: forall (m :: Type -> Type) @@ -364,7 +363,7 @@ v2 => Object String -> String -> m PlutusScript -v2 scripts name = lookupAux plutusScriptV2FromEnvelope scripts name +v2 scripts name = lookupAux plutusScriptFromEnvelope scripts name lookupAux :: forall (m :: Type -> Type) diff --git a/test/BalanceTx/ChangeGeneration.purs b/test/BalanceTx/ChangeGeneration.purs index b0ae5eff2..45f4714c8 100644 --- a/test/BalanceTx/ChangeGeneration.purs +++ b/test/BalanceTx/ChangeGeneration.purs @@ -2,10 +2,10 @@ module Test.Ctl.BalanceTx.ChangeGeneration (suite) where import Prelude +import Cardano.Types.BigNum as BigNum import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) import Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import JS.BigInt (fromInt) as BigInt import Mote (group, test) suite :: TestPlanM ContractTest Unit @@ -36,8 +36,8 @@ mkChangeOutputs outputsToScript outputsToSelf expectedOutputs = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1000_000_000 - , BigInt.fromInt 2000_000_000 + [ BigNum.fromInt 1000_000_000 + , BigNum.fromInt 2000_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do diff --git a/test/BalanceTx/Collateral.purs b/test/BalanceTx/Collateral.purs index 4bad2e75a..00eb69f9b 100644 --- a/test/BalanceTx/Collateral.purs +++ b/test/BalanceTx/Collateral.purs @@ -2,6 +2,18 @@ module Test.Ctl.BalanceTx.Collateral (suite) where import Prelude +import Cardano.Types + ( Coin(Coin) + , TransactionHash + , TransactionInput + , TransactionOutput + , TransactionUnspentOutput + , UtxoMap + , Value(Value) + ) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.Value as Value import Contract.Config (testnetConfig) import Contract.Monad (Contract, runContract) import Contract.ProtocolParameters (getProtocolParameters) @@ -11,22 +23,11 @@ import Ctl.Internal.BalanceTx.Collateral.Select , selectCollateral ) import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithValue) -import Ctl.Internal.Cardano.Types.Transaction (TransactionOutput, UtxoMap) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput - ) -import Ctl.Internal.Cardano.Types.Value (Coin(Coin), Value(Value)) -import Ctl.Internal.Cardano.Types.Value - ( lovelaceValueOf - , mkSingletonNonAdaAsset - ) as Value import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.ProtocolParameters (CoinsPerUtxoUnit) -import Ctl.Internal.Types.Transaction (TransactionHash, TransactionInput) import Data.Array (length, range, replicate, zipWith) as Array import Data.List (singleton) as List import Data.Map (fromFoldable) as Map -import Data.Maybe (Maybe(Just)) +import Data.Maybe (Maybe(Just), fromJust) import Data.Newtype (unwrap, wrap) import Data.Time.Duration (Seconds(Seconds)) import Data.Tuple (Tuple(Tuple)) @@ -34,9 +35,9 @@ import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) import Data.UInt (fromInt, toInt) as UInt import Effect.Aff (Aff) -import Effect.Class (liftEffect) import JS.BigInt (fromInt) as BigInt import Mote (group, test) +import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures ( currencySymbol1 , tokenName1 @@ -54,7 +55,7 @@ suite = do withParams \coinsPerUtxoUnit maxCollateralInputs -> do collateral <- measure - $ liftEffect + $ pure $ selectCollateral coinsPerUtxoUnit maxCollateralInputs utxosFixture1 collateral `shouldEqual` @@ -64,7 +65,7 @@ suite = do withParams \coinsPerUtxoUnit maxCollateralInputs -> do collateral <- measure - $ liftEffect + $ pure $ selectCollateral coinsPerUtxoUnit maxCollateralInputs utxosFixture2 collateral `shouldEqual` @@ -73,12 +74,12 @@ suite = do test "Selects a collateral in less than 2 seconds" do withParams \coinsPerUtxoUnit maxCollateralInputs -> measureWithTimeout (Seconds 2.0) - ( void $ liftEffect $ selectCollateral coinsPerUtxoUnit + ( void $ pure $ selectCollateral coinsPerUtxoUnit maxCollateralInputs utxosFixture3 ) -withParams :: (CoinsPerUtxoUnit -> Int -> Contract Unit) -> Aff Unit +withParams :: (Coin -> Int -> Contract Unit) -> Aff Unit withParams test = runContract testnetConfig { suppressLogs = true } (join (test <$> getCoinsPerUtxoUnit <*> getMaxCollateralInputs)) @@ -88,37 +89,50 @@ withParams test = getProtocolParameters <#> UInt.toInt <<< _.maxCollateralInputs <<< unwrap - getCoinsPerUtxoUnit :: Contract CoinsPerUtxoUnit + getCoinsPerUtxoUnit :: Contract Coin getCoinsPerUtxoUnit = getProtocolParameters <#> unwrap >>> - _.coinsPerUtxoUnit + _.coinsPerUtxoByte -- | Ada-only tx output sufficient to cover `minRequiredCollateral`. adaOnlyTxOutputSuf :: TransactionOutput adaOnlyTxOutputSuf = fakeOutputWithValue $ - Value.lovelaceValueOf (minRequiredCollateral + one) + Value.lovelaceValueOf + ( unsafePartial $ fromJust $ BigNum.add BigNum.one $ unwrap + minRequiredCollateral + ) -- | Ada-only tx output insufficient to cover `minRequiredCollateral`. adaOnlyTxOutputInsuf :: TransactionOutput adaOnlyTxOutputInsuf = - fakeOutputWithValue $ - Value.lovelaceValueOf (minRequiredCollateral / BigInt.fromInt 2) + fakeOutputWithValue + $ Value.lovelaceValueOf + $ unsafePartial + $ fromJust + $ BigNum.fromBigInt + $ BigNum.toBigInt (unwrap minRequiredCollateral) / BigInt.fromInt 2 -- | Single-asset tx output sufficient to cover `minRequiredCollateral`. singleAssetTxOutputSuf :: TransactionOutput singleAssetTxOutputSuf = fakeOutputWithValue - $ Value (Coin $ minRequiredCollateral + one) - $ Value.mkSingletonNonAdaAsset currencySymbol1 tokenName1 one + $ Value + ( Coin $ unsafePartial $ fromJust $ BigNum.add BigNum.one $ unwrap + minRequiredCollateral + ) + $ MultiAsset.singleton currencySymbol1 tokenName1 BigNum.one -- | Multi-asset tx output sufficient to cover `minRequiredCollateral`. multiAssetTxOutputSuf :: TransactionOutput -multiAssetTxOutputSuf = - fakeOutputWithValue - $ Value (Coin $ minRequiredCollateral + one) - $ Value.mkSingletonNonAdaAsset currencySymbol1 tokenName1 one - <> Value.mkSingletonNonAdaAsset currencySymbol1 tokenName2 one +multiAssetTxOutputSuf = unsafePartial + $ fakeOutputWithValue + $ Value + ( Coin $ unsafePartial $ fromJust $ BigNum.add BigNum.one $ unwrap + minRequiredCollateral + ) + $ MultiAsset.singleton currencySymbol1 tokenName1 BigNum.one + <> MultiAsset.singleton currencySymbol1 tokenName2 BigNum.one utxosFixture1 :: UtxoMap utxosFixture1 = diff --git a/test/Blockfrost.purs b/test/Blockfrost.purs index d3c4691cf..1b392952f 100644 --- a/test/Blockfrost.purs +++ b/test/Blockfrost.purs @@ -2,12 +2,14 @@ module Test.Ctl.Blockfrost (main, testPlan) where import Prelude +import Cardano.AsCbor (decodeCbor) import Cardano.Serialization.Lib (fromBytes) +import Cardano.Types (ScriptHash) +import Cardano.Types.BigNum as BigNum import Contract.Config (blockfrostPublicPreviewServerConfig) import Contract.Metadata ( GeneralTransactionMetadata(GeneralTransactionMetadata) - , TransactionMetadatum(Text, MetadataMap) - , TransactionMetadatumLabel(TransactionMetadatumLabel) + , TransactionMetadatum(Text, Map) ) import Contract.Prim.ByteArray (hexToByteArrayUnsafe) import Contract.Test.Mote (TestPlanM, interpretWithConfig) @@ -22,7 +24,6 @@ import Contract.Transaction import Control.Monad.Error.Class (liftEither) import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend) import Ctl.Internal.Helpers (liftedM) -import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashFromBytes) import Ctl.Internal.Service.Blockfrost ( BlockfrostServiceM , runBlockfrostServiceM @@ -40,7 +41,6 @@ import Data.Tuple.Nested ((/\)) import Effect (Effect) import Effect.Aff (Aff, error, launchAff_) import Effect.Class.Console (log) -import JS.BigInt as BigInt import Mote (group, test) import Node.Process (argv) import Partial.Unsafe (unsafePartial) @@ -65,10 +65,11 @@ testPlan :: BlockfrostBackend -> TestPlanM (Aff Unit) Unit testPlan backend = group "Blockfrost" do let mkDatumHash :: String -> DataHash - mkDatumHash = wrap <<< hexToByteArrayUnsafe + mkDatumHash s = unsafePartial $ fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe s mkStringHash :: String -> ScriptHash - mkStringHash s = unsafePartial $ fromJust $ scriptHashFromBytes $ + mkStringHash s = unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe s test "getDatumByHash - not found" do @@ -185,7 +186,7 @@ fixture1 = TxWithMetadata , 77 /\ "4e5205e5df368030e9f814c2258c01f50c62375c55b07fbcc076c181::02" ] <#> \(label /\ text) -> - TransactionMetadatumLabel (BigInt.fromInt label) /\ Text text + BigNum.fromInt label /\ Text text } fixture2 :: Fixture @@ -201,8 +202,7 @@ fixture2 = TxWithMetadata , "Timestamp" /\ "1672173001" ] ] <#> \(label /\ metamap) -> - TransactionMetadatumLabel - (BigInt.fromInt label) /\ MetadataMap + BigNum.fromInt label /\ Map (Map.fromFoldable $ metamap <#> \(k /\ v) -> Text k /\ Text v) } diff --git a/test/Blockfrost/GenerateFixtures/NativeScript.purs b/test/Blockfrost/GenerateFixtures/NativeScript.purs index 5d2c45a1a..1d9667e5e 100644 --- a/test/Blockfrost/GenerateFixtures/NativeScript.purs +++ b/test/Blockfrost/GenerateFixtures/NativeScript.purs @@ -2,6 +2,7 @@ module Test.Ctl.Blockfrost.GenerateFixtures.NativeScript (main) where import Contract.Prelude +import Cardano.Types.BigNum as BigNum import Contract.Config ( ContractParams , PrivatePaymentKeySource(PrivatePaymentKeyFile) @@ -29,10 +30,11 @@ import Ctl.Internal.Service.Blockfrost , BlockfrostRawResponse , runBlockfrostServiceTestM ) -import Ctl.Internal.Service.Blockfrost (getScriptByHash) as Blockfrost +import Ctl.Internal.Service.Blockfrost + ( getScriptByHash + ) as Blockfrost import Data.Array (mapWithIndex) import Data.UInt (fromInt) as UInt -import JS.BigInt (fromInt) as BigInt import Test.Ctl.Blockfrost.GenerateFixtures.Helpers ( blockfrostBackend , getSkeyFilepathFromEnv @@ -87,7 +89,7 @@ generateFixtures numFixtures = do constraints :: Constraints.TxConstraints constraints = mustPayToPubKeyStakeAddressWithScriptRef pkh skh nativeScriptRef - (Value.lovelaceValueOf $ BigInt.fromInt 2_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) txHash <- submitTxFromConstraints mempty constraints awaitTxConfirmed txHash diff --git a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs index 46421748f..7df2a0b58 100644 --- a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs +++ b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs @@ -2,6 +2,7 @@ module Test.Ctl.Blockfrost.GenerateFixtures.ScriptInfo (main) where import Contract.Prelude +import Cardano.Types.BigNum as BigNum import Contract.Config ( ContractParams , PrivatePaymentKeySource(PrivatePaymentKeyFile) @@ -37,7 +38,6 @@ import Ctl.Internal.Service.Blockfrost (getScriptInfo) as Blockfrost import Data.Array (zip) as Array import Data.FoldableWithIndex (forWithIndex_) import Data.UInt (fromInt) as UInt -import JS.BigInt (fromInt) as BigInt import Test.Ctl.Blockfrost.GenerateFixtures.Helpers ( blockfrostBackend , getSkeyFilepathFromEnv @@ -81,8 +81,8 @@ generateFixtures = do backend <- liftEffect blockfrostBackend nativeScriptRef <- liftEffect (NativeScriptRef <$> randomSampleOne arbitrary) - v1PlutusScriptRef <- PlutusScriptRef <$> unwrap <$> alwaysSucceedsScript - v2PlutusScriptRef <- PlutusScriptRef <$> unwrap <$> alwaysSucceedsScriptV2 + v1PlutusScriptRef <- PlutusScriptRef <$> alwaysSucceedsScript + v2PlutusScriptRef <- PlutusScriptRef <$> alwaysSucceedsScriptV2 let scriptRefs = [ nativeScriptRef, v1PlutusScriptRef, v2PlutusScriptRef ] @@ -94,7 +94,7 @@ generateFixtures = do skh <- ownStakePubKeyHash let value :: Value - value = Value.lovelaceValueOf $ BigInt.fromInt 2_000_000 + value = Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 constraints :: Constraints.TxConstraints constraints = diff --git a/test/CoinSelection/Arbitrary.purs b/test/CoinSelection/Arbitrary.purs index 2ce2beb02..c64af7a22 100644 --- a/test/CoinSelection/Arbitrary.purs +++ b/test/CoinSelection/Arbitrary.purs @@ -2,26 +2,19 @@ module Test.Ctl.CoinSelection.Arbitrary where import Prelude -import Control.Apply (lift2) -import Ctl.Internal.BalanceTx.CoinSelection (SelectionState, fromIndexFiltered) -import Ctl.Internal.Cardano.Types.Transaction - ( TransactionOutput(TransactionOutput) - , UtxoMap - ) -import Ctl.Internal.Cardano.Types.Value (Value) -import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex) -import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex -import Ctl.Internal.Serialization.Address +import Cardano.Types ( Address , NetworkId(MainnetId) - , baseAddressToAddress - , paymentKeyHashStakeKeyHashAddress - ) -import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum)) -import Ctl.Internal.Types.Transaction - ( TransactionHash + , TransactionHash , TransactionInput(TransactionInput) + , TransactionOutput(TransactionOutput) + , UtxoMap + , Value ) +import Control.Apply (lift2) +import Ctl.Internal.BalanceTx.CoinSelection (SelectionState, fromIndexFiltered) +import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex) +import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex import Data.Generic.Rep (class Generic) import Data.Map (Map) import Data.Map.Gen (genMap) as Map @@ -108,31 +101,7 @@ newtype ArbitraryTransactionOutput = derive instance Newtype ArbitraryTransactionOutput _ -instance Arbitrary ArbitraryTransactionOutput where - arbitrary = wrap <$> lift2 mkTxOutput arbitrary arbitrary - where - mkTxOutput :: ArbitraryAddress -> Value -> TransactionOutput - mkTxOutput address amount = - TransactionOutput - { address: unwrap address - , amount - , datum: NoOutputDatum - , scriptRef: Nothing - } - --------------------------------------------------------------------------------- --- ArbitraryAddress --------------------------------------------------------------------------------- - -newtype ArbitraryAddress = ArbitraryAddress Address - -derive instance Newtype ArbitraryAddress _ - -instance Arbitrary ArbitraryAddress where - arbitrary = - wrap <<< baseAddressToAddress <$> - lift2 (paymentKeyHashStakeKeyHashAddress MainnetId) arbitrary arbitrary - +derive newtype instance Arbitrary ArbitraryTransactionOutput -------------------------------------------------------------------------------- -- ArbitrarySelectionState -------------------------------------------------------------------------------- diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index 3d9cf35a0..953fdea20 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -2,38 +2,37 @@ module Test.Ctl.CoinSelection (suite) where import Prelude -import Cardano.Types.AssetName (TokenName, mkTokenName) +import Cardano.AsCbor (decodeCbor) +import Cardano.Types + ( Address + , MultiAsset + , ScriptHash + , TransactionOutput(TransactionOutput) + , Value + ) +import Cardano.Types.AssetName (AssetName, mkAssetName) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.TransactionInput (TransactionInput) -import Control.Monad.Error.Class (class MonadThrow) +import Cardano.Types.Value (mkValue) +import Cardano.Types.Value as Value +import Control.Monad.Error.Class (class MonadError, class MonadThrow) import Ctl.Internal.BalanceTx.CoinSelection ( SelectionStrategy(SelectionStrategyMinimal, SelectionStrategyOptimal) , mkSelectionState , performMultiAssetSelection ) import Ctl.Internal.BalanceTx.Error (BalanceTxError) -import Ctl.Internal.Cardano.Types.Transaction - ( TransactionOutput(TransactionOutput) - ) -import Ctl.Internal.Cardano.Types.Value - ( CurrencySymbol - , NonAdaAsset - , Value - , mkCoin - , mkCurrencySymbol - , mkSingletonNonAdaAsset - , mkValue - ) import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex) import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex import Ctl.Internal.Hashing (blake2b224Hash) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.OutputDatum (OutputDatum(NoOutputDatum)) import Data.ByteArray (byteArrayFromAscii) import Data.Foldable (fold, foldMap) import Data.Generic.Rep (class Generic) import Data.Map (fromFoldable, values) as Map import Data.Maybe (Maybe(Nothing), fromJust) -import Data.Newtype (class Newtype, unwrap) +import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Data.Traversable (for, for_) import Data.Tuple (Tuple(Tuple)) @@ -47,8 +46,7 @@ import JS.BigInt (fromInt) as BigInt import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.CoinSelection.Arbitrary - ( ArbitraryAddress - , ArbitraryTransactionInput + ( ArbitraryTransactionInput , ArbitraryUtxoIndex ) import Test.Ctl.CoinSelection.RoundRobin (suite) as RoundRobin @@ -85,7 +83,7 @@ prop_performMultiAssetSelection_empty :: SelectionStrategy -> ArbitraryUtxoIndex -> CoinSelectionTestM Result prop_performMultiAssetSelection_empty strategy utxoIndex = assertEquals (mkSelectionState $ unwrap utxoIndex) <$> - performMultiAssetSelection strategy (unwrap utxoIndex) mempty + performMultiAssetSelection strategy (unwrap utxoIndex) Value.empty runSelectionTestWithFixture :: (SelectionStrategy -> SelFixture) -> String -> TestPlanM (Aff Unit) Unit @@ -99,7 +97,8 @@ runSelectionTestWithFixture mkFixture testLabel = performMultiAssetSelection td.strategy td.utxoIndex td.requiredValue liftEffect $ td.selectedValue `shouldEqual` - foldMap (_.amount <<< unwrap) (Map.values selectedUtxos) + unsafePartial + (foldMap (_.amount <<< unwrap) (Map.values selectedUtxos)) showSelStrategy :: SelectionStrategy -> String showSelStrategy strategy = @@ -134,28 +133,29 @@ type SelTestData = , selectedValue :: Value } -assetClassFromFixture :: AssetFixture -> CurrencySymbol /\ TokenName +assetClassFromFixture :: AssetFixture -> ScriptHash /\ AssetName assetClassFromFixture asset = currencySymbolFromAscii (show asset) /\ tokenNameFromAscii (show asset) where - currencySymbolFromAscii :: String -> CurrencySymbol + currencySymbolFromAscii :: String -> ScriptHash currencySymbolFromAscii str = unsafePartial fromJust $ - mkCurrencySymbol =<< map blake2b224Hash (byteArrayFromAscii str) + decodeCbor <<< wrap =<< map blake2b224Hash (byteArrayFromAscii str) - tokenNameFromAscii :: String -> TokenName + tokenNameFromAscii :: String -> AssetName tokenNameFromAscii = - unsafePartial fromJust <<< (mkTokenName <=< byteArrayFromAscii) + unsafePartial fromJust <<< (mkAssetName <=< byteArrayFromAscii) -assetFromFixture :: AssetFixture /\ Int -> NonAdaAsset +assetFromFixture :: AssetFixture /\ Int -> MultiAsset assetFromFixture (assetFixture /\ quantity) = - mkSingletonNonAdaAsset currencySymbol tokenName (BigInt.fromInt quantity) + MultiAsset.singleton currencySymbol tokenName (BigNum.fromInt quantity) where currencySymbol /\ tokenName = assetClassFromFixture assetFixture valueFromFixture :: TokenBundleFixture -> Value valueFromFixture (coin /\ assets) = - mkValue (mkCoin coin) (foldMap assetFromFixture assets) + mkValue (wrap $ BigNum.fromInt coin) + (unsafePartial $ foldMap assetFromFixture assets) selTestDataFromFixture :: SelFixture -> Effect SelTestData selTestDataFromFixture selFixture = do @@ -167,7 +167,8 @@ selTestDataFromFixture selFixture = do { strategy: selFixture.strategy , requiredValue: valueFromFixture selFixture.requiredValue , utxoIndex - , selectedValue: fold (valueFromFixture <$> selFixture.selectedUtxos) + , selectedValue: unsafePartial $ fold + (valueFromFixture <$> selFixture.selectedUtxos) } where txInputSample :: Effect TransactionInput @@ -176,9 +177,9 @@ selTestDataFromFixture selFixture = do mkTxOutput :: Value -> Effect TransactionOutput mkTxOutput amount = do - address <- unwrap <$> randomSampleOne (arbitrary :: Gen ArbitraryAddress) + address <- randomSampleOne (arbitrary :: Gen Address) pure $ TransactionOutput - { address, amount, datum: NoOutputDatum, scriptRef: Nothing } + { address, amount, datum: Nothing, scriptRef: Nothing } -------------------------------------------------------------------------------- diff --git a/test/CoinSelection/RoundRobin.purs b/test/CoinSelection/RoundRobin.purs index f0e7715b6..765c99814 100644 --- a/test/CoinSelection/RoundRobin.purs +++ b/test/CoinSelection/RoundRobin.purs @@ -2,7 +2,7 @@ module Test.Ctl.CoinSelection.RoundRobin where import Prelude -import Cardano.Types.AssetName (TokenName) +import Cardano.Types.AssetName (AssetName) import Ctl.Internal.BalanceTx.CoinSelection (runRoundRobinM) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.Foldable (all, foldl, sum) @@ -95,7 +95,7 @@ prop_runRoundRobin_generationCount initialState = where finalState = runMockRoundRobin initialState - generationCounts :: Map TokenName Int + generationCounts :: Map AssetName Int generationCounts = (unwrap finalState).accumulatedEntries # groupByKey # map length @@ -106,7 +106,7 @@ prop_runRoundRobin_generationOrder initialState = where finalState = runMockRoundRobin initialState - generations :: Map Int (Set.Set TokenName) + generations :: Map Int (Set.Set AssetName) generations = (unwrap finalState).accumulatedEntries # map swap # groupByKey @@ -152,9 +152,9 @@ derive instance Generic (MockRoundRobinState k n) _ instance (Show k, Show n) => Show (MockRoundRobinState k n) where show = genericShow -type SimpleMockRoundRobinState = MockRoundRobinState TokenName Int +type SimpleMockRoundRobinState = MockRoundRobinState AssetName Int -derive instance Eq (MockRoundRobinState TokenName Int) +derive instance Eq (MockRoundRobinState AssetName Int) instance Arbitrary SimpleMockRoundRobinState where arbitrary = do @@ -163,12 +163,12 @@ instance Arbitrary SimpleMockRoundRobinState where pure $ MockRoundRobinState { processorLifetimes: lifetimes, accumulatedEntries: fromFoldable [] } where - genProcessorLifetimes :: Int -> Gen (Map.Map TokenName Int) + genProcessorLifetimes :: Int -> Gen (Map.Map AssetName Int) genProcessorLifetimes processorCount = Map.fromFoldable <$> (replicateA processorCount genProcessorLifetime :: Gen (Array _)) - genProcessorLifetime :: Gen (TokenName /\ Int) + genProcessorLifetime :: Gen (AssetName /\ Int) genProcessorLifetime = (/\) <$> arbitrary <*> chooseInt 0 127 -- Using `Arbitrary` leads to stack overflows in tests diff --git a/test/CoinSelection/SelectionState.purs b/test/CoinSelection/SelectionState.purs index aa87ebb30..d45a9501a 100644 --- a/test/CoinSelection/SelectionState.purs +++ b/test/CoinSelection/SelectionState.purs @@ -7,6 +7,7 @@ module Test.Ctl.CoinSelection.SelectionState import Prelude +import Cardano.Types.Asset (Asset) import Ctl.Internal.BalanceTx.CoinSelection (SelectionState) import Ctl.Internal.BalanceTx.CoinSelection as CoinSelection import Ctl.Internal.CoinSelection.UtxoIndex as UtxoIndex @@ -54,7 +55,7 @@ prop_select_isValid u s = isValidSelection $ CoinSelection.selectUtxo (unwrap u) (unwrap s) prop_selectRandomWithPriority - :: ArbitraryUtxoIndex -> UtxoIndex.Asset -> UtxoIndex.Asset -> Boolean + :: ArbitraryUtxoIndex -> Asset -> Asset -> Boolean prop_selectRandomWithPriority index a1 a2 = if a1 == a2 then true else diff --git a/test/Data.purs b/test/Data.purs index db39af52b..032339272 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -4,38 +4,38 @@ module Test.Ctl.Data (suite, tests, uniqueIndicesTests) where import Prelude hiding (conj) import Aeson (JsonDecodeError(TypeMismatch), decodeAeson, encodeAeson) -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.PlutusData (PlutusData(Constr, Integer)) -import Control.Lazy (fix) -import Control.Monad.Error.Class (class MonadThrow) -import Ctl.Internal.Deserialization.PlutusData as PDD -import Ctl.Internal.FromData (class FromData, fromData, genericFromData) -import Ctl.Internal.Helpers (showWithParens) -import Ctl.Internal.Plutus.Types.AssocMap (Map(Map)) -import Ctl.Internal.Plutus.Types.DataSchema +import Cardano.AsCbor (class AsCbor, decodeCbor, encodeCbor) +import Cardano.FromData (class FromData, fromData, genericFromData) +import Cardano.Plutus.DataSchema ( class HasPlutusSchema + , class UniqueIndices , type (:+) , type (:=) , type (@@) + , ConsI , I + , NilI , PNil + , S + , Z ) -import Ctl.Internal.Serialization.PlutusData as PDS +import Cardano.Plutus.DataSchema.RowList (class AllUniqueLabels) +import Cardano.Plutus.Types.Map (Map(Map)) +import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.ToData (class ToData, genericToData, toData) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData (PlutusData(Constr, Integer)) +import Cardano.Types.PlutusData as PlutusData +import Control.Lazy (fix) +import Control.Monad.Error.Class (class MonadThrow) +import Ctl.Internal.Helpers (showWithParens) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.ToData (class ToData, genericToData, toData) -import Ctl.Internal.TypeLevel.Nat (S, Z) -import Ctl.Internal.TypeLevel.RowList (class AllUniqueLabels) -import Ctl.Internal.TypeLevel.RowList.Unordered.Indexed - ( class UniqueIndices - , ConsI - , NilI - ) import Data.Array.NonEmpty (fromNonEmpty) as NEArray import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) import Data.Generic.Rep as G import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) +import Data.Newtype (unwrap) import Data.NonEmpty ((:|)) import Data.Show.Generic (genericShow) import Data.Traversable (for_, traverse_) @@ -561,7 +561,7 @@ instance (FromData a) => FromData (Tree a) where Node <$> fromData a <*> (Tuple <$> worker ltree <*> worker rtree) fromBytesFromData :: forall a. FromData a => String -> Maybe a -fromBytesFromData binary = fromData <<< PDD.convertPlutusData =<< fromBytes +fromBytesFromData binary = (fromData <<< PlutusData.fromCsl) =<< fromBytes (hexToByteArrayUnsafe binary) testBinaryFixture @@ -570,6 +570,7 @@ testBinaryFixture => Show a => FromData a => ToData a + => AsCbor a => a -> String -> TestPlanM (Aff Unit) Unit @@ -577,7 +578,7 @@ testBinaryFixture value binaryFixture = do test ("Deserialization: " <> show value) do fromBytesFromData binaryFixture `shouldEqual` Just value test ("Serialization: " <> show value) do - toBytes (PDS.convertPlutusData $ toData value) + unwrap (encodeCbor value) `shouldEqual` hexToByteArrayUnsafe binaryFixture -- | Poor man's type level tests diff --git a/test/Data/Interval.purs b/test/Data/Interval.purs index 8808d9ad4..516e9b25a 100644 --- a/test/Data/Interval.purs +++ b/test/Data/Interval.purs @@ -3,6 +3,15 @@ module Test.Ctl.Data.Interval (suite) where import Prelude +import Cardano.Plutus.DataSchema + ( class HasPlutusSchema + , type (:+) + , type (:=) + , type (@@) + , I + , PNil + , Z + ) import Contract.PlutusData ( class FromData , class ToData @@ -13,16 +22,7 @@ import Contract.PlutusData ) import Contract.Prelude (Aff, liftEffect) import Contract.Time (always, never) -import Ctl.Internal.Plutus.Types.DataSchema - ( class HasPlutusSchema - , type (:+) - , type (:=) - , type (@@) - , I - , PNil - ) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.TypeLevel.Nat (Z) import Ctl.Internal.Types.Interval ( Extended(NegInf, Finite, PosInf) , Interval(EmptyInterval, StartAt, EndAt, AlwaysInterval, FiniteInterval) diff --git a/test/Deserialization.purs b/test/Deserialization.purs index 2d0462f94..026068f2e 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -2,53 +2,14 @@ module Test.Ctl.Deserialization (suite) where import Prelude -import Aeson (decodeAeson, parseJsonStringToAeson) -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Cardano.Types.BigNum (fromBigInt, toBigInt) as BigNum -import Cardano.Types.NativeScript (toCsl) as NSS -import Cardano.Types.TransactionInput (TransactionInput) as T -import Contract.CborBytes (hexToCborBytesUnsafe) -import Contract.Keys (privateKeyFromBytes) +import Cardano.AsCbor (class AsCbor, decodeCbor, encodeCbor) +import Cardano.Types (TransactionWitnessSet) import Contract.Prim.ByteArray (ByteArray) -import Contract.TextEnvelope - ( TextEnvelope(TextEnvelope) - , TextEnvelopeType(Other) - , decodeTextEnvelope - ) -import Control.Monad.Error.Class (class MonadThrow, liftMaybe) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptAny)) as T -import Ctl.Internal.Cardano.Types.Transaction (Transaction, TransactionOutput) as T -import Ctl.Internal.Cardano.Types.Transaction (Vkeywitness) -import Ctl.Internal.Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) as T -import Ctl.Internal.Deserialization.BigInt as DB -import Ctl.Internal.Deserialization.NativeScript as NSD -import Ctl.Internal.Deserialization.PlutusData as DPD -import Ctl.Internal.Deserialization.Transaction (convertTransaction) as TD -import Ctl.Internal.Deserialization.WitnessSet (convertWitnessSet) -import Ctl.Internal.Plutip.Types (StartClusterResponse) -import Ctl.Internal.Serialization (convertTransaction) as TS -import Ctl.Internal.Serialization (convertTxInput, convertTxOutput) as Serialization -import Ctl.Internal.Serialization.BigInt as SB -import Ctl.Internal.Serialization.PlutusData as SPD -import Ctl.Internal.Serialization.Types (TransactionUnspentOutput) -import Ctl.Internal.Serialization.Types (Vkeywitness) as Serialization -import Ctl.Internal.Serialization.WitnessSet (convertVkeywitness) as Serialization -import Ctl.Internal.Serialization.WitnessSet as SW import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Data.Array as Array -import Data.Either (Either, hush, isRight) -import Data.Foldable (fold) -import Data.Maybe (isJust, isNothing) -import Data.Newtype (unwrap, wrap) -import Data.Traversable (traverse) -import Effect (Effect) +import Data.Maybe (Maybe(Just)) +import Data.Newtype (wrap) import Effect.Aff (Aff) -import Effect.Class (class MonadEffect, liftEffect) -import Effect.Exception (Error, error) -import JS.BigInt as BigInt -import Mote (group, skip, test) +import Mote (group, test) import Test.Ctl.Fixtures ( nativeScriptFixture1 , nativeScriptFixture2 @@ -65,8 +26,6 @@ import Test.Ctl.Fixtures , plutusDataFixture6 , plutusDataFixture7 , plutusDataFixture8 - , plutusDataFixture8Bytes - , plutusDataFixture8Bytes' , txFixture1 , txFixture2 , txFixture3 @@ -75,232 +34,96 @@ import Test.Ctl.Fixtures , txFixture6 , txInputFixture1 , txOutputFixture1 - , utxoFixture1 - , utxoFixture1' , witnessSetFixture1 , witnessSetFixture2 , witnessSetFixture2Value , witnessSetFixture3 , witnessSetFixture3Value , witnessSetFixture4 + , mint0 + , mint1 + , int1 ) -import Test.Ctl.Utils (errMaybe, fromBytesEffect) -import Test.Spec.Assertions (expectError, shouldEqual, shouldSatisfy) +import Test.Spec.Assertions (shouldEqual) +import Type.Proxy (Proxy(Proxy)) suite :: TestPlanM (Aff Unit) Unit suite = do - group "deserialization" $ do - group "BigInt" do - test "Deserialization is inverse to serialization" do - let bigInt = BigInt.fromInt 123 - res <- errMaybe "Failed to serialize BigInt" do - DB.convertBigInt $ SB.convertBigInt bigInt - res `shouldEqual` bigInt - group "BigNum" do - test "Deserialization is inverse to serialization" do - let bigInt = BigInt.fromInt 123 - res <- errMaybe "Failed to serialize BigInt" $ BigNum.fromBigInt bigInt - <#> BigNum.toBigInt - res `shouldEqual` bigInt - group "CSL <-> CTL PlutusData roundtrip tests" do - let - pdRoundTripTest ctlPd = do - cslPd' <- errMaybe "Failed to fromBytes PlutusData" $ fromBytes - $ toBytes - $ SPD.convertPlutusData ctlPd - let ctlPd' = DPD.convertPlutusData cslPd' - ctlPd' `shouldEqual` ctlPd - test "fixture #1" $ pdRoundTripTest plutusDataFixture1 - test "fixture #2" $ pdRoundTripTest plutusDataFixture2 - test "fixture #3" $ pdRoundTripTest plutusDataFixture3 - test "fixture #4" $ pdRoundTripTest plutusDataFixture4 - test "fixture #5" $ pdRoundTripTest plutusDataFixture5 - test "fixture #6" $ pdRoundTripTest plutusDataFixture6 - test "fixture #7" $ pdRoundTripTest plutusDataFixture7 - test "fixture #8" $ pdRoundTripTest plutusDataFixture8 - test - "fixture #8 different Cbor bytes encodings (compact vs general Constr tag encodings)" - $ do - cslPd' <- errMaybe "Failed to fromBytes PlutusData" $ fromBytes - plutusDataFixture8Bytes - let ctlPd' = DPD.convertPlutusData cslPd' - ctlPd' `shouldEqual` plutusDataFixture8 - cslPdWp' <- errMaybe "Failed to fromBytes PlutusData" $ fromBytes - plutusDataFixture8Bytes' - let ctlPdWp' = DPD.convertPlutusData cslPdWp' - ctlPdWp' `shouldEqual` plutusDataFixture8 - group "UnspentTransactionOutput" do - test "deserialization is inverse to serialization" do - unspentOutput <- liftEffect $ createUnspentOutput txInputFixture1 - txOutputFixture1 - T.TransactionUnspentOutput { input, output } <- - errMaybe "Failed deserialization 3" do - convertUnspentOutput unspentOutput - input `shouldEqual` txInputFixture1 - output `shouldEqual` txOutputFixture1 - test "fixture #1" do - res <- errMaybe "Failed deserialization 4" do - fromBytes utxoFixture1 >>= convertUnspentOutput - res `shouldEqual` utxoFixture1' - group "Transaction Roundtrips" do - test "CSL <-> CTL Transaction roundtrip #1" $ txRoundtrip txFixture1 - test "CSL <-> CTL Transaction roundtrip #2" $ txRoundtrip txFixture2 - test "CSL <-> CTL Transaction roundtrip #3" $ txRoundtrip txFixture3 - test "CSL <-> CTL Transaction roundtrip #4" $ txRoundtrip txFixture4 - test "CSL <-> CTL Transaction roundtrip #5" $ txRoundtrip txFixture5 - test "CSL <-> CTL Transaction roundtrip #6" $ txRoundtrip txFixture6 - group "WitnessSet - deserialization" do - group "fixture #1" do - res <- errMaybe "Failed deserialization 5" do - fromBytes witnessSetFixture1 <#> convertWitnessSet - test "has vkeys" do - (unwrap res).vkeys `shouldSatisfy` isJust - test "has plutusData" do - (unwrap res).plutusData `shouldSatisfy` isJust - test "has plutusScripts" do - (unwrap res).plutusScripts `shouldSatisfy` isJust - test "has redeemers" do - (unwrap res).redeemers `shouldSatisfy` isJust - test "has redeemers" do - (unwrap res).redeemers `shouldSatisfy` isJust - test "does not have nativeScripts" do - (unwrap res).nativeScripts `shouldSatisfy` isNothing - test "fixture #2" do - res <- errMaybe "Failed deserialization 6" do - fromBytes witnessSetFixture2 <#> convertWitnessSet - res `shouldEqual` witnessSetFixture2Value - test "fixture #3" do - res <- errMaybe "Failed deserialization 7" do - fromBytes witnessSetFixture3 <#> convertWitnessSet - res `shouldEqual` witnessSetFixture3Value - group "fixture #4" do - res <- errMaybe "Failed deserialization 8" $ - fromBytes witnessSetFixture4 <#> convertWitnessSet - test "has nativeScripts" do - (unwrap res).nativeScripts `shouldSatisfy` isJust - group "NativeScript - deserializaton is inverse to serialization" do - test "fixture #1" do - liftEffect $ testNativeScript nativeScriptFixture1 - test "fixture #2" do - liftEffect $ testNativeScript nativeScriptFixture2 - test "fixture #3" do - liftEffect $ testNativeScript nativeScriptFixture3 - test "fixture #4" do - liftEffect $ testNativeScript nativeScriptFixture4 - test "fixture #5" do - liftEffect $ testNativeScript nativeScriptFixture5 - test "fixture #6" do - liftEffect $ testNativeScript nativeScriptFixture6 - test "fixture #7" do - liftEffect $ testNativeScript nativeScriptFixture7 - test "fixture #7" do - liftEffect $ testNativeScript nativeScriptFixture7 - -- This is here just to acknowledge the problem - skip $ test "too much nesting leads to recursion error" do - expectError $ do - let - longNativeScript = - Array.foldr (\_ acc -> T.ScriptAny [ acc ]) nativeScriptFixture1 $ - Array.range 0 50 -- change this to 50000 - liftEffect $ testNativeScript longNativeScript - group "WitnessSet - deserialization is inverse to serialization" do - let - vkeyWitnessesRoundtrip - :: ∀ (m :: Type -> Type) - . MonadEffect m - => MonadThrow Error m - => Array Vkeywitness - -> m Unit - vkeyWitnessesRoundtrip vks = do - cslVks <- traverse (liftEffect <<< Serialization.convertVkeywitness) - vks - let cslVksBytes = toBytes <$> cslVks - (_ :: Array Serialization.Vkeywitness) <- traverse - (liftEffect <<< fromBytesEffect) - cslVksBytes - pure unit - - witnessSetRoundTrip - :: ∀ (m :: Type -> Type) - . MonadEffect m - => MonadThrow Error m - => ByteArray - -> m Unit - witnessSetRoundTrip fixture = do - ws0 <- errMaybe "Failed deserialization" $ - fromBytes fixture <#> convertWitnessSet - ws1 <- liftEffect $ SW.convertWitnessSet ws0 - let - ws2 = convertWitnessSet ws1 - vkeys = fold (unwrap ws2).vkeys - vkeyWitnessesRoundtrip vkeys - ws0 `shouldEqual` ws2 -- value representation - let wsBytes = toBytes ws1 - wsBytes `shouldEqual` fixture -- byte representation - test "fixture #1" $ witnessSetRoundTrip witnessSetFixture1 - test "fixture #2" $ witnessSetRoundTrip witnessSetFixture2 - test "fixture #3" $ witnessSetRoundTrip witnessSetFixture3 - -- TODO: enable when nativeScripts are implemented - test "fixture #4" $ witnessSetRoundTrip witnessSetFixture4 - group "TextEnvelope decoding" do - test "Decoding TestEnvelope with some other type" do - let - otherTypeTextEnvelope = - """ - { - "cborHex": "484701000022120011", - "description": "other-type-text-envelope", - "type": "SomeOtherType" - } - """ - TextEnvelope envelope <- liftMaybe (error "Unexpected parsing error") $ - decodeTextEnvelope otherTypeTextEnvelope - envelope.type_ `shouldEqual` (Other "SomeOtherType") - group "PrivateKey" do - test "Decoding from bytes" do - let - fixture = - "8db3dc3d5310bcb9287610cfc45cf1c63620e8d66f0fdb36c27567b3f5e22d42" - mbKey = privateKeyFromBytes $ wrap $ unwrap $ hexToCborBytesUnsafe - fixture - isJust mbKey `shouldEqual` true - group "Plutip HTTP types" do - test "StartClusterResponse" do - let - (mbParams :: Either _ StartClusterResponse) = - decodeAeson =<< parseJsonStringToAeson plutipSuccessResponseFixture - mbParams `shouldSatisfy` isRight - -createUnspentOutput - :: T.TransactionInput - -> T.TransactionOutput - -> Effect TransactionUnspentOutput -createUnspentOutput input output = do - let input' = Serialization.convertTxInput input - output' <- Serialization.convertTxOutput output - pure $ mkTransactionUnspentOutput input' output' - -testNativeScript :: T.NativeScript -> Effect Unit -testNativeScript input = do - serialized <- pure $ NSS.convertNativeScript input - {- ^^^^ This is necessary here as convertNativeScript can throw - a maximum call stack size runtime error (see excessive nesting - test above). It needs to be lifted into the Effect monad for - purescript to handle it correctly. - -} + group "deserialization and serialization roundtrip" $ do + group "NativeScript" do + roundtripTest "nativeScriptFixture1" nativeScriptFixture1 + roundtripTest "nativeScriptFixture1" nativeScriptFixture2 + roundtripTest "nativeScriptFixture3" nativeScriptFixture3 + roundtripTest "nativeScriptFixture4" nativeScriptFixture4 + roundtripTest "nativeScriptFixture5" nativeScriptFixture5 + roundtripTest "nativeScriptFixture6" nativeScriptFixture6 + roundtripTest "nativeScriptFixture7" nativeScriptFixture7 + group "PlutusData" do + roundtripTest "plutusDataFixture1" plutusDataFixture1 + roundtripTest "plutusDataFixture2" plutusDataFixture2 + roundtripTest "plutusDataFixture3" plutusDataFixture3 + roundtripTest "plutusDataFixture4" plutusDataFixture4 + roundtripTest "plutusDataFixture5" plutusDataFixture5 + roundtripTest "plutusDataFixture6" plutusDataFixture6 + roundtripTest "plutusDataFixture7" plutusDataFixture7 + roundtripTest "plutusDataFixture8" plutusDataFixture8 + group "Transaction" do + roundtripTest "txFixture1" txFixture1 + roundtripTest "txFixture2" txFixture2 + roundtripTest "txFixture3" txFixture3 + -- roundtripTest "txFixture4" txFixture4 + roundtripTest "txFixture5" txFixture5 + roundtripTest "txFixture6" txFixture6 + group "TransactionInput" do + roundtripTest "txInputFixture1" txInputFixture1 + group "Int" do + roundtripTest "int0" int1 + -- group "Mint" do + -- roundtripTest "mint1" mint1 + -- roundtripTest "mint0" mint0 + group "TransactionOutput" do + roundtripTest "txOutputFixture1" txOutputFixture1 + group "TransactionWitnessSet" do + roundtripTest "witnessSetFixture2Value" witnessSetFixture2Value + roundtripTest "witnessSetFixture3Value" witnessSetFixture3Value + roundtripTestBytes "witnessSetFixture1" + (Proxy :: Proxy TransactionWitnessSet) + witnessSetFixture1 + roundtripTestBytes "witnessSetFixture2" + (Proxy :: Proxy TransactionWitnessSet) + witnessSetFixture2 + roundtripTestBytes "witnessSetFixture3" + (Proxy :: Proxy TransactionWitnessSet) + witnessSetFixture3 + roundtripTestBytes "witnessSetFixture4" + (Proxy :: Proxy TransactionWitnessSet) + witnessSetFixture4 - let bytes = toBytes serialized - res <- errMaybe "Failed deserialization" $ fromBytes bytes - let - res' = NSD.convertNativeScript res - res' `shouldEqual` input +roundtripTest + :: forall a + . Eq a + => Show a + => AsCbor a + => String + -> a + -> TestPlanM (Aff Unit) Unit +roundtripTest label a = + test ("Deserialization is inverse to serialization: " <> label) do + decodeCbor (encodeCbor a) `shouldEqual` Just a -txRoundtrip :: T.Transaction -> Aff Unit -txRoundtrip tx = do - cslTX <- liftEffect $ TS.convertTransaction tx - expected <- errMaybe "Cannot convert TX from CSL to CTL" $ hush $ - TD.convertTransaction cslTX - tx `shouldEqual` expected +roundtripTestBytes + :: forall a + . Eq a + => Show a + => AsCbor a + => String + -> Proxy a + -> ByteArray + -> TestPlanM (Aff Unit) Unit +roundtripTestBytes label _ bytes = do + test ("Serialization is inverse to deserialization: " <> label) do + (encodeCbor <$> (decodeCbor (wrap bytes) :: Maybe a)) `shouldEqual` Just + (wrap bytes) plutipSuccessResponseFixture :: String plutipSuccessResponseFixture = diff --git a/test/Fixtures.purs b/test/Fixtures.purs index ea0e12f16..926bd1995 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -69,54 +69,37 @@ module Test.Ctl.Fixtures , witnessSetFixture3Value , witnessSetFixture4 , utxoMapFixture + , mint1 + , mint0 + , int1 ) where import Prelude import Aeson (Aeson, aesonNull, decodeAeson, fromString, parseJsonStringToAeson) -import Cardano.AsCbor (decodeCbor) -import Cardano.Plutus.Types.PubKeyHash (PubKeyHash(..)) -import Cardano.Serialization.Lib (fromBytes) -import Cardano.Types (AuxiliaryData(AuxiliaryData), AuxiliaryDataHash(AuxiliaryDataHash), Certificate(MoveInstantaneousRewardsCert, GenesisKeyDelegation, PoolRetirement, PoolRegistration, StakeDelegation, StakeDeregistration, StakeRegistration), Ed25519KeyHash(..), Epoch(Epoch), GenesisDelegateHash(GenesisDelegateHash), GenesisHash(GenesisHash), Ipv4(Ipv4), Ipv6(Ipv6), MIRToStakeCredentials(MIRToStakeCredentials), MoveInstantaneousReward(ToStakeCreds, ToOtherPot), PaymentPubKeyHash(..), PlutusScript(..), PoolMetadata(PoolMetadata), PoolMetadataHash(PoolMetadataHash), ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates), Redeemer(Redeemer), Relay(MultiHostName, SingleHostName, SingleHostAddr), Transaction(Transaction), TransactionBody(TransactionBody), TransactionOutput(TransactionOutput), TransactionWitnessSet(TransactionWitnessSet), URL(URL), UtxoMap, Vkey(Vkey), Vkeywitness(Vkeywitness)) -import Cardano.Types (Coin(Coin), ScriptHash, Value(Value)) -import Cardano.Types (TransactionHash(TransactionHash), TransactionInput(TransactionInput)) -import Cardano.Types.Address (Address(..)) +import Cardano.AsCbor (decodeCbor, encodeCbor) +import Cardano.Types (AuxiliaryData(AuxiliaryData), Certificate(MoveInstantaneousRewardsCert, GenesisKeyDelegation, PoolRetirement, PoolRegistration, StakeDelegation, StakeDeregistration, StakeRegistration), Coin(Coin), Credential(PubKeyHashCredential), Ed25519KeyHash, Epoch(Epoch), ExUnitPrices(ExUnitPrices), ExUnits(ExUnits), GeneralTransactionMetadata(GeneralTransactionMetadata), MIRPot(Treasury, Reserves), MIRToStakeCredentials(MIRToStakeCredentials), MoveInstantaneousReward(ToStakeCreds, ToOtherPot), NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK, TimelockStart, TimelockExpiry), NetworkId(TestnetId, MainnetId), OutputDatum(OutputDatum), PaymentPubKeyHash(PaymentPubKeyHash), PlutusData(Constr, Map, Integer, List, Bytes), PlutusScript, PoolMetadata(PoolMetadata), PoolParams(PoolParams), ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates), ProtocolParamUpdate(ProtocolParamUpdate), ProtocolVersion(ProtocolVersion), Redeemer(Redeemer), RedeemerTag(Spend), Relay(MultiHostName, SingleHostName, SingleHostAddr), RewardAddress, ScriptHash, Slot(Slot), Transaction(Transaction), TransactionBody(TransactionBody), TransactionInput(TransactionInput), TransactionOutput(TransactionOutput), TransactionUnspentOutput(TransactionUnspentOutput), TransactionWitnessSet(TransactionWitnessSet), URL(URL), UnitInterval(UnitInterval), Update(Update), UtxoMap, Value(Value), Vkey(Vkey), Vkeywitness(Vkeywitness)) +import Cardano.Types.Address (Address(BaseAddress)) import Cardano.Types.AssetName (AssetName, mkAssetName) -import Cardano.Types.Credential (Credential(..)) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.Ed25519Signature as Ed25519Signature -import Cardano.Types.ExUnits (ExUnits(..)) -import Cardano.Types.GeneralTransactionMetadata (GeneralTransactionMetadata(..)) -import Cardano.Types.Mint (Mint(..)) +import Cardano.Types.Int as Int +import Cardano.Types.Mint (Mint(Mint)) import Cardano.Types.MultiAsset as MultiAsset -import Cardano.Types.NetworkId (NetworkId(..)) -import Cardano.Types.OutputDatum (OutputDatum(OutputDatum)) -import Cardano.Types.PlutusData as PD import Cardano.Types.PlutusScript (plutusV1Script, plutusV2Script) import Cardano.Types.PublicKey as PublicKey -import Cardano.Types.RedeemerTag (RedeemerTag(Spend)) -import Cardano.Types.RewardAddress (RewardAddress) -import Cardano.Types.Slot (Slot(..)) -import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput(TransactionUnspentOutput)) -import Cardano.Types.Vkey (Vkey(..)) -import Contract.Keys (publicKeyFromBech32) +import Cardano.Types.TransactionMetadatum (TransactionMetadatum(Text)) import Contract.Numeric.BigNum (BigNum) -import Contract.Numeric.BigNum (fromBigInt, fromInt, one, zero) as BigNum +import Contract.Numeric.BigNum (fromInt, one, zero) as BigNum import Contract.Transaction (PoolPubKeyHash(PoolPubKeyHash)) -import Ctl.Internal.Cardano.Types.NativeScript (NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK, TimelockStart, TimelockExpiry)) import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef, NativeScriptRef)) import Ctl.Internal.Types.Aliases (Bech32String) -import Ctl.Internal.Types.Int as Int -import Ctl.Internal.Types.MintingPolicyHash (MintingPolicyHash(..)) -import Ctl.Internal.Types.TransactionMetadata (TransactionMetadatum(Text), TransactionMetadatumLabel(TransactionMetadatumLabel)) import Data.Array as Array import Data.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe, hexToByteArray, hexToByteArrayUnsafe) import Data.Either (fromRight, hush) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (wrap) -import Data.Set (Set) -import Data.Set (singleton) as Set import Data.Tuple.Nested ((/\)) import Data.UInt as UInt import Effect (Effect) @@ -125,6 +108,7 @@ import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures.CostModels (costModelsFixture1) +import Unsafe.Coerce (unsafeCoerce) txOutputFixture1 :: TransactionOutput txOutputFixture1 = @@ -133,13 +117,15 @@ txOutputFixture1 = { networkId: TestnetId , stakeCredential: wrap $ PubKeyHashCredential $ unsafePartial $ fromJust - $ decodeCbor $ wrap + $ decodeCbor + $ wrap -- $ T.Bech32 "hstk_1rsf0q0q77t5nttxrtmpwd7tvv58a80a686t92pgy65ekz0s8ncu" $ hexToByteArrayUnsafe "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" , paymentCredential: wrap $ PubKeyHashCredential $ unsafePartial $ fromJust - $ decodeCbor $ wrap + $ decodeCbor + $ wrap -- "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" $ hexToByteArrayUnsafe "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" @@ -197,7 +183,7 @@ ed25519KeyHash1 :: Ed25519KeyHash ed25519KeyHash1 = unsafePartial $ fromJust $ Ed25519KeyHash.fromBech32 pkhBech32 bigNumOne :: BigNum -bigNumOne = unsafePartial $ fromJust $ BigNum.fromBigInt $ BigNum.fromInt 1 +bigNumOne = BigNum.fromInt 1 rewardAddress1 :: RewardAddress rewardAddress1 = { networkId: TestnetId, stakeCredential: wrap stake1 } @@ -205,45 +191,49 @@ rewardAddress1 = { networkId: TestnetId, stakeCredential: wrap stake1 } proposedProtocolParameterUpdates1 :: ProposedProtocolParameterUpdates proposedProtocolParameterUpdates1 = ProposedProtocolParameterUpdates $ Map.fromFoldable - [ GenesisHash - ( hexToByteArrayUnsafe - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - ) /\ - { minfeeA: Just $ Coin $ BigNum.fromInt 1 - , minfeeB: Just $ Coin $ BigNum.fromInt 1 - , maxBlockBodySize: Just $ UInt.fromInt 10000 - , maxTxSize: Just $ UInt.fromInt 10000 - , maxBlockHeaderSize: Just $ UInt.fromInt 1000 - , keyDeposit: Just $ Coin $ BigNum.fromInt 1 - , poolDeposit: Just $ Coin $ BigNum.fromInt 1 - , maxEpoch: Just $ Epoch one - , nOpt: Just $ UInt.fromInt 1 - , poolPledgeInfluence: Just - { numerator: bigNumOne, denominator: bigNumOne } - , expansionRate: Just { numerator: bigNumOne, denominator: bigNumOne } - , treasuryGrowthRate: Just - { numerator: bigNumOne, denominator: bigNumOne } - , protocolVersion: Just - { major: UInt.fromInt 1, minor: UInt.fromInt 1 } - , minPoolCost: Just bigNumOne - , adaPerUtxoByte: Just bigNumOne - , costModels: Just costModelsFixture1 - , executionCosts: Just - { memPrice: { numerator: bigNumOne, denominator: bigNumOne } - , stepPrice: { numerator: bigNumOne, denominator: bigNumOne } - } - , maxTxExUnits: Just { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } - , maxBlockExUnits: Just - { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } - , maxValueSize: Just $ UInt.fromInt 1 - , collateralPercentage: Just $ UInt.fromInt 140 - , maxCollateralInputs: Just $ UInt.fromInt 10 - } + [ ( unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe + "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" + ) /\ + ProtocolParamUpdate + { minfeeA: Just $ Coin $ BigNum.fromInt 1 + , minfeeB: Just $ Coin $ BigNum.fromInt 1 + , maxBlockBodySize: Just $ UInt.fromInt 10000 + , maxTxSize: Just $ UInt.fromInt 10000 + , maxBlockHeaderSize: Just $ UInt.fromInt 1000 + , keyDeposit: Just $ Coin $ BigNum.fromInt 1 + , poolDeposit: Just $ Coin $ BigNum.fromInt 1 + , maxEpoch: Just $ Epoch one + , nOpt: Just $ UInt.fromInt 1 + , poolPledgeInfluence: Just $ UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + , expansionRate: Just $ UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + , treasuryGrowthRate: Just $ UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + , protocolVersion: Just $ ProtocolVersion + { major: 1, minor: 1 } + , minPoolCost: Just $ wrap bigNumOne + , adaPerUtxoByte: Just $ wrap bigNumOne + , costModels: Just costModelsFixture1 + , executionCosts: Just $ ExUnitPrices + { memPrice: UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + , stepPrice: UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + } + , maxTxExUnits: Just $ ExUnits + { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } + , maxBlockExUnits: Just $ ExUnits + { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } + , maxValueSize: Just $ UInt.fromInt 1 + , collateralPercentage: Just $ UInt.fromInt 140 + , maxCollateralInputs: Just $ UInt.fromInt 10 + } ] -- | Extend this for your needs. type SampleTxConfig = - { inputs :: Set TransactionInput } + { inputs :: Array TransactionInput } -- | Build a sample transaction using convenient config -- | and existing one as a base. @@ -366,16 +356,16 @@ txFixture2 = , outputs: [ txOutputFixture2 ] , fee: Coin $ BigNum.fromInt 177513 , ttl: Nothing - , certs: Nothing - , withdrawals: Nothing + , certs: [] + , withdrawals: Map.empty , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing , referenceInputs: mempty , scriptDataHash: Nothing - , collateral: Nothing - , requiredSigners: Nothing + , collateral: [] + , requiredSigners: [] , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing @@ -389,7 +379,7 @@ txFixture2 = , redeemers: [] } , isValid: true - , auxiliaryData: Nothing + , auxiliaryData: mempty } txFixture3 :: Transaction @@ -406,7 +396,7 @@ txFixture3 = , payment: "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigNum.fromInt 2353402) mempty + , amount: Value (Coin $ BigNum.fromInt 2353402) MultiAsset.empty , datum: Nothing , scriptRef: Nothing } @@ -418,23 +408,23 @@ txFixture3 = , payment: "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigNum.fromInt 1000000) mempty + , amount: Value (Coin $ BigNum.fromInt 1000000) MultiAsset.empty , datum: Nothing , scriptRef: Nothing } ] , fee: Coin $ BigNum.fromInt 177513 , ttl: Nothing - , certs: Nothing - , withdrawals: Nothing + , certs: [] + , withdrawals: Map.empty , update: Nothing , referenceInputs: [ txInputFixture1 ] , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing , scriptDataHash: Nothing - , collateral: Nothing - , requiredSigners: Nothing + , collateral: [] + , requiredSigners: [] , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing @@ -448,123 +438,144 @@ txFixture3 = , redeemers: [] } , isValid: true - , auxiliaryData: Nothing + , auxiliaryData: mempty } +mint1 = Mint $ Map.fromFoldable + [ currencySymbol1 /\ Map.fromFoldable + [ tokenName2 /\ Int.newPositive BigNum.one + ] + ] +mint0 = Mint $ Map.fromFoldable + [ currencySymbol1 /\ Map.fromFoldable + [ tokenName2 /\ Int.newPositive BigNum.one + ] + ] + +int1 :: Int.Int +int1 = Int.newPositive BigNum.one + txFixture4 :: Transaction txFixture4 = Transaction { body: TransactionBody { inputs: [ txInputFixture1 ] , outputs: - [ TransactionOutput - { address: keyHashBaseAddress - { stake: - "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - , payment: - "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - } - , amount: Value (Coin $ BigNum.fromInt 2353402) mempty - , datum: OutputDatum $ wrap plutusDataFixture1 - , scriptRef: Just $ PlutusScriptRef plutusScriptFixture1 - } - , TransactionOutput - { address: keyHashBaseAddress - { stake: - "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - , payment: - "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - } - , amount: Value (Coin $ BigNum.fromInt 1000000) mempty - , datum: Nothing - , scriptRef: Just $ NativeScriptRef nativeScriptFixture5 - } + [ -- TransactionOutput + -- { address: keyHashBaseAddress + -- { stake: + -- "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" + -- -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" + -- , payment: + -- "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" + -- } + -- , amount: Value (Coin $ BigNum.fromInt 2353402) MultiAsset.empty + -- , datum: Just $ OutputDatum plutusDataFixture1 + -- , scriptRef: Just $ PlutusScriptRef plutusScriptFixture1 + -- } + -- , TransactionOutput + -- { address: keyHashBaseAddress + -- { stake: + -- "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" + -- -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" + -- , payment: + -- "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" + -- } + -- , amount: Value (Coin $ BigNum.fromInt 1000000) MultiAsset.empty + -- , datum: Nothing + -- , scriptRef: Just $ NativeScriptRef nativeScriptFixture5 + -- } ] , fee: Coin $ BigNum.fromInt 177513 , ttl: Just $ Slot $ BigNum.fromInt 123 - , certs: Just - [ StakeRegistration stake1 - , StakeDeregistration stake1 - , StakeDelegation stake1 - (PoolPubKeyHash $ PubKeyHash ed25519KeyHash1) - , PoolRegistration - { operator: PoolPubKeyHash $ PubKeyHash ed25519KeyHash1 - , vrfKeyhash: unsafePartial $ fromJust $ - hexToByteArray - "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - >>= decodeCbor - , pledge: bigNumOne - , cost: bigNumOne - , margin: { numerator: bigNumOne, denominator: bigNumOne } - , rewardAccount: - { networkId: MainnetId, paymentCredential: stake1 } - , poolOwners: [ wrap $ wrap ed25519KeyHash1 ] - , relays: - [ SingleHostAddr - { port: Just 8080 - , ipv4: Just $ Ipv4 $ byteArrayFromIntArrayUnsafe - [ 127, 0, 0, 1 ] - , ipv6: Just $ Ipv6 $ byteArrayFromIntArrayUnsafe - $ Array.replicate 16 123 - } - , SingleHostName - { port: Just 8080 - , dnsName: "example.com" - } - , MultiHostName { dnsName: "example.com" } - ] - , poolMetadata: Just $ PoolMetadata - { url: URL "https://example.com/" - , hash: PoolMetadataHash $ - hexToByteArrayUnsafe - "94b8cac47761c1140c57a48d56ab15d27a842abff041b3798b8618fa84641f5a" - } - } - , PoolRetirement - { poolKeyHash: PoolPubKeyHash $ PubKeyHash ed25519KeyHash1 - , epoch: Epoch one - } - , GenesisKeyDelegation - { genesisHash: GenesisHash $ - hexToByteArrayUnsafe - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - , genesisDelegateHash: GenesisDelegateHash $ - hexToByteArrayUnsafe - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - , vrfKeyhash: unsafePartial $ fromJust $ - hexToByteArray - "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - >>= decodeCbor - } - , MoveInstantaneousRewardsCert $ ToOtherPot - { pot: one - , amount: bigNumOne - } - , MoveInstantaneousRewardsCert $ ToStakeCreds - { pot: one - , amounts: MIRToStakeCredentials $ Map.fromFoldable - [ stake1 /\ Int.newPositive bigNumOne ] - } + , certs: + [ -- StakeRegistration $ wrap stake1 + -- , StakeDeregistration $ wrap stake1 + -- , StakeDelegation (wrap stake1) + -- (PoolPubKeyHash ed25519KeyHash1) + -- , PoolRegistration $ PoolParams + -- { operator: PoolPubKeyHash ed25519KeyHash1 + -- , vrfKeyhash: unsafePartial $ fromJust $ + -- hexToByteArray + -- "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" + -- >>= wrap >>> decodeCbor + -- , pledge: bigNumOne + -- , cost: bigNumOne + -- , margin: UnitInterval + -- { numerator: bigNumOne, denominator: bigNumOne } + -- , rewardAccount: + -- { networkId: MainnetId, stakeCredential: wrap stake1 } + -- , poolOwners: [ ed25519KeyHash1 ] + -- , relays: + -- [ SingleHostAddr + -- { port: Just 8080 + -- , ipv4: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe + -- [ 127, 0, 0, 1 ] + -- , ipv6: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe + -- $ Array.replicate 16 123 + -- } + -- , SingleHostName + -- { port: Just 8080 + -- , dnsName: "example.com" + -- } + -- , MultiHostName { dnsName: "example.com" } + -- ] + -- , poolMetadata: Just $ PoolMetadata + -- { url: URL "https://example.com/" + -- , hash: unsafePartial $ fromJust $ decodeCbor $ wrap $ + -- hexToByteArrayUnsafe + -- "94b8cac47761c1140c57a48d56ab15d27a842abff041b3798b8618fa84641f5a" + -- } + -- } + -- , PoolRetirement + -- { poolKeyHash: PoolPubKeyHash ed25519KeyHash1 + -- , epoch: Epoch one + -- } + -- , GenesisKeyDelegation + -- { genesisHash: unsafePartial $ fromJust $ decodeCbor $ wrap $ + -- hexToByteArrayUnsafe + -- "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" + -- , genesisDelegateHash: unsafePartial $ fromJust $ decodeCbor + -- $ wrap + -- $ + -- hexToByteArrayUnsafe + -- "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" + -- , vrfKeyhash: unsafePartial $ fromJust $ decodeCbor $ wrap $ + -- hexToByteArrayUnsafe + -- "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" + -- } + -- , MoveInstantaneousRewardsCert $ ToOtherPot + -- { pot: Reserves + -- , amount: wrap bigNumOne + -- } + -- , MoveInstantaneousRewardsCert $ ToStakeCreds + -- { pot: Treasury + -- , amounts: MIRToStakeCredentials $ Map.fromFoldable + -- [ wrap stake1 /\ Int.newPositive bigNumOne ] + -- } ] - , withdrawals: Just $ Map.fromFoldable - [ rewardAddress1 /\ Coin one ] - , update: Just - { proposedProtocolParameterUpdates: - proposedProtocolParameterUpdates1 - , epoch: Epoch one - } - , auxiliaryDataHash: Just $ AuxiliaryDataHash - $ byteArrayFromIntArrayUnsafe - $ Array.replicate 32 0 - , validityStartInterval: Just $ Slot $ BigNum.fromInt 124 + , withdrawals: Map.fromFoldable + [ rewardAddress1 /\ Coin BigNum.one ] + , update: -- Just $ Update + -- { proposedProtocolParameterUpdates: + -- proposedProtocolParameterUpdates1 + -- , epoch: Epoch zero + -- } + Nothing + , auxiliaryDataHash: -- decodeCbor $ wrap + -- $ byteArrayFromIntArrayUnsafe + -- $ Array.replicate 32 0 + Nothing + , validityStartInterval: Nothing -- Just $ Slot $ BigNum.fromInt 124 , mint: Just $ Mint $ Map.fromFoldable - [ currencySymbol1 /\ Map.fromFoldable [ tokenName1 /\ one ] ] + [ currencySymbol1 /\ Map.fromFoldable + [ tokenName2 /\ Int.newPositive BigNum.one + ] + ] , referenceInputs: mempty , scriptDataHash: Nothing - , collateral: Nothing - , requiredSigners: Just [ ed25519KeyHashFixture1 ] + , collateral: [] + , requiredSigners: [ ed25519KeyHashFixture1 ] , networkId: Just MainnetId , collateralReturn: Just txOutputFixture1 , totalCollateral: Just $ Coin $ BigNum.fromInt 5_000_000 @@ -578,7 +589,7 @@ txFixture4 = , redeemers: [] } , isValid: true - , auxiliaryData: Nothing + , auxiliaryData: mempty } txFixture5 :: Transaction @@ -595,23 +606,24 @@ txFixture5 = , payment: "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" } - , amount: Value (Coin $ BigNum.fromInt 490234098) mempty - , datum: OutputDatum $ wrap plutusDataFixture1 + , amount: Value (Coin $ BigNum.fromInt 490234098) + MultiAsset.empty + , datum: Just $ OutputDatum plutusDataFixture1 , scriptRef: Just $ PlutusScriptRef plutusScriptFixture2 } ] , fee: Coin $ BigNum.fromInt 89489324 , ttl: Nothing - , certs: Nothing - , withdrawals: Nothing + , certs: [] + , withdrawals: Map.empty , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing , referenceInputs: mempty , scriptDataHash: Nothing - , collateral: Nothing - , requiredSigners: Nothing + , collateral: [] + , requiredSigners: [] , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing @@ -625,7 +637,7 @@ txFixture5 = , redeemers: [] } , isValid: true - , auxiliaryData: Nothing + , auxiliaryData: mempty } txFixture6 :: Transaction @@ -662,7 +674,7 @@ txFixture6 = , auxiliaryData: AuxiliaryData { metadata: Just $ GeneralTransactionMetadata ( Map.fromFoldable - [ (BigNum.fromInt 8) /\ Text "foo" ] + [ BigNum.fromInt 8 /\ Text "foo" ] ) , nativeScripts: Nothing , plutusScripts: Nothing @@ -786,7 +798,7 @@ utxoFixture1 = hexToByteArrayUnsafe input :: TransactionInput input = TransactionInput { index: UInt.fromInt 0 - , transactionId: TransactionHash $ unsafePartial $ fromJust $ fromBytes + , transactionId: unsafePartial $ fromJust $ decodeCbor $ wrap ( byteArrayFromIntArrayUnsafe [ 198 , 181 @@ -829,9 +841,11 @@ output = ( TransactionOutput { address: BaseAddress { networkId: TestnetId - , paymentCredential: wrap $ PubKeyHashCredential $ unsafePartial $ fromJust + , paymentCredential: wrap $ PubKeyHashCredential $ unsafePartial + $ fromJust $ decodeCbor - $ wrap $ + $ wrap + $ byteArrayFromIntArrayUnsafe [ 243 , 63 @@ -862,40 +876,41 @@ output = , 223 , 36 ] - , stakeCredential: wrap $ PubKeyHashCredential $ unsafePartial $ fromJust + , stakeCredential: wrap $ PubKeyHashCredential $ unsafePartial + $ fromJust $ decodeCbor $ wrap - ( byteArrayFromIntArrayUnsafe - [ 57 - , 3 - , 16 - , 58 - , 231 - , 6 - , 129 - , 67 - , 155 - , 84 - , 118 - , 254 - , 245 - , 159 - , 67 - , 155 - , 139 - , 200 - , 109 - , 132 - , 191 - , 178 - , 211 - , 118 - , 252 - , 63 - , 86 - , 23 - ] - ) + ( byteArrayFromIntArrayUnsafe + [ 57 + , 3 + , 16 + , 58 + , 231 + , 6 + , 129 + , 67 + , 155 + , 84 + , 118 + , 254 + , 245 + , 159 + , 67 + , 155 + , 139 + , 200 + , 109 + , 132 + , 191 + , 178 + , 211 + , 118 + , 252 + , 63 + , 86 + , 23 + ] + ) } , amount: Value (Coin (BigNum.fromInt 5000000)) MultiAsset.empty , datum: Nothing @@ -1006,12 +1021,12 @@ witnessSetFixture2Value = ( unsafePartial $ fromJust $ PublicKey.fromBech32 "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" ) - , signature: - ( unsafePartial $ fromJust <<< Ed25519Signature.fromBech32 $ - "ed25519_sig1mr6pm5kanam2wkmae70jx7fjkzepghefj0lmnczu6fra\ - \6auf2urgrte5axxhunw4x34l3l8tj9c0t4le39tj8lpjdgxmqnujw07t\ - \kzs9m6t6x" - ) + , signature: + ( unsafePartial $ fromJust <<< Ed25519Signature.fromBech32 $ + "ed25519_sig1mr6pm5kanam2wkmae70jx7fjkzepghefj0lmnczu6fra\ + \6auf2urgrte5axxhunw4x34l3l8tj9c0t4le39tj8lpjdgxmqnujw07t\ + \kzs9m6t6x" + ) } ] } @@ -1029,43 +1044,43 @@ witnessSetFixture3Value = { bootstraps: [] , nativeScripts: [] , plutusData: - [ PD.Bytes - ( byteArrayFromIntArrayUnsafe - [ 43 - , 184 - , 13 - , 83 - , 123 - , 29 - , 163 - , 227 - , 139 - , 211 - , 3 - , 97 - , 170 - , 133 - , 86 - , 134 - , 189 - , 224 - , 234 - , 205 - , 113 - , 98 - , 254 - , 246 - , 162 - , 95 - , 233 - , 123 - , 245 - , 39 - , 162 - , 91 - ] - ) - ] + [ Bytes + ( byteArrayFromIntArrayUnsafe + [ 43 + , 184 + , 13 + , 83 + , 123 + , 29 + , 163 + , 227 + , 139 + , 211 + , 3 + , 97 + , 170 + , 133 + , 86 + , 134 + , 189 + , 224 + , 234 + , 205 + , 113 + , 98 + , 254 + , 246 + , 162 + , 95 + , 233 + , 123 + , 245 + , 39 + , 162 + , 91 + ] + ) + ] , plutusScripts: [] , redeemers: [] , vkeys: @@ -1075,11 +1090,11 @@ witnessSetFixture3Value = "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" ) , signature: - ( unsafePartial $ fromJust <<< Ed25519Signature.fromBech32 $ - "ed25519_sig1clmhgxx9e9t24wzgkmcsr44uq98j935evsjnrj8nn7ge08\ - \qrz0mgdxv5qtz8dyghs47q3lxwk4akq3u2ty8v4egeqvtl02ll0nfcqqq\ - \6faxl6" - ) + ( unsafePartial $ fromJust <<< Ed25519Signature.fromBech32 $ + "ed25519_sig1clmhgxx9e9t24wzgkmcsr44uq98j935evsjnrj8nn7ge08\ + \qrz0mgdxv5qtz8dyghs47q3lxwk4akq3u2ty8v4egeqvtl02ll0nfcqqq\ + \6faxl6" + ) } ] } @@ -1098,7 +1113,7 @@ addressString1 = mkTxInput :: { txId :: String, ix :: Int } -> TransactionInput mkTxInput { txId, ix } = TransactionInput - { transactionId: wrap $ unsafePartial $ fromJust $ fromBytes $ + { transactionId: unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe txId , index: UInt.fromInt ix } @@ -1114,6 +1129,7 @@ ed25519KeyHashFixture1 = -- $ Bech32 "hstk_1rsf0q0q77t5nttxrtmpwd7tvv58a80a686t92pgy65ekz0s8ncu" unsafePartial $ fromJust $ decodeCbor + $ wrap $ hexToByteArrayUnsafe "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" @@ -1122,6 +1138,7 @@ ed25519KeyHashFixture2 = -- "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" unsafePartial $ fromJust $ decodeCbor + $ wrap $ hexToByteArrayUnsafe "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" @@ -1153,40 +1170,42 @@ keyHashBaseAddress { payment, stake } = BaseAddress , stakeCredential: wrap $ PubKeyHashCredential $ unsafePartial $ fromJust $ decodeCbor -- $ T.Bech32 "hstk_1rsf0q0q77t5nttxrtmpwd7tvv58a80a686t92pgy65ekz0s8ncu" + $ wrap $ hexToByteArrayUnsafe stake - , paymentCred: + , paymentCredential: wrap $ PubKeyHashCredential $ unsafePartial $ fromJust $ decodeCbor -- "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" + $ wrap $ hexToByteArrayUnsafe payment } -plutusDataFixture1 :: PD.PlutusData -plutusDataFixture1 = PD.List [] +plutusDataFixture1 :: PlutusData +plutusDataFixture1 = List [] -plutusDataFixture2 :: PD.PlutusData -plutusDataFixture2 = PD.List [ plutusDataFixture1 ] +plutusDataFixture2 :: PlutusData +plutusDataFixture2 = List [ plutusDataFixture1 ] -plutusDataFixture3 :: PD.PlutusData -plutusDataFixture3 = PD.Bytes +plutusDataFixture3 :: PlutusData +plutusDataFixture3 = Bytes ( hexToByteArrayUnsafe "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" ) -plutusDataFixture4 :: PD.PlutusData -plutusDataFixture4 = PD.Constr BigNum.one +plutusDataFixture4 :: PlutusData +plutusDataFixture4 = Constr BigNum.one [ plutusDataFixture2, plutusDataFixture3 ] -plutusDataFixture5 :: PD.PlutusData -plutusDataFixture5 = PD.Integer (BigInt.fromInt 42) +plutusDataFixture5 :: PlutusData +plutusDataFixture5 = Integer (BigInt.fromInt 42) -plutusDataFixture6 :: PD.PlutusData -plutusDataFixture6 = PD.Map +plutusDataFixture6 :: PlutusData +plutusDataFixture6 = Map [ plutusDataFixture1 /\ plutusDataFixture2 , plutusDataFixture3 /\ plutusDataFixture4 ] -plutusDataFixture7 :: PD.PlutusData -plutusDataFixture7 = PD.List +plutusDataFixture7 :: PlutusData +plutusDataFixture7 = List [ plutusDataFixture1 , plutusDataFixture2 , plutusDataFixture3 @@ -1195,23 +1214,23 @@ plutusDataFixture7 = PD.List , plutusDataFixture6 ] -plutusDataFixture8 :: PD.PlutusData -plutusDataFixture8 = PD.Constr BigNum.zero - [ PD.Bytes +plutusDataFixture8 :: PlutusData +plutusDataFixture8 = Constr BigNum.zero + [ Bytes ( hexToByteArrayUnsafe "da13ed22b9294f1d86bbd530e99b1456884c7364bf16c90edc1ae41e" ) - , PD.Integer (BigInt.fromInt 500000000) - , PD.Bytes + , Integer (BigInt.fromInt 500000000) + , Bytes ( hexToByteArrayUnsafe "82325cbfc20b85bd1ca12e5d12b44b83f68662d8395167b45f1ff7fa" ) - , PD.Bytes (hexToByteArrayUnsafe "746f6e6573206f6620736b7920") - , PD.Bytes + , Bytes (hexToByteArrayUnsafe "746f6e6573206f6620736b7920") + , Bytes ( hexToByteArrayUnsafe "da13ed22b9294f1d86bbd530e99b1456884c7364bf16c90edc1ae41e" ) - , PD.Integer (BigInt.fromInt 45) + , Integer (BigInt.fromInt 45) ] plutusDataFixture8Bytes :: ByteArray @@ -1228,24 +1247,6 @@ plutusDataFixture8Bytes' = hexToByteArrayUnsafe \206f6620736b7920581cda13ed22b9294f1d86bbd530e99b1456884c7364bf16c90edc1ae41e\ \182d" -scriptHashFromString :: String -> ScriptHash -scriptHashFromString s = unsafePartial $ fromJust $ decodeCbor $ wrap $ - hexToByteArrayUnsafe s - -scriptHash1 :: ScriptHash -scriptHash1 = scriptHashFromString - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - -scriptHash4 :: ScriptHash -scriptHash4 = scriptHashFromString - "1e4409ba69fb38887c23d15a766476384085b66a755530934938abfe" - -policyId :: MintingPolicyHash -policyId = MintingPolicyHash scriptHash1 - -policyId4 :: MintingPolicyHash -policyId4 = MintingPolicyHash scriptHash4 - readJsonFixtureFile :: String -> Effect Aeson readJsonFixtureFile path = readTextFile UTF8 path >>= @@ -1253,18 +1254,6 @@ readJsonFixtureFile path = -- TODO: remove CIP25 fixtures below -cip25MetadataJsonFixture1 :: Effect Aeson -cip25MetadataJsonFixture1 = - readJsonFixtureFile "test/Fixtures/cip25MetadataJsonFixture1.json" - -cip25MetadataJsonFixture2 :: Effect Aeson -cip25MetadataJsonFixture2 = - readJsonFixtureFile "test/Fixtures/cip25MetadataJsonFixture2.json" - -cip25MetadataJsonFixture3 :: Effect Aeson -cip25MetadataJsonFixture3 = - readJsonFixtureFile "test/Fixtures/cip25MetadataJsonFixture3.json" - ogmiosEvaluateTxValidRespFixture :: Effect Aeson ogmiosEvaluateTxValidRespFixture = readJsonFixtureFile "test/Fixtures/OgmiosEvaluateTxValidRespFixture.json" @@ -1320,9 +1309,10 @@ fullyAppliedScriptFixture = \20014c01021820004c010544746573740001" nullPaymentPubKeyHash :: PaymentPubKeyHash -nullPaymentPubKeyHash = PaymentPubKeyHash $ wrap +nullPaymentPubKeyHash = PaymentPubKeyHash $ unsafePartial $ fromJust - $ fromBytes + $ decodeCbor + $ wrap $ hexToByteArrayUnsafe "f9dca21a6c826ec8acb4cf395cbc24351937bfe6560b2683ab8b415f" diff --git a/test/Fixtures/CostModels.js b/test/Fixtures/CostModels.js index 4c7d4ddb0..63dfcffab 100644 --- a/test/Fixtures/CostModels.js +++ b/test/Fixtures/CostModels.js @@ -1,5 +1,5 @@ import * as CSL from "@mlabs-haskell/cardano-serialization-lib-gc"; export function defaultCostmdls() { - return lib.TxBuilderConstants.plutus_vasil_cost_models(); + return CSL.TxBuilderConstants.plutus_vasil_cost_models(); } diff --git a/test/Fixtures/CostModels.purs b/test/Fixtures/CostModels.purs index 9374ab586..743cf0532 100644 --- a/test/Fixtures/CostModels.purs +++ b/test/Fixtures/CostModels.purs @@ -15,7 +15,6 @@ import Effect.Unsafe (unsafePerformEffect) foreign import defaultCostmdls :: Effect Costmdls costModelsFixture1 :: Map Language CostModel -costModelsFixture1 = unsafePerformEffect - ( defaultCostmdls <#> unpackMapContainerToMapWith Language.fromCsl +costModelsFixture1 = unsafePerformEffect do + defaultCostmdls <#> unpackMapContainerToMapWith Language.fromCsl CostModel.fromCsl - ) diff --git a/test/Hashing.purs b/test/Hashing.purs index 3ef538322..a9da67443 100644 --- a/test/Hashing.purs +++ b/test/Hashing.purs @@ -2,26 +2,24 @@ module Test.Ctl.Hashing (suite) where import Prelude +import Cardano.AsCbor (decodeCbor) +import Cardano.Types (ScriptHash) import Cardano.Types.DataHash (DataHash) import Cardano.Types.PlutusData (PlutusData(Integer)) +import Cardano.Types.PlutusScript (plutusV1Script, plutusV2Script) +import Contract.Hashing (datumHash) as Hashing +import Contract.Scripts (PlutusScript) import Ctl.Internal.Hashing ( blake2b256Hash , blake2b256HashHex - , datumHash , plutusScriptHash , sha256Hash , sha256HashHex , sha3_256Hash , sha3_256HashHex ) as Hashing -import Ctl.Internal.Serialization.Hash (ScriptHash, scriptHashFromBytes) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.Scripts (PlutusScript, plutusV1Script, plutusV2Script) -import Data.ByteArray - ( ByteArray - , byteArrayFromAscii - , hexToByteArrayUnsafe - ) +import Data.ByteArray (ByteArray, byteArrayFromAscii, hexToByteArrayUnsafe) import Data.Maybe (fromJust) import Data.Newtype (wrap) import Effect.Aff (Aff) @@ -51,13 +49,13 @@ suite = `shouldEqual` plutusV2ScriptHashFixture test "blake2b256 hash of Plutus data" do - Hashing.datumHash (wrap plutusDataFixture7) + Hashing.datumHash plutusDataFixture7 `shouldEqual` datumHashFixture test "blake2b256 hash of Plutus data - Integer 0 (regression to \ \https://github.com/Plutonomicon/cardano-transaction-lib/issues/488 ?)" do - Hashing.datumHash (wrap $ Integer (fromInt 0)) + Hashing.datumHash (Integer (fromInt 0)) `shouldEqual` zeroIntDatumHashFixture test "sha256 hash of an arbitrary byte array" do @@ -95,13 +93,13 @@ sha3_256HexDigestFixture = -- Checked that it corresponds to blake2b256(\00) ie. Integer 0 zeroIntDatumHashFixture :: DataHash zeroIntDatumHashFixture = - wrap $ + unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314" datumHashFixture :: DataHash datumHashFixture = - wrap $ + unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "0ba47e574456db8938e56f889d4c30099256f96008e0d4b6c4688f47ec342c9d" @@ -112,7 +110,7 @@ plutusV1ScriptFixture = plutusV1ScriptHashFixture :: ScriptHash plutusV1ScriptHashFixture = - unsafePartial $ fromJust $ scriptHashFromBytes $ + unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656" @@ -123,6 +121,6 @@ plutusV2ScriptFixture = plutusV2ScriptHashFixture :: ScriptHash plutusV2ScriptHashFixture = - unsafePartial $ fromJust $ scriptHashFromBytes $ + unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "793f8c8cffba081b2a56462fc219cc8fe652d6a338b62c7b134876e7" diff --git a/test/Integration.purs b/test/Integration.purs index 697b2fa5a..3984de7c3 100644 --- a/test/Integration.purs +++ b/test/Integration.purs @@ -2,7 +2,8 @@ module Test.Ctl.Integration (main, testPlan, stakingSuite) where import Prelude -import Contract.Address (Ed25519KeyHash, StakePubKeyHash(StakePubKeyHash)) +import Cardano.AsCbor (decodeCbor) +import Contract.Address (Ed25519KeyHash) import Contract.Backend.Ogmios (getPoolParameters) import Contract.Config (testnetConfig) import Contract.Monad (runContract) @@ -13,7 +14,6 @@ import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Contract.Test.Utils (exitCode, interruptOnSignal) import Contract.Time (getEraSummaries, getSystemStart) import Ctl.Internal.Contract.Monad (wrapQueryM) -import Ctl.Internal.Serialization.Hash (ed25519KeyHashFromBytes) import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (wrap) import Data.Posix.Signal (Signal(SIGINT)) @@ -77,15 +77,13 @@ stakingSuite = do void $ getPoolIds test "getPubKeyHashDelegationsAndRewards #1" do noWallet do - res <- getPubKeyHashDelegationsAndRewards $ StakePubKeyHash $ wrap - ed25519KeyHash1 + res <- getPubKeyHashDelegationsAndRewards ed25519KeyHash1 res `shouldEqual` Nothing test "getPubKeyHashDelegationsAndRewards #2" do noWallet do - void $ getPubKeyHashDelegationsAndRewards $ StakePubKeyHash $ wrap - ed25519KeyHash2 + void $ getPubKeyHashDelegationsAndRewards ed25519KeyHash2 ed25519KeyHash2 :: Ed25519KeyHash -ed25519KeyHash2 = unsafePartial $ fromJust $ ed25519KeyHashFromBytes $ +ed25519KeyHash2 = unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "541d6a23b07ebe1363671f49c833f6c33176ec968de1482fdf15cc1f" diff --git a/test/Metadata/Cip25.purs b/test/Metadata/Cip25.purs deleted file mode 100644 index 8bcea4953..000000000 --- a/test/Metadata/Cip25.purs +++ /dev/null @@ -1,119 +0,0 @@ -module Test.Ctl.Metadata.Cip25 (suite) where - -import Prelude - -import Aeson (decodeAeson) -import Ctl.Internal.FromData (fromData) -import Ctl.Internal.Metadata.Cip25.Cip25String - ( fromDataString - , fromMetadataString - , toCip25Strings - , toDataString - , toMetadataString - ) -import Ctl.Internal.Metadata.MetadataType - ( fromGeneralTxMetadata - , toGeneralTxMetadata - ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.ToData (toData) -import Data.Either (Either(Right), hush) -import Data.Maybe (Maybe(Just)) -import Data.TextDecoder (decodeUtf8) -import Data.TextEncoder (encodeUtf8) -import Effect.Aff (Aff) -import Effect.Class (liftEffect) -import Mote (group, test) -import Test.Ctl.Fixtures - ( cip25MetadataFixture1 - , cip25MetadataFixture2 - , cip25MetadataFixture3 - , cip25MetadataFixture4 - , cip25MetadataJsonFixture1 - , cip25MetadataJsonFixture2 - , unsafeMkCip25String - ) -import Test.QuickCheck ((===)) -import Test.QuickCheck.Combinators ((==>)) -import Test.Spec.Assertions (shouldEqual) -import Test.Spec.QuickCheck (quickCheck) - -suite :: TestPlanM (Aff Unit) Unit -suite = do - group "CIP25 Metadata" do - test "Long string ToData encoding" do - -- decodeUtf8 is not an inverse of encodeUtf8 - quickCheck $ \str -> do - (hush (decodeUtf8 (encodeUtf8 str)) === Just str) ==> - (fromDataString (toDataString str) === Just str) - test "Long string ToMetadata encoding" do - -- decodeUtf8 is not an inverse of encodeUtf8 - quickCheck $ \str -> do - (hush (decodeUtf8 (encodeUtf8 str)) === Just str) ==> - (fromMetadataString (toMetadataString str) === Just str) - test "toCip25Strings #1" do - toCip25Strings "asd" `shouldEqual` [ unsafeMkCip25String "asd" ] - test "toCip25Strings #2" do - toCip25Strings str80Chars - `shouldEqual` - [ unsafeMkCip25String - "0123456789012345678901234567890123456789012345678901234567890123" - , unsafeMkCip25String "4567890123456789" - ] - test "toCip25Strings #3" do - toCip25Strings str160Chars - `shouldEqual` - [ unsafeMkCip25String - "0123456789012345678901234567890123456789012345678901234567890123" - , unsafeMkCip25String - "4567890123456789012345678901234567890123456789012345678901234567" - , unsafeMkCip25String "89012345678901234567890123456789" - ] - test "toCip25Strings #4" do - toCip25Strings - "0123456789012345678901234567890123456789012345678901234567890123" - `shouldEqual` - [ unsafeMkCip25String - "0123456789012345678901234567890123456789012345678901234567890123" - ] - test "MetadataType instance #1" do - fromGeneralTxMetadata (toGeneralTxMetadata cip25MetadataFixture1) - `shouldEqual` Just cip25MetadataFixture1 - test "MetadataType instance #2" do - fromGeneralTxMetadata (toGeneralTxMetadata cip25MetadataFixture2) - `shouldEqual` Just cip25MetadataFixture2 - test "MetadataType instance #3" do - fromGeneralTxMetadata (toGeneralTxMetadata cip25MetadataFixture3) - `shouldEqual` Just cip25MetadataFixture3 - test "MetadataType instance #4" do - fromGeneralTxMetadata (toGeneralTxMetadata cip25MetadataFixture4) - `shouldEqual` Just cip25MetadataFixture4 - test "FromData / ToData instances #1" do - fromData (toData cip25MetadataFixture1) `shouldEqual` - Just cip25MetadataFixture1 - test "FromData / ToData instances #2" do - fromData (toData cip25MetadataFixture2) `shouldEqual` - Just cip25MetadataFixture2 - test "FromData / ToData instances #3" do - fromData (toData cip25MetadataFixture3) `shouldEqual` - Just cip25MetadataFixture3 - test "FromData / ToData instances #4" do - fromData (toData cip25MetadataFixture4) `shouldEqual` - Just cip25MetadataFixture4 - test "DecodeJson instance #1" do - jsonFixture <- liftEffect cip25MetadataJsonFixture1 - decodeAeson jsonFixture `shouldEqual` - Right cip25MetadataFixture1 - test "DecodeJson instance #2" do - jsonFixture <- liftEffect cip25MetadataJsonFixture2 - decodeAeson jsonFixture `shouldEqual` - Right cip25MetadataFixture2 - -str40Chars :: String -str40Chars = "0123456789012345678901234567890123456789" - -str80Chars :: String -str80Chars = str40Chars <> str40Chars - -str160Chars :: String -str160Chars = str80Chars <> str80Chars diff --git a/test/MustSpendTotal.purs b/test/MustSpendTotal.purs deleted file mode 100644 index 4de25b9b4..000000000 --- a/test/MustSpendTotal.purs +++ /dev/null @@ -1,60 +0,0 @@ -module Test.Ctl.MustSpendTotal - ( main - , suite - ) where - -import Prelude hiding (join) - -import Contract.TxConstraints - ( TxConstraints - , mustProduceAtLeast - , mustProduceAtLeastTotal - , mustSpendAtLeast - , mustSpendAtLeastTotal - ) -import Contract.Value as Value -import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) -import Data.Lattice (join) -import Effect (Effect) -import Effect.Aff (Aff, launchAff_) -import Mote (group, test) -import Test.QuickCheck (Result, (), (===)) -import Test.Spec.QuickCheck (quickCheck) - --- Run with `spago test --main Test.Ctl.MustSpendTotal` -main :: Effect Unit -main = launchAff_ do - interpret suite - -suite :: TestPlanM (Aff Unit) Unit -suite = do - group "mustXAtLeastTotal works correctly" do - test "mustSpendAtLeastTotal is roundtrip to mustSpendAtLeast" $ do - quickCheck $ prop_roundtrip mustSpendAtLeast mustSpendAtLeastTotal - test "mustSpendAtLeastTotal is homomorphism" do - quickCheck $ - prop_roundtripOverMonoid mustSpendAtLeast mustSpendAtLeastTotal - test "mustProduceAtLeastTotal is roundtrip to mustProduceAtLeast" $ do - quickCheck $ prop_roundtrip mustProduceAtLeast mustProduceAtLeastTotal - test "mustProduceAtLeastTotal is homomorphism" do - quickCheck $ - prop_roundtripOverMonoid mustProduceAtLeast mustProduceAtLeastTotal - --- Properties - -prop_roundtripOverMonoid - :: (Value.Value -> TxConstraints) - -> (TxConstraints -> Value.Value) - -> Value.Value - -> Value.Value - -> Result -prop_roundtripOverMonoid must total x y = - (x `join` y) == total (must x <> must y) - "On value 1 " <> show x <> " and value 2 " <> show y - -prop_roundtrip - :: (Value.Value -> TxConstraints) - -> (TxConstraints -> Value.Value) - -> Value.Value - -> Result -prop_roundtrip must total x = (must >>> total) x === x diff --git a/test/NativeScript.purs b/test/NativeScript.purs index 235a58604..bb0237496 100644 --- a/test/NativeScript.purs +++ b/test/NativeScript.purs @@ -3,19 +3,18 @@ module Test.Ctl.NativeScript (suite) where import Prelude import Aeson (decodeAeson, encodeAeson) -import Ctl.Internal.Cardano.Types.NativeScript +import Cardano.AsCbor (decodeCbor) +import Cardano.Types (Ed25519KeyHash) +import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash +import Cardano.Types.NativeScript ( NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK) ) import Ctl.Internal.NativeScripts (getMaximumSigners) -import Ctl.Internal.Serialization.Hash - ( Ed25519KeyHash - , ed25519KeyHashFromBech32 - , ed25519KeyHashFromBytes - ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Right)) import Data.Maybe (fromJust) +import Data.Newtype (wrap) import Data.Set as Set import Effect.Aff (Aff) import Effect.Class (liftEffect) @@ -222,26 +221,26 @@ suite = do decodeAeson (encodeAeson script) === Right script pk1 :: Ed25519KeyHash -pk1 = unsafePartial $ fromJust $ ed25519KeyHashFromBytes $ +pk1 = unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "1c12f03c1ef2e935acc35ec2e6f96c650fd3bfba3e96550504d53361" pk2 :: Ed25519KeyHash -pk2 = unsafePartial $ fromJust $ ed25519KeyHashFromBytes $ +pk2 = unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" pk3 :: Ed25519KeyHash pk3 = unsafePartial $ fromJust do - ed25519KeyHashFromBech32 + Ed25519KeyHash.fromBech32 "addr_vkh1zuctrdcq6ctd29242w8g84nlz0q38t2lnv3zzfcrfqktx0c9tzp" pk4 :: Ed25519KeyHash -pk4 = unsafePartial $ fromJust $ ed25519KeyHashFromBytes $ +pk4 = unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "30fb3b8529951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" pk5 :: Ed25519KeyHash -pk5 = unsafePartial $ fromJust $ ed25519KeyHashFromBytes $ +pk5 = unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe "30fb3b8529951e26f034919a5a37f22cb99d94d1d409f69ddbaea971" diff --git a/test/Ogmios/EvaluateTx.purs b/test/Ogmios/EvaluateTx.purs index 3047dc4d9..b6ab96b2f 100644 --- a/test/Ogmios/EvaluateTx.purs +++ b/test/Ogmios/EvaluateTx.purs @@ -3,7 +3,9 @@ module Test.Ctl.Ogmios.EvaluateTx (suite) where import Prelude import Aeson (JsonDecodeError(TypeMismatch)) -import Contract.Numeric.Natural (Natural, fromBigInt') +import Cardano.Types (BigNum) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Cert, Reward)) import Ctl.Internal.QueryM.JsonRpc2 ( OgmiosDecodeError(ResultDecodingError) , decodeOgmios @@ -16,14 +18,12 @@ import Ctl.Internal.QueryM.Ogmios , TxEvaluationResult(TxEvaluationResult) ) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.RedeemerTag (RedeemerTag(Spend, Cert, Reward)) import Data.Either (Either(Left, Right)) import Data.Map as Map import Data.Maybe (fromJust) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) -import JS.BigInt as BigInt import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures @@ -73,23 +73,24 @@ suite = do _ -> false ogmiosEvaluateTxValidRespDecoded :: Array (RedeemerPointer /\ ExecutionUnits) -ogmiosEvaluateTxValidRespDecoded = Map.toUnfoldable $ Map.fromFoldable - [ { redeemerTag: Cert, redeemerIndex: one + one + one } - /\ - { memory: naturalLiteral "4926587050210136942" - , steps: naturalLiteral "2982577810151428748" - } - , { redeemerTag: Spend, redeemerIndex: one } - /\ - { memory: naturalLiteral "2766916028110716146" - , steps: naturalLiteral "6325731070934221229" - } - , { redeemerTag: Reward, redeemerIndex: zero } - /\ - { memory: naturalLiteral "3603965291794951667" - , steps: naturalLiteral "937555587227912939" - } - ] +ogmiosEvaluateTxValidRespDecoded = unsafePartial $ Map.toUnfoldable $ + Map.fromFoldable + [ { redeemerTag: Cert, redeemerIndex: one + one + one } + /\ + { memory: naturalLiteral "4926587050210136942" + , steps: naturalLiteral "2982577810151428748" + } + , { redeemerTag: Spend, redeemerIndex: one } + /\ + { memory: naturalLiteral "2766916028110716146" + , steps: naturalLiteral "6325731070934221229" + } + , { redeemerTag: Reward, redeemerIndex: zero } + /\ + { memory: naturalLiteral "3603965291794951667" + , steps: naturalLiteral "937555587227912939" + } + ] -naturalLiteral :: String -> Natural -naturalLiteral x = fromBigInt' $ unsafePartial $ fromJust $ BigInt.fromString x +naturalLiteral :: Partial => String -> BigNum +naturalLiteral x = fromJust $ BigNum.fromString x diff --git a/test/Plutip.purs b/test/Plutip.purs index d80ff7408..9fba53cc5 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -35,7 +35,6 @@ import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract import Test.Ctl.Plutip.Contract.Assert as Assert import Test.Ctl.Plutip.Contract.Mnemonics as Mnemonics -import Test.Ctl.Plutip.Contract.NetworkId as NetworkId import Test.Ctl.Plutip.Contract.OgmiosMempool as OgmiosMempool import Test.Ctl.Plutip.ExUnits as ExUnits import Test.Ctl.Plutip.Logging as Logging @@ -63,7 +62,6 @@ main = interruptOnSignal SIGINT =<< launchAff do testPlutipContracts config $ do flip mapTest QueryM.AffInterface.suite (noWallet <<< wrapQueryM) - NetworkId.suite ChangeGeneration.suite Contract.suite UtxoDistribution.suite diff --git a/test/Plutip/Common.purs b/test/Plutip/Common.purs index cda39ade7..3cd0304fb 100644 --- a/test/Plutip/Common.purs +++ b/test/Plutip/Common.purs @@ -8,8 +8,8 @@ import Prelude import Contract.Keys (privateKeyFromBytes) import Contract.Test.Plutip (defaultPlutipConfig) import Ctl.Internal.Plutip.Types (PlutipConfig) -import Ctl.Internal.Types.RawBytes (hexToRawBytes) import Ctl.Internal.Wallet.Key (PrivateStakeKey) +import Data.ByteArray (hexToByteArray) import Data.Maybe (fromJust) import Data.Newtype (wrap) import Partial.Unsafe (unsafePartial) @@ -19,5 +19,7 @@ config = defaultPlutipConfig privateStakeKey :: PrivateStakeKey privateStakeKey = wrap $ unsafePartial $ fromJust - $ privateKeyFromBytes =<< hexToRawBytes - "633b1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" + $ privateKeyFromBytes =<< map wrap + ( hexToByteArray + "633b1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" + ) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index c92e95165..3a167321b 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -4,105 +4,44 @@ module Test.Ctl.Plutip.Contract import Prelude +import Cardano.AsCbor (decodeCbor) import Cardano.Serialization.Lib (fromBytes) -import Contract.Address - ( PaymentPubKeyHash(PaymentPubKeyHash) - , PubKeyHash(PubKeyHash) - , StakePubKeyHash - , getNetworkId - , scriptHashAddress - ) +import Cardano.Types (Address, GeneralTransactionMetadata(GeneralTransactionMetadata), TransactionUnspentOutput(..)) +import Cardano.Types.AssetName as AssetName +import Cardano.Types.Coin as Coin +import Cardano.Types.Credential (Credential(..)) +import Cardano.Types.Int as Int +import Cardano.Types.Mint as Mint +import Cardano.Types.Value (lovelaceValueOf) +import Contract.Address (PaymentPubKeyHash(PaymentPubKeyHash), StakePubKeyHash, getNetworkId, mkAddress) import Contract.AuxiliaryData (setGeneralTxMetadata) -import Contract.BalanceTxConstraints - ( BalanceTxConstraintsBuilder - , mustUseAdditionalUtxos - ) as BalanceTxConstraints -import Contract.BalanceTxConstraints - ( mustNotSpendUtxosWithOutRefs - , mustUseCollateralUtxos - ) +import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder, mustUseAdditionalUtxos) as BalanceTxConstraints +import Contract.BalanceTxConstraints (mustNotSpendUtxosWithOutRefs, mustUseCollateralUtxos) import Contract.Chain (currentTime, waitUntilSlot) import Contract.Hashing (datumHash, nativeScriptHash) import Contract.Keys (privateKeyFromBytes) import Contract.Log (logInfo') -import Contract.Metadata - ( GeneralTransactionMetadata(GeneralTransactionMetadata) - , TransactionMetadatum(Text) - , TransactionMetadatumLabel(TransactionMetadatumLabel) - ) +import Contract.Metadata as Metadatum import Contract.Monad (Contract, liftContractE, liftContractM, liftedM) import Contract.Numeric.BigNum as BigNum -import Contract.PlutusData - ( Datum(Datum) - , PlutusData(Bytes, Integer, List) - , Redeemer(Redeemer) - , getDatumByHash - , getDatumsByHashes - , getDatumsByHashesWithErrors - , unitRedeemer - ) +import Contract.PlutusData (PlutusData(Bytes, Integer, List), RedeemerDatum(RedeemerDatum), getDatumByHash, getDatumsByHashes, getDatumsByHashesWithErrors, unitRedeemer) import Contract.Prelude (liftM, mconcat) -import Contract.Prim.ByteArray - ( byteArrayFromAscii - , hexToByteArrayUnsafe - , hexToRawBytes - ) +import Contract.Prim.ByteArray (byteArrayFromAscii, hexToByteArray, hexToByteArrayUnsafe, hexToRawBytes) import Contract.ScriptLookups as Lookups -import Contract.Scripts - ( ValidatorHash - , applyArgs - , getScriptByHash - , getScriptsByHashes - , mintingPolicyHash - , validatorHash - ) +import Contract.Scripts (ValidatorHash, applyArgs, getScriptByHash, getScriptsByHashes, validatorHash) import Contract.Test (ContractTest) import Contract.Test.Assert (runChecks) -import Contract.Test.Plutip - ( InitialUTxOs - , InitialUTxOsWithStakeKey - , withStakeKey - , withWallets - ) +import Contract.Test.Plutip (InitialUTxOs, InitialUTxOsWithStakeKey, withStakeKey, withWallets) import Contract.Time (Slot(Slot), getEraSummaries) -import Contract.Transaction - ( BalanceTxError(BalanceInsufficientError, InsufficientCollateralUtxos) - , DataHash - , NativeScript(ScriptPubkey, ScriptNOfK, ScriptAll) - , OutputDatum(OutputDatumHash, NoOutputDatum, OutputDatum) - , ScriptRef(PlutusScriptRef, NativeScriptRef) - , TransactionHash(TransactionHash) - , TransactionInput(TransactionInput) - , TransactionOutput(TransactionOutput) - , awaitTxConfirmed - , balanceTx - , balanceTxE - , balanceTxWithConstraints - , balanceTxWithConstraintsE - , createAdditionalUtxos - , getTxMetadata - , signTransaction - , submit - , submitTxFromConstraints - , withBalancedTx - , withBalancedTxs - ) +import Contract.Transaction (BalanceTxError(BalanceInsufficientError, InsufficientCollateralUtxos), DataHash, NativeScript(ScriptPubkey, ScriptNOfK, ScriptAll), OutputDatum(OutputDatumHash, OutputDatum), ScriptRef(PlutusScriptRef, NativeScriptRef), TransactionHash(TransactionHash), TransactionInput(TransactionInput), TransactionOutput(TransactionOutput), _input, _output, awaitTxConfirmed, balanceTx, balanceTxE, balanceTxWithConstraints, balanceTxWithConstraintsE, createAdditionalUtxos, getTxMetadata, lookupTxHash, signTransaction, submit, submitTxFromConstraints, withBalancedTx, withBalancedTxs) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints +import Contract.Types.MintingPolicy as MintingPolicy import Contract.UnbalancedTx (mkUnbalancedTx, mkUnbalancedTxE) import Contract.Utxos (UtxoMap, utxosAt) import Contract.Value (Coin(Coin), Value, coinToValue) import Contract.Value as Value -import Contract.Wallet - ( getWalletAddresses - , getWalletBalance - , getWalletCollateral - , getWalletUtxos - , isWalletAvailable - , ownPaymentPubKeyHashes - , ownStakePubKeyHashes - , withKeyWallet - ) +import Contract.Wallet (getWalletAddresses, getWalletBalance, getWalletCollateral, getWalletUtxos, isWalletAvailable, ownPaymentPubKeyHashes, ownStakePubKeyHashes, withKeyWallet) import Control.Monad.Error.Class (try) import Control.Monad.Trans.Class (lift) import Control.Parallel (parallel, sequential) @@ -114,19 +53,11 @@ import Ctl.Examples.BalanceTxConstraints as BalanceTxConstraintsExample import Ctl.Examples.Cip30 as Cip30 import Ctl.Examples.ContractTestUtils as ContractTestUtils import Ctl.Examples.ECDSA as ECDSA -import Ctl.Examples.Helpers - ( mkCurrencySymbol - , mkTokenName - , mustPayToPubKeyStakeAddress - ) +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol, mustPayToPubKeyStakeAddress) import Ctl.Examples.IncludeDatum as IncludeDatum import Ctl.Examples.Lose7Ada as AlwaysFails import Ctl.Examples.ManyAssets as ManyAssets -import Ctl.Examples.MintsMultipleTokens - ( mintingPolicyRdmrInt1 - , mintingPolicyRdmrInt2 - , mintingPolicyRdmrInt3 - ) +import Ctl.Examples.MintsMultipleTokens (mintingPolicyRdmrInt1, mintingPolicyRdmrInt2, mintingPolicyRdmrInt3) import Ctl.Examples.NativeScriptMints (contract) as NativeScriptMints import Ctl.Examples.OneShotMinting (contract) as OneShotMinting import Ctl.Examples.PaysWithDatum (contract) as PaysWithDatum @@ -140,28 +71,10 @@ import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Ctl.Examples.Schnorr as Schnorr import Ctl.Examples.SendsToken (contract) as SendsToken import Ctl.Examples.TxChaining (contract) as TxChaining -import Ctl.Internal.Plutus.Conversion.Address (toPlutusAddress) -import Ctl.Internal.Plutus.Types.Address (Address, pubKeyHashAddress) -import Ctl.Internal.Plutus.Types.Transaction - ( TransactionOutputWithRefScript(TransactionOutputWithRefScript) - ) -import Ctl.Internal.Plutus.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - , _input - , _output - , lookupTxHash - ) -import Ctl.Internal.Plutus.Types.Value (lovelaceValueOf) -import Ctl.Internal.Scripts (nativeScriptHashEnterpriseAddress) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Interval (getSlotLength) -import Ctl.Internal.Wallet - ( WalletExtension(NamiWallet, GeroWallet, FlintWallet, NuFiWallet) - ) -import Ctl.Internal.Wallet.Cip30Mock - ( WalletMock(MockNami, MockGero, MockFlint, MockNuFi, MockGenericCip30) - , withCip30Mock - ) +import Ctl.Internal.Wallet (WalletExtension(NamiWallet, GeroWallet, FlintWallet, NuFiWallet)) +import Ctl.Internal.Wallet.Cip30Mock (WalletMock(MockNami, MockGero, MockFlint, MockNuFi, MockGenericCip30), withCip30Mock) import Data.Array (head, (!!)) import Data.Either (Either(Left, Right), hush, isLeft, isRight) import Data.Foldable (fold, foldM, length) @@ -179,19 +92,7 @@ import JS.BigInt as BigInt import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) -import Test.Ctl.Fixtures - ( cip25MetadataFixture1 - , fullyAppliedScriptFixture - , nativeScriptFixture1 - , nativeScriptFixture2 - , nativeScriptFixture3 - , nativeScriptFixture4 - , nativeScriptFixture5 - , nativeScriptFixture6 - , nativeScriptFixture7 - , partiallyAppliedScriptFixture - , unappliedScriptFixture - ) +import Test.Ctl.Fixtures (fullyAppliedScriptFixture, nativeScriptFixture1, nativeScriptFixture2, nativeScriptFixture3, nativeScriptFixture4, nativeScriptFixture5, nativeScriptFixture6, nativeScriptFixture7, partiallyAppliedScriptFixture, unappliedScriptFixture) import Test.Ctl.Plutip.Common (privateStakeKey) import Test.Ctl.Plutip.Utils (getLockedInputs, submitAndLog) import Test.Ctl.Plutip.UtxoDistribution (checkUtxoDistribution) @@ -214,8 +115,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1000_000_000 - , BigInt.fromInt 2000_000_000 + [ BigNum.fromInt 1000_000_000 + , BigNum.fromInt 2000_000_000 ] withWallets distribution \alice -> do withKeyWallet alice ManyAssets.contract @@ -224,8 +125,8 @@ suite = do do let someUtxos = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 5_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 5_000_000 ] withWallets someUtxos \alice -> do @@ -239,7 +140,7 @@ suite = do constraints :: Constraints.TxConstraints constraints = mustPayToPubKeyStakeAddress pkh stakePkh $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -253,8 +154,8 @@ suite = do test "#1480 - test that does nothing but fails" do let someUtxos = - [ BigInt.fromInt 2_000_000 - , BigInt.fromInt 3_000_000 + [ BigNum.fromInt 2_000_000 + , BigNum.fromInt 3_000_000 ] privateStakeKey1 = @@ -281,8 +182,8 @@ suite = do do let someUtxos = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 5_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 5_000_000 ] withWallets (someUtxos /\ someUtxos) \(alice /\ bob) -> do bobsCollateral <- withKeyWallet bob do @@ -296,8 +197,8 @@ suite = do awaitTxConfirmed txId logInfo' "Try to spend locked values" - let - scriptAddress = scriptHashAddress vhash Nothing + scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) + Nothing utxos <- utxosAt scriptAddress txInput <- liftM @@ -330,8 +231,8 @@ suite = do do let someUtxos = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 5_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 5_000_000 ] withWallets someUtxos \alice -> do withKeyWallet alice do @@ -343,8 +244,8 @@ suite = do awaitTxConfirmed txId logInfo' "Try to spend locked values" - let - scriptAddress = scriptHashAddress vhash Nothing + scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) + Nothing utxos <- utxosAt scriptAddress txInput <- liftM @@ -378,20 +279,20 @@ suite = do let distribution :: InitialUTxOs /\ InitialUTxOs distribution = - [ BigInt.fromInt 10_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 10_000_000 + , BigNum.fromInt 20_000_000 ] /\ - [ BigInt.fromInt 2_000_000_000 ] + [ BigNum.fromInt 2_000_000_000 ] withWallets distribution \(alice /\ bob) -> do withKeyWallet alice do getWalletCollateral >>= liftEffect <<< case _ of Nothing -> throw "Unable to get collateral" Just [ TransactionUnspentOutput - { output: TransactionOutputWithRefScript { output } } + { output: output } ] -> do let amount = (unwrap output).amount - unless (amount == lovelaceValueOf (BigInt.fromInt 10_000_000)) + unless (amount == lovelaceValueOf (BigNum.fromInt 10_000_000)) $ throw "Wrong UTxO selected as collateral" Just _ -> do -- not a bug, but unexpected @@ -403,8 +304,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 10_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 10_000_000 + , BigNum.fromInt 20_000_000 ] withWallets distribution \alice -> do checkUtxoDistribution distribution alice @@ -418,8 +319,8 @@ suite = do do let aliceUtxos = - [ BigInt.fromInt 20_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 20_000_000 + , BigNum.fromInt 20_000_000 ] distribution = withStakeKey privateStakeKey aliceUtxos @@ -437,12 +338,12 @@ suite = do do let aliceUtxos = - [ BigInt.fromInt 20_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 20_000_000 + , BigNum.fromInt 20_000_000 ] bobUtxos = - [ BigInt.fromInt 20_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 20_000_000 + , BigNum.fromInt 20_000_000 ] distribution :: InitialUTxOs /\ InitialUTxOs @@ -470,12 +371,12 @@ suite = do do let aliceUtxos = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 20_000_000 ] bobUtxos = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 20_000_000 ] distribution = withStakeKey privateStakeKey aliceUtxos @@ -502,7 +403,7 @@ suite = do test "Tx confirmation fails after timeout (awaitTxConfirmedWithTimeout)" do let distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 ] + [ BigNum.fromInt 1_000_000_000 ] withWallets distribution \_ -> AwaitTxConfirmedWithTimeout.contract @@ -511,20 +412,20 @@ suite = do distribution :: InitialUTxOs /\ InitialUTxOs /\ InitialUTxOs /\ InitialUTxOs distribution = - [ BigInt.fromInt 20_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 20_000_000 + , BigNum.fromInt 20_000_000 ] /\ - [ BigInt.fromInt 20_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 20_000_000 + , BigNum.fromInt 20_000_000 ] /\ - [ BigInt.fromInt 20_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 20_000_000 + , BigNum.fromInt 20_000_000 ] /\ - [ BigInt.fromInt 20_000_000 - , BigInt.fromInt 20_000_000 + [ BigNum.fromInt 20_000_000 + , BigNum.fromInt 20_000_000 ] withWallets distribution \(alice /\ bob /\ charlie /\ dan) -> do @@ -552,7 +453,7 @@ suite = do constraints :: TxConstraints constraints = Constraints.mustPayToNativeScript nsHash $ Value.lovelaceValueOf - $ BigInt.fromInt 10_000_000 + $ BigNum.fromInt 10_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -566,18 +467,15 @@ suite = do withKeyWallet bob do -- First, he should find the transaction input where Ada is locked networkId <- getNetworkId - let - nsAddr = nativeScriptHashEnterpriseAddress networkId nsHash - nsAddrPlutus <- liftContractM "Unable to convert to Plutus address" - $ toPlutusAddress nsAddr - utxos <- utxosAt nsAddrPlutus + nsAddr <- mkAddress (wrap $ ScriptHashCredential nsHash) Nothing + utxos <- utxosAt nsAddr txInput <- liftContractM "Unable to get UTxO" $ view _input <$> lookupTxHash txId utxos !! 0 let constraints :: TxConstraints constraints = Constraints.mustPayToPubKey (coerce alicePaymentPKH) - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) <> Constraints.mustSpendNativeScriptOutput txInput nativeScript @@ -608,20 +506,20 @@ suite = do distribution :: InitialUTxOs /\ InitialUTxOs /\ InitialUTxOs /\ InitialUTxOs distribution = - [ BigInt.fromInt 50_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 50_000_000 + , BigNum.fromInt 50_000_000 ] /\ - [ BigInt.fromInt 50_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 50_000_000 + , BigNum.fromInt 50_000_000 ] /\ - [ BigInt.fromInt 50_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 50_000_000 + , BigNum.fromInt 50_000_000 ] /\ - [ BigInt.fromInt 50_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 50_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \(alice /\ bob /\ charlie /\ dan) -> do @@ -649,7 +547,7 @@ suite = do constraints :: TxConstraints constraints = Constraints.mustPayToNativeScript nsHash $ Value.lovelaceValueOf - $ BigInt.fromInt 10_000_000 + $ BigNum.fromInt 10_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -664,18 +562,15 @@ suite = do withKeyWallet bob do -- First, he should find the transaction input where Ada is locked networkId <- getNetworkId - let - nsAddr = nativeScriptHashEnterpriseAddress networkId nsHash - nsAddrPlutus <- liftContractM "Unable to convert to Plutus address" - $ toPlutusAddress nsAddr - utxos <- utxosAt nsAddrPlutus + nsAddr <- mkAddress (wrap $ ScriptHashCredential nsHash) Nothing + utxos <- utxosAt nsAddr txInput <- liftContractM "Unable to get UTxO" $ view _input <$> lookupTxHash txId utxos !! 0 let constraints :: TxConstraints constraints = Constraints.mustPayToPubKey (coerce alicePaymentPKH) - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) <> Constraints.mustSpendNativeScriptOutput txInput nativeScript @@ -696,22 +591,22 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy - let cs = Value.scriptCurrencySymbol mp + let cs = MintingPolicy.hash mp tn <- liftContractM "Cannot make token name" - $ Value.mkTokenName + $ AssetName.mkAssetName =<< byteArrayFromAscii "TheToken" let constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue - $ Value.singleton cs tn - $ BigInt.fromInt 100 + $ Mint.singleton cs tn + $ Int.fromInt 100 lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp @@ -724,22 +619,22 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy - tn <- mkTokenName "TheToken" + tn <- mkAssetName "TheToken" -- Minting let constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue - $ Value.singleton cs tn - $ BigInt.fromInt 100 + $ Mint.singleton cs tn + $ Int.fromInt 100 lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp @@ -756,7 +651,7 @@ suite = do constraints' :: Constraints.TxConstraints constraints' = Constraints.mustProduceAtLeast $ Value.singleton cs tn - $ BigInt.fromInt 100 + $ BigNum.fromInt 100 lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh txHash' <- submitTxFromConstraints lookups' constraints' @@ -766,22 +661,22 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy - tn <- mkTokenName "TheToken" + tn <- mkAssetName "TheToken" -- Minting let constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue - $ Value.singleton cs tn - $ BigInt.fromInt 100 + $ Mint.singleton cs tn + $ Int.fromInt 100 lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp @@ -798,7 +693,7 @@ suite = do constraints' :: Constraints.TxConstraints constraints' = Constraints.mustProduceAtLeast $ Value.singleton cs tn - $ BigInt.fromInt 101 + $ BigNum.fromInt 101 lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh ubTx <- mkUnbalancedTx lookups' constraints' @@ -809,22 +704,22 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy - tn <- mkTokenName "TheToken" + tn <- mkAssetName "TheToken" -- Minting let constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue - $ Value.singleton cs tn - $ BigInt.fromInt 100 + $ Mint.singleton cs tn + $ Int.fromInt 100 lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp @@ -841,7 +736,7 @@ suite = do constraints' :: Constraints.TxConstraints constraints' = Constraints.mustSpendAtLeast $ Value.singleton cs tn - $ BigInt.fromInt 100 + $ BigNum.fromInt 100 lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh txHash' <- submitTxFromConstraints lookups' constraints' @@ -851,22 +746,22 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy - tn <- mkTokenName "TheToken" + tn <- mkAssetName "TheToken" -- Minting let constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue - $ Value.singleton cs tn - $ BigInt.fromInt 100 + $ Mint.singleton cs tn + $ Int.fromInt 100 lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp @@ -883,7 +778,7 @@ suite = do constraints' :: Constraints.TxConstraints constraints' = Constraints.mustSpendAtLeast $ Value.singleton cs tn - $ BigInt.fromInt 101 + $ BigNum.fromInt 101 lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh ubTx <- mkUnbalancedTx lookups' constraints' @@ -894,8 +789,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice NativeScriptMints.contract @@ -904,7 +799,7 @@ suite = do withWallets unit \_ -> do let mkDatumHash :: String -> DataHash - mkDatumHash = wrap <<< hexToByteArrayUnsafe + mkDatumHash str = unsafePartial $ fromJust $ decodeCbor <<< wrap =<< hexToByteArray str -- Nothing is expected, because we are in an empty chain. -- This test only checks for ability to connect to the datum-querying -- backend. @@ -929,17 +824,15 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] - datum1 :: Datum - datum1 = Datum $ Integer $ BigInt.fromInt 1 + datum1 = Integer $ BigInt.fromInt 1 - datum2 :: Datum - datum2 = Datum $ Integer $ BigInt.fromInt 2 + datum2 = Integer $ BigInt.fromInt 2 - datums :: Array Datum + datums :: Array PlutusData datums = [ datum2, datum1 ] let @@ -951,12 +844,12 @@ suite = do vhash datum1 Constraints.DatumWitness - (Value.lovelaceValueOf $ BigInt.fromInt 1_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 1_000_000) <> Constraints.mustPayToScript vhash datum2 Constraints.DatumWitness - (Value.lovelaceValueOf $ BigInt.fromInt 1_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 1_000_000) lookups :: Lookups.ScriptLookups lookups = mempty @@ -994,21 +887,21 @@ suite = do test "GetScriptByHash" do let distribution :: InitialUTxOs - distribution = [ BigInt.fromInt 50_000_000 ] + distribution = [ BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do validator1 <- AlwaysSucceeds.alwaysSucceedsScript validator2 <- alwaysSucceedsScriptV2 let - validatorRef1 = PlutusScriptRef $ unwrap validator1 - validatorRef2 = PlutusScriptRef $ unwrap validator2 + validatorRef1 = PlutusScriptRef validator1 + validatorRef2 = PlutusScriptRef validator2 useScriptAndGetByHash validator vhash = do txId <- AlwaysSucceeds.payToAlwaysSucceeds vhash awaitTxConfirmed txId -- Spending utxo, to make Kupo (used inside) see the script AlwaysSucceeds.spendFromAlwaysSucceeds vhash validator txId - getScriptByHash $ unwrap vhash + getScriptByHash vhash result1 <- useScriptAndGetByHash validator1 (validatorHash validator1) result2 <- useScriptAndGetByHash validator2 (validatorHash validator2) @@ -1019,8 +912,8 @@ suite = do -- Testing getScriptsByHashes let - scriptHash1 = unwrap (validatorHash validator1) - scriptHash2 = unwrap (validatorHash validator2) + scriptHash1 = validatorHash validator1 + scriptHash2 = validatorHash validator2 results <- getScriptsByHashes [ scriptHash1, scriptHash2 ] results `shouldEqual` Map.fromFoldable [ (scriptHash1 /\ (Right (Just validatorRef1))) @@ -1030,7 +923,7 @@ suite = do test "Getting transaction metadata" do let distribution :: InitialUTxOs - distribution = [ BigInt.fromInt 50_000_000 ] + distribution = [ BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1041,10 +934,10 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty givenMetadata = GeneralTransactionMetadata $ Map.fromFoldable - [ TransactionMetadatumLabel (BigInt.fromInt 8) /\ Text "foo" ] + [ BigNum.fromInt 8 /\ Metadatum.Text "foo" ] ubTx <- mkUnbalancedTx lookups constraints - ubTx' <- setGeneralTxMetadata ubTx givenMetadata + let ubTx' = setGeneralTxMetadata ubTx givenMetadata bsTx <- signTransaction =<< balanceTx ubTx' txId <- submit bsTx awaitTxConfirmed txId @@ -1056,21 +949,21 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do - tn1 <- mkTokenName "Token name" + tn1 <- mkAssetName "Token name" mp1 /\ _ <- mkCurrencySymbol alwaysMintsPolicy mp2 /\ _ <- mkCurrencySymbol alwaysMintsPolicyV2 let constraints :: Constraints.TxConstraints constraints = mconcat - [ Constraints.mustMintCurrency (mintingPolicyHash mp1) tn1 zero - , Constraints.mustMintCurrency (mintingPolicyHash mp2) tn1 one + [ Constraints.mustMintCurrency (MintingPolicy.hash mp1) tn1 Int.zero + , Constraints.mustMintCurrency (MintingPolicy.hash mp2) tn1 Int.one ] lookups :: Lookups.ScriptLookups @@ -1083,29 +976,35 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do - tn1 <- mkTokenName "Token with a long name" - tn2 <- mkTokenName "Token" + tn1 <- mkAssetName "Token with a long name" + tn2 <- mkAssetName "Token" mp1 /\ cs1 <- mkCurrencySymbol mintingPolicyRdmrInt1 mp2 /\ cs2 <- mkCurrencySymbol mintingPolicyRdmrInt2 mp3 /\ cs3 <- mkCurrencySymbol mintingPolicyRdmrInt3 let constraints :: Constraints.TxConstraints - constraints = mconcat + constraints = mconcat $ unsafePartial [ Constraints.mustMintValueWithRedeemer - (Redeemer $ Integer (BigInt.fromInt 1)) - (Value.singleton cs1 tn1 one <> Value.singleton cs1 tn2 one) + (RedeemerDatum $ Integer (BigInt.fromInt 1)) + ( Mint.singleton cs1 tn1 Int.one <> Mint.singleton cs1 tn2 + Int.one + ) , Constraints.mustMintValueWithRedeemer - (Redeemer $ Integer (BigInt.fromInt 2)) - (Value.singleton cs2 tn1 one <> Value.singleton cs2 tn2 one) + (RedeemerDatum $ Integer (BigInt.fromInt 2)) + ( Mint.singleton cs2 tn1 Int.one <> Mint.singleton cs2 tn2 + Int.one + ) , Constraints.mustMintValueWithRedeemer - (Redeemer $ Integer (BigInt.fromInt 3)) - (Value.singleton cs3 tn1 one <> Value.singleton cs3 tn2 one) + (RedeemerDatum $ Integer (BigInt.fromInt 3)) + ( Mint.singleton cs3 tn1 Int.one <> Mint.singleton cs3 tn2 + Int.one + ) ] lookups :: Lookups.ScriptLookups @@ -1122,8 +1021,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do checkUtxoDistribution distribution alice @@ -1132,8 +1031,8 @@ suite = do test "Multi-signature transaction with BaseAddresses" do let aliceUtxos = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] distribution = withStakeKey privateStakeKey aliceUtxos withWallets distribution \alice -> do @@ -1144,8 +1043,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 10_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 10_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> withKeyWallet alice $ AdditionalUtxos.contract false @@ -1154,8 +1053,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 10_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 10_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> withKeyWallet alice $ AdditionalUtxos.contract true @@ -1166,8 +1065,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1185,8 +1084,8 @@ suite = do let distribution :: InitialUTxOsWithStakeKey distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1208,8 +1107,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice SendsToken.contract @@ -1217,7 +1116,7 @@ suite = do test "PlutusV1 forces balancer to select non-PlutusV2 inputs" do let distribution :: InitialUTxOs - distribution = [ BigInt.fromInt 5_000_000 ] + distribution = [ BigNum.fromInt 5_000_000 ] withWallets distribution \alice -> do alicePkh <- withKeyWallet alice do @@ -1227,10 +1126,11 @@ suite = do let vhash = validatorHash validator - scriptAddress = scriptHashAddress vhash Nothing + scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing + aliceAddress <- mkAddress (wrap $ PubKeyHashCredential $ unwrap alicePkh) Nothing let - datum42 = Datum $ Integer $ BigInt.fromInt 42 + datum42 = Integer $ BigInt.fromInt 42 datum42Hash = datumHash datum42 datum42Lookup = Lookups.datum datum42 @@ -1244,7 +1144,7 @@ suite = do :: UInt -> Address -> Value - -> OutputDatum + -> Maybe OutputDatum -> TransactionUnspentOutput mkUtxo index address amount datum = TransactionUnspentOutput @@ -1252,27 +1152,24 @@ suite = do { index , transactionId } - , output: TransactionOutputWithRefScript - { scriptRef: Nothing - , output: TransactionOutput - { address - , amount - , datum - , referenceScript: Nothing - } + , output: TransactionOutput + { address + , amount + , datum + , scriptRef: Nothing } } - aliceUtxo :: OutputDatum -> TransactionUnspentOutput + aliceUtxo :: Maybe OutputDatum -> TransactionUnspentOutput aliceUtxo = mkUtxo zero - (pubKeyHashAddress alicePkh Nothing) - (Value.lovelaceValueOf $ BigInt.fromInt 50_000_000) + aliceAddress + (Value.lovelaceValueOf $ BigNum.fromInt 50_000_000) alwaysSucceedsUtxo :: TransactionUnspentOutput alwaysSucceedsUtxo = mkUtxo one scriptAddress - (Value.lovelaceValueOf $ BigInt.fromInt 2_000_000) - (OutputDatumHash datum42Hash) + (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) + (Just $ OutputDatumHash datum42Hash) -- Balance a transaction which requires selecting a utxo with a -- certain datum @@ -1284,7 +1181,7 @@ suite = do [ alwaysSucceedsUtxo, aliceUtxo datum ] value :: Value.Value - value = Value.lovelaceValueOf $ BigInt.fromInt 50_000_000 + value = Value.lovelaceValueOf $ BigNum.fromInt 50_000_000 constraints :: TxConstraints constraints = fold @@ -1315,16 +1212,16 @@ suite = do Left (BalanceInsufficientError _ _) -> true _ -> false - balanceWithDatum NoOutputDatum >>= flip shouldSatisfy isRight - balanceWithDatum (OutputDatum datum42) >>= flip shouldSatisfy + balanceWithDatum Nothing >>= flip shouldSatisfy isRight + balanceWithDatum (Just $ OutputDatum datum42) >>= flip shouldSatisfy hasInsufficientBalance test "InlineDatum" do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1341,8 +1238,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1358,8 +1255,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1375,8 +1272,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1395,8 +1292,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1416,8 +1313,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> withKeyWallet alice PaysWithDatum.contract @@ -1426,8 +1323,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1443,8 +1340,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1461,9 +1358,9 @@ suite = do let distribution :: InitialUTxOs /\ InitialUTxOs distribution = - [ BigInt.fromInt 10_000_000 - , BigInt.fromInt 50_000_000 - ] /\ [ BigInt.fromInt 50_000_000 ] + [ BigNum.fromInt 10_000_000 + , BigNum.fromInt 50_000_000 + ] /\ [ BigNum.fromInt 50_000_000 ] withWallets distribution \(alice /\ seed) -> do validator <- AlwaysFails.alwaysFailsScript let vhash = validatorHash validator @@ -1476,20 +1373,20 @@ suite = do withKeyWallet alice do awaitTxConfirmed txId logInfo' "Try to spend locked values" - balanceBefore <- fold <$> getWalletBalance + balanceBefore <- unsafePartial $ fold <$> getWalletBalance AlwaysFails.spendFromAlwaysFails vhash validator txId - balance <- fold <$> getWalletBalance + balance <- unsafePartial $ fold <$> getWalletBalance let - collateralLoss = Value.lovelaceValueOf $ BigInt.fromInt $ + collateralLoss = Value.lovelaceValueOf $ BigNum.fromInt $ -5_000_000 - balance `shouldEqual` (balanceBefore <> collateralLoss) + balance `shouldEqual` (unsafePartial $ balanceBefore <> collateralLoss) test "AlwaysFails script triggers Native Asset Collateral Return (tokens)" do let distribution :: InitialUTxOs /\ InitialUTxOs distribution = - [] /\ [ BigInt.fromInt 2_100_000_000 ] + [] /\ [ BigNum.fromInt 2_100_000_000 ] withWallets distribution \(alice /\ seed) -> do alicePkh /\ aliceStakePkh <- withKeyWallet alice do pkh <- liftedM "Failed to get PKH" $ head <$> @@ -1498,10 +1395,12 @@ suite = do pure $ pkh /\ stakePkh mp <- alwaysMintsPolicy - let cs = Value.scriptCurrencySymbol mp + let cs = MintingPolicy.hash mp tn <- liftContractM "Cannot make token name" - $ byteArrayFromAscii "TheToken" >>= Value.mkTokenName - let asset = Value.singleton cs tn $ BigInt.fromInt 50 + $ byteArrayFromAscii "TheToken" >>= AssetName.mkAssetName + let + asset = Value.singleton cs tn $ BigNum.fromInt 50 + mint = Mint.singleton cs tn $ Int.fromInt 50 validator <- AlwaysFails.alwaysFailsScript let vhash = validatorHash validator @@ -1510,14 +1409,14 @@ suite = do logInfo' "Minting asset to Alice" let constraints :: Constraints.TxConstraints - constraints = Constraints.mustMintValue (asset <> asset) + constraints = Constraints.mustMintValue (unsafePartial $ mint <> mint) <> mustPayToPubKeyStakeAddress alicePkh aliceStakePkh - ( asset <> - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + ( unsafePartial $ asset <> + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) ) <> mustPayToPubKeyStakeAddress alicePkh aliceStakePkh - ( asset <> - (Value.lovelaceValueOf $ BigInt.fromInt 50_000_000) + ( unsafePartial $ asset <> + (Value.lovelaceValueOf $ BigNum.fromInt 50_000_000) ) lookups :: Lookups.ScriptLookups @@ -1542,8 +1441,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> withKeyWallet alice ReferenceScripts.contract @@ -1554,8 +1453,8 @@ suite = do let distribution :: InitialUTxOsWithStakeKey distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> withKeyWallet alice ReferenceScripts.contract @@ -1565,8 +1464,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> withKeyWallet alice ReferenceInputs.contract @@ -1575,8 +1474,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> withKeyWallet alice ReferenceInputsAndScripts.contract @@ -1585,8 +1484,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> withKeyWallet alice OneShotMinting.contract @@ -1595,8 +1494,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> withKeyWallet alice OneShotMintingV2.contract @@ -1605,7 +1504,7 @@ suite = do let initialUtxos :: InitialUTxOs initialUtxos = - [ BigInt.fromInt 50_000_000, BigInt.fromInt 50_000_000 ] + [ BigNum.fromInt 50_000_000, BigNum.fromInt 50_000_000 ] distribution :: InitialUTxOs /\ InitialUTxOs distribution = initialUtxos /\ initialUtxos @@ -1617,18 +1516,17 @@ suite = do mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 - tn <- mkTokenName "TheToken" + tn <- mkAssetName "TheToken" withKeyWallet alice do let params = { receiverPkh , receiverSkh - , adaToSend: BigInt.fromInt 5_000_000 + , adaToSend: Coin.fromInt 5_000_000 , mintingPolicy - , tokensToMint: cs /\ tn /\ one /\ unit - , datumToAttach: wrap $ Integer $ BigInt.fromInt 42 - , txMetadata: cip25MetadataFixture1 + , tokensToMint: cs /\ tn /\ BigNum.one /\ unit + , datumToAttach: Integer $ BigInt.fromInt 42 } checks <- ContractTestUtils.mkChecks params @@ -1639,7 +1537,7 @@ suite = do let initialUtxos :: InitialUTxOs initialUtxos = - [ BigInt.fromInt 50_000_000, BigInt.fromInt 50_000_000 ] + [ BigNum.fromInt 50_000_000, BigNum.fromInt 50_000_000 ] distribution :: InitialUTxOs /\ InitialUTxOs distribution = initialUtxos /\ initialUtxos @@ -1656,7 +1554,7 @@ suite = do test "Tx chain submits (TxChaining example)" $ let distribution :: InitialUTxOs - distribution = [ BigInt.fromInt 2_500_000 ] + distribution = [ BigNum.fromInt 2_500_000 ] in withWallets distribution \alice -> withKeyWallet alice TxChaining.contract @@ -1668,7 +1566,7 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 150_000_000 ] + [ BigNum.fromInt 150_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1681,37 +1579,37 @@ suite = do Constraints.mustPayToPubKeyWithScriptRef pkh (NativeScriptRef nativeScriptFixture1) - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) <> Constraints.mustPayToPubKeyWithScriptRef pkh (NativeScriptRef nativeScriptFixture2) - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) <> Constraints.mustPayToPubKeyWithScriptRef pkh (NativeScriptRef nativeScriptFixture3) - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) <> Constraints.mustPayToPubKeyWithScriptRef pkh (NativeScriptRef nativeScriptFixture4) - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) <> Constraints.mustPayToPubKeyWithScriptRef pkh (NativeScriptRef nativeScriptFixture5) - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) <> Constraints.mustPayToPubKeyWithScriptRef pkh (NativeScriptRef nativeScriptFixture6) - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) <> Constraints.mustPayToPubKeyWithScriptRef pkh (NativeScriptRef nativeScriptFixture7) - (Value.lovelaceValueOf $ BigInt.fromInt 10_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) lookups0 :: Lookups.ScriptLookups lookups0 = mempty @@ -1730,7 +1628,7 @@ suite = do constraints1 :: TxConstraints constraints1 = Constraints.mustPayToPubKey pkh - (Value.lovelaceValueOf $ BigInt.fromInt 70_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 70_000_000) lookups1 :: Lookups.ScriptLookups lookups1 = Lookups.unspentOutputs additionalUtxos @@ -1760,7 +1658,7 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 150_000_000 ] + [ BigNum.fromInt 150_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -1771,34 +1669,28 @@ suite = do logInfo' $ "wUtxos0 " <> show wUtxos0 mp <- alwaysMintsPolicyV2 - let cs = Value.scriptCurrencySymbol mp + let cs = MintingPolicy.hash mp tn <- liftContractM "Cannot make token name" - $ byteArrayFromAscii "TheToken" >>= Value.mkTokenName + $ byteArrayFromAscii "TheToken" >>= AssetName.mkAssetName validatorV1 <- AlwaysSucceeds.alwaysSucceedsScript validatorV2 <- alwaysSucceedsScriptV2 let - value :: Value.Value + value :: Value value = - (Value.lovelaceValueOf $ BigInt.fromInt 60_000_000) + (Value.lovelaceValueOf $ BigNum.fromInt 60_000_000) - value' :: Value.Value + value' :: Value value' = - value - <> (Value.singleton cs tn $ BigInt.fromInt 50) + unsafePartial $ value + <> (Value.singleton cs tn $ BigNum.fromInt 50) scriptRefV1 :: ScriptRef - scriptRefV1 = PlutusScriptRef (unwrap validatorV1) + scriptRefV1 = PlutusScriptRef validatorV1 scriptRefV2 :: ScriptRef - scriptRefV2 = PlutusScriptRef (unwrap validatorV2) - - datum :: Datum - datum = Datum plutusData - - datum' :: Datum - datum' = Datum plutusData' + scriptRefV2 = PlutusScriptRef validatorV2 plutusData :: PlutusData plutusData = Integer $ BigInt.fromInt 31415927 @@ -1814,23 +1706,23 @@ suite = do constraints0 = Constraints.mustPayToPubKeyWithDatumAndScriptRef pkh - datum' + plutusData' Constraints.DatumWitness scriptRefV1 value <> Constraints.mustPayToPubKeyWithDatumAndScriptRef pkh - datum + plutusData Constraints.DatumInline scriptRefV2 value' <> Constraints.mustMintCurrency - (mintingPolicyHash mp) + (MintingPolicy.hash mp) tn - (BigInt.fromInt 50) + (Int.fromInt 50) - let datumLookup = Lookups.datum datum' + let datumLookup = Lookups.datum plutusData' let lookups0 :: Lookups.ScriptLookups @@ -1849,9 +1741,9 @@ suite = do let constraints1 :: TxConstraints constraints1 = - Constraints.mustPayToPubKey pkh $ - Value.lovelaceValueOf (BigInt.fromInt 60_000_000) - <> Value.singleton cs tn (BigInt.fromInt 50) + Constraints.mustPayToPubKey pkh $ unsafePartial $ + Value.lovelaceValueOf (BigNum.fromInt 60_000_000) + <> Value.singleton cs tn (BigNum.fromInt 50) lookups1 :: Lookups.ScriptLookups lookups1 = Lookups.unspentOutputs additionalUtxos @@ -1876,17 +1768,17 @@ suite = do test "returns the same script when called without args" do withWallets unit \_ -> do result <- liftContractE $ applyArgs - (unwrap unappliedScriptFixture) + unappliedScriptFixture mempty - result `shouldEqual` (unwrap unappliedScriptFixture) + result `shouldEqual` unappliedScriptFixture test "returns the correct partially applied Plutus script" do withWallets unit \_ -> do let args = [ Integer (BigInt.fromInt 32) ] result <- liftContractE $ applyArgs - (unwrap unappliedScriptFixture) + unappliedScriptFixture args - result `shouldEqual` (unwrap partiallyAppliedScriptFixture) + result `shouldEqual` partiallyAppliedScriptFixture test "returns the correct fully applied Plutus script" do withWallets unit \_ -> do @@ -1895,17 +1787,17 @@ suite = do (byteArrayFromAscii "test") let args = [ Integer (BigInt.fromInt 32), Bytes bytes ] result <- liftContractE $ applyArgs - (unwrap unappliedScriptFixture) + unappliedScriptFixture args - result `shouldEqual` (unwrap fullyAppliedScriptFixture) + result `shouldEqual` fullyAppliedScriptFixture group "CIP-30 mock interface" do test "Wallet cleanup" do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do @@ -1934,8 +1826,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withCip30Mock alice MockNami do @@ -1943,11 +1835,11 @@ suite = do Nothing -> throw "Unable to get collateral" Just [ TransactionUnspentOutput - { output: TransactionOutputWithRefScript { output } } + { output } ] -> do let amount = (unwrap output).amount unless - (amount == lovelaceValueOf (BigInt.fromInt 50_000_000)) + (amount == lovelaceValueOf (BigNum.fromInt 50_000_000)) $ throw "Wrong UTxO selected as collateral" Just _ -> do throw $ "More than one UTxO in collateral. " <> @@ -1957,8 +1849,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do utxos <- withCip30Mock alice MockNami do @@ -1969,8 +1861,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do mockAddress <- withCip30Mock alice MockNami do @@ -1985,8 +1877,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withCip30Mock alice MockNami do @@ -1999,38 +1891,38 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do getWalletBalance >>= shouldEqual - ( Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 + ( Just $ coinToValue $ Coin $ BigNum.fromInt 1_050_000_000 ) withCip30Mock alice MockNami do getWalletBalance >>= shouldEqual - ( Just $ coinToValue $ Coin $ BigInt.fromInt 1_050_000_000 + ( Just $ coinToValue $ Coin $ BigNum.fromInt 1_050_000_000 ) test "getWalletBalance works (2)" do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 2_000_000 - , BigInt.fromInt 1_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 2_000_000 + , BigNum.fromInt 1_000_000 ] withWallets distribution \alice -> do withCip30Mock alice MockNami do getWalletBalance >>= flip shouldSatisfy - (eq $ Just $ coinToValue $ Coin $ BigInt.fromInt 8_000_000) + (eq $ Just $ coinToValue $ Coin $ BigNum.fromInt 8_000_000) test "CIP-30 utilities" do let distribution :: InitialUTxOsWithStakeKey distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withCip30Mock alice MockNami do @@ -2040,11 +1932,11 @@ suite = do test "ECDSA example" do let distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 100 + [ BigNum.fromInt 2_000_000_000 + , BigNum.fromInt 2_000_000_000 + , BigNum.fromInt 2_000_000_000 + , BigNum.fromInt 2_000_000_000 + , BigNum.fromInt 2_000_000_000 ] withWallets distribution \alice -> do withCip30Mock alice MockNami $ ECDSA.contract @@ -2054,8 +1946,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -2064,8 +1956,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 50_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -2079,7 +1971,7 @@ signMultipleContract = do constraints :: Constraints.TxConstraints constraints = mustPayToPubKeyStakeAddress pkh stakePkh $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -2108,7 +2000,7 @@ pkh2PkhContract pkh stakePkh = do constraints :: Constraints.TxConstraints constraints = mustPayToPubKeyStakeAddress pkh stakePkh $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 + $ BigNum.fromInt 2_000_000 lookups :: Lookups.ScriptLookups lookups = mempty diff --git a/test/Plutip/Contract/Assert.purs b/test/Plutip/Contract/Assert.purs index 14fb3e5ef..94f554978 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Plutip/Contract/Assert.purs @@ -3,7 +3,9 @@ module Test.Ctl.Plutip.Contract.Assert (suite) where import Prelude +import Cardano.Types (ExUnits(..)) import Contract.Monad (liftedM) +import Contract.Numeric.BigNum as BigNum import Contract.PlutusData (PlutusData(Integer)) import Contract.Test (ContractTest) import Contract.Test.Assert @@ -20,7 +22,7 @@ import Contract.Wallet ) import Control.Monad.Trans.Class (lift) import Ctl.Examples.ContractTestUtils as ContractTestUtils -import Ctl.Examples.Helpers (mkCurrencySymbol, mkTokenName) +import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyV2) import Data.Array (head) import Data.Either (isLeft, isRight) @@ -30,7 +32,7 @@ import Effect.Class (liftEffect) import Effect.Exception (throw) import JS.BigInt as BigInt import Mote (group, test) -import Test.Ctl.Fixtures (cip25MetadataFixture1) +import Partial.Unsafe (unsafePartial) import Test.Spec.Assertions (shouldEqual, shouldSatisfy) suite :: TestPlanM ContractTest Unit @@ -39,7 +41,7 @@ suite = do let initialUtxos :: InitialUTxOs initialUtxos = - [ BigInt.fromInt 2_000_000_000, BigInt.fromInt 2_000_000_000 ] + [ BigNum.fromInt 2_000_000_000, BigNum.fromInt 2_000_000_000 ] distribution :: InitialUTxOs /\ InitialUTxOs distribution = initialUtxos /\ initialUtxos @@ -53,18 +55,17 @@ suite = do mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 - tn <- mkTokenName "TheToken" + tn <- mkAssetName "TheToken" withKeyWallet alice do let params = { receiverPkh , receiverSkh - , adaToSend: BigInt.fromInt 5_000_000 + , adaToSend: wrap $ BigNum.fromInt 5_000_000 , mintingPolicy - , tokensToMint: cs /\ tn /\ one /\ unit - , datumToAttach: wrap $ Integer $ BigInt.fromInt 42 - , txMetadata: cip25MetadataFixture1 + , tokensToMint: cs /\ tn /\ BigNum.one /\ unit + , datumToAttach: Integer $ BigInt.fromInt 42 } checks <- ContractTestUtils.mkChecks params @@ -82,22 +83,24 @@ suite = do mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 - tn <- mkTokenName "TheToken" + tn <- mkAssetName "TheToken" withKeyWallet alice do let params = { receiverPkh , receiverSkh - , adaToSend: BigInt.fromInt 5_000_000 + , adaToSend: wrap $ BigNum.fromInt 5_000_000 , mintingPolicy - , tokensToMint: cs /\ tn /\ one /\ unit - , datumToAttach: wrap $ Integer $ BigInt.fromInt 42 - , txMetadata: cip25MetadataFixture1 + , tokensToMint: cs /\ tn /\ BigNum.one /\ unit + , datumToAttach: Integer $ BigInt.fromInt 42 } checks <- ContractTestUtils.mkChecks params - { tokensToMint = cs /\ tn /\ (one + one) /\ unit } + { tokensToMint = cs /\ tn + /\ (unsafePartial $ BigNum.one <> BigNum.one) + /\ unit + } eiResult /\ failures <- collectAssertionFailures checks $ lift do ContractTestUtils.mkContract params eiResult `shouldSatisfy` isRight @@ -113,24 +116,24 @@ suite = do mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 - tn <- mkTokenName "TheToken" + tn <- mkAssetName "TheToken" withKeyWallet alice do let params = { receiverPkh , receiverSkh - , adaToSend: BigInt.fromInt 5_000_000 + , adaToSend: wrap $ BigNum.fromInt 5_000_000 , mintingPolicy - , tokensToMint: cs /\ tn /\ one /\ unit - , datumToAttach: wrap $ Integer $ BigInt.fromInt 42 - , txMetadata: cip25MetadataFixture1 + , tokensToMint: cs /\ tn /\ BigNum.one /\ unit + , datumToAttach: Integer $ BigInt.fromInt 42 } checks <- ContractTestUtils.mkChecks params <#> ( _ <> [ checkExUnitsNotExceed - { mem: BigInt.fromInt 800, steps: BigInt.fromInt 16110 } + $ ExUnits + { mem: BigNum.fromInt 800, steps: BigNum.fromInt 16110 } ] ) eiResult /\ failures <- collectAssertionFailures checks $ lift do @@ -148,26 +151,28 @@ suite = do mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 - tn <- mkTokenName "TheToken" + tn <- mkAssetName "TheToken" withKeyWallet alice do let params = { receiverPkh , receiverSkh - , adaToSend: BigInt.fromInt 5_000_000 + , adaToSend: wrap $ BigNum.fromInt 5_000_000 , mintingPolicy - , tokensToMint: cs /\ tn /\ one /\ unit - , datumToAttach: wrap $ Integer $ BigInt.fromInt 42 - , txMetadata: cip25MetadataFixture1 + , tokensToMint: cs /\ tn /\ BigNum.one /\ unit + , datumToAttach: Integer $ BigInt.fromInt 42 } checks <- ContractTestUtils.mkChecks params - { tokensToMint = cs /\ tn /\ (one + one) /\ unit } <#> + { tokensToMint = cs /\ tn + /\ (unsafePartial $ BigNum.one <> BigNum.one) + /\ unit + } <#> ( _ <> - [ checkExUnitsNotExceed - { mem: BigInt.fromInt 800, steps: BigInt.fromInt 16110 } + [ checkExUnitsNotExceed $ ExUnits + { mem: BigNum.fromInt 800, steps: BigNum.fromInt 16110 } ] ) diff --git a/test/Plutip/Contract/NetworkId.purs b/test/Plutip/Contract/NetworkId.purs deleted file mode 100644 index 1a08d09fa..000000000 --- a/test/Plutip/Contract/NetworkId.purs +++ /dev/null @@ -1,26 +0,0 @@ -module Test.Ctl.Plutip.Contract.NetworkId - ( suite - ) where - -import Prelude - -import Contract.Address (addressFromBech32) as Address -import Contract.Test (ContractTest) -import Contract.Test.Mote (TestPlanM) -import Contract.Test.Plutip (noWallet) -import Ctl.Internal.Plutus.Conversion.Address (fromPlutusAddress) -import Ctl.Internal.Serialization.Address (NetworkId(MainnetId), addressBech32) -import Mote (group, test) -import Test.Spec.Assertions (shouldEqual) - -suite :: TestPlanM ContractTest Unit -suite = group "NetworkId Tests" $ do - test "Mainnet Address in Mainnet Env" testMainnetAddress - -testMainnetAddress :: ContractTest -testMainnetAddress = noWallet do - let - bechstr = - "addr1qyc0kwu98x23ufhsxjgs5k3h7gktn8v5682qna5amwh2juguztcrc8hjay66es67ctn0jmr9plfmlw37je2s2px4xdssgvxerq" - addr <- Address.addressFromBech32 bechstr - addressBech32 (fromPlutusAddress MainnetId addr) `shouldEqual` bechstr diff --git a/test/Plutip/Contract/OgmiosMempool.purs b/test/Plutip/Contract/OgmiosMempool.purs index 269ec587a..0af7dd40c 100644 --- a/test/Plutip/Contract/OgmiosMempool.purs +++ b/test/Plutip/Contract/OgmiosMempool.purs @@ -4,6 +4,7 @@ module Test.Ctl.Plutip.Contract.OgmiosMempool import Prelude +import Cardano.Types.BigNum as BigNum import Contract.Backend.Ogmios.Mempool ( MempoolSizeAndCapacity(MempoolSizeAndCapacity) , acquireMempoolSnapshot @@ -18,7 +19,6 @@ import Contract.Test.Mote (TestPlanM) import Contract.Transaction (awaitTxConfirmed) import Ctl.Examples.PlutusV2.InlineDatum as InlineDatum import Data.Array (length) -import JS.BigInt as BigInt import Mote (group, skip, test) import Test.Spec.Assertions (shouldEqual) @@ -28,8 +28,8 @@ suite = group "Ogmios mempool test" do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1000_000_000 - , BigInt.fromInt 2000_000_000 + [ BigNum.fromInt 1000_000_000 + , BigNum.fromInt 2000_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -38,8 +38,8 @@ suite = group "Ogmios mempool test" do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1000_000_000 - , BigInt.fromInt 2000_000_000 + [ BigNum.fromInt 1000_000_000 + , BigNum.fromInt 2000_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -57,8 +57,8 @@ suite = group "Ogmios mempool test" do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1000_000_000 - , BigInt.fromInt 2000_000_000 + [ BigNum.fromInt 1000_000_000 + , BigNum.fromInt 2000_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -78,8 +78,8 @@ suite = group "Ogmios mempool test" do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 1000_000_000 - , BigInt.fromInt 2000_000_000 + [ BigNum.fromInt 1000_000_000 + , BigNum.fromInt 2000_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do diff --git a/test/Plutip/ExUnits.purs b/test/Plutip/ExUnits.purs index b05bc9373..c62aebed8 100644 --- a/test/Plutip/ExUnits.purs +++ b/test/Plutip/ExUnits.purs @@ -5,6 +5,7 @@ module Test.Ctl.Plutip.ExUnits import Prelude +import Cardano.Types.BigNum as BigNum import Contract.Log (logInfo') import Contract.Scripts (validatorHash) import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) @@ -24,8 +25,8 @@ mkSuite n = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 500_000_000 - , BigInt.fromInt 500_000_000 + [ BigNum.fromInt 500_000_000 + , BigNum.fromInt 500_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do @@ -44,8 +45,8 @@ mkFailingSuite n = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 500_000_000 - , BigInt.fromInt 500_000_000 + [ BigNum.fromInt 500_000_000 + , BigNum.fromInt 500_000_000 ] withWallets distribution \alice -> do withKeyWallet alice do diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 8674bcf21..630a407d1 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -5,29 +5,24 @@ module Test.Ctl.Plutip.Staking import Prelude -import Contract.Address - ( PaymentPubKeyHash(PaymentPubKeyHash) - , getNetworkId +import Cardano.AsCbor (decodeCbor) +import Cardano.Types (PoolParams(PoolParams), UnitInterval(UnitInterval)) +import Cardano.Types.Credential + ( Credential(ScriptHashCredential, PubKeyHashCredential) ) +import Cardano.Types.NativeScript as NativeScript +import Cardano.Types.PlutusScript as PlutusScript +import Contract.Address (getNetworkId) import Contract.Backend.Ogmios (getPoolParameters) -import Contract.Credential (Credential(ScriptCredential)) -import Contract.Hashing (plutusScriptStakeValidatorHash, publicKeyHash) +import Contract.Hashing (publicKeyHash) import Contract.Log (logInfo') import Contract.Monad (Contract, liftedM) -import Contract.Numeric.BigNum as BigNum +import Contract.Numeric.BigNum (fromInt, toBigInt) as BigNum import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.Prelude (liftM) import Contract.Prim.ByteArray (hexToByteArray) -import Contract.RewardAddress (stakePubKeyHashRewardAddress) import Contract.ScriptLookups as Lookups -import Contract.Scripts - ( NativeScript(ScriptPubkey, ScriptAny) - , NativeScriptHash(NativeScriptHash) - , NativeScriptStakeValidator(NativeScriptStakeValidator) - , PlutusScriptStakeValidator(PlutusScriptStakeValidator) - , ValidatorHash(ValidatorHash) - , nativeScriptStakeValidatorHash - ) +import Contract.Scripts (NativeScript(ScriptPubkey, ScriptAny)) import Contract.Staking ( getPoolIds , getPubKeyHashDelegationsAndRewards @@ -43,7 +38,6 @@ import Contract.Transaction , balanceTx , mkPoolPubKeyHash , signTransaction - , vrfKeyHashFromBytes ) import Contract.TxConstraints ( DatumPresence(DatumWitness) @@ -72,12 +66,13 @@ import Contract.Wallet ) import Contract.Wallet.Key (keyWalletPrivateStakeKey, publicKeyFromPrivateKey) import Ctl.Examples.AlwaysSucceeds (alwaysSucceedsScript) +import Ctl.Examples.Helpers (submitAndLog) import Ctl.Examples.IncludeDatum (only42Script) import Data.Array (head, (!!)) import Data.Array as Array import Data.Foldable (for_) -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Newtype (unwrap) +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (unwrap, wrap) import Data.Posix.Signal (Signal(SIGINT)) import Data.Time.Duration (Seconds(Seconds)) import Data.Tuple (Tuple(Tuple)) @@ -95,12 +90,9 @@ import Effect.Aff import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) import Effect.Exception (error) -import JS.BigInt as BigInt import Mote (group, skip, test) -import Partial.Unsafe (unsafePartial) import Test.Ctl.Plutip.Common (config) as Common import Test.Ctl.Plutip.Common (privateStakeKey) -import Test.Ctl.Plutip.Utils (submitAndLog) import Test.Spec.Assertions (shouldEqual, shouldSatisfy) import Test.Spec.Runner (defaultConfig) @@ -137,8 +129,8 @@ suite = do test "PubKey" do let distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 2_000_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution $ flip withKeyWallet do alicePkh /\ aliceStakePkh <- do @@ -177,8 +169,8 @@ suite = do test "PlutusScript" do let distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 2_000_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution $ flip withKeyWallet do alicePkh /\ aliceStakePkh <- do @@ -187,13 +179,11 @@ suite = do <*> liftedM "Failed to get Stake PKH" (join <<< head <$> ownStakePubKeyHashes) - validator1 <- alwaysSucceedsScript <#> unwrap >>> - PlutusScriptStakeValidator - validator2 <- only42Script <#> unwrap >>> - PlutusScriptStakeValidator + validator1 <- alwaysSucceedsScript + validator2 <- only42Script let - validatorHash1 = plutusScriptStakeValidatorHash validator1 - validatorHash2 = plutusScriptStakeValidatorHash validator2 + validatorHash1 = PlutusScript.hash validator1 + validatorHash2 = PlutusScript.hash validator2 -- Register do @@ -229,8 +219,8 @@ suite = do test "NativeScript" do let distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 2_000_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution $ flip withKeyWallet do alicePkh /\ aliceStakePkh <- do @@ -241,10 +231,8 @@ suite = do (join <<< head <$> ownStakePubKeyHashes) let nativeScript = ScriptAny - [ ScriptPubkey $ unwrap $ unwrap alicePkh ] - validator = NativeScriptStakeValidator nativeScript - stakeValidatorHash = - nativeScriptStakeValidatorHash validator + [ ScriptPubkey $ unwrap alicePkh ] + stakeValidatorHash = NativeScript.hash nativeScript -- Register do @@ -262,7 +250,7 @@ suite = do -- Deregister stake key do let - constraints = mustDeregisterStakeNativeScript validator + constraints = mustDeregisterStakeNativeScript nativeScript lookups :: Lookups.ScriptLookups lookups = @@ -275,8 +263,8 @@ suite = do test "Pool registration & retirement" do let distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 2_000_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution \alice -> withKeyWallet alice do alicePkh /\ aliceStakePkh <- Tuple @@ -309,26 +297,26 @@ suite = do vrfKeyHash <- liftM (error "Unable to decode VRFKeyHash") do hexToByteArray "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - >>= vrfKeyHashFromBytes + >>= wrap >>> decodeCbor let - rewardAccount = stakePubKeyHashRewardAddress networkId aliceStakePkh + rewardAccount = + { networkId + , stakeCredential: wrap $ PubKeyHashCredential $ unwrap + aliceStakePkh + } - poolParams = + poolParams = PoolParams { operator: poolOperator , vrfKeyhash: vrfKeyHash -- needed to prove that the pool won the lottery - , pledge: unsafePartial $ fromJust $ BigNum.fromBigInt $ - BigInt.fromInt 1 - , cost: unsafePartial $ fromJust $ BigNum.fromBigInt $ - BigInt.fromInt 1 - , margin: - { numerator: unsafePartial $ fromJust $ BigNum.fromBigInt $ - BigInt.fromInt 1 - , denominator: unsafePartial $ fromJust $ BigNum.fromBigInt $ - BigInt.fromInt 1 + , pledge: BigNum.fromInt 1 + , cost: BigNum.fromInt 1 + , margin: UnitInterval + { numerator: BigNum.fromInt 1 + , denominator: BigNum.fromInt 1 } , rewardAccount , poolOwners: - [ PaymentPubKeyHash $ publicKeyHash $ + [ publicKeyHash $ publicKeyFromPrivateKey (unwrap privateStakeKey) ] @@ -394,8 +382,8 @@ suite = do do let distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution \alice -> withKeyWallet alice do @@ -403,22 +391,20 @@ suite = do <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) <*> liftedM "Failed to get Stake PKH" (join <<< head <$> ownStakePubKeyHashes) - validator <- alwaysSucceedsScript <#> unwrap >>> - PlutusScriptStakeValidator + validator <- alwaysSucceedsScript let - stakeValidatorHash = plutusScriptStakeValidatorHash validator - validatorHash = ValidatorHash $ unwrap stakeValidatorHash + validatorHash = PlutusScript.hash validator -- Lock funds on the stake script do let constraints = mustPayToScriptAddress validatorHash - (ScriptCredential validatorHash) + (ScriptHashCredential validatorHash) unitDatum DatumWitness $ lovelaceValueOf - $ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 100 + $ BigNum.fromInt 1_000_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -430,7 +416,7 @@ suite = do do let constraints = - mustRegisterStakeScript stakeValidatorHash + mustRegisterStakeScript validatorHash lookups :: Lookups.ScriptLookups lookups = mempty @@ -460,10 +446,11 @@ suite = do -- timeout for tests. waitUntilRewards = do mbDelegationsAndRewards <- - getValidatorHashDelegationsAndRewards stakeValidatorHash + getValidatorHashDelegationsAndRewards validatorHash case mbDelegationsAndRewards of - Just dels@{ rewards } | unwrap <$> rewards > Just zero -> - pure dels + Just dels@{ rewards } + | BigNum.toBigInt <<< unwrap <$> rewards > Just zero -> + pure dels _ -> do liftAff $ delay $ Milliseconds 5000.0 waitUntilRewards @@ -492,7 +479,7 @@ suite = do -- (usually) significantly longer. do { rewards: rewardsAfter } <- liftedM "Unable to get rewards" $ - getValidatorHashDelegationsAndRewards stakeValidatorHash + getValidatorHashDelegationsAndRewards validatorHash rewardsAfter `shouldSatisfy` \after -> after < rewardsBefore skip $ test @@ -500,12 +487,12 @@ suite = do do let distribution = - [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 ] /\ withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution \(alice /\ bob) -> do bobPkh /\ bobStakePkh <- withKeyWallet bob do @@ -515,10 +502,8 @@ suite = do (join <<< head <$> ownStakePubKeyHashes) let nativeScript = ScriptAny - [ ScriptPubkey $ unwrap $ unwrap bobStakePkh ] - validator = NativeScriptStakeValidator nativeScript - stakeValidatorHash = - nativeScriptStakeValidatorHash validator + [ ScriptPubkey $ unwrap bobStakePkh ] + scriptHash = NativeScript.hash nativeScript -- Alice withKeyWallet alice do @@ -528,12 +513,10 @@ suite = do let constraints = mustPayToNativeScriptAddress - (NativeScriptHash $ unwrap stakeValidatorHash) - ( ScriptCredential $ ValidatorHash $ unwrap - stakeValidatorHash - ) + scriptHash + (ScriptHashCredential scriptHash) $ lovelaceValueOf - $ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 100 + $ BigNum.fromInt 1_000_000_000 lookups :: Lookups.ScriptLookups lookups = mempty @@ -545,7 +528,7 @@ suite = do do let constraints = - mustRegisterStakeScript stakeValidatorHash + mustRegisterStakeScript scriptHash lookups :: Lookups.ScriptLookups lookups = mempty @@ -564,7 +547,7 @@ suite = do do let constraints = - mustDelegateStakeNativeScript validator poolId + mustDelegateStakeNativeScript nativeScript poolId lookups :: Lookups.ScriptLookups lookups = @@ -579,10 +562,11 @@ suite = do -- timeout for tests. waitUntilRewards = do mbDelegationsAndRewards <- - getValidatorHashDelegationsAndRewards stakeValidatorHash + getValidatorHashDelegationsAndRewards scriptHash case mbDelegationsAndRewards of - Just dels@{ rewards } | unwrap <$> rewards > Just zero -> - pure dels + Just dels@{ rewards } + | BigNum.toBigInt <<< unwrap <$> rewards > Just zero -> + pure dels _ -> do liftAff $ delay $ Milliseconds 5000.0 waitUntilRewards @@ -594,7 +578,7 @@ suite = do do let constraints = - mustWithdrawStakeNativeScript validator + mustWithdrawStakeNativeScript nativeScript lookups :: Lookups.ScriptLookups lookups = @@ -611,14 +595,14 @@ suite = do -- (usually) significantly longer. do { rewards: rewardsAfter } <- liftedM "Unable to get rewards" $ - getValidatorHashDelegationsAndRewards stakeValidatorHash + getValidatorHashDelegationsAndRewards scriptHash rewardsAfter `shouldSatisfy` \after -> after < rewardsBefore skip $ test "PubKey: delegate to existing pool & withdraw rewards" do let distribution = withStakeKey privateStakeKey - [ BigInt.fromInt 1_000_000_000 * BigInt.fromInt 1_000 - , BigInt.fromInt 2_000_000_000 * BigInt.fromInt 1_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution \alice -> withKeyWallet alice do @@ -661,10 +645,11 @@ suite = do -- timeout for tests. waitUntilRewards = do mbDelegationsAndRewards <- - getPubKeyHashDelegationsAndRewards aliceStakePkh + getPubKeyHashDelegationsAndRewards $ unwrap aliceStakePkh case mbDelegationsAndRewards of - Just dels@{ rewards } | unwrap <$> rewards > Just zero -> - pure dels + Just dels@{ rewards } + | BigNum.toBigInt <<< unwrap <$> rewards > Just zero -> + pure dels _ -> do liftAff $ delay $ Milliseconds 5000.0 waitUntilRewards @@ -697,7 +682,8 @@ suite = do do { rewards: rewardsAfter } <- liftedM "Unable to get rewards" - $ getPubKeyHashDelegationsAndRewards aliceStakePkh + $ getPubKeyHashDelegationsAndRewards + $ unwrap aliceStakePkh rewardsAfter `shouldSatisfy` \after -> after < rewardsBefore where config = diff --git a/test/Plutip/Utils.purs b/test/Plutip/Utils.purs index a02909571..42e4e87e4 100644 --- a/test/Plutip/Utils.purs +++ b/test/Plutip/Utils.purs @@ -7,11 +7,7 @@ import Prelude import Contract.Log (logInfo') import Contract.Monad (Contract) -import Contract.Transaction - ( BalancedSignedTransaction - , awaitTxConfirmed - , submit - ) +import Contract.Transaction (Transaction, awaitTxConfirmed, submit) import Control.Monad.Reader (asks) import Ctl.Internal.Types.UsedTxOuts (TxOutRefCache) import Data.Newtype (unwrap) @@ -21,7 +17,7 @@ import Effect.Ref as Ref -- TODO: Get everything we can about a tx and confirm them -- eg. outputs, metadata, datums, scripts submitAndLog - :: BalancedSignedTransaction -> Contract Unit + :: Transaction -> Contract Unit submitAndLog bsTx = do txId <- submit bsTx logInfo' $ "Tx ID: " <> show txId diff --git a/test/Plutip/UtxoDistribution.purs b/test/Plutip/UtxoDistribution.purs index fcc796eb1..ea297a9f9 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Plutip/UtxoDistribution.purs @@ -14,11 +14,16 @@ module Test.Ctl.Plutip.UtxoDistribution import Prelude -import Contract.Address - ( Address - , getNetworkId - , payPubKeyHashEnterpriseAddress +import Cardano.Types + ( BigNum + , Credential(PubKeyHashCredential) + , TransactionInput + , TransactionOutput + , UtxoMap ) +import Cardano.Types.Address (Address(EnterpriseAddress)) +import Cardano.Types.BigNum as BigNum +import Contract.Address (Address, getNetworkId) import Contract.Monad (Contract, liftedM) import Contract.Test.Plutip ( class UtxoDistribution @@ -27,11 +32,7 @@ import Contract.Test.Plutip , runPlutipContract , withStakeKey ) -import Contract.Transaction - ( TransactionInput - , TransactionOutputWithRefScript(TransactionOutputWithRefScript) - ) -import Contract.Utxos (UtxoMap, utxosAt) +import Contract.Utxos (utxosAt) import Contract.Value (Value, lovelaceValueOf) import Contract.Wallet ( KeyWallet @@ -48,17 +49,16 @@ import Data.Array.NonEmpty (fromNonEmpty) as NEArray import Data.Foldable (intercalate) import Data.FoldableWithIndex (foldlWithIndex) import Data.Map (empty, insert, isEmpty) as Map -import Data.Maybe (isJust) -import Data.Newtype (unwrap) +import Data.Maybe (fromJust, isJust) +import Data.Newtype (unwrap, wrap) import Data.NonEmpty ((:|)) import Data.Traversable (for_) import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (throw) -import JS.BigInt (BigInt) -import JS.BigInt (fromInt, toString) as BigInt import Mote (group, test) +import Partial.Unsafe (unsafePartial) import Test.Ctl.Plutip.Common (config, privateStakeKey) import Test.QuickCheck (class Arbitrary, arbitrary) import Test.QuickCheck.Gen @@ -79,7 +79,7 @@ suite = group "UtxoDistribution" do do let distribution :: Array InitialUTxOs - distribution = replicate 2 [ BigInt.fromInt 1_000_000_000 ] + distribution = replicate 2 [ BigNum.fromInt 1_000_000_000 ] runPlutipContract config distribution $ checkUtxoDistribution distribution test @@ -88,7 +88,7 @@ suite = group "UtxoDistribution" do let distribution :: Array InitialUTxOsWithStakeKey distribution = withStakeKey privateStakeKey <$> replicate 2 - [ BigInt.fromInt 1_000_000_000 ] + [ BigNum.fromInt 1_000_000_000 ] runPlutipContract config distribution $ checkUtxoDistribution distribution test @@ -96,7 +96,7 @@ suite = group "UtxoDistribution" do do let distribution1 :: Array InitialUTxOs - distribution1 = replicate 2 [ BigInt.fromInt 1_000_000_000 ] + distribution1 = replicate 2 [ BigNum.fromInt 1_000_000_000 ] distribution = distribution1 /\ (withStakeKey privateStakeKey <$> distribution1) @@ -133,8 +133,10 @@ checkUtxoDistribution distr wallets = do -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/857 -- is resolved genInitialUtxo :: Gen InitialUTxOs -genInitialUtxo = map (BigInt.fromInt >>> (_ * BigInt.fromInt 1_000_000)) - <$> arrayOf (chooseInt 1 1000) +genInitialUtxo = unsafePartial $ + map + (BigNum.fromInt >>> (_ `BigNum.mul` BigNum.fromInt 1_000_000) >>> fromJust) + <$> arrayOf (chooseInt 1 1000) instance Arbitrary ArbitraryUtxoDistr where arbitrary = @@ -164,7 +166,7 @@ data ArbitraryUtxoDistr | UDTuple ArbitraryUtxoDistr ArbitraryUtxoDistr ppInitialUtxos :: InitialUTxOs -> String -ppInitialUtxos x = "[" <> intercalate ", " (map BigInt.toString x) <> "]" +ppInitialUtxos x = "[" <> intercalate ", " (map BigNum.toString x) <> "]" ppArbitraryUtxoDistr :: ArbitraryUtxoDistr -> String ppArbitraryUtxoDistr = case _ of @@ -205,11 +207,15 @@ assertUtxosAtPlutipWalletAddress wallet = withKeyWallet wallet do assertNoUtxosAtEnterpriseAddress :: KeyWallet -> Contract Unit assertNoUtxosAtEnterpriseAddress wallet = withKeyWallet wallet $ - assertNoUtxosAtAddress =<< liftedM "Could not get wallet address" - ( payPubKeyHashEnterpriseAddress - <$> getNetworkId - <*> liftedM "Could not get payment pubkeyhash" - (head <$> ownPaymentPubKeyHashes) + assertNoUtxosAtAddress =<< + ( EnterpriseAddress <$> + ( { networkId: _, paymentCredential: _ } + <$> getNetworkId + <*> liftedM "Could not get payment pubkeyhash" + ( map (wrap <<< PubKeyHashCredential <<< unwrap) <<< head <$> + ownPaymentPubKeyHashes + ) + ) ) assertNoUtxosAtAddress :: Address -> Contract Unit @@ -245,7 +251,7 @@ assertCorrectDistribution wallets = for_ wallets \(wallet /\ expectedAmounts) -> -- Remove a single utxo containing the expected ada amount, -- returning the updated utxo map and false if it could not be -- found - findAndRemoveExpected :: Boolean /\ UtxoMap -> BigInt -> Boolean /\ UtxoMap + findAndRemoveExpected :: Boolean /\ UtxoMap -> BigNum -> Boolean /\ UtxoMap findAndRemoveExpected o@(false /\ _) _ = o findAndRemoveExpected (_ /\ utxos) expected = foldlWithIndex @@ -259,12 +265,12 @@ assertCorrectDistribution wallets = for_ wallets \(wallet /\ expectedAmounts) -> :: Value -> TransactionInput -> Boolean /\ UtxoMap - -> TransactionOutputWithRefScript + -> TransactionOutput -> Boolean /\ UtxoMap removeUtxoMatchingValue expected i (found /\ m) - o@(TransactionOutputWithRefScript { output }) + output | not found && expected == (unwrap output).amount = true /\ m - | otherwise = found /\ Map.insert i o m + | otherwise = found /\ Map.insert i output m diff --git a/test/Plutus/Conversion/Address.purs b/test/Plutus/Conversion/Address.purs deleted file mode 100644 index 7faf5e765..000000000 --- a/test/Plutus/Conversion/Address.purs +++ /dev/null @@ -1,192 +0,0 @@ -module Test.Ctl.Internal.Plutus.Conversion.Address (suite) where - -import Prelude - -import Contract.Numeric.BigNum (BigNum) -import Contract.Numeric.BigNum (fromInt) as BigNum -import Ctl.Internal.Plutus.Conversion (fromPlutusAddress, toPlutusAddress) -import Ctl.Internal.Plutus.Types.Address (Address) as Plutus -import Ctl.Internal.Plutus.Types.Credential - ( Credential(PubKeyCredential, ScriptCredential) - , StakingCredential(StakingHash, StakingPtr) - ) -import Ctl.Internal.Serialization.Address - ( NetworkId(MainnetId, TestnetId) - , addressFromBech32 - ) -import Ctl.Internal.Serialization.Hash - ( ed25519KeyHashFromBech32 - , scriptHashFromBech32 - ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.Aliases (Bech32String) -import Data.Array (length, range, zip) -import Data.Maybe (Maybe(Just, Nothing), fromJust) -import Data.Newtype (class Newtype, wrap) -import Data.Traversable (for_) -import Data.Tuple.Nested ((/\)) -import Effect.Aff (Aff) -import Mote (group, test) -import Partial.Unsafe (unsafePartial) -import Test.Ctl.Utils (errMaybe, toFromAesonTest) -import Test.Spec.Assertions (shouldEqual) - -suite :: TestPlanM (Aff Unit) Unit -suite = do - group "Conversion: Plutus Address <-> CSL Address" do - group "Shelley mainnet addresses" do - addressConversionTests MainnetId - group "Shelley testnet addresses" do - addressConversionTests TestnetId - group "Aeson tests" $ do - group "Roundtrip tests" - $ for_ addresses - $ toFromAesonTest "Address" - -addressConversionTests :: NetworkId -> TestPlanM (Aff Unit) Unit -addressConversionTests networkId = - let - addressesBech32 = - case networkId of - MainnetId -> addressesBech32Mainnet - TestnetId -> addressesBech32Testnet - indices = 0 `range` (length addresses - 1) - testData = zip (zip addressesBech32 addresses) indices - in - for_ testData $ \((addrBech32 /\ addr) /\ addrType) -> - toFromPlutusAddressTest networkId addrType addrBech32 addr - -toFromPlutusAddressTest - :: NetworkId - -> Int - -> Bech32String - -> Plutus.Address - -> TestPlanM (Aff Unit) Unit -toFromPlutusAddressTest networkId addrType addrBech32 addrPlutus = do - let testLabel = "Performs conversion between addresses of type " - test (testLabel <> show addrType) $ do - addrForeign <- - errMaybe "addressFromBech32 failed on valid bech32" $ - addressFromBech32 addrBech32 - resAddrPlutus <- - errMaybe "toPlutusAddress failed on valid foreign address" $ - toPlutusAddress addrForeign - resAddrPlutus `shouldEqual` addrPlutus - let resAddrForeign = fromPlutusAddress networkId resAddrPlutus - resAddrForeign `shouldEqual` addrForeign - --- Mainnet addresses. --- Test vectors are taken from the CIP-0019 specification. --- https://github.com/cardano-foundation/CIPs/tree/master/CIP-0019#test-vectors -addressesBech32Mainnet :: Array Bech32String -addressesBech32Mainnet = - [ "addr1qx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5wktcd8" - <> "cc3sq835lu7drv2xwl2wywfgse35a3x" - - , "addr1z8phkx6acpnf78fuvxn0mkew3l0fd058hzquvz7w36x4gten0d3vllmyqwsx5wktcd8" - <> "cc3sq835lu7drv2xwl2wywfgs9yc0hh" - - , "addr1yx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzerkr0vd4msrxnuwnccdxlhd" - <> "jar77j6lg0wypcc9uar5d2shs2z78ve" - - , "addr1x8phkx6acpnf78fuvxn0mkew3l0fd058hzquvz7w36x4gt7r0vd4msrxnuwnccdxlhd" - <> "jar77j6lg0wypcc9uar5d2shskhj42g" - - , "addr1gx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer5pnz75xxcrzqf96k" - - , "addr128phkx6acpnf78fuvxn0mkew3l0fd058hzquvz7w36x4gtupnz75xxcrtw79hu" - - , "addr1vx2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzers66hrl8" - - , "addr1w8phkx6acpnf78fuvxn0mkew3l0fd058hzquvz7w36x4gtcyjy7wx" - ] - --- Testnet addresses. --- Test vectors are taken from the CIP-0019 specification. --- https://github.com/cardano-foundation/CIPs/tree/master/CIP-0019#test-vectors -addressesBech32Testnet :: Array Bech32String -addressesBech32Testnet = - [ "addr_test1qz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer3n0d3vllmyqwsx5w" - <> "ktcd8cc3sq835lu7drv2xwl2wywfgs68faae" - - , "addr_test1zrphkx6acpnf78fuvxn0mkew3l0fd058hzquvz7w36x4gten0d3vllmyqwsx5w" - <> "ktcd8cc3sq835lu7drv2xwl2wywfgsxj90mg" - - , "addr_test1yz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzerkr0vd4msrxnuwncc" - <> "dxlhdjar77j6lg0wypcc9uar5d2shsf5r8qx" - - , "addr_test1xrphkx6acpnf78fuvxn0mkew3l0fd058hzquvz7w36x4gt7r0vd4msrxnuwncc" - <> "dxlhdjar77j6lg0wypcc9uar5d2shs4p04xh" - - , "addr_test1gz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzer5pnz75xxcrdw5vky" - - , "addr_test12rphkx6acpnf78fuvxn0mkew3l0fd058hzquvz7w36x4gtupnz75xxcryqrvmw" - - , "addr_test1vz2fxv2umyhttkxyxp8x0dlpdt3k6cwng5pxj3jhsydzerspjrlsz" - - , "addr_test1wrphkx6acpnf78fuvxn0mkew3l0fd058hzquvz7w36x4gtcl6szpr" - ] - -addresses :: Array Plutus.Address -addresses = wrap <$> - [ { addressCredential: pubKeyCredential - , addressStakingCredential: Just stakingHash - } - , { addressCredential: scriptCredential - , addressStakingCredential: Just stakingHash - } - , { addressCredential: pubKeyCredential - , addressStakingCredential: Just $ StakingHash scriptCredential - } - , { addressCredential: scriptCredential - , addressStakingCredential: Just $ StakingHash scriptCredential - } - , { addressCredential: pubKeyCredential - , addressStakingCredential: Just stakingPtr - } - , { addressCredential: scriptCredential - , addressStakingCredential: Just stakingPtr - } - , { addressCredential: pubKeyCredential - , addressStakingCredential: Nothing - } - , { addressCredential: scriptCredential - , addressStakingCredential: Nothing - } - ] - -paymentKeyBech32 :: Bech32String -paymentKeyBech32 = - "addr_vkh1jjfnzhxe966a33psfenm0ct2udkkr569qf55v4uprgkgu8zsvmg" - -pubKeyCredential :: Credential -pubKeyCredential = - PubKeyCredential <<< wrap <<< unsafePartial fromJust $ - ed25519KeyHashFromBech32 paymentKeyBech32 - -scriptBech32 :: Bech32String -scriptBech32 = - "script1cda3khwqv60360rp5m7akt50m6ttapacs8rqhn5w342z7r35m37" - -scriptCredential :: Credential -scriptCredential = - ScriptCredential <<< wrap <<< unsafePartial fromJust $ - scriptHashFromBech32 scriptBech32 - -stakeKeyBech32 :: Bech32String -stakeKeyBech32 = - "stake_vkh1xdak9nllvsp6q636e0p5lrzxqq7xnlne5d3gemafc3e9z3v4vud" - -stakingHash :: StakingCredential -stakingHash = - StakingHash <<< PubKeyCredential <<< wrap <<< unsafePartial fromJust $ - (ed25519KeyHashFromBech32 stakeKeyBech32) - -stakingPtr :: StakingCredential -stakingPtr = - let - wrapBn :: forall (t :: Type). Newtype t BigNum => Int -> t - wrapBn = wrap <<< BigNum.fromInt - in - StakingPtr - { slot: wrapBn 2498243, txIx: wrapBn 27, certIx: wrapBn 3 } diff --git a/test/Plutus/Conversion/Value.purs b/test/Plutus/Conversion/Value.purs deleted file mode 100644 index 36d8a4438..000000000 --- a/test/Plutus/Conversion/Value.purs +++ /dev/null @@ -1,79 +0,0 @@ -module Test.Ctl.Internal.Plutus.Conversion.Value (suite) where - -import Prelude - -import Ctl.Internal.Cardano.Types.Value (Value) as Types -import Ctl.Internal.Cardano.Types.Value as Value -import Ctl.Internal.Plutus.Conversion (fromPlutusValue, toPlutusValue) -import Ctl.Internal.Plutus.Types.CurrencySymbol (CurrencySymbol) as Plutus -import Ctl.Internal.Plutus.Types.CurrencySymbol as Plutus.CurrencySymbol -import Ctl.Internal.Plutus.Types.Value (Value) as Plutus -import Ctl.Internal.Plutus.Types.Value as Plutus.Value -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Data.Array (length, range, zip) -import Data.Maybe (fromJust) -import Data.Traversable (for_) -import Data.Tuple (fst, snd) -import Data.Tuple.Nested (type (/\), (/\)) -import Effect.Aff (Aff) -import JS.BigInt (fromInt) -import Mote (group, test) -import Partial.Unsafe (unsafePartial) -import Test.Ctl.Fixtures (currencySymbol1, tokenName1, tokenName2) -import Test.Spec.Assertions (shouldEqual) - -suite :: TestPlanM (Aff Unit) Unit -suite = do - group "Conversion: Plutus Value <-> Types.Value" $ do - let indices = 0 `range` (length testData - 1) - for_ (zip testData indices) $ \((valuePlutus /\ value) /\ i) -> - toFromPlutusValueTest i valuePlutus value - -toFromPlutusValueTest - :: Int -> Plutus.Value -> Types.Value -> TestPlanM (Aff Unit) Unit -toFromPlutusValueTest i valuePlutus value = do - test (show i <> ": Performs conversion between `Value`s") $ do - let resValue = fromPlutusValue valuePlutus - resValue `shouldEqual` value - let resValuePlutus = toPlutusValue resValue - resValuePlutus `shouldEqual` valuePlutus - -testData :: Array (Plutus.Value /\ Types.Value) -testData = [ emptyValues, adaValues, nonAdaValues, compositeValues ] - where - amount1 /\ amount2 = fromInt 5000 /\ fromInt 6000 - - currencySymbol1' :: Plutus.CurrencySymbol - currencySymbol1' = unsafePartial $ fromJust $ - Plutus.CurrencySymbol.mkCurrencySymbol - (Value.getCurrencySymbol currencySymbol1) - - nonAdaAsset1 :: Value.NonAdaAsset - nonAdaAsset1 = - Value.mkSingletonNonAdaAsset currencySymbol1 tokenName1 amount1 - - nonAdaAsset2 :: Value.NonAdaAsset - nonAdaAsset2 = - Value.mkSingletonNonAdaAsset currencySymbol1 tokenName2 amount2 - - emptyValues :: Plutus.Value /\ Types.Value - emptyValues = mempty /\ mempty - - adaValues :: Plutus.Value /\ Types.Value - adaValues = - Plutus.Value.lovelaceValueOf amount1 /\ - Value.lovelaceValueOf amount1 - - nonAdaValues :: Plutus.Value /\ Types.Value - nonAdaValues = - Plutus.Value.singleton currencySymbol1' tokenName1 amount1 /\ - Value.mkValue mempty nonAdaAsset1 - - compositeValues :: Plutus.Value /\ Types.Value - compositeValues = - ( fst adaValues <> fst nonAdaValues <> - Plutus.Value.singleton currencySymbol1' tokenName2 amount2 - ) /\ - ( snd adaValues <> snd nonAdaValues <> - Value.mkValue mempty nonAdaAsset2 - ) diff --git a/test/Plutus/Credential.purs b/test/Plutus/Credential.purs index 2ab82efdb..6a069721a 100644 --- a/test/Plutus/Credential.purs +++ b/test/Plutus/Credential.purs @@ -5,17 +5,14 @@ module Test.Ctl.Internal.Plutus.Credential import Prelude -import Ctl.Internal.Plutus.Types.Credential - ( Credential(ScriptCredential, PubKeyCredential) - ) -import Ctl.Internal.Serialization.Hash - ( ed25519KeyHashFromBech32 - , scriptHashFromBech32 +import Cardano.Types.Credential + ( Credential(ScriptHashCredential, PubKeyHashCredential) ) +import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash +import Cardano.Types.ScriptHash as ScriptHash import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Aliases (Bech32String) import Data.Maybe (fromJust) -import Data.Newtype (wrap) import Data.Traversable (for_) import Effect.Aff (Aff) import Mote (group) @@ -40,8 +37,8 @@ paymentKeyBech32 = pubKeyCredential :: Credential pubKeyCredential = - PubKeyCredential <<< wrap <<< unsafePartial fromJust $ - ed25519KeyHashFromBech32 paymentKeyBech32 + PubKeyHashCredential <<< unsafePartial fromJust $ + Ed25519KeyHash.fromBech32 paymentKeyBech32 scriptBech32 :: Bech32String scriptBech32 = @@ -49,5 +46,5 @@ scriptBech32 = scriptCredential :: Credential scriptCredential = - ScriptCredential <<< wrap <<< unsafePartial fromJust $ - scriptHashFromBech32 scriptBech32 + ScriptHashCredential <<< unsafePartial fromJust $ + ScriptHash.fromBech32 scriptBech32 diff --git a/test/Plutus/Time.purs b/test/Plutus/Time.purs index 6cfa8ce2a..e0bb88a4f 100644 --- a/test/Plutus/Time.purs +++ b/test/Plutus/Time.purs @@ -4,14 +4,13 @@ module Test.Ctl.Internal.Plutus.Time import Prelude +import Cardano.Types (Epoch(Epoch), Slot(Slot)) import Cardano.Types.BigNum as BigNum import Ctl.Internal.QueryM.Ogmios ( OgmiosEraSummaries(OgmiosEraSummaries) , OgmiosSystemStart ) -import Ctl.Internal.Serialization.Address (Slot(Slot)) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.Epoch (Epoch(Epoch)) import Ctl.Internal.Types.EraSummaries ( EpochLength(EpochLength) , EraSummaries(EraSummaries) @@ -46,6 +45,7 @@ import Ctl.Internal.Types.SystemStart (sysStartFromOgmiosTimestampUnsafe) import Data.Int as Int import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) +import Data.UInt as UInt import Effect.Aff (Aff) import JS.BigInt as BigInt import Mote (group) @@ -79,7 +79,7 @@ relSlotFixture :: RelSlot relSlotFixture = RelSlot $ BigInt.fromInt 12855 currentEpochFixture :: Epoch -currentEpochFixture = Epoch $ BigInt.fromInt 58326646 +currentEpochFixture = Epoch $ UInt.fromInt 58326646 systemStartFixture :: OgmiosSystemStart systemStartFixture = @@ -95,7 +95,7 @@ mkSlot :: Int -> Slot mkSlot = Slot <<< BigNum.fromInt mkEpoch :: Int -> Epoch -mkEpoch = Epoch <<< BigInt.fromInt +mkEpoch = Epoch <<< UInt.fromInt mkEpochLength :: Int -> EpochLength mkEpochLength = EpochLength <<< BigInt.fromInt diff --git a/test/PrivateKey.purs b/test/PrivateKey.purs index a0ad05116..9649b1334 100644 --- a/test/PrivateKey.purs +++ b/test/PrivateKey.purs @@ -2,21 +2,21 @@ module Test.Ctl.PrivateKey where import Prelude +import Cardano.Types + ( Ed25519Signature + , Transaction(Transaction) + , TransactionWitnessSet(TransactionWitnessSet) + , Vkeywitness(Vkeywitness) + ) +import Cardano.Types.Ed25519Signature as Ed25519Signature import Contract.Config (testnetConfig) import Contract.Hashing (publicKeyHash) import Contract.Monad (runContract) import Contract.Transaction - ( FinalizedTransaction(FinalizedTransaction) + ( _witnessSet , signTransaction ) import Contract.Wallet.Key (publicKeyFromPrivateKey) -import Ctl.Internal.Cardano.Types.Transaction - ( Ed25519Signature - , Transaction(Transaction) - , TransactionWitnessSet(TransactionWitnessSet) - , Vkeywitness(Vkeywitness) - , mkEd25519Signature - ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.KeyFile ( privatePaymentKeyFromFile @@ -61,21 +61,19 @@ suite = do , suppressLogs = true } runContract cfg do - signedTx <- unwrap <$> signTransaction (FinalizedTransaction txFixture1) + signedTx <- signTransaction txFixture1 let signature :: Maybe Ed25519Signature signature = Just signedTx ^? _Just - <<< unto Transaction - <<< prop (Proxy :: Proxy "witnessSet") + <<< _witnessSet <<< unto TransactionWitnessSet <<< prop (Proxy :: Proxy "vkeys") - <<< _Just <<< ix 0 <<< unto Vkeywitness - <<< _2 + <<< prop (Proxy :: Proxy "signature") signature `shouldEqual` Just - ( unsafePartial $ fromJust $ mkEd25519Signature $ + ( unsafePartial $ fromJust $ Ed25519Signature.fromBech32 $ "ed25519_sig1w7nkmvk57r6094j9u85r4pddve0hg3985ywl9yzwecx03aa9fnfspl9zmtngmqmczd284lnusjdwkysgukxeq05a548dyepr6vn62qs744wxz" ) test "privateKeyToFile round-trips" do diff --git a/test/Serialization.purs b/test/Serialization.purs index bcda78bb2..5223788be 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -2,22 +2,16 @@ module Test.Ctl.Serialization (suite) where import Prelude -import Cardano.Serialization.Lib (fromBytes, publicKey_fromBytes, toBytes) +import Cardano.AsCbor (decodeCbor, encodeCbor) +import Cardano.Serialization.Lib (publicKey_fromBytes) +import Cardano.Types (PublicKey, Transaction, TransactionHash) import Cardano.Types.BigNum (fromString, one) as BN import Cardano.Types.PlutusData as PD +import Cardano.Types.PublicKey as PublicKey import Contract.Keys (publicKeyFromBech32) -import Ctl.Internal.Cardano.Types.Transaction (PublicKey, Transaction) -import Ctl.Internal.Deserialization.Transaction (convertTransaction) as TD import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.Serialization (convertTransaction) as TS -import Ctl.Internal.Serialization (convertTxOutput, serializeData) -import Ctl.Internal.Serialization.Keys (bytesFromPublicKey) -import Ctl.Internal.Serialization.PlutusData (convertPlutusData) -import Ctl.Internal.Serialization.Types (TransactionHash) import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.CborBytes (cborBytesToHex) import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) -import Data.Either (hush) import Data.Maybe (Maybe, isJust, isNothing) import Data.Newtype (unwrap, wrap) import Data.Nullable (toMaybe) @@ -43,7 +37,7 @@ import Test.Ctl.Fixtures , txOutputBinaryFixture1 , txOutputFixture1 ) -import Test.Ctl.Utils (errMaybe, fromBytesEffect) +import Test.Ctl.Utils (errMaybe) import Test.Spec.Assertions (shouldEqual, shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit @@ -61,7 +55,7 @@ suite = do mPk let - pkBytes = bytesFromPublicKey $ unwrap pk + pkBytes = PublicKey.toRawBytes pk (pk'' :: Maybe PublicKey) = wrap <$> toMaybe ( publicKey_fromBytes $ unwrap pkBytes @@ -73,7 +67,9 @@ suite = do txString = "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65ad959996" txBytes = hexToByteArrayUnsafe txString - _txHash :: TransactionHash <- liftEffect $ fromBytesEffect txBytes + _txHash :: TransactionHash <- liftM (error $ "newTransactionHash") + $ decodeCbor + $ wrap txBytes pure unit test "PlutusData #1 - Constr" $ do let @@ -81,7 +77,7 @@ suite = do [ PD.Integer (BigInt.fromInt 1) , PD.Integer (BigInt.fromInt 2) ] - let _ = convertPlutusData datum -- Checking no exception raised + let _ = encodeCbor datum -- Checking no exception raised pure unit test "PlutusData #2 - Map" $ do let @@ -90,32 +86,31 @@ suite = do [ PD.Integer (BigInt.fromInt 1) /\ PD.Integer (BigInt.fromInt 2) , PD.Integer (BigInt.fromInt 3) /\ PD.Integer (BigInt.fromInt 4) ] - let _ = convertPlutusData datum -- Checking no exception raised + let _ = encodeCbor datum -- Checking no exception raised pure unit test "PlutusData #3 - List" $ do let datum = PD.List [ PD.Integer (BigInt.fromInt 1), PD.Integer (BigInt.fromInt 2) ] - let _ = convertPlutusData datum -- Checking no exception raised + let _ = encodeCbor datum -- Checking no exception raised pure unit test "PlutusData #4 - List" $ do let datum = PD.List [ PD.Integer (BigInt.fromInt 1), PD.Integer (BigInt.fromInt 2) ] - let _ = convertPlutusData datum -- Checking no exception raised + let _ = encodeCbor datum -- Checking no exception raised pure unit test "PlutusData #5 - Bytes" $ do let datum = PD.Bytes $ hexToByteArrayUnsafe "00ff" - let _ = convertPlutusData datum -- Checking no exception raised + let _ = encodeCbor datum -- Checking no exception raised pure unit test "PlutusData #6 - Integer 0 (regression to https://github.com/Plutonomicon/cardano-transaction-lib/issues/488 ?)" $ do - let bytes = serializeData $ PD.Integer (BigInt.fromInt 0) - cborBytesToHex bytes `shouldEqual` "00" + let bytes = encodeCbor $ PD.Integer (BigInt.fromInt 0) + byteArrayToHex (unwrap bytes) `shouldEqual` "00" test "TransactionOutput serialization" $ liftEffect do - txo <- convertTxOutput txOutputFixture1 - let bytes = toBytes txo + let bytes = unwrap $ encodeCbor txOutputFixture1 byteArrayToHex bytes `shouldEqual` txOutputBinaryFixture1 test "Transaction serialization #1" $ serializeTX txFixture1 txBinaryFixture1 @@ -156,15 +151,13 @@ suite = do serializeTX :: Transaction -> String -> Aff Unit serializeTX tx fixture = liftEffect $ do - cslTX <- TS.convertTransaction $ tx - let bytes = toBytes cslTX + let bytes = unwrap $ encodeCbor tx byteArrayToHex bytes `shouldEqual` fixture txSerializedRoundtrip :: Transaction -> Aff Unit txSerializedRoundtrip tx = do - cslTX <- liftEffect $ TS.convertTransaction tx - let serialized = toBytes cslTX - deserialized <- errMaybe "Cannot deserialize bytes" $ fromBytes serialized - expected <- errMaybe "Cannot convert TX from CSL to CTL" $ hush $ - TD.convertTransaction deserialized - tx `shouldEqual` expected + let serialized = encodeCbor tx + (deserialized :: Transaction) <- errMaybe "Cannot deserialize bytes" $ + decodeCbor serialized + let expected = encodeCbor deserialized + serialized `shouldEqual` expected diff --git a/test/Serialization/Address.purs b/test/Serialization/Address.purs deleted file mode 100644 index 91dd1911f..000000000 --- a/test/Serialization/Address.purs +++ /dev/null @@ -1,195 +0,0 @@ -module Test.Ctl.Serialization.Address (suite) where - -import Prelude - -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Cardano.Types.BigNum (fromInt, fromStringUnsafe) as BigNum -import Contract.Address (addressWithNetworkTagFromBech32) -import Ctl.Internal.Serialization.Address - ( NetworkId(MainnetId, TestnetId) - , addressBech32 - , addressFromBech32 - , addressNetworkId - , baseAddressDelegationCred - , baseAddressFromAddress - , baseAddressPaymentCred - , baseAddressToAddress - , enterpriseAddress - , enterpriseAddressFromAddress - , enterpriseAddressPaymentCred - , enterpriseAddressToAddress - , keyHashCredential - , paymentKeyHashStakeKeyHashAddress - , pointerAddress - , pointerAddressFromAddress - , pointerAddressPaymentCred - , pointerAddressStakePointer - , pointerAddressToAddress - , rewardAddress - , rewardAddressFromAddress - , rewardAddressPaymentCred - , rewardAddressToAddress - , scriptHashCredential - , stakeCredentialToKeyHash - , stakeCredentialToScriptHash - ) -import Ctl.Internal.Serialization.Hash - ( Ed25519KeyHash - , ScriptHash - , ed25519KeyHashFromBech32 - , scriptHashFromBytes - ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.Aliases (Bech32String) -import Data.ByteArray (hexToByteArrayUnsafe) -import Data.Maybe (Maybe(Nothing)) -import Data.Newtype (unwrap, wrap) -import Effect.Aff (Aff) -import Effect.Class.Console (log) -import Mote (group, test) -import Test.Ctl.Fixtures (ed25519KeyHashFixture1) -import Test.Ctl.Utils (errMaybe) -import Test.Spec.Assertions (shouldEqual) - -doesNotThrow - :: forall (f :: Type -> Type) (a :: Type). Applicative f => a -> f a -doesNotThrow = pure - -pkhBech32 :: Bech32String -pkhBech32 = "addr_vkh1zuctrdcq6ctd29242w8g84nlz0q38t2lnv3zzfcrfqktx0c9tzp" - -scriptHashHex :: String -scriptHashHex = "463e9264962cea64efafa576d44c8d2821d09c0c7495c253d4101a9a" - -mPkh :: Maybe Ed25519KeyHash -mPkh = ed25519KeyHashFromBech32 pkhBech32 - -mScriptHash :: Maybe ScriptHash -mScriptHash = scriptHashFromBytes $ hexToByteArrayUnsafe scriptHashHex - -addressFunctionsTest :: TestPlanM (Aff Unit) Unit -addressFunctionsTest = test "Address tests" $ do - let - bechstr = - "addr1qyc0kwu98x23ufhsxjgs5k3h7gktn8v5682qna5amwh2juguztcrc8hjay66es67ctn0jmr9plfmlw37je2s2px4xdssgvxerq" - testnetBech = - "addr_test1qqm0z9quxyefwwq902p5f9t4s35smhegjthhhqpeclnpx2rzhuq2p6jahnky7qqua9nz9tcw6nlgy6cpjvmlaaye4apqzc6ppq" - addr1 <- errMaybe "addressFromBech32 failed on valid bech32" $ - addressFromBech32 bechstr - bechstr `shouldEqual` addressBech32 addr1 - addressFromBech32 "randomstuff" `shouldEqual` Nothing - let addrBts = toBytes $ unwrap addr1 - addr2 <- map wrap $ errMaybe "addressFromBech32 failed on valid bech32" $ - fromBytes addrBts - addr2 `shouldEqual` addr1 - addressNetworkId addr2 `shouldEqual` MainnetId - testnetAddr <- - errMaybe "addressWithNetworkTagFromBech32 failed on valid bech32" $ - addressWithNetworkTagFromBech32 testnetBech - mainnetAddr <- - errMaybe "addressWithNetworkTagFromBech32 failed on valid bech32" $ - addressWithNetworkTagFromBech32 bechstr - _.networkId (unwrap testnetAddr) `shouldEqual` TestnetId - _.networkId (unwrap mainnetAddr) `shouldEqual` MainnetId - -stakeCredentialTests :: TestPlanM (Aff Unit) Unit -stakeCredentialTests = test "StakeCredential tests" $ do - pkh <- errMaybe "Error ed25519KeyHashFromBech32:" mPkh - scrh <- errMaybe "Error scriptHashFromBech32:" mScriptHash - - let - pkhCred = keyHashCredential $ pkh - schCred = scriptHashCredential $ scrh - pkhCredBytes = toBytes $ unwrap pkhCred - schCredBytes = toBytes $ unwrap schCred - - pkhCred2 <- map wrap - $ errMaybe "StakeCredential FromBytes failed on valid bytes" - $ - fromBytes pkhCredBytes - pkh2 <- errMaybe "stakeCredentialToKeyHash failed" $ stakeCredentialToKeyHash - pkhCred2 - pkh2 `shouldEqual` pkh - stakeCredentialToScriptHash pkhCred2 `shouldEqual` Nothing - - schCred2 <- map wrap - $ errMaybe "StakeCredential FromBytes failed on valid bytes" - $ - fromBytes schCredBytes - sch2 <- errMaybe "stakeCredentialToScriptHash failed" $ - stakeCredentialToScriptHash schCred2 - sch2 `shouldEqual` scrh - stakeCredentialToKeyHash schCred2 `shouldEqual` Nothing - -baseAddressFunctionsTest :: TestPlanM (Aff Unit) Unit -baseAddressFunctionsTest = test "BaseAddress tests" $ do - pkh <- errMaybe "Error ed25519KeyHashFromBech32:" mPkh - baddr <- doesNotThrow $ - paymentKeyHashStakeKeyHashAddress MainnetId pkh ed25519KeyHashFixture1 - addr <- doesNotThrow $ baseAddressToAddress baddr - baddr2 <- errMaybe "baseAddressFromAddress failed on valid base address" $ - baseAddressFromAddress - addr - baddr2 `shouldEqual` baddr - baseAddressDelegationCred baddr `shouldEqual` keyHashCredential - ed25519KeyHashFixture1 - baseAddressPaymentCred baddr `shouldEqual` keyHashCredential pkh - -rewardAddressFunctionsTest :: TestPlanM (Aff Unit) Unit -rewardAddressFunctionsTest = test "RewardAddress tests" $ do - pkh <- errMaybe "Error ed25519KeyHashFromBech32:" mPkh - raddr <- doesNotThrow $ rewardAddress - { network: TestnetId, paymentCred: keyHashCredential pkh } - addr <- doesNotThrow $ rewardAddressToAddress raddr - raddr2 <- errMaybe "rewardAddressFromAddress failed on valid reward address" $ - rewardAddressFromAddress addr - raddr2 `shouldEqual` raddr - rewardAddressPaymentCred raddr `shouldEqual` keyHashCredential pkh - -enterpriseAddressFunctionsTest :: TestPlanM (Aff Unit) Unit -enterpriseAddressFunctionsTest = test "EnterpriseAddress tests" $ do - pkh <- errMaybe "Error ed25519KeyHashFromBech32:" mPkh - eaddr <- doesNotThrow $ enterpriseAddress - { network: MainnetId, paymentCred: keyHashCredential pkh } - addr <- doesNotThrow $ enterpriseAddressToAddress eaddr - eaddr2 <- - errMaybe "enterpriseAddressFromAddress failed on valid enterprise address" $ - enterpriseAddressFromAddress addr - eaddr2 `shouldEqual` eaddr - enterpriseAddressPaymentCred eaddr `shouldEqual` keyHashCredential pkh - -pointerAddressFunctionsTest :: TestPlanM (Aff Unit) Unit -pointerAddressFunctionsTest = test "PointerAddress tests" $ do - pkh <- errMaybe "Error ed25519KeyHashFromBech32:" mPkh - let - pointer = - { slot: wrap (BigNum.fromStringUnsafe "2147483648") - , certIx: wrap (BigNum.fromInt 20) - , txIx: wrap (BigNum.fromInt 120) - } - paddr <- doesNotThrow $ pointerAddress - { network: MainnetId - , paymentCred: keyHashCredential pkh - , stakePointer: pointer - } - addr <- doesNotThrow $ pointerAddressToAddress paddr - paddr2 <- errMaybe "pointerAddressFromAddress failed on valid pointer address" - $ - pointerAddressFromAddress addr - paddr2 `shouldEqual` paddr - pointerAddressPaymentCred paddr `shouldEqual` keyHashCredential pkh - pointerAddressStakePointer paddr `shouldEqual` pointer - -byronAddressFunctionsTest :: TestPlanM (Aff Unit) Unit -byronAddressFunctionsTest = test "ByronAddress tests" $ log - "ByronAddress tests todo" - -suite :: TestPlanM (Aff Unit) Unit -suite = group "Address test suite" $ do - addressFunctionsTest - stakeCredentialTests - baseAddressFunctionsTest - rewardAddressFunctionsTest - enterpriseAddressFunctionsTest - pointerAddressFunctionsTest - byronAddressFunctionsTest diff --git a/test/Serialization/Hash.purs b/test/Serialization/Hash.purs index 58714a5f5..936670636 100644 --- a/test/Serialization/Hash.purs +++ b/test/Serialization/Hash.purs @@ -60,7 +60,8 @@ suite = unsafePartial $ test "Serialization.Hash" do (isNothing $ ScriptHash.fromBech32 invalidBech32) scrh <- errMaybe "scriptHashFromBytes failed" $ decodeCbor - $ wrap $ hexToByteArrayUnsafe scriptHashHex + $ wrap + $ hexToByteArrayUnsafe scriptHashHex let scrhB32 = ScriptHash.toBech32Unsafe "stake_vkh" scrh mScrhB32 = ScriptHash.toBech32Unsafe "stake_vkh" scrh diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index 83dedd52c..03afa0f01 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -14,7 +14,23 @@ import Control.Monad.Except (throwError) import Ctl.Internal.QueryM.Ogmios (OgmiosEraSummaries, OgmiosSystemStart) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.EraSummaries (EraSummaries) -import Ctl.Internal.Types.Interval (Interval, POSIXTime(POSIXTime), PosixTimeToSlotError(PosixTimeBeforeSystemStart), always, contains, from, hull, intersection, isEmpty, member, mkFiniteInterval, never, posixTimeToSlot, slotToPosixTime, to) +import Ctl.Internal.Types.Interval + ( Interval + , POSIXTime(POSIXTime) + , PosixTimeToSlotError(PosixTimeBeforeSystemStart) + , always + , contains + , from + , hull + , intersection + , isEmpty + , member + , mkFiniteInterval + , never + , posixTimeToSlot + , slotToPosixTime + , to + ) import Ctl.Internal.Types.SystemStart (SystemStart) import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either) diff --git a/test/Types/Ipv6.purs b/test/Types/Ipv6.purs index d7d847636..1d662c044 100644 --- a/test/Types/Ipv6.purs +++ b/test/Types/Ipv6.purs @@ -27,4 +27,5 @@ suite = do testIpv6 :: String -> String -> TestPlanM (Aff Unit) Unit testIpv6 str expected = test str do - parseIpv6String str `shouldEqual` (decodeCbor (wrap $ hexToByteArrayUnsafe expected)) + parseIpv6String str `shouldEqual` + (decodeCbor (wrap $ hexToByteArrayUnsafe expected)) diff --git a/test/Types/Transaction.purs b/test/Types/Transaction.purs index 1df2ff00e..750f4d0cb 100644 --- a/test/Types/Transaction.purs +++ b/test/Types/Transaction.purs @@ -12,7 +12,6 @@ import Aeson ) import Contract.Transaction ( TransactionInput - , TransactionOutputWithRefScript ) import Control.Monad.Error.Class (liftEither) import Ctl.Internal.Test.TestPlanM (TestPlanM) @@ -42,10 +41,6 @@ loadAesonFixture filename = do transactionInputFixture :: Effect TransactionInput transactionInputFixture = loadAesonFixture "TransactionInput" -transactionOutputWithRefScriptFixture :: Effect TransactionOutputWithRefScript -transactionOutputWithRefScriptFixture = loadAesonFixture - "TransactionOutputWithRefScript" - toFromAesonTest' :: forall a . Eq a @@ -63,5 +58,3 @@ suite :: TestPlanM (Aff Unit) Unit suite = do group "Transaction-related Aeson representation tests" do toFromAesonTest' "TransactionInput" transactionInputFixture - toFromAesonTest' "TransactionOutputWithRefScript" - transactionOutputWithRefScriptFixture diff --git a/test/Unit.purs b/test/Unit.purs index 2ec42e683..70455f244 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -21,18 +21,13 @@ import Test.Ctl.Data.Interval as Ctl.Data.Interval import Test.Ctl.Deserialization as Deserialization import Test.Ctl.E2E.Route as E2E.Route import Test.Ctl.Hashing as Hashing -import Test.Ctl.Internal.Plutus.Conversion.Address as Plutus.Conversion.Address -import Test.Ctl.Internal.Plutus.Conversion.Value as Plutus.Conversion.Value import Test.Ctl.Internal.Plutus.Time as Plutus.Time -import Test.Ctl.Metadata.Cip25 as Cip25 -import Test.Ctl.MustSpendTotal as MustSpendTotal import Test.Ctl.NativeScript as NativeScript import Test.Ctl.Ogmios.Aeson as Ogmios.Aeson import Test.Ctl.Ogmios.EvaluateTx as Ogmios.EvaluateTx import Test.Ctl.Partition as Partition import Test.Ctl.ProtocolParams as ProtocolParams import Test.Ctl.Serialization as Serialization -import Test.Ctl.Serialization.Address as Serialization.Address import Test.Ctl.Serialization.Hash as Serialization.Hash import Test.Ctl.Types.Interval as Types.Interval import Test.Ctl.Types.Ipv6 as Ipv6 @@ -58,30 +53,25 @@ testPlan = do NativeScript.suite Bip32.suite ByteArray.suite - Cip25.suite Cip30SignData.suite Data.suite Deserialization.suite - Hashing.suite - Partition.suite - Plutus.Conversion.Address.suite - Plutus.Conversion.Value.suite - Plutus.Time.suite - Serialization.suite - Serialization.Address.suite - Serialization.Hash.suite - UsedTxOuts.suite - Ogmios.Aeson.suite - Ogmios.EvaluateTx.suite - ProtocolParams.suite - Blockfrost.Aeson.suite - Blockfrost.ProtocolParameters.suite - Types.TokenName.suite - Types.Transaction.suite - Ctl.Data.Interval.suite - flip mapTest Types.Interval.suite \f -> liftEffect $ join $ - f <$> Types.Interval.eraSummariesFixture - <*> Types.Interval.systemStartFixture - E2E.Route.suite - MustSpendTotal.suite - CoinSelection.suite + -- Hashing.suite + -- Partition.suite + -- Plutus.Time.suite + -- Serialization.suite + -- Serialization.Hash.suite + -- UsedTxOuts.suite + -- Ogmios.Aeson.suite + -- Ogmios.EvaluateTx.suite + -- ProtocolParams.suite + -- Blockfrost.Aeson.suite + -- Blockfrost.ProtocolParameters.suite + -- Types.TokenName.suite + -- Types.Transaction.suite + -- Ctl.Data.Interval.suite + -- flip mapTest Types.Interval.suite \f -> liftEffect $ join $ + -- f <$> Types.Interval.eraSummariesFixture + -- <*> Types.Interval.systemStartFixture + -- E2E.Route.suite + -- CoinSelection.suite diff --git a/test/UsedTxOuts.purs b/test/UsedTxOuts.purs index fddb37e7b..f6ae92e8a 100644 --- a/test/UsedTxOuts.purs +++ b/test/UsedTxOuts.purs @@ -2,6 +2,7 @@ module Test.Ctl.UsedTxOuts (suite) where import Prelude +import Cardano.Types (Transaction) import Cardano.Types.TransactionHash (TransactionHash) import Control.Monad.Reader (runReaderT) import Ctl.Internal.Test.TestPlanM (TestPlanM) @@ -16,17 +17,12 @@ import Data.Array (any, singleton, uncons) import Data.Foldable (all) import Data.Maybe (fromJust) import Data.Newtype (unwrap) -import Data.Set (fromFoldable) as Set import Data.Traversable (traverse) import Data.UInt (UInt) import Effect.Aff (Aff) import Mote (group, test) import Partial.Unsafe (unsafePartial) -import Test.Ctl.Fixtures - ( mkSampleTx - , mkTxInput - , txFixture1 - ) +import Test.Ctl.Fixtures (mkSampleTx, mkTxInput, txFixture1) import Test.Spec.Assertions (shouldReturn) buildSampleTransaction @@ -88,7 +84,7 @@ buildSampleTransaction = } ] in - { tx: mkSampleTx txFixture1 (_ { inputs = Set.fromFoldable usedTxOutRefs }) + { tx: mkSampleTx txFixture1 (_ { inputs = usedTxOutRefs }) , usedTxOutRefs: unwrap <$> usedTxOutRefs , unusedTxOutRefs: unwrap <$> unusedTxOutRefs } diff --git a/test/Wallet/Cip30/SignData.purs b/test/Wallet/Cip30/SignData.purs index 57ad2c64a..9fca47bcc 100644 --- a/test/Wallet/Cip30/SignData.purs +++ b/test/Wallet/Cip30/SignData.purs @@ -9,7 +9,6 @@ import Prelude import Cardano.AsCbor (encodeCbor) import Cardano.MessageSigning (signData) -import Cardano.Serialization.Lib as Csl import Cardano.Types ( Address , CborBytes @@ -20,12 +19,9 @@ import Cardano.Types import Cardano.Types.NetworkId (NetworkId(MainnetId)) import Cardano.Types.NetworkId as NetworkId import Cardano.Types.PrivateKey as PrivateKey +import Cardano.Types.PublicKey as PublicKey import Contract.Keys (publicKeyFromBytes) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Serialization.Keys - ( bytesFromPublicKey - , publicKeyFromPrivateKey - ) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.Cip30 (DataSignature) import Ctl.Internal.Wallet.Key @@ -75,18 +71,18 @@ testCip30SignData { privateKey, privateStakeKey, payload, networkId } = do (unwrap <$> privateStakeKey) (unwrap networkId) - dataSignature <- liftEffect $ signData (wrap privatePaymentKey) address + dataSignature <- liftEffect $ signData (privatePaymentKey) address payload { coseKey } <- checkCip30SignDataResponse address dataSignature assertTrue "COSE_Key's x (-2) header must be set to public key bytes" - (getCoseKeyHeaderX coseKey == Just (bytesFromPublicKey publicPaymentKey)) + (getCoseKeyHeaderX coseKey == Just (PublicKey.toRawBytes publicPaymentKey)) where - privatePaymentKey :: Csl.PrivateKey - privatePaymentKey = unwrap $ unwrap $ unwrap privateKey + privatePaymentKey :: PrivateKey + privatePaymentKey = unwrap $ unwrap privateKey - publicPaymentKey :: Csl.PublicKey - publicPaymentKey = publicKeyFromPrivateKey privatePaymentKey + publicPaymentKey :: PublicKey + publicPaymentKey = PrivateKey.toPublicKey privatePaymentKey checkCip30SignDataResponse :: Address -> DataSignature -> Aff DeserializedDataSignature From b0094f0b4d9b4f861fa8e7fa16ff909936360346 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 29 Mar 2024 22:30:09 +0300 Subject: [PATCH 072/373] Fix #1570 --- CHANGELOG.md | 2 +- src/Internal/Plutip/Server.purs | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6033484d2..ef9ea257c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,7 +75,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Replaced custom CIP-30 wrapper code with [`purescript-cip30-typesafe`](https://github.com/mlabs-haskell/purescript-cip30-typesafe/) - ([#1583](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1583)) ### Fixed - +- Plutip cluster's Kupo instances don't share the same working folder anymore - ([#1570](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1570)) - WebAssembly memory leaks (`csl-gc-wrapper` used to depend on unstable `wasm-bidngen` API [that got changed](https://github.com/mlabs-haskell/csl-gc-wrapper/commit/2dea38228b77f7c904aafef12eece7e5af195977)) ([#1595](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1595)) ### Removed diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index e2c2c8aff..93bf5adef 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -57,6 +57,7 @@ import Ctl.Internal.Plutip.Types , StopClusterResponse ) import Ctl.Internal.Plutip.Utils (tmpdir) +import Ctl.Internal.QueryM.UniqueId (uniqueId) import Ctl.Internal.Service.Error ( ClientError(ClientDecodeJsonError, ClientHttpError) , pprintClientError @@ -556,8 +557,9 @@ startKupo -> Aff (ManagedProcess /\ String /\ OnSignalRef) startKupo cfg params = do tmpDir <- liftEffect tmpdir + randomStr <- liftEffect $ uniqueId "" let - workdir = tmpDir <> "kupo-db" + workdir = tmpDir <> randomStr <> "-kupo-db" testClusterDir = (dirname <<< dirname) params.nodeConfigPath liftEffect do workdirExists <- FSSync.exists workdir From 749c39a6c9d2dcbfa9e85593f433b60f6a80ebca Mon Sep 17 00:00:00 2001 From: Farseen Date: Mon, 1 Apr 2024 02:15:50 +0530 Subject: [PATCH 073/373] Change the success message in the end of test log --- examples/ByUrl.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index e5aa8f68c..2fd9fe5c8 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -230,4 +230,4 @@ examples = addSuccessLog <$> Map.fromFoldable ] addSuccessLog :: Contract Unit -> Contract Unit -addSuccessLog contract = contract *> logInfo' "Success!" +addSuccessLog contract = contract *> logInfo' "[CTL TEST SUCCESS]" From 16b4d696b8771faa5ea2f53a69b0c981a4573e81 Mon Sep 17 00:00:00 2001 From: Farseen Date: Mon, 1 Apr 2024 02:16:25 +0530 Subject: [PATCH 074/373] Add nami-mainnet config without mocks to test cardano dev wallet against plutip cluster --- examples/ByUrl.purs | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 2fd9fe5c8..3119dff8d 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -163,6 +163,7 @@ wallets = Map.fromFoldable , "lode" /\ testnetLodeConfig /\ Nothing , "nufi" /\ testnetNuFiConfig /\ Nothing , "lace" /\ testnetLaceConfig /\ Nothing + , "nami-mainnet" /\ mainnetNamiConfig /\ Nothing , "nami-mock" /\ testnetNamiConfig /\ Just MockNami , "gero-mock" /\ testnetGeroConfig /\ Just MockGero , "flint-mock" /\ testnetFlintConfig /\ Just MockFlint From c7238cdcbda846c74931b98aa73c692d32a60b27 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 2 Apr 2024 04:52:06 +0400 Subject: [PATCH 075/373] Fix the bug with null pointer in rust --- packages.dhall | 2 +- src/Internal/ProcessConstraints.purs | 154 +++++++++++++++++-- src/Internal/ProcessConstraints/State.purs | 6 +- src/Internal/Types/Val.purs | 11 +- test/Deserialization.purs | 22 +-- test/Fixtures.purs | 110 +++++++++++--- test/Fixtures/CostModels.purs | 2 +- test/Plutip/Contract.purs | 164 +++++++++++++++++---- test/Unit.purs | 38 ++--- 9 files changed, 407 insertions(+), 102 deletions(-) diff --git a/packages.dhall b/packages.dhall index 2daa784b4..d85315b66 100644 --- a/packages.dhall +++ b/packages.dhall @@ -280,7 +280,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "b0a0217b14ea92a9ffe53cb18f3dfa6e7aac5e0e" + , version = "ed634b0863b7c443a35a9624a879e92a63057388" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index f6efedd9d..f2361881f 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -4,10 +4,34 @@ module Ctl.Internal.ProcessConstraints import Prelude -import Cardano.Types (Certificate(StakeDelegation, PoolRetirement, PoolRegistration, StakeDeregistration, StakeRegistration), DataHash, NetworkId, PlutusData, PlutusScript, ScriptHash, ScriptRef(NativeScriptRef, PlutusScriptRef), StakeCredential(StakeCredential), Transaction, TransactionInput, TransactionOutput(TransactionOutput), TransactionUnspentOutput(TransactionUnspentOutput), TransactionWitnessSet(TransactionWitnessSet), Value(Value)) +import Cardano.Types + ( Certificate + ( StakeDelegation + , PoolRetirement + , PoolRegistration + , StakeDeregistration + , StakeRegistration + ) + , DataHash + , NetworkId + , PlutusData + , PlutusScript + , ScriptHash + , ScriptRef(NativeScriptRef, PlutusScriptRef) + , StakeCredential(StakeCredential) + , Transaction + , TransactionInput + , TransactionOutput(TransactionOutput) + , TransactionUnspentOutput(TransactionUnspentOutput) + , TransactionWitnessSet(TransactionWitnessSet) + , Value(Value) + ) import Cardano.Types.Address (Address(..), getPaymentCredential) import Cardano.Types.Coin as Coin -import Cardano.Types.Credential (Credential(PubKeyHashCredential, ScriptHashCredential), asScriptHash) +import Cardano.Types.Credential + ( Credential(PubKeyHashCredential, ScriptHashCredential) + , asScriptHash + ) import Cardano.Types.DataHash (hashPlutusData) import Cardano.Types.DataHash as Datum import Cardano.Types.Int as Int @@ -27,19 +51,126 @@ import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Reader.Class (asks) import Control.Monad.State.Trans (get, gets, put, runStateT) import Control.Monad.Trans.Class (lift) -import Ctl.Internal.BalanceTx.RedeemerIndex (RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend), UnindexedRedeemer(UnindexedRedeemer), unindexedRedeemerToRedeemer) +import Ctl.Internal.BalanceTx.RedeemerIndex + ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) + , UnindexedRedeemer(UnindexedRedeemer) + , unindexedRedeemerToRedeemer + ) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) import Ctl.Internal.Helpers (liftEither, liftM) -import Ctl.Internal.Lens (_body, _certs, _inputs, _isValid, _mint, _networkId, _outputs, _referenceInputs, _requiredSigners, _scriptDataHash, _withdrawals, _witnessSet) -import Ctl.Internal.ProcessConstraints.Error (MkUnbalancedTxError(CannotSatisfyAny, CannotWithdrawRewardsNativeScript, CannotWithdrawRewardsPlutusScript, CannotWithdrawRewardsPubKey, DatumWrongHash, CannotMintZero, ExpectedPlutusScriptGotNativeScript, CannotFindDatum, CannotQueryDatum, CannotGetValidatorHashFromAddress, TxOutRefWrongType, CannotConvertPOSIXTimeRange, NumericOverflow, WrongRefScriptHash, ValidatorHashNotFound, MintingPolicyNotFound, DatumNotFound, TxOutRefNotFound, CannotSolveTimeConstraints, OwnPubKeyAndStakeKeyMissing)) -import Ctl.Internal.ProcessConstraints.State (ConstraintProcessingState, ConstraintsM, ValueSpentBalances(ValueSpentBalances), _costModels, _cpsTransaction, _cpsUsedUtxos, _datums, _lookups, _redeemers, _refScriptsUtxoMap, _valueSpentBalancesInputs, _valueSpentBalancesOutputs, provideValue, requireValue, totalMissingValue) +import Ctl.Internal.Lens + ( _body + , _certs + , _inputs + , _isValid + , _mint + , _networkId + , _outputs + , _referenceInputs + , _requiredSigners + , _scriptDataHash + , _withdrawals + , _witnessSet + ) +import Ctl.Internal.ProcessConstraints.Error + ( MkUnbalancedTxError + ( CannotSatisfyAny + , CannotWithdrawRewardsNativeScript + , CannotWithdrawRewardsPlutusScript + , CannotWithdrawRewardsPubKey + , DatumWrongHash + , CannotMintZero + , ExpectedPlutusScriptGotNativeScript + , CannotFindDatum + , CannotQueryDatum + , CannotGetValidatorHashFromAddress + , TxOutRefWrongType + , CannotConvertPOSIXTimeRange + , NumericOverflow + , WrongRefScriptHash + , ValidatorHashNotFound + , MintingPolicyNotFound + , DatumNotFound + , TxOutRefNotFound + , CannotSolveTimeConstraints + , OwnPubKeyAndStakeKeyMissing + ) + ) +import Ctl.Internal.ProcessConstraints.State + ( ConstraintProcessingState + , ConstraintsM + , ValueSpentBalances(ValueSpentBalances) + , _costModels + , _cpsTransaction + , _cpsUsedUtxos + , _datums + , _lookups + , _redeemers + , _refScriptsUtxoMap + , _valueSpentBalancesInputs + , _valueSpentBalancesOutputs + , provideValue + , requireValue + , totalMissingValue + ) import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) -import Ctl.Internal.QueryM.Pools (getPubKeyHashDelegationsAndRewards, getValidatorHashDelegationsAndRewards) -import Ctl.Internal.Transaction (attachDatum, attachNativeScript, attachPlutusScript, setScriptDataHash) -import Ctl.Internal.Types.Interval (POSIXTimeRange, always, intersection, isEmpty, posixTimeRangeToTransactionValidity) +import Ctl.Internal.QueryM.Pools + ( getPubKeyHashDelegationsAndRewards + , getValidatorHashDelegationsAndRewards + ) +import Ctl.Internal.Transaction + ( attachDatum + , attachNativeScript + , attachPlutusScript + , setScriptDataHash + ) +import Ctl.Internal.Types.Interval + ( POSIXTimeRange + , always + , intersection + , isEmpty + , posixTimeRangeToTransactionValidity + ) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) -import Ctl.Internal.Types.TxConstraints (DatumPresence(DatumWitness, DatumInline), InputWithScriptRef(SpendInput, RefInput), TxConstraint(MustNotBeValid, MustSatisfyAnyOf, MustWithdrawStakeNativeScript, MustWithdrawStakePlutusScript, MustWithdrawStakePubKey, MustDelegateStakeNativeScript, MustDelegateStakePlutusScript, MustDelegateStakePubKey, MustRetirePool, MustRegisterPool, MustDeregisterStakeNativeScript, MustDeregisterStakePlutusScript, MustRegisterStakeScript, MustDeregisterStakePubKey, MustRegisterStakePubKey, MustHashDatum, MustPayToNativeScript, MustPayToScript, MustPayToPubKeyAddress, MustMintValueUsingNativeScript, MustMintValue, MustReferenceOutput, MustSpendNativeScriptOutput, MustSpendScriptOutput, MustSpendPubKeyOutput, MustProduceAtLeast, MustSpendAtLeast, MustBeSignedBy, MustValidateIn, MustIncludeDatum), TxConstraints(TxConstraints), utxoWithScriptRef) +import Ctl.Internal.Types.TxConstraints + ( DatumPresence(DatumWitness, DatumInline) + , InputWithScriptRef(SpendInput, RefInput) + , TxConstraint + ( MustNotBeValid + , MustSatisfyAnyOf + , MustWithdrawStakeNativeScript + , MustWithdrawStakePlutusScript + , MustWithdrawStakePubKey + , MustDelegateStakeNativeScript + , MustDelegateStakePlutusScript + , MustDelegateStakePubKey + , MustRetirePool + , MustRegisterPool + , MustDeregisterStakeNativeScript + , MustDeregisterStakePlutusScript + , MustRegisterStakeScript + , MustDeregisterStakePubKey + , MustRegisterStakePubKey + , MustHashDatum + , MustPayToNativeScript + , MustPayToScript + , MustPayToPubKeyAddress + , MustMintValueUsingNativeScript + , MustMintValue + , MustReferenceOutput + , MustSpendNativeScriptOutput + , MustSpendScriptOutput + , MustSpendPubKeyOutput + , MustProduceAtLeast + , MustSpendAtLeast + , MustBeSignedBy + , MustValidateIn + , MustIncludeDatum + ) + , TxConstraints(TxConstraints) + , utxoWithScriptRef + ) import Ctl.Internal.Types.Val as Val import Data.Array (cons, partition, toUnfoldable, zip) import Data.Array (mapMaybe, singleton, (:)) as Array @@ -192,7 +323,8 @@ addMissingValueSpent = do Just pkh, Nothing -> pure $ EnterpriseAddress { networkId, paymentCredential: wrap $ PubKeyHashCredential pkh } Nothing, _ -> throwError OwnPubKeyAndStakeKeyMissing - missingValue <- maybe (throwError NumericOverflow) pure $ Val.toValue missing + missingValue <- maybe (throwError NumericOverflow) pure $ Val.toValue + missing let txOut = TransactionOutput { address: txOutAddress diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index 748d91976..034626d20 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -143,7 +143,9 @@ totalMissingValue { valueSpentBalancesInputs, valueSpentBalancesOutputs } = missingValueSpent valueSpentBalancesOutputs provideValue :: Value -> ValueSpentBalances -provideValue provided = ValueSpentBalances { provided: Val.fromValue provided, required: mempty } +provideValue provided = ValueSpentBalances + { provided: Val.fromValue provided, required: mempty } requireValue :: Value -> ValueSpentBalances -requireValue required = ValueSpentBalances { required: Val.fromValue required, provided: mempty } +requireValue required = ValueSpentBalances + { required: Val.fromValue required, provided: mempty } diff --git a/src/Internal/Types/Val.purs b/src/Internal/Types/Val.purs index 57d71234b..704c54fb3 100644 --- a/src/Internal/Types/Val.purs +++ b/src/Internal/Types/Val.purs @@ -3,7 +3,15 @@ module Ctl.Internal.Types.Val where import Prelude import Cardano.AsCbor (encodeCbor) -import Cardano.Types (AssetClass(AssetClass), AssetName, BigInt, Coin, MultiAsset(MultiAsset), ScriptHash, Value(Value)) +import Cardano.Types + ( AssetClass(AssetClass) + , AssetName + , BigInt + , Coin + , MultiAsset(MultiAsset) + , ScriptHash + , Value(Value) + ) import Cardano.Types.AssetName (fromAssetName) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int @@ -42,6 +50,7 @@ instance Split Val where split (Val c1 mp) = Val np npos /\ Val p pos where np /\ p = split c1 + splitIntl :: Map AssetName BigInt -> These (Map AssetName BigInt) (Map AssetName BigInt) diff --git a/test/Deserialization.purs b/test/Deserialization.purs index 026068f2e..7c5a9d0dc 100644 --- a/test/Deserialization.purs +++ b/test/Deserialization.purs @@ -11,7 +11,10 @@ import Data.Newtype (wrap) import Effect.Aff (Aff) import Mote (group, test) import Test.Ctl.Fixtures - ( nativeScriptFixture1 + ( int1 + , mint0 + , mint1 + , nativeScriptFixture1 , nativeScriptFixture2 , nativeScriptFixture3 , nativeScriptFixture4 @@ -40,9 +43,6 @@ import Test.Ctl.Fixtures , witnessSetFixture3 , witnessSetFixture3Value , witnessSetFixture4 - , mint0 - , mint1 - , int1 ) import Test.Spec.Assertions (shouldEqual) import Type.Proxy (Proxy(Proxy)) @@ -71,16 +71,16 @@ suite = do roundtripTest "txFixture1" txFixture1 roundtripTest "txFixture2" txFixture2 roundtripTest "txFixture3" txFixture3 - -- roundtripTest "txFixture4" txFixture4 + roundtripTest "txFixture4" txFixture4 roundtripTest "txFixture5" txFixture5 roundtripTest "txFixture6" txFixture6 group "TransactionInput" do roundtripTest "txInputFixture1" txInputFixture1 group "Int" do roundtripTest "int0" int1 - -- group "Mint" do - -- roundtripTest "mint1" mint1 - -- roundtripTest "mint0" mint0 + group "Mint" do + roundtripTest "mint1" mint1 + roundtripTest "mint0" mint0 group "TransactionOutput" do roundtripTest "txOutputFixture1" txOutputFixture1 group "TransactionWitnessSet" do @@ -124,9 +124,3 @@ roundtripTestBytes label _ bytes = do test ("Serialization is inverse to deserialization: " <> label) do (encodeCbor <$> (decodeCbor (wrap bytes) :: Maybe a)) `shouldEqual` Just (wrap bytes) - -plutipSuccessResponseFixture :: String -plutipSuccessResponseFixture = - """ -{"contents":{"keysDirectory":"/tmp/nix-shell.xvz2Lq/test-cluster149328/signing-keys","nodeConfigPath":"/tmp/nix-shell.xvz2Lq/test-cluster149328/pool-3/node.config","nodeSocketPath":"/tmp/nix-shell.xvz2Lq/test-cluster149328/pool-3/node.socket","privateKeys":["e61e29b40ba4e5a3100363d86669f3cb604ea3fc971b43510c97daeb9bf2e4e2","9cd3bd5deb0a04ef2e20160b85b889f32dfc66d2f7b7a0fac5aec3b1ad950227"]},"tag":"ClusterStartupSuccess"} -""" diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 926bd1995..9c9ed3207 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -78,7 +78,65 @@ import Prelude import Aeson (Aeson, aesonNull, decodeAeson, fromString, parseJsonStringToAeson) import Cardano.AsCbor (decodeCbor, encodeCbor) -import Cardano.Types (AuxiliaryData(AuxiliaryData), Certificate(MoveInstantaneousRewardsCert, GenesisKeyDelegation, PoolRetirement, PoolRegistration, StakeDelegation, StakeDeregistration, StakeRegistration), Coin(Coin), Credential(PubKeyHashCredential), Ed25519KeyHash, Epoch(Epoch), ExUnitPrices(ExUnitPrices), ExUnits(ExUnits), GeneralTransactionMetadata(GeneralTransactionMetadata), MIRPot(Treasury, Reserves), MIRToStakeCredentials(MIRToStakeCredentials), MoveInstantaneousReward(ToStakeCreds, ToOtherPot), NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK, TimelockStart, TimelockExpiry), NetworkId(TestnetId, MainnetId), OutputDatum(OutputDatum), PaymentPubKeyHash(PaymentPubKeyHash), PlutusData(Constr, Map, Integer, List, Bytes), PlutusScript, PoolMetadata(PoolMetadata), PoolParams(PoolParams), ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates), ProtocolParamUpdate(ProtocolParamUpdate), ProtocolVersion(ProtocolVersion), Redeemer(Redeemer), RedeemerTag(Spend), Relay(MultiHostName, SingleHostName, SingleHostAddr), RewardAddress, ScriptHash, Slot(Slot), Transaction(Transaction), TransactionBody(TransactionBody), TransactionInput(TransactionInput), TransactionOutput(TransactionOutput), TransactionUnspentOutput(TransactionUnspentOutput), TransactionWitnessSet(TransactionWitnessSet), URL(URL), UnitInterval(UnitInterval), Update(Update), UtxoMap, Value(Value), Vkey(Vkey), Vkeywitness(Vkeywitness)) +import Cardano.Types + ( AuxiliaryData(AuxiliaryData) + , Certificate + ( MoveInstantaneousRewardsCert + , GenesisKeyDelegation + , PoolRetirement + , PoolRegistration + , StakeDelegation + , StakeDeregistration + , StakeRegistration + ) + , Coin(Coin) + , Credential(PubKeyHashCredential) + , Ed25519KeyHash + , Epoch(Epoch) + , ExUnitPrices(ExUnitPrices) + , ExUnits(ExUnits) + , GeneralTransactionMetadata(GeneralTransactionMetadata) + , MIRPot(Treasury, Reserves) + , MIRToStakeCredentials(MIRToStakeCredentials) + , MoveInstantaneousReward(ToStakeCreds, ToOtherPot) + , NativeScript + ( ScriptPubkey + , ScriptAll + , ScriptAny + , ScriptNOfK + , TimelockStart + , TimelockExpiry + ) + , NetworkId(TestnetId, MainnetId) + , OutputDatum(OutputDatum) + , PaymentPubKeyHash(PaymentPubKeyHash) + , PlutusData(Constr, Map, Integer, List, Bytes) + , PlutusScript + , PoolMetadata(PoolMetadata) + , PoolParams(PoolParams) + , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) + , ProtocolParamUpdate(ProtocolParamUpdate) + , ProtocolVersion(ProtocolVersion) + , Redeemer(Redeemer) + , RedeemerTag(Spend) + , Relay(MultiHostName, SingleHostName, SingleHostAddr) + , RewardAddress + , ScriptHash + , Slot(Slot) + , Transaction(Transaction) + , TransactionBody(TransactionBody) + , TransactionInput(TransactionInput) + , TransactionOutput(TransactionOutput) + , TransactionUnspentOutput(TransactionUnspentOutput) + , TransactionWitnessSet(TransactionWitnessSet) + , URL(URL) + , UnitInterval(UnitInterval) + , Update(Update) + , UtxoMap + , Value(Value) + , Vkey(Vkey) + , Vkeywitness(Vkeywitness) + ) import Cardano.Types.Address (Address(BaseAddress)) import Cardano.Types.AssetName (AssetName, mkAssetName) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash @@ -92,10 +150,17 @@ import Cardano.Types.TransactionMetadatum (TransactionMetadatum(Text)) import Contract.Numeric.BigNum (BigNum) import Contract.Numeric.BigNum (fromInt, one, zero) as BigNum import Contract.Transaction (PoolPubKeyHash(PoolPubKeyHash)) -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef, NativeScriptRef)) +import Ctl.Internal.Cardano.Types.ScriptRef + ( ScriptRef(PlutusScriptRef, NativeScriptRef) + ) import Ctl.Internal.Types.Aliases (Bech32String) import Data.Array as Array -import Data.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe, hexToByteArray, hexToByteArrayUnsafe) +import Data.ByteArray + ( ByteArray + , byteArrayFromIntArrayUnsafe + , hexToByteArray + , hexToByteArrayUnsafe + ) import Data.Either (fromRight, hush) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) @@ -442,15 +507,16 @@ txFixture3 = } mint1 = Mint $ Map.fromFoldable - [ currencySymbol1 /\ Map.fromFoldable - [ tokenName2 /\ Int.newPositive BigNum.one - ] - ] + [ currencySymbol1 /\ Map.fromFoldable + [ tokenName2 /\ Int.newPositive BigNum.one + ] + ] + mint0 = Mint $ Map.fromFoldable - [ currencySymbol1 /\ Map.fromFoldable - [ tokenName2 /\ Int.newPositive BigNum.one - ] - ] + [ currencySymbol1 /\ Map.fromFoldable + [ tokenName2 /\ Int.newPositive BigNum.zero + ] + ] int1 :: Int.Int int1 = Int.newPositive BigNum.one @@ -462,17 +528,17 @@ txFixture4 = { inputs: [ txInputFixture1 ] , outputs: [ -- TransactionOutput - -- { address: keyHashBaseAddress - -- { stake: - -- "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - -- , payment: - -- "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - -- } - -- , amount: Value (Coin $ BigNum.fromInt 2353402) MultiAsset.empty - -- , datum: Just $ OutputDatum plutusDataFixture1 - -- , scriptRef: Just $ PlutusScriptRef plutusScriptFixture1 - -- } + -- { address: keyHashBaseAddress + -- { stake: + -- "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" + -- -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" + -- , payment: + -- "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" + -- } + -- , amount: Value (Coin $ BigNum.fromInt 2353402) MultiAsset.empty + -- , datum: Just $ OutputDatum plutusDataFixture1 + -- , scriptRef: Just $ PlutusScriptRef plutusScriptFixture1 + -- } -- , TransactionOutput -- { address: keyHashBaseAddress -- { stake: diff --git a/test/Fixtures/CostModels.purs b/test/Fixtures/CostModels.purs index 743cf0532..543b5bc36 100644 --- a/test/Fixtures/CostModels.purs +++ b/test/Fixtures/CostModels.purs @@ -17,4 +17,4 @@ foreign import defaultCostmdls :: Effect Costmdls costModelsFixture1 :: Map Language CostModel costModelsFixture1 = unsafePerformEffect do defaultCostmdls <#> unpackMapContainerToMapWith Language.fromCsl - CostModel.fromCsl + CostModel.fromCsl diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 3a167321b..e51be1c69 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -6,17 +6,32 @@ import Prelude import Cardano.AsCbor (decodeCbor) import Cardano.Serialization.Lib (fromBytes) -import Cardano.Types (Address, GeneralTransactionMetadata(GeneralTransactionMetadata), TransactionUnspentOutput(..)) +import Cardano.Types + ( Address + , GeneralTransactionMetadata(GeneralTransactionMetadata) + , TransactionUnspentOutput(TransactionUnspentOutput) + ) import Cardano.Types.AssetName as AssetName import Cardano.Types.Coin as Coin import Cardano.Types.Credential (Credential(..)) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Cardano.Types.Value (lovelaceValueOf) -import Contract.Address (PaymentPubKeyHash(PaymentPubKeyHash), StakePubKeyHash, getNetworkId, mkAddress) +import Contract.Address + ( PaymentPubKeyHash(PaymentPubKeyHash) + , StakePubKeyHash + , getNetworkId + , mkAddress + ) import Contract.AuxiliaryData (setGeneralTxMetadata) -import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder, mustUseAdditionalUtxos) as BalanceTxConstraints -import Contract.BalanceTxConstraints (mustNotSpendUtxosWithOutRefs, mustUseCollateralUtxos) +import Contract.BalanceTxConstraints + ( BalanceTxConstraintsBuilder + , mustUseAdditionalUtxos + ) as BalanceTxConstraints +import Contract.BalanceTxConstraints + ( mustNotSpendUtxosWithOutRefs + , mustUseCollateralUtxos + ) import Contract.Chain (currentTime, waitUntilSlot) import Contract.Hashing (datumHash, nativeScriptHash) import Contract.Keys (privateKeyFromBytes) @@ -24,16 +39,63 @@ import Contract.Log (logInfo') import Contract.Metadata as Metadatum import Contract.Monad (Contract, liftContractE, liftContractM, liftedM) import Contract.Numeric.BigNum as BigNum -import Contract.PlutusData (PlutusData(Bytes, Integer, List), RedeemerDatum(RedeemerDatum), getDatumByHash, getDatumsByHashes, getDatumsByHashesWithErrors, unitRedeemer) +import Contract.PlutusData + ( PlutusData(Bytes, Integer, List) + , RedeemerDatum(RedeemerDatum) + , getDatumByHash + , getDatumsByHashes + , getDatumsByHashesWithErrors + , unitRedeemer + ) import Contract.Prelude (liftM, mconcat) -import Contract.Prim.ByteArray (byteArrayFromAscii, hexToByteArray, hexToByteArrayUnsafe, hexToRawBytes) +import Contract.Prim.ByteArray + ( byteArrayFromAscii + , hexToByteArray + , hexToByteArrayUnsafe + , hexToRawBytes + ) import Contract.ScriptLookups as Lookups -import Contract.Scripts (ValidatorHash, applyArgs, getScriptByHash, getScriptsByHashes, validatorHash) +import Contract.Scripts + ( ValidatorHash + , applyArgs + , getScriptByHash + , getScriptsByHashes + , validatorHash + ) import Contract.Test (ContractTest) import Contract.Test.Assert (runChecks) -import Contract.Test.Plutip (InitialUTxOs, InitialUTxOsWithStakeKey, withStakeKey, withWallets) +import Contract.Test.Plutip + ( InitialUTxOs + , InitialUTxOsWithStakeKey + , withStakeKey + , withWallets + ) import Contract.Time (Slot(Slot), getEraSummaries) -import Contract.Transaction (BalanceTxError(BalanceInsufficientError, InsufficientCollateralUtxos), DataHash, NativeScript(ScriptPubkey, ScriptNOfK, ScriptAll), OutputDatum(OutputDatumHash, OutputDatum), ScriptRef(PlutusScriptRef, NativeScriptRef), TransactionHash(TransactionHash), TransactionInput(TransactionInput), TransactionOutput(TransactionOutput), _input, _output, awaitTxConfirmed, balanceTx, balanceTxE, balanceTxWithConstraints, balanceTxWithConstraintsE, createAdditionalUtxos, getTxMetadata, lookupTxHash, signTransaction, submit, submitTxFromConstraints, withBalancedTx, withBalancedTxs) +import Contract.Transaction + ( BalanceTxError(BalanceInsufficientError, InsufficientCollateralUtxos) + , DataHash + , NativeScript(ScriptPubkey, ScriptNOfK, ScriptAll) + , OutputDatum(OutputDatumHash, OutputDatum) + , ScriptRef(PlutusScriptRef, NativeScriptRef) + , TransactionHash(TransactionHash) + , TransactionInput(TransactionInput) + , TransactionOutput(TransactionOutput) + , _input + , _output + , awaitTxConfirmed + , balanceTx + , balanceTxE + , balanceTxWithConstraints + , balanceTxWithConstraintsE + , createAdditionalUtxos + , getTxMetadata + , lookupTxHash + , signTransaction + , submit + , submitTxFromConstraints + , withBalancedTx + , withBalancedTxs + ) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints import Contract.Types.MintingPolicy as MintingPolicy @@ -41,7 +103,16 @@ import Contract.UnbalancedTx (mkUnbalancedTx, mkUnbalancedTxE) import Contract.Utxos (UtxoMap, utxosAt) import Contract.Value (Coin(Coin), Value, coinToValue) import Contract.Value as Value -import Contract.Wallet (getWalletAddresses, getWalletBalance, getWalletCollateral, getWalletUtxos, isWalletAvailable, ownPaymentPubKeyHashes, ownStakePubKeyHashes, withKeyWallet) +import Contract.Wallet + ( getWalletAddresses + , getWalletBalance + , getWalletCollateral + , getWalletUtxos + , isWalletAvailable + , ownPaymentPubKeyHashes + , ownStakePubKeyHashes + , withKeyWallet + ) import Control.Monad.Error.Class (try) import Control.Monad.Trans.Class (lift) import Control.Parallel (parallel, sequential) @@ -53,11 +124,19 @@ import Ctl.Examples.BalanceTxConstraints as BalanceTxConstraintsExample import Ctl.Examples.Cip30 as Cip30 import Ctl.Examples.ContractTestUtils as ContractTestUtils import Ctl.Examples.ECDSA as ECDSA -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol, mustPayToPubKeyStakeAddress) +import Ctl.Examples.Helpers + ( mkAssetName + , mkCurrencySymbol + , mustPayToPubKeyStakeAddress + ) import Ctl.Examples.IncludeDatum as IncludeDatum import Ctl.Examples.Lose7Ada as AlwaysFails import Ctl.Examples.ManyAssets as ManyAssets -import Ctl.Examples.MintsMultipleTokens (mintingPolicyRdmrInt1, mintingPolicyRdmrInt2, mintingPolicyRdmrInt3) +import Ctl.Examples.MintsMultipleTokens + ( mintingPolicyRdmrInt1 + , mintingPolicyRdmrInt2 + , mintingPolicyRdmrInt3 + ) import Ctl.Examples.NativeScriptMints (contract) as NativeScriptMints import Ctl.Examples.OneShotMinting (contract) as OneShotMinting import Ctl.Examples.PaysWithDatum (contract) as PaysWithDatum @@ -73,8 +152,13 @@ import Ctl.Examples.SendsToken (contract) as SendsToken import Ctl.Examples.TxChaining (contract) as TxChaining import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Interval (getSlotLength) -import Ctl.Internal.Wallet (WalletExtension(NamiWallet, GeroWallet, FlintWallet, NuFiWallet)) -import Ctl.Internal.Wallet.Cip30Mock (WalletMock(MockNami, MockGero, MockFlint, MockNuFi, MockGenericCip30), withCip30Mock) +import Ctl.Internal.Wallet + ( WalletExtension(NamiWallet, GeroWallet, FlintWallet, NuFiWallet) + ) +import Ctl.Internal.Wallet.Cip30Mock + ( WalletMock(MockNami, MockGero, MockFlint, MockNuFi, MockGenericCip30) + , withCip30Mock + ) import Data.Array (head, (!!)) import Data.Either (Either(Left, Right), hush, isLeft, isRight) import Data.Foldable (fold, foldM, length) @@ -92,7 +176,18 @@ import JS.BigInt as BigInt import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) -import Test.Ctl.Fixtures (fullyAppliedScriptFixture, nativeScriptFixture1, nativeScriptFixture2, nativeScriptFixture3, nativeScriptFixture4, nativeScriptFixture5, nativeScriptFixture6, nativeScriptFixture7, partiallyAppliedScriptFixture, unappliedScriptFixture) +import Test.Ctl.Fixtures + ( fullyAppliedScriptFixture + , nativeScriptFixture1 + , nativeScriptFixture2 + , nativeScriptFixture3 + , nativeScriptFixture4 + , nativeScriptFixture5 + , nativeScriptFixture6 + , nativeScriptFixture7 + , partiallyAppliedScriptFixture + , unappliedScriptFixture + ) import Test.Ctl.Plutip.Common (privateStakeKey) import Test.Ctl.Plutip.Utils (getLockedInputs, submitAndLog) import Test.Ctl.Plutip.UtxoDistribution (checkUtxoDistribution) @@ -799,7 +894,8 @@ suite = do withWallets unit \_ -> do let mkDatumHash :: String -> DataHash - mkDatumHash str = unsafePartial $ fromJust $ decodeCbor <<< wrap =<< hexToByteArray str + mkDatumHash str = unsafePartial $ fromJust $ decodeCbor <<< wrap =<< + hexToByteArray str -- Nothing is expected, because we are in an empty chain. -- This test only checks for ability to connect to the datum-querying -- backend. @@ -962,8 +1058,10 @@ suite = do let constraints :: Constraints.TxConstraints constraints = mconcat - [ Constraints.mustMintCurrency (MintingPolicy.hash mp1) tn1 Int.zero - , Constraints.mustMintCurrency (MintingPolicy.hash mp2) tn1 Int.one + [ Constraints.mustMintCurrency (MintingPolicy.hash mp1) tn1 + Int.zero + , Constraints.mustMintCurrency (MintingPolicy.hash mp2) tn1 + Int.one ] lookups :: Lookups.ScriptLookups @@ -1128,7 +1226,9 @@ suite = do vhash = validatorHash validator scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing - aliceAddress <- mkAddress (wrap $ PubKeyHashCredential $ unwrap alicePkh) Nothing + aliceAddress <- mkAddress + (wrap $ PubKeyHashCredential $ unwrap alicePkh) + Nothing let datum42 = Integer $ BigInt.fromInt 42 datum42Hash = datumHash datum42 @@ -1379,7 +1479,8 @@ suite = do let collateralLoss = Value.lovelaceValueOf $ BigNum.fromInt $ -5_000_000 - balance `shouldEqual` (unsafePartial $ balanceBefore <> collateralLoss) + balance `shouldEqual` + (unsafePartial $ balanceBefore <> collateralLoss) test "AlwaysFails script triggers Native Asset Collateral Return (tokens)" do @@ -1399,8 +1500,8 @@ suite = do tn <- liftContractM "Cannot make token name" $ byteArrayFromAscii "TheToken" >>= AssetName.mkAssetName let - asset = Value.singleton cs tn $ BigNum.fromInt 50 - mint = Mint.singleton cs tn $ Int.fromInt 50 + asset = Value.singleton cs tn $ BigNum.fromInt 50 + mint = Mint.singleton cs tn $ Int.fromInt 50 validator <- AlwaysFails.alwaysFailsScript let vhash = validatorHash validator @@ -1409,15 +1510,16 @@ suite = do logInfo' "Minting asset to Alice" let constraints :: Constraints.TxConstraints - constraints = Constraints.mustMintValue (unsafePartial $ mint <> mint) - <> mustPayToPubKeyStakeAddress alicePkh aliceStakePkh - ( unsafePartial $ asset <> - (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) - ) - <> mustPayToPubKeyStakeAddress alicePkh aliceStakePkh - ( unsafePartial $ asset <> - (Value.lovelaceValueOf $ BigNum.fromInt 50_000_000) - ) + constraints = + Constraints.mustMintValue (unsafePartial $ mint <> mint) + <> mustPayToPubKeyStakeAddress alicePkh aliceStakePkh + ( unsafePartial $ asset <> + (Value.lovelaceValueOf $ BigNum.fromInt 10_000_000) + ) + <> mustPayToPubKeyStakeAddress alicePkh aliceStakePkh + ( unsafePartial $ asset <> + (Value.lovelaceValueOf $ BigNum.fromInt 50_000_000) + ) lookups :: Lookups.ScriptLookups lookups = Lookups.mintingPolicy mp diff --git a/test/Unit.purs b/test/Unit.purs index 70455f244..21971ec27 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -56,22 +56,22 @@ testPlan = do Cip30SignData.suite Data.suite Deserialization.suite - -- Hashing.suite - -- Partition.suite - -- Plutus.Time.suite - -- Serialization.suite - -- Serialization.Hash.suite - -- UsedTxOuts.suite - -- Ogmios.Aeson.suite - -- Ogmios.EvaluateTx.suite - -- ProtocolParams.suite - -- Blockfrost.Aeson.suite - -- Blockfrost.ProtocolParameters.suite - -- Types.TokenName.suite - -- Types.Transaction.suite - -- Ctl.Data.Interval.suite - -- flip mapTest Types.Interval.suite \f -> liftEffect $ join $ - -- f <$> Types.Interval.eraSummariesFixture - -- <*> Types.Interval.systemStartFixture - -- E2E.Route.suite - -- CoinSelection.suite +-- Hashing.suite +-- Partition.suite +-- Plutus.Time.suite +-- Serialization.suite +-- Serialization.Hash.suite +-- UsedTxOuts.suite +-- Ogmios.Aeson.suite +-- Ogmios.EvaluateTx.suite +-- ProtocolParams.suite +-- Blockfrost.Aeson.suite +-- Blockfrost.ProtocolParameters.suite +-- Types.TokenName.suite +-- Types.Transaction.suite +-- Ctl.Data.Interval.suite +-- flip mapTest Types.Interval.suite \f -> liftEffect $ join $ +-- f <$> Types.Interval.eraSummariesFixture +-- <*> Types.Interval.systemStartFixture +-- E2E.Route.suite +-- CoinSelection.suite From 8273c9c77d4b768652526e8496fb55abc24792d8 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 1 Apr 2024 22:58:27 +0400 Subject: [PATCH 076/373] Add onClusterStartup hook --- src/Internal/Contract/Hooks.purs | 16 +++++++++++++++- src/Internal/Plutip/Server.purs | 8 ++++++++ src/Internal/Test/E2E/Feedback/Hooks.purs | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/Internal/Contract/Hooks.purs b/src/Internal/Contract/Hooks.purs index efd552c6c..27a8080bf 100644 --- a/src/Internal/Contract/Hooks.purs +++ b/src/Internal/Contract/Hooks.purs @@ -1,8 +1,13 @@ -module Ctl.Internal.Contract.Hooks (Hooks, emptyHooks) where +module Ctl.Internal.Contract.Hooks + ( Hooks + , ClusterParameters + , emptyHooks + ) where import Prelude import Ctl.Internal.Cardano.Types.Transaction (Transaction) +import Ctl.Internal.Serialization.Types (PrivateKey) import Data.Maybe (Maybe(Nothing)) import Effect (Effect) import Effect.Exception (Error) @@ -13,6 +18,14 @@ type Hooks = , onSuccess :: Maybe (Effect Unit) , onError :: Maybe (Error -> Effect Unit) , onSubmit :: Maybe (Transaction -> Effect Unit) + , onClusterStartup :: Maybe (ClusterParameters -> Effect Unit) + } + +type ClusterParameters = + { privateKeys :: Array PrivateKey + , nodeSocketPath :: String + , nodeConfigPath :: String + , privateKeysDirectory :: String } emptyHooks :: Hooks @@ -22,4 +35,5 @@ emptyHooks = , onSuccess: Nothing , onError: Nothing , onSubmit: Nothing + , onClusterStartup: Nothing } diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index e2c2c8aff..f09d380aa 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -291,6 +291,14 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do tryWithReport (startKupo' response) "Could not start Kupo" { env, printLogs, clearLogs } <- mkContractEnv' wallets <- mkWallets' env ourKey response + void $ try $ liftEffect do + for_ env.hooks.onClusterStartup \clusterParamsCb -> do + clusterParamsCb + { privateKeys: response.privateKeys <#> unwrap + , nodeSocketPath: response.nodeSocketPath + , nodeConfigPath: response.nodeConfigPath + , privateKeysDirectory: response.keysDirectory + } pure { env , wallets diff --git a/src/Internal/Test/E2E/Feedback/Hooks.purs b/src/Internal/Test/E2E/Feedback/Hooks.purs index 01a3e3888..0bf64df34 100644 --- a/src/Internal/Test/E2E/Feedback/Hooks.purs +++ b/src/Internal/Test/E2E/Feedback/Hooks.purs @@ -20,6 +20,7 @@ e2eFeedbackHooks = , onSuccess: Just $ pushBrowserEvent Success , onError: Just (pushBrowserEvent <<< Failure <<< show) , onSubmit: Nothing + , onClusterStartup: Nothing } addE2EFeedbackHooks :: Hooks -> Hooks From aab6bdf730690777a895965da397aa2ce206d0ee Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 4 Apr 2024 03:25:47 +0400 Subject: [PATCH 077/373] Actually use onClusterStartup hooks --- src/Internal/Plutip/Server.purs | 2 +- test/Plutip.purs | 2 + test/Plutip/Contract/ClusterParameters.purs | 52 +++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 test/Plutip/Contract/ClusterParameters.purs diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index f09d380aa..ce94b990f 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -660,7 +660,7 @@ mkClusterContractEnv plutipCfg logger customLogger = do , logLevel: plutipCfg.logLevel , customLogger: customLogger , suppressLogs: plutipCfg.suppressLogs - , hooks: emptyHooks + , hooks: plutipCfg.hooks , wallet: Nothing , usedTxOuts , ledgerConstants diff --git a/test/Plutip.purs b/test/Plutip.purs index f11e42179..4d0a368fa 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -39,6 +39,7 @@ import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract import Test.Ctl.Plutip.Contract.Assert as Assert +import Test.Ctl.Plutip.Contract.ClusterParameters as ClusterParameters import Test.Ctl.Plutip.Contract.Mnemonics as Mnemonics import Test.Ctl.Plutip.Contract.NetworkId as NetworkId import Test.Ctl.Plutip.Contract.OgmiosMempool as OgmiosMempool @@ -75,6 +76,7 @@ main = interruptOnSignal SIGINT =<< launchAff do UtxoDistribution.suite testPlutipContracts config OgmiosMempool.suite runPlutipTestPlan config SameWallets.suite + ClusterParameters.runTest configWithMaxExUnits :: PlutipConfig configWithMaxExUnits = config diff --git a/test/Plutip/Contract/ClusterParameters.purs b/test/Plutip/Contract/ClusterParameters.purs new file mode 100644 index 000000000..fea9a6a34 --- /dev/null +++ b/test/Plutip/Contract/ClusterParameters.purs @@ -0,0 +1,52 @@ +module Test.Ctl.Plutip.Contract.ClusterParameters (mkSuite, runTest) where + +import Prelude + +import Contract.Test (ContractTest, InitialUTxOs, withWallets) +import Contract.Test.Mote (TestPlanM) +import Contract.Test.Plutip (testPlutipContracts) +import Ctl.Internal.Contract.Hooks (ClusterParameters) +import Data.Array as Array +import Data.Maybe (Maybe(Just)) +import Data.Tuple.Nested (type (/\), (/\)) +import Effect.Aff (Aff) +import Effect.Class (liftEffect) +import Effect.Ref (Ref) +import Effect.Ref as Ref +import JS.BigInt as BigInt +import Mote (group, test) +import Test.Ctl.Plutip.Common (config) +import Test.Spec.Assertions (shouldEqual) + +runTest :: TestPlanM (Aff Unit) Unit +runTest = + do + clusterParamsRef <- + liftEffect $ Ref.new + { privateKeys: [] + , nodeSocketPath: "" + , nodeConfigPath: "" + , privateKeysDirectory: "" + } + testPlutipContracts + config + { hooks = config.hooks + { onClusterStartup = Just (flip Ref.write clusterParamsRef) } + } + (mkSuite clusterParamsRef) + +mkSuite :: Ref ClusterParameters -> TestPlanM ContractTest Unit +mkSuite ref = do + group "Getting ClusterParameters" do + let + initialUtxos :: InitialUTxOs + initialUtxos = + [ BigInt.fromInt 2_000_000_000, BigInt.fromInt 2_000_000_000 ] + + distribution :: InitialUTxOs /\ InitialUTxOs + distribution = initialUtxos /\ initialUtxos + test "getting cluster parameters" do + withWallets distribution \(_alice /\ _bob) -> do + clusterParams <- liftEffect $ Ref.read ref + Array.length clusterParams.privateKeys `shouldEqual` 2 + pure unit From d201be05632df393fd5d129946c564c7023b00bc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 4 Apr 2024 03:31:24 +0400 Subject: [PATCH 078/373] Update CHANGELOG --- CHANGELOG.md | 1 + src/Internal/Plutip/Server.purs | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 152e986ef..22ab5fa6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -69,6 +69,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Sharing wallets between Plutip tests - see [the docs for this feature](./doc/plutip-testing.md#sharing-wallet-state-between-tests) ([#1585](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1585)) - `runPlutipTestPlan` is a new function that executes a `ContractTestPlan`. - `sameWallets` is a new function that creates a `ContractTestPlan` from a `UtxoDistribution` and a `TestPlanM` of the same wallets running different `Contract`s. +- new `onClusterStartup` hook that allows to get cluster startup parameters (private keys, `cardano-node` socket and config paths). See [`Test.Ctl.Plutip.Contract.ClusterParameters`](./test/Plutip/Contract/ClusterParameters.purs). ([#1610](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1610)) ### Changed diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index ce94b990f..662e3c654 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -26,7 +26,6 @@ import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) import Ctl.Internal.Affjax (request) as Affjax -import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.Monad ( buildBackend , getLedgerConstants From 4643c328da6edfaa75d4dfdee71a57591736b598 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 5 Apr 2024 00:42:48 +0400 Subject: [PATCH 079/373] Fix a bug with duplicated inputs --- packages.dhall | 2 +- src/Contract/AuxiliaryData.purs | 10 +++++---- src/Internal/BalanceTx/BalanceTx.purs | 32 ++++++++++++++++++++------- src/Internal/Lens.purs | 2 +- test/Fixtures.purs | 2 +- 5 files changed, 33 insertions(+), 15 deletions(-) diff --git a/packages.dhall b/packages.dhall index d85315b66..cb07446ea 100644 --- a/packages.dhall +++ b/packages.dhall @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "01a039b5db83373a47d05f84e762ee977cf770db" + , version = "651f8e12b59574c7525f9015093c9c05c81ad0b4" } , cardano-message-signing = { dependencies = diff --git a/src/Contract/AuxiliaryData.purs b/src/Contract/AuxiliaryData.purs index c85253d0b..9f98626b2 100644 --- a/src/Contract/AuxiliaryData.purs +++ b/src/Contract/AuxiliaryData.purs @@ -25,7 +25,7 @@ import Data.Lens.Getter (view) import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) import Data.Lens.Types (Lens') -import Data.Maybe (Maybe) +import Data.Maybe (Maybe(Just), fromMaybe) import Data.Tuple (Tuple(Tuple)) import Type.Proxy (Proxy(Proxy)) @@ -37,7 +37,8 @@ setAuxiliaryData tx auxData = let auxDataHash = hashAuxiliaryData auxData in - tx # _auxiliaryData .~ auxData # _auxiliaryDataHash ?~ auxDataHash + tx # _auxiliaryData .~ Just auxData + # _auxiliaryDataHash ?~ auxDataHash setGeneralTxMetadata :: UnbalancedTx @@ -47,7 +48,8 @@ setGeneralTxMetadata tx generalMetadata = let auxData = view _auxiliaryData tx in - setAuxiliaryData tx (auxData # _metadata ?~ generalMetadata) + setAuxiliaryData tx + (fromMaybe mempty auxData # _metadata ?~ generalMetadata) setTxMetadata :: forall (m :: Type) @@ -65,7 +67,7 @@ setTxMetadata tx = _transaction :: Lens' UnbalancedTx Transaction _transaction = _Newtype <<< prop (Proxy :: Proxy "transaction") -_auxiliaryData :: Lens' UnbalancedTx AuxiliaryData +_auxiliaryData :: Lens' UnbalancedTx (Maybe AuxiliaryData) _auxiliaryData = _Newtype <<< prop (Proxy :: Proxy "transaction") <<< Tx._auxiliaryData diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 0a1d87958..e951e0f24 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -19,6 +19,7 @@ import Cardano.Types import Cardano.Types.Address (Address) import Cardano.Types.BigNum as BigNum import Cardano.Types.Coin as Coin +import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.OutputDatum (OutputDatum(OutputDatum)) import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutputs @@ -144,7 +145,16 @@ import Data.Lens.Setter ((%~), (.~), (?~)) import Data.Log.Tag (TagSet, tag, tagSetTag) import Data.Log.Tag (fromArray) as TagSet import Data.Map (Map) -import Data.Map (empty, insert, lookup, singleton, toUnfoldable, union) as Map +import Data.Map + ( empty + , filter + , insert + , isEmpty + , lookup + , singleton + , toUnfoldable + , union + ) as Map import Data.Maybe (Maybe(Just, Nothing), fromJust, isJust, maybe) import Data.Newtype (unwrap, wrap) import Data.Set (Set) @@ -410,14 +420,12 @@ runBalancer p = do (lovelaceValueOf $ BigNum.one) runNextBalancerStep $ state { transaction = transaction # - _transaction <<< _body <<< _inputs %~ append + _transaction <<< _body <<< _inputs %~ appendInputs (selectedInputs selectionState) , leftoverUtxos = selectionState ^. _leftoverUtxos } else do - logTransaction "Balanced transaction (Done)" p.allUtxos - transaction.transaction finalizeTransaction evaluatedTx p.allUtxos false -> runNextBalancerStep $ state @@ -464,7 +472,7 @@ runBalancer p = do { transaction = ( transaction # _transaction <<< _body <<< _inputs %~ - append (selectedInputs selectionState) + appendInputs (selectedInputs selectionState) ) , leftoverUtxos = selectionState ^. _leftoverUtxos @@ -526,6 +534,13 @@ addLovelacesToTransactionOutput txOutput = do pure $ wrap txOutputRec { amount = mkValue newCoin (getMultiAsset txOutputValue) } +-- removes duplicates +appendInputs + :: Array TransactionInput + -> Array TransactionInput + -> Array TransactionInput +appendInputs a b = Set.toUnfoldable (Set.fromFoldable a <> Set.fromFoldable b) + setTxChangeOutputs :: Array TransactionOutput -> UnindexedTx -> UnindexedTx setTxChangeOutputs outputs tx = @@ -573,8 +588,7 @@ makeChange else do res <- traverse (ltraverse liftValue) changeValueOutputCoinPairs >>= splitOversizedValues - >>= - assignCoinsToChangeValues changeAddress excessCoin + >>= assignCoinsToChangeValues changeAddress excessCoin pure $ mkChangeOutput changeAddress changeDatum <$> res where inputValue = Val.fromValue inputValue' @@ -649,7 +663,9 @@ makeChange posVal :: Val -> Val posVal (Val coin nonAdaAsset) = - Val (max coin zero) $ map (map (max zero)) nonAdaAsset + Val (max coin zero) $ + Map.filter (not <<< Map.isEmpty) $ + map (Map.filter (\x -> x > zero)) nonAdaAsset -- | Constructs change outputs for an asset. -- | diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index 8986e4bba..cb435379a 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -72,7 +72,7 @@ _isValid = _Newtype <<< prop (Proxy :: Proxy "isValid") _witnessSet :: Lens' Transaction TransactionWitnessSet _witnessSet = _Newtype <<< prop (Proxy :: Proxy "witnessSet") -_auxiliaryData :: Lens' Transaction AuxiliaryData +_auxiliaryData :: Lens' Transaction (Maybe AuxiliaryData) _auxiliaryData = _Newtype <<< prop (Proxy :: Proxy "auxiliaryData") -- TransactionBody diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 9c9ed3207..a053b744f 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -737,7 +737,7 @@ txFixture6 = , redeemers: [] } , isValid: true - , auxiliaryData: AuxiliaryData + , auxiliaryData: Just $ AuxiliaryData { metadata: Just $ GeneralTransactionMetadata ( Map.fromFoldable [ BigNum.fromInt 8 /\ Text "foo" ] From 464d95b69e09a65b78e2083117dd11eec6681cde Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 5 Apr 2024 01:28:50 +0400 Subject: [PATCH 080/373] Fix absent mint problem --- src/Internal/BalanceTx/BalanceTx.purs | 6 +++--- src/Internal/ProcessConstraints.purs | 23 +++++++++++++++-------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index e951e0f24..099fa037f 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -663,9 +663,9 @@ makeChange posVal :: Val -> Val posVal (Val coin nonAdaAsset) = - Val (max coin zero) $ - Map.filter (not <<< Map.isEmpty) $ - map (Map.filter (\x -> x > zero)) nonAdaAsset + Val (max coin zero) + $ Map.filter (not <<< Map.isEmpty) + $ map (Map.filter (\x -> x > zero)) nonAdaAsset -- | Constructs change outputs for an asset. -- | diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index f2361881f..a9aa159a1 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -177,7 +177,7 @@ import Data.Array (mapMaybe, singleton, (:)) as Array import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either, hush, isRight, note) import Data.Foldable (foldM) -import Data.Lens (_Just, (%=), (%~), (.=), (.~), (<>=)) +import Data.Lens ((%=), (%~), (.=), (.~), (<>=)) import Data.Lens.Getter (to, use) import Data.Lens.Iso.Newtype (_Newtype) import Data.List (List(Nil, Cons)) @@ -185,6 +185,7 @@ import Data.Map (Map, empty, fromFoldable, lookup, union) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, maybe) import Data.Newtype (over, unwrap, wrap) +import Data.Set as Set import Data.Traversable (for, traverse_) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) @@ -413,6 +414,11 @@ lookupValidator lookupValidator vh osMap = note (ValidatorHashNotFound vh) $ lookup vh osMap +-- Ensures uniqueness +appendInputs + :: Array TransactionInput -> Array TransactionInput -> Array TransactionInput +appendInputs a b = Set.toUnfoldable (Set.fromFoldable a <> Set.fromFoldable b) + processScriptRefUnspentOut :: ScriptHash -> InputWithScriptRef @@ -420,12 +426,13 @@ processScriptRefUnspentOut processScriptRefUnspentOut scriptHash inputWithRefScript = do unspentOut <- case inputWithRefScript of SpendInput unspentOut -> do - _cpsTransaction <<< _body <<< _inputs <>= - [ _.input <<< unwrap $ unspentOut ] + _cpsTransaction <<< _body <<< _inputs %= + appendInputs [ _.input <<< unwrap $ unspentOut ] pure unspentOut RefInput unspentOut -> do let refInput = (unwrap unspentOut).input - _cpsTransaction <<< _body <<< _referenceInputs <>= [ refInput ] + _cpsTransaction <<< _body <<< _referenceInputs %= + appendInputs [ refInput ] pure unspentOut updateRefScriptsUtxoMap unspentOut @@ -515,7 +522,7 @@ processConstraint mpsMap osMap c = do -- POTENTIAL FIX ME: Plutus has Tx.TxIn and Tx.PubKeyTxIn -- TxIn -- keeps track TransactionInput and TxInType (the input type, whether -- consuming script, public key or simple script) - _cpsTransaction <<< _body <<< _inputs <>= [ txo ] + _cpsTransaction <<< _body <<< _inputs %= appendInputs [ txo ] _valueSpentBalancesInputs <>= provideValue amount MustSpendScriptOutput txo red scriptRefUnspentOut -> runExceptT do txOut <- ExceptT $ lookupTxOutRef txo scriptRefUnspentOut @@ -551,7 +558,7 @@ processConstraint mpsMap osMap c = do lift $ addDatum dat Just (OutputDatum _) -> pure unit Nothing -> throwError CannotFindDatum - _cpsTransaction <<< _body <<< _inputs <>= [ txo ] + _cpsTransaction <<< _body <<< _inputs %= appendInputs [ txo ] let uiRedeemer = UnindexedRedeemer { purpose: ForSpend txo @@ -560,7 +567,7 @@ processConstraint mpsMap osMap c = do _redeemers <>= [ uiRedeemer ] _valueSpentBalancesInputs <>= provideValue amount MustSpendNativeScriptOutput txo ns -> runExceptT do - _cpsTransaction <<< _body <<< _inputs <>= [ txo ] + _cpsTransaction <<< _body <<< _inputs %= appendInputs [ txo ] lift $ attachToCps (map pure <<< attachNativeScript) ns MustReferenceOutput refInput -> runExceptT do _cpsTransaction <<< _body <<< _referenceInputs <>= [ refInput ] @@ -604,7 +611,7 @@ processConstraint mpsMap osMap c = do _redeemers <>= [ UnindexedRedeemer { purpose: ForMint scriptHash, datum: unwrap red } ] -- Remove mint redeemers from array before reindexing. - unsafePartial $ _cpsTransaction <<< _body <<< _mint <<< _Just <>= mint + unsafePartial $ _cpsTransaction <<< _body <<< _mint <>= Just mint MustMintValueUsingNativeScript ns tn i -> runExceptT do let From 2b584a9b66d20eb3cd1ebde2a6a295a3278ccd80 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 5 Apr 2024 03:40:36 +0400 Subject: [PATCH 081/373] WIP: fixed a bug with Val comparisons --- src/Internal/BalanceTx/BalanceTx.purs | 40 +++-- src/Internal/BalanceTx/CoinSelection.purs | 189 ++++++++++------------ src/Internal/BalanceTx/Collateral.purs | 2 +- src/Internal/BalanceTx/Error.purs | 8 +- src/Internal/BalanceTx/RedeemerIndex.purs | 2 +- src/Internal/BalanceTx/UnattachedTx.purs | 5 + src/Internal/CoinSelection/UtxoIndex.purs | 1 + src/Internal/Types/Val.purs | 40 ++++- test/CoinSelection/CoinSelection.purs | 6 +- 9 files changed, 167 insertions(+), 126 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 099fa037f..72440e788 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -31,7 +31,7 @@ import Cardano.Types.Value , pprintValue ) import Cardano.Types.Value as Value -import Contract.Log (logWarn') +import Contract.Log (logError', logWarn') import Control.Monad.Except (class MonadError) import Control.Monad.Except.Trans (except, runExceptT) import Control.Monad.Logger.Class (info) as Logger @@ -85,6 +85,7 @@ import Ctl.Internal.BalanceTx.Types import Ctl.Internal.BalanceTx.UnattachedTx ( EvaluatedTx , UnindexedTx + , _redeemers , _transaction , indexTx ) @@ -164,6 +165,8 @@ import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (toInt) as UInt import Effect.Aff.Class (liftAff) +import Effect.Class (liftEffect) +import Effect.Console as Console import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) @@ -174,7 +177,10 @@ balanceTxWithConstraints -> Map TransactionInput TransactionOutput -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError Transaction) -balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do +balanceTxWithConstraints transaction_ extraUtxos constraintsBuilder = do + + logError' $ show transaction + logError' $ show extraUtxos pparams <- getProtocolParameters withBalanceTxConstraints constraintsBuilder $ runExceptT do @@ -259,6 +265,8 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do getChangeAddress = maybe (liftContract Wallet.getChangeAddress) pure =<< asksConstraints Constraints._changeAddress + transaction = transaction_ -- # _redeemers .~ [] # _transaction <<< _body <<< _mint .~ Nothing + transactionWithNetworkId :: BalanceTxM Transaction transactionWithNetworkId = do networkId <- maybe askNetworkId pure @@ -417,11 +425,11 @@ runBalancer p = do do selectionState <- performMultiAssetSelection p.strategy leftoverUtxos - (lovelaceValueOf $ BigNum.one) + (Val one Map.empty) runNextBalancerStep $ state { transaction = transaction # _transaction <<< _body <<< _inputs %~ appendInputs - (selectedInputs selectionState) + (Array.fromFoldable $ selectedInputs selectionState) , leftoverUtxos = selectionState ^. _leftoverUtxos } @@ -458,7 +466,7 @@ runBalancer p = do _body worker $ - if requiredValue == Value.empty then BalanceChangeAndMinFee $ state + if requiredValue == mempty then BalanceChangeAndMinFee $ state { changeOutputs = changeOutputs, transaction = transaction } else PrebalanceTx $ state { changeOutputs = changeOutputs } @@ -472,21 +480,22 @@ runBalancer p = do { transaction = ( transaction # _transaction <<< _body <<< _inputs %~ - appendInputs (selectedInputs selectionState) + appendInputs + (Array.fromFoldable $ selectedInputs selectionState) ) , leftoverUtxos = selectionState ^. _leftoverUtxos } where performCoinSelection :: BalanceTxM SelectionState - performCoinSelection = + performCoinSelection = do + liftEffect $ Console.log "performCoinSelection" let txBody :: TransactionBody txBody = setTxChangeOutputs changeOutputs transaction ^. _transaction <<< _body - in - except (getRequiredValue p.certsFee p.allUtxos txBody) - >>= performMultiAssetSelection p.strategy leftoverUtxos + except (getRequiredValue p.certsFee p.allUtxos txBody) + >>= performMultiAssetSelection p.strategy leftoverUtxos -- | Calculates execution units for each script in the transaction and sets -- | min fee. @@ -629,7 +638,8 @@ makeChange where bundle :: Value /\ BigInt -> BalanceTxM Value bundle (Value _ assets /\ coin) = do - coin' <- liftEither (note NumericOverflowError $ BigNum.fromBigInt coin) + coin' <- liftEither + (note (NumericOverflowError Nothing) $ BigNum.fromBigInt coin) pure $ mkValue (wrap coin') assets unbundle :: Value -> Value /\ BigInt @@ -812,13 +822,12 @@ mkChangeOutput changeAddress datum amount = wrap -------------------------------------------------------------------------------- getRequiredValue - :: BigInt -> UtxoMap -> TransactionBody -> Either BalanceTxError Value + :: BigInt -> UtxoMap -> TransactionBody -> Either BalanceTxError Val getRequiredValue certsFee utxos txBody = do - val <- getInputVal utxos txBody <#> \inputValue -> + getInputVal utxos txBody <#> \inputValue -> ( outputValue txBody <> minFeeValue txBody <> Val certsFee Map.empty ) `Val.minus` (inputValue <> mintValue txBody) - note NumericOverflowError $ Val.toValue val getAmount :: TransactionOutput -> Value getAmount = _.amount <<< unwrap @@ -917,4 +926,5 @@ logTransactionWithChange message utxos mChangeOutputs tx = >>= (flip Logger.info (message <> ":") <<< transactionInfo) liftValue :: forall a. MonadError BalanceTxError a => Val -> a Value -liftValue val = liftEither $ note NumericOverflowError $ Val.toValue val +liftValue val = liftEither $ note (NumericOverflowError $ Just val) $ + Val.toValue val diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index dec207ec3..c1991a531 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -19,40 +19,28 @@ module Ctl.Internal.BalanceTx.CoinSelection , selectRandomWithPriority ) where +import Data.Tuple.Nested import Prelude -import Cardano.AsCbor (encodeCbor) -import Cardano.Types (AssetClass(AssetClass), Coin, Value) -import Cardano.Types.Asset (Asset(Asset, AdaAsset)) -import Cardano.Types.AssetName (unAssetName) as AssetName -import Cardano.Types.BigNum (BigNum) +import Cardano.Types.Asset (Asset(..)) +import Cardano.Types.Asset as Asset +import Cardano.Types.AssetClass (AssetClass(..)) +import Cardano.Types.AssetName (unAssetName) import Cardano.Types.BigNum as BigNum -import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.Coin (Coin(..)) +import Cardano.Types.TransactionInput (TransactionInput(..)) import Cardano.Types.UtxoMap (UtxoMap) -import Cardano.Types.Value - ( add - , empty - , getAssetQuantity - , getCoin - , leq - , valueAssets - , valueToCoin - ) as Value -import Control.Monad.Error.Class - ( class MonadThrow - , throwError - ) +import Cardano.Types.Value as Value +import Contract.Log (logError') +import Control.Monad.Error.Class (class MonadThrow, throwError) +import Control.Monad.Logger.Class (class MonadLogger) import Ctl.Internal.BalanceTx.Error - ( Actual(Actual) - , BalanceTxError - ( NumericOverflowError - , BalanceInsufficientError - , InsufficientUtxoBalanceToCoverAsset - ) - , Expected(Expected) + ( Actual(..) + , BalanceTxError(..) + , Expected(..) ) import Ctl.Internal.CoinSelection.UtxoIndex - ( SelectionFilter(SelectAnyWith, SelectPairWith, SelectSingleton) + ( SelectionFilter(..) , TxUnspentOutput , UtxoIndex , emptyUtxoIndex @@ -61,29 +49,34 @@ import Ctl.Internal.CoinSelection.UtxoIndex , utxoIndexPartition , utxoIndexUniverse ) -import Ctl.Internal.Helpers (liftM) -import Data.Array (foldr) -import Data.Array (fromFoldable, snoc, uncons) as Array +import Ctl.Internal.Types.Val (Val(..)) +import Ctl.Internal.Types.Val as Val +import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) -import Data.Array.NonEmpty (cons', fromArray, singleton, uncons) as NEArray +import Data.Array.NonEmpty as NEArray import Data.ByteArray (byteArrayToHex) +import Data.Foldable (foldMap) import Data.Function (applyFlipped) import Data.Generic.Rep (class Generic) -import Data.Lens (Lens') -import Data.Lens.Getter (view, (^.)) +import Data.Lens (Lens', over, view, (^.)) import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) -import Data.Lens.Setter (over) import Data.Map as Map -import Data.Maybe (Maybe(..), isNothing, maybe, maybe') +import Data.Maybe (Maybe(..), fromJust, maybe, maybe') import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Set (Set) +import Data.Set as Set +import Data.Show (show) import Data.Show.Generic (genericShow) -import Data.Tuple (fst) as Tuple -import Data.Tuple.Nested (type (/\), (/\)) -import Effect.Class (class MonadEffect) -import Test.QuickCheck.Arbitrary (class Arbitrary) -import Test.QuickCheck.Gen (elements) as Arbitrary -import Type.Proxy (Proxy(Proxy)) +import Data.Tuple (fst) +import Effect.Class (class MonadEffect, liftEffect) +import Effect.Console as Console +import JS.BigInt (BigInt) +import JS.BigInt as BigInt +import Partial.Unsafe (unsafePartial) +import Test.QuickCheck (class Arbitrary) +import Test.QuickCheck.Gen as Arbitrary +import Type.Proxy (Proxy(..)) -------------------------------------------------------------------------------- -- Coin Selection @@ -130,40 +123,43 @@ performMultiAssetSelection => MonadThrow BalanceTxError m => SelectionStrategy -> UtxoIndex - -> Value + -> Val -> m SelectionState performMultiAssetSelection strategy utxoIndex requiredValue = do - availableValue <- liftM NumericOverflowError $ balance - (utxoIndexUniverse utxoIndex) - let - balanceInsufficientError :: BalanceTxError - balanceInsufficientError = - BalanceInsufficientError - (Expected requiredValue) - (Actual availableValue) - - case requiredValue `Value.leq` availableValue of - true -> + liftEffect $ Console.log "performMultiAssetSelection" + liftEffect $ Console.log $ show utxoIndex + liftEffect $ Console.log $ show requiredValue + liftEffect $ Console.log $ show availableValue + case requiredValue `Val.leq` availableValue of + true -> do runRoundRobinM (mkSelectionState utxoIndex) selectors - false -> + false -> do throwError balanceInsufficientError where + balanceInsufficientError :: BalanceTxError + balanceInsufficientError = + BalanceInsufficientError + (Expected Value.empty) -- $ unsafePartial $ fromJust $ Val.toValue requiredValue) + (Actual Value.empty) -- $ unsafePartial $ fromJust $ Val.toValue availableValue) + + availableValue :: Val + availableValue = balance (utxoIndexUniverse utxoIndex) selectors :: Array (SelectionState -> m (Maybe SelectionState)) selectors = map assetSelector assets `Array.snoc` coinSelector where - assets :: Array (AssetClass /\ BigNum) - assets = Value.valueAssets requiredValue + assets :: Array (AssetClass /\ BigInt) + assets = Val.valueAssets requiredValue assetSelector - :: AssetClass /\ BigNum -> SelectionState -> m (Maybe SelectionState) + :: AssetClass /\ BigInt -> SelectionState -> m (Maybe SelectionState) assetSelector = runSelectionStep <<< assetSelectionLens strategy coinSelector :: SelectionState -> m (Maybe SelectionState) coinSelector = runSelectionStep $ - coinSelectionLens strategy (Value.valueToCoin requiredValue) + coinSelectionLens strategy (Val.getCoin requiredValue) -- | Represents the internal state of a selection. -- | @@ -218,36 +214,34 @@ selectUtxo utxo@(oref /\ out) = <<< over _leftoverUtxos (utxoIndexDeleteEntry utxo) -- | Returns the balance of the given utxo set. -balance :: UtxoMap -> Maybe Value -balance = Array.fromFoldable >>> map (unwrap >>> _.amount) >>> foldr - (\bn mbn -> mbn >>= Value.add bn) - (Just Value.empty) +balance :: UtxoMap -> Val +balance = foldMap (Val.fromValue <<< _.amount <<< unwrap) -- | Returns the balance of selected utxos. -- | -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/Primitive/Types/UTxOSelection.hs#L375 -selectedBalance :: SelectionState -> Maybe Value +selectedBalance :: SelectionState -> Val selectedBalance = balance <<< _.selectedUtxos <<< unwrap -- | Returns the quantity of the given asset in the selected `Value`. -- | -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L2169 -selectedAssetQuantity :: AssetClass -> SelectionState -> Maybe BigNum +selectedAssetQuantity :: AssetClass -> SelectionState -> BigInt selectedAssetQuantity assetClass = - map (Value.getAssetQuantity assetClass) <<< selectedBalance + Val.getAssetQuantity assetClass <<< selectedBalance -- | Returns the selected amount of Ada. -- | -- | Taken from cardano-wallet: -- |https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L2175 -selectedCoinQuantity :: SelectionState -> Maybe BigNum -selectedCoinQuantity = map (unwrap <<< Value.getCoin) <<< selectedBalance +selectedCoinQuantity :: SelectionState -> BigInt +selectedCoinQuantity = Val.getCoin <<< selectedBalance -- | Returns the output references of the selected utxos. -selectedInputs :: SelectionState -> Array TransactionInput -selectedInputs = Array.fromFoldable <<< Map.keys <<< view _selectedUtxos +selectedInputs :: SelectionState -> Set TransactionInput +selectedInputs = Map.keys <<< view _selectedUtxos -- | A `SelectionLens` gives `runSelectionStep` the information on the current -- | selection state along with the functions required to transition to the next @@ -257,8 +251,8 @@ selectedInputs = Array.fromFoldable <<< Map.keys <<< view _selectedUtxos -- | https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1254 type SelectionLens (m :: Type -> Type) = { assetDisplayString :: String - , currentQuantity :: SelectionState -> Maybe BigNum - , requiredQuantity :: BigNum + , currentQuantity :: SelectionState -> BigInt + , requiredQuantity :: BigInt , selectQuantityCover :: SelectionState -> m (Maybe SelectionState) , selectQuantityImprove :: SelectionState -> m (Maybe SelectionState) , selectionStrategy :: SelectionStrategy @@ -270,7 +264,7 @@ assetSelectionLens :: forall (m :: Type -> Type) . MonadEffect m => SelectionStrategy - -> AssetClass /\ BigNum + -> AssetClass /\ BigInt -> SelectionLens m assetSelectionLens selectionStrategy (assetClass /\ requiredQuantity) = { assetDisplayString: @@ -279,15 +273,12 @@ assetSelectionLens selectionStrategy (assetClass /\ requiredQuantity) = selectedAssetQuantity assetClass , requiredQuantity , selectQuantityCover: - selectQuantityOf (assetClassToAsset assetClass) SelectionPriorityCover + selectQuantityOf (Asset.fromAssetClass assetClass) SelectionPriorityCover , selectQuantityImprove: - selectQuantityOf (assetClassToAsset assetClass) SelectionPriorityImprove + selectQuantityOf (Asset.fromAssetClass assetClass) + SelectionPriorityImprove , selectionStrategy } - where - assetClassToAsset :: AssetClass -> Asset - assetClassToAsset (AssetClass scriptHash assetName) = Asset scriptHash - assetName -- | Taken from cardano-wallet: -- | https://github.com/input-output-hk/cardano-wallet/blob/a61d37f2557b8cb5c47b57da79375afad698eed4/lib/wallet/src/Cardano/Wallet/CoinSelection/Internal/Balance.hs#L1173 @@ -295,12 +286,12 @@ coinSelectionLens :: forall (m :: Type -> Type) . MonadEffect m => SelectionStrategy - -> Coin + -> BigInt -> SelectionLens m coinSelectionLens selectionStrategy coin = { assetDisplayString: show coin , currentQuantity: selectedCoinQuantity - , requiredQuantity: unwrap coin + , requiredQuantity: coin , selectQuantityCover: selectQuantityOf AdaAsset SelectionPriorityCover , selectQuantityImprove: @@ -332,7 +323,7 @@ selectQuantityOf asset priority state = filters = filtersForAssetWithPriority asset priority updateState :: TxUnspentOutput /\ UtxoIndex -> SelectionState - updateState = flip selectUtxo state <<< Tuple.fst + updateState = flip selectUtxo state <<< fst -- | Runs just a single step of a coin selection. -- | @@ -360,8 +351,7 @@ runSelectionStep -> SelectionState -> m (Maybe SelectionState) runSelectionStep lens state - | isNothing (lens.currentQuantity state) = pure Nothing - | lens.currentQuantity state < Just lens.requiredQuantity = + | lens.currentQuantity state < lens.requiredQuantity = let balanceInsufficientError :: BalanceTxError balanceInsufficientError = @@ -381,21 +371,22 @@ runSelectionStep lens state | distanceFromTarget state' < distanceFromTarget state = Just state' | otherwise = Nothing - distanceFromTarget :: SelectionState -> Maybe BigNum - distanceFromTarget state' = do - cq <- lens.currentQuantity state' - tc <- targetQuantity - BigNum.abs <$> BigNum.sub tc cq + distanceFromTarget :: SelectionState -> BigInt + distanceFromTarget = + bigIntAbs <<< sub targetQuantity <<< lens.currentQuantity + + bigIntAbs :: BigInt -> BigInt + bigIntAbs x = if x < zero then negate x else x - targetMultiplier :: Prim.Int + targetMultiplier :: Int targetMultiplier = case lens.selectionStrategy of SelectionStrategyMinimal -> 1 SelectionStrategyOptimal -> 2 - targetQuantity :: Maybe BigNum + targetQuantity :: BigInt targetQuantity = - BigNum.mul lens.requiredQuantity (BigNum.fromInt targetMultiplier) + lens.requiredQuantity * (BigInt.fromInt targetMultiplier) -------------------------------------------------------------------------------- -- Round-robin processing @@ -473,20 +464,18 @@ selectRandomWithPriority utxoIndex filters = -- Helpers -------------------------------------------------------------------------------- -showAssetClassWithQuantity :: AssetClass -> BigNum -> String +showAssetClassWithQuantity :: AssetClass -> BigInt -> String showAssetClassWithQuantity (AssetClass cs tn) quantity = - "(Asset (" <> displayCurrencySymbol <> "," <> displayAssetName <> ", " - <> displayQuantity - <> "))" + "(Asset (" <> displayCurrencySymbol <> displayTokenName <> displayQuantity where displayCurrencySymbol :: String displayCurrencySymbol = - "cs: " <> byteArrayToHex (unwrap $ encodeCbor cs) + "cs: " <> show cs <> ", " - displayAssetName :: String - displayAssetName = - "tn: " <> byteArrayToHex (AssetName.unAssetName tn) + displayTokenName :: String + displayTokenName = + "tn: " <> byteArrayToHex (unAssetName tn) <> ", " displayQuantity :: String displayQuantity = - "quantity: " <> BigNum.toString quantity + "quantity: " <> BigInt.toString quantity <> "))" diff --git a/src/Internal/BalanceTx/Collateral.purs b/src/Internal/BalanceTx/Collateral.purs index 206b0fb68..faef30a39 100644 --- a/src/Internal/BalanceTx/Collateral.purs +++ b/src/Internal/BalanceTx/Collateral.purs @@ -132,5 +132,5 @@ nonAdaAsset = throwOnOverflow :: forall a. Maybe a -> BalanceTxM a throwOnOverflow = case _ of - Nothing -> throwError NumericOverflowError + Nothing -> throwError (NumericOverflowError Nothing) Just a -> pure a diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index ea8bbe406..7b467bf86 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -49,6 +49,7 @@ import Ctl.Internal.QueryM.Ogmios ) , TxEvaluationFailure(UnparsedError, AdditionalUtxoOverlap, ScriptFailures) ) as Ogmios +import Ctl.Internal.Types.Val (Val) import Data.Array (catMaybes, filter, uncons) as Array import Data.Bifunctor (bimap) import Data.Either (Either(Left, Right), either, isLeft) @@ -82,7 +83,7 @@ data BalanceTxError | ReindexRedeemersError UnindexedRedeemer | UtxoLookupFailedFor TransactionInput | UtxoMinAdaValueCalculationFailed - | NumericOverflowError + | NumericOverflowError (Maybe Val) derive instance Generic BalanceTxError _ @@ -133,8 +134,9 @@ explainBalanceTxError = case _ of <> bugTrackerLink UtxoMinAdaValueCalculationFailed -> "Could not calculate min ADA for UTxO" - NumericOverflowError -> - "Could not compute output value due to numeric overflow. Decrease the quantity of assets" + NumericOverflowError mbVal -> + "Could not compute output value due to numeric overflow. Decrease the quantity of assets. Value: " + <> show mbVal where prettyValue :: String -> Value -> String prettyValue str = pprintValue >>> pprintTagSet str diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index d92dfc06f..5da02adac 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -149,7 +149,7 @@ type RedeemersContext = mkRedeemersContext :: Transaction -> RedeemersContext mkRedeemersContext (Transaction { body: TransactionBody { inputs, mint, withdrawals, certs } }) = - { inputs: inputs + { inputs: Set.toUnfoldable $ Set.fromFoldable inputs , mintingPolicyHashes: Set.toUnfoldable $ Map.keys $ unwrap $ fromMaybe (wrap Map.empty) diff --git a/src/Internal/BalanceTx/UnattachedTx.purs b/src/Internal/BalanceTx/UnattachedTx.purs index da035197b..f613e8d4a 100644 --- a/src/Internal/BalanceTx/UnattachedTx.purs +++ b/src/Internal/BalanceTx/UnattachedTx.purs @@ -5,6 +5,7 @@ module Ctl.Internal.BalanceTx.UnattachedTx , EvaluatedTx , indexTx , _transaction + , _redeemers ) where import Prelude @@ -49,3 +50,7 @@ indexTx { transaction, datums, redeemers } = do _transaction :: forall (redeemer :: Type). Lens' (UnattachedTx redeemer) Transaction _transaction = prop (Proxy :: Proxy "transaction") + +_redeemers + :: forall (redeemer :: Type). Lens' (UnattachedTx redeemer) (Array redeemer) +_redeemers = prop (Proxy :: Proxy "redeemers") diff --git a/src/Internal/CoinSelection/UtxoIndex.purs b/src/Internal/CoinSelection/UtxoIndex.purs index 5bae489e9..06a900349 100644 --- a/src/Internal/CoinSelection/UtxoIndex.purs +++ b/src/Internal/CoinSelection/UtxoIndex.purs @@ -422,6 +422,7 @@ checkUtxoIndexMinimal utxoIndex = txOutputHasAsset :: TransactionOutput -> Asset -> Boolean txOutputHasAsset _ AdaAsset = true + -- ^ TODO: shouldn't we check if it is greater than 0? txOutputHasAsset (TransactionOutput { amount }) (asset) = Value.valueOf asset amount >= BigNum.one diff --git a/src/Internal/Types/Val.purs b/src/Internal/Types/Val.purs index 704c54fb3..46dad5cc5 100644 --- a/src/Internal/Types/Val.purs +++ b/src/Internal/Types/Val.purs @@ -20,6 +20,7 @@ import Cardano.Types.MultiAsset as MultiAsset import Data.Array (cons) import Data.Bifunctor (bimap) import Data.ByteArray (byteArrayToHex) +import Data.Foldable (all) import Data.FoldableWithIndex (foldrWithIndex) import Data.Generic.Rep (class Generic) import Data.Lattice (class JoinSemilattice, class MeetSemilattice) @@ -27,7 +28,7 @@ import Data.Log.Tag (TagSet, tag, tagSetTag) import Data.Log.Tag as TagSet import Data.Map (Map) import Data.Map as Map -import Data.Maybe (Maybe) +import Data.Maybe (Maybe, fromMaybe) import Data.Newtype (unwrap, wrap) import Data.Show.Generic (genericShow) import Data.These (These(This, That, Both)) @@ -64,9 +65,7 @@ instance Split Val where data Val = Val BigInt ValAssets instance Eq Val where - eq a b = - -- the second part is to check for empty outer Map - toValue a == toValue b && valueAssets a == valueAssets b + eq = checkBinRel (==) instance Semigroup Val where append (Val a ma) (Val b mb) = Val (a + b) (unionWithNonAda add ma mb) @@ -87,9 +86,42 @@ instance MeetSemilattice Val where type ValAssets = Map ScriptHash (Map AssetName BigInt) +leq :: Val -> Val -> Boolean +leq = checkBinRel (<=) + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkBinRel +-- Check whether a binary relation holds for value pairs of two `Value` maps, +-- supplying 0 where a key is only present in one of them. +checkBinRel :: (BigInt -> BigInt -> Boolean) -> Val -> Val -> Boolean +checkBinRel f l r = + let + unThese :: These BigInt BigInt -> Boolean + unThese k' = case k' of + This a -> f a zero + That b -> f zero b + Both a b -> f a b + in + checkPred unThese l r + +-- https://playground.plutus.iohkdev.io/doc/haddock/plutus-ledger-api/html/src/Plutus.V1.Ledger.Value.html#checkPred +checkPred :: (These BigInt BigInt -> Boolean) -> Val -> Val -> Boolean +checkPred f (Val l ls) (Val r rs) = + let + inner :: Map AssetName (These BigInt BigInt) -> Boolean + inner = all f -- this "all" may need to be checked? + in + f (Both l r) && all inner (unionNonAda ls rs) -- this "all" may need to be checked? + +getCoin :: Val -> BigInt +getCoin (Val c _) = c + getAssets :: Val -> Map ScriptHash (Map AssetName BigInt) getAssets (Val _ ma) = ma +getAssetQuantity :: AssetClass -> Val -> BigInt +getAssetQuantity (AssetClass sh tn) val = + fromMaybe zero $ Map.lookup sh (getAssets val) >>= Map.lookup tn + valueAssets :: Val -> Array (AssetClass /\ BigInt) valueAssets (Val _ ma) = Map.toUnfoldable ma >>= \(scriptHash /\ mp) -> diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index 953fdea20..f4e7cbe89 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -27,6 +27,7 @@ import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex) import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex import Ctl.Internal.Hashing (blake2b224Hash) import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Ctl.Internal.Types.Val as Val import Data.ByteArray (byteArrayFromAscii) import Data.Foldable (fold, foldMap) import Data.Generic.Rep (class Generic) @@ -83,7 +84,7 @@ prop_performMultiAssetSelection_empty :: SelectionStrategy -> ArbitraryUtxoIndex -> CoinSelectionTestM Result prop_performMultiAssetSelection_empty strategy utxoIndex = assertEquals (mkSelectionState $ unwrap utxoIndex) <$> - performMultiAssetSelection strategy (unwrap utxoIndex) Value.empty + performMultiAssetSelection strategy (unwrap utxoIndex) mempty runSelectionTestWithFixture :: (SelectionStrategy -> SelFixture) -> String -> TestPlanM (Aff Unit) Unit @@ -94,7 +95,8 @@ runSelectionTestWithFixture mkFixture testLabel = td <- liftEffect $ selTestDataFromFixture (mkFixture strategy) selectedUtxos <- _.selectedUtxos <<< unwrap <$> - performMultiAssetSelection td.strategy td.utxoIndex td.requiredValue + performMultiAssetSelection td.strategy td.utxoIndex + (Val.fromValue td.requiredValue) liftEffect $ td.selectedValue `shouldEqual` unsafePartial From 43d1af9e496ffbedf41c59f84c71093f7716d0ee Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 5 Apr 2024 04:19:45 +0400 Subject: [PATCH 082/373] Fix TextEnvelope decoding --- spago-packages.nix | 12 +-- src/Internal/BalanceTx/Error.purs | 7 +- src/Internal/Cardano/TextEnvelope.purs | 8 +- src/Internal/Types/Cbor.purs | 141 +++++++++++++++++++++++++ 4 files changed, 159 insertions(+), 9 deletions(-) create mode 100644 src/Internal/Types/Cbor.purs diff --git a/spago-packages.nix b/spago-packages.nix index e58c51b0d..2ec06b0cd 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -247,11 +247,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "640a429eb0e57c3bfc8de5e3fdafa86491df0e7c"; + version = "ed634b0863b7c443a35a9624a879e92a63057388"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "640a429eb0e57c3bfc8de5e3fdafa86491df0e7c"; - sha256 = "17xg5ggnx719ac2iyij5mpzcy4b7vxgx5qvb7515qhz1035lv6nm"; + rev = "ed634b0863b7c443a35a9624a879e92a63057388"; + sha256 = "1js08xgwy6bvyx3z1hkzszrdb2ix6zxjjb4bz1gxxkwsqb9bjn3z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -259,11 +259,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "147708a1398f2165c5babe083ba8ac7b095b267b"; + version = "651f8e12b59574c7525f9015093c9c05c81ad0b4"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "147708a1398f2165c5babe083ba8ac7b095b267b"; - sha256 = "1nmad9jwzwd510zd0cm6y2a6yfrlfkljr7xq1kfg6186lq3cjjs4"; + rev = "651f8e12b59574c7525f9015093c9c05c81ad0b4"; + sha256 = "0w151jb4wl5yjvficc1ipkv3migzhlka78pla757w512zczw461q"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 7b467bf86..6b02cbadb 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -114,8 +114,11 @@ explainBalanceTxError = case _ of <> show coinsPerUtxoUnit <> "\nTransaction output: " <> show txOut - ExUnitsEvaluationFailed _ _ -> - "Script evaluation failure while trying to estimate ExUnits" + ExUnitsEvaluationFailed tx err -> + "Script evaluation failure while trying to estimate ExUnits. Tx: " + <> show tx + <> ", error: " + <> show err InsufficientUtxoBalanceToCoverAsset asset -> "Insufficient UTxO balance to cover asset named " <> asset diff --git a/src/Internal/Cardano/TextEnvelope.purs b/src/Internal/Cardano/TextEnvelope.purs index a161871da..2842e802c 100644 --- a/src/Internal/Cardano/TextEnvelope.purs +++ b/src/Internal/Cardano/TextEnvelope.purs @@ -17,6 +17,7 @@ import Aeson (class DecodeAeson, decodeAeson, parseJsonStringToAeson) import Cardano.Types.Language (Language(..)) import Cardano.Types.PlutusScript (PlutusScript(..)) import Control.Alt ((<|>)) +import Ctl.Internal.Types.Cbor (toByteArray) import Data.ByteArray (ByteArray, hexToByteArray) import Data.Either (hush) import Data.Maybe (Maybe(Nothing)) @@ -67,13 +68,18 @@ newtype TextEnvelope = derive instance Newtype TextEnvelope _ +decodeCborHexToBytes :: String -> Maybe ByteArray +decodeCborHexToBytes cborHex = do + cborBa <- hexToByteArray cborHex + hush $ toByteArray $ wrap $ wrap cborBa + decodeTextEnvelope :: String -> Maybe TextEnvelope decodeTextEnvelope json = do aeson <- hush $ parseJsonStringToAeson json { "type": type_, description, cborHex } <- hush $ decodeAeson aeson :: _ TextEnvelopeRaw - ba <- hexToByteArray cborHex + ba <- decodeCborHexToBytes cborHex pure $ wrap { type_, description, bytes: ba } plutusScriptFromEnvelope diff --git a/src/Internal/Types/Cbor.purs b/src/Internal/Types/Cbor.purs new file mode 100644 index 000000000..c8f94ebe5 --- /dev/null +++ b/src/Internal/Types/Cbor.purs @@ -0,0 +1,141 @@ +-- | A partial CBOR decoder, based on [RFC 8949](https://www.rfc-editor.org/rfc/rfc8949.html) +module Ctl.Internal.Types.Cbor + ( Cbor(Cbor) + , RawCborType + , CborType(ByteStringType) + , CborParseError + ( UnknownType + , UnknownAdditionalInformation + , ByteArrayTooShort + ) + , Parser + , runParser + , cborType + , takeN + , takeN' + , toByteArray + , fromBytes + ) where + +import Prelude + +import Cardano.Types.CborBytes (CborBytes(..)) +import Contract.Prelude (foldl) +import Control.Monad.Except (Except, runExcept, throwError) +import Control.Monad.State.Trans (StateT, evalStateT, get, put) +import Data.ByteArray (ByteArray(ByteArray), byteArrayToIntArray, byteLength, subarray) +import Data.Either (Either) +import Data.Newtype (class Newtype) +import Data.UInt (UInt, shl, zshr, (.&.), (.|.)) +import Data.UInt as UInt + +-- | A CBOR data item is encoded as a byte string +newtype Cbor = Cbor CborBytes + +derive instance Newtype Cbor _ +derive newtype instance Show Cbor +derive newtype instance Eq Cbor +derive newtype instance Ord Cbor +derive newtype instance Semigroup Cbor +derive newtype instance Monoid Cbor + +-- | The initial byte of the head of the data item +type RawCborType = UInt + +-- | A structured representation of the head of the data item +data CborType = ByteStringType UInt + +data CborParseError + = UnknownType UInt + | UnknownAdditionalInformation UInt + | ByteArrayTooShort ByteArray Int + +instance Show CborParseError where + show = case _ of + UnknownType ty -> "(UnknownType " <> show ty <> ")" + UnknownAdditionalInformation info -> "(UnknownAdditionalInformation " + <> show + info + <> ")" + ByteArrayTooShort bs extra -> "(ByteArrayTooShort " <> show bs + <> " " + <> show extra + <> ")" + +type Parser :: Type -> Type +type Parser a = StateT ByteArray (Except CborParseError) a + +-- | Same as `takeN'`, except returns `Array UInt` +takeN :: UInt -> Parser (Array UInt) +takeN n = map UInt.fromInt <<< byteArrayToIntArray <$> takeN' n + +-- | Consume and return n bytes from the input, throwing an exception if there +-- | is not enough +takeN' :: UInt -> Parser ByteArray +takeN' = UInt.toInt >>> \n -> do + ba <- get + when (n > byteLength ba) do + throwError $ ByteArrayTooShort ba n + put $ subarray n (byteLength ba) ba + pure $ subarray 0 n ba + +-- | Convert an array of bytes in network order into an unsigned integer +fromBytes :: Array UInt -> UInt +fromBytes = foldl (\acc b -> shl acc (UInt.fromInt 8) .|. b) zero + +-- | Read the initial byte of the head of the data item +readType :: Parser RawCborType +readType = fromBytes <$> takeN one + +-- | The initial byte of the head of the data item contains a major type and +-- | additional information +-- | +-- | https://www.rfc-editor.org/rfc/rfc8949.html#section-3-2 +partitionType + :: RawCborType -> { majorType :: UInt, additionalInformation :: UInt } +partitionType u = + { -- The 3 most signficant bits + majorType: u `zshr` UInt.fromInt 5 + -- The 5 least signficant bits + , additionalInformation: u .&. UInt.fromInt 31 + } + +-- | Decode the rest of the head of the data item, given the first byte, into a +-- | `CborType` +-- | +-- | https://www.rfc-editor.org/rfc/rfc8949.html#name-specification-of-the-cbor-e +decodeType :: RawCborType -> Parser CborType +decodeType rawCborType = + -- https://www.rfc-editor.org/rfc/rfc8949.html#name-major-types + case UInt.toInt majorType of + 2 -> ByteStringType <$> decodeByteStringLength + _ -> throwError $ UnknownType majorType + where + { majorType + , additionalInformation + } = partitionType rawCborType + + -- Below 24, the additional information is directly used as the length. + -- Otherwise, it represents varying sizes of unsigned integers to read from + -- the head. + decodeByteStringLength :: Parser UInt + decodeByteStringLength = + case UInt.toInt additionalInformation of + v | v < 24 -> pure additionalInformation + 24 -> takeN (UInt.fromInt 1) <#> fromBytes + 25 -> takeN (UInt.fromInt 2) <#> fromBytes + 26 -> takeN (UInt.fromInt 4) <#> fromBytes + 27 -> takeN (UInt.fromInt 8) <#> fromBytes + _ -> throwError $ UnknownAdditionalInformation additionalInformation + +-- | Decodes the head of the data item into `CborType` +cborType :: Parser CborType +cborType = readType >>= decodeType + +runParser :: forall (a :: Type). Parser a -> Cbor -> Either CborParseError a +runParser parser (Cbor (CborBytes ba)) = runExcept $ flip evalStateT ba $ parser + +-- | Extract a `ByteArray` if the `Cbor` was a byte string +toByteArray :: Cbor -> Either CborParseError ByteArray +toByteArray = runParser $ cborType >>= case _ of + ByteStringType length -> takeN' length From 015670b5fc36aa3c2a0eb4fb9294c3a5817b42cc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 5 Apr 2024 04:35:45 +0400 Subject: [PATCH 083/373] Fix linearFee order of arguments --- src/Internal/Serialization/MinFee.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index a8dafe45b..a2faa9f28 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -46,8 +46,8 @@ calculateMinFeeCsl (ProtocolParameters pparams) selfSigners txNoSigs = do let cslTx = Transaction.toCsl tx let cslLinearFee = linearFee_new - (unwrap $ BigNum.fromUInt pparams.txFeeFixed) (unwrap $ BigNum.fromUInt pparams.txFeePerByte) + (unwrap $ BigNum.fromUInt pparams.txFeeFixed) let fee = minFee cslTx cslLinearFee let exUnitPrices = pparams.prices From fa24621f3dc39c963e41be78ec690589fffcd089 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 5 Apr 2024 20:59:01 +0400 Subject: [PATCH 084/373] Fix use of CSL's hashScriptData: datums argument is optional --- spago.dhall | 1 + src/Internal/Transaction.purs | 10 +++++++++- src/Internal/Types/Cbor.purs | 7 ++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/spago.dhall b/spago.dhall index 092d26dc1..d5ddc8a08 100644 --- a/spago.dhall +++ b/spago.dhall @@ -50,6 +50,7 @@ You can edit this file as you like. , "js-date" , "lattice" , "lists" + , "literals" , "maybe" , "media-types" , "monad-logger" diff --git a/src/Internal/Transaction.purs b/src/Internal/Transaction.purs index 4b065a8a3..9f8961369 100644 --- a/src/Internal/Transaction.purs +++ b/src/Internal/Transaction.purs @@ -29,6 +29,7 @@ import Cardano.Types.TransactionBody (TransactionBody(TransactionBody)) import Cardano.Types.TransactionWitnessSet ( TransactionWitnessSet(TransactionWitnessSet) ) +import Data.Array as Array import Data.Foldable (null) import Data.Map (Map) import Data.Map as Map @@ -36,6 +37,8 @@ import Data.Maybe (Maybe(Just)) import Data.Newtype (over, unwrap) import Data.Profunctor.Strong ((***)) import Effect (Effect) +import Literals.Undefined (undefined) +import Unsafe.Coerce (unsafeCoerce) -- | Set the `Transaction` body's script data hash. NOTE: Must include *all* of -- | the datums and redeemers for the given transaction @@ -64,7 +67,12 @@ setScriptDataHash costModels rs ds tx@(Transaction { body, witnessSet }) redeemersCsl = packListContainer $ Redeemer.toCsl <$> rs datumsCsl = - packListContainer $ PlutusData.toCsl <$> ds + if Array.null ds + -- This is a hack. The argument datums argument is optional and is + -- supposed to not be provided if there are no datums. + -- TODO: fix upstream + then unsafeCoerce undefined + else packListContainer $ PlutusData.toCsl <$> ds scriptDataHash = ScriptDataHash $ hashScriptData redeemersCsl costMdlsCsl datumsCsl pure $ over Transaction diff --git a/src/Internal/Types/Cbor.purs b/src/Internal/Types/Cbor.purs index c8f94ebe5..561b5bd92 100644 --- a/src/Internal/Types/Cbor.purs +++ b/src/Internal/Types/Cbor.purs @@ -23,7 +23,12 @@ import Cardano.Types.CborBytes (CborBytes(..)) import Contract.Prelude (foldl) import Control.Monad.Except (Except, runExcept, throwError) import Control.Monad.State.Trans (StateT, evalStateT, get, put) -import Data.ByteArray (ByteArray(ByteArray), byteArrayToIntArray, byteLength, subarray) +import Data.ByteArray + ( ByteArray(ByteArray) + , byteArrayToIntArray + , byteLength + , subarray + ) import Data.Either (Either) import Data.Newtype (class Newtype) import Data.UInt (UInt, shl, zshr, (.&.), (.|.)) From 5e150b9804d627363877b6b76101a84e91c1c056 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 10 Apr 2024 16:57:41 +0400 Subject: [PATCH 085/373] Fix formatting --- doc/using-from-js.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/using-from-js.md b/doc/using-from-js.md index b3f3b4471..bd6f59256 100644 --- a/doc/using-from-js.md +++ b/doc/using-from-js.md @@ -38,7 +38,7 @@ SDKs must be bundled to be usable in the browser. We support two bundlers: esbui ## Defining SDK APIs in PureScript -Developers should start from reading [this PureScript guide](https://book.purescript.org/chapter10.html#calling-purescript-from-javascript) that shows how to call PureScript from JS. +Developers should start from reading [this PureScript guide](https://book.purescript.org/chapter10.html#calling-purescript-from-javascript) that shows how to call PureScript from JS. Suppose we want to wrap a single `Contract` into an interface to call it from JS with Nami wallet. From 9918ad51d6a7c9c2a4d4b59065d7e0d6fb0b0625 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 10 Apr 2024 17:52:14 +0400 Subject: [PATCH 086/373] Fix formatting --- examples/PlutusV2/ReferenceScripts.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs index 3612f1615..27d649e1c 100644 --- a/examples/PlutusV2/ReferenceScripts.purs +++ b/examples/PlutusV2/ReferenceScripts.purs @@ -43,7 +43,7 @@ example :: ContractParams -> Effect Unit example cfg = launchAff_ do runContract cfg contract --- NOTE: If you are looking for an example of the most common case of +-- NOTE: If you are looking for an example of the most common case of -- using reference scripts by referencing an output and not spending it, -- you likely need to look at the example in `ReferenceInputsAndScripts.purs`. contract :: Contract Unit From d3b67e73383e4a4feb9c2ae2e81a239f0f88896c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 13 Apr 2024 00:00:02 +0400 Subject: [PATCH 087/373] Fix most tests --- package.json | 1 - packages.dhall | 4 +- src/Internal/BalanceTx/BalanceTx.purs | 5 +- src/Internal/BalanceTx/CoinSelection.purs | 4 - src/Internal/Cardano/TextEnvelope.purs | 11 +- src/Internal/Contract/AwaitTxConfirmed.purs | 13 +- src/Internal/ProcessConstraints.purs | 2 +- src/Internal/ProcessConstraints/Error.purs | 5 +- src/Internal/QueryM.purs | 4 +- src/Internal/QueryM/Kupo.purs | 9 +- src/Internal/QueryM/Ogmios.purs | 15 ++- src/Internal/Service/Blockfrost.purs | 12 +- test/Deserialization.purs | 126 -------------------- test/Fixtures.purs | 98 ++++++++------- test/Hashing.purs | 4 +- test/Plutip/Contract.purs | 3 +- test/Serialization.purs | 12 -- test/Unit.purs | 22 ++-- 18 files changed, 107 insertions(+), 243 deletions(-) delete mode 100644 test/Deserialization.purs diff --git a/package.json b/package.json index 8a81111c5..779d200c2 100755 --- a/package.json +++ b/package.json @@ -33,7 +33,6 @@ "dependencies": { "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.8", "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", "@mlabs-haskell/json-bigint": "2.0.0", diff --git a/packages.dhall b/packages.dhall index cb07446ea..3371c2a5d 100644 --- a/packages.dhall +++ b/packages.dhall @@ -280,7 +280,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "ed634b0863b7c443a35a9624a879e92a63057388" + , version = "6636bd0fa48f3608ce3988d55384b00756aa0375" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "651f8e12b59574c7525f9015093c9c05c81ad0b4" + , version = "52f469cdfd812e5d6a8420454e7184fd45084607" } , cardano-message-signing = { dependencies = diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 72440e788..844ec93ce 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -31,7 +31,7 @@ import Cardano.Types.Value , pprintValue ) import Cardano.Types.Value as Value -import Contract.Log (logError', logWarn') +import Contract.Log (logWarn') import Control.Monad.Except (class MonadError) import Control.Monad.Except.Trans (except, runExceptT) import Control.Monad.Logger.Class (info) as Logger @@ -179,8 +179,6 @@ balanceTxWithConstraints -> Contract (Either BalanceTxError Transaction) balanceTxWithConstraints transaction_ extraUtxos constraintsBuilder = do - logError' $ show transaction - logError' $ show extraUtxos pparams <- getProtocolParameters withBalanceTxConstraints constraintsBuilder $ runExceptT do @@ -489,7 +487,6 @@ runBalancer p = do where performCoinSelection :: BalanceTxM SelectionState performCoinSelection = do - liftEffect $ Console.log "performCoinSelection" let txBody :: TransactionBody txBody = setTxChangeOutputs changeOutputs transaction ^. _transaction diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index c1991a531..9f211da61 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -126,10 +126,6 @@ performMultiAssetSelection -> Val -> m SelectionState performMultiAssetSelection strategy utxoIndex requiredValue = do - liftEffect $ Console.log "performMultiAssetSelection" - liftEffect $ Console.log $ show utxoIndex - liftEffect $ Console.log $ show requiredValue - liftEffect $ Console.log $ show availableValue case requiredValue `Val.leq` availableValue of true -> do runRoundRobinM (mkSelectionState utxoIndex) selectors diff --git a/src/Internal/Cardano/TextEnvelope.purs b/src/Internal/Cardano/TextEnvelope.purs index 2842e802c..48e76e78f 100644 --- a/src/Internal/Cardano/TextEnvelope.purs +++ b/src/Internal/Cardano/TextEnvelope.purs @@ -14,22 +14,21 @@ module Ctl.Internal.Cardano.TextEnvelope import Prelude import Aeson (class DecodeAeson, decodeAeson, parseJsonStringToAeson) -import Cardano.Types.Language (Language(..)) -import Cardano.Types.PlutusScript (PlutusScript(..)) +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.PlutusScript as PlutusScript import Control.Alt ((<|>)) import Ctl.Internal.Types.Cbor (toByteArray) import Data.ByteArray (ByteArray, hexToByteArray) import Data.Either (hush) import Data.Maybe (Maybe(Nothing)) import Data.Newtype (class Newtype, wrap) -import Data.Tuple.Nested ((/\)) data TextEnvelopeType = PlutusScriptV1 | PlutusScriptV2 | PaymentSigningKeyShelleyed25519 | StakeSigningKeyShelleyed25519 - | Other String -- TextEnvelope we can parse from String, but cannot use now + | Other String derive instance Eq TextEnvelopeType @@ -89,8 +88,8 @@ plutusScriptFromEnvelope (TextEnvelope envelope) = where plutusScriptV1FromEnvelope = do unless (envelope.type_ == PlutusScriptV1) Nothing - pure $ PlutusScript $ envelope.bytes /\ PlutusV1 + pure $ PlutusScript.plutusV1Script $ wrap envelope.bytes plutusScriptV2FromEnvelope = do unless (envelope.type_ == PlutusScriptV2) Nothing - pure $ PlutusScript $ envelope.bytes /\ PlutusV2 + pure $ PlutusScript.plutusV2Script $ wrap envelope.bytes diff --git a/src/Internal/Contract/AwaitTxConfirmed.purs b/src/Internal/Contract/AwaitTxConfirmed.purs index 3492215a2..32afcbd80 100644 --- a/src/Internal/Contract/AwaitTxConfirmed.purs +++ b/src/Internal/Contract/AwaitTxConfirmed.purs @@ -77,12 +77,13 @@ awaitTxConfirmedWithTimeout timeoutSeconds txHash = do waitForConfirmation = do { delay: delayMs } <- asks (_.timeParams >>> _.awaitTxConfirmed) tryUntilTrue delayMs (doesTxExist txHash) - confirmTxDelay <- - asks _.backend <#> (getBlockfrostBackend >=> _.confirmTxDelay) - isBlockfrost <- asks _.backend <#> getBlockfrostBackend >>> isJust - when isBlockfrost do - tryUntilTrue delayMs (utxosPresentForTxHash txHash) - for_ confirmTxDelay (liftAff <<< delay <<< fromDuration) + do + confirmTxDelay <- + asks _.backend <#> (getBlockfrostBackend >=> _.confirmTxDelay) + isBlockfrost <- asks _.backend <#> getBlockfrostBackend >>> isJust + when isBlockfrost do + tryUntilTrue delayMs (utxosPresentForTxHash txHash) + for_ confirmTxDelay (liftAff <<< delay <<< fromDuration) whenM ( asks $ _.synchronizationParams >>> _.syncWalletWithTransaction diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index a9aa159a1..8a37f0b36 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -875,7 +875,7 @@ attachToCps attachToCps handler object = do tx <- use _cpsTransaction newTx <- liftEffect $ handler object tx - (.=) _cpsTransaction newTx + _cpsTransaction .= newTx -- Attaches datum to the transaction and to Array of datums in the state. addDatum diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index ecb490fc3..519025660 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -12,6 +12,7 @@ import Cardano.Types.Int as Int import Cardano.Types.NativeScript (pprintNativeScript) import Cardano.Types.PlutusData (PlutusData) import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) +import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.ScriptHash (ScriptHash) import Cardano.Types.StakePubKeyHash (StakePubKeyHash) import Cardano.Types.TransactionInput (TransactionInput(TransactionInput)) @@ -160,8 +161,8 @@ explainMkUnbalancedTxError = case _ of prettyAssetName = fromAssetName byteArrayToHex show prettyPlutusScript :: PlutusScript -> String - prettyPlutusScript (PlutusScript (code /\ lang)) = - show lang <> ": " <> byteArrayToHex code + prettyPlutusScript ps@(PlutusScript (_ /\ lang)) = + show lang <> ": " <> byteArrayToHex (unwrap $ PlutusScript.getBytes ps) prettyTxIn :: TransactionInput -> String prettyTxIn (TransactionInput ti) = diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 8c05539ca..6fd3fa298 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -65,6 +65,7 @@ import Affjax.ResponseFormat as Affjax.ResponseFormat import Affjax.StatusCode as Affjax.StatusCode import Cardano.Types (PlutusScript) import Cardano.Types.CborBytes (CborBytes) +import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.TransactionHash (TransactionHash) import Control.Alt (class Alt) import Control.Alternative (class Alternative) @@ -486,7 +487,8 @@ postAeson url body = Affjax.request $ Affjax.defaultRequest -- instance (there are some brutal cyclical dependency issues trying to -- write an instance in the `Types.*` modules) scriptToAeson :: PlutusScript -> Aeson -scriptToAeson = encodeAeson <<< byteArrayToHex <<< fst <<< unwrap +scriptToAeson = encodeAeson <<< byteArrayToHex <<< unwrap <<< + PlutusScript.getBytes -------------------------------------------------------------------------------- -- Type-safe `WebSocket` diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index f4709cdfb..6d4f8f4b8 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -49,6 +49,7 @@ import Cardano.Types.BigNum (toString) as BigNum import Cardano.Types.CborBytes (CborBytes) import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash, OutputDatum)) +import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) import Cardano.Types.Value as Value import Contract.Log (logTrace') @@ -418,11 +419,11 @@ instance DecodeAeson KupoScriptRef where NativeScriptRef <$> note (TypeMismatch "NativeScript") (decodeCbor scriptBytes) PlutusV1Script -> - pure $ PlutusScriptRef $ PlutusScript - (unwrap scriptBytes /\ PlutusV1) + pure $ PlutusScriptRef $ PlutusScript.plutusV1Script $ wrap $ + unwrap scriptBytes PlutusV2Script -> - pure $ PlutusScriptRef $ PlutusScript - (unwrap scriptBytes /\ PlutusV2) + pure $ PlutusScriptRef $ PlutusScript.plutusV2Script $ wrap $ + unwrap scriptBytes ------------------------------------------------------------------------------- -- `isTxConfirmed` response parsing diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index ffbbaef41..cb4dbd02a 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -126,6 +126,7 @@ import Cardano.Types.NativeScript ) ) import Cardano.Types.PlutusScript (PlutusScript(..)) +import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.PoolMetadata (PoolMetadata(..)) import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) import Cardano.Types.Relay (Relay(..)) @@ -1195,10 +1196,16 @@ instance EncodeAeson AdditionalUtxoSet where -- NOTE: We omit the cbor argument. , "json": (encodeNativeScript s) } - encodeScriptRef (PlutusScriptRef (PlutusScript (s /\ PlutusV1))) = - encodeAeson { "language": "plutus:v1", "cbor": byteArrayToHex s } - encodeScriptRef (PlutusScriptRef (PlutusScript (s /\ PlutusV2))) = - encodeAeson { "language": "plutus:v2", "cbor": byteArrayToHex s } + encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (s /\ PlutusV1)))) = + encodeAeson + { "language": "plutus:v1" + , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps + } + encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (s /\ PlutusV2)))) = + encodeAeson + { "language": "plutus:v2" + , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps + } encodeValue :: Value -> Aeson encodeValue value = encodeMap $ map encodeMap $ Map.union adaPart nonAdaPart diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 65a5686c2..de9191885 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -91,6 +91,7 @@ import Cardano.Types , PlutusData , PlutusScript(PlutusScript) , PoolPubKeyHash + , RawBytes(RawBytes) , ScriptHash , StakePubKeyHash , Transaction @@ -127,6 +128,7 @@ import Cardano.Types.NativeScript ) import Cardano.Types.NetworkId (NetworkId) import Cardano.Types.OutputDatum (OutputDatum(OutputDatum, OutputDatumHash)) +import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.PoolPubKeyHash as PoolPubKeyHash import Cardano.Types.RewardAddress as RewardAddress import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) @@ -584,10 +586,10 @@ getScriptByHash scriptHash = runExceptT $ runMaybeT do NativeScriptRef <$> MaybeT (ExceptT getNativeScriptByHash) PlutusV1Script -> - PlutusScriptRef <<< PlutusScript <<< (_ /\ PlutusV1) <$> + PlutusScriptRef <<< PlutusScript.plutusV1Script <$> MaybeT (ExceptT getPlutusScriptCborByHash) PlutusV2Script -> - PlutusScriptRef <<< PlutusScript <<< (_ /\ PlutusV2) <$> + PlutusScriptRef <<< PlutusScript.plutusV2Script <$> MaybeT (ExceptT getPlutusScriptCborByHash) where getNativeScriptByHash @@ -598,11 +600,13 @@ getScriptByHash scriptHash = runExceptT $ runMaybeT do handle404AsNothing (handleBlockfrostResponse response) getPlutusScriptCborByHash - :: BlockfrostServiceM (Either ClientError (Maybe ByteArray)) + :: BlockfrostServiceM (Either ClientError (Maybe RawBytes)) getPlutusScriptCborByHash = blockfrostGetRequest (PlutusScriptCborByHash scriptHash) <#> \response -> handle404AsNothing - (unwrapBlockfrostCbor <$> handleBlockfrostResponse response) + ( map wrap <<< unwrapBlockfrostCbor <$> handleBlockfrostResponse + response + ) getScriptInfo :: ScriptHash diff --git a/test/Deserialization.purs b/test/Deserialization.purs deleted file mode 100644 index 7c5a9d0dc..000000000 --- a/test/Deserialization.purs +++ /dev/null @@ -1,126 +0,0 @@ -module Test.Ctl.Deserialization (suite) where - -import Prelude - -import Cardano.AsCbor (class AsCbor, decodeCbor, encodeCbor) -import Cardano.Types (TransactionWitnessSet) -import Contract.Prim.ByteArray (ByteArray) -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Data.Maybe (Maybe(Just)) -import Data.Newtype (wrap) -import Effect.Aff (Aff) -import Mote (group, test) -import Test.Ctl.Fixtures - ( int1 - , mint0 - , mint1 - , nativeScriptFixture1 - , nativeScriptFixture2 - , nativeScriptFixture3 - , nativeScriptFixture4 - , nativeScriptFixture5 - , nativeScriptFixture6 - , nativeScriptFixture7 - , plutusDataFixture1 - , plutusDataFixture2 - , plutusDataFixture3 - , plutusDataFixture4 - , plutusDataFixture5 - , plutusDataFixture6 - , plutusDataFixture7 - , plutusDataFixture8 - , txFixture1 - , txFixture2 - , txFixture3 - , txFixture4 - , txFixture5 - , txFixture6 - , txInputFixture1 - , txOutputFixture1 - , witnessSetFixture1 - , witnessSetFixture2 - , witnessSetFixture2Value - , witnessSetFixture3 - , witnessSetFixture3Value - , witnessSetFixture4 - ) -import Test.Spec.Assertions (shouldEqual) -import Type.Proxy (Proxy(Proxy)) - -suite :: TestPlanM (Aff Unit) Unit -suite = do - group "deserialization and serialization roundtrip" $ do - group "NativeScript" do - roundtripTest "nativeScriptFixture1" nativeScriptFixture1 - roundtripTest "nativeScriptFixture1" nativeScriptFixture2 - roundtripTest "nativeScriptFixture3" nativeScriptFixture3 - roundtripTest "nativeScriptFixture4" nativeScriptFixture4 - roundtripTest "nativeScriptFixture5" nativeScriptFixture5 - roundtripTest "nativeScriptFixture6" nativeScriptFixture6 - roundtripTest "nativeScriptFixture7" nativeScriptFixture7 - group "PlutusData" do - roundtripTest "plutusDataFixture1" plutusDataFixture1 - roundtripTest "plutusDataFixture2" plutusDataFixture2 - roundtripTest "plutusDataFixture3" plutusDataFixture3 - roundtripTest "plutusDataFixture4" plutusDataFixture4 - roundtripTest "plutusDataFixture5" plutusDataFixture5 - roundtripTest "plutusDataFixture6" plutusDataFixture6 - roundtripTest "plutusDataFixture7" plutusDataFixture7 - roundtripTest "plutusDataFixture8" plutusDataFixture8 - group "Transaction" do - roundtripTest "txFixture1" txFixture1 - roundtripTest "txFixture2" txFixture2 - roundtripTest "txFixture3" txFixture3 - roundtripTest "txFixture4" txFixture4 - roundtripTest "txFixture5" txFixture5 - roundtripTest "txFixture6" txFixture6 - group "TransactionInput" do - roundtripTest "txInputFixture1" txInputFixture1 - group "Int" do - roundtripTest "int0" int1 - group "Mint" do - roundtripTest "mint1" mint1 - roundtripTest "mint0" mint0 - group "TransactionOutput" do - roundtripTest "txOutputFixture1" txOutputFixture1 - group "TransactionWitnessSet" do - roundtripTest "witnessSetFixture2Value" witnessSetFixture2Value - roundtripTest "witnessSetFixture3Value" witnessSetFixture3Value - roundtripTestBytes "witnessSetFixture1" - (Proxy :: Proxy TransactionWitnessSet) - witnessSetFixture1 - roundtripTestBytes "witnessSetFixture2" - (Proxy :: Proxy TransactionWitnessSet) - witnessSetFixture2 - roundtripTestBytes "witnessSetFixture3" - (Proxy :: Proxy TransactionWitnessSet) - witnessSetFixture3 - roundtripTestBytes "witnessSetFixture4" - (Proxy :: Proxy TransactionWitnessSet) - witnessSetFixture4 - -roundtripTest - :: forall a - . Eq a - => Show a - => AsCbor a - => String - -> a - -> TestPlanM (Aff Unit) Unit -roundtripTest label a = - test ("Deserialization is inverse to serialization: " <> label) do - decodeCbor (encodeCbor a) `shouldEqual` Just a - -roundtripTestBytes - :: forall a - . Eq a - => Show a - => AsCbor a - => String - -> Proxy a - -> ByteArray - -> TestPlanM (Aff Unit) Unit -roundtripTestBytes label _ bytes = do - test ("Serialization is inverse to deserialization: " <> label) do - (encodeCbor <$> (decodeCbor (wrap bytes) :: Maybe a)) `shouldEqual` Just - (wrap bytes) diff --git a/test/Fixtures.purs b/test/Fixtures.purs index a053b744f..faf7b9d8a 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -15,6 +15,9 @@ module Test.Ctl.Fixtures , ed25519KeyHash1 , ed25519KeyHashFixture1 , fullyAppliedScriptFixture + , int1 + , mint0 + , mint1 , mkSampleTx , mkTxInput , nativeScriptFixture1 @@ -25,8 +28,8 @@ module Test.Ctl.Fixtures , nativeScriptFixture6 , nativeScriptFixture7 , nullPaymentPubKeyHash - , ogmiosEvaluateTxFailScriptErrorsFixture , ogmiosEvaluateTxFailIncompatibleEraFixture + , ogmiosEvaluateTxFailScriptErrorsFixture , ogmiosEvaluateTxInvalidPointerFormatFixture , ogmiosEvaluateTxValidRespFixture , partiallyAppliedScriptFixture @@ -40,6 +43,9 @@ module Test.Ctl.Fixtures , plutusDataFixture8 , plutusDataFixture8Bytes , plutusDataFixture8Bytes' + , plutusScriptFixture1 + , plutusScriptFixture2 + , plutusScriptFixture3 , redeemerFixture1 , tokenName1 , tokenName2 @@ -62,33 +68,28 @@ module Test.Ctl.Fixtures , unappliedScriptFixture , utxoFixture1 , utxoFixture1' + , utxoMapFixture , witnessSetFixture1 , witnessSetFixture2 , witnessSetFixture2Value , witnessSetFixture3 , witnessSetFixture3Value , witnessSetFixture4 - , utxoMapFixture - , mint1 - , mint0 - , int1 + , txMetadatumFixture ) where import Prelude -import Aeson (Aeson, aesonNull, decodeAeson, fromString, parseJsonStringToAeson) -import Cardano.AsCbor (decodeCbor, encodeCbor) +import Aeson + ( Aeson + , aesonNull + , decodeAeson + , fromString + , parseJsonStringToAeson + ) +import Cardano.AsCbor (decodeCbor) import Cardano.Types ( AuxiliaryData(AuxiliaryData) - , Certificate - ( MoveInstantaneousRewardsCert - , GenesisKeyDelegation - , PoolRetirement - , PoolRegistration - , StakeDelegation - , StakeDeregistration - , StakeRegistration - ) , Coin(Coin) , Credential(PubKeyHashCredential) , Ed25519KeyHash @@ -96,30 +97,25 @@ import Cardano.Types , ExUnitPrices(ExUnitPrices) , ExUnits(ExUnits) , GeneralTransactionMetadata(GeneralTransactionMetadata) - , MIRPot(Treasury, Reserves) - , MIRToStakeCredentials(MIRToStakeCredentials) - , MoveInstantaneousReward(ToStakeCreds, ToOtherPot) + , Language(PlutusV2) , NativeScript - ( ScriptPubkey - , ScriptAll - , ScriptAny - , ScriptNOfK + ( TimelockExpiry , TimelockStart - , TimelockExpiry + , ScriptNOfK + , ScriptAny + , ScriptAll + , ScriptPubkey ) , NetworkId(TestnetId, MainnetId) , OutputDatum(OutputDatum) , PaymentPubKeyHash(PaymentPubKeyHash) - , PlutusData(Constr, Map, Integer, List, Bytes) - , PlutusScript - , PoolMetadata(PoolMetadata) - , PoolParams(PoolParams) + , PlutusData(Integer, Bytes, Constr, List, Map) + , PlutusScript(PlutusScript) , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) , ProtocolParamUpdate(ProtocolParamUpdate) , ProtocolVersion(ProtocolVersion) , Redeemer(Redeemer) , RedeemerTag(Spend) - , Relay(MultiHostName, SingleHostName, SingleHostAddr) , RewardAddress , ScriptHash , Slot(Slot) @@ -129,9 +125,7 @@ import Cardano.Types , TransactionOutput(TransactionOutput) , TransactionUnspentOutput(TransactionUnspentOutput) , TransactionWitnessSet(TransactionWitnessSet) - , URL(URL) , UnitInterval(UnitInterval) - , Update(Update) , UtxoMap , Value(Value) , Vkey(Vkey) @@ -149,22 +143,18 @@ import Cardano.Types.PublicKey as PublicKey import Cardano.Types.TransactionMetadatum (TransactionMetadatum(Text)) import Contract.Numeric.BigNum (BigNum) import Contract.Numeric.BigNum (fromInt, one, zero) as BigNum -import Contract.Transaction (PoolPubKeyHash(PoolPubKeyHash)) -import Ctl.Internal.Cardano.Types.ScriptRef - ( ScriptRef(PlutusScriptRef, NativeScriptRef) - ) +import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef)) import Ctl.Internal.Types.Aliases (Bech32String) -import Data.Array as Array import Data.ByteArray ( ByteArray , byteArrayFromIntArrayUnsafe - , hexToByteArray , hexToByteArrayUnsafe ) import Data.Either (fromRight, hush) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (wrap) +import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested ((/\)) import Data.UInt as UInt import Effect (Effect) @@ -173,7 +163,6 @@ import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures.CostModels (costModelsFixture1) -import Unsafe.Coerce (unsafeCoerce) txOutputFixture1 :: TransactionOutput txOutputFixture1 = @@ -379,6 +368,20 @@ plutusScriptFixture2 = unsafePartial $ fromJust $ map plutusV2Script $ hush $ decodeAeson $ fromString "4d010000deadbeef33222220051200120011" +txMetadatumFixture :: ByteArray +txMetadatumFixture = hexToByteArrayUnsafe "60" -- "a11902d1a278383733336136646663363063613639396261616236346336353836663464633138653263613733343232363730333439666361396235346339a174537061636550756773476c617373504334393730ab646e616d65781b5370616365205075677320476c617373202d20504320233439373065696d6167657835697066733a2f2f516d516f4d61554e3239554278776154515373566b48783748324d57627365794e6d4c78386f745a7a5167395a34696d656469615479706569696d6167652f6769666b6465736372697074696f6e606566696c657381a3646e616d6574537061636550756773476c617373504334393730696d656469615479706569766964656f2f6d7034637372637835697066733a2f2f516d57646b7231634b42345065764739784a4b76536e71336d33354a5478726771673158725742475062456f62696a4261636b67726f756e646b507572706c652046656c7463546f706e517565656e204f6620436c75627366426f74746f6d754a61636b204f662048656172747320426f74746f6d6644657369676e75323920284d616420446f672043617220436c756229664578747261737157696e73746f6e20436875726368696c6c684c69676874696e676c4e6f726d616c204c696768746776657273696f6e63312e30" + +plutusScriptFixture3 :: PlutusScript +plutusScriptFixture3 = + ( PlutusScript + ( Tuple + ( hexToByteArrayUnsafe + "59088501000032332232323233223232323232323232323322323232323232322223232533532325335001101b13357389211d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c24400424400224002920103505431003200135500322112225335001135003220012213335005220023004002333553007120010050040011122002122122330010040031123230010012233003300200200101" + ) + PlutusV2 + ) + ) + txFixture1 :: Transaction txFixture1 = Transaction @@ -435,14 +438,7 @@ txFixture2 = , collateralReturn: Nothing , totalCollateral: Nothing } - , witnessSet: TransactionWitnessSet - { vkeys: [] - , nativeScripts: [] - , bootstraps: [] - , plutusScripts: [] - , plutusData: [] - , redeemers: [] - } + , witnessSet: witnessSetFixture3Value , isValid: true , auxiliaryData: mempty } @@ -506,12 +502,14 @@ txFixture3 = , auxiliaryData: mempty } +mint1 :: Mint mint1 = Mint $ Map.fromFoldable [ currencySymbol1 /\ Map.fromFoldable [ tokenName2 /\ Int.newPositive BigNum.one ] ] +mint0 :: Mint mint0 = Mint $ Map.fromFoldable [ currencySymbol1 /\ Map.fromFoldable [ tokenName2 /\ Int.newPositive BigNum.zero @@ -1147,7 +1145,7 @@ witnessSetFixture3Value = ] ) ] - , plutusScripts: [] + , plutusScripts: [ plutusScriptFixture3 ] , redeemers: [] , vkeys: [ Vkeywitness @@ -1352,7 +1350,7 @@ redeemerFixture1 = Redeemer unappliedScriptFixture :: PlutusScript unappliedScriptFixture = - plutusV1Script $ hexToByteArrayUnsafe $ + plutusV1Script $ wrap $ hexToByteArrayUnsafe $ "586f010000333222323233222233222225335300c33225335300e0021001100f333500b223\ \33573466e1c00800404003c0152002333500b22333573466e3c00800404003c01122010010\ \091326353008009498cd4015d680119a802bae001120012001120011200112200212200120\ @@ -1360,7 +1358,7 @@ unappliedScriptFixture = partiallyAppliedScriptFixture :: PlutusScript partiallyAppliedScriptFixture = - plutusV1Script $ hexToByteArrayUnsafe $ + plutusV1Script $ wrap $ hexToByteArrayUnsafe $ "58750100003333222323233222233222225335300c33225335300e0021001100f333500b22\ \333573466e1c00800404003c0152002333500b22333573466e3c00800404003c0112210010\ \091326353008009498cd4015d680119a802bae001120012001120011200112200212200120\ @@ -1368,7 +1366,7 @@ partiallyAppliedScriptFixture = fullyAppliedScriptFixture :: PlutusScript fullyAppliedScriptFixture = - plutusV1Script $ hexToByteArrayUnsafe $ + plutusV1Script $ wrap $ hexToByteArrayUnsafe $ "587f01000033333222323233222233222225335300c33225335300e0021001100f333500b2\ \2333573466e1c00800404003c0152002333500b22333573466e3c00800404003c011220100\ \10091326353008009498cd4015d680119a802bae0011200120011200112001122002122001\ diff --git a/test/Hashing.purs b/test/Hashing.purs index a9da67443..2a686bf25 100644 --- a/test/Hashing.purs +++ b/test/Hashing.purs @@ -105,7 +105,7 @@ datumHashFixture = plutusV1ScriptFixture :: PlutusScript plutusV1ScriptFixture = - plutusV1Script $ + plutusV1Script $ wrap $ hexToByteArrayUnsafe "4d01000033222220051200120011" plutusV1ScriptHashFixture :: ScriptHash @@ -116,7 +116,7 @@ plutusV1ScriptHashFixture = plutusV2ScriptFixture :: PlutusScript plutusV2ScriptFixture = - plutusV2Script + plutusV2Script $ wrap $ hexToByteArrayUnsafe "4d01000033222220051200120011" plutusV2ScriptHashFixture :: ScriptHash diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index e51be1c69..9a308c935 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -173,7 +173,7 @@ import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (error, throw) import JS.BigInt as BigInt -import Mote (group, skip, test) +import Mote (group, only, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures @@ -408,7 +408,6 @@ suite = do ownPaymentPubKeyHashes stakePkh <- join <<< head <$> withKeyWallet alice ownStakePubKeyHashes withKeyWallet alice $ pkh2PkhContract pkh stakePkh - test "Base Address to Base Address transaction (Pkh2Pkh example, but with stake keys)" do diff --git a/test/Serialization.purs b/test/Serialization.purs index 5223788be..4c24024bf 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -112,18 +112,6 @@ suite = do test "TransactionOutput serialization" $ liftEffect do let bytes = unwrap $ encodeCbor txOutputFixture1 byteArrayToHex bytes `shouldEqual` txOutputBinaryFixture1 - test "Transaction serialization #1" $ - serializeTX txFixture1 txBinaryFixture1 - test "Transaction serialization #2 - tokens" $ - serializeTX txFixture2 txBinaryFixture2 - test "Transaction serialization #3 - ada" $ - serializeTX txFixture3 txBinaryFixture3 - test "Transaction serialization #4 - ada + mint + certificates" $ - serializeTX txFixture4 txBinaryFixture4 - test "Transaction serialization #5 - plutus script" $ - serializeTX txFixture5 txBinaryFixture5 - test "Transaction serialization #6 - metadata" $ - serializeTX txFixture6 txBinaryFixture6 group "Transaction Roundtrips" $ do test "Deserialization is inverse to serialization #1" $ txSerializedRoundtrip txFixture1 diff --git a/test/Unit.purs b/test/Unit.purs index 21971ec27..0656455bf 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -18,7 +18,6 @@ import Test.Ctl.ByteArray as ByteArray import Test.Ctl.CoinSelection as CoinSelection import Test.Ctl.Data as Data import Test.Ctl.Data.Interval as Ctl.Data.Interval -import Test.Ctl.Deserialization as Deserialization import Test.Ctl.E2E.Route as E2E.Route import Test.Ctl.Hashing as Hashing import Test.Ctl.Internal.Plutus.Time as Plutus.Time @@ -55,17 +54,16 @@ testPlan = do ByteArray.suite Cip30SignData.suite Data.suite - Deserialization.suite --- Hashing.suite --- Partition.suite --- Plutus.Time.suite --- Serialization.suite --- Serialization.Hash.suite --- UsedTxOuts.suite --- Ogmios.Aeson.suite --- Ogmios.EvaluateTx.suite --- ProtocolParams.suite --- Blockfrost.Aeson.suite + Hashing.suite + Partition.suite + Plutus.Time.suite + Serialization.suite + Serialization.Hash.suite + UsedTxOuts.suite + Ogmios.Aeson.suite + Ogmios.EvaluateTx.suite + ProtocolParams.suite + Blockfrost.Aeson.suite -- Blockfrost.ProtocolParameters.suite -- Types.TokenName.suite -- Types.Transaction.suite From 60f5f52d67ca40afe366d73b439b55d680006db5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sat, 13 Apr 2024 01:04:12 +0400 Subject: [PATCH 088/373] Fix error messages in assertion library tests --- src/Contract/Test/Assert.purs | 21 ++++++++++++++++++--- test/Plutip/Contract/Assert.purs | 4 ++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 7a25e376e..4d663947d 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -227,7 +227,8 @@ printContractAssertionFailure = case _ of "Error while trying to get expected value: " <> err MaxExUnitsExceeded expectedActual -> - "ExUnits limit exceeded: " <> printExpectedActual expectedActual + "ExUnits limit exceeded: " <> printExpectedActualWith printExUnits + expectedActual CustomFailure msg -> msg SkippedTest msg -> msg @@ -235,6 +236,13 @@ printContractAssertionFailure = case _ of showTxHash :: TransactionHash -> String showTxHash = byteArrayToHex <<< toBytes <<< unwrap +printExUnits :: ExUnits -> String +printExUnits (ExUnits { mem, steps }) = + "{ mem: " <> BigNum.toString mem + <> ", steps: " + <> BigNum.toString steps + <> " }" + type Label = String data Labeled (a :: Type) = Labeled a (Maybe Label) @@ -271,8 +279,15 @@ instance Show a => Show (ExpectedActual a) where derive instance Functor ExpectedActual printExpectedActual :: forall (a :: Type). Show a => ExpectedActual a -> String -printExpectedActual (ExpectedActual expected actual) = - " Expected: " <> show expected <> ", Actual: " <> show actual <> " " +printExpectedActual = printExpectedActualWith show + +printExpectedActualWith + :: forall (a :: Type) + . (a -> String) + -> ExpectedActual a + -> String +printExpectedActualWith format (ExpectedActual expected actual) = + " Expected: " <> format expected <> ", Actual: " <> format actual <> " " -------------------------------------------------------------------------------- -- Different types of assertions, Assertion composition, Basic functions diff --git a/test/Plutip/Contract/Assert.purs b/test/Plutip/Contract/Assert.purs index 94f554978..b2cafdcff 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Plutip/Contract/Assert.purs @@ -105,7 +105,7 @@ suite = do ContractTestUtils.mkContract params eiResult `shouldSatisfy` isRight printContractAssertionFailures failures `shouldEqual` - "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: 2, Actual: 1" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Unexpected token delta (mkAssetName (hexToByteArrayUnsafe \"546865546f6b656e\")) at address Sender Expected: 2, Actual: 1" test "ExUnits limit reached" do @@ -181,4 +181,4 @@ suite = do eiResult `shouldSatisfy` isLeft printContractAssertionFailures failures `shouldEqual` - "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Error while trying to get expected value: Unable to estimate expected loss in wallet\n\n 2. Unexpected token delta (TokenName (hexToRawBytesUnsafe \"546865546f6b656e\")) at address Sender Expected: 2, Actual: 1 \n\n 3. ExUnits limit exceeded: Expected: { mem: 800, steps: 16110 }, Actual: { mem: 800, steps: 161100 } \n\nThe following `Contract` checks have been skipped due to an exception: \n\n 1. Sender's output has a datum\n\n 2. Output has a reference script\n\n 3. Contains CIP-25 metadata" + "In addition to the error above, the following `Contract` assertions have failed:\n\n 1. Error while trying to get expected value: Unable to estimate expected loss in wallet\n\n 2. Unexpected token delta (mkAssetName (hexToByteArrayUnsafe \"546865546f6b656e\")) at address Sender Expected: 2, Actual: 1 \n\n 3. ExUnits limit exceeded: Expected: { mem: 800, steps: 16110 }, Actual: { mem: 800, steps: 161100 } \n\nThe following `Contract` checks have been skipped due to an exception: \n\n 1. Sender's output has a datum\n\n 2. Output has a reference script" From a5bf08f62d5f412ec289c924853cce0279212ab2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 15 Apr 2024 20:29:00 +0400 Subject: [PATCH 089/373] Fix all tests. De-duplicate plutus scripts --- packages.dhall | 2 +- src/Contract/Types/MintingPolicy.purs | 1 + src/Internal/ProcessConstraints.purs | 15 +++++++---- src/Internal/QueryM/Ogmios.purs | 36 ++++++++++++++++----------- src/Internal/Transaction.purs | 9 ++++--- src/Internal/Types/ScriptLookups.purs | 5 ++-- test/Plutip/Contract.purs | 6 +++-- 7 files changed, 45 insertions(+), 29 deletions(-) diff --git a/packages.dhall b/packages.dhall index 3371c2a5d..9ed5b7ea2 100644 --- a/packages.dhall +++ b/packages.dhall @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "52f469cdfd812e5d6a8420454e7184fd45084607" + , version = "291c2db68ccc402fbbd52c74a2c8fed2ec1bc43f" } , cardano-message-signing = { dependencies = diff --git a/src/Contract/Types/MintingPolicy.purs b/src/Contract/Types/MintingPolicy.purs index cd9473d6e..bc2c42968 100644 --- a/src/Contract/Types/MintingPolicy.purs +++ b/src/Contract/Types/MintingPolicy.purs @@ -26,6 +26,7 @@ data MintingPolicy derive instance Generic MintingPolicy _ derive instance Eq MintingPolicy +derive instance Ord MintingPolicy instance DecodeAeson MintingPolicy where decodeAeson aes = diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 8a37f0b36..7299ccb05 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -26,7 +26,16 @@ import Cardano.Types , TransactionWitnessSet(TransactionWitnessSet) , Value(Value) ) -import Cardano.Types.Address (Address(..), getPaymentCredential) +import Cardano.Types.Address + ( Address + ( BaseAddress + , ByronAddress + , EnterpriseAddress + , RewardAddress + , PointerAddress + ) + , getPaymentCredential + ) import Cardano.Types.Coin as Coin import Cardano.Types.Credential ( Credential(PubKeyHashCredential, ScriptHashCredential) @@ -41,9 +50,6 @@ import Cardano.Types.NativeScript as NativeScript import Cardano.Types.OutputDatum (OutputDatum(..)) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Transaction as Transaction -import Cardano.Types.Value (isZero) -import Cardano.Types.Value as Value -import Contract.Log (logInfo') import Contract.Types (MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy)) import Contract.Types as MintingPolicy import Control.Monad.Error.Class (catchError, throwError) @@ -191,7 +197,6 @@ import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) -import Effect.Console as Console import Effect.Exception (throw) import Partial.Unsafe (unsafePartial) import Prelude (join) as Bind diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index cb4dbd02a..393fe6f2f 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -98,20 +98,20 @@ import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Serialization.Lib (fromBytes, ipv4_new) import Cardano.Types ( Bech32String - , BigNum(..) - , Language(..) + , BigNum(BigNum) + , Language(PlutusV1, PlutusV2) , RedeemerTag - , VRFKeyHash(..) + , VRFKeyHash(VRFKeyHash) ) import Cardano.Types.AssetName (unAssetName) import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum (fromBigInt, fromString) as BigNum import Cardano.Types.CborBytes (CborBytes) -import Cardano.Types.Coin (Coin(..)) -import Cardano.Types.CostModel (CostModel(..)) +import Cardano.Types.Coin (Coin(Coin)) +import Cardano.Types.CostModel (CostModel(CostModel)) import Cardano.Types.Ed25519KeyHash (Ed25519KeyHash) -import Cardano.Types.ExUnitPrices (ExUnitPrices(..)) -import Cardano.Types.ExUnits (ExUnits(..)) +import Cardano.Types.ExUnitPrices (ExUnitPrices(ExUnitPrices)) +import Cardano.Types.ExUnits (ExUnits(ExUnits)) import Cardano.Types.Int as Cardano import Cardano.Types.Ipv4 (Ipv4(Ipv4)) import Cardano.Types.Ipv6 (Ipv6) @@ -125,18 +125,21 @@ import Cardano.Types.NativeScript , TimelockExpiry ) ) -import Cardano.Types.PlutusScript (PlutusScript(..)) +import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) import Cardano.Types.PlutusScript as PlutusScript -import Cardano.Types.PoolMetadata (PoolMetadata(..)) +import Cardano.Types.PoolMetadata (PoolMetadata(PoolMetadata)) import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) -import Cardano.Types.Relay (Relay(..)) +import Cardano.Types.Relay + ( Relay(SingleHostAddr, SingleHostName, MultiHostName) + ) import Cardano.Types.RewardAddress (RewardAddress) +import Cardano.Types.RewardAddress as RewardAddress import Cardano.Types.ScriptHash (ScriptHash) import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) -import Cardano.Types.Slot (Slot(..)) +import Cardano.Types.Slot (Slot(Slot)) import Cardano.Types.TransactionHash (TransactionHash) -import Cardano.Types.URL (URL(..)) -import Cardano.Types.UnitInterval (UnitInterval(..)) +import Cardano.Types.URL (URL(URL)) +import Cardano.Types.UnitInterval (UnitInterval(UnitInterval)) import Cardano.Types.Value (Value, getMultiAsset, valueToCoin) import Control.Alt ((<|>)) import Control.Alternative (guard) @@ -155,7 +158,9 @@ import Ctl.Internal.Types.EraSummaries , EraSummary(EraSummary) , EraSummaryParameters(EraSummaryParameters) ) -import Ctl.Internal.Types.ProtocolParameters (ProtocolParameters(..)) +import Ctl.Internal.Types.ProtocolParameters + ( ProtocolParameters(ProtocolParameters) + ) import Ctl.Internal.Types.Rational (Rational, (%)) import Ctl.Internal.Types.Rational as Rational import Ctl.Internal.Types.RedeemerTag as RedeemerTag @@ -642,7 +647,8 @@ decodePoolParameters objParams = do pledge <- objParams .: "pledge" >>= aesonObject (\obj -> obj .: "lovelace") cost <- objParams .: "cost" >>= aesonObject (\obj -> obj .: "lovelace") margin <- decodeUnitInterval =<< objParams .: "margin" - rewardAccount <- objParams .: "rewardAccount" + rewardAccount <- objParams .: "rewardAccount" >>= + RewardAddress.fromBech32 >>> note (TypeMismatch "RewardAddress") poolOwners <- objParams .: "owners" relayArr <- objParams .: "relays" relays <- for relayArr decodeRelay diff --git a/src/Internal/Transaction.purs b/src/Internal/Transaction.purs index 9f8961369..e01acd09b 100644 --- a/src/Internal/Transaction.purs +++ b/src/Internal/Transaction.purs @@ -29,6 +29,7 @@ import Cardano.Types.TransactionBody (TransactionBody(TransactionBody)) import Cardano.Types.TransactionWitnessSet ( TransactionWitnessSet(TransactionWitnessSet) ) +import Data.Array (nub) import Data.Array as Array import Data.Foldable (null) import Data.Map (Map) @@ -68,7 +69,7 @@ setScriptDataHash costModels rs ds tx@(Transaction { body, witnessSet }) packListContainer $ Redeemer.toCsl <$> rs datumsCsl = if Array.null ds - -- This is a hack. The argument datums argument is optional and is + -- This is a hack. The datums argument is optional and is -- supposed to not be provided if there are no datums. -- TODO: fix upstream then unsafeCoerce undefined @@ -95,7 +96,7 @@ attachDatums [] tx = tx attachDatums datums tx@(Transaction { witnessSet: TransactionWitnessSet ws }) = do updateTxWithWitnesses tx $ TransactionWitnessSet $ ws - { plutusData = ws.plutusData <> datums } + { plutusData = nub $ ws.plutusData <> datums } -- | Attach a `PlutusScript` to a transaction by modifying its existing witness -- | set @@ -111,7 +112,7 @@ attachPlutusScripts ps tx@(Transaction { witnessSet: TransactionWitnessSet ws }) do updateTxWithWitnesses tx $ TransactionWitnessSet - $ ws { plutusScripts = ws.plutusScripts <> ps } + $ ws { plutusScripts = nub $ ws.plutusScripts <> ps } -- | Attach a `NativeScript` to a transaction by modifying its existing witness -- | set @@ -121,7 +122,7 @@ attachNativeScript ns tx@(Transaction { witnessSet: TransactionWitnessSet ws }) do updateTxWithWitnesses tx $ TransactionWitnessSet - $ ws { nativeScripts = ws.nativeScripts <> [ ns ] } + $ ws { nativeScripts = nub $ ws.nativeScripts <> [ ns ] } updateTxWithWitnesses :: Transaction diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 9178a345d..b03608917 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -22,8 +22,9 @@ import Cardano.Types , UtxoMap ) import Cardano.Types.DataHash (hashPlutusData) -import Contract.Types (MintingPolicy) +import Contract.Types.MintingPolicy (MintingPolicy) import Ctl.Internal.Helpers ((<\>)) +import Data.Array (nub) import Data.Array (singleton, union) as Array import Data.Generic.Rep (class Generic) import Data.Map (Map, empty, singleton, union) @@ -74,7 +75,7 @@ instance Show ScriptLookups where instance Semigroup ScriptLookups where append (ScriptLookups l) (ScriptLookups r) = ScriptLookups - { mintingPolicies: l.mintingPolicies `Array.union` r.mintingPolicies + { mintingPolicies: nub $ l.mintingPolicies `Array.union` r.mintingPolicies , txOutputs: l.txOutputs `union` r.txOutputs , scripts: l.scripts `Array.union` r.scripts , datums: l.datums `union` r.datums diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 9a308c935..1fe6fab9c 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -1477,9 +1477,11 @@ suite = do balance <- unsafePartial $ fold <$> getWalletBalance let collateralLoss = Value.lovelaceValueOf $ BigNum.fromInt $ - -5_000_000 + 5_000_000 balance `shouldEqual` - (unsafePartial $ balanceBefore <> collateralLoss) + ( unsafePartial $ fromJust $ balanceBefore `Value.minus` + collateralLoss + ) test "AlwaysFails script triggers Native Asset Collateral Return (tokens)" do From c211c82d97577e4f5f65b0441411438c027a31de Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 15 Apr 2024 23:02:50 +0400 Subject: [PATCH 090/373] Fix unit test --- packages.dhall | 2 +- src/Contract/Transaction.purs | 2 +- test/Unit.purs | 18 +++++++++--------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages.dhall b/packages.dhall index 9ed5b7ea2..e346fe793 100644 --- a/packages.dhall +++ b/packages.dhall @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "291c2db68ccc402fbbd52c74a2c8fed2ec1bc43f" + , version = "64652087362a8591ae0a8d73a2f4857762002606" } , cardano-message-signing = { dependencies = diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 124800cbf..cf74e7b2d 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -31,7 +31,7 @@ import Cardano.Types ( Bech32String , Coin , GeneralTransactionMetadata - , PoolPubKeyHash(..) + , PoolPubKeyHash(PoolPubKeyHash) , Transaction(Transaction) , TransactionHash , TransactionInput(TransactionInput) diff --git a/test/Unit.purs b/test/Unit.purs index 0656455bf..abc2ff464 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -64,12 +64,12 @@ testPlan = do Ogmios.EvaluateTx.suite ProtocolParams.suite Blockfrost.Aeson.suite --- Blockfrost.ProtocolParameters.suite --- Types.TokenName.suite --- Types.Transaction.suite --- Ctl.Data.Interval.suite --- flip mapTest Types.Interval.suite \f -> liftEffect $ join $ --- f <$> Types.Interval.eraSummariesFixture --- <*> Types.Interval.systemStartFixture --- E2E.Route.suite --- CoinSelection.suite + Blockfrost.ProtocolParameters.suite + Types.TokenName.suite + Types.Transaction.suite + Ctl.Data.Interval.suite + flip mapTest Types.Interval.suite \f -> liftEffect $ join $ + f <$> Types.Interval.eraSummariesFixture + <*> Types.Interval.systemStartFixture + E2E.Route.suite + CoinSelection.suite From f29026895a19ae2989518ea77de091eb2a8c8943 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 15 Apr 2024 23:05:31 +0400 Subject: [PATCH 091/373] Reduce the number of quickcheck tests for UtxoIndex --- test/CoinSelection/CoinSelection.purs | 4 ++-- test/CoinSelection/UtxoIndex.purs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index f4e7cbe89..eef244d67 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -58,7 +58,7 @@ import Test.QuickCheck (test) as QuickCheck import Test.QuickCheck.Arbitrary (arbitrary) import Test.QuickCheck.Gen (Gen, randomSampleOne) import Test.Spec.Assertions (shouldEqual) -import Test.Spec.QuickCheck (quickCheck) +import Test.Spec.QuickCheck (quickCheck') suite :: TestPlanM (Aff Unit) Unit suite = @@ -68,7 +68,7 @@ suite = UtxoIndex.suite group "performMultiAssetSelection" do test "Performs a selection with zero outputs" do - quickCheck prop_performMultiAssetSelection_empty + quickCheck' 30 prop_performMultiAssetSelection_empty runSelectionTestWithFixture selFixture0 "Selects only from the 'singletons' subset if possible" runSelectionTestWithFixture selFixture1 diff --git a/test/CoinSelection/UtxoIndex.purs b/test/CoinSelection/UtxoIndex.purs index a96d4b5df..11c0d9f73 100644 --- a/test/CoinSelection/UtxoIndex.purs +++ b/test/CoinSelection/UtxoIndex.purs @@ -34,7 +34,7 @@ import Test.Ctl.CoinSelection.Arbitrary import Test.QuickCheck (Result(Failed, Success)) as QuickCheck import Test.QuickCheck ((===)) import Test.Spec.Assertions (shouldEqual) -import Test.Spec.QuickCheck (quickCheck) +import Test.Spec.QuickCheck (quickCheck, quickCheck') suite :: TestPlanM (Aff Unit) Unit suite = @@ -49,10 +49,10 @@ suite = quickCheck prop_partition_disjoint test "prop_utxoIndexInsertEntry_invariant" do - quickCheck prop_utxoIndexInsertEntry_invariant + quickCheck' 30 prop_utxoIndexInsertEntry_invariant test "prop_utxoIndexDeleteEntry_invariant" do - quickCheck prop_utxoIndexDeleteEntry_invariant + quickCheck' 30 prop_utxoIndexDeleteEntry_invariant group "SelectRandom" do test "prop_selectRandom_invariant" do From 079fb9a3bfc03f686f1f00292399b828631ddf6e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 15 Apr 2024 23:08:28 +0400 Subject: [PATCH 092/373] Add import-fixer script --- Makefile | 1 + scripts/import-fixer.sh | 53 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100755 scripts/import-fixer.sh diff --git a/Makefile b/Makefile index 5519cd407..6842b4ce9 100644 --- a/Makefile +++ b/Makefile @@ -61,6 +61,7 @@ webpack-serve: spago-build create-bundle-entrypoint create-html-entrypoint check-explicit-exports: @if grep -rn '(\.\.)' ${ps-sources}; then echo "Use explicit imports/exports ^" + echo "Run ./scripts/import-fixer.sh to autofix some of these" exit 1 else echo "All imports/exports are explicit" diff --git a/scripts/import-fixer.sh b/scripts/import-fixer.sh new file mode 100755 index 000000000..ee0770fc2 --- /dev/null +++ b/scripts/import-fixer.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +if [[ "${TRACE-0}" == "1" ]]; then + set -o xtrace +fi + +if [[ "${1-}" =~ ^-*h(elp)?$ ]]; then + echo 'Usage: ./scripts/import-fixer.sh [REVISION] +This script attempts to fix imports from implicit for (Something(..)) to explicit (Something(SomeConstructor, OtherConstructor)) +' + exit +fi + +# cd "$(dirname "$0")" + +declare -A constrs + +constrs["Slot"]="Slot" +constrs["Value"]="Value" +constrs["Either"]="Left, Right" +constrs["PrivateKey"]="PrivateKey" +constrs["Credential"]="PubKeyHashCredential, ScriptHashCredential" +constrs["Address"]="BaseAddress, ByronAddress, EnterpriseAddress, RewardAddress, PointerAddress" +constrs["Proxy"]="Proxy" +constrs["ExUnits"]="ExUnits" +constrs["Transaction"]="Transaction" +constrs["CborBytes"]="CborBytes" +constrs["Coin"]="Coin" +constrs["Mint"]="Mint" +constrs["TransactionUnspentOutput"]="TransactionUnspentOutput" +constrs["TransactionOutput"]="TransactionOutput" +constrs["OutputDatum"]="OutputDatumHash, OutputDatum" +constrs["PoolPubKeyHash"]="PoolPubKeyHash" +constrs["Val"]="Val" +constrs["AssetClass"]="AssetClass" +constrs["NetworkId"]="MainnetId, TestnetId" +constrs["ScriptRef"]="NativeScriptRef, PlutusScriptRef" +constrs["RedeemerTag"]="Spend, Mint, Cert, Reward" +constrs["Maybe"]="Just, Nothing" + +for d in "src" "test" "examples"; do + echo "processing $d" + pushd "./$d" + for key in "${!constrs[@]}"; do + echo -n "$key," + find -type f | grep '\.purs$' --color=never | xargs -I'{}' -exec sed -i 's/'"$key"'(..)/'"$key(${constrs[$key]})"'/g;' '{}' + done + popd +done; From 36c5017281a4abbb3d4ab359588ad7cf673b6a68 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 15 Apr 2024 23:37:45 +0400 Subject: [PATCH 093/373] Format & fix warnings --- examples/AdditionalUtxos.purs | 2 +- examples/ECDSA.purs | 2 +- examples/KeyWallet/SignMultiple.purs | 2 +- examples/OneShotMinting.purs | 8 +- examples/PlutusV2/InlineDatum.purs | 2 +- examples/PlutusV2/ReferenceScripts.purs | 5 +- examples/Schnorr.purs | 4 +- examples/Utxos.purs | 2 +- src/Contract/Address.purs | 10 +- src/Contract/Types/MintingPolicy.purs | 2 +- src/Internal/ApplyArgs.purs | 22 +- src/Internal/BalanceTx/BalanceTx.purs | 24 +-- src/Internal/BalanceTx/CoinSelection.purs | 35 ++-- src/Internal/BalanceTx/RedeemerIndex.purs | 2 +- src/Internal/Cardano/Types/ScriptRef.purs | 5 - src/Internal/CoinSelection/UtxoIndex.purs | 2 +- src/Internal/Helpers.purs | 6 +- src/Internal/Partition.purs | 2 +- src/Internal/ProcessConstraints.purs | 10 +- src/Internal/ProcessConstraints/State.purs | 2 +- src/Internal/QueryM/Kupo.purs | 2 - src/Internal/QueryM/Ogmios.purs | 4 +- src/Internal/Service/Blockfrost.purs | 3 +- src/Internal/Test/E2E/Route.purs | 3 +- src/Internal/Types/Cbor.purs | 2 +- src/Internal/Types/Interval.purs | 2 +- src/Internal/Types/RedeemerTag.purs | 2 +- src/Internal/Types/RewardAddress.purs | 5 - src/Internal/Wallet/Cip30Mock.purs | 4 +- test/CoinSelection/Arbitrary.purs | 6 +- test/CoinSelection/CoinSelection.purs | 4 +- test/Data.purs | 4 +- test/Fixtures.purs | 228 +++++++++++---------- test/Plutip/Contract.purs | 9 +- test/Plutip/Contract/Assert.purs | 2 +- test/PrivateKey.purs | 3 +- test/Serialization.purs | 14 +- test/Serialization/Hash.purs | 69 +++---- test/Types/Interval.purs | 2 +- 39 files changed, 238 insertions(+), 279 deletions(-) delete mode 100644 src/Internal/Cardano/Types/ScriptRef.purs delete mode 100644 src/Internal/Types/RewardAddress.purs diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index 7c61b9fbb..c3979ea61 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -6,7 +6,7 @@ module Ctl.Examples.AdditionalUtxos import Contract.Prelude import Cardano.Types.BigNum as BigNum -import Cardano.Types.Credential (Credential(..)) +import Cardano.Types.Credential (Credential(ScriptHashCredential)) import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (mkAddress) import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder) diff --git a/examples/ECDSA.purs b/examples/ECDSA.purs index 591680055..7aeaaa6f7 100644 --- a/examples/ECDSA.purs +++ b/examples/ECDSA.purs @@ -3,7 +3,7 @@ module Ctl.Examples.ECDSA (contract) where import Contract.Prelude import Cardano.Types.Credential (Credential(ScriptHashCredential)) -import Contract.Address (getNetworkId, mkAddress) +import Contract.Address (mkAddress) import Contract.Crypto.Secp256k1.ECDSA ( ECDSAPublicKey , ECDSASignature diff --git a/examples/KeyWallet/SignMultiple.purs b/examples/KeyWallet/SignMultiple.purs index 146eef7c3..6c944cbde 100644 --- a/examples/KeyWallet/SignMultiple.purs +++ b/examples/KeyWallet/SignMultiple.purs @@ -2,7 +2,7 @@ module Ctl.Examples.KeyWallet.SignMultiple where import Contract.Prelude -import Cardano.Types (Transaction(..)) +import Cardano.Types (Transaction) import Contract.Log (logInfo') import Contract.Monad (Contract, throwContractError) import Contract.ScriptLookups as Lookups diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 2d0add8ee..2c4e56d68 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -39,7 +39,10 @@ import Contract.Test.Assert , checkTokenGainInWallet' , runChecks ) -import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) +import Contract.TextEnvelope + ( decodeTextEnvelope + , plutusScriptFromEnvelope + ) import Contract.Transaction ( TransactionInput , awaitTxConfirmed @@ -51,7 +54,6 @@ import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers -import Ctl.Internal.ApplyArgs (ApplyArgsError) import Data.Array (head, singleton) as Array import Data.Map (toUnfoldable) as Map import Effect.Exception (error, throw) @@ -128,7 +130,7 @@ oneShotMintingPolicyScript txInput = do mkOneShotMintingPolicy :: PlutusScript -> TransactionInput - -> Either ApplyArgsError PlutusScript + -> Either String PlutusScript mkOneShotMintingPolicy unappliedMintingPolicy oref = let mintingPolicyArgs :: Array PlutusData diff --git a/examples/PlutusV2/InlineDatum.purs b/examples/PlutusV2/InlineDatum.purs index a9cc81293..802ea0e33 100644 --- a/examples/PlutusV2/InlineDatum.purs +++ b/examples/PlutusV2/InlineDatum.purs @@ -13,7 +13,7 @@ module Ctl.Examples.PlutusV2.InlineDatum import Contract.Prelude -import Cardano.Types (Credential(..)) +import Cardano.Types (Credential(ScriptHashCredential)) import Cardano.Types.BigNum as BigNum import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs index 22aa6929a..b44e919a2 100644 --- a/examples/PlutusV2/ReferenceScripts.purs +++ b/examples/PlutusV2/ReferenceScripts.purs @@ -6,7 +6,10 @@ module Ctl.Examples.PlutusV2.ReferenceScripts import Contract.Prelude -import Cardano.Types (Credential(..), TransactionUnspentOutput(..)) +import Cardano.Types + ( Credential(ScriptHashCredential) + , TransactionUnspentOutput(TransactionUnspentOutput) + ) import Cardano.Types.BigNum as BigNum import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) diff --git a/examples/Schnorr.purs b/examples/Schnorr.purs index 789449bde..ea1f52615 100644 --- a/examples/Schnorr.purs +++ b/examples/Schnorr.purs @@ -2,8 +2,8 @@ module Ctl.Examples.Schnorr (contract) where import Contract.Prelude -import Cardano.Types (Credential(..)) -import Cardano.Types.Address (Address(..)) +import Cardano.Types (Credential(ScriptHashCredential)) +import Cardano.Types.Address (Address(EnterpriseAddress)) import Contract.Address (getNetworkId) import Contract.Crypto.Secp256k1.Schnorr ( deriveSchnorrSecp256k1PublicKey diff --git a/examples/Utxos.purs b/examples/Utxos.purs index 8e3272360..1055bb6af 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -4,7 +4,7 @@ import Contract.Prelude import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int -import Cardano.Types.Mint (Mint(..)) +import Cardano.Types.Mint (Mint) import Cardano.Types.Mint as Mint import Contract.Address (PaymentPubKeyHash, StakePubKeyHash) import Contract.Config (ContractParams, testnetNamiConfig) diff --git a/src/Contract/Address.purs b/src/Contract/Address.purs index 031f34cb0..b9f37dde7 100644 --- a/src/Contract/Address.purs +++ b/src/Contract/Address.purs @@ -19,7 +19,15 @@ import Cardano.Types , PaymentPubKeyHash(PaymentPubKeyHash) , StakePubKeyHash(StakePubKeyHash) ) as X -import Cardano.Types.Address (Address(..)) as X +import Cardano.Types.Address + ( Address + ( BaseAddress + , ByronAddress + , EnterpriseAddress + , RewardAddress + , PointerAddress + ) + ) as X import Cardano.Types.Address (mkPaymentAddress) import Cardano.Types.Address as Address import Contract.Monad (Contract, liftContractM) diff --git a/src/Contract/Types/MintingPolicy.purs b/src/Contract/Types/MintingPolicy.purs index bc2c42968..9d7b6da0d 100644 --- a/src/Contract/Types/MintingPolicy.purs +++ b/src/Contract/Types/MintingPolicy.purs @@ -12,7 +12,7 @@ import Cardano.Types.NativeScript (NativeScript) import Cardano.Types.NativeScript as NativeScript import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript -import Cardano.Types.ScriptRef (ScriptRef(..)) +import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) import Control.Alt ((<|>)) import Ctl.Internal.Helpers (decodeTaggedNewtype) import Data.Generic.Rep (class Generic) diff --git a/src/Internal/ApplyArgs.purs b/src/Internal/ApplyArgs.purs index 4944a376c..625dddb70 100644 --- a/src/Internal/ApplyArgs.purs +++ b/src/Internal/ApplyArgs.purs @@ -1,21 +1,15 @@ module Ctl.Internal.ApplyArgs - ( ApplyArgsError(ApplyArgsError) - , applyArgs + ( applyArgs ) where import Prelude -import Aeson (class DecodeAeson, class EncodeAeson) import Cardano.Serialization.Lib as CSL import Cardano.Types.PlutusData (PlutusData(List)) import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript import Data.Either (Either(Left, Right)) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Profunctor.Choice (left) -import Data.Show.Generic (genericShow) foreign import apply_params_to_script :: (forall (x :: Type). x -> Either x CSL.PlutusScript) @@ -28,19 +22,9 @@ apply_params_to_script_either :: CSL.PlutusData -> CSL.PlutusScript -> Either String CSL.PlutusScript apply_params_to_script_either = apply_params_to_script Left Right -newtype ApplyArgsError = ApplyArgsError String - -derive instance Newtype ApplyArgsError _ -derive instance Generic ApplyArgsError _ -derive newtype instance EncodeAeson ApplyArgsError -derive newtype instance DecodeAeson ApplyArgsError - -instance Show ApplyArgsError where - show = genericShow - applyArgs - :: PlutusScript -> Array PlutusData -> Either ApplyArgsError PlutusScript -applyArgs script paramsList = left ApplyArgsError do + :: PlutusScript -> Array PlutusData -> Either String PlutusScript +applyArgs script paramsList = do let params = PlutusData.toCsl (List paramsList) appliedScript <- apply_params_to_script_either params (PlutusScript.toCsl script) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 844ec93ce..c394f92f1 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -19,17 +19,11 @@ import Cardano.Types import Cardano.Types.Address (Address) import Cardano.Types.BigNum as BigNum import Cardano.Types.Coin as Coin -import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.OutputDatum (OutputDatum(OutputDatum)) import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutputs import Cardano.Types.UtxoMap (pprintUtxoMap) -import Cardano.Types.Value - ( getMultiAsset - , lovelaceValueOf - , mkValue - , pprintValue - ) +import Cardano.Types.Value (getMultiAsset, mkValue, pprintValue) import Cardano.Types.Value as Value import Contract.Log (logWarn') import Control.Monad.Except (class MonadError) @@ -62,7 +56,16 @@ import Ctl.Internal.BalanceTx.Constraints , _selectionStrategy , _srcAddresses ) as Constraints -import Ctl.Internal.BalanceTx.Error (BalanceTxError(..)) +import Ctl.Internal.BalanceTx.Error + ( BalanceTxError + ( CouldNotGetUtxos + , ReindexRedeemersError + , CouldNotGetCollateral + , InsufficientCollateralUtxos + , NumericOverflowError + , UtxoLookupFailedFor + ) + ) import Ctl.Internal.BalanceTx.ExUnitsAndMinFee ( evalExUnitsAndMinFee , finalizeTransaction @@ -85,7 +88,6 @@ import Ctl.Internal.BalanceTx.Types import Ctl.Internal.BalanceTx.UnattachedTx ( EvaluatedTx , UnindexedTx - , _redeemers , _transaction , indexTx ) @@ -121,7 +123,7 @@ import Ctl.Internal.Partition import Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) ) -import Ctl.Internal.Types.Val (Val(..), pprintVal) +import Ctl.Internal.Types.Val (Val(Val), pprintVal) import Ctl.Internal.Types.Val as Val import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) @@ -165,8 +167,6 @@ import Data.Tuple (fst) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (toInt) as UInt import Effect.Aff.Class (liftAff) -import Effect.Class (liftEffect) -import Effect.Console as Console import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index 9f211da61..88a91460d 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -19,28 +19,26 @@ module Ctl.Internal.BalanceTx.CoinSelection , selectRandomWithPriority ) where -import Data.Tuple.Nested import Prelude -import Cardano.Types.Asset (Asset(..)) +import Cardano.Types.Asset (Asset(AdaAsset)) import Cardano.Types.Asset as Asset -import Cardano.Types.AssetClass (AssetClass(..)) +import Cardano.Types.AssetClass (AssetClass(AssetClass)) import Cardano.Types.AssetName (unAssetName) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.Coin (Coin(..)) -import Cardano.Types.TransactionInput (TransactionInput(..)) +import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.UtxoMap (UtxoMap) import Cardano.Types.Value as Value -import Contract.Log (logError') import Control.Monad.Error.Class (class MonadThrow, throwError) -import Control.Monad.Logger.Class (class MonadLogger) import Ctl.Internal.BalanceTx.Error - ( Actual(..) - , BalanceTxError(..) - , Expected(..) + ( Actual(Actual) + , BalanceTxError + ( BalanceInsufficientError + , InsufficientUtxoBalanceToCoverAsset + ) + , Expected(Expected) ) import Ctl.Internal.CoinSelection.UtxoIndex - ( SelectionFilter(..) + ( SelectionFilter(SelectSingleton, SelectPairWith, SelectAnyWith) , TxUnspentOutput , UtxoIndex , emptyUtxoIndex @@ -49,7 +47,7 @@ import Ctl.Internal.CoinSelection.UtxoIndex , utxoIndexPartition , utxoIndexUniverse ) -import Ctl.Internal.Types.Val (Val(..)) +import Ctl.Internal.Types.Val (Val) import Ctl.Internal.Types.Val as Val import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) @@ -62,21 +60,18 @@ import Data.Lens (Lens', over, view, (^.)) import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) import Data.Map as Map -import Data.Maybe (Maybe(..), fromJust, maybe, maybe') +import Data.Maybe (Maybe(Just, Nothing), maybe, maybe') import Data.Newtype (class Newtype, unwrap, wrap) import Data.Set (Set) -import Data.Set as Set -import Data.Show (show) import Data.Show.Generic (genericShow) import Data.Tuple (fst) -import Effect.Class (class MonadEffect, liftEffect) -import Effect.Console as Console +import Data.Tuple.Nested (type (/\), (/\)) +import Effect.Class (class MonadEffect) import JS.BigInt (BigInt) import JS.BigInt as BigInt -import Partial.Unsafe (unsafePartial) import Test.QuickCheck (class Arbitrary) import Test.QuickCheck.Gen as Arbitrary -import Type.Proxy (Proxy(..)) +import Type.Proxy (Proxy(Proxy)) -------------------------------------------------------------------------------- -- Coin Selection diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 5da02adac..e6125f915 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -47,7 +47,7 @@ import Data.Newtype (class Newtype, unwrap, wrap) import Data.Set as Set import Data.Show.Generic (genericShow) import Data.Traversable (for) -import Type.Proxy (Proxy(..)) +import Type.Proxy (Proxy(Proxy)) attachRedeemers :: Array Redeemer -> Transaction -> Transaction attachRedeemers redeemers = diff --git a/src/Internal/Cardano/Types/ScriptRef.purs b/src/Internal/Cardano/Types/ScriptRef.purs deleted file mode 100644 index afa82bbd1..000000000 --- a/src/Internal/Cardano/Types/ScriptRef.purs +++ /dev/null @@ -1,5 +0,0 @@ -module Ctl.Internal.Cardano.Types.ScriptRef - ( module X - ) where - -import Cardano.Types.ScriptRef as X diff --git a/src/Internal/CoinSelection/UtxoIndex.purs b/src/Internal/CoinSelection/UtxoIndex.purs index 06a900349..b0905d889 100644 --- a/src/Internal/CoinSelection/UtxoIndex.purs +++ b/src/Internal/CoinSelection/UtxoIndex.purs @@ -26,7 +26,7 @@ import Cardano.Types.Asset (Asset(AdaAsset)) import Cardano.Types.Asset as Asset import Cardano.Types.BigNum as BigNum import Cardano.Types.TransactionInput (TransactionInput) -import Cardano.Types.TransactionOutput (TransactionOutput(..)) +import Cardano.Types.TransactionOutput (TransactionOutput(TransactionOutput)) import Cardano.Types.UtxoMap (UtxoMap) import Cardano.Types.Value ( valueAssetClasses diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index cbfcecd0f..3b7cfddd1 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -45,7 +45,7 @@ import Aeson , class DecodeTupleAux , class EncodeAeson , Aeson - , JsonDecodeError(..) + , JsonDecodeError(TypeMismatch) , caseAesonObject , decodeAeson , encodeAeson @@ -65,7 +65,7 @@ import Data.Array (union) import Data.Bifunctor (bimap) import Data.Bitraversable (ltraverse) import Data.ByteArray (byteArrayToHex) -import Data.Either (Either(..), either) +import Data.Either (Either(Left, Right), either) import Data.Function (on) import Data.JSDate (now) import Data.List.Lazy as LL @@ -82,7 +82,6 @@ import Data.String (Pattern(Pattern), null, stripPrefix, stripSuffix) import Data.Traversable (for, traverse) import Data.Tuple (snd, uncurry) import Data.Tuple.Nested (type (/\), (/\)) -import Data.Typelevel.Undefined (undefined) import Data.UInt (UInt) import Data.UInt as UInt import Effect (Effect) @@ -94,7 +93,6 @@ import Foreign.Object as Obj import JS.BigInt (BigInt) import JS.BigInt as BigInt import Partial.Unsafe (unsafePartial) -import Prim.TypeError (class Warn, Text) bugTrackerLink :: String bugTrackerLink = diff --git a/src/Internal/Partition.purs b/src/Internal/Partition.purs index 22b6ca6a2..bf0b96649 100644 --- a/src/Internal/Partition.purs +++ b/src/Internal/Partition.purs @@ -15,7 +15,7 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.MultiAsset (MultiAsset) import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.ScriptHash (ScriptHash) -import Cardano.Types.Value (Value(..)) +import Cardano.Types.Value (Value(Value)) import Data.Array (replicate) import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 7299ccb05..0c36be635 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -27,13 +27,7 @@ import Cardano.Types , Value(Value) ) import Cardano.Types.Address - ( Address - ( BaseAddress - , ByronAddress - , EnterpriseAddress - , RewardAddress - , PointerAddress - ) + ( Address(BaseAddress, EnterpriseAddress) , getPaymentCredential ) import Cardano.Types.Coin as Coin @@ -47,7 +41,7 @@ import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.NativeScript as NativeScript -import Cardano.Types.OutputDatum (OutputDatum(..)) +import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash, OutputDatum)) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Transaction as Transaction import Contract.Types (MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy)) diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index 034626d20..41d8f56de 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -21,7 +21,7 @@ module Ctl.Internal.ProcessConstraints.State import Prelude hiding (join) import Cardano.Types (CostModel, Language, PlutusData, Transaction, UtxoMap) -import Cardano.Types.Value (Value(..)) +import Cardano.Types.Value (Value) import Control.Monad.State.Trans (StateT) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Contract.Monad (Contract) diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index 6d4f8f4b8..d4bbe9d47 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -31,10 +31,8 @@ import Cardano.Types , BigNum , DataHash , GeneralTransactionMetadata - , Language(PlutusV1, PlutusV2) , MultiAsset , PlutusData - , PlutusScript(PlutusScript) , ScriptHash , Slot , TransactionHash(TransactionHash) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 393fe6f2f..2df19523e 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -1202,12 +1202,12 @@ instance EncodeAeson AdditionalUtxoSet where -- NOTE: We omit the cbor argument. , "json": (encodeNativeScript s) } - encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (s /\ PlutusV1)))) = + encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (_ /\ PlutusV1)))) = encodeAeson { "language": "plutus:v1" , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps } - encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (s /\ PlutusV2)))) = + encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (_ /\ PlutusV2)))) = encodeAeson { "language": "plutus:v2" , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index de9191885..b00bf46b1 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -89,9 +89,8 @@ import Cardano.Types , GeneralTransactionMetadata(GeneralTransactionMetadata) , Language(PlutusV2, PlutusV1) , PlutusData - , PlutusScript(PlutusScript) , PoolPubKeyHash - , RawBytes(RawBytes) + , RawBytes , ScriptHash , StakePubKeyHash , Transaction diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index 270c86ef1..cd0dd4f2f 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -10,11 +10,10 @@ module Ctl.Internal.Test.E2E.Route import Prelude import Cardano.Types (NetworkId(MainnetId)) -import Cardano.Types.PrivateKey (PrivateKey(..)) +import Cardano.Types.PrivateKey (PrivateKey) import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.RawBytes (RawBytes(RawBytes)) import Contract.Config (ContractParams) -import Contract.Keys (privateKeyFromBytes) import Contract.Monad (Contract, runContract) import Contract.Test.Cip30Mock (WalletMock, withCip30Mock) import Contract.Wallet diff --git a/src/Internal/Types/Cbor.purs b/src/Internal/Types/Cbor.purs index 561b5bd92..9d65a33df 100644 --- a/src/Internal/Types/Cbor.purs +++ b/src/Internal/Types/Cbor.purs @@ -19,7 +19,7 @@ module Ctl.Internal.Types.Cbor import Prelude -import Cardano.Types.CborBytes (CborBytes(..)) +import Cardano.Types.CborBytes (CborBytes(CborBytes)) import Contract.Prelude (foldl) import Control.Monad.Except (Except, runExcept, throwError) import Control.Monad.State.Trans (StateT, evalStateT, get, put) diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 30df26420..0e8a85357 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -90,7 +90,7 @@ import Cardano.Plutus.DataSchema import Cardano.ToData (class ToData, genericToData, toData) import Cardano.Types.BigNum (add, fromBigInt, maxValue, one, toBigInt, zero) as BigNum import Cardano.Types.PlutusData (PlutusData(Constr)) -import Cardano.Types.Slot (Slot(..)) +import Cardano.Types.Slot (Slot(Slot)) import Control.Monad.Error.Class (throwError) import Control.Monad.Except (runExcept) import Ctl.Internal.Helpers diff --git a/src/Internal/Types/RedeemerTag.purs b/src/Internal/Types/RedeemerTag.purs index bd6cf2ac6..2dc150a3a 100644 --- a/src/Internal/Types/RedeemerTag.purs +++ b/src/Internal/Types/RedeemerTag.purs @@ -2,7 +2,7 @@ module Ctl.Internal.Types.RedeemerTag ( fromString ) where -import Cardano.Types.RedeemerTag (RedeemerTag(..)) +import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) import Data.Maybe (Maybe(Just, Nothing)) fromString :: String -> Maybe RedeemerTag diff --git a/src/Internal/Types/RewardAddress.purs b/src/Internal/Types/RewardAddress.purs deleted file mode 100644 index 23efffc07..000000000 --- a/src/Internal/Types/RewardAddress.purs +++ /dev/null @@ -1,5 +0,0 @@ -module Ctl.Internal.Types.RewardAddress - ( module X - ) where - -import Cardano.Types.RewardAddress as X diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index f939a70cd..a1a6b87c7 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -17,8 +17,8 @@ import Cardano.Types ( Credential(PubKeyHashCredential) , StakeCredential(StakeCredential) ) -import Cardano.Types.Address (Address(..)) -import Cardano.Types.NetworkId (NetworkId(..)) +import Cardano.Types.Address (Address(RewardAddress)) +import Cardano.Types.NetworkId (NetworkId(MainnetId, TestnetId)) import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.PublicKey as PublicKey import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutput diff --git a/test/CoinSelection/Arbitrary.purs b/test/CoinSelection/Arbitrary.purs index c64af7a22..8ea7895b2 100644 --- a/test/CoinSelection/Arbitrary.purs +++ b/test/CoinSelection/Arbitrary.purs @@ -3,13 +3,10 @@ module Test.Ctl.CoinSelection.Arbitrary where import Prelude import Cardano.Types - ( Address - , NetworkId(MainnetId) - , TransactionHash + ( TransactionHash , TransactionInput(TransactionInput) , TransactionOutput(TransactionOutput) , UtxoMap - , Value ) import Control.Apply (lift2) import Ctl.Internal.BalanceTx.CoinSelection (SelectionState, fromIndexFiltered) @@ -18,7 +15,6 @@ import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex import Data.Generic.Rep (class Generic) import Data.Map (Map) import Data.Map.Gen (genMap) as Map -import Data.Maybe (Maybe(Nothing)) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Data.Tuple (Tuple(Tuple)) diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index eef244d67..111a6b9f8 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -15,8 +15,7 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.Value (mkValue) -import Cardano.Types.Value as Value -import Control.Monad.Error.Class (class MonadError, class MonadThrow) +import Control.Monad.Error.Class (class MonadThrow) import Ctl.Internal.BalanceTx.CoinSelection ( SelectionStrategy(SelectionStrategyMinimal, SelectionStrategyOptimal) , mkSelectionState @@ -43,7 +42,6 @@ import Effect.Aff (Aff) import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (throw) import Effect.Unsafe (unsafePerformEffect) -import JS.BigInt (fromInt) as BigInt import Mote (group, test) import Partial.Unsafe (unsafePartial) import Test.Ctl.CoinSelection.Arbitrary diff --git a/test/Data.purs b/test/Data.purs index 032339272..78675b631 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -4,7 +4,7 @@ module Test.Ctl.Data (suite, tests, uniqueIndicesTests) where import Prelude hiding (conj) import Aeson (JsonDecodeError(TypeMismatch), decodeAeson, encodeAeson) -import Cardano.AsCbor (class AsCbor, decodeCbor, encodeCbor) +import Cardano.AsCbor (class AsCbor, encodeCbor) import Cardano.FromData (class FromData, fromData, genericFromData) import Cardano.Plutus.DataSchema ( class HasPlutusSchema @@ -21,7 +21,7 @@ import Cardano.Plutus.DataSchema ) import Cardano.Plutus.DataSchema.RowList (class AllUniqueLabels) import Cardano.Plutus.Types.Map (Map(Map)) -import Cardano.Serialization.Lib (fromBytes, toBytes) +import Cardano.Serialization.Lib (fromBytes) import Cardano.ToData (class ToData, genericToData, toData) import Cardano.Types.BigNum as BigNum import Cardano.Types.PlutusData (PlutusData(Constr, Integer)) diff --git a/test/Fixtures.purs b/test/Fixtures.purs index faf7b9d8a..e9744f985 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -80,16 +80,19 @@ module Test.Ctl.Fixtures import Prelude -import Aeson - ( Aeson - , aesonNull - , decodeAeson - , fromString - , parseJsonStringToAeson - ) +import Aeson (Aeson, aesonNull, decodeAeson, fromString, parseJsonStringToAeson) import Cardano.AsCbor (decodeCbor) import Cardano.Types ( AuxiliaryData(AuxiliaryData) + , Certificate + ( StakeRegistration + , StakeDeregistration + , StakeDelegation + , PoolRegistration + , PoolRetirement + , GenesisKeyDelegation + , MoveInstantaneousRewardsCert + ) , Coin(Coin) , Credential(PubKeyHashCredential) , Ed25519KeyHash @@ -98,6 +101,9 @@ import Cardano.Types , ExUnits(ExUnits) , GeneralTransactionMetadata(GeneralTransactionMetadata) , Language(PlutusV2) + , MIRPot(Reserves, Treasury) + , MIRToStakeCredentials(MIRToStakeCredentials) + , MoveInstantaneousReward(ToOtherPot, ToStakeCreds) , NativeScript ( TimelockExpiry , TimelockStart @@ -111,13 +117,18 @@ import Cardano.Types , PaymentPubKeyHash(PaymentPubKeyHash) , PlutusData(Integer, Bytes, Constr, List, Map) , PlutusScript(PlutusScript) + , PoolMetadata(PoolMetadata) + , PoolParams(PoolParams) + , PoolPubKeyHash(PoolPubKeyHash) , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) , ProtocolParamUpdate(ProtocolParamUpdate) , ProtocolVersion(ProtocolVersion) , Redeemer(Redeemer) , RedeemerTag(Spend) + , Relay(SingleHostAddr, SingleHostName, MultiHostName) , RewardAddress , ScriptHash + , ScriptRef(NativeScriptRef) , Slot(Slot) , Transaction(Transaction) , TransactionBody(TransactionBody) @@ -125,7 +136,9 @@ import Cardano.Types , TransactionOutput(TransactionOutput) , TransactionUnspentOutput(TransactionUnspentOutput) , TransactionWitnessSet(TransactionWitnessSet) + , URL(URL) , UnitInterval(UnitInterval) + , Update(Update) , UtxoMap , Value(Value) , Vkey(Vkey) @@ -140,11 +153,13 @@ import Cardano.Types.Mint (Mint(Mint)) import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.PlutusScript (plutusV1Script, plutusV2Script) import Cardano.Types.PublicKey as PublicKey +import Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef)) import Cardano.Types.TransactionMetadatum (TransactionMetadatum(Text)) import Contract.Numeric.BigNum (BigNum) import Contract.Numeric.BigNum (fromInt, one, zero) as BigNum -import Ctl.Internal.Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef)) +import Contract.Prim.ByteArray (hexToByteArray) import Ctl.Internal.Types.Aliases (Bech32String) +import Data.Array as Array import Data.ByteArray ( ByteArray , byteArrayFromIntArrayUnsafe @@ -218,9 +233,6 @@ tokenName1 = tokenNameFromString "4974657374546f6b656e" tokenName2 :: AssetName tokenName2 = tokenNameFromString "54657374546f6b656e32" -tokenName4 :: AssetName -tokenName4 = tokenNameFromString "abcdef" - txOutputBinaryFixture1 :: String txOutputBinaryFixture1 = "8258390030fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea9711c12f03c1ef2\ @@ -525,111 +537,109 @@ txFixture4 = { body: TransactionBody { inputs: [ txInputFixture1 ] , outputs: - [ -- TransactionOutput - -- { address: keyHashBaseAddress - -- { stake: - -- "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - -- , payment: - -- "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - -- } - -- , amount: Value (Coin $ BigNum.fromInt 2353402) MultiAsset.empty - -- , datum: Just $ OutputDatum plutusDataFixture1 - -- , scriptRef: Just $ PlutusScriptRef plutusScriptFixture1 - -- } - -- , TransactionOutput - -- { address: keyHashBaseAddress - -- { stake: - -- "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - -- , payment: - -- "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - -- } - -- , amount: Value (Coin $ BigNum.fromInt 1000000) MultiAsset.empty - -- , datum: Nothing - -- , scriptRef: Just $ NativeScriptRef nativeScriptFixture5 - -- } + [ TransactionOutput + { address: keyHashBaseAddress + { stake: + "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" + -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" + , payment: + "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" + } + , amount: Value (Coin $ BigNum.fromInt 2353402) MultiAsset.empty + , datum: Just $ OutputDatum plutusDataFixture1 + , scriptRef: Just $ PlutusScriptRef plutusScriptFixture1 + } + , TransactionOutput + { address: keyHashBaseAddress + { stake: + "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" + -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" + , payment: + "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" + } + , amount: Value (Coin $ BigNum.fromInt 1000000) MultiAsset.empty + , datum: Nothing + , scriptRef: Just $ NativeScriptRef nativeScriptFixture5 + } ] , fee: Coin $ BigNum.fromInt 177513 , ttl: Just $ Slot $ BigNum.fromInt 123 , certs: - [ -- StakeRegistration $ wrap stake1 - -- , StakeDeregistration $ wrap stake1 - -- , StakeDelegation (wrap stake1) - -- (PoolPubKeyHash ed25519KeyHash1) - -- , PoolRegistration $ PoolParams - -- { operator: PoolPubKeyHash ed25519KeyHash1 - -- , vrfKeyhash: unsafePartial $ fromJust $ - -- hexToByteArray - -- "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - -- >>= wrap >>> decodeCbor - -- , pledge: bigNumOne - -- , cost: bigNumOne - -- , margin: UnitInterval - -- { numerator: bigNumOne, denominator: bigNumOne } - -- , rewardAccount: - -- { networkId: MainnetId, stakeCredential: wrap stake1 } - -- , poolOwners: [ ed25519KeyHash1 ] - -- , relays: - -- [ SingleHostAddr - -- { port: Just 8080 - -- , ipv4: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe - -- [ 127, 0, 0, 1 ] - -- , ipv6: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe - -- $ Array.replicate 16 123 - -- } - -- , SingleHostName - -- { port: Just 8080 - -- , dnsName: "example.com" - -- } - -- , MultiHostName { dnsName: "example.com" } - -- ] - -- , poolMetadata: Just $ PoolMetadata - -- { url: URL "https://example.com/" - -- , hash: unsafePartial $ fromJust $ decodeCbor $ wrap $ - -- hexToByteArrayUnsafe - -- "94b8cac47761c1140c57a48d56ab15d27a842abff041b3798b8618fa84641f5a" - -- } - -- } - -- , PoolRetirement - -- { poolKeyHash: PoolPubKeyHash ed25519KeyHash1 - -- , epoch: Epoch one - -- } - -- , GenesisKeyDelegation - -- { genesisHash: unsafePartial $ fromJust $ decodeCbor $ wrap $ - -- hexToByteArrayUnsafe - -- "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - -- , genesisDelegateHash: unsafePartial $ fromJust $ decodeCbor - -- $ wrap - -- $ - -- hexToByteArrayUnsafe - -- "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - -- , vrfKeyhash: unsafePartial $ fromJust $ decodeCbor $ wrap $ - -- hexToByteArrayUnsafe - -- "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - -- } - -- , MoveInstantaneousRewardsCert $ ToOtherPot - -- { pot: Reserves - -- , amount: wrap bigNumOne - -- } - -- , MoveInstantaneousRewardsCert $ ToStakeCreds - -- { pot: Treasury - -- , amounts: MIRToStakeCredentials $ Map.fromFoldable - -- [ wrap stake1 /\ Int.newPositive bigNumOne ] - -- } + [ StakeRegistration $ wrap stake1 + , StakeDeregistration $ wrap stake1 + , StakeDelegation (wrap stake1) + (PoolPubKeyHash ed25519KeyHash1) + , PoolRegistration $ PoolParams + { operator: PoolPubKeyHash ed25519KeyHash1 + , vrfKeyhash: unsafePartial $ fromJust $ + hexToByteArray + "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" + >>= wrap >>> decodeCbor + , pledge: bigNumOne + , cost: bigNumOne + , margin: UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + , rewardAccount: + { networkId: MainnetId, stakeCredential: wrap stake1 } + , poolOwners: [ ed25519KeyHash1 ] + , relays: + [ SingleHostAddr + { port: Just 8080 + , ipv4: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe + [ 127, 0, 0, 1 ] + , ipv6: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe + $ Array.replicate 16 123 + } + , SingleHostName + { port: Just 8080 + , dnsName: "example.com" + } + , MultiHostName { dnsName: "example.com" } + ] + , poolMetadata: Just $ PoolMetadata + { url: URL "https://example.com/" + , hash: unsafePartial $ fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe + "94b8cac47761c1140c57a48d56ab15d27a842abff041b3798b8618fa84641f5a" + } + } + , PoolRetirement + { poolKeyHash: PoolPubKeyHash ed25519KeyHash1 + , epoch: Epoch one + } + , GenesisKeyDelegation + { genesisHash: unsafePartial $ fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe + "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" + , genesisDelegateHash: unsafePartial $ fromJust $ decodeCbor + $ wrap + $ + hexToByteArrayUnsafe + "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" + , vrfKeyhash: unsafePartial $ fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe + "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" + } + , MoveInstantaneousRewardsCert $ ToOtherPot + { pot: Reserves + , amount: wrap bigNumOne + } + , MoveInstantaneousRewardsCert $ ToStakeCreds + { pot: Treasury + , amounts: MIRToStakeCredentials $ Map.fromFoldable + [ wrap stake1 /\ Int.newPositive bigNumOne ] + } ] , withdrawals: Map.fromFoldable [ rewardAddress1 /\ Coin BigNum.one ] - , update: -- Just $ Update - -- { proposedProtocolParameterUpdates: - -- proposedProtocolParameterUpdates1 - -- , epoch: Epoch zero - -- } - Nothing - , auxiliaryDataHash: -- decodeCbor $ wrap - -- $ byteArrayFromIntArrayUnsafe - -- $ Array.replicate 32 0 - Nothing + , update: Just $ Update + { proposedProtocolParameterUpdates: + proposedProtocolParameterUpdates1 + , epoch: Epoch zero + } + , auxiliaryDataHash: decodeCbor $ wrap + $ byteArrayFromIntArrayUnsafe + $ Array.replicate 32 0 , validityStartInterval: Nothing -- Just $ Slot $ BigNum.fromInt 124 , mint: Just $ Mint $ Map.fromFoldable [ currencySymbol1 /\ Map.fromFoldable diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 1fe6fab9c..ed6deede0 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -13,14 +13,15 @@ import Cardano.Types ) import Cardano.Types.AssetName as AssetName import Cardano.Types.Coin as Coin -import Cardano.Types.Credential (Credential(..)) +import Cardano.Types.Credential + ( Credential(PubKeyHashCredential, ScriptHashCredential) + ) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Cardano.Types.Value (lovelaceValueOf) import Contract.Address ( PaymentPubKeyHash(PaymentPubKeyHash) , StakePubKeyHash - , getNetworkId , mkAddress ) import Contract.AuxiliaryData (setGeneralTxMetadata) @@ -173,7 +174,7 @@ import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (error, throw) import JS.BigInt as BigInt -import Mote (group, only, skip, test) +import Mote (group, skip, test) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures @@ -560,7 +561,6 @@ suite = do -- Bob attempts to unlock and send Ada to Charlie withKeyWallet bob do -- First, he should find the transaction input where Ada is locked - networkId <- getNetworkId nsAddr <- mkAddress (wrap $ ScriptHashCredential nsHash) Nothing utxos <- utxosAt nsAddr txInput <- liftContractM "Unable to get UTxO" $ @@ -655,7 +655,6 @@ suite = do -- Bob attempts to unlock and send Ada to Charlie withKeyWallet bob do -- First, he should find the transaction input where Ada is locked - networkId <- getNetworkId nsAddr <- mkAddress (wrap $ ScriptHashCredential nsHash) Nothing utxos <- utxosAt nsAddr txInput <- liftContractM "Unable to get UTxO" $ diff --git a/test/Plutip/Contract/Assert.purs b/test/Plutip/Contract/Assert.purs index b2cafdcff..9c639b04b 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Plutip/Contract/Assert.purs @@ -3,7 +3,7 @@ module Test.Ctl.Plutip.Contract.Assert (suite) where import Prelude -import Cardano.Types (ExUnits(..)) +import Cardano.Types (ExUnits(ExUnits)) import Contract.Monad (liftedM) import Contract.Numeric.BigNum as BigNum import Contract.PlutusData (PlutusData(Integer)) diff --git a/test/PrivateKey.purs b/test/PrivateKey.purs index 9649b1334..f0ba075c2 100644 --- a/test/PrivateKey.purs +++ b/test/PrivateKey.purs @@ -4,7 +4,6 @@ import Prelude import Cardano.Types ( Ed25519Signature - , Transaction(Transaction) , TransactionWitnessSet(TransactionWitnessSet) , Vkeywitness(Vkeywitness) ) @@ -29,7 +28,7 @@ import Ctl.Internal.Wallet.Spec , PrivateStakeKeySource(PrivateStakeKeyFile) , WalletSpec(UseKeys) ) -import Data.Lens (_2, _Just, (^?)) +import Data.Lens (_Just, (^?)) import Data.Lens.Index (ix) import Data.Lens.Iso.Newtype (unto) import Data.Lens.Record (prop) diff --git a/test/Serialization.purs b/test/Serialization.purs index 4c24024bf..602808482 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -22,13 +22,7 @@ import Effect.Exception (error) import JS.BigInt as BigInt import Mote (group, test) import Test.Ctl.Fixtures - ( txBinaryFixture1 - , txBinaryFixture2 - , txBinaryFixture3 - , txBinaryFixture4 - , txBinaryFixture5 - , txBinaryFixture6 - , txFixture1 + ( txFixture1 , txFixture2 , txFixture3 , txFixture4 @@ -136,12 +130,6 @@ suite = do let bnNeg = "-1" BN.fromString bnNeg `shouldSatisfy` isNothing -serializeTX :: Transaction -> String -> Aff Unit -serializeTX tx fixture = - liftEffect $ do - let bytes = unwrap $ encodeCbor tx - byteArrayToHex bytes `shouldEqual` fixture - txSerializedRoundtrip :: Transaction -> Aff Unit txSerializedRoundtrip tx = do let serialized = encodeCbor tx diff --git a/test/Serialization/Hash.purs b/test/Serialization/Hash.purs index 936670636..44dfa79cf 100644 --- a/test/Serialization/Hash.purs +++ b/test/Serialization/Hash.purs @@ -1,17 +1,15 @@ module Test.Ctl.Serialization.Hash (suite) where +import Prelude + import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.ScriptHash as ScriptHash -import Control.Bind (bind, discard) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Aliases (Bech32String) import Data.ByteArray (hexToByteArrayUnsafe) -import Data.Eq ((==)) -import Data.Function (($)) import Data.Maybe (Maybe(Just, Nothing), isNothing) import Data.Newtype (wrap) -import Data.Unit (Unit) import Effect.Aff (Aff) import Mote (test) import Partial.Unsafe (unsafePartial) @@ -31,42 +29,43 @@ suite = unsafePartial $ test "Serialization.Hash" do assertTrue "ed25519KeyHashFromBech32 returns Nothing on random string" (isNothing $ Ed25519KeyHash.fromBech32 invalidBech32) - pkh <- errMaybe "ed25519KeyHashFromBech32 failed" $ Ed25519KeyHash.fromBech32 - pkhBech32 - let - pkhB32 = Ed25519KeyHash.toBech32Unsafe "addr_vkh" pkh - mPkhB32 = Ed25519KeyHash.toBech32 "addr_vkh" pkh - pkhBts = encodeCbor pkh - pkh2 = decodeCbor pkhBts + do + pkh <- errMaybe "ed25519KeyHashFromBech32 failed" $ + Ed25519KeyHash.fromBech32 + pkhBech32 + let + pkhB32 = Ed25519KeyHash.toBech32Unsafe "addr_vkh" pkh + mPkhB32 = Ed25519KeyHash.toBech32 "addr_vkh" pkh + pkhBts = encodeCbor pkh + pkh2 = decodeCbor pkhBts - assertTrue - "Safe Ed25519KeyHash.toBech32 should produce Just when unsafe version works" - (mPkhB32 == Just pkhB32) + assertTrue + "Safe Ed25519KeyHash.toBech32 should produce Just when unsafe version works" + (mPkhB32 == Just pkhB32) - assertTrue - "Safe Ed25519KeyHash.toBech32 should return Nothing on invalid prefix" - (Ed25519KeyHash.toBech32 "" pkh == Nothing) + assertTrue + "Safe Ed25519KeyHash.toBech32 should return Nothing on invalid prefix" + (Ed25519KeyHash.toBech32 "" pkh == Nothing) - assertTrue "ed25519KeyHashFromBytes does not reverts ed25519KeyHashToBytes" - (pkh2 == Just pkh) + assertTrue "ed25519KeyHashFromBytes does not reverts ed25519KeyHashToBytes" + (pkh2 == Just pkh) - assertTrue - "ed25519KeyHashFromBech32 does not reverts Ed25519KeyHash.toBech32Unsafe" - (pkhB32 == pkhBech32) + assertTrue + "ed25519KeyHashFromBech32 does not reverts Ed25519KeyHash.toBech32Unsafe" + (pkhB32 == pkhBech32) -- + do + assertTrue "scriptHashFromBech32 returns Nothing on random string" + (isNothing $ ScriptHash.fromBech32 invalidBech32) - assertTrue "scriptHashFromBech32 returns Nothing on random string" - (isNothing $ ScriptHash.fromBech32 invalidBech32) - - scrh <- errMaybe "scriptHashFromBytes failed" $ decodeCbor - $ wrap - $ hexToByteArrayUnsafe scriptHashHex - let - scrhB32 = ScriptHash.toBech32Unsafe "stake_vkh" scrh - mScrhB32 = ScriptHash.toBech32Unsafe "stake_vkh" scrh - scrhBts = encodeCbor scrh - scrhFromBech = ScriptHash.fromBech32 scrhB32 + scrh <- errMaybe "scriptHashFromBytes failed" $ decodeCbor + $ wrap + $ hexToByteArrayUnsafe scriptHashHex + let + scrhB32 = ScriptHash.toBech32Unsafe "stake_vkh" scrh + scrhFromBech = ScriptHash.fromBech32 scrhB32 - assertTrue "ScriptHash.fromBech32 does not reverts ScriptHash.toBech32Unsafe" - (scrhFromBech == Just scrh) + assertTrue + "ScriptHash.fromBech32 does not reverts ScriptHash.toBech32Unsafe" + (scrhFromBech == Just scrh) diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index 03afa0f01..2941274cb 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -7,7 +7,7 @@ module Test.Ctl.Types.Interval import Prelude import Aeson (class DecodeAeson, decodeJsonString, printJsonDecodeError) -import Cardano.Types (Slot(..)) +import Cardano.Types (Slot(Slot)) import Cardano.Types.BigNum (fromInt) as BigNum import Control.Monad.Error.Class (liftEither) import Control.Monad.Except (throwError) From 040489ca113eb04e57445495a4a8650fb3492842 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 15 Apr 2024 23:38:09 +0400 Subject: [PATCH 094/373] Remove unused ps deps --- spago.dhall | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spago.dhall b/spago.dhall index d5ddc8a08..74eef5898 100644 --- a/spago.dhall +++ b/spago.dhall @@ -12,7 +12,6 @@ You can edit this file as you like. , "ansi" , "argonaut" , "argonaut-codecs" - , "arraybuffer-types" , "arrays" , "avar" , "bifunctors" @@ -33,7 +32,6 @@ You can edit this file as you like. , "debug" , "effect" , "either" - , "encoding" , "enums" , "exceptions" , "foldable-traversable" @@ -41,7 +39,6 @@ You can edit this file as you like. , "foreign-object" , "formatters" , "functions" - , "gen" , "heterogeneous" , "http-methods" , "identity" @@ -96,7 +93,6 @@ You can edit this file as you like. , "toppokki" , "transformers" , "tuples" - , "typelevel" , "typelevel-prelude" , "uint" , "unfoldable" From 262dee4aaa3abfe213369fc9f27736406e80b279 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 16 Apr 2024 02:17:02 +0400 Subject: [PATCH 095/373] Update spago-packages --- spago-packages.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spago-packages.nix b/spago-packages.nix index 2ec06b0cd..c99cdc1fa 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -247,11 +247,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "ed634b0863b7c443a35a9624a879e92a63057388"; + version = "6636bd0fa48f3608ce3988d55384b00756aa0375"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "ed634b0863b7c443a35a9624a879e92a63057388"; - sha256 = "1js08xgwy6bvyx3z1hkzszrdb2ix6zxjjb4bz1gxxkwsqb9bjn3z"; + rev = "6636bd0fa48f3608ce3988d55384b00756aa0375"; + sha256 = "0zxwhw66v576h4z8cs6zgfaax1mqg9ljgii6h737lh6kkk5bza6l"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -259,11 +259,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "651f8e12b59574c7525f9015093c9c05c81ad0b4"; + version = "64652087362a8591ae0a8d73a2f4857762002606"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "651f8e12b59574c7525f9015093c9c05c81ad0b4"; - sha256 = "0w151jb4wl5yjvficc1ipkv3migzhlka78pla757w512zczw461q"; + rev = "64652087362a8591ae0a8d73a2f4857762002606"; + sha256 = "0b2mbvd9v6fvwpp155hh6yh8jb68xgx1gqg4xi3h3vhgqxyb45qq"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 6f51fc51498765498ed09fda0cfa4863fa33deba Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 16 Apr 2024 04:12:24 +0400 Subject: [PATCH 096/373] Remove dead code, update CHANGELOG --- CHANGELOG.md | 18 +- package-lock.json | 14 +- package.json | 4 +- src/Contract/Numeric/NatRatio.purs | 12 - src/Contract/PlutusData.purs | 4 + src/Contract/Prim/Any.purs | 5 - src/Contract/Staking.purs | 4 +- src/Internal/Metadata/MetadataType.purs | 1 + src/Internal/QueryM/Ogmios.purs | 12 +- src/Internal/QueryM/Pools.purs | 2 - src/Internal/Service/Blockfrost.purs | 2 +- src/Internal/Types/Aliases.purs | 11 - src/Internal/Types/Any.purs | 13 -- src/Internal/Types/CostModels.purs | 219 ------------------ src/Internal/Types/Datum.purs | 40 ---- src/Internal/Types/MultiMap.purs | 50 ---- src/Internal/Types/NatRatio.purs | 58 ----- src/Internal/Types/Redeemer.purs | 49 ---- src/Internal/Types/RedeemerTag.purs | 14 -- src/Internal/Types/VRFKeyHash.purs | 36 --- src/Internal/Types/Val.purs | 47 ++-- src/Internal/Types/Validator.purs | 29 --- templates/ctl-scaffold/test/Main.purs | 6 +- test/Blockfrost/GenerateFixtures/Helpers.purs | 2 +- test/CoinSelection/CoinSelection.purs | 2 +- test/Fixtures.purs | 2 +- test/Hashing.purs | 55 +---- test/Ogmios/GenerateFixtures.purs | 2 +- test/Plutus/Credential.purs | 2 +- test/Serialization/Hash.purs | 2 +- {src/Internal => test/Utils}/Hashing.js | 0 {src/Internal => test/Utils}/Hashing.purs | 7 +- 32 files changed, 85 insertions(+), 639 deletions(-) delete mode 100644 src/Contract/Numeric/NatRatio.purs delete mode 100644 src/Contract/Prim/Any.purs delete mode 100644 src/Internal/Types/Aliases.purs delete mode 100644 src/Internal/Types/Any.purs delete mode 100644 src/Internal/Types/CostModels.purs delete mode 100644 src/Internal/Types/Datum.purs delete mode 100644 src/Internal/Types/MultiMap.purs delete mode 100644 src/Internal/Types/NatRatio.purs delete mode 100644 src/Internal/Types/Redeemer.purs delete mode 100644 src/Internal/Types/RedeemerTag.purs delete mode 100644 src/Internal/Types/VRFKeyHash.purs delete mode 100644 src/Internal/Types/Validator.purs rename {src/Internal => test/Utils}/Hashing.js (100%) rename {src/Internal => test/Utils}/Hashing.purs (93%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f5eeaf00..fb8ddd7b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,6 +64,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## [Unreleased] +In this version, we've refactored CTL and separated it into multiple reusable sub-packages, most notably: + +- this package +- `purescript-cardano-types` - (`Cardano.Types.*`) - domain types for Cardano ledger +- `purescript-cardano-serialization-lib` - (`Cardano.Serialization.Lib.*`) - PureScript wrapper for CSL +- `purescript-plutus-types` - (`Cardano.Plutus.*`) - Plutus-style domain types used only for `ToData`/`FromData` instances. + +See the [cardano-purescript repo](https://github.com/klntsky/cardano-purescript) for a complete list of new packages. + ### Added ### Changed @@ -78,11 +87,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `plutusScriptV1FromEnvelope`, `plutusScriptV2FromEnvelope` have been replaced with `plutusScriptFromEnvelope` (the script is tagged with its language anyway) - `NoOutputDatum` variant has been removed from `OutputDatum`: instead, it was made optional via Maybe in `TransactionOutput` - `TransactionMetadatum` constructor naming, in PS and JSON encoding: `MetadataMap` -> `Map`, `MetadataList` -> `List` +- `Contract.PlutusData.Redeemer` has been renamed to `RedeemerDatum` (to resolve naming conflict with `cardano-ledger`-style redeemer) +- `Contract.PlutusData.Datum` has been deprecated, use `Cardano.Types.PlutusData` ### Fixed ### Removed +- `Contract.Address` utilities to work with `Address` - use `mkAddress` and machinery from `Cardano.Types.Address` +- `Contract.Credential` renamings: + - `PubKeyCredential` -> `PubKeyHashCredential` + - `ScriptCredential` -> `ScriptHashCredential` - `ModifyTx` error: made conversion functions total and removed the need to handle it - `Contract.CborBytes` utils: - `cborBytesToByteArray` @@ -114,7 +129,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.Transaction`: - `TransactionOutputWithRefScript` - use `Cardano.Types.TransactionOutput`. It comes with refscript included. - `getTxFinalFee` - +- `Contract.Numeric.NatRatio` - the module was not used in the library. +- `Contract.AssocMap` - use `Cardano.Plutus.Types.Map` from [`purescript-plutus-types`](https://github.com/mlabs-haskell/purescript-plutus-types) diff --git a/package-lock.json b/package-lock.json index 2cc4d7f7b..d94283b52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,9 +19,7 @@ "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", - "blakejs": "1.2.1", "bufferutil": "4.0.5", - "jssha": "3.2.0", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", @@ -30,11 +28,13 @@ "xhr2": "0.2.1" }, "devDependencies": { + "blakejs": "1.2.1", "buffer": "6.0.3", "doctoc": "^2.2.1", "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", + "jssha": "3.2.0", "node-polyfill-webpack-plugin": "2.0.1", "webpack": "5.88.1", "webpack-cli": "5.1.4", @@ -1306,7 +1306,8 @@ "node_modules/blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true }, "node_modules/bn.js": { "version": "5.2.1", @@ -3599,6 +3600,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", + "dev": true, "engines": { "node": "*" } @@ -7311,7 +7313,8 @@ "blakejs": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true }, "bn.js": { "version": "5.2.1", @@ -9044,7 +9047,8 @@ "jssha": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", - "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==" + "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", + "dev": true }, "kind-of": { "version": "6.0.3", diff --git a/package.json b/package.json index 779d200c2..c93f6830c 100755 --- a/package.json +++ b/package.json @@ -42,9 +42,7 @@ "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", - "blakejs": "1.2.1", "bufferutil": "4.0.5", - "jssha": "3.2.0", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", @@ -53,6 +51,8 @@ "xhr2": "0.2.1" }, "devDependencies": { + "blakejs": "1.2.1", + "jssha": "3.2.0", "buffer": "6.0.3", "doctoc": "^2.2.1", "esbuild": "0.18.11", diff --git a/src/Contract/Numeric/NatRatio.purs b/src/Contract/Numeric/NatRatio.purs deleted file mode 100644 index 93abdb910..000000000 --- a/src/Contract/Numeric/NatRatio.purs +++ /dev/null @@ -1,12 +0,0 @@ --- | A module for constructing well-defined ratios of natural numbers (with --- | non-zero denominator), potentially via cancellation of negative sign. -module Contract.Numeric.NatRatio (module NatRatio) where - -import Ctl.Internal.Types.NatRatio - ( NatRatio - , denominator - , fromBigInts - , fromRational - , numerator - , toRational - ) as NatRatio diff --git a/src/Contract/PlutusData.purs b/src/Contract/PlutusData.purs index d492caa15..00483612a 100644 --- a/src/Contract/PlutusData.purs +++ b/src/Contract/PlutusData.purs @@ -8,6 +8,7 @@ module Contract.PlutusData , unitRedeemer , module X , Datum + , Redeemer ) where import Prelude @@ -125,3 +126,6 @@ unitRedeemer = Redeemer.unit -- | DEPRECATED. Use `Cardano.Types.PlutusData` type Datum = PlutusData + +-- | DEPRECATED. Use `Contract.PlutusData.RedeemerDatum` +type Redeemer = RedeemerDatum diff --git a/src/Contract/Prim/Any.purs b/src/Contract/Prim/Any.purs deleted file mode 100644 index 098dfd710..000000000 --- a/src/Contract/Prim/Any.purs +++ /dev/null @@ -1,5 +0,0 @@ --- | For converting a subset of polymorphic types to that which will work with --- | `PlutusData`. -module Contract.Prim.Any (module Any) where - -import Ctl.Internal.Types.Any (Any) as Any diff --git a/src/Contract/Staking.purs b/src/Contract/Staking.purs index c13f9e803..2be33a901 100644 --- a/src/Contract/Staking.purs +++ b/src/Contract/Staking.purs @@ -11,8 +11,8 @@ import Cardano.Types (Ed25519KeyHash, PoolPubKeyHash, ScriptHash) import Contract.Monad (Contract) import Control.Monad.Reader (asks) import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) -import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) as X +import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) +import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) as X import Data.Either (either) import Data.Maybe (Maybe) import Data.Newtype (wrap) diff --git a/src/Internal/Metadata/MetadataType.purs b/src/Internal/Metadata/MetadataType.purs index 7360977cc..3168158e4 100644 --- a/src/Internal/Metadata/MetadataType.purs +++ b/src/Internal/Metadata/MetadataType.purs @@ -16,6 +16,7 @@ import Data.Maybe (Maybe) import Data.Newtype (unwrap, wrap) import Type.Proxy (Proxy(Proxy)) +-- | Associates a metadata label with a type. E.g. a CIP-25 metadata type could be associated with label `721`. class (FromMetadata a, ToMetadata a) <= MetadataType (a :: Type) where metadataLabel :: Proxy a -> MetadataLabel diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 2df19523e..8d1cb2eb8 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -129,6 +129,7 @@ import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.PoolMetadata (PoolMetadata(PoolMetadata)) import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) +import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) as RedeemerTag import Cardano.Types.Relay ( Relay(SingleHostAddr, SingleHostName, MultiHostName) ) @@ -163,7 +164,6 @@ import Ctl.Internal.Types.ProtocolParameters ) import Ctl.Internal.Types.Rational (Rational, (%)) import Ctl.Internal.Types.Rational as Rational -import Ctl.Internal.Types.RedeemerTag as RedeemerTag import Ctl.Internal.Types.SystemStart ( SystemStart , sysStartFromOgmiosTimestamp @@ -806,10 +806,18 @@ decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch case split (Pattern ":") redeemerPtrRaw of [ tagRaw, indexRaw ] -> { redeemerTag: _, redeemerIndex: _ } - <$> RedeemerTag.fromString tagRaw + <$> redeemerTagFromString tagRaw <*> UInt.fromString indexRaw _ -> Nothing +redeemerTagFromString :: String -> Maybe RedeemerTag +redeemerTagFromString = case _ of + "spend" -> Just RedeemerTag.Spend + "mint" -> Just RedeemerTag.Mint + "certificate" -> Just RedeemerTag.Cert + "withdrawal" -> Just RedeemerTag.Reward + _ -> Nothing + type OgmiosDatum = String type OgmiosScript = String type OgmiosTxId = String diff --git a/src/Internal/QueryM/Pools.purs b/src/Internal/QueryM/Pools.purs index 3ebcfd5b3..d1e9f9c08 100644 --- a/src/Internal/QueryM/Pools.purs +++ b/src/Internal/QueryM/Pools.purs @@ -4,7 +4,6 @@ module Ctl.Internal.QueryM.Pools , getPoolsParameters , getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards - , module X ) where import Prelude @@ -21,7 +20,6 @@ import Ctl.Internal.QueryM.Ogmios ) import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) -import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) as X import Ctl.Internal.Types.StakeValidatorHash (StakeValidatorHash) import Data.ByteArray (byteArrayToHex) import Data.Map (Map) diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index b00bf46b1..f8130c5ae 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -165,7 +165,6 @@ import Ctl.Internal.QueryM.Ogmios , decodeRedeemerPointer ) import Ctl.Internal.QueryM.Ogmios as Ogmios -import Ctl.Internal.QueryM.Pools (DelegationsAndRewards) import Ctl.Internal.ServerConfig (ServerConfig, mkHttpUrl) import Ctl.Internal.Service.Error ( ClientError @@ -183,6 +182,7 @@ import Ctl.Internal.Service.Helpers , decodeAssetClass ) import Ctl.Internal.Types.Chain (Tip(Tip, TipAtGenesis)) +import Ctl.Internal.Types.DelegationsAndRewards (DelegationsAndRewards) import Ctl.Internal.Types.EraSummaries ( EraSummaries , EraSummary diff --git a/src/Internal/Types/Aliases.purs b/src/Internal/Types/Aliases.purs deleted file mode 100644 index 5e2317d9c..000000000 --- a/src/Internal/Types/Aliases.purs +++ /dev/null @@ -1,11 +0,0 @@ -module Ctl.Internal.Types.Aliases where - --- | IMPORTANT: All functions accepting `Bech32String` should behave correctly --- | in case `Bech32String` is not in bech32 format. --- | The type alias is here to make the intention of code more readable. -type Bech32String = String - --- | IMPORTANT: All functions accepting `Base58String` should behave correctly --- | in case `Base58String` is not in expected base58 format. --- | The type alias is here to make the intention of code more readable. -type Base58String = String diff --git a/src/Internal/Types/Any.purs b/src/Internal/Types/Any.purs deleted file mode 100644 index 02ca5f7e5..000000000 --- a/src/Internal/Types/Any.purs +++ /dev/null @@ -1,13 +0,0 @@ -module Ctl.Internal.Types.Any - ( Any - ) where - -import Prelude (class Show) - --- Not sure if this is necessary but keep for now. --- | For converting a subset of polymorphic types to that which will work with --- | `PlutusData`. -foreign import data Any :: Type - -instance Show Any where - show _ = "(Any)" diff --git a/src/Internal/Types/CostModels.purs b/src/Internal/Types/CostModels.purs deleted file mode 100644 index d083114d9..000000000 --- a/src/Internal/Types/CostModels.purs +++ /dev/null @@ -1,219 +0,0 @@ -module Ctl.Internal.Types.CostModels - ( CostModelV1 - , CostModelV2 - , convertPlutusV1CostModel - , convertPlutusV2CostModel - ) where - -import Prelude - -import Cardano.Types.CostModel (CostModel) -import Cardano.Types.Int as Csl -import Data.Array (reverse) -import Data.List (List) -import Data.List as List -import Data.Newtype (wrap) -import Heterogeneous.Folding (class HFoldl, hfoldl) - --- | A type that represents a JSON-encoded Costmodel in format used by Ogmios -type CostModelV1 = - ( "addInteger-cpu-arguments-intercept" :: Csl.Int - , "addInteger-cpu-arguments-slope" :: Csl.Int - , "addInteger-memory-arguments-intercept" :: Csl.Int - , "addInteger-memory-arguments-slope" :: Csl.Int - , "appendByteString-cpu-arguments-intercept" :: Csl.Int - , "appendByteString-cpu-arguments-slope" :: Csl.Int - , "appendByteString-memory-arguments-intercept" :: Csl.Int - , "appendByteString-memory-arguments-slope" :: Csl.Int - , "appendString-cpu-arguments-intercept" :: Csl.Int - , "appendString-cpu-arguments-slope" :: Csl.Int - , "appendString-memory-arguments-intercept" :: Csl.Int - , "appendString-memory-arguments-slope" :: Csl.Int - , "bData-cpu-arguments" :: Csl.Int - , "bData-memory-arguments" :: Csl.Int - , "blake2b_256-cpu-arguments-intercept" :: Csl.Int - , "blake2b_256-cpu-arguments-slope" :: Csl.Int - , "blake2b_256-memory-arguments" :: Csl.Int - , "cekApplyCost-exBudgetCPU" :: Csl.Int - , "cekApplyCost-exBudgetMemory" :: Csl.Int - , "cekBuiltinCost-exBudgetCPU" :: Csl.Int - , "cekBuiltinCost-exBudgetMemory" :: Csl.Int - , "cekConstCost-exBudgetCPU" :: Csl.Int - , "cekConstCost-exBudgetMemory" :: Csl.Int - , "cekDelayCost-exBudgetCPU" :: Csl.Int - , "cekDelayCost-exBudgetMemory" :: Csl.Int - , "cekForceCost-exBudgetCPU" :: Csl.Int - , "cekForceCost-exBudgetMemory" :: Csl.Int - , "cekLamCost-exBudgetCPU" :: Csl.Int - , "cekLamCost-exBudgetMemory" :: Csl.Int - , "cekStartupCost-exBudgetCPU" :: Csl.Int - , "cekStartupCost-exBudgetMemory" :: Csl.Int - , "cekVarCost-exBudgetCPU" :: Csl.Int - , "cekVarCost-exBudgetMemory" :: Csl.Int - , "chooseData-cpu-arguments" :: Csl.Int - , "chooseData-memory-arguments" :: Csl.Int - , "chooseList-cpu-arguments" :: Csl.Int - , "chooseList-memory-arguments" :: Csl.Int - , "chooseUnit-cpu-arguments" :: Csl.Int - , "chooseUnit-memory-arguments" :: Csl.Int - , "consByteString-cpu-arguments-intercept" :: Csl.Int - , "consByteString-cpu-arguments-slope" :: Csl.Int - , "consByteString-memory-arguments-intercept" :: Csl.Int - , "consByteString-memory-arguments-slope" :: Csl.Int - , "constrData-cpu-arguments" :: Csl.Int - , "constrData-memory-arguments" :: Csl.Int - , "decodeUtf8-cpu-arguments-intercept" :: Csl.Int - , "decodeUtf8-cpu-arguments-slope" :: Csl.Int - , "decodeUtf8-memory-arguments-intercept" :: Csl.Int - , "decodeUtf8-memory-arguments-slope" :: Csl.Int - , "divideInteger-cpu-arguments-constant" :: Csl.Int - , "divideInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int - , "divideInteger-cpu-arguments-model-arguments-slope" :: Csl.Int - , "divideInteger-memory-arguments-intercept" :: Csl.Int - , "divideInteger-memory-arguments-minimum" :: Csl.Int - , "divideInteger-memory-arguments-slope" :: Csl.Int - , "encodeUtf8-cpu-arguments-intercept" :: Csl.Int - , "encodeUtf8-cpu-arguments-slope" :: Csl.Int - , "encodeUtf8-memory-arguments-intercept" :: Csl.Int - , "encodeUtf8-memory-arguments-slope" :: Csl.Int - , "equalsByteString-cpu-arguments-constant" :: Csl.Int - , "equalsByteString-cpu-arguments-intercept" :: Csl.Int - , "equalsByteString-cpu-arguments-slope" :: Csl.Int - , "equalsByteString-memory-arguments" :: Csl.Int - , "equalsData-cpu-arguments-intercept" :: Csl.Int - , "equalsData-cpu-arguments-slope" :: Csl.Int - , "equalsData-memory-arguments" :: Csl.Int - , "equalsInteger-cpu-arguments-intercept" :: Csl.Int - , "equalsInteger-cpu-arguments-slope" :: Csl.Int - , "equalsInteger-memory-arguments" :: Csl.Int - , "equalsString-cpu-arguments-constant" :: Csl.Int - , "equalsString-cpu-arguments-intercept" :: Csl.Int - , "equalsString-cpu-arguments-slope" :: Csl.Int - , "equalsString-memory-arguments" :: Csl.Int - , "fstPair-cpu-arguments" :: Csl.Int - , "fstPair-memory-arguments" :: Csl.Int - , "headList-cpu-arguments" :: Csl.Int - , "headList-memory-arguments" :: Csl.Int - , "iData-cpu-arguments" :: Csl.Int - , "iData-memory-arguments" :: Csl.Int - , "ifThenElse-cpu-arguments" :: Csl.Int - , "ifThenElse-memory-arguments" :: Csl.Int - , "indexByteString-cpu-arguments" :: Csl.Int - , "indexByteString-memory-arguments" :: Csl.Int - , "lengthOfByteString-cpu-arguments" :: Csl.Int - , "lengthOfByteString-memory-arguments" :: Csl.Int - , "lessThanByteString-cpu-arguments-intercept" :: Csl.Int - , "lessThanByteString-cpu-arguments-slope" :: Csl.Int - , "lessThanByteString-memory-arguments" :: Csl.Int - , "lessThanEqualsByteString-cpu-arguments-intercept" :: Csl.Int - , "lessThanEqualsByteString-cpu-arguments-slope" :: Csl.Int - , "lessThanEqualsByteString-memory-arguments" :: Csl.Int - , "lessThanEqualsInteger-cpu-arguments-intercept" :: Csl.Int - , "lessThanEqualsInteger-cpu-arguments-slope" :: Csl.Int - , "lessThanEqualsInteger-memory-arguments" :: Csl.Int - , "lessThanInteger-cpu-arguments-intercept" :: Csl.Int - , "lessThanInteger-cpu-arguments-slope" :: Csl.Int - , "lessThanInteger-memory-arguments" :: Csl.Int - , "listData-cpu-arguments" :: Csl.Int - , "listData-memory-arguments" :: Csl.Int - , "mapData-cpu-arguments" :: Csl.Int - , "mapData-memory-arguments" :: Csl.Int - , "mkCons-cpu-arguments" :: Csl.Int - , "mkCons-memory-arguments" :: Csl.Int - , "mkNilData-cpu-arguments" :: Csl.Int - , "mkNilData-memory-arguments" :: Csl.Int - , "mkNilPairData-cpu-arguments" :: Csl.Int - , "mkNilPairData-memory-arguments" :: Csl.Int - , "mkPairData-cpu-arguments" :: Csl.Int - , "mkPairData-memory-arguments" :: Csl.Int - , "modInteger-cpu-arguments-constant" :: Csl.Int - , "modInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int - , "modInteger-cpu-arguments-model-arguments-slope" :: Csl.Int - , "modInteger-memory-arguments-intercept" :: Csl.Int - , "modInteger-memory-arguments-minimum" :: Csl.Int - , "modInteger-memory-arguments-slope" :: Csl.Int - , "multiplyInteger-cpu-arguments-intercept" :: Csl.Int - , "multiplyInteger-cpu-arguments-slope" :: Csl.Int - , "multiplyInteger-memory-arguments-intercept" :: Csl.Int - , "multiplyInteger-memory-arguments-slope" :: Csl.Int - , "nullList-cpu-arguments" :: Csl.Int - , "nullList-memory-arguments" :: Csl.Int - , "quotientInteger-cpu-arguments-constant" :: Csl.Int - , "quotientInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int - , "quotientInteger-cpu-arguments-model-arguments-slope" :: Csl.Int - , "quotientInteger-memory-arguments-intercept" :: Csl.Int - , "quotientInteger-memory-arguments-minimum" :: Csl.Int - , "quotientInteger-memory-arguments-slope" :: Csl.Int - , "remainderInteger-cpu-arguments-constant" :: Csl.Int - , "remainderInteger-cpu-arguments-model-arguments-intercept" :: Csl.Int - , "remainderInteger-cpu-arguments-model-arguments-slope" :: Csl.Int - , "remainderInteger-memory-arguments-intercept" :: Csl.Int - , "remainderInteger-memory-arguments-minimum" :: Csl.Int - , "remainderInteger-memory-arguments-slope" :: Csl.Int - , "sha2_256-cpu-arguments-intercept" :: Csl.Int - , "sha2_256-cpu-arguments-slope" :: Csl.Int - , "sha2_256-memory-arguments" :: Csl.Int - , "sha3_256-cpu-arguments-intercept" :: Csl.Int - , "sha3_256-cpu-arguments-slope" :: Csl.Int - , "sha3_256-memory-arguments" :: Csl.Int - , "sliceByteString-cpu-arguments-intercept" :: Csl.Int - , "sliceByteString-cpu-arguments-slope" :: Csl.Int - , "sliceByteString-memory-arguments-intercept" :: Csl.Int - , "sliceByteString-memory-arguments-slope" :: Csl.Int - , "sndPair-cpu-arguments" :: Csl.Int - , "sndPair-memory-arguments" :: Csl.Int - , "subtractInteger-cpu-arguments-intercept" :: Csl.Int - , "subtractInteger-cpu-arguments-slope" :: Csl.Int - , "subtractInteger-memory-arguments-intercept" :: Csl.Int - , "subtractInteger-memory-arguments-slope" :: Csl.Int - , "tailList-cpu-arguments" :: Csl.Int - , "tailList-memory-arguments" :: Csl.Int - , "trace-cpu-arguments" :: Csl.Int - , "trace-memory-arguments" :: Csl.Int - , "unBData-cpu-arguments" :: Csl.Int - , "unBData-memory-arguments" :: Csl.Int - , "unConstrData-cpu-arguments" :: Csl.Int - , "unConstrData-memory-arguments" :: Csl.Int - , "unIData-cpu-arguments" :: Csl.Int - , "unIData-memory-arguments" :: Csl.Int - , "unListData-cpu-arguments" :: Csl.Int - , "unListData-memory-arguments" :: Csl.Int - , "unMapData-cpu-arguments" :: Csl.Int - , "unMapData-memory-arguments" :: Csl.Int - , "verifyEd25519Signature-cpu-arguments-intercept" :: Csl.Int - , "verifyEd25519Signature-cpu-arguments-slope" :: Csl.Int - , "verifyEd25519Signature-memory-arguments" :: Csl.Int - ) - -type CostModelV2 = - ( "serialiseData-cpu-arguments-intercept" :: Csl.Int - , "serialiseData-cpu-arguments-slope" :: Csl.Int - , "serialiseData-memory-arguments-intercept" :: Csl.Int - , "serialiseData-memory-arguments-slope" :: Csl.Int - , "verifyEcdsaSecp256k1Signature-cpu-arguments" :: Csl.Int - , "verifyEcdsaSecp256k1Signature-memory-arguments" :: Csl.Int - , "verifySchnorrSecp256k1Signature-cpu-arguments-intercept" :: Csl.Int - , "verifySchnorrSecp256k1Signature-cpu-arguments-slope" :: Csl.Int - , "verifySchnorrSecp256k1Signature-memory-arguments" :: Csl.Int - | CostModelV1 - ) - --- This assumes that cost models are stored in lexicographical order -convertCostModel - :: forall costModel - . HFoldl (List Csl.Int -> Csl.Int -> List Csl.Int) (List Csl.Int) costModel - (List Csl.Int) - => costModel - -> CostModel -convertCostModel model = wrap $ reverse $ List.toUnfoldable $ hfoldl - ((\xs x -> x List.: xs) :: List Csl.Int -> Csl.Int -> List Csl.Int) - (mempty :: List Csl.Int) - model - --- Specialized conversions to only perform the type level traversals once - -convertPlutusV1CostModel :: Record CostModelV1 -> CostModel -convertPlutusV1CostModel = convertCostModel - -convertPlutusV2CostModel :: Record CostModelV2 -> CostModel -convertPlutusV2CostModel = convertCostModel diff --git a/src/Internal/Types/Datum.purs b/src/Internal/Types/Datum.purs deleted file mode 100644 index e6fc85140..000000000 --- a/src/Internal/Types/Datum.purs +++ /dev/null @@ -1,40 +0,0 @@ -module Ctl.Internal.Types.Datum - ( Datum(Datum) - , unitDatum - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson, decodeAeson, encodeAeson) -import Cardano.FromData (class FromData) -import Cardano.ToData (class ToData, toData) -import Cardano.Types.PlutusData (PlutusData) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Show.Generic (genericShow) - --- | Define data types mirroring Plutus `Datum`, like `Datum` itself and --- | `Redeemer` where the latter is not to be confused with the CSL-stype --- | `Types.Transaction.Redeemer`. - --- | `Datum` is defined as a newtype of `PlutusData` -newtype Datum = Datum PlutusData - -derive instance Newtype Datum _ -derive instance Generic Datum _ -derive newtype instance Eq Datum -derive newtype instance FromData Datum -derive newtype instance Ord Datum -derive newtype instance ToData Datum - -instance EncodeAeson Datum where - encodeAeson = encodeAeson <<< unwrap - -instance DecodeAeson Datum where - decodeAeson = map wrap <<< decodeAeson - -instance Show Datum where - show = genericShow - -unitDatum :: Datum -unitDatum = Datum $ toData unit diff --git a/src/Internal/Types/MultiMap.purs b/src/Internal/Types/MultiMap.purs deleted file mode 100644 index bbd1e45b0..000000000 --- a/src/Internal/Types/MultiMap.purs +++ /dev/null @@ -1,50 +0,0 @@ -module Ctl.Internal.Types.MultiMap - ( MultiMap - , empty - , singleton - , insert - , delete - , lookup - ) where - -import Control.Alt (map) -import Control.Bind ((>>=)) -import Control.Category ((>>>)) -import Data.Array as Array -import Data.Bounded (class Ord) -import Data.Function (($)) -import Data.Map as Map -import Data.Maybe (Maybe) -import Data.Monoid ((<>)) - --- | A specific-use MultiMap where values for the same key are stored in FIFO container --- implemented via Array -newtype MultiMap (k :: Type) (v :: Type) = MultiMap (Map.Map k (Array v)) - --- | Constructs an empty `MultiMap` -empty :: forall (k :: Type) (v :: Type). MultiMap k v -empty = MultiMap Map.empty - --- | Constructs a `MultiMap` storing single key-value pair. -singleton :: forall (k :: Type) (v :: Type). Ord k => k -> v -> MultiMap k v -singleton k v = MultiMap $ Map.insert k (Array.singleton v) Map.empty - --- | Inserts value. In case k exist the value is stored at the end of --- existing values array. -insert - :: forall (k :: Type) (v :: Type) - . Ord k - => k - -> v - -> MultiMap k v - -> MultiMap k v -insert k v (MultiMap m) = MultiMap $ Map.insertWith (<>) k (Array.singleton v) m - --- | Deletes first value from a value array under given k. -delete - :: forall (k :: Type) (v :: Type). Ord k => k -> MultiMap k v -> MultiMap k v -delete k (MultiMap m) = MultiMap $ Map.update (Array.uncons >>> map _.tail) k m - --- | Lookup first value for given key. -lookup :: forall (k :: Type) (v :: Type). Ord k => k -> MultiMap k v -> Maybe v -lookup k (MultiMap m) = Map.lookup k m >>= Array.head diff --git a/src/Internal/Types/NatRatio.purs b/src/Internal/Types/NatRatio.purs deleted file mode 100644 index 7be05641e..000000000 --- a/src/Internal/Types/NatRatio.purs +++ /dev/null @@ -1,58 +0,0 @@ --- | A module for constructing well-defined ratios of natural numbers (with --- | non-zero denominator), potentially via cancellation of negative sign. -module Ctl.Internal.Types.NatRatio - ( NatRatio - , denominator - , fromBigInts - , fromRational - , numerator - , toRational - ) where - -import Prelude - -import Ctl.Internal.Types.Rational (Rational) -import Ctl.Internal.Types.Rational - ( denominator - , numerator - , (%) - ) as Rational -import Data.Maybe (Maybe(Nothing)) -import JS.BigInt (BigInt) - --- | `NatRatio` is a newtype over `Rational` with smart constructors to create a --- | `NatRatio` safely. Therefore, the data constructor is not exported. -newtype NatRatio = NatRatio Rational - -derive newtype instance Eq NatRatio -derive newtype instance Ord NatRatio --- If `NatRatio`s are safely constructed, then the underlying `Rational`s --- should obey Semiring laws. -derive newtype instance Semiring NatRatio - -instance Show NatRatio where - show (NatRatio r) = "(NatRatio " <> show r <> ")" - --- | Fails with `Nothing` if the denominator is zero or the overall sign of --- | the rational numbers is negative. -fromRational :: Rational -> Maybe NatRatio -fromRational r = fromBigInts (Rational.numerator r) (Rational.denominator r) - --- | Converts a `NatRatio` to the underlying `Rational`. -toRational :: NatRatio -> Rational -toRational (NatRatio r) = r - --- | Given two `BigInt`s, attempts to convert to a `NatRatio`. Fails if the --- | denominator is `zero` or the overall sign is negative. -fromBigInts :: BigInt -> BigInt -> Maybe NatRatio -fromBigInts n d - | (n < zero) == (d < zero) = NatRatio <$> n Rational.% d - | otherwise = Nothing - --- | Get the numerator of a `NatRatio` as `BigInt`. -numerator :: NatRatio -> BigInt -numerator (NatRatio r) = Rational.numerator r - --- | Get the denominator of a `NatRatio` as `BigInt`. -denominator :: NatRatio -> BigInt -denominator (NatRatio r) = Rational.denominator r diff --git a/src/Internal/Types/Redeemer.purs b/src/Internal/Types/Redeemer.purs deleted file mode 100644 index 3e8d685c9..000000000 --- a/src/Internal/Types/Redeemer.purs +++ /dev/null @@ -1,49 +0,0 @@ -module Ctl.Internal.Types.Redeemer - ( Redeemer(Redeemer) - , unitRedeemer - , RedeemerHash(RedeemerHash) - , redeemerHash - ) where - -import Prelude - -import Cardano.FromData (class FromData) -import Cardano.ToData (class ToData, toData) -import Cardano.Types.DataHash (DataHash(DataHash), hashPlutusData) -import Cardano.Types.PlutusData (PlutusData) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype, unwrap) -import Data.Show.Generic (genericShow) - -newtype Redeemer = Redeemer PlutusData - -derive instance Generic Redeemer _ -derive instance Newtype Redeemer _ -derive newtype instance Eq Redeemer -derive newtype instance FromData Redeemer -derive newtype instance Ord Redeemer -derive newtype instance ToData Redeemer - -instance Show Redeemer where - show = genericShow - -unitRedeemer :: Redeemer -unitRedeemer = Redeemer (toData unit) - -newtype RedeemerHash = RedeemerHash DataHash - -derive instance Generic RedeemerHash _ -derive instance Newtype RedeemerHash _ -derive newtype instance Eq RedeemerHash -derive newtype instance FromData RedeemerHash -derive newtype instance Ord RedeemerHash -derive newtype instance ToData RedeemerHash - -instance Show RedeemerHash where - show = genericShow - --- | Converts Plutus-style `Redeemer` to internal (non-CSL) `RedeemerHash`. --- | This is a duplicate of `datumHash`. -redeemerHash :: Redeemer -> RedeemerHash -redeemerHash = - RedeemerHash <<< hashPlutusData <<< unwrap diff --git a/src/Internal/Types/RedeemerTag.purs b/src/Internal/Types/RedeemerTag.purs deleted file mode 100644 index 2dc150a3a..000000000 --- a/src/Internal/Types/RedeemerTag.purs +++ /dev/null @@ -1,14 +0,0 @@ -module Ctl.Internal.Types.RedeemerTag - ( fromString - ) where - -import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) -import Data.Maybe (Maybe(Just, Nothing)) - -fromString :: String -> Maybe RedeemerTag -fromString = case _ of - "spend" -> Just Spend - "mint" -> Just Mint - "certificate" -> Just Cert - "withdrawal" -> Just Reward - _ -> Nothing diff --git a/src/Internal/Types/VRFKeyHash.purs b/src/Internal/Types/VRFKeyHash.purs deleted file mode 100644 index 583389f08..000000000 --- a/src/Internal/Types/VRFKeyHash.purs +++ /dev/null @@ -1,36 +0,0 @@ -module Ctl.Internal.Types.VRFKeyHash - ( VRFKeyHash(VRFKeyHash) - , vrfKeyHashFromBytes - , vrfKeyHashToBytes - ) where - -import Prelude - -import Aeson (class EncodeAeson, encodeAeson) -import Cardano.Serialization.Lib (fromBytes, toBytes) -import Cardano.Serialization.Lib as Csl -import Data.ByteArray (ByteArray, byteArrayToHex) -import Data.Function (on) -import Data.Maybe (Maybe) -import Data.Newtype (class Newtype) - -newtype VRFKeyHash = VRFKeyHash Csl.VRFKeyHash - -derive instance Newtype VRFKeyHash _ - -instance Show VRFKeyHash where - show (VRFKeyHash kh) = - "(VRFKeyHash " <> show (byteArrayToHex $ toBytes kh) <> ")" - -instance Eq VRFKeyHash where - eq = eq `on` vrfKeyHashToBytes - -instance EncodeAeson VRFKeyHash where - encodeAeson (VRFKeyHash kh) = - toBytes kh # byteArrayToHex >>> encodeAeson - -vrfKeyHashFromBytes :: ByteArray -> Maybe VRFKeyHash -vrfKeyHashFromBytes = fromBytes >>> map VRFKeyHash - -vrfKeyHashToBytes :: VRFKeyHash -> ByteArray -vrfKeyHashToBytes (VRFKeyHash kh) = toBytes kh diff --git a/src/Internal/Types/Val.purs b/src/Internal/Types/Val.purs index 46dad5cc5..5ac1f1b82 100644 --- a/src/Internal/Types/Val.purs +++ b/src/Internal/Types/Val.purs @@ -36,6 +36,31 @@ import Data.Traversable (traverse) import Data.Tuple.Nested (type (/\), (/\)) import JS.BigInt as BigInt +-- | A long-integer-backed Value that can be negative and does not overflow. +-- | Used in CTL internally instead of the ledger-style `Value` type to simplify +-- | overflow handling. +data Val = Val BigInt ValAssets + +instance Eq Val where + eq = checkBinRel (==) + +instance Semigroup Val where + append (Val a ma) (Val b mb) = Val (a + b) (unionWithNonAda add ma mb) + +instance Monoid Val where + mempty = Val zero Map.empty + +derive instance Generic Val _ + +instance Show Val where + show = genericShow + +instance JoinSemilattice Val where + join (Val c1 m1) (Val c2 m2) = Val (c1 `max` c2) (m1 `unionWithNonAda max` m2) + +instance MeetSemilattice Val where + meet (Val c1 m1) (Val c2 m2) = Val (c1 `min` c2) (m1 `unionWithNonAda min` m2) + -- | Split a value into its positive and non-positive parts. The first element of -- | the tuple contains the non-positive parts of the value, the second element -- | contains the positive parts. The convention is non-positive parts are @@ -62,28 +87,6 @@ instance Split Val where npos /\ pos = mapThese splitIntl mp -data Val = Val BigInt ValAssets - -instance Eq Val where - eq = checkBinRel (==) - -instance Semigroup Val where - append (Val a ma) (Val b mb) = Val (a + b) (unionWithNonAda add ma mb) - -instance Monoid Val where - mempty = Val zero Map.empty - -derive instance Generic Val _ - -instance Show Val where - show = genericShow - -instance JoinSemilattice Val where - join (Val c1 m1) (Val c2 m2) = Val (c1 `max` c2) (m1 `unionWithNonAda max` m2) - -instance MeetSemilattice Val where - meet (Val c1 m1) (Val c2 m2) = Val (c1 `min` c2) (m1 `unionWithNonAda min` m2) - type ValAssets = Map ScriptHash (Map AssetName BigInt) leq :: Val -> Val -> Boolean diff --git a/src/Internal/Types/Validator.purs b/src/Internal/Types/Validator.purs deleted file mode 100644 index fcb935cc0..000000000 --- a/src/Internal/Types/Validator.purs +++ /dev/null @@ -1,29 +0,0 @@ -module Ctl.Internal.Types.Validator - ( Validator(Validator) - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) -import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) -import Ctl.Internal.Helpers (decodeTaggedNewtype) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - -newtype Validator = Validator PlutusScript - -derive instance Generic Validator _ -derive instance Newtype Validator _ -derive newtype instance Eq Validator -derive newtype instance Ord Validator - -instance DecodeAeson Validator where - decodeAeson = decodeTaggedNewtype "getValidator" Validator - -instance EncodeAeson Validator where - encodeAeson (Validator script) = - encodeAeson { "getValidator": script } - -instance Show Validator where - show = genericShow diff --git a/templates/ctl-scaffold/test/Main.purs b/templates/ctl-scaffold/test/Main.purs index 1ea12ce4e..9696b07eb 100644 --- a/templates/ctl-scaffold/test/Main.purs +++ b/templates/ctl-scaffold/test/Main.purs @@ -14,6 +14,7 @@ import Contract.Test.Plutip , withWallets ) import Contract.Test.Utils (exitCode, interruptOnSignal) +import Contract.Numeric.BigNum as BigNum import Data.Posix.Signal (Signal(SIGINT)) import Effect.Aff ( Milliseconds(Milliseconds) @@ -21,7 +22,6 @@ import Effect.Aff , effectCanceler , launchAff ) -import JS.BigInt (fromInt) as BigInt import Mote (group, test) import Scaffold (contract) import Test.Spec.Runner (defaultConfig) @@ -41,8 +41,8 @@ suite = do let distribution :: InitialUTxOs distribution = - [ BigInt.fromInt 5_000_000 - , BigInt.fromInt 2_000_000_000 + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 2_000_000_000 ] withWallets distribution \wallet -> do withKeyWallet wallet do diff --git a/test/Blockfrost/GenerateFixtures/Helpers.purs b/test/Blockfrost/GenerateFixtures/Helpers.purs index 5adb2fdbc..fd1b849d4 100644 --- a/test/Blockfrost/GenerateFixtures/Helpers.purs +++ b/test/Blockfrost/GenerateFixtures/Helpers.purs @@ -24,7 +24,6 @@ import Ctl.Internal.Contract.QueryBackend , defaultConfirmTxDelay , mkBlockfrostBackendParams ) -import Ctl.Internal.Hashing (md5HashHex) import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.String (take) as String import Effect.Exception (throw) @@ -33,6 +32,7 @@ import Node.FS.Aff (writeTextFile) import Node.FS.Sync (exists) import Node.Path (concat) import Node.Process (lookupEnv) +import Test.Ctl.Internal.Hashing (md5HashHex) blockfrostBackend :: Effect BlockfrostBackend blockfrostBackend = do diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index 111a6b9f8..b0d20aecd 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -24,7 +24,6 @@ import Ctl.Internal.BalanceTx.CoinSelection import Ctl.Internal.BalanceTx.Error (BalanceTxError) import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex) import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex -import Ctl.Internal.Hashing (blake2b224Hash) import Ctl.Internal.Test.TestPlanM (TestPlanM) import Ctl.Internal.Types.Val as Val import Data.ByteArray (byteArrayFromAscii) @@ -51,6 +50,7 @@ import Test.Ctl.CoinSelection.Arbitrary import Test.Ctl.CoinSelection.RoundRobin (suite) as RoundRobin import Test.Ctl.CoinSelection.SelectionState (suite) as SelectionState import Test.Ctl.CoinSelection.UtxoIndex (suite) as UtxoIndex +import Test.Ctl.Internal.Hashing (blake2b224Hash) import Test.QuickCheck (class Testable, Result, assertEquals) import Test.QuickCheck (test) as QuickCheck import Test.QuickCheck.Arbitrary (arbitrary) diff --git a/test/Fixtures.purs b/test/Fixtures.purs index e9744f985..e4a9f0783 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -84,6 +84,7 @@ import Aeson (Aeson, aesonNull, decodeAeson, fromString, parseJsonStringToAeson) import Cardano.AsCbor (decodeCbor) import Cardano.Types ( AuxiliaryData(AuxiliaryData) + , Bech32String , Certificate ( StakeRegistration , StakeDeregistration @@ -158,7 +159,6 @@ import Cardano.Types.TransactionMetadatum (TransactionMetadatum(Text)) import Contract.Numeric.BigNum (BigNum) import Contract.Numeric.BigNum (fromInt, one, zero) as BigNum import Contract.Prim.ByteArray (hexToByteArray) -import Ctl.Internal.Types.Aliases (Bech32String) import Data.Array as Array import Data.ByteArray ( ByteArray diff --git a/test/Hashing.purs b/test/Hashing.purs index 2a686bf25..e1fcab4f5 100644 --- a/test/Hashing.purs +++ b/test/Hashing.purs @@ -7,19 +7,11 @@ import Cardano.Types (ScriptHash) import Cardano.Types.DataHash (DataHash) import Cardano.Types.PlutusData (PlutusData(Integer)) import Cardano.Types.PlutusScript (plutusV1Script, plutusV2Script) +import Cardano.Types.PlutusScript as PlutusScript import Contract.Hashing (datumHash) as Hashing import Contract.Scripts (PlutusScript) -import Ctl.Internal.Hashing - ( blake2b256Hash - , blake2b256HashHex - , plutusScriptHash - , sha256Hash - , sha256HashHex - , sha3_256Hash - , sha3_256HashHex - ) as Hashing import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Data.ByteArray (ByteArray, byteArrayFromAscii, hexToByteArrayUnsafe) +import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (fromJust) import Data.Newtype (wrap) import Effect.Aff (Aff) @@ -32,20 +24,13 @@ import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (Aff Unit) Unit suite = group "Hashing" do - test "blake2b256 hash of an arbitrary byte array" do - Hashing.blake2b256Hash inputDataFixture - `shouldEqual` (hexToByteArrayUnsafe blake2b256HexDigestFixture) - - test "blake2b256 hash of an arbitrary byte array as a hex string" do - Hashing.blake2b256HashHex inputDataFixture - `shouldEqual` blake2b256HexDigestFixture test "blake2b224 hash of a PlutusV1 script" do - Hashing.plutusScriptHash plutusV1ScriptFixture + PlutusScript.hash plutusV1ScriptFixture `shouldEqual` plutusV1ScriptHashFixture test "blake2b224 hash of a PlutusV2 script" do - Hashing.plutusScriptHash plutusV2ScriptFixture + PlutusScript.hash plutusV2ScriptFixture `shouldEqual` plutusV2ScriptHashFixture test "blake2b256 hash of Plutus data" do @@ -58,38 +43,6 @@ suite = Hashing.datumHash (Integer (fromInt 0)) `shouldEqual` zeroIntDatumHashFixture - test "sha256 hash of an arbitrary byte array" do - Hashing.sha256Hash inputDataFixture - `shouldEqual` (hexToByteArrayUnsafe sha256HexDigestFixture) - - test "sha256 hash of an arbitrary byte array as a hex string" do - Hashing.sha256HashHex inputDataFixture - `shouldEqual` sha256HexDigestFixture - - test "sha3_256 hash of an arbitrary byte array" do - Hashing.sha3_256Hash inputDataFixture - `shouldEqual` (hexToByteArrayUnsafe sha3_256HexDigestFixture) - - test "sha3_256 hash of an arbitrary byte array as a hex string" do - Hashing.sha3_256HashHex inputDataFixture - `shouldEqual` sha3_256HexDigestFixture - -inputDataFixture :: ByteArray -inputDataFixture = - unsafePartial $ fromJust $ byteArrayFromAscii "some message" - -blake2b256HexDigestFixture :: String -blake2b256HexDigestFixture = - "e04294b4b3a1b6e031af82eca8847d2c7be14f588fe326b78a7cc5060da35480" - -sha256HexDigestFixture :: String -sha256HexDigestFixture = - "c47757abe4020b9168d0776f6c91617f9290e790ac2f6ce2bd6787c74ad88199" - -sha3_256HexDigestFixture :: String -sha3_256HexDigestFixture = - "832978c1119fe706ddfe32de31f1986ba3654198b3b7656b050e2ab3b1fe3de3" - -- Checked that it corresponds to blake2b256(\00) ie. Integer 0 zeroIntDatumHashFixture :: DataHash zeroIntDatumHashFixture = diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index d8c001f3c..a09f95977 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -6,7 +6,6 @@ import Prelude import Aeson (class EncodeAeson, Aeson, encodeAeson, stringifyAeson) import Control.Parallel (parTraverse) -import Ctl.Internal.Hashing (md5HashHex) import Ctl.Internal.Helpers (logString) import Ctl.Internal.JsWebSocket ( _mkWebSocket @@ -45,6 +44,7 @@ import Effect.Ref as Ref import Node.Encoding (Encoding(UTF8)) import Node.FS.Aff (writeTextFile) import Node.Path (concat) +import Test.Ctl.Internal.Hashing (md5HashHex) -- A simple websocket for testing mkWebSocket diff --git a/test/Plutus/Credential.purs b/test/Plutus/Credential.purs index 6a069721a..a88f84927 100644 --- a/test/Plutus/Credential.purs +++ b/test/Plutus/Credential.purs @@ -5,13 +5,13 @@ module Test.Ctl.Internal.Plutus.Credential import Prelude +import Cardano.Types (Bech32String) import Cardano.Types.Credential ( Credential(ScriptHashCredential, PubKeyHashCredential) ) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.ScriptHash as ScriptHash import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.Aliases (Bech32String) import Data.Maybe (fromJust) import Data.Traversable (for_) import Effect.Aff (Aff) diff --git a/test/Serialization/Hash.purs b/test/Serialization/Hash.purs index 44dfa79cf..c91001245 100644 --- a/test/Serialization/Hash.purs +++ b/test/Serialization/Hash.purs @@ -3,10 +3,10 @@ module Test.Ctl.Serialization.Hash (suite) where import Prelude import Cardano.AsCbor (decodeCbor, encodeCbor) +import Cardano.Types (Bech32String) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.ScriptHash as ScriptHash import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Types.Aliases (Bech32String) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (Maybe(Just, Nothing), isNothing) import Data.Newtype (wrap) diff --git a/src/Internal/Hashing.js b/test/Utils/Hashing.js similarity index 100% rename from src/Internal/Hashing.js rename to test/Utils/Hashing.js diff --git a/src/Internal/Hashing.purs b/test/Utils/Hashing.purs similarity index 93% rename from src/Internal/Hashing.purs rename to test/Utils/Hashing.purs index 9e87c76ea..b2cf8d692 100644 --- a/src/Internal/Hashing.purs +++ b/test/Utils/Hashing.purs @@ -1,4 +1,4 @@ -module Ctl.Internal.Hashing +module Test.Ctl.Internal.Hashing ( blake2b224Hash , blake2b224HashHex , blake2b256Hash @@ -74,11 +74,6 @@ mintingPolicyHash = case _ of PlutusMintingPolicy script -> plutusScriptHash script NativeMintingPolicy nscript -> nativeScriptHash nscript --- -- can't fail, because the length is correct --- wrap $ unsafePartial $ fromJust $ fromBytes $ blake2b256Hash $ toBytes --- $ _txBody --- $ tx - plutusScriptHash :: PlutusScript -> ScriptHash plutusScriptHash = wrap <<< plutusScript_hash <<< PlutusScript.toCsl From d29f7e85abba760b661febca6d475245c9134cd8 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 16 Apr 2024 04:27:16 +0400 Subject: [PATCH 097/373] Expand CHANGELOG --- CHANGELOG.md | 38 ++++++++++++++++++++------- doc/faq.md | 5 ++++ templates/ctl-scaffold/test/Main.purs | 2 +- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb8ddd7b1..021f623a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,7 +64,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## [Unreleased] -In this version, we've refactored CTL and separated it into multiple reusable sub-packages, most notably: +In this version, we've refactored CTL and split it into multiple reusable sub-packages, most notably: - this package - `purescript-cardano-types` - (`Cardano.Types.*`) - domain types for Cardano ledger @@ -73,27 +73,49 @@ In this version, we've refactored CTL and separated it into multiple reusable su See the [cardano-purescript repo](https://github.com/klntsky/cardano-purescript) for a complete list of new packages. +These packages maintain their own public API, so the interfaces you should use are not necessarily namespaced under `Contract.*` anymore. E.g. `Cardano.Types.*` from `purescript-cardano-types` is public. + +Starting from this version, CTL does not use Plutus-domain types anymore. There are no more Plutus domain <-> Cardano domain conversion functions. This change comes with some downsides (e.g. the need to provide NetworkId in `Address`es), but the benefit of not caring about conversions for basic functionality will hopefully be more noticeable. + ### Added +- New purescript dependencies: + - [`purescript-bytearrays`](https://github.com/mlabs-haskell/purescript-bytearrays) + - [`purescript-cardano-hd-wallet`](https://github.com/mlabs-haskell/purescript-cardano-hd-wallet) + - [`purescript-cardano-message-signing`](https://github.com/mlabs-haskell/purescript-cardano-message-signing) + - [`purescript-cardano-plutus-data-schema`](https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema) + - [`purescript-cardano-serialization-lib`](https://github.com/mlabs-haskell/purescript-cardano-serialization-lib) + - [`purescript-cardano-types`](https://github.com/mlabs-haskell/purescript-cardano-types) +- `Contract.Address.mkAddress` - a helper that automatically uses the correct `NetworkId` to construct an `Address`. + ### Changed - Replaced custom CIP-30 wrapper code with [`purescript-cip30-typesafe`](https://github.com/mlabs-haskell/purescript-cip30-typesafe/) - ([#1583](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1583)) -- Renamings for better confirmity with CSL: +- Renamings for better conformity with CSL: - `TokenName` renamed to `AssetName` - `NonAdaAsset` renamed to `MultiAsset` - `Coin` now wraps BigNum instead of BigInt (in line with CSL) -- Instances for `Address` type: - - `Show`, `EncodeAeson` and `DecodeAeson` return a data-generic representation instead of Bech32-based. -- `plutusScriptV1FromEnvelope`, `plutusScriptV2FromEnvelope` have been replaced with `plutusScriptFromEnvelope` (the script is tagged with its language anyway) -- `NoOutputDatum` variant has been removed from `OutputDatum`: instead, it was made optional via Maybe in `TransactionOutput` -- `TransactionMetadatum` constructor naming, in PS and JSON encoding: `MetadataMap` -> `Map`, `MetadataList` -> `List` +- `NoOutputDatum` variant has been removed from `OutputDatum`: instead, it was made optional via `Maybe` in `TransactionOutput` +- `TransactionMetadatum` constructor naming change, in PS and in JSON encoding: `MetadataMap` -> `Map`, `MetadataList` -> `List` - `Contract.PlutusData.Redeemer` has been renamed to `RedeemerDatum` (to resolve naming conflict with `cardano-ledger`-style redeemer) - `Contract.PlutusData.Datum` has been deprecated, use `Cardano.Types.PlutusData` +- `plutusScriptV1FromEnvelope`, `plutusScriptV2FromEnvelope` have been replaced with `plutusScriptFromEnvelope` (the script is tagged with its language anyway) ### Fixed ### Removed +- NPM runtime dependencies: + +```diff + "bip39": "^3.1.0", +- "blakejs": "1.2.1", + "bufferutil": "4.0.5", +- "jssha": "3.2.0", + "puppeteer-core": "^15.3.2", + "reconnecting-webs +``` + - `Contract.Address` utilities to work with `Address` - use `mkAddress` and machinery from `Cardano.Types.Address` - `Contract.Credential` renamings: - `PubKeyCredential` -> `PubKeyHashCredential` @@ -132,8 +154,6 @@ See the [cardano-purescript repo](https://github.com/klntsky/cardano-purescript) - `Contract.Numeric.NatRatio` - the module was not used in the library. - `Contract.AssocMap` - use `Cardano.Plutus.Types.Map` from [`purescript-plutus-types`](https://github.com/mlabs-haskell/purescript-plutus-types) - - ## [v7.0.0] ### Added diff --git a/doc/faq.md b/doc/faq.md index e92226e6d..5e0bb925b 100644 --- a/doc/faq.md +++ b/doc/faq.md @@ -8,6 +8,7 @@ This document lists common problems encountered by CTL users and developers. - [Bundling-related](#bundling-related) - [Q: `lib.something` is not a function, why?](#q-libsomething-is-not-a-function-why) + - [Q: `Module parse failed: 'import' and 'export' may appear only with 'sourceType: module'` error?](#q-module-parse-failed-import-and-export-may-appear-only-with-sourcetype-module-error) - [Q: I see `spago: Error: Remote host not found`, why?](#q-i-see-spago-error-remote-host-not-found-why) - [Q: I see `WebAssembly module is included in initial chunk.` error, why?](#q-i-see-webassembly-module-is-included-in-initial-chunk-error-why) - [Q: I see `Cannot use 'import.meta' outside a module` error in the browser, why?](#q-i-see-cannot-use-importmeta-outside-a-module-error-in-the-browser-why) @@ -39,6 +40,10 @@ This is probably because npm is used directly. This is something users have repo You can prevent `npm` from ever installing to local `node_modules` by enabling the `packageLockOnly` flag in the `shell` argument to `purescriptProject`. When enabled, `npm i` will always act as if the `--package-lock-only` flag has been passed. This is not enabled by default, but we recommend enabling it. +### Q: `Module parse failed: 'import' and 'export' may appear only with 'sourceType: module'` error? + +Make sure you've specified `"type": "module"` in your project's `package.json`. + ### Q: I see `spago: Error: Remote host not found`, why? An error like this one: diff --git a/templates/ctl-scaffold/test/Main.purs b/templates/ctl-scaffold/test/Main.purs index 9696b07eb..86c3f3e57 100644 --- a/templates/ctl-scaffold/test/Main.purs +++ b/templates/ctl-scaffold/test/Main.purs @@ -4,6 +4,7 @@ module Test.Scaffold.Main (main, suite) where import Contract.Prelude +import Contract.Numeric.BigNum as BigNum import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Contract.Test.Plutip ( InitialUTxOs @@ -14,7 +15,6 @@ import Contract.Test.Plutip , withWallets ) import Contract.Test.Utils (exitCode, interruptOnSignal) -import Contract.Numeric.BigNum as BigNum import Data.Posix.Signal (Signal(SIGINT)) import Effect.Aff ( Milliseconds(Milliseconds) From 8b7247f43e70c604ef95ca5e56c9f640b64c018d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 16 Apr 2024 23:41:26 +0400 Subject: [PATCH 098/373] Update csl-gc --- package-lock.json | 14 +++++++------- package.json | 2 +- packages.dhall | 2 +- spago-packages.nix | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index d94283b52..0e526de1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -502,9 +502,9 @@ } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", - "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", + "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", @@ -6629,9 +6629,9 @@ } }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.9.tgz", - "integrity": "sha512-O3JZGS0GjbyQPlKP6KRb7Q78ANfqIHxpQ0xmX6BK9tUw6KOueNfJ6e80JD+MHogoPJwOei7prqpHgCu+hitNQw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", + "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", diff --git a/package.json b/package.json index c93f6830c..df4ec0648 100755 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@emurgo/cardano-message-signing-browser": "1.0.1", "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.9", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", diff --git a/packages.dhall b/packages.dhall index e346fe793..52accd0fa 100644 --- a/packages.dhall +++ b/packages.dhall @@ -280,7 +280,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "6636bd0fa48f3608ce3988d55384b00756aa0375" + , version = "c66afbb9c572db096690ec1dd786c9ec96105c0d" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] diff --git a/spago-packages.nix b/spago-packages.nix index c99cdc1fa..2a6565d9a 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -247,11 +247,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "6636bd0fa48f3608ce3988d55384b00756aa0375"; + version = "c66afbb9c572db096690ec1dd786c9ec96105c0d"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "6636bd0fa48f3608ce3988d55384b00756aa0375"; - sha256 = "0zxwhw66v576h4z8cs6zgfaax1mqg9ljgii6h737lh6kkk5bza6l"; + rev = "c66afbb9c572db096690ec1dd786c9ec96105c0d"; + sha256 = "1pi5q45nx1varl2pjpd60vfxv2cjvlg1ms7xnsfwb2acl216lmr5"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 145175634748600d0d4f08302bb53598de31cd51 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 16 Apr 2024 23:58:59 +0400 Subject: [PATCH 099/373] Update the template. Remove unused NPM packages --- package-lock.json | 2 - package.json | 2 - templates/ctl-scaffold/package-lock.json | 76 +++--- templates/ctl-scaffold/package.json | 7 +- templates/ctl-scaffold/packages.dhall | 276 ++++++++++++++++------ templates/ctl-scaffold/spago-packages.nix | 96 +++++++- 6 files changed, 328 insertions(+), 131 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0e526de1d..86e62e794 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,6 @@ "name": "cardano-transaction-lib", "license": "MIT", "dependencies": { - "@emurgo/cardano-message-signing-browser": "1.0.1", - "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", diff --git a/package.json b/package.json index df4ec0648..8c1c1d740 100755 --- a/package.json +++ b/package.json @@ -31,8 +31,6 @@ }, "license": "MIT", "dependencies": { - "@emurgo/cardano-message-signing-browser": "1.0.1", - "@emurgo/cardano-message-signing-nodejs": "1.0.1", "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 502a82a8b..c72367587 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -9,9 +9,8 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@emurgo/cardano-message-signing-browser": "1.0.1", - "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.8", + "@mlabs-haskell/cardano-message-signing": "^1.0.1", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -19,9 +18,7 @@ "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", - "blakejs": "1.2.1", "bufferutil": "4.0.5", - "jssha": "3.2.0", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", @@ -491,20 +488,29 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "node_modules/@mlabs-haskell/cardano-message-signing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-message-signing/-/cardano-message-signing-1.0.1.tgz", + "integrity": "sha512-LNX+Msq1rJ86d5mmaR2Om5tUqB0ZthfE69fpsZcxOYDHNw5s+qtcCyNEmzAWfHC+uIJ4NDEJA8Gk2RfWto7ChA==", + "dependencies": { + "@emurgo/cardano-message-signing-browser": "^1.0.1", + "@emurgo/cardano-message-signing-nodejs": "^1.0.1" + } + }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.8.tgz", - "integrity": "sha512-LTVYL/3ld698sPsrjz30WNUNm3qP20NXFrcwnkTFY5Z7muIgCVkJwJtzuKJ+OJge98m0kM22pZcpY7amQfcTTg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", + "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "node_modules/@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "node_modules/@mlabs-haskell/json-bigint": { "version": "2.0.0", @@ -1236,11 +1242,6 @@ "node": ">= 6" } }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" - }, "node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", @@ -3254,14 +3255,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/jssha": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", - "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", - "engines": { - "node": "*" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -5751,20 +5744,29 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", "dev": true }, + "@mlabs-haskell/cardano-message-signing": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-message-signing/-/cardano-message-signing-1.0.1.tgz", + "integrity": "sha512-LNX+Msq1rJ86d5mmaR2Om5tUqB0ZthfE69fpsZcxOYDHNw5s+qtcCyNEmzAWfHC+uIJ4NDEJA8Gk2RfWto7ChA==", + "requires": { + "@emurgo/cardano-message-signing-browser": "^1.0.1", + "@emurgo/cardano-message-signing-nodejs": "^1.0.1" + } + }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.8.tgz", - "integrity": "sha512-LTVYL/3ld698sPsrjz30WNUNm3qP20NXFrcwnkTFY5Z7muIgCVkJwJtzuKJ+OJge98m0kM22pZcpY7amQfcTTg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", + "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", "requires": { "@emurgo/cardano-serialization-lib-browser": "^11.2.1", "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", - "@mlabs-haskell/csl-gc-wrapper": "^1.0.1" + "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, "@mlabs-haskell/csl-gc-wrapper": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.1.tgz", - "integrity": "sha512-8pEb4BoQlD5zN+KtOCgtTg62OmLPjMa+DiJvoAzlLcWmp01P3TyJPgbEOtS+xiZpGA+1rRkdyeeLZV3wyw8Xfw==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/csl-gc-wrapper/-/csl-gc-wrapper-1.0.2.tgz", + "integrity": "sha512-jyASltvC/ZVzpMUgbIkIaCLc56uGqymCPnieLkgIMWPhzcRoAxEfshjYONyxPY5XIl0NdIQXjbppXFoPQMk0VQ==" }, "@mlabs-haskell/json-bigint": { "version": "2.0.0", @@ -6380,11 +6382,6 @@ } } }, - "blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" - }, "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", @@ -7939,11 +7936,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "jssha": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", - "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==" - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 3946d6849..dfb37c99c 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -25,9 +25,8 @@ "author": "", "license": "MIT", "dependencies": { - "@emurgo/cardano-message-signing-browser": "1.0.1", - "@emurgo/cardano-message-signing-nodejs": "1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.8", + "@mlabs-haskell/cardano-message-signing": "^1.0.1", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", "@noble/secp256k1": "^1.7.0", "apply-args-browser": "0.0.1", @@ -35,9 +34,7 @@ "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", "bip39": "^3.1.0", - "blakejs": "1.2.1", "bufferutil": "4.0.5", - "jssha": "3.2.0", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 10b07d448..af5439e09 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -109,32 +109,7 @@ let upstream = sha256:3e9fbc9ba03e9a1fcfd895f65e2d50ee2f5e86c4cd273f3d5c841b655a0e1bda let additions = - { js-fetch = - { dependencies = - [ "arraybuffer-types" - , "arrays" - , "effect" - , "foldable-traversable" - , "foreign" - , "foreign-object" - , "functions" - , "http-methods" - , "js-promise" - , "maybe" - , "newtype" - , "prelude" - , "record" - , "tuples" - , "typelevel-prelude" - , "unfoldable" - , "web-file" - , "web-streams" - ] - , repository = - "https://github.com/purescript-contrib/purescript-js-fetch.git" - , version = "v0.2.1" - } - , aeson = + { aeson = { dependencies = [ "aff" , "argonaut" @@ -218,6 +193,7 @@ let additions = { dependencies = [ "aff" , "aff-promise" + , "bytearrays" , "effect" , "prelude" , "spec" @@ -226,7 +202,193 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" - , version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd" + , version = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1" + } + , js-bigints = + { dependencies = [ "integers", "maybe", "prelude" ] + , repo = "https://github.com/purescript-contrib/purescript-js-bigints" + , version = "36a7d8ac75a7230043ae511f3145f9ed130954a9" + } + , cip30 = + { dependencies = + [ "aff" + , "aff-promise" + , "arrays" + , "console" + , "effect" + , "literals" + , "maybe" + , "newtype" + , "nullable" + , "prelude" + , "untagged-union" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip30" + , version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45" + } + , cip30-typesafe = + { dependencies = + [ "aff" + , "bifunctors" + , "cip30" + , "control" + , "effect" + , "either" + , "exceptions" + , "maybe" + , "prelude" + , "spec" + , "transformers" + , "variant" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" + , version = "d72e51fbc0255eb3246c9132d295de7f65e16a99" + } + , bytearrays = + { dependencies = + [ "aeson" + , "aff" + , "arraybuffer-types" + , "effect" + , "either" + , "foldable-traversable" + , "maybe" + , "newtype" + , "prelude" + , "quickcheck" + , "quickcheck-laws" + , "spec" + , "strings" + ] + , repo = "https://github.com/mlabs-haskell/purescript-bytearrays" + , version = "e3991d562a04d8825472551d91a06407ad9c9112" + } + , cardano-serialization-lib = + { dependencies = + [ "aeson" + , "argonaut" + , "bifunctors" + , "bytearrays" + , "effect" + , "either" + , "maybe" + , "nullable" + , "ordered-collections" + , "prelude" + , "profunctor" + , "tuples" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" + , version = "c66afbb9c572db096690ec1dd786c9ec96105c0d" + } + , cardano-plutus-data-schema = + { dependencies = [ "prelude" ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema" + , version = "eb0bb78927c50c4bee364e932c9fa8cf94546191" + } + , plutus-types = + { dependencies = + [ "aeson" + , "argonaut-codecs" + , "arrays" + , "bifunctors" + , "bytearrays" + , "cardano-plutus-data-schema" + , "cardano-types" + , "console" + , "effect" + , "either" + , "foldable-traversable" + , "gen" + , "js-bigints" + , "lattice" + , "maybe" + , "monad-logger" + , "newtype" + , "ordered-collections" + , "partial" + , "prelude" + , "profunctor-lenses" + , "quickcheck" + , "these" + , "tuples" + ] + , repo = "https://github.com/mlabs-haskell/purescript-plutus-types" + , version = "143902b37e218d843b9da473553ecf50686934cb" + } + , cardano-types = + { dependencies = + [ "aeson" + , "arraybuffer-types" + , "arrays" + , "bifunctors" + , "bytearrays" + , "cardano-plutus-data-schema" + , "cardano-serialization-lib" + , "console" + , "control" + , "effect" + , "either" + , "encoding" + , "exceptions" + , "foldable-traversable" + , "foreign-object" + , "integers" + , "js-bigints" + , "lattice" + , "lists" + , "literals" + , "maybe" + , "monad-logger" + , "newtype" + , "nonempty" + , "nullable" + , "ordered-collections" + , "partial" + , "prelude" + , "profunctor" + , "quickcheck" + , "rationals" + , "record" + , "safe-coerce" + , "strings" + , "these" + , "tuples" + , "typelevel-prelude" + , "uint" + , "unfoldable" + , "unsafe-coerce" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" + , version = "64652087362a8591ae0a8d73a2f4857762002606" + } + , cardano-message-signing = + { dependencies = + [ "bytearrays" + , "cardano-types" + , "console" + , "effect" + , "newtype" + , "prelude" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-message-signing" + , version = "8078bd9ce339262f29155a80572e8c44334aa801" + } + , cardano-hd-wallet = + { dependencies = + [ "cardano-serialization-lib" + , "cardano-types" + , "console" + , "effect" + , "either" + , "prelude" + , "uint" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" + , version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9" } , cardano-transaction-lib = { dependencies = @@ -238,12 +400,16 @@ let additions = , "ansi" , "argonaut" , "argonaut-codecs" - , "arraybuffer-types" , "arrays" , "avar" , "bifunctors" - , "js-bigints" , "bignumber" + , "bytearrays" + , "cardano-hd-wallet" + , "cardano-message-signing" + , "cardano-plutus-data-schema" + , "cardano-serialization-lib" + , "cardano-types" , "checked-exceptions" , "cip30" , "cip30-typesafe" @@ -254,7 +420,6 @@ let additions = , "debug" , "effect" , "either" - , "encoding" , "enums" , "exceptions" , "foldable-traversable" @@ -262,14 +427,15 @@ let additions = , "foreign-object" , "formatters" , "functions" - , "gen" , "heterogeneous" , "http-methods" , "identity" , "integers" + , "js-bigints" , "js-date" , "lattice" , "lists" + , "literals" , "maybe" , "media-types" , "monad-logger" @@ -286,17 +452,18 @@ let additions = , "node-streams" , "nonempty" , "now" + , "nullable" , "numbers" , "optparse" , "ordered-collections" , "orders" , "parallel" , "partial" + , "plutus-types" , "posix-types" , "prelude" , "profunctor" , "profunctor-lenses" - , "toppokki" , "quickcheck" , "quickcheck-combinators" , "quickcheck-laws" @@ -311,59 +478,20 @@ let additions = , "stringutils" , "tailrec" , "these" + , "toppokki" , "transformers" , "tuples" - , "typelevel" , "typelevel-prelude" , "uint" , "unfoldable" + , "unsafe-coerce" , "untagged-union" , "variant" , "web-html" , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "7d533241367081fa69ec5f0ec8f50e00c39430c2" - } - , js-bigints = - { dependencies = [ "integers", "maybe", "prelude" ] - , repo = "https://github.com/purescript-contrib/purescript-js-bigints" - , version = "36a7d8ac75a7230043ae511f3145f9ed130954a9" - } - , cip30 = - { dependencies = - [ "aff" - , "aff-promise" - , "arrays" - , "console" - , "effect" - , "literals" - , "maybe" - , "newtype" - , "nullable" - , "prelude" - , "untagged-union" - ] - , repo = "https://github.com/mlabs-haskell/purescript-cip30" - , version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45" - } - , cip30-typesafe = - { dependencies = - [ "aff" - , "bifunctors" - , "cip30" - , "control" - , "effect" - , "either" - , "exceptions" - , "maybe" - , "prelude" - , "spec" - , "transformers" - , "variant" - ] - , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" - , version = "d72e51fbc0255eb3246c9132d295de7f65e16a99" + , version = "8b7247f43e70c604ef95ca5e56c9f640b64c018d" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 5c9a5b894..8ef8316be 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -197,13 +197,85 @@ let installPhase = "ln -s $src $out"; }; + "bytearrays" = pkgs.stdenv.mkDerivation { + name = "bytearrays"; + version = "e3991d562a04d8825472551d91a06407ad9c9112"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-bytearrays"; + rev = "e3991d562a04d8825472551d91a06407ad9c9112"; + sha256 = "0lyp1x8kgzg8ykv5yp8dd21ziypi9yzhzqpwv5l995kfm4mdglh2"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-hd-wallet" = pkgs.stdenv.mkDerivation { + name = "cardano-hd-wallet"; + version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet"; + rev = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; + sha256 = "1kw3p58kf94cy89pbss2z5k12am49qj3jzp5szalyz7caqpxkmf7"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-message-signing" = pkgs.stdenv.mkDerivation { + name = "cardano-message-signing"; + version = "8078bd9ce339262f29155a80572e8c44334aa801"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-message-signing"; + rev = "8078bd9ce339262f29155a80572e8c44334aa801"; + sha256 = "0ay0v79ak15azk9sm4xv2fv3g3f6h89m4xm6c4vazy7qks2ap2vh"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-plutus-data-schema" = pkgs.stdenv.mkDerivation { + name = "cardano-plutus-data-schema"; + version = "eb0bb78927c50c4bee364e932c9fa8cf94546191"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema"; + rev = "eb0bb78927c50c4bee364e932c9fa8cf94546191"; + sha256 = "118i6dlfqk7q0va3bd4vplsv9i6sh83cr51gshas6jjwc5qbriks"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { + name = "cardano-serialization-lib"; + version = "c66afbb9c572db096690ec1dd786c9ec96105c0d"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; + rev = "c66afbb9c572db096690ec1dd786c9ec96105c0d"; + sha256 = "1pi5q45nx1varl2pjpd60vfxv2cjvlg1ms7xnsfwb2acl216lmr5"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; + version = "8b7247f43e70c604ef95ca5e56c9f640b64c018d"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; - sha256 = "0wpcjrajyfn53ijpdv1w2kg6rmifsz3p8gxx88zin1wv0437cmxh"; + rev = "8b7247f43e70c604ef95ca5e56c9f640b64c018d"; + sha256 = "0yzd4y15z1gz6y5ml1z442cx3yaac103c1q6b4nh99wakgpx6m20"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-types" = pkgs.stdenv.mkDerivation { + name = "cardano-types"; + version = "64652087362a8591ae0a8d73a2f4857762002606"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-types"; + rev = "64652087362a8591ae0a8d73a2f4857762002606"; + sha256 = "0b2mbvd9v6fvwpp155hh6yh8jb68xgx1gqg4xi3h3vhgqxyb45qq"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -799,11 +871,11 @@ let "noble-secp256k1" = pkgs.stdenv.mkDerivation { name = "noble-secp256k1"; - version = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd"; + version = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git"; - rev = "a3c0f67e9fdb0086016d7aebfad35d09a08b4ecd"; - sha256 = "0n2q83n210ih5l54p6wrrjqmy40xhhdd3mam5mzixgr2hszm8969"; + rev = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1"; + sha256 = "0hrf7vgf2mh91803l4drygg6srmkg765x4gk6i6zqyr6398fyxw6"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1097,6 +1169,18 @@ let installPhase = "ln -s $src $out"; }; + "plutus-types" = pkgs.stdenv.mkDerivation { + name = "plutus-types"; + version = "143902b37e218d843b9da473553ecf50686934cb"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-plutus-types"; + rev = "143902b37e218d843b9da473553ecf50686934cb"; + sha256 = "116avsdgw6w392ip89lgcjcpqqznsr0h0s0gq335wakvpa6q45yf"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "posix-types" = pkgs.stdenv.mkDerivation { name = "posix-types"; version = "v6.0.0"; From 2ee63fecf4b3626ed40c341712ecf3bed8c58f4c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 Apr 2024 00:18:02 +0400 Subject: [PATCH 100/373] Update template deps & ctl revision --- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/spago.dhall | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index c1104f2e7..5f336ad13 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "7d533241367081fa69ec5f0ec8f50e00c39430c2"; + rev = "145175634748600d0d4f08302bb53598de31cd51"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/spago.dhall b/templates/ctl-scaffold/spago.dhall index 988099120..2ea80a784 100644 --- a/templates/ctl-scaffold/spago.dhall +++ b/templates/ctl-scaffold/spago.dhall @@ -15,6 +15,14 @@ You can edit this file as you like. , "posix-types" , "prelude" , "spec" + , "noble-secp256k1" + , "bytearrays" + , "cardano-hd-wallet" + , "cardano-message-signing" + , "cardano-plutus-data-schema" + , "cardano-serialization-lib" + , "cardano-types" + , "plutus-types" ] , packages = ./packages.dhall , sources = [ "src/**/*.purs", "exe/**/*.purs", "test/**/*.purs" ] From 1c82f484fbfbb1644e9582e374b5a90ede8dcfb1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 Apr 2024 00:32:18 +0400 Subject: [PATCH 101/373] Fix CI check for npm dependencies --- flake.nix | 2 +- templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flake.nix b/flake.nix index a38d4555d..8869b614c 100644 --- a/flake.nix +++ b/flake.nix @@ -394,7 +394,7 @@ diff <(jq -S .dependencies <<< $ctlPackageJson) <(jq -S .dependencies <<< $ctlScaffoldPackageJson) # We don't want to include `doctoc` in the template dev dependencies. diff \ - <(jq -S '.devDependencies | del(.doctoc)' <<< $ctlPackageJson) \ + <(jq -S '.devDependencies | del(.jssha) | del(.blakejs) | del(.doctoc)' <<< $ctlPackageJson) \ <(jq -S .devDependencies <<< $ctlScaffoldPackageJson) touch $out ''; diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 1c4daa222..224372645 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1702645636, - "narHash": "sha256-GiSImwp0QoKheOhX7aftGpYayPdRdu3W1TcXY1GMUuk=", + "lastModified": 1713298682, + "narHash": "sha256-MtDqgoZv5tdYRp9xLVL/c8dalYgjsegFKlq9b1/2Hl0=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a742692d605aabd75043aee9eef0ecdfec63eacc", + "rev": "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "a742692d605aabd75043aee9eef0ecdfec63eacc", + "rev": "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 5f336ad13..65859e4f4 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "145175634748600d0d4f08302bb53598de31cd51"; + rev = "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index af5439e09..3357128a4 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -491,7 +491,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "8b7247f43e70c604ef95ca5e56c9f640b64c018d" + , version = "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c" } } From 7025d74ef988faa25f6ed8b4758849af33bf0e91 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 Apr 2024 00:36:47 +0400 Subject: [PATCH 102/373] Re-run spago2nix --- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 8ef8316be..120f7a81a 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -259,11 +259,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "8b7247f43e70c604ef95ca5e56c9f640b64c018d"; + version = "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "8b7247f43e70c604ef95ca5e56c9f640b64c018d"; - sha256 = "0yzd4y15z1gz6y5ml1z442cx3yaac103c1q6b4nh99wakgpx6m20"; + rev = "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c"; + sha256 = "0p8yyrgnzgas582yic93i2ammivkzx92swcz8rcdgrkghs1fml1j"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 49ddb80205dd6f7fff2e3474f91f216015bb3c8b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 Apr 2024 01:40:46 +0400 Subject: [PATCH 103/373] Update the template --- package-lock.json | 1 + templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8159f0b94..962c3453e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ "bignumber.js": "^9.1.1", "bip39": "^3.1.0", "bufferutil": "4.0.5", + "isomorphic-ws": "^5.0.0", "puppeteer-core": "^15.3.2", "reconnecting-websocket": "4.4.0", "uniqid": "5.4.0", diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 224372645..8a0100234 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1713298682, - "narHash": "sha256-MtDqgoZv5tdYRp9xLVL/c8dalYgjsegFKlq9b1/2Hl0=", + "lastModified": 1713303538, + "narHash": "sha256-WXDfjWskup7FLOGG0T/Y5RyP9Ccvvp5IyIHyXVM4cmg=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c", + "rev": "423e27b3f56b1a66db8d3126c22cea9bda7e50da", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c", + "rev": "423e27b3f56b1a66db8d3126c22cea9bda7e50da", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 65859e4f4..6b29765ca 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c"; + rev = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 3357128a4..138d70952 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -491,7 +491,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c" + , version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 120f7a81a..0197ce70f 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -259,11 +259,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c"; + version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "2ee63fecf4b3626ed40c341712ecf3bed8c58f4c"; - sha256 = "0p8yyrgnzgas582yic93i2ammivkzx92swcz8rcdgrkghs1fml1j"; + rev = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; + sha256 = "0s3j719mvwl1r149xgig4zs8y775v0zx31p15k2rxfi4df6xyw2r"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 0a88387d2ffa027271ca8402915412fe90beb835 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 19 Apr 2024 01:13:18 +0400 Subject: [PATCH 104/373] Delete AssocMap --- src/Contract/AssocMap.purs | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 src/Contract/AssocMap.purs diff --git a/src/Contract/AssocMap.purs b/src/Contract/AssocMap.purs deleted file mode 100644 index 5bd70dc9e..000000000 --- a/src/Contract/AssocMap.purs +++ /dev/null @@ -1,22 +0,0 @@ --- | A module for a Plutus-style `AssocMap` -module Contract.AssocMap (module AssocMap) where - -import Cardano.Plutus.Types.Map - ( Map(Map) - , delete - , elems - , empty - , filter - , insert - , keys - , lookup - , mapMaybe - , mapMaybeWithKey - , mapThese - , member - , null - , singleton - , union - , unionWith - , values - ) as AssocMap From 32b39e8f13dd9bfe083746c0cc77d6f5f64bc76a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 19 Apr 2024 01:57:31 +0400 Subject: [PATCH 105/373] Use ps-mote-testplan --- packages.dhall | 19 ++++++++ spago-packages.nix | 12 +++++ spago.dhall | 1 + src/Contract/Test/Mote.purs | 2 +- src/Internal/Plutip/Server.purs | 2 +- src/Internal/Test/ContractTest.purs | 2 +- src/Internal/Test/E2E/Runner.purs | 2 +- src/Internal/Test/KeyDir.purs | 2 +- src/Internal/Test/TestPlanM.purs | 56 ----------------------- templates/ctl-scaffold/packages.dhall | 20 ++++++++ templates/ctl-scaffold/spago-packages.nix | 12 +++++ templates/ctl-scaffold/spago.dhall | 19 ++++---- test/ApplyArgs.purs | 2 +- test/BalanceTx/ChangeGeneration.purs | 2 +- test/BalanceTx/Collateral.purs | 2 +- test/BalanceTx/Time.purs | 2 +- test/Blockfrost/Aeson/Suite.purs | 2 +- test/ByteArray.purs | 2 +- test/CoinSelection/CoinSelection.purs | 2 +- test/CoinSelection/RoundRobin.purs | 2 +- test/CoinSelection/SelectionState.purs | 2 +- test/CoinSelection/UtxoIndex.purs | 2 +- test/CslGc.purs | 2 +- test/Data.purs | 2 +- test/Data/Interval.purs | 2 +- test/E2E/Route.purs | 2 +- test/Hashing.purs | 2 +- test/Logging.purs | 2 +- test/NativeScript.purs | 2 +- test/Ogmios/Aeson.purs | 2 +- test/Ogmios/EvaluateTx.purs | 2 +- test/Partition.purs | 2 +- test/Plutip.purs | 4 +- test/Plutip/Contract.purs | 2 +- test/Plutip/ExUnits.purs | 2 +- test/Plutip/Logging.purs | 2 +- test/Plutip/UtxoDistribution.purs | 2 +- test/Plutus/Credential.purs | 2 +- test/Plutus/Time.purs | 2 +- test/PrivateKey.purs | 2 +- test/ProtocolParams.purs | 2 +- test/QueryM/AffInterface.purs | 2 +- test/Serialization.purs | 2 +- test/Serialization/Hash.purs | 2 +- test/Types/Interval.purs | 2 +- test/Types/Ipv6.purs | 2 +- test/Types/TokenName.purs | 2 +- test/Types/Transaction.purs | 2 +- test/UsedTxOuts.purs | 2 +- test/Utils.purs | 2 +- test/Wallet/Bip32.purs | 2 +- test/Wallet/Cip30/SignData.purs | 2 +- 52 files changed, 120 insertions(+), 111 deletions(-) delete mode 100644 src/Internal/Test/TestPlanM.purs diff --git a/packages.dhall b/packages.dhall index 52accd0fa..e9bf0a165 100644 --- a/packages.dhall +++ b/packages.dhall @@ -390,6 +390,25 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" , version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9" } + , mote-testplan = + { dependencies = + [ "aff" + , "console" + , "datetime" + , "effect" + , "foldable-traversable" + , "maybe" + , "mote" + , "newtype" + , "numbers" + , "ordered-collections" + , "prelude" + , "spec" + , "transformers" + ] + , repo = "https://github.com/mlabs-haskell/purescript-mote-testplan" + , version = "d1c93e08ef09f5427b460f396b89da7255f8af52" + } } in upstream // additions diff --git a/spago-packages.nix b/spago-packages.nix index 2a6565d9a..dff4f85c9 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -845,6 +845,18 @@ let installPhase = "ln -s $src $out"; }; + "mote-testplan" = pkgs.stdenv.mkDerivation { + name = "mote-testplan"; + version = "d1c93e08ef09f5427b460f396b89da7255f8af52"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-mote-testplan"; + rev = "d1c93e08ef09f5427b460f396b89da7255f8af52"; + sha256 = "1317v612hq1hlw3m6vvzjfpg3vzm4pdlpix6z4z221cpgaga4i2r"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "newtype" = pkgs.stdenv.mkDerivation { name = "newtype"; version = "v5.0.0"; diff --git a/spago.dhall b/spago.dhall index 74eef5898..4043f2afc 100644 --- a/spago.dhall +++ b/spago.dhall @@ -52,6 +52,7 @@ You can edit this file as you like. , "media-types" , "monad-logger" , "mote" + , "mote-testplan" , "newtype" , "noble-secp256k1" , "node-buffer" diff --git a/src/Contract/Test/Mote.purs b/src/Contract/Test/Mote.purs index 0acc810d1..b49e71b5d 100644 --- a/src/Contract/Test/Mote.purs +++ b/src/Contract/Test/Mote.purs @@ -1,6 +1,6 @@ module Contract.Test.Mote (module X) where -import Ctl.Internal.Test.TestPlanM +import Mote.TestPlanM ( TestPlanM , interpret , interpretWithConfig diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 24df32673..0359b11d5 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -68,7 +68,7 @@ import Ctl.Internal.Test.ContractTest , ContractTestPlan(ContractTestPlan) , ContractTestPlanHandler ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution ( class UtxoDistribution , InitialUTxODistribution diff --git a/src/Internal/Test/ContractTest.purs b/src/Internal/Test/ContractTest.purs index da446b0bd..2f72f5941 100644 --- a/src/Internal/Test/ContractTest.purs +++ b/src/Internal/Test/ContractTest.purs @@ -11,7 +11,7 @@ module Ctl.Internal.Test.ContractTest import Prelude import Contract.Monad (Contract) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution) -- | Represents a `Contract` test suite that depend on *some* wallet diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index ed6ca32c5..416467166 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -72,7 +72,7 @@ import Ctl.Internal.Test.E2E.Wallets , namiConfirmAccess , namiSign ) -import Ctl.Internal.Test.TestPlanM (TestPlanM, interpretWithConfig) +import Mote.TestPlanM (TestPlanM, interpretWithConfig) import Ctl.Internal.Test.UtxoDistribution (withStakeKey) import Ctl.Internal.Wallet.Key ( PrivateStakeKey diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index d62d015a7..757e06ed8 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -55,7 +55,7 @@ import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.Lens (_amount) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) import Ctl.Internal.Test.ContractTest (ContractTest(ContractTest)) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution ( UtxoAmount , decodeWallets diff --git a/src/Internal/Test/TestPlanM.purs b/src/Internal/Test/TestPlanM.purs deleted file mode 100644 index db4a50f5d..000000000 --- a/src/Internal/Test/TestPlanM.purs +++ /dev/null @@ -1,56 +0,0 @@ -module Ctl.Internal.Test.TestPlanM - ( TestPlanM - , interpret - , interpretWithConfig - ) where - -import Prelude - -import Ctl.Internal.Test.ConsoleReporter (consoleReporter) -import Data.Foldable (sequence_) -import Data.Maybe (Maybe(Just), maybe) -import Data.Newtype (wrap) -import Effect.Aff (Aff, bracket) -import Mote (MoteT, Plan, foldPlan, planT) -import Mote.Entry (Bracket, unBracket) -import Test.Spec (SpecT, afterAll, beforeAll, beforeWith, describe, it, pending) -import Test.Spec.Runner (defaultConfig, runSpecT) -import Test.Spec.Runner as SpecRunner - -type TestPlanM :: Type -> Type -> Type -type TestPlanM test a = MoteT Aff test Aff a - -type AffSpec :: Type -> Type -type AffSpec a = SpecT Aff Unit Aff a - --- | We use `mote` here so that we can use effects to build up a test tree, which --- | is then interpreted here in a pure context, mainly due to some painful types --- | in Test.Spec which prohibit effects. --- | https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#testing-with-mote -interpret :: TestPlanM (Aff Unit) Unit -> Aff Unit -interpret = interpretWithConfig defaultConfig { timeout = Just (wrap 50000.0) } - -interpretWithConfig - :: SpecRunner.Config -> TestPlanM (Aff Unit) Unit -> Aff Unit -interpretWithConfig config spif = do - plan <- planT spif - void $ join $ runSpecT config [ consoleReporter ] $ planToSpec plan - -planToSpec :: Plan Aff (Aff Unit) -> AffSpec Unit -planToSpec = - foldPlan - (\x -> it x.label $ runBracket x.value x.bracket) - pending - (\x -> describe x.label $ runBracketSpec (planToSpec x.value) x.bracket) - sequence_ - where - runBracketSpec :: AffSpec Unit -> Maybe (Bracket Aff) -> AffSpec Unit - runBracketSpec action = maybe action - $ unBracket \before after -> do - -- Use beforeWith to ignore the existential argument and supply the expected unit - beforeAll before - (afterAll after (beforeWith (const $ pure unit) action)) - - runBracket :: Aff Unit -> Maybe (Bracket Aff) -> Aff Unit - runBracket action = maybe action - $ unBracket \before after -> bracket before after (const action) diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 138d70952..092484f9d 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -390,6 +390,25 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" , version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9" } + , mote-testplan = + { dependencies = + [ "aff" + , "console" + , "datetime" + , "effect" + , "foldable-traversable" + , "maybe" + , "mote" + , "newtype" + , "numbers" + , "ordered-collections" + , "prelude" + , "spec" + , "transformers" + ] + , repo = "https://github.com/mlabs-haskell/purescript-mote-testplan" + , version = "d1c93e08ef09f5427b460f396b89da7255f8af52" + } , cardano-transaction-lib = { dependencies = [ "aeson" @@ -440,6 +459,7 @@ let additions = , "media-types" , "monad-logger" , "mote" + , "mote-testplan" , "newtype" , "noble-secp256k1" , "node-buffer" diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 0197ce70f..86702a48f 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -857,6 +857,18 @@ let installPhase = "ln -s $src $out"; }; + "mote-testplan" = pkgs.stdenv.mkDerivation { + name = "mote-testplan"; + version = "d1c93e08ef09f5427b460f396b89da7255f8af52"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-mote-testplan"; + rev = "d1c93e08ef09f5427b460f396b89da7255f8af52"; + sha256 = "1317v612hq1hlw3m6vvzjfpg3vzm4pdlpix6z4z221cpgaga4i2r"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "newtype" = pkgs.stdenv.mkDerivation { name = "newtype"; version = "v5.0.0"; diff --git a/templates/ctl-scaffold/spago.dhall b/templates/ctl-scaffold/spago.dhall index 2ea80a784..40de0f604 100644 --- a/templates/ctl-scaffold/spago.dhall +++ b/templates/ctl-scaffold/spago.dhall @@ -5,24 +5,25 @@ You can edit this file as you like. { name = "ctl-package-example" , dependencies = [ "aff" - , "js-bigints" + , "bytearrays" + , "cardano-hd-wallet" + , "cardano-message-signing" + , "cardano-plutus-data-schema" + , "cardano-serialization-lib" , "cardano-transaction-lib" + , "cardano-types" , "datetime" , "effect" + , "js-bigints" , "maybe" , "mote" + , "mote-testplan" + , "noble-secp256k1" , "ordered-collections" + , "plutus-types" , "posix-types" , "prelude" , "spec" - , "noble-secp256k1" - , "bytearrays" - , "cardano-hd-wallet" - , "cardano-message-signing" - , "cardano-plutus-data-schema" - , "cardano-serialization-lib" - , "cardano-types" - , "plutus-types" ] , packages = ./packages.dhall , sources = [ "src/**/*.purs", "exe/**/*.purs", "test/**/*.purs" ] diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs index 30f50d4cf..4ff4186a7 100644 --- a/test/ApplyArgs.purs +++ b/test/ApplyArgs.purs @@ -14,7 +14,7 @@ import Contract.TextEnvelope import Control.Monad.Error.Class (class MonadError) import Ctl.Internal.ApplyArgs (applyArgs) import Ctl.Internal.Cardano.TextEnvelope (TextEnvelope) -import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) +import Mote.TestPlanM (TestPlanM, interpret) import Data.List.Lazy (replicate) import Data.Profunctor.Choice (left) import Effect.Aff (Error, error, throwError) diff --git a/test/BalanceTx/ChangeGeneration.purs b/test/BalanceTx/ChangeGeneration.purs index 45f4714c8..5ca409319 100644 --- a/test/BalanceTx/ChangeGeneration.purs +++ b/test/BalanceTx/ChangeGeneration.purs @@ -5,7 +5,7 @@ import Prelude import Cardano.Types.BigNum as BigNum import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) import Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Mote (group, test) suite :: TestPlanM ContractTest Unit diff --git a/test/BalanceTx/Collateral.purs b/test/BalanceTx/Collateral.purs index 00eb69f9b..595f8cbdf 100644 --- a/test/BalanceTx/Collateral.purs +++ b/test/BalanceTx/Collateral.purs @@ -23,7 +23,7 @@ import Ctl.Internal.BalanceTx.Collateral.Select , selectCollateral ) import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithValue) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Array (length, range, replicate, zipWith) as Array import Data.List (singleton) as List import Data.Map (fromFoldable) as Map diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index 4eef74b05..726df9a78 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -27,7 +27,7 @@ import Contract.Time import Contract.TxConstraints (mustValidateIn) import Contract.UnbalancedTx (mkUnbalancedTxE) import Control.Monad.Except (throwError) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.Interval (Interval) import Effect.Aff (Aff) import Effect.Exception (error) diff --git a/test/Blockfrost/Aeson/Suite.purs b/test/Blockfrost/Aeson/Suite.purs index 2f246d48a..ad15457d3 100644 --- a/test/Blockfrost/Aeson/Suite.purs +++ b/test/Blockfrost/Aeson/Suite.purs @@ -23,7 +23,7 @@ import Ctl.Internal.Service.Blockfrost , BlockfrostScriptInfo , BlockfrostSystemStart ) -import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) +import Mote.TestPlanM (TestPlanM, interpret) import Data.Array (catMaybes, length) import Data.Array.NonEmpty (tail) import Data.Bifunctor (bimap, lmap) diff --git a/test/ByteArray.purs b/test/ByteArray.purs index bf88df26f..765abd205 100644 --- a/test/ByteArray.purs +++ b/test/ByteArray.purs @@ -2,7 +2,7 @@ module Test.Ctl.ByteArray where import Prelude -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.ByteArray ( ByteArray , byteArrayFromIntArray diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index b0d20aecd..4d7bab67f 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -24,7 +24,7 @@ import Ctl.Internal.BalanceTx.CoinSelection import Ctl.Internal.BalanceTx.Error (BalanceTxError) import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex) import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.Val as Val import Data.ByteArray (byteArrayFromAscii) import Data.Foldable (fold, foldMap) diff --git a/test/CoinSelection/RoundRobin.purs b/test/CoinSelection/RoundRobin.purs index 765c99814..e84e9ea8e 100644 --- a/test/CoinSelection/RoundRobin.purs +++ b/test/CoinSelection/RoundRobin.purs @@ -4,7 +4,7 @@ import Prelude import Cardano.Types.AssetName (AssetName) import Ctl.Internal.BalanceTx.CoinSelection (runRoundRobinM) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Foldable (all, foldl, sum) import Data.Function (on) import Data.Generic.Rep (class Generic) diff --git a/test/CoinSelection/SelectionState.purs b/test/CoinSelection/SelectionState.purs index d45a9501a..f5067e714 100644 --- a/test/CoinSelection/SelectionState.purs +++ b/test/CoinSelection/SelectionState.purs @@ -11,7 +11,7 @@ import Cardano.Types.Asset (Asset) import Ctl.Internal.BalanceTx.CoinSelection (SelectionState) import Ctl.Internal.BalanceTx.CoinSelection as CoinSelection import Ctl.Internal.CoinSelection.UtxoIndex as UtxoIndex -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Array.NonEmpty (cons') import Data.Maybe (Maybe(Just), isJust) import Data.Newtype (unwrap) diff --git a/test/CoinSelection/UtxoIndex.purs b/test/CoinSelection/UtxoIndex.purs index 11c0d9f73..df210a194 100644 --- a/test/CoinSelection/UtxoIndex.purs +++ b/test/CoinSelection/UtxoIndex.purs @@ -18,7 +18,7 @@ import Ctl.Internal.CoinSelection.UtxoIndex , utxoIndexInsertEntry , utxoIndexPartition ) as UtxoIndex -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Map (empty) as Map import Data.Maybe (Maybe(Nothing, Just)) import Data.Newtype (unwrap) diff --git a/test/CslGc.purs b/test/CslGc.purs index 64fb9e30b..ab9a8c0b0 100644 --- a/test/CslGc.purs +++ b/test/CslGc.purs @@ -5,7 +5,7 @@ module Test.Ctl.CslGc import Prelude import Control.Promise (Promise, toAffE) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Effect (Effect) import Effect.Aff (Aff) import Mote (group, test) diff --git a/test/Data.purs b/test/Data.purs index 78675b631..66df858c2 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -29,7 +29,7 @@ import Cardano.Types.PlutusData as PlutusData import Control.Lazy (fix) import Control.Monad.Error.Class (class MonadThrow) import Ctl.Internal.Helpers (showWithParens) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Array.NonEmpty (fromNonEmpty) as NEArray import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) diff --git a/test/Data/Interval.purs b/test/Data/Interval.purs index 516e9b25a..964fb0006 100644 --- a/test/Data/Interval.purs +++ b/test/Data/Interval.purs @@ -22,7 +22,7 @@ import Contract.PlutusData ) import Contract.Prelude (Aff, liftEffect) import Contract.Time (always, never) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.Interval ( Extended(NegInf, Finite, PosInf) , Interval(EmptyInterval, StartAt, EndAt, AlwaysInterval, FiniteInterval) diff --git a/test/E2E/Route.purs b/test/E2E/Route.purs index 8d20e4166..1fcae7b7a 100644 --- a/test/E2E/Route.purs +++ b/test/E2E/Route.purs @@ -3,7 +3,7 @@ module Test.Ctl.E2E.Route where import Prelude import Ctl.Internal.Test.E2E.Route (parseRoute) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Either (isRight) import Effect.Aff (Aff) import Mote (group, test) diff --git a/test/Hashing.purs b/test/Hashing.purs index e1fcab4f5..38d010eaa 100644 --- a/test/Hashing.purs +++ b/test/Hashing.purs @@ -10,7 +10,7 @@ import Cardano.Types.PlutusScript (plutusV1Script, plutusV2Script) import Cardano.Types.PlutusScript as PlutusScript import Contract.Hashing (datumHash) as Hashing import Contract.Scripts (PlutusScript) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (fromJust) import Data.Newtype (wrap) diff --git a/test/Logging.purs b/test/Logging.purs index 247d3143e..6410cf19e 100644 --- a/test/Logging.purs +++ b/test/Logging.purs @@ -5,7 +5,7 @@ import Prelude import Contract.Config (testnetConfig) import Contract.Log (logWarn') import Contract.Monad (runContract) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Log.Level (LogLevel(Error)) import Data.Maybe (Maybe(Just)) import Effect.Aff (Aff, try) diff --git a/test/NativeScript.purs b/test/NativeScript.purs index bb0237496..99bb93e7d 100644 --- a/test/NativeScript.purs +++ b/test/NativeScript.purs @@ -10,7 +10,7 @@ import Cardano.Types.NativeScript ( NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK) ) import Ctl.Internal.NativeScripts (getMaximumSigners) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Right)) import Data.Maybe (fromJust) diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 783e027e4..3deb0aa4d 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -23,7 +23,7 @@ import Ctl.Internal.QueryM.Ogmios , aesonObject ) import Ctl.Internal.QueryM.Ogmios as O -import Ctl.Internal.Test.TestPlanM (TestPlanM, interpret) +import Mote.TestPlanM (TestPlanM, interpret) import Data.Array (catMaybes, groupAllBy, nubBy) import Data.Array.NonEmpty (NonEmptyArray, head, length, tail) import Data.Bifunctor (lmap) diff --git a/test/Ogmios/EvaluateTx.purs b/test/Ogmios/EvaluateTx.purs index b6ab96b2f..b78cfb948 100644 --- a/test/Ogmios/EvaluateTx.purs +++ b/test/Ogmios/EvaluateTx.purs @@ -17,7 +17,7 @@ import Ctl.Internal.QueryM.Ogmios , TxEvaluationR(TxEvaluationR) , TxEvaluationResult(TxEvaluationResult) ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Either (Either(Left, Right)) import Data.Map as Map import Data.Maybe (fromJust) diff --git a/test/Partition.purs b/test/Partition.purs index b636be400..83224d27c 100644 --- a/test/Partition.purs +++ b/test/Partition.purs @@ -8,7 +8,7 @@ import Ctl.Internal.Partition , equipartition , partition ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Array (elem) as Array import Data.Array.NonEmpty (NonEmptyArray, (:)) import Data.Array.NonEmpty (length, singleton, sort, zip) as NEArray diff --git a/test/Plutip.purs b/test/Plutip.purs index c828426f1..f20182aaf 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -20,8 +20,8 @@ import Ctl.Internal.Plutip.Server , stopPlutipCluster ) import Ctl.Internal.Plutip.Types (StopClusterResponse(StopClusterSuccess)) -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Test.TestPlanM as Utils +import Mote.TestPlanM (TestPlanM) +import Mote.TestPlanM as Utils import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(SIGINT)) import Effect (Effect) diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index ed6deede0..94f240eba 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -151,7 +151,7 @@ import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Ctl.Examples.Schnorr as Schnorr import Ctl.Examples.SendsToken (contract) as SendsToken import Ctl.Examples.TxChaining (contract) as TxChaining -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.Interval (getSlotLength) import Ctl.Internal.Wallet ( WalletExtension(NamiWallet, GeroWallet, FlintWallet, NuFiWallet) diff --git a/test/Plutip/ExUnits.purs b/test/Plutip/ExUnits.purs index c62aebed8..24852243e 100644 --- a/test/Plutip/ExUnits.purs +++ b/test/Plutip/ExUnits.purs @@ -11,7 +11,7 @@ import Contract.Scripts (validatorHash) import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) import Contract.Transaction (awaitTxConfirmed) import Ctl.Examples.ExUnits as ExUnits -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Either (isLeft) import Effect.Aff (try) import JS.BigInt as BigInt diff --git a/test/Plutip/Logging.purs b/test/Plutip/Logging.purs index 653ef0a91..1ff393824 100644 --- a/test/Plutip/Logging.purs +++ b/test/Plutip/Logging.purs @@ -6,7 +6,7 @@ import Prelude import Contract.Log (logWarn') import Contract.Test.Plutip (runPlutipContract) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Log.Level (LogLevel(Error)) import Data.Maybe (Maybe(Just)) import Effect.Aff (Aff, try) diff --git a/test/Plutip/UtxoDistribution.purs b/test/Plutip/UtxoDistribution.purs index ea297a9f9..3ebab23c3 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Plutip/UtxoDistribution.purs @@ -42,7 +42,7 @@ import Contract.Wallet , withKeyWallet ) import Control.Lazy (fix) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution (encodeDistribution, keyWallets) import Data.Array (foldl, head, replicate, zip) import Data.Array.NonEmpty (fromNonEmpty) as NEArray diff --git a/test/Plutus/Credential.purs b/test/Plutus/Credential.purs index a88f84927..7e1d55445 100644 --- a/test/Plutus/Credential.purs +++ b/test/Plutus/Credential.purs @@ -11,7 +11,7 @@ import Cardano.Types.Credential ) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.ScriptHash as ScriptHash -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Maybe (fromJust) import Data.Traversable (for_) import Effect.Aff (Aff) diff --git a/test/Plutus/Time.purs b/test/Plutus/Time.purs index e0bb88a4f..d707cac25 100644 --- a/test/Plutus/Time.purs +++ b/test/Plutus/Time.purs @@ -10,7 +10,7 @@ import Ctl.Internal.QueryM.Ogmios ( OgmiosEraSummaries(OgmiosEraSummaries) , OgmiosSystemStart ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.EraSummaries ( EpochLength(EpochLength) , EraSummaries(EraSummaries) diff --git a/test/PrivateKey.purs b/test/PrivateKey.purs index f0ba075c2..2e30493d5 100644 --- a/test/PrivateKey.purs +++ b/test/PrivateKey.purs @@ -16,7 +16,7 @@ import Contract.Transaction , signTransaction ) import Contract.Wallet.Key (publicKeyFromPrivateKey) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.KeyFile ( privatePaymentKeyFromFile , privatePaymentKeyToFile diff --git a/test/ProtocolParams.purs b/test/ProtocolParams.purs index d5918bc36..efabe0735 100644 --- a/test/ProtocolParams.purs +++ b/test/ProtocolParams.purs @@ -6,7 +6,7 @@ import Prelude import Aeson (decodeAeson) import Ctl.Internal.QueryM.Ogmios (OgmiosProtocolParameters) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Either (Either, isRight) import Effect.Aff (Aff) import Mote (group, test) diff --git a/test/QueryM/AffInterface.purs b/test/QueryM/AffInterface.purs index 0bf31d4fb..200691bd2 100644 --- a/test/QueryM/AffInterface.purs +++ b/test/QueryM/AffInterface.purs @@ -8,7 +8,7 @@ import Control.Monad.Except (throwError) import Ctl.Internal.QueryM (QueryM, getChainTip, submitTxOgmios) import Ctl.Internal.QueryM.CurrentEpoch (getCurrentEpoch) import Ctl.Internal.QueryM.EraSummaries (getEraSummaries) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) import Data.Maybe (fromJust, isJust) diff --git a/test/Serialization.purs b/test/Serialization.purs index 602808482..69c26f78a 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -10,7 +10,7 @@ import Cardano.Types.PlutusData as PD import Cardano.Types.PublicKey as PublicKey import Contract.Keys (publicKeyFromBech32) import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Data.Maybe (Maybe, isJust, isNothing) import Data.Newtype (unwrap, wrap) diff --git a/test/Serialization/Hash.purs b/test/Serialization/Hash.purs index c91001245..7f68aad62 100644 --- a/test/Serialization/Hash.purs +++ b/test/Serialization/Hash.purs @@ -6,7 +6,7 @@ import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Types (Bech32String) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.ScriptHash as ScriptHash -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (Maybe(Just, Nothing), isNothing) import Data.Newtype (wrap) diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index 2941274cb..d79de108f 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -12,7 +12,7 @@ import Cardano.Types.BigNum (fromInt) as BigNum import Control.Monad.Error.Class (liftEither) import Control.Monad.Except (throwError) import Ctl.Internal.QueryM.Ogmios (OgmiosEraSummaries, OgmiosSystemStart) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.EraSummaries (EraSummaries) import Ctl.Internal.Types.Interval ( Interval diff --git a/test/Types/Ipv6.purs b/test/Types/Ipv6.purs index 1d662c044..f5217ab7f 100644 --- a/test/Types/Ipv6.purs +++ b/test/Types/Ipv6.purs @@ -6,7 +6,7 @@ import Prelude import Cardano.AsCbor (decodeCbor) import Ctl.Internal.QueryM.Ogmios (parseIpv6String) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Newtype (wrap) import Effect.Aff (Aff) diff --git a/test/Types/TokenName.purs b/test/Types/TokenName.purs index 4e15b46bb..271b16c40 100644 --- a/test/Types/TokenName.purs +++ b/test/Types/TokenName.purs @@ -3,7 +3,7 @@ module Test.Ctl.Types.TokenName (suite) where import Prelude import Cardano.Types.AssetName (mkAssetName) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (isJust) import Data.Traversable (for_) diff --git a/test/Types/Transaction.purs b/test/Types/Transaction.purs index 750f4d0cb..0c5e64952 100644 --- a/test/Types/Transaction.purs +++ b/test/Types/Transaction.purs @@ -14,7 +14,7 @@ import Contract.Transaction ( TransactionInput ) import Control.Monad.Error.Class (liftEither) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.Bifunctor (lmap) import Effect (Effect) import Effect.Aff (Aff) diff --git a/test/UsedTxOuts.purs b/test/UsedTxOuts.purs index f6ae92e8a..628926be1 100644 --- a/test/UsedTxOuts.purs +++ b/test/UsedTxOuts.purs @@ -5,7 +5,7 @@ import Prelude import Cardano.Types (Transaction) import Cardano.Types.TransactionHash (TransactionHash) import Control.Monad.Reader (runReaderT) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.UsedTxOuts ( isTxOutRefUsed , lockTransactionInputs diff --git a/test/Utils.purs b/test/Utils.purs index 48607a602..09dbe8d99 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -26,7 +26,7 @@ import Aeson ) import Cardano.Serialization.Lib (class IsBytes, fromBytes) import Cardano.Serialization.Lib.Internal (class IsCsl) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Data.ByteArray (ByteArray) import Data.DateTime.Instant (unInstant) import Data.Either (Either(Right), either) diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index 57e6142d1..da7bea9fe 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -10,7 +10,7 @@ import Contract.Wallet.Key ( StakeKeyPresence(WithStakeKey) , mkKeyWalletFromMnemonic ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) import Data.Lens (_Left, preview) import Data.UInt as UInt diff --git a/test/Wallet/Cip30/SignData.purs b/test/Wallet/Cip30/SignData.purs index 9fca47bcc..f1e6f73b8 100644 --- a/test/Wallet/Cip30/SignData.purs +++ b/test/Wallet/Cip30/SignData.purs @@ -22,7 +22,7 @@ import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.PublicKey as PublicKey import Contract.Keys (publicKeyFromBytes) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.Cip30 (DataSignature) import Ctl.Internal.Wallet.Key ( PrivatePaymentKey From a580fb90487291f9d0614088b9c8b0859a645845 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 19 Apr 2024 02:15:45 +0400 Subject: [PATCH 106/373] Format --- src/Internal/Plutip/Server.purs | 2 +- src/Internal/Test/ContractTest.purs | 2 +- src/Internal/Test/E2E/Runner.purs | 2 +- src/Internal/Test/KeyDir.purs | 2 +- test/ApplyArgs.purs | 2 +- test/BalanceTx/ChangeGeneration.purs | 2 +- test/BalanceTx/Collateral.purs | 2 +- test/BalanceTx/Time.purs | 2 +- test/Blockfrost/Aeson/Suite.purs | 2 +- test/ByteArray.purs | 2 +- test/CoinSelection/CoinSelection.purs | 2 +- test/CoinSelection/RoundRobin.purs | 2 +- test/CoinSelection/SelectionState.purs | 2 +- test/CoinSelection/UtxoIndex.purs | 2 +- test/CslGc.purs | 2 +- test/Data.purs | 2 +- test/Data/Interval.purs | 2 +- test/E2E/Route.purs | 2 +- test/Hashing.purs | 2 +- test/Logging.purs | 2 +- test/NativeScript.purs | 2 +- test/Ogmios/Aeson.purs | 2 +- test/Ogmios/EvaluateTx.purs | 2 +- test/Partition.purs | 2 +- test/Plutip.purs | 4 ++-- test/Plutip/Contract.purs | 2 +- test/Plutip/ExUnits.purs | 2 +- test/Plutip/Logging.purs | 2 +- test/Plutip/UtxoDistribution.purs | 2 +- test/Plutus/Credential.purs | 2 +- test/Plutus/Time.purs | 2 +- test/PrivateKey.purs | 2 +- test/ProtocolParams.purs | 2 +- test/QueryM/AffInterface.purs | 2 +- test/Serialization.purs | 2 +- test/Serialization/Hash.purs | 2 +- test/Types/Interval.purs | 2 +- test/Types/Ipv6.purs | 2 +- test/Types/TokenName.purs | 2 +- test/Types/Transaction.purs | 2 +- test/UsedTxOuts.purs | 2 +- test/Utils.purs | 2 +- test/Wallet/Bip32.purs | 2 +- test/Wallet/Cip30/SignData.purs | 2 +- 44 files changed, 45 insertions(+), 45 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 0359b11d5..104314d08 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -68,7 +68,6 @@ import Ctl.Internal.Test.ContractTest , ContractTestPlan(ContractTestPlan) , ContractTestPlanHandler ) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution ( class UtxoDistribution , InitialUTxODistribution @@ -113,6 +112,7 @@ import Effect.Ref as Ref import Mote (bracket) as Mote import Mote.Description (Description(Group, Test)) import Mote.Monad (MoteT(MoteT), mapTest) +import Mote.TestPlanM (TestPlanM) import Node.ChildProcess (defaultSpawnOptions) import Node.FS.Sync (exists, mkdir) as FSSync import Node.Path (FilePath, dirname) diff --git a/src/Internal/Test/ContractTest.purs b/src/Internal/Test/ContractTest.purs index 2f72f5941..581e41968 100644 --- a/src/Internal/Test/ContractTest.purs +++ b/src/Internal/Test/ContractTest.purs @@ -11,8 +11,8 @@ module Ctl.Internal.Test.ContractTest import Prelude import Contract.Monad (Contract) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution) +import Mote.TestPlanM (TestPlanM) -- | Represents a `Contract` test suite that depend on *some* wallet -- | `UtxoDistribution`. diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 416467166..7eeeb04db 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -72,7 +72,6 @@ import Ctl.Internal.Test.E2E.Wallets , namiConfirmAccess , namiSign ) -import Mote.TestPlanM (TestPlanM, interpretWithConfig) import Ctl.Internal.Test.UtxoDistribution (withStakeKey) import Ctl.Internal.Wallet.Key ( PrivateStakeKey @@ -115,6 +114,7 @@ import Effect.Console (log) import Effect.Exception (Error, error, throw) import Effect.Ref as Ref import Mote (group, test) +import Mote.TestPlanM (TestPlanM, interpretWithConfig) import Node.Buffer (fromArrayBuffer) import Node.ChildProcess ( Exit(Normally, BySignal) diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 757e06ed8..89e57147b 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -55,7 +55,6 @@ import Ctl.Internal.Helpers (logWithLevel) import Ctl.Internal.Lens (_amount) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) import Ctl.Internal.Test.ContractTest (ContractTest(ContractTest)) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution ( UtxoAmount , decodeWallets @@ -103,6 +102,7 @@ import Effect.Ref as Ref import JS.BigInt (BigInt) import JS.BigInt as BigInt import Mote.Monad (mapTest) +import Mote.TestPlanM (TestPlanM) import Node.Encoding (Encoding(UTF8)) import Node.FS.Aff (mkdir, readTextFile, readdir, writeTextFile) import Node.FS.Sync (exists) diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs index 4ff4186a7..8fab91ce5 100644 --- a/test/ApplyArgs.purs +++ b/test/ApplyArgs.purs @@ -14,7 +14,6 @@ import Contract.TextEnvelope import Control.Monad.Error.Class (class MonadError) import Ctl.Internal.ApplyArgs (applyArgs) import Ctl.Internal.Cardano.TextEnvelope (TextEnvelope) -import Mote.TestPlanM (TestPlanM, interpret) import Data.List.Lazy (replicate) import Data.Profunctor.Choice (left) import Effect.Aff (Error, error, throwError) @@ -22,6 +21,7 @@ import Foreign.Object (Object) import Foreign.Object as Object import JS.BigInt (fromInt) import Mote (group, test) +import Mote.TestPlanM (TestPlanM, interpret) import Test.Spec.Assertions (shouldEqual) scriptSources :: Object String diff --git a/test/BalanceTx/ChangeGeneration.purs b/test/BalanceTx/ChangeGeneration.purs index 5ca409319..5b9a5afde 100644 --- a/test/BalanceTx/ChangeGeneration.purs +++ b/test/BalanceTx/ChangeGeneration.purs @@ -5,8 +5,8 @@ import Prelude import Cardano.Types.BigNum as BigNum import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) import Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) -import Mote.TestPlanM (TestPlanM) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) suite :: TestPlanM ContractTest Unit suite = do diff --git a/test/BalanceTx/Collateral.purs b/test/BalanceTx/Collateral.purs index 595f8cbdf..9365f9b9e 100644 --- a/test/BalanceTx/Collateral.purs +++ b/test/BalanceTx/Collateral.purs @@ -23,7 +23,6 @@ import Ctl.Internal.BalanceTx.Collateral.Select , selectCollateral ) import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithValue) -import Mote.TestPlanM (TestPlanM) import Data.Array (length, range, replicate, zipWith) as Array import Data.List (singleton) as List import Data.Map (fromFoldable) as Map @@ -37,6 +36,7 @@ import Data.UInt (fromInt, toInt) as UInt import Effect.Aff (Aff) import JS.BigInt (fromInt) as BigInt import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures ( currencySymbol1 diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index 726df9a78..c1f5487d5 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -27,12 +27,12 @@ import Contract.Time import Contract.TxConstraints (mustValidateIn) import Contract.UnbalancedTx (mkUnbalancedTxE) import Control.Monad.Except (throwError) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.Interval (Interval) import Effect.Aff (Aff) import Effect.Exception (error) import JS.BigInt (fromString) as BigInt import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Spec.Assertions (fail, shouldEqual) diff --git a/test/Blockfrost/Aeson/Suite.purs b/test/Blockfrost/Aeson/Suite.purs index ad15457d3..347472cf0 100644 --- a/test/Blockfrost/Aeson/Suite.purs +++ b/test/Blockfrost/Aeson/Suite.purs @@ -23,7 +23,6 @@ import Ctl.Internal.Service.Blockfrost , BlockfrostScriptInfo , BlockfrostSystemStart ) -import Mote.TestPlanM (TestPlanM, interpret) import Data.Array (catMaybes, length) import Data.Array.NonEmpty (tail) import Data.Bifunctor (bimap, lmap) @@ -38,6 +37,7 @@ import Data.Traversable (for_) import Effect (Effect) import Effect.Aff (Aff, error, launchAff_) import Mote (group, test) +import Mote.TestPlanM (TestPlanM, interpret) import Node.Encoding (Encoding(UTF8)) import Node.FS.Aff (readTextFile, readdir) import Node.Path (FilePath, basename, concat) diff --git a/test/ByteArray.purs b/test/ByteArray.purs index 765abd205..a57314096 100644 --- a/test/ByteArray.purs +++ b/test/ByteArray.purs @@ -2,7 +2,6 @@ module Test.Ctl.ByteArray where import Prelude -import Mote.TestPlanM (TestPlanM) import Data.ByteArray ( ByteArray , byteArrayFromIntArray @@ -15,6 +14,7 @@ import Data.Maybe (Maybe(Just)) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.QuickCheck (quickCheck, (===)) import Test.QuickCheck.Laws.Data.Eq (checkEq) import Test.QuickCheck.Laws.Data.Monoid (checkMonoid) diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index 4d7bab67f..0a7066ded 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -24,7 +24,6 @@ import Ctl.Internal.BalanceTx.CoinSelection import Ctl.Internal.BalanceTx.Error (BalanceTxError) import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex) import Ctl.Internal.CoinSelection.UtxoIndex (buildUtxoIndex) as UtxoIndex -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.Val as Val import Data.ByteArray (byteArrayFromAscii) import Data.Foldable (fold, foldMap) @@ -42,6 +41,7 @@ import Effect.Class (class MonadEffect, liftEffect) import Effect.Exception (throw) import Effect.Unsafe (unsafePerformEffect) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.CoinSelection.Arbitrary ( ArbitraryTransactionInput diff --git a/test/CoinSelection/RoundRobin.purs b/test/CoinSelection/RoundRobin.purs index e84e9ea8e..f2b22112a 100644 --- a/test/CoinSelection/RoundRobin.purs +++ b/test/CoinSelection/RoundRobin.purs @@ -4,7 +4,6 @@ import Prelude import Cardano.Types.AssetName (AssetName) import Ctl.Internal.BalanceTx.CoinSelection (runRoundRobinM) -import Mote.TestPlanM (TestPlanM) import Data.Foldable (all, foldl, sum) import Data.Function (on) import Data.Generic.Rep (class Generic) @@ -33,6 +32,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import Data.Unfoldable (replicateA) import Effect.Aff (Aff) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Ctl.CoinSelection.Arbitrary (ArbitraryMap) import Test.QuickCheck (Result, (), (===)) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) diff --git a/test/CoinSelection/SelectionState.purs b/test/CoinSelection/SelectionState.purs index f5067e714..ba0732f20 100644 --- a/test/CoinSelection/SelectionState.purs +++ b/test/CoinSelection/SelectionState.purs @@ -11,7 +11,6 @@ import Cardano.Types.Asset (Asset) import Ctl.Internal.BalanceTx.CoinSelection (SelectionState) import Ctl.Internal.BalanceTx.CoinSelection as CoinSelection import Ctl.Internal.CoinSelection.UtxoIndex as UtxoIndex -import Mote.TestPlanM (TestPlanM) import Data.Array.NonEmpty (cons') import Data.Maybe (Maybe(Just), isJust) import Data.Newtype (unwrap) @@ -19,6 +18,7 @@ import Data.Tuple.Nested ((/\)) import Effect.Aff (Aff) import Effect.Unsafe (unsafePerformEffect) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Ctl.CoinSelection.Arbitrary ( ArbitrarySelectionState , ArbitraryTxUnspentOut diff --git a/test/CoinSelection/UtxoIndex.purs b/test/CoinSelection/UtxoIndex.purs index df210a194..23ca709d8 100644 --- a/test/CoinSelection/UtxoIndex.purs +++ b/test/CoinSelection/UtxoIndex.purs @@ -18,7 +18,6 @@ import Ctl.Internal.CoinSelection.UtxoIndex , utxoIndexInsertEntry , utxoIndexPartition ) as UtxoIndex -import Mote.TestPlanM (TestPlanM) import Data.Map (empty) as Map import Data.Maybe (Maybe(Nothing, Just)) import Data.Newtype (unwrap) @@ -26,6 +25,7 @@ import Data.Tuple.Nested ((/\)) import Effect.Aff (Aff) import Effect.Unsafe (unsafePerformEffect) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Ctl.CoinSelection.Arbitrary ( ArbitraryTxUnspentOut , ArbitraryUtxoIndex diff --git a/test/CslGc.purs b/test/CslGc.purs index ab9a8c0b0..6779b74e9 100644 --- a/test/CslGc.purs +++ b/test/CslGc.purs @@ -5,10 +5,10 @@ module Test.Ctl.CslGc import Prelude import Control.Promise (Promise, toAffE) -import Mote.TestPlanM (TestPlanM) import Effect (Effect) import Effect.Aff (Aff) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) foreign import testExternalMemLeakImpl :: CslGcTestConfig -> Effect (Promise Unit) diff --git a/test/Data.purs b/test/Data.purs index 66df858c2..0b6515f7d 100644 --- a/test/Data.purs +++ b/test/Data.purs @@ -29,7 +29,6 @@ import Cardano.Types.PlutusData as PlutusData import Control.Lazy (fix) import Control.Monad.Error.Class (class MonadThrow) import Ctl.Internal.Helpers (showWithParens) -import Mote.TestPlanM (TestPlanM) import Data.Array.NonEmpty (fromNonEmpty) as NEArray import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) @@ -46,6 +45,7 @@ import Effect.Exception (Error) import JS.BigInt (BigInt) import JS.BigInt as BigInt import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.QuickCheck ((===)) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary, genericArbitrary) diff --git a/test/Data/Interval.purs b/test/Data/Interval.purs index 964fb0006..490372c47 100644 --- a/test/Data/Interval.purs +++ b/test/Data/Interval.purs @@ -22,7 +22,6 @@ import Contract.PlutusData ) import Contract.Prelude (Aff, liftEffect) import Contract.Time (always, never) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.Interval ( Extended(NegInf, Finite, PosInf) , Interval(EmptyInterval, StartAt, EndAt, AlwaysInterval, FiniteInterval) @@ -39,6 +38,7 @@ import Data.Show.Generic (genericShow) import JS.BigInt (BigInt) import JS.BigInt as BigInt import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.QuickCheck (Result, arbitrary, quickCheck, (===)) import Test.QuickCheck.Gen (Gen) import Test.Spec.Assertions (shouldEqual) diff --git a/test/E2E/Route.purs b/test/E2E/Route.purs index 1fcae7b7a..e8e1f91e0 100644 --- a/test/E2E/Route.purs +++ b/test/E2E/Route.purs @@ -3,10 +3,10 @@ module Test.Ctl.E2E.Route where import Prelude import Ctl.Internal.Test.E2E.Route (parseRoute) -import Mote.TestPlanM (TestPlanM) import Data.Either (isRight) import Effect.Aff (Aff) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Spec.Assertions (shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit diff --git a/test/Hashing.purs b/test/Hashing.purs index 38d010eaa..db741fb1e 100644 --- a/test/Hashing.purs +++ b/test/Hashing.purs @@ -10,13 +10,13 @@ import Cardano.Types.PlutusScript (plutusV1Script, plutusV2Script) import Cardano.Types.PlutusScript as PlutusScript import Contract.Hashing (datumHash) as Hashing import Contract.Scripts (PlutusScript) -import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (fromJust) import Data.Newtype (wrap) import Effect.Aff (Aff) import JS.BigInt (fromInt) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures (plutusDataFixture7) import Test.Spec.Assertions (shouldEqual) diff --git a/test/Logging.purs b/test/Logging.purs index 6410cf19e..7bbab8607 100644 --- a/test/Logging.purs +++ b/test/Logging.purs @@ -5,7 +5,6 @@ import Prelude import Contract.Config (testnetConfig) import Contract.Log (logWarn') import Contract.Monad (runContract) -import Mote.TestPlanM (TestPlanM) import Data.Log.Level (LogLevel(Error)) import Data.Maybe (Maybe(Just)) import Effect.Aff (Aff, try) @@ -13,6 +12,7 @@ import Effect.Class (liftEffect) import Effect.Exception (throw) import Effect.Ref as Ref import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (Aff Unit) Unit diff --git a/test/NativeScript.purs b/test/NativeScript.purs index 99bb93e7d..678831281 100644 --- a/test/NativeScript.purs +++ b/test/NativeScript.purs @@ -10,7 +10,6 @@ import Cardano.Types.NativeScript ( NativeScript(ScriptPubkey, ScriptAll, ScriptAny, ScriptNOfK) ) import Ctl.Internal.NativeScripts (getMaximumSigners) -import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Right)) import Data.Maybe (fromJust) @@ -19,6 +18,7 @@ import Data.Set as Set import Effect.Aff (Aff) import Effect.Class (liftEffect) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.QuickCheck (quickCheck, (===)) import Test.Spec.Assertions (shouldEqual) diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index 3deb0aa4d..f8af9bddd 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -23,7 +23,6 @@ import Ctl.Internal.QueryM.Ogmios , aesonObject ) import Ctl.Internal.QueryM.Ogmios as O -import Mote.TestPlanM (TestPlanM, interpret) import Data.Array (catMaybes, groupAllBy, nubBy) import Data.Array.NonEmpty (NonEmptyArray, head, length, tail) import Data.Bifunctor (lmap) @@ -41,6 +40,7 @@ import Effect.Class (liftEffect) import Effect.Exception (throw) import Foreign.Object (update) as Object import Mote (group, skip, test) +import Mote.TestPlanM (TestPlanM, interpret) import Node.Encoding (Encoding(UTF8)) import Node.FS.Aff (readTextFile, readdir) import Node.Path (FilePath, basename, concat) diff --git a/test/Ogmios/EvaluateTx.purs b/test/Ogmios/EvaluateTx.purs index b78cfb948..e7040703f 100644 --- a/test/Ogmios/EvaluateTx.purs +++ b/test/Ogmios/EvaluateTx.purs @@ -17,7 +17,6 @@ import Ctl.Internal.QueryM.Ogmios , TxEvaluationR(TxEvaluationR) , TxEvaluationResult(TxEvaluationResult) ) -import Mote.TestPlanM (TestPlanM) import Data.Either (Either(Left, Right)) import Data.Map as Map import Data.Maybe (fromJust) @@ -25,6 +24,7 @@ import Data.Tuple.Nested (type (/\), (/\)) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures ( ogmiosEvaluateTxFailIncompatibleEraFixture diff --git a/test/Partition.purs b/test/Partition.purs index 83224d27c..f263cf30c 100644 --- a/test/Partition.purs +++ b/test/Partition.purs @@ -8,7 +8,6 @@ import Ctl.Internal.Partition , equipartition , partition ) -import Mote.TestPlanM (TestPlanM) import Data.Array (elem) as Array import Data.Array.NonEmpty (NonEmptyArray, (:)) import Data.Array.NonEmpty (length, singleton, sort, zip) as NEArray @@ -22,6 +21,7 @@ import Effect.Aff (Aff) import JS.BigInt (BigInt) import JS.BigInt (fromInt) as BigInt import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (suchThat) import Test.Spec.QuickCheck (quickCheck, quickCheck') diff --git a/test/Plutip.purs b/test/Plutip.purs index f20182aaf..2a582b224 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -20,8 +20,6 @@ import Ctl.Internal.Plutip.Server , stopPlutipCluster ) import Ctl.Internal.Plutip.Types (StopClusterResponse(StopClusterSuccess)) -import Mote.TestPlanM (TestPlanM) -import Mote.TestPlanM as Utils import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(SIGINT)) import Effect (Effect) @@ -35,6 +33,8 @@ import Effect.Aff ) import Mote (group, test) import Mote.Monad (mapTest) +import Mote.TestPlanM (TestPlanM) +import Mote.TestPlanM as Utils import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 94f240eba..c7b06dfa5 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -151,7 +151,6 @@ import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Ctl.Examples.Schnorr as Schnorr import Ctl.Examples.SendsToken (contract) as SendsToken import Ctl.Examples.TxChaining (contract) as TxChaining -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.Interval (getSlotLength) import Ctl.Internal.Wallet ( WalletExtension(NamiWallet, GeroWallet, FlintWallet, NuFiWallet) @@ -175,6 +174,7 @@ import Effect.Class (liftEffect) import Effect.Exception (error, throw) import JS.BigInt as BigInt import Mote (group, skip, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Test.Ctl.Fixtures diff --git a/test/Plutip/ExUnits.purs b/test/Plutip/ExUnits.purs index 24852243e..822569b15 100644 --- a/test/Plutip/ExUnits.purs +++ b/test/Plutip/ExUnits.purs @@ -11,11 +11,11 @@ import Contract.Scripts (validatorHash) import Contract.Test (ContractTest, InitialUTxOs, withKeyWallet, withWallets) import Contract.Transaction (awaitTxConfirmed) import Ctl.Examples.ExUnits as ExUnits -import Mote.TestPlanM (TestPlanM) import Data.Either (isLeft) import Effect.Aff (try) import JS.BigInt as BigInt import Mote (test) +import Mote.TestPlanM (TestPlanM) import Test.Spec.Assertions (shouldSatisfy) mkSuite :: Int -> TestPlanM ContractTest Unit diff --git a/test/Plutip/Logging.purs b/test/Plutip/Logging.purs index 1ff393824..1dcc04e6a 100644 --- a/test/Plutip/Logging.purs +++ b/test/Plutip/Logging.purs @@ -6,7 +6,6 @@ import Prelude import Contract.Log (logWarn') import Contract.Test.Plutip (runPlutipContract) -import Mote.TestPlanM (TestPlanM) import Data.Log.Level (LogLevel(Error)) import Data.Maybe (Maybe(Just)) import Effect.Aff (Aff, try) @@ -14,6 +13,7 @@ import Effect.Class (liftEffect) import Effect.Exception (throw) import Effect.Ref as Ref import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Ctl.Plutip.Common (config) import Test.Spec.Assertions (shouldEqual) diff --git a/test/Plutip/UtxoDistribution.purs b/test/Plutip/UtxoDistribution.purs index 3ebab23c3..fd7afd736 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Plutip/UtxoDistribution.purs @@ -42,7 +42,6 @@ import Contract.Wallet , withKeyWallet ) import Control.Lazy (fix) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Test.UtxoDistribution (encodeDistribution, keyWallets) import Data.Array (foldl, head, replicate, zip) import Data.Array.NonEmpty (fromNonEmpty) as NEArray @@ -58,6 +57,7 @@ import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (throw) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.Plutip.Common (config, privateStakeKey) import Test.QuickCheck (class Arbitrary, arbitrary) diff --git a/test/Plutus/Credential.purs b/test/Plutus/Credential.purs index 7e1d55445..a1b30a860 100644 --- a/test/Plutus/Credential.purs +++ b/test/Plutus/Credential.purs @@ -11,11 +11,11 @@ import Cardano.Types.Credential ) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.ScriptHash as ScriptHash -import Mote.TestPlanM (TestPlanM) import Data.Maybe (fromJust) import Data.Traversable (for_) import Effect.Aff (Aff) import Mote (group) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.Utils (toFromAesonTest) diff --git a/test/Plutus/Time.purs b/test/Plutus/Time.purs index d707cac25..2aa8e9ca7 100644 --- a/test/Plutus/Time.purs +++ b/test/Plutus/Time.purs @@ -10,7 +10,6 @@ import Ctl.Internal.QueryM.Ogmios ( OgmiosEraSummaries(OgmiosEraSummaries) , OgmiosSystemStart ) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.EraSummaries ( EpochLength(EpochLength) , EraSummaries(EraSummaries) @@ -49,6 +48,7 @@ import Data.UInt as UInt import Effect.Aff (Aff) import JS.BigInt as BigInt import Mote (group) +import Mote.TestPlanM (TestPlanM) import Test.Ctl.Utils (toFromAesonTest, toFromAesonTestWith) slotFixture :: Slot diff --git a/test/PrivateKey.purs b/test/PrivateKey.purs index 2e30493d5..ba463d1d6 100644 --- a/test/PrivateKey.purs +++ b/test/PrivateKey.purs @@ -16,7 +16,6 @@ import Contract.Transaction , signTransaction ) import Contract.Wallet.Key (publicKeyFromPrivateKey) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.KeyFile ( privatePaymentKeyFromFile , privatePaymentKeyToFile @@ -37,6 +36,7 @@ import Data.Newtype (unwrap) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Node.FS.Sync (unlink) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures (txFixture1) diff --git a/test/ProtocolParams.purs b/test/ProtocolParams.purs index efabe0735..fa065c52e 100644 --- a/test/ProtocolParams.purs +++ b/test/ProtocolParams.purs @@ -6,10 +6,10 @@ import Prelude import Aeson (decodeAeson) import Ctl.Internal.QueryM.Ogmios (OgmiosProtocolParameters) -import Mote.TestPlanM (TestPlanM) import Data.Either (Either, isRight) import Effect.Aff (Aff) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Ctl.Utils as Utils import Test.Spec.Assertions (shouldSatisfy) diff --git a/test/QueryM/AffInterface.purs b/test/QueryM/AffInterface.purs index 200691bd2..324410a74 100644 --- a/test/QueryM/AffInterface.purs +++ b/test/QueryM/AffInterface.purs @@ -8,7 +8,6 @@ import Control.Monad.Except (throwError) import Ctl.Internal.QueryM (QueryM, getChainTip, submitTxOgmios) import Ctl.Internal.QueryM.CurrentEpoch (getCurrentEpoch) import Ctl.Internal.QueryM.EraSummaries (getEraSummaries) -import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Either (Either(Left, Right)) import Data.Maybe (fromJust, isJust) @@ -17,6 +16,7 @@ import Data.String.CodeUnits (indexOf) import Data.String.Pattern (Pattern(Pattern)) import Effect.Aff (error, try) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Spec.Assertions (shouldSatisfy) diff --git a/test/Serialization.purs b/test/Serialization.purs index 69c26f78a..19b957f41 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -10,7 +10,6 @@ import Cardano.Types.PlutusData as PD import Cardano.Types.PublicKey as PublicKey import Contract.Keys (publicKeyFromBech32) import Ctl.Internal.Helpers (liftM) -import Mote.TestPlanM (TestPlanM) import Data.ByteArray (byteArrayToHex, hexToByteArrayUnsafe) import Data.Maybe (Maybe, isJust, isNothing) import Data.Newtype (unwrap, wrap) @@ -21,6 +20,7 @@ import Effect.Class (liftEffect) import Effect.Exception (error) import JS.BigInt as BigInt import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Ctl.Fixtures ( txFixture1 , txFixture2 diff --git a/test/Serialization/Hash.purs b/test/Serialization/Hash.purs index 7f68aad62..ddaa92c80 100644 --- a/test/Serialization/Hash.purs +++ b/test/Serialization/Hash.purs @@ -6,12 +6,12 @@ import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Types (Bech32String) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.ScriptHash as ScriptHash -import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (Maybe(Just, Nothing), isNothing) import Data.Newtype (wrap) import Effect.Aff (Aff) import Mote (test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.Utils (assertTrue, errMaybe) diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index d79de108f..abfcaddcf 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -12,7 +12,6 @@ import Cardano.Types.BigNum (fromInt) as BigNum import Control.Monad.Error.Class (liftEither) import Control.Monad.Except (throwError) import Ctl.Internal.QueryM.Ogmios (OgmiosEraSummaries, OgmiosSystemStart) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.EraSummaries (EraSummaries) import Ctl.Internal.Types.Interval ( Interval @@ -41,6 +40,7 @@ import Effect (Effect) import Effect.Exception (error) import JS.BigInt (fromInt, fromString) as BigInt import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) import Node.Path (concat) as Path diff --git a/test/Types/Ipv6.purs b/test/Types/Ipv6.purs index f5217ab7f..dbf8404b4 100644 --- a/test/Types/Ipv6.purs +++ b/test/Types/Ipv6.purs @@ -6,11 +6,11 @@ import Prelude import Cardano.AsCbor (decodeCbor) import Ctl.Internal.QueryM.Ogmios (parseIpv6String) -import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Newtype (wrap) import Effect.Aff (Aff) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (Aff Unit) Unit diff --git a/test/Types/TokenName.purs b/test/Types/TokenName.purs index 271b16c40..cc8dfcc45 100644 --- a/test/Types/TokenName.purs +++ b/test/Types/TokenName.purs @@ -3,12 +3,12 @@ module Test.Ctl.Types.TokenName (suite) where import Prelude import Cardano.Types.AssetName (mkAssetName) -import Mote.TestPlanM (TestPlanM) import Data.ByteArray (hexToByteArrayUnsafe) import Data.Maybe (isJust) import Data.Traversable (for_) import Effect.Aff (Aff) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Ctl.Utils (toFromAesonTest) import Test.Spec.Assertions (shouldSatisfy) diff --git a/test/Types/Transaction.purs b/test/Types/Transaction.purs index 0c5e64952..7aec88e05 100644 --- a/test/Types/Transaction.purs +++ b/test/Types/Transaction.purs @@ -14,13 +14,13 @@ import Contract.Transaction ( TransactionInput ) import Control.Monad.Error.Class (liftEither) -import Mote.TestPlanM (TestPlanM) import Data.Bifunctor (lmap) import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error) import Mote (group) +import Mote.TestPlanM (TestPlanM) import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) import Node.Path (concat) as Path diff --git a/test/UsedTxOuts.purs b/test/UsedTxOuts.purs index 628926be1..667278b6c 100644 --- a/test/UsedTxOuts.purs +++ b/test/UsedTxOuts.purs @@ -5,7 +5,6 @@ import Prelude import Cardano.Types (Transaction) import Cardano.Types.TransactionHash (TransactionHash) import Control.Monad.Reader (runReaderT) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Types.UsedTxOuts ( isTxOutRefUsed , lockTransactionInputs @@ -21,6 +20,7 @@ import Data.Traversable (traverse) import Data.UInt (UInt) import Effect.Aff (Aff) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures (mkSampleTx, mkTxInput, txFixture1) import Test.Spec.Assertions (shouldReturn) diff --git a/test/Utils.purs b/test/Utils.purs index 09dbe8d99..d262017eb 100644 --- a/test/Utils.purs +++ b/test/Utils.purs @@ -26,7 +26,6 @@ import Aeson ) import Cardano.Serialization.Lib (class IsBytes, fromBytes) import Cardano.Serialization.Lib.Internal (class IsCsl) -import Mote.TestPlanM (TestPlanM) import Data.ByteArray (ByteArray) import Data.DateTime.Instant (unInstant) import Data.Either (Either(Right), either) @@ -41,6 +40,7 @@ import Effect.Console (log) import Effect.Exception (throw, throwException) import Effect.Now (now) import Mote (test) +import Mote.TestPlanM (TestPlanM) import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) import Node.Path (FilePath) diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index da7bea9fe..763893415 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -10,12 +10,12 @@ import Contract.Wallet.Key ( StakeKeyPresence(WithStakeKey) , mkKeyWalletFromMnemonic ) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) import Data.Lens (_Left, preview) import Data.UInt as UInt import Effect.Aff (Aff) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (Aff Unit) Unit diff --git a/test/Wallet/Cip30/SignData.purs b/test/Wallet/Cip30/SignData.purs index f1e6f73b8..0d9e5abe0 100644 --- a/test/Wallet/Cip30/SignData.purs +++ b/test/Wallet/Cip30/SignData.purs @@ -22,7 +22,6 @@ import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.PublicKey as PublicKey import Contract.Keys (publicKeyFromBytes) import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Mote.TestPlanM (TestPlanM) import Ctl.Internal.Wallet.Cip30 (DataSignature) import Ctl.Internal.Wallet.Key ( PrivatePaymentKey @@ -37,6 +36,7 @@ import Effect (Effect) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Mote (group, test) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.Utils (assertTrue, errMaybe) import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) From 48a1568a3eea038942c644488002ed9d50a6a626 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 22 Apr 2024 23:13:54 +0400 Subject: [PATCH 107/373] Remove tests for ByteArray --- README.md | 3 --- spago.dhall | 1 - test/ByteArray.purs | 45 --------------------------------------------- test/Unit.purs | 2 -- 4 files changed, 51 deletions(-) delete mode 100644 test/ByteArray.purs diff --git a/README.md b/README.md index 817063c00..6bdace97e 100644 --- a/README.md +++ b/README.md @@ -19,9 +19,6 @@ - [Documentation](#documentation) - - [Light wallet support](#light-wallet-support) -- [Roadmap](#roadmap) -- [Architecture](#architecture) - [Additional resources/tools:](#additional-resourcestools) - [Available support channels info](#available-support-channels-info) - [Funding acknowledgements](#funding-acknowledgements) diff --git a/spago.dhall b/spago.dhall index 4043f2afc..346fda593 100644 --- a/spago.dhall +++ b/spago.dhall @@ -79,7 +79,6 @@ You can edit this file as you like. , "profunctor-lenses" , "quickcheck" , "quickcheck-combinators" - , "quickcheck-laws" , "random" , "rationals" , "record" diff --git a/test/ByteArray.purs b/test/ByteArray.purs deleted file mode 100644 index a57314096..000000000 --- a/test/ByteArray.purs +++ /dev/null @@ -1,45 +0,0 @@ -module Test.Ctl.ByteArray where - -import Prelude - -import Data.ByteArray - ( ByteArray - , byteArrayFromIntArray - , byteArrayFromIntArrayUnsafe - , byteArrayToHex - , byteArrayToIntArray - , hexToByteArray - ) -import Data.Maybe (Maybe(Just)) -import Effect.Aff (Aff) -import Effect.Class (liftEffect) -import Mote (group, test) -import Mote.TestPlanM (TestPlanM) -import Test.QuickCheck (quickCheck, (===)) -import Test.QuickCheck.Laws.Data.Eq (checkEq) -import Test.QuickCheck.Laws.Data.Monoid (checkMonoid) -import Test.QuickCheck.Laws.Data.Ord (checkOrd) -import Test.QuickCheck.Laws.Data.Semigroup (checkSemigroup) -import Type.Proxy (Proxy(Proxy)) - -suite :: TestPlanM (Aff Unit) Unit -suite = do - group "ByteArray" do - test "Eq instance" $ liftEffect do - checkEq (Proxy :: Proxy ByteArray) - test "Ord instance" $ liftEffect do - checkOrd (Proxy :: Proxy ByteArray) - test "Semigroup instance" $ liftEffect do - checkSemigroup (Proxy :: Proxy ByteArray) - test "Monoid instance" $ liftEffect do - checkMonoid (Proxy :: Proxy ByteArray) - test "hexToByteArray <<< byteArrayToHex = Just" $ liftEffect do - quickCheck \bytes -> - hexToByteArray (byteArrayToHex bytes) === Just bytes - test "byteArrayFromIntArrayUnsafe <<< byteArrayToIntArray = id" $ liftEffect - do - quickCheck \bytes -> - byteArrayFromIntArrayUnsafe (byteArrayToIntArray bytes) === bytes - test "byteArrayFromIntArray <<< byteArrayToIntArray = Just" $ liftEffect do - quickCheck \bytes -> - byteArrayFromIntArray (byteArrayToIntArray bytes) === Just bytes diff --git a/test/Unit.purs b/test/Unit.purs index 85aad223f..c7882764b 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -14,7 +14,6 @@ import Mote.Monad (mapTest) import Test.Ctl.ApplyArgs as ApplyArgs import Test.Ctl.Blockfrost.Aeson.Suite as Blockfrost.Aeson import Test.Ctl.Blockfrost.ProtocolParameters as Blockfrost.ProtocolParameters -import Test.Ctl.ByteArray as ByteArray import Test.Ctl.CoinSelection as CoinSelection import Test.Ctl.CslGc as CslGc import Test.Ctl.Data as Data @@ -52,7 +51,6 @@ testPlan = do Ipv6.suite NativeScript.suite Bip32.suite - ByteArray.suite Cip30SignData.suite CslGc.suite Data.suite From 5cb44d849d679a36ea5b218126144e386d6c39cb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 22 Apr 2024 23:21:52 +0400 Subject: [PATCH 108/373] Expand the changelog --- CHANGELOG.md | 8 ++++++++ doc/comparisons.md | 18 ++++++++++++++++++ spago.dhall | 9 ++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 997a39deb..d26862f65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -99,6 +99,7 @@ Starting from this version, CTL does not use Plutus-domain types anymore. There - Renamings for better conformity with CSL: - `TokenName` renamed to `AssetName` - `NonAdaAsset` renamed to `MultiAsset` + - `CurrencySymbol` renamed to `ScriptHash` - `Coin` now wraps BigNum instead of BigInt (in line with CSL) - `NoOutputDatum` variant has been removed from `OutputDatum`: instead, it was made optional via `Maybe` in `TransactionOutput` - `TransactionMetadatum` constructor naming change, in PS and in JSON encoding: `MetadataMap` -> `Map`, `MetadataList` -> `List` @@ -154,6 +155,13 @@ Starting from this version, CTL does not use Plutus-domain types anymore. There ``` - `Contract.Address` utilities to work with `Address` - use `mkAddress` and machinery from `Cardano.Types.Address` +- `Contract.RewardAddress` - use `Cardano.Types.RewardAddress` +- `Contract.Transaction`: + - Removed newtypes for `Transaction`: + - `BalancedSignedTransaction` + - `FinalizedTransaction` +- `Contract.ScriptLookups`: + - synonyms for lookup functions that use `Maybe` have been removed: `mintingPolicyM`, `ownPaymentPubKeyHashM`, `ownStakePubKeyHashM`, `unspentOutputsM`, `validatorM` - `Contract.Credential` renamings: - `PubKeyCredential` -> `PubKeyHashCredential` - `ScriptCredential` -> `ScriptHashCredential` diff --git a/doc/comparisons.md b/doc/comparisons.md index 2914dff21..32a3f41e1 100644 --- a/doc/comparisons.md +++ b/doc/comparisons.md @@ -6,6 +6,7 @@ This document highlights key differences between CTL and other Cardano offchain +- [Plutus Application Backend](#plutus-application-backend) - [Lucid](#lucid) - [Wallet support](#wallet-support) - [Query layer differences](#query-layer-differences) @@ -16,6 +17,23 @@ This document highlights key differences between CTL and other Cardano offchain +## Plutus Application Backend + +CTL is directly inspired by the Plutus Application Backend (PAB). Unlike PAB, however, CTL is a library and not a standalone process. Over the course of CTL's development, several questions have been raised as to how best create PAB-as-a-library: + +1. How do we get the transaction in the right format? + - This is handled by `cardano-serialization-lib`, a Rust library available as WASM +2. How do we query the chain? + - This has been solved using Ogmios & Kupo + - Thanks to [Catalyst](https://cardano.ideascale.com/c/idea/420791), we now support an alternative [BlockFrost](https://blockfrost.io/) backend as well ([docs](./blockfrost.md)) +3. How do we get wallet data? + - This is done via browser-based light wallet integration in the browser based on CIP-30 ([`purescript-cip30-typesafe`](https://github.com/mlabs-haskell/purescript-cip30-typesafe)) +4. How closely should we follow Plutus' `Contract` API? + - CTL's `Contract` model is **significantly** less restrictive than Plutus' and allows for arbitrary effects within the `Contract` monad + - Certain features cannot be directly translated into Purescript from Haskell due to differences between the two languages + - Some of the Plutus conventions do not make sense for us, due to differences between on-chain and off-chain + - Our API scope is a lot more extensive, as we provide support for wallet interactions, staking operations, and more support for balancer tweaking. + ## Lucid ### Wallet support diff --git a/spago.dhall b/spago.dhall index 346fda593..3fa172ac8 100644 --- a/spago.dhall +++ b/spago.dhall @@ -103,5 +103,12 @@ You can edit this file as you like. , "web-storage" ] , packages = ./packages.dhall -, sources = [ "src/**/*.purs", "examples/**/*.purs", "test/**/*.purs" ] +, sources = + [ "src/**/*.purs" + , "examples/**/*.purs" + , "test/**/*.purs" + , "templates/ctl-scaffold/src/**/*.purs" + , "templates/ctl-scaffold/test/**/*.purs" + , "templates/ctl-scaffold/exe/**/*.purs" + ] } From fe2ca7397f2ea9fb0408688157bb39633c0e21d9 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 23 Apr 2024 05:03:45 +0400 Subject: [PATCH 109/373] Remove MintingPolicy type. --- CHANGELOG.md | 2 + examples/AlwaysMints.purs | 19 ++--- examples/BalanceTxConstraints.purs | 9 +-- examples/ContractTestUtils.purs | 12 ++-- examples/Helpers.purs | 14 +--- examples/KeyWallet/MintsAndSendsToken.purs | 8 ++- examples/ManyAssets.purs | 10 +-- examples/MintsMultipleTokens.purs | 33 +++++---- examples/MultipleRedeemers.purs | 19 ++--- examples/NativeScriptMints.purs | 26 +++---- examples/OneShotMinting.purs | 23 +++--- examples/PlutusV2/OneShotMinting.purs | 9 +-- .../PlutusV2/ReferenceInputsAndScripts.purs | 8 +-- examples/PlutusV2/Scripts/AlwaysMints.purs | 6 +- examples/SendsToken.purs | 16 ++--- examples/Utxos.purs | 11 ++- src/Contract/PlutusData.purs | 6 +- src/Contract/ScriptLookups.purs | 3 +- src/Contract/Scripts.purs | 4 -- src/Contract/Transaction.purs | 7 -- src/Contract/Types.purs | 7 -- src/Contract/Types/MintingPolicy.purs | 52 -------------- src/Internal/ProcessConstraints.purs | 46 ++++++------ src/Internal/Types/ScriptLookups.purs | 27 ++++--- test/Plutip/Contract.purs | 72 +++++++++---------- test/Plutip/Contract/Assert.purs | 21 ++++-- test/Plutip/SameWallets.purs | 13 ++-- test/Utils/Hashing.purs | 10 --- 28 files changed, 203 insertions(+), 290 deletions(-) delete mode 100644 src/Contract/Types.purs delete mode 100644 src/Contract/Types/MintingPolicy.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index d26862f65..b052ed474 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -160,6 +160,8 @@ Starting from this version, CTL does not use Plutus-domain types anymore. There - Removed newtypes for `Transaction`: - `BalancedSignedTransaction` - `FinalizedTransaction` +- `Contract.Scripts`: + - `MintingPolicy` type. It was not used anywhere except of `mintingPolicy` lookup. Use `plutusMintingPolicy` and `nativeMintingPolicy` lookups instead. - `Contract.ScriptLookups`: - synonyms for lookup functions that use `Maybe` have been removed: `mintingPolicyM`, `ownPaymentPubKeyHashM`, `ownStakePubKeyHashM`, `unspentOutputsM`, `validatorM` - `Contract.Credential` renamings: diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index 503eb292e..85553e991 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -11,17 +11,18 @@ module Ctl.Examples.AlwaysMints import Contract.Prelude +import Cardano.Types (PlutusScript) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) import Contract.ScriptLookups as Lookups -import Contract.Scripts (MintingPolicy(PlutusMintingPolicy)) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers +import Ctl.Examples.Helpers (mkAssetName) as Helpers main :: Effect Unit main = example testnetNamiConfig @@ -29,7 +30,8 @@ main = example testnetNamiConfig contract :: Contract Unit contract = do logInfo' "Running Examples.AlwaysMints" - mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy + mp <- alwaysMintsPolicy + let cs = PlutusScript.hash mp tn <- Helpers.mkAssetName "TheToken" let constraints :: Constraints.TxConstraints @@ -38,7 +40,7 @@ contract = do $ Int.fromInt 100 lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp txId <- submitTxFromConstraints lookups constraints @@ -51,11 +53,10 @@ example cfg = launchAff_ $ do foreign import alwaysMints :: String -alwaysMintsPolicyMaybe :: Maybe MintingPolicy -alwaysMintsPolicyMaybe = do - PlutusMintingPolicy <$> - (plutusScriptFromEnvelope =<< decodeTextEnvelope alwaysMints) +alwaysMintsPolicyMaybe :: Maybe PlutusScript +alwaysMintsPolicyMaybe = + plutusScriptFromEnvelope =<< decodeTextEnvelope alwaysMints -alwaysMintsPolicy :: Contract MintingPolicy +alwaysMintsPolicy :: Contract PlutusScript alwaysMintsPolicy = liftContractM "Error decoding alwaysMintsPolicy" alwaysMintsPolicyMaybe diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index e5cb841ef..ec09ded57 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -9,6 +9,7 @@ import Cardano.Types (Asset(Asset), BigNum) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (Address) import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder @@ -52,7 +53,7 @@ import Contract.Wallet ) import Control.Monad.Trans.Class (lift) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers +import Ctl.Examples.Helpers (mkAssetName) as Helpers import Data.Array (head) import Data.Array (sort) as Array import Data.Map (fromFoldable, keys, member) as Map @@ -153,8 +154,8 @@ contract (ContractParams p) = do nonSpendableOref <- liftedM "Failed to get utxos at Alice's address" (Set.findMin <<< Map.keys <$> utxosAt aliceAddress) - - mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy + mp <- alwaysMintsPolicy + let cs = PlutusScript.hash mp tn <- Helpers.mkAssetName "The Token" let constraints :: Constraints.TxConstraints @@ -163,7 +164,7 @@ contract (ContractParams p) = do <> foldMap Constraints.mustBeSignedBy [ alicePubKeyHash, bobPubKeyHash ] lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp balanceTxConstraints :: BalanceTxConstraints.BalanceTxConstraintsBuilder balanceTxConstraints = diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index 6b177ddd9..776038953 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -17,13 +17,14 @@ import Cardano.Types.Credential (Credential(PubKeyHashCredential)) import Cardano.Types.Int as Int import Cardano.Types.Mint (Mint) import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef)) import Contract.Address (Address, PaymentPubKeyHash, StakePubKeyHash, mkAddress) import Contract.Hashing (datumHash) import Contract.Log (logInfo') import Contract.Monad (Contract, liftContractM, liftedM) import Contract.PlutusData (Datum, OutputDatum(OutputDatumHash)) import Contract.ScriptLookups as Lookups -import Contract.Scripts (MintingPolicy) import Contract.Test.Assert ( ContractCheck , assertOutputHasDatum @@ -45,7 +46,6 @@ import Contract.Transaction , awaitTxConfirmed , balanceTx , lookupTxHash - , scriptRefFromMintingPolicy , signTransaction , submit ) @@ -69,7 +69,7 @@ type ContractParams = { receiverPkh :: PaymentPubKeyHash , receiverSkh :: Maybe StakePubKeyHash , adaToSend :: Coin - , mintingPolicy :: MintingPolicy + , mintingPolicy :: PlutusScript , tokensToMint :: Tuple3 CurrencySymbol TokenName BigNum , datumToAttach :: Datum } @@ -117,7 +117,7 @@ mkChecks p = do , assertionToCheck "Output has a reference script" \{ txOutputUnderTest } -> assertOutputHasRefScript - (scriptRefFromMintingPolicy p.mintingPolicy) + (PlutusScriptRef p.mintingPolicy) (label txOutputUnderTest "Sender's output with reference script") ] @@ -151,12 +151,12 @@ mkContract p = do , mustPayToPubKeyStakeAddressWithDatumAndScriptRef ownPkh p.datumToAttach DatumWitness - (scriptRefFromMintingPolicy p.mintingPolicy) + (PlutusScriptRef p.mintingPolicy) nonAdaValue ] lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy p.mintingPolicy + lookups = Lookups.plutusMintingPolicy p.mintingPolicy unbalancedTx <- mkUnbalancedTx lookups constraints balancedTx <- balanceTx unbalancedTx diff --git a/examples/Helpers.purs b/examples/Helpers.purs index 1d6840718..bd79deec1 100644 --- a/examples/Helpers.purs +++ b/examples/Helpers.purs @@ -1,6 +1,5 @@ module Ctl.Examples.Helpers - ( mkCurrencySymbol - , mkAssetName + ( mkAssetName , mustPayToPubKeyStakeAddress , mustPayToPubKeyStakeAddressWithDatum , mustPayToPubKeyStakeAddressWithScriptRef @@ -13,7 +12,6 @@ import Cardano.Types ( AssetName , PaymentPubKeyHash , PlutusData - , ScriptHash , ScriptRef , StakePubKeyHash , Transaction @@ -23,19 +21,9 @@ import Cardano.Types.AssetName as AssetName import Contract.Log (logInfo') import Contract.Monad (Contract, liftContractM) import Contract.Prim.ByteArray (byteArrayFromAscii) -import Contract.Scripts (MintingPolicy) import Contract.Transaction (awaitTxConfirmed, submit) import Contract.TxConstraints (DatumPresence) import Contract.TxConstraints as Constraints -import Contract.Types.MintingPolicy as MintingPolicy - -mkCurrencySymbol - :: Contract MintingPolicy - -> Contract (MintingPolicy /\ ScriptHash) -mkCurrencySymbol mintingPolicy = do - mp <- mintingPolicy - let cs = MintingPolicy.hash mp - pure (mp /\ cs) mkAssetName :: String -> Contract AssetName mkAssetName = diff --git a/examples/KeyWallet/MintsAndSendsToken.purs b/examples/KeyWallet/MintsAndSendsToken.purs index a1d837f3c..d8fc5027a 100644 --- a/examples/KeyWallet/MintsAndSendsToken.purs +++ b/examples/KeyWallet/MintsAndSendsToken.purs @@ -9,13 +9,14 @@ import Contract.Prelude import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Contract.Log (logInfo') import Contract.ScriptLookups as Lookups import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Value as Value import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers +import Ctl.Examples.Helpers (mkAssetName) as Helpers import Ctl.Examples.KeyWallet.Internal.Pkh2PkhContract (runKeyWalletContract_) import Partial.Unsafe (unsafePartial) @@ -23,7 +24,8 @@ main :: Effect Unit main = runKeyWalletContract_ \pkh lovelace unlock -> do logInfo' "Running Examples.KeyWallet.MintsAndSendsToken" - mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy + mp <- alwaysMintsPolicy + let cs = PlutusScript.hash mp tn <- Helpers.mkAssetName "TheToken" let @@ -38,7 +40,7 @@ main = runKeyWalletContract_ \pkh lovelace unlock -> do ] lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp txId <- submitTxFromConstraints lookups constraints awaitTxConfirmed txId diff --git a/examples/ManyAssets.purs b/examples/ManyAssets.purs index d823190f4..3d2a8f1e3 100644 --- a/examples/ManyAssets.purs +++ b/examples/ManyAssets.purs @@ -10,6 +10,7 @@ import Contract.Prelude import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -23,8 +24,8 @@ import Contract.ScriptLookups as Lookups import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Wallet (getWalletUtxos) -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers -import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyV2) +import Ctl.Examples.Helpers (mkAssetName) as Helpers +import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Data.Array (head, range) as Array import Data.Map (toUnfoldable) as Map @@ -49,7 +50,8 @@ mkContractWithAssertions exampleName = do liftContractM "Utxo set is empty" (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) - mp /\ cs <- Helpers.mkCurrencySymbol (alwaysMintsPolicyV2) + mp <- alwaysMintsPolicyScriptV2 + let cs = PlutusScript.hash mp tns <- for (Array.range 0 600) \i -> Helpers.mkAssetName $ "CTLNFT" <> show i let @@ -62,7 +64,7 @@ mkContractWithAssertions exampleName = do <> Constraints.mustSpendPubKeyOutput oref lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp <> Lookups.unspentOutputs utxos txHash <- submitTxFromConstraints lookups constraints diff --git a/examples/MintsMultipleTokens.purs b/examples/MintsMultipleTokens.purs index d21e72e51..141692ad7 100644 --- a/examples/MintsMultipleTokens.purs +++ b/examples/MintsMultipleTokens.purs @@ -14,17 +14,18 @@ import Contract.Prelude import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.PlutusScript as PlutusScript import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (PlutusData(Integer), RedeemerDatum(RedeemerDatum)) import Contract.ScriptLookups as Lookups -import Contract.Scripts (MintingPolicy(PlutusMintingPolicy)) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers +import Ctl.Examples.Helpers (mkAssetName) as Helpers import Effect.Exception (error) import JS.BigInt (fromInt) as BigInt import Partial.Unsafe (unsafePartial) @@ -37,9 +38,13 @@ contract = do logInfo' "Running Examples.MintsMultipleTokens" tn1 <- Helpers.mkAssetName "Token with a long name" tn2 <- Helpers.mkAssetName "Token" - mp1 /\ cs1 <- Helpers.mkCurrencySymbol mintingPolicyRdmrInt1 - mp2 /\ cs2 <- Helpers.mkCurrencySymbol mintingPolicyRdmrInt2 - mp3 /\ cs3 <- Helpers.mkCurrencySymbol mintingPolicyRdmrInt3 + mp1 <- mintingPolicyRdmrInt1 + mp2 <- mintingPolicyRdmrInt2 + mp3 <- mintingPolicyRdmrInt3 + let + cs1 = PlutusScript.hash mp1 + cs2 = PlutusScript.hash mp2 + cs3 = PlutusScript.hash mp3 let constraints :: Constraints.TxConstraints @@ -57,9 +62,9 @@ contract = do lookups :: Lookups.ScriptLookups lookups = - Lookups.mintingPolicy mp1 - <> Lookups.mintingPolicy mp2 - <> Lookups.mintingPolicy mp3 + Lookups.plutusMintingPolicy mp1 + <> Lookups.plutusMintingPolicy mp2 + <> Lookups.plutusMintingPolicy mp3 txId <- submitTxFromConstraints lookups constraints @@ -74,20 +79,20 @@ foreign import redeemer1Script :: String foreign import redeemer2Script :: String foreign import redeemer3Script :: String -mintingPolicyRdmrInt1 :: Contract MintingPolicy +mintingPolicyRdmrInt1 :: Contract PlutusScript mintingPolicyRdmrInt1 = do liftMaybe (error "Error decoding redeemer1Script") do envelope <- decodeTextEnvelope redeemer1Script - PlutusMintingPolicy <$> plutusScriptFromEnvelope envelope + plutusScriptFromEnvelope envelope -mintingPolicyRdmrInt2 :: Contract MintingPolicy +mintingPolicyRdmrInt2 :: Contract PlutusScript mintingPolicyRdmrInt2 = do liftMaybe (error "Error decoding redeemer2Script") do envelope <- decodeTextEnvelope redeemer2Script - PlutusMintingPolicy <$> plutusScriptFromEnvelope envelope + plutusScriptFromEnvelope envelope -mintingPolicyRdmrInt3 :: Contract MintingPolicy +mintingPolicyRdmrInt3 :: Contract PlutusScript mintingPolicyRdmrInt3 = do liftMaybe (error "Error decoding redeemer3Script") do envelope <- decodeTextEnvelope redeemer3Script - PlutusMintingPolicy <$> plutusScriptFromEnvelope envelope + plutusScriptFromEnvelope envelope diff --git a/examples/MultipleRedeemers.purs b/examples/MultipleRedeemers.purs index 7d22ea9a6..a27e33e12 100644 --- a/examples/MultipleRedeemers.purs +++ b/examples/MultipleRedeemers.purs @@ -11,6 +11,7 @@ import Contract.Prelude import Cardano.Types.Credential (Credential(ScriptHashCredential)) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (mkAddress) import Contract.Monad (Contract) import Contract.PlutusData @@ -25,12 +26,11 @@ import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Control.Monad.Error.Class (liftMaybe) -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) -import Ctl.Examples.MintsMultipleTokens (mintingPolicyRdmrInt3) +import Ctl.Examples.Helpers (mkAssetName) import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts ( mintAlwaysMintsV2ToTheScript ) -import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyV2) +import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Data.List as List import Data.Map as Map import Data.Traversable (sequence) @@ -42,7 +42,7 @@ contract = do tokenName <- mkAssetName "Token" validator1 <- redeemerIs1Validator validator2 <- redeemerIs2Validator - mintingPolicy <- alwaysMintsPolicyV2 + mintingPolicy <- alwaysMintsPolicyScriptV2 -- Lock tokens on different script addresses @@ -58,7 +58,7 @@ contract = do constraints = (mconcat $ fst <$> lcs) :: Constraints.TxConstraints txHash <- submitTxFromConstraints - (Lookups.mintingPolicy mintingPolicy <> lookups) + (Lookups.plutusMintingPolicy mintingPolicy <> lookups) constraints void $ awaitTxConfirmed txHash @@ -66,8 +66,8 @@ contractWithMintRedeemers :: Contract Unit contractWithMintRedeemers = do tokenName <- mkAssetName "Token" validator1 <- redeemerIs1Validator - mintingPolicy <- alwaysMintsPolicyV2 - mp /\ cs <- mkCurrencySymbol mintingPolicyRdmrInt3 + mintingPolicy <- alwaysMintsPolicyScriptV2 + let cs = PlutusScript.hash mintingPolicy -- Lock tokens on script address @@ -85,8 +85,9 @@ contractWithMintRedeemers = do (Mint.singleton cs tokenName Int.one) ) txHash <- submitTxFromConstraints - ( Lookups.mintingPolicy mintingPolicy <> Lookups.mintingPolicy mp <> - unlockingLookups + ( Lookups.plutusMintingPolicy mintingPolicy + <> Lookups.plutusMintingPolicy mintingPolicy + <> unlockingLookups ) (unlockingConstraints <> mintingConstraints) void $ awaitTxConfirmed txHash diff --git a/examples/NativeScriptMints.purs b/examples/NativeScriptMints.purs index fbf3b7777..e83c1abd2 100644 --- a/examples/NativeScriptMints.purs +++ b/examples/NativeScriptMints.purs @@ -7,25 +7,19 @@ import Contract.Prelude import Cardano.Types (BigNum) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int +import Cardano.Types.NativeScript as NativeScript import Contract.Address (PaymentPubKeyHash) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ScriptLookups as Lookups -import Contract.Scripts - ( MintingPolicy(NativeMintingPolicy) - , NativeScript(ScriptPubkey) - ) +import Contract.Scripts (NativeScript(ScriptPubkey)) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Value (CurrencySymbol, TokenName) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) -import Ctl.Examples.Helpers - ( mkAssetName - , mkCurrencySymbol - , mustPayToPubKeyStakeAddress - ) as Helpers +import Ctl.Examples.Helpers (mkAssetName, mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) import JS.BigInt as BigInt @@ -38,18 +32,19 @@ contract = do pkh <- liftedM "Couldn't get own pkh" $ head <$> ownPaymentPubKeyHashes - mp /\ cs <- Helpers.mkCurrencySymbol <<< pure $ pkhPolicy pkh + let mp = pkhPolicy pkh + let cs = NativeScript.hash mp tn <- Helpers.mkAssetName "NSToken" let constraints :: Constraints.TxConstraints constraints = Constraints.mustMintCurrencyUsingNativeScript - (nsPolicy pkh) + (pkhPolicy pkh) tn $ Int.fromInt 100 lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.nativeMintingPolicy mp txId <- submitTxFromConstraints lookups constraints @@ -81,8 +76,5 @@ example :: ContractParams -> Effect Unit example cfg = launchAff_ $ do runContract cfg contract -nsPolicy :: PaymentPubKeyHash -> NativeScript -nsPolicy = ScriptPubkey <<< unwrap - -pkhPolicy :: PaymentPubKeyHash -> MintingPolicy -pkhPolicy = NativeMintingPolicy <<< nsPolicy +pkhPolicy :: PaymentPubKeyHash -> NativeScript +pkhPolicy = ScriptPubkey <<< unwrap diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 2c4e56d68..0ed28bc98 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -7,7 +7,6 @@ module Ctl.Examples.OneShotMinting , main , mkContractWithAssertions , mkOneShotMintingPolicy - , oneShotMintingPolicy , oneShotMintingPolicyScript ) where @@ -16,6 +15,7 @@ import Contract.Prelude import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -28,11 +28,7 @@ import Contract.Monad ) import Contract.PlutusData (PlutusData, toData) import Contract.ScriptLookups as Lookups -import Contract.Scripts - ( MintingPolicy(PlutusMintingPolicy) - , PlutusScript - , applyArgs - ) +import Contract.Scripts (PlutusScript, applyArgs) import Contract.Test.Assert ( ContractCheck , checkLossInWallet @@ -53,7 +49,7 @@ import Contract.Value (AssetName, ScriptHash) import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers +import Ctl.Examples.Helpers (mkAssetName) as Helpers import Data.Array (head, singleton) as Array import Data.Map (toUnfoldable) as Map import Effect.Exception (error, throw) @@ -80,11 +76,11 @@ mkChecks nft = contract :: Contract Unit contract = - mkContractWithAssertions "Examples.OneShotMinting" oneShotMintingPolicy + mkContractWithAssertions "Examples.OneShotMinting" oneShotMintingPolicyScript mkContractWithAssertions :: String - -> (TransactionInput -> Contract MintingPolicy) + -> (TransactionInput -> Contract PlutusScript) -> Contract Unit mkContractWithAssertions exampleName mkMintingPolicy = do logInfo' ("Running " <> exampleName) @@ -93,7 +89,8 @@ mkContractWithAssertions exampleName mkMintingPolicy = do liftContractM "Utxo set is empty" (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) - mp /\ cs <- Helpers.mkCurrencySymbol (mkMintingPolicy oref) + ps <- mkMintingPolicy oref + let cs = PlutusScript.hash ps tn <- Helpers.mkAssetName "CTLNFT" let @@ -104,7 +101,7 @@ mkContractWithAssertions exampleName mkMintingPolicy = do lookups :: Lookups.ScriptLookups lookups = - Lookups.mintingPolicy mp + Lookups.plutusMintingPolicy ps <> Lookups.unspentOutputs utxos let checks = mkChecks (cs /\ tn /\ one) @@ -116,10 +113,6 @@ mkContractWithAssertions exampleName mkMintingPolicy = do logInfo' "Tx submitted successfully!" pure { txFinalFee: BigNum.toBigInt $ unwrap txFinalFee } -oneShotMintingPolicy :: TransactionInput -> Contract MintingPolicy -oneShotMintingPolicy = - map PlutusMintingPolicy <<< oneShotMintingPolicyScript - oneShotMintingPolicyScript :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScript txInput = do script <- liftMaybe (error "Error decoding oneShotMinting") do diff --git a/examples/PlutusV2/OneShotMinting.purs b/examples/PlutusV2/OneShotMinting.purs index ac8b887a5..c722a9366 100644 --- a/examples/PlutusV2/OneShotMinting.purs +++ b/examples/PlutusV2/OneShotMinting.purs @@ -6,7 +6,6 @@ module Ctl.Examples.PlutusV2.OneShotMinting , example , main , oneShotMintingPolicyScriptV2 - , oneShotMintingPolicyV2 ) where import Contract.Prelude @@ -18,7 +17,7 @@ import Contract.Monad , liftContractE , runContract ) -import Contract.Scripts (MintingPolicy(PlutusMintingPolicy), PlutusScript) +import Contract.Scripts (PlutusScript) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction (TransactionInput) import Control.Monad.Error.Class (liftMaybe) @@ -38,11 +37,7 @@ example cfg = launchAff_ do contract :: Contract Unit contract = mkContractWithAssertions "Examples.PlutusV2.OneShotMinting" - oneShotMintingPolicyV2 - -oneShotMintingPolicyV2 :: TransactionInput -> Contract MintingPolicy -oneShotMintingPolicyV2 = - map PlutusMintingPolicy <<< oneShotMintingPolicyScriptV2 + oneShotMintingPolicyScriptV2 oneShotMintingPolicyScriptV2 :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScriptV2 txInput = do diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index 93d946eb6..21bab6eff 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -42,7 +42,6 @@ import Contract.TxConstraints , TxConstraints ) import Contract.TxConstraints as Constraints -import Contract.Types.MintingPolicy as MintingPolicy import Contract.Utxos (utxosAt) import Contract.Value (TokenName, Value) import Contract.Value as Value @@ -54,7 +53,6 @@ import Contract.Wallet import Ctl.Examples.Helpers (mkAssetName) as Helpers import Ctl.Examples.PlutusV2.Scripts.AlwaysMints ( alwaysMintsPolicyScriptV2 - , alwaysMintsPolicyV2 ) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (head) @@ -187,8 +185,8 @@ mustPayToPubKeyStakeAddressWithScriptRef pkh (Just skh) = mintAlwaysMintsV2ToTheScript :: TokenName -> Validator -> Int -> Contract Unit mintAlwaysMintsV2ToTheScript tokenName validator sum = do - mp <- alwaysMintsPolicyV2 - let cs = MintingPolicy.hash mp + mp <- alwaysMintsPolicyScriptV2 + let cs = PlutusScript.hash mp let vhash = PlutusScript.hash validator @@ -204,7 +202,7 @@ mintAlwaysMintsV2ToTheScript tokenName validator sum = do ] lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp txHash <- submitTxFromConstraints lookups constraints void $ awaitTxConfirmed txHash diff --git a/examples/PlutusV2/Scripts/AlwaysMints.purs b/examples/PlutusV2/Scripts/AlwaysMints.purs index f40e74ba6..c353aac09 100644 --- a/examples/PlutusV2/Scripts/AlwaysMints.purs +++ b/examples/PlutusV2/Scripts/AlwaysMints.purs @@ -1,19 +1,15 @@ module Ctl.Examples.PlutusV2.Scripts.AlwaysMints ( alwaysMintsPolicyScriptV2 - , alwaysMintsPolicyV2 ) where import Contract.Prelude import Contract.Monad (Contract) -import Contract.Scripts (MintingPolicy(PlutusMintingPolicy), PlutusScript) +import Contract.Scripts (PlutusScript) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Control.Monad.Error.Class (liftMaybe) import Effect.Exception (error) -alwaysMintsPolicyV2 :: Contract MintingPolicy -alwaysMintsPolicyV2 = PlutusMintingPolicy <$> alwaysMintsPolicyScriptV2 - alwaysMintsPolicyScriptV2 :: Contract PlutusScript alwaysMintsPolicyScriptV2 = do liftMaybe (error "Error decoding alwaysMintsV2") do diff --git a/examples/SendsToken.purs b/examples/SendsToken.purs index 2e77eb3eb..ee9211f84 100644 --- a/examples/SendsToken.purs +++ b/examples/SendsToken.purs @@ -6,15 +6,16 @@ module Ctl.Examples.SendsToken (main, example, contract) where import Contract.Prelude +import Cardano.Types (PlutusScript) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint (Mint) import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ScriptLookups as Lookups -import Contract.Scripts (MintingPolicy) import Contract.Transaction ( TransactionHash , awaitTxConfirmed @@ -25,11 +26,7 @@ import Contract.Value (Value) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) -import Ctl.Examples.Helpers - ( mkAssetName - , mkCurrencySymbol - , mustPayToPubKeyStakeAddress - ) as Helpers +import Ctl.Examples.Helpers (mkAssetName, mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) main :: Effect Unit @@ -57,7 +54,7 @@ mintToken = do constraints = Constraints.mustMintValue mint lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp submitTxFromConstraints lookups constraints @@ -75,9 +72,10 @@ sendToken = do submitTxFromConstraints lookups constraints -tokenValue :: Contract (MintingPolicy /\ Mint /\ Value) +tokenValue :: Contract (PlutusScript /\ Mint /\ Value) tokenValue = do - mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy + mp <- alwaysMintsPolicy + let cs = PlutusScript.hash mp tn <- Helpers.mkAssetName "TheToken" pure $ mp /\ Mint.singleton cs tn (Int.fromInt 1) /\ Value.singleton cs tn (BigNum.fromInt 1) diff --git a/examples/Utxos.purs b/examples/Utxos.purs index 1055bb6af..23cc6eaa5 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -6,6 +6,7 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint (Mint) import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (PaymentPubKeyHash, StakePubKeyHash) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo, logInfo') @@ -18,7 +19,6 @@ import Contract.Monad ) import Contract.PlutusData (PlutusData(Integer)) import Contract.ScriptLookups as Lookups -import Contract.Scripts (MintingPolicy(PlutusMintingPolicy)) import Contract.Transaction ( ScriptRef(NativeScriptRef, PlutusScriptRef) , awaitTxConfirmed @@ -33,7 +33,7 @@ import Contract.Wallet , ownPaymentPubKeyHash , ownStakePubKeyHash ) -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers +import Ctl.Examples.Helpers (mkAssetName) as Helpers import Ctl.Examples.PlutusV2.OneShotMinting (oneShotMintingPolicyScriptV2) import Data.Array (head) as Array import Data.Log.Tag (tag) @@ -67,9 +67,7 @@ contract = do oneShotMintingPolicy <- oneShotMintingPolicyScriptV2 oref - mp0 /\ cs0 <- - Helpers.mkCurrencySymbol - (pure $ PlutusMintingPolicy $ oneShotMintingPolicy) + let cs0 = PlutusScript.hash oneShotMintingPolicy tn0 <- Helpers.mkAssetName "CTLNFT" let plutusScriptRef = PlutusScriptRef oneShotMintingPolicy @@ -94,7 +92,8 @@ contract = do ] lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp0 <> Lookups.unspentOutputs utxos + lookups = Lookups.plutusMintingPolicy oneShotMintingPolicy <> + Lookups.unspentOutputs utxos txHash <- submitTxFromConstraints lookups constraints awaitTxConfirmed txHash diff --git a/src/Contract/PlutusData.purs b/src/Contract/PlutusData.purs index 00483612a..f94fb4395 100644 --- a/src/Contract/PlutusData.purs +++ b/src/Contract/PlutusData.purs @@ -116,11 +116,13 @@ getDatumsByHashesWithErrors hashes = do Left err -> Left $ show err unitDatum - :: Warn (Text "Deprecated: use Cardano.Types.PlutusData.unit") => PlutusData + :: Warn (Text "Deprecated: unitDatum. use Cardano.Types.PlutusData.unit") + => PlutusData unitDatum = Datum.unit unitRedeemer - :: Warn (Text "Deprecated: use Cardano.Types.PlutusData.unit") + :: Warn + (Text "Deprecated: unitRedeemer. use Cardano.Types.RedeemerDatum.unit") => RedeemerDatum unitRedeemer = Redeemer.unit diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index 11f7ebd28..93fac750d 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -6,9 +6,10 @@ import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) import Ctl.Internal.Types.ScriptLookups ( ScriptLookups(ScriptLookups) , datum - , mintingPolicy + , nativeMintingPolicy , ownPaymentPubKeyHash , ownStakePubKeyHash + , plutusMintingPolicy , unspentOutputs , validator ) as X diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index ce5c1bec1..8133e8fec 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -31,10 +31,6 @@ import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.ScriptRef (ScriptRef) import Contract.Monad (Contract) -import Contract.Types - ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) - , hash - ) as X import Control.Parallel (parTraverse) import Ctl.Internal.ApplyArgs (applyArgs) as X import Ctl.Internal.Contract.Monad (getQueryHandle) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index cf74e7b2d..d5452213e 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -20,7 +20,6 @@ module Contract.Transaction , withBalancedTxs , withBalancedTxsWithConstraints , lookupTxHash - , scriptRefFromMintingPolicy , mkPoolPubKeyHash , hashTransaction ) where @@ -58,13 +57,10 @@ import Cardano.Types import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.OutputDatum (OutputDatum(OutputDatum, OutputDatumHash)) as X import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash(PoolPubKeyHash)) as X -import Cardano.Types.ScriptRef (ScriptRef) import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) as X import Cardano.Types.Transaction (Transaction(Transaction), empty) as X import Cardano.Types.Transaction as Transaction import Contract.Monad (Contract, runContractInEnv) -import Contract.Types (MintingPolicy) -import Contract.Types as MintingPolicy import Contract.UnbalancedTx (mkUnbalancedTx) import Control.Monad.Error.Class (catchError, liftEither, throwError) import Control.Monad.Reader (ReaderT, asks, runReaderT) @@ -448,9 +444,6 @@ lookupTxHash txHash utxos = $ Array.filter (fst >>> unwrap >>> _.transactionId >>> eq txHash) $ Map.toUnfoldable utxos -scriptRefFromMintingPolicy :: MintingPolicy -> ScriptRef -scriptRefFromMintingPolicy = MintingPolicy.toScriptRef - mkPoolPubKeyHash :: Bech32String -> Maybe PoolPubKeyHash mkPoolPubKeyHash str | startsWith "pool" str = PoolPubKeyHash <$> diff --git a/src/Contract/Types.purs b/src/Contract/Types.purs deleted file mode 100644 index 77d161dd8..000000000 --- a/src/Contract/Types.purs +++ /dev/null @@ -1,7 +0,0 @@ -module Contract.Types (module X) where - -import Contract.Types.MintingPolicy - ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) - , hash - , toScriptRef - ) as X diff --git a/src/Contract/Types/MintingPolicy.purs b/src/Contract/Types/MintingPolicy.purs deleted file mode 100644 index 9d7b6da0d..000000000 --- a/src/Contract/Types/MintingPolicy.purs +++ /dev/null @@ -1,52 +0,0 @@ -module Contract.Types.MintingPolicy - ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) - , hash - , toScriptRef - ) where - -import Prelude - -import Aeson (class DecodeAeson, class EncodeAeson, encodeAeson) -import Cardano.Types (ScriptHash) -import Cardano.Types.NativeScript (NativeScript) -import Cardano.Types.NativeScript as NativeScript -import Cardano.Types.PlutusScript (PlutusScript) -import Cardano.Types.PlutusScript as PlutusScript -import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) -import Control.Alt ((<|>)) -import Ctl.Internal.Helpers (decodeTaggedNewtype) -import Data.Generic.Rep (class Generic) -import Data.Show.Generic (genericShow) - --- | `MintingPolicy` is a sum type of `PlutusScript` and `NativeScript` which are used as --- | validators for minting constraints. -data MintingPolicy - = PlutusMintingPolicy PlutusScript - | NativeMintingPolicy NativeScript - -derive instance Generic MintingPolicy _ -derive instance Eq MintingPolicy -derive instance Ord MintingPolicy - -instance DecodeAeson MintingPolicy where - decodeAeson aes = - decodeTaggedNewtype "getPlutusMintingPolicy" PlutusMintingPolicy aes <|> - decodeTaggedNewtype "getNativeMintingPolicy" NativeMintingPolicy aes - -instance EncodeAeson MintingPolicy where - encodeAeson (NativeMintingPolicy nscript) = - encodeAeson { "getNativeMintingPolicy": nscript } - encodeAeson (PlutusMintingPolicy script) = - encodeAeson { "getPlutusMintingPolicy": script } - -instance Show MintingPolicy where - show = genericShow - -hash :: MintingPolicy -> ScriptHash -hash (PlutusMintingPolicy ps) = PlutusScript.hash ps -hash (NativeMintingPolicy ns) = NativeScript.hash ns - -toScriptRef :: MintingPolicy -> ScriptRef -toScriptRef = case _ of - PlutusMintingPolicy ps -> PlutusScriptRef ps - NativeMintingPolicy ns -> NativeScriptRef ns diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 0c36be635..3f8a8e4e6 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -44,8 +44,6 @@ import Cardano.Types.NativeScript as NativeScript import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash, OutputDatum)) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Transaction as Transaction -import Contract.Types (MintingPolicy(NativeMintingPolicy, PlutusMintingPolicy)) -import Contract.Types as MintingPolicy import Control.Monad.Error.Class (catchError, throwError) import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Reader.Class (asks) @@ -216,18 +214,18 @@ processLookupsAndConstraints lookups <- use _lookups <#> unwrap let - mpsMap = + plutusMintingPolicies = fromFoldable $ - zip (MintingPolicy.hash <$> lookups.mintingPolicies) - lookups.mintingPolicies - osMap = + zip (PlutusScript.hash <$> lookups.plutusMintingPolicies) + lookups.plutusMintingPolicies + plutusScripts = fromFoldable $ zip (PlutusScript.hash <$> lookups.scripts) lookups.scripts + ctx = { plutusMintingPolicies, plutusScripts } timeConstraintsSolved <- except $ resumeTimeConstraints constraints - ExceptT $ foldConstraints (processConstraint mpsMap osMap) - timeConstraintsSolved + ExceptT $ foldConstraints (processConstraint ctx) timeConstraintsSolved ExceptT addFakeScriptDataHash ExceptT addMissingValueSpent ExceptT updateUsedUtxos @@ -400,9 +398,10 @@ lookupDatum dh = do pure $ note (DatumNotFound dh) $ lookup dh otherDt lookupMintingPolicy - :: ScriptHash - -> Map ScriptHash MintingPolicy - -> Either MkUnbalancedTxError MintingPolicy + :: forall a + . ScriptHash + -> Map ScriptHash a + -> Either MkUnbalancedTxError a lookupMintingPolicy mph mpsMap = note (MintingPolicyNotFound mph) $ lookup mph mpsMap @@ -483,11 +482,14 @@ checkRefNative scriptRef = -- | possible. Fails if a hash is missing from the lookups, or if an output -- | of the wrong type is spent. processConstraint - :: Map ScriptHash MintingPolicy - -> Map ScriptHash PlutusScript + :: { plutusMintingPolicies :: Map ScriptHash PlutusScript + , plutusScripts :: Map ScriptHash PlutusScript + } -> TxConstraint -> ConstraintsM (Either MkUnbalancedTxError Unit) -processConstraint mpsMap osMap c = do +processConstraint + ctx@{ plutusMintingPolicies, plutusScripts } + c = do queryHandle <- lift $ getQueryHandle case c of MustIncludeDatum dat -> pure <$> addDatum dat @@ -536,7 +538,7 @@ processConstraint mpsMap osMap c = do case scriptRefUnspentOut of Nothing -> do plutusScript <- - except $ lookupValidator vHash osMap + except $ lookupValidator vHash plutusScripts lift $ attachToCps (map pure <<< attachPlutusScript) plutusScript Just scriptRefUnspentOut' -> @@ -573,16 +575,8 @@ processConstraint mpsMap osMap c = do MustMintValue scriptHash red tn i scriptRefUnspentOut -> runExceptT do case scriptRefUnspentOut of Nothing -> do - mp <- except $ lookupMintingPolicy scriptHash mpsMap - ( case mp of - PlutusMintingPolicy p -> - ( lift $ attachToCps - (map pure <<< attachPlutusScript) - p - ) - NativeMintingPolicy _ -> throwError $ - ExpectedPlutusScriptGotNativeScript scriptHash - ) + mp <- except $ lookupMintingPolicy scriptHash plutusMintingPolicies + lift $ attachToCps (map pure <<< attachPlutusScript) mp Just scriptRefUnspentOut' -> do isNative <- ExceptT $ checkRefNative scriptRefUnspentOut' when isNative @@ -845,7 +839,7 @@ processConstraint mpsMap osMap c = do foldM ( \_ constr -> runExceptT do let continue = put cps *> tryNext zs - ( ExceptT $ processConstraint mpsMap osMap constr + ( ExceptT $ processConstraint ctx constr `catchError` \_ -> continue ) `catchError` \_ -> ExceptT continue diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index b03608917..2a97f56d8 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -1,6 +1,7 @@ module Ctl.Internal.Types.ScriptLookups ( ScriptLookups(ScriptLookups) - , mintingPolicy + , nativeMintingPolicy + , plutusMintingPolicy , datum , validator , ownPaymentPubKeyHash @@ -22,7 +23,7 @@ import Cardano.Types , UtxoMap ) import Cardano.Types.DataHash (hashPlutusData) -import Contract.Types.MintingPolicy (MintingPolicy) +import Cardano.Types.NativeScript (NativeScript) import Ctl.Internal.Helpers ((<\>)) import Data.Array (nub) import Data.Array (singleton, union) as Array @@ -48,8 +49,8 @@ import Data.Show.Generic (genericShow) -- The lookups uses the Plutus type `TransactionOutput` and does internal -- conversions to the Serialization/Cardano to append to the `TxBody` as needed. newtype ScriptLookups = ScriptLookups - { mintingPolicies :: - Array MintingPolicy -- Minting policies that the script interacts with + { plutusMintingPolicies :: Array PlutusScript + , nativeMintingPolicies :: Array NativeScript , txOutputs :: UtxoMap , scripts :: Array PlutusScript -- Script validators , datums :: Map DataHash PlutusData -- Datums that we might need @@ -75,7 +76,10 @@ instance Show ScriptLookups where instance Semigroup ScriptLookups where append (ScriptLookups l) (ScriptLookups r) = ScriptLookups - { mintingPolicies: nub $ l.mintingPolicies `Array.union` r.mintingPolicies + { plutusMintingPolicies: nub $ l.plutusMintingPolicies `Array.union` + r.plutusMintingPolicies + , nativeMintingPolicies: nub $ l.nativeMintingPolicies `Array.union` + r.nativeMintingPolicies , txOutputs: l.txOutputs `union` r.txOutputs , scripts: l.scripts `Array.union` r.scripts , datums: l.datums `union` r.datums @@ -87,7 +91,8 @@ instance Semigroup ScriptLookups where instance Monoid ScriptLookups where mempty = ScriptLookups - { mintingPolicies: mempty + { plutusMintingPolicies: mempty + , nativeMintingPolicies: mempty , txOutputs: empty , scripts: mempty , datums: empty @@ -109,8 +114,14 @@ unspentOutputs unspentOutputs mp = over ScriptLookups _ { txOutputs = mp } mempty -- | A script lookups value with a minting policy script. -mintingPolicy :: MintingPolicy -> ScriptLookups -mintingPolicy pl = over ScriptLookups _ { mintingPolicies = Array.singleton pl } +plutusMintingPolicy :: PlutusScript -> ScriptLookups +plutusMintingPolicy ps = over ScriptLookups + _ { plutusMintingPolicies = Array.singleton ps } + mempty + +nativeMintingPolicy :: NativeScript -> ScriptLookups +nativeMintingPolicy ns = over ScriptLookups + _ { nativeMintingPolicies = Array.singleton ns } mempty -- | A script lookups value with a validator script. diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index c7b06dfa5..ea91f84bd 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -18,6 +18,7 @@ import Cardano.Types.Credential ) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Value (lovelaceValueOf) import Contract.Address ( PaymentPubKeyHash(PaymentPubKeyHash) @@ -99,7 +100,6 @@ import Contract.Transaction ) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints -import Contract.Types.MintingPolicy as MintingPolicy import Contract.UnbalancedTx (mkUnbalancedTx, mkUnbalancedTxE) import Contract.Utxos (UtxoMap, utxosAt) import Contract.Value (Coin(Coin), Value, coinToValue) @@ -125,11 +125,7 @@ import Ctl.Examples.BalanceTxConstraints as BalanceTxConstraintsExample import Ctl.Examples.Cip30 as Cip30 import Ctl.Examples.ContractTestUtils as ContractTestUtils import Ctl.Examples.ECDSA as ECDSA -import Ctl.Examples.Helpers - ( mkAssetName - , mkCurrencySymbol - , mustPayToPubKeyStakeAddress - ) +import Ctl.Examples.Helpers (mkAssetName, mustPayToPubKeyStakeAddress) import Ctl.Examples.IncludeDatum as IncludeDatum import Ctl.Examples.Lose7Ada as AlwaysFails import Ctl.Examples.ManyAssets as ManyAssets @@ -146,7 +142,7 @@ import Ctl.Examples.PlutusV2.OneShotMinting (contract) as OneShotMintingV2 import Ctl.Examples.PlutusV2.ReferenceInputs (contract) as ReferenceInputs import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts (contract) as ReferenceInputsAndScripts import Ctl.Examples.PlutusV2.ReferenceScripts (contract) as ReferenceScripts -import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyV2) +import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Ctl.Examples.Schnorr as Schnorr import Ctl.Examples.SendsToken (contract) as SendsToken @@ -690,7 +686,7 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy - let cs = MintingPolicy.hash mp + let cs = PlutusScript.hash mp tn <- liftContractM "Cannot make token name" $ AssetName.mkAssetName =<< byteArrayFromAscii "TheToken" @@ -702,7 +698,7 @@ suite = do $ Int.fromInt 100 lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp ubTx <- mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< balanceTx ubTx @@ -718,7 +714,7 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy - _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy + let cs = PlutusScript.hash mp tn <- mkAssetName "TheToken" -- Minting @@ -730,7 +726,7 @@ suite = do $ Int.fromInt 100 lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp txHash <- submitTxFromConstraints lookups constraints awaitTxConfirmed txHash @@ -760,7 +756,7 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy - _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy + let cs = PlutusScript.hash mp tn <- mkAssetName "TheToken" -- Minting @@ -772,7 +768,7 @@ suite = do $ Int.fromInt 100 lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp txHash <- submitTxFromConstraints lookups constraints awaitTxConfirmed txHash @@ -803,7 +799,7 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy - _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy + let cs = PlutusScript.hash mp tn <- mkAssetName "TheToken" -- Minting @@ -815,7 +811,7 @@ suite = do $ Int.fromInt 100 lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp txHash <- submitTxFromConstraints lookups constraints awaitTxConfirmed txHash @@ -845,7 +841,7 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do mp <- alwaysMintsPolicy - _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy + let cs = PlutusScript.hash mp tn <- mkAssetName "TheToken" -- Minting @@ -857,7 +853,7 @@ suite = do $ Int.fromInt 100 lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp txHash <- submitTxFromConstraints lookups constraints awaitTxConfirmed txHash @@ -1050,21 +1046,21 @@ suite = do withWallets distribution \alice -> do withKeyWallet alice do tn1 <- mkAssetName "Token name" - mp1 /\ _ <- mkCurrencySymbol alwaysMintsPolicy - mp2 /\ _ <- mkCurrencySymbol alwaysMintsPolicyV2 + mp1 <- alwaysMintsPolicy + mp2 <- alwaysMintsPolicyScriptV2 let constraints :: Constraints.TxConstraints constraints = mconcat - [ Constraints.mustMintCurrency (MintingPolicy.hash mp1) tn1 + [ Constraints.mustMintCurrency (PlutusScript.hash mp1) tn1 Int.zero - , Constraints.mustMintCurrency (MintingPolicy.hash mp2) tn1 + , Constraints.mustMintCurrency (PlutusScript.hash mp2) tn1 Int.one ] lookups :: Lookups.ScriptLookups lookups = - Lookups.mintingPolicy mp1 <> Lookups.mintingPolicy mp2 + Lookups.plutusMintingPolicy mp1 <> Lookups.plutusMintingPolicy mp2 result <- mkUnbalancedTxE lookups constraints result `shouldSatisfy` isLeft @@ -1079,9 +1075,13 @@ suite = do withKeyWallet alice do tn1 <- mkAssetName "Token with a long name" tn2 <- mkAssetName "Token" - mp1 /\ cs1 <- mkCurrencySymbol mintingPolicyRdmrInt1 - mp2 /\ cs2 <- mkCurrencySymbol mintingPolicyRdmrInt2 - mp3 /\ cs3 <- mkCurrencySymbol mintingPolicyRdmrInt3 + mp1 <- mintingPolicyRdmrInt1 + mp2 <- mintingPolicyRdmrInt2 + mp3 <- mintingPolicyRdmrInt3 + let + cs1 = PlutusScript.hash mp1 + cs2 = PlutusScript.hash mp2 + cs3 = PlutusScript.hash mp3 let constraints :: Constraints.TxConstraints @@ -1105,9 +1105,9 @@ suite = do lookups :: Lookups.ScriptLookups lookups = - Lookups.mintingPolicy mp1 - <> Lookups.mintingPolicy mp2 - <> Lookups.mintingPolicy mp3 + Lookups.plutusMintingPolicy mp1 + <> Lookups.plutusMintingPolicy mp2 + <> Lookups.plutusMintingPolicy mp3 ubTx <- mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< balanceTx ubTx @@ -1496,7 +1496,7 @@ suite = do pure $ pkh /\ stakePkh mp <- alwaysMintsPolicy - let cs = MintingPolicy.hash mp + let cs = PlutusScript.hash mp tn <- liftContractM "Cannot make token name" $ byteArrayFromAscii "TheToken" >>= AssetName.mkAssetName let @@ -1522,7 +1522,7 @@ suite = do ) lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp ubTx <- mkUnbalancedTx lookups constraints bsTx <- signTransaction =<< balanceTx ubTx @@ -1616,8 +1616,8 @@ suite = do head <$> withKeyWallet bob ownPaymentPubKeyHashes receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes - mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 - + mintingPolicy <- alwaysMintsPolicyScriptV2 + let cs = PlutusScript.hash mintingPolicy tn <- mkAssetName "TheToken" withKeyWallet alice do @@ -1770,8 +1770,8 @@ suite = do wUtxos0 <- liftedM "Failed to get wallet UTXOs" getWalletUtxos logInfo' $ "wUtxos0 " <> show wUtxos0 - mp <- alwaysMintsPolicyV2 - let cs = MintingPolicy.hash mp + mp <- alwaysMintsPolicyScriptV2 + let cs = PlutusScript.hash mp tn <- liftContractM "Cannot make token name" $ byteArrayFromAscii "TheToken" >>= AssetName.mkAssetName @@ -1820,7 +1820,7 @@ suite = do scriptRefV2 value' <> Constraints.mustMintCurrency - (MintingPolicy.hash mp) + (PlutusScript.hash mp) tn (Int.fromInt 50) @@ -1828,7 +1828,7 @@ suite = do let lookups0 :: Lookups.ScriptLookups - lookups0 = Lookups.mintingPolicy mp <> datumLookup + lookups0 = Lookups.plutusMintingPolicy mp <> datumLookup unbalancedTx0 <- mkUnbalancedTx lookups0 constraints0 diff --git a/test/Plutip/Contract/Assert.purs b/test/Plutip/Contract/Assert.purs index 9c639b04b..38bb779a2 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Plutip/Contract/Assert.purs @@ -4,6 +4,7 @@ module Test.Ctl.Plutip.Contract.Assert (suite) where import Prelude import Cardano.Types (ExUnits(ExUnits)) +import Cardano.Types.PlutusScript as PlutusScript import Contract.Monad (liftedM) import Contract.Numeric.BigNum as BigNum import Contract.PlutusData (PlutusData(Integer)) @@ -22,8 +23,8 @@ import Contract.Wallet ) import Control.Monad.Trans.Class (lift) import Ctl.Examples.ContractTestUtils as ContractTestUtils -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) -import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyV2) +import Ctl.Examples.Helpers (mkAssetName) +import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Data.Array (head) import Data.Either (isLeft, isRight) import Data.Newtype (wrap) @@ -53,7 +54,9 @@ suite = do head <$> withKeyWallet bob ownPaymentPubKeyHashes receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes - mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 + mintingPolicy <- alwaysMintsPolicyScriptV2 + + let cs = PlutusScript.hash mintingPolicy tn <- mkAssetName "TheToken" @@ -81,7 +84,9 @@ suite = do head <$> withKeyWallet bob ownPaymentPubKeyHashes receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes - mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 + mintingPolicy <- alwaysMintsPolicyScriptV2 + + let cs = PlutusScript.hash mintingPolicy tn <- mkAssetName "TheToken" @@ -114,7 +119,9 @@ suite = do head <$> withKeyWallet bob ownPaymentPubKeyHashes receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes - mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 + mintingPolicy <- alwaysMintsPolicyScriptV2 + + let cs = PlutusScript.hash mintingPolicy tn <- mkAssetName "TheToken" @@ -149,7 +156,9 @@ suite = do head <$> withKeyWallet bob ownPaymentPubKeyHashes receiverSkh <- join <<< head <$> withKeyWallet bob ownStakePubKeyHashes - mintingPolicy /\ cs <- mkCurrencySymbol alwaysMintsPolicyV2 + mintingPolicy <- alwaysMintsPolicyScriptV2 + + let cs = PlutusScript.hash mintingPolicy tn <- mkAssetName "TheToken" diff --git a/test/Plutip/SameWallets.purs b/test/Plutip/SameWallets.purs index c57ce61da..a100bdf81 100644 --- a/test/Plutip/SameWallets.purs +++ b/test/Plutip/SameWallets.purs @@ -7,6 +7,7 @@ import Contract.Prelude import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (PaymentPubKeyHash) import Contract.Monad (Contract, liftedM) import Contract.ScriptLookups as Lookups @@ -17,8 +18,7 @@ import Contract.Value (TokenName, Value) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) -import Ctl.Examples.Helpers (mkAssetName, mkCurrencySymbol) as Helpers -import Ctl.Examples.Helpers (mkCurrencySymbol) +import Ctl.Examples.Helpers (mkAssetName) as Helpers import Ctl.Internal.Test.UtxoDistribution (InitialUTxOs) import Data.Array as Array import Mote (group, test) @@ -47,21 +47,24 @@ suite = $ Array.head <$> ownPaymentPubKeyHashes withKeyWallet alice do - _ /\ cs <- mkCurrencySymbol alwaysMintsPolicy + mp <- alwaysMintsPolicy + let cs = PlutusScript.hash mp tn <- Helpers.mkAssetName tokenNameAscii pkh2pkh bobPKH $ Value.singleton cs tn BigNum.one alwaysMint :: TokenName -> Contract Unit alwaysMint tn = do - mp /\ cs <- Helpers.mkCurrencySymbol alwaysMintsPolicy + mp <- alwaysMintsPolicy let + cs = PlutusScript.hash mp + constraints :: Constraints.TxConstraints constraints = Constraints.mustMintValue $ Mint.singleton cs tn $ Int.fromInt 100 lookups :: Lookups.ScriptLookups - lookups = Lookups.mintingPolicy mp + lookups = Lookups.plutusMintingPolicy mp submitTxFromConstraints lookups constraints >>= awaitTxConfirmed diff --git a/test/Utils/Hashing.purs b/test/Utils/Hashing.purs index b2cf8d692..56886efe4 100644 --- a/test/Utils/Hashing.purs +++ b/test/Utils/Hashing.purs @@ -11,7 +11,6 @@ module Test.Ctl.Internal.Hashing , sha256HashHex , sha3_256Hash , sha3_256HashHex - , mintingPolicyHash ) where import Prelude @@ -32,9 +31,6 @@ import Cardano.Types.ScriptHash (ScriptHash) import Cardano.Types.ScriptRef ( ScriptRef(NativeScriptRef, PlutusScriptRef) ) -import Contract.Types - ( MintingPolicy(PlutusMintingPolicy, NativeMintingPolicy) - ) import Data.ByteArray (ByteArray) import Data.Newtype (wrap) import Effect (Effect) @@ -68,12 +64,6 @@ plutusDataHash :: PlutusData -> DataHash plutusDataHash = wrap <<< hashPlutusData <<< PlutusData.toCsl --- | Converts a Plutus-style `MintingPolicy` to an `MintingPolicyHash` -mintingPolicyHash :: MintingPolicy -> ScriptHash -mintingPolicyHash = case _ of - PlutusMintingPolicy script -> plutusScriptHash script - NativeMintingPolicy nscript -> nativeScriptHash nscript - plutusScriptHash :: PlutusScript -> ScriptHash plutusScriptHash = wrap <<< plutusScript_hash <<< PlutusScript.toCsl From c12ac85ad76f18dfd218ce5aa251451fcb337189 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 23 Apr 2024 05:04:37 +0400 Subject: [PATCH 110/373] Remove excessive info from the README --- README.md | 48 ++++-------------------------------------------- 1 file changed, 4 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 6bdace97e..2e23df518 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ ## Documentation -Please explore our documentation to discover how to use CTL, how to set up its runtime, and how it compares to Plutus/PAB: +Please explore our documentation to discover how to use CTL, how to set up its runtime, and how it compares to other tools: - [Super quick start](./doc/getting-started.md#setting-up-a-new-project) - [Adding CTL as a dependency](./doc/ctl-as-dependency.md) @@ -40,9 +40,9 @@ Please explore our documentation to discover how to use CTL, how to set up its r - [Importing Plutus Scripts](./doc/importing-scripts.md) - [Migrating from Plutus to CTL](./doc/plutus-comparison.md) - [Overview of testing approaches](./doc/testing.md) - - [Testing contracts with Plutip](./doc/plutip-testing.md) - - [End-to-end testing with headless browsers](./doc/e2e-testing.md) - - [Utilities for testing](./doc/test-utils.md) + - [Testing on local testnets with Plutip](./doc/plutip-testing.md) + - [End-to-end dApp testing with headless browsers](./doc/e2e-testing.md) + - [Assertion utilities for testing](./doc/test-utils.md) - [CIP-25 NFT standard support](./doc/cip-25-nfts.md) - [Transaction balancing](./doc/balancing.md) - [Transaction chaining](./doc/tx-chaining.md) @@ -57,46 +57,6 @@ Please explore our documentation to discover how to use CTL, how to set up its r You can also access [PureScript documentation for CTL and its dependencies](https://plutonomicon.github.io/cardano-transaction-lib/) for the most recent `develop` version, or [generate it yourself](./doc/development.md#generating-ps-documentation). -### Light wallet support - -Support is planned for the following light wallets: - -- [x] [Nami](https://namiwallet.io/) -- [x] [Gero](https://gerowallet.io/) -- [x] [Flint](https://flint-wallet.com/) -- [x] [Lode](https://lodewallet.io/) -- [x] [Eternl (formerly CCvault)](https://eternl.io/) -- [x] [NuFi](https://nu.fi/) -- [x] [Lace](https://www.lace.io/) -- [ ] [Typhon](https://typhonwallet.io/) -- [ ] [Yoroi](https://yoroi-wallet.com/) - -## Roadmap - -- [x] **Stage 1** Build a simple transaction in the browser that works with at least one light wallet (Nami) -- [x] **Stage 2** Once we can construct a simple user-to-user transaction, we will try to use the library to submit the tx with nami -- [x] **Stage 3** Once we have a simple working transaction, we will seek to build a Plutus smart contract transaction with datum from scratch -- [x] **Stage 4** Once we can construct Plutus smart contract transactions, we will seek to build a library/DSL/interface such that transactions can be built using constraints and lookups - as close as possible to a cut-and-paste solution from Plutus' `Contract` monad code in Haskell (but with no guarantee that code changes are not necessary) - - [x] **Stage 4.1** Investigate supporting compatibility with the Vasil hardfork and improvements to our initial `Contract` API -- [x] **Stage 5** Once we have a basic `Contract`-style API, we will further refine its public interface, expand wallet support (see [below](#light-wallet-support)), expose a test interface (**DONE** - see [here](doc/plutip-testing.md)), provide a more ergonomic JS/TS API, support stake validators (**DONE**), and support CIP workflows on the public testnet (**In progress**) -- [x] **Stage 6** Once CTL's `Contract` interface has been stabilized, we will add support for even more wallets and attempt to deprecate CTL's currently required Haskell server (**DONE**) - -## Architecture - -CTL is directly inspired by the Plutus Application Backend (PAB). Unlike PAB, however, CTL is a library and not a standalone process. Over the course of CTL's development, several questions have been raised as to how best create PAB-as-a-library: - -1. How do we get the transaction in the right format? - - This is handled by `cardano-serialization-lib`, a Rust library available as WASM -2. How do we query the chain? - - This has been solved using Ogmios & Kupo - - Thanks to [Catalyst](https://cardano.ideascale.com/c/idea/420791), we now support an alternative [BlockFrost](https://blockfrost.io/) backend as well -3. How do we get wallet data? - - This is done via browser-based light wallet integration in the browser based on CIP-30 -4. How closely should we follow Plutus' `Contract` API? - - CTL's `Contract` model is **significantly** less restrictive than Plutus' and allows for arbitrary effects within the `Contract` monad - - Certain features cannot be directly translated into Purescript from Haskell due to differences between the two languages - - Some of the Plutus conventions do not make sense for us, due to differences between on-chain and off-chain - ## Additional resources/tools: - [`cardano-serialization-lib`](https://github.com/Emurgo/cardano-serialization-lib/) From 388fcdcdbde6b5facfbc09c2aab5767de8835232 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 24 Apr 2024 17:33:54 +0400 Subject: [PATCH 111/373] Improve the docs --- README.md | 2 +- doc/cip-25-nfts.md | 7 ------- doc/comparisons.md | 2 ++ doc/ctl-as-dependency.md | 4 ++-- doc/keydir.md | 2 +- doc/plutus-comparison.md | 10 ++++------ doc/tx-chaining.md | 2 +- 7 files changed, 11 insertions(+), 18 deletions(-) delete mode 100644 doc/cip-25-nfts.md diff --git a/README.md b/README.md index 2e23df518..f6e53b492 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Please explore our documentation to discover how to use CTL, how to set up its r - [Managing contract environment](./doc/contract-environment.md) - [Using CTL from JS](./doc/using-from-js.md) - [Importing Plutus Scripts](./doc/importing-scripts.md) -- [Migrating from Plutus to CTL](./doc/plutus-comparison.md) +- [Migrating from Plutus Application Backend to CTL](./doc/plutus-comparison.md) - [Overview of testing approaches](./doc/testing.md) - [Testing on local testnets with Plutip](./doc/plutip-testing.md) - [End-to-end dApp testing with headless browsers](./doc/e2e-testing.md) diff --git a/doc/cip-25-nfts.md b/doc/cip-25-nfts.md deleted file mode 100644 index 6c1568891..000000000 --- a/doc/cip-25-nfts.md +++ /dev/null @@ -1,7 +0,0 @@ - - -# CIP-25 NFT Metadata standard - -CTL includes [CIP-25](https://cips.cardano.org/cip/CIP-0025) (v2) domain type definitions that enable creation of standard-compliant applications with ease. The definitions abstract away conversions between PlutusData and PureScript types. - -See [`Contract.Metadata`](https://plutonomicon.github.io/cardano-transaction-lib/Contract.Metadata.html#t:Cip25MetadataEntry) module. diff --git a/doc/comparisons.md b/doc/comparisons.md index 32a3f41e1..25311bd30 100644 --- a/doc/comparisons.md +++ b/doc/comparisons.md @@ -34,6 +34,8 @@ CTL is directly inspired by the Plutus Application Backend (PAB). Unlike PAB, ho - Some of the Plutus conventions do not make sense for us, due to differences between on-chain and off-chain - Our API scope is a lot more extensive, as we provide support for wallet interactions, staking operations, and more support for balancer tweaking. +For a more in-depth explanation of the differences between PAB and CTL (with code examples), refer to [`plutus-comparison.md`](./plutus-comparison.md). + ## Lucid ### Wallet support diff --git a/doc/ctl-as-dependency.md b/doc/ctl-as-dependency.md index 4893cb935..035bde426 100644 --- a/doc/ctl-as-dependency.md +++ b/doc/ctl-as-dependency.md @@ -6,13 +6,13 @@ CTL can be imported as an additional dependency into a Purescript project built -- [Using CTL's overlays](#using-ctls-overlays) +- [Using CTL's Nix overlays](#using-ctls-nix-overlays) - [Upgrading CTL](#upgrading-ctl) - [See also](#see-also) -## Using CTL's overlays +## Using CTL's Nix overlays CTL exposes two `overlay`s from its flake. You can use these in the Nix setup of your own project to use the same setup as we do, e.g. the same packages and PS builders: diff --git a/doc/keydir.md b/doc/keydir.md index 1afbe8ddd..8ef40e9a5 100644 --- a/doc/keydir.md +++ b/doc/keydir.md @@ -1,4 +1,4 @@ -# Keydir backend +# Running tests using a directory with private keys diff --git a/doc/plutus-comparison.md b/doc/plutus-comparison.md index 8f813a3b6..425727f6e 100644 --- a/doc/plutus-comparison.md +++ b/doc/plutus-comparison.md @@ -1,8 +1,6 @@ # Comparing CTL and Plutus -This document outlines the core differences between CTL and Plutus (particularly in the context of the Plutus Application Backend [PAB]). CTL is of course directly inspired by Plutus and PAB and we have attempted to preserve a high degree of similarity between the two APIs. In many cases, it should be possible to copy-paste existing code written for PAB deployments and adjust it for CTL fairly easily (accounting of course for existing differences between Haskell and Purescript). Nevertheless, CTL and Plutus differ in several important ways, as outlined below. - -Note that differences between Haskell and Purescript, while also relevant to such a comparison, is beyond the scope of this document unless such differences have a direct bearing on divergences between the two CTL and Plutus. +This document outlines the core differences between CTL and Plutus Application Backend. CTL is directly inspired by PAB and we have attempted to preserve a high degree of similarity between the two APIs. Nevertheless, CTL and Plutus differ in several important ways, as outlined below. **Table of Contents** @@ -25,13 +23,13 @@ Note that differences between Haskell and Purescript, while also relevant to suc ### Library vs. process -Unlike contracts written for PAB, which are compiled to a single process, CTL is a library. CTL itself can be [imported as a Purescript library](./ctl-as-dependency.md) and contracts written in CTL compile to Javascript that can be run in the browser or NodeJS. Accordingly, there is no need to activate endpoints in CTL -- contracts are executed by calling effectful functions written using the library. This distinction has influenced our adaption of Plutus' `Contract` type, as outlined [below](#the-contract-type). +Unlike contracts written for PAB, which are compiled to a single process, CTL is a library. CTL itself can be [imported as a Purescript library](./ctl-as-dependency.md) and offchain contracts written in CTL compile to Javascript that can be run in the browser or NodeJS. Accordingly, there is no need to activate endpoints in CTL -- contracts are executed by calling effectful functions written using the library. This distinction has influenced our adaption of Plutus' `Contract` type, as outlined [below](#the-contract-type). Note, however, that CTL still requires a number of runtime dependencies. In some respects, this is similar to PAB, which also needs to communicate with plutus-chain-index and a running node. Please see the [documentation](./runtime.md) for more details on CTL's runtime. ### The `Contract` type -Both CTL and Plutus define `Contract` monads for constructing, balancing, and submitting transactions. There are considerable differences between the two, however: +Both CTL and Plutus define `Contract` monads for constructing, balancing, and submitting transactions (not to be confused with smart contracts). There are considerable differences between the two, however: **CTL**: @@ -133,7 +131,7 @@ class RedeemerType validator redeemer | validator -> redeemer #### Using scripts from the frontend -As noted above, all scripts and various script newtypes (`Validator`, `MintingPolicy`, etc...) must be explicitly passed to CTL. Unlike Plutus, where on- and off-chain code can freely share Haskell values, scripts must be provided to CTL in a serialized format. The easiest way to do this is using `Contract.TextEnvelope.textEnvelope` along with the JS FFI. See the [getting started guide](getting-started.md#using-compiled-scripts) for more details. +As noted above, all scripts and various script newtypes (`Validator`, `MintingPolicy`, etc...) must be explicitly passed to CTL. Unlike Plutus, where on- and off-chain code can freely share Haskell values, scripts must be provided to CTL in a serialized format. The easiest way to do this is using `Contract.TextEnvelope` along with the JS FFI. See the [getting started guide](getting-started.md#using-compiled-scripts) for more details. #### Applying arguments to parameterized scripts diff --git a/doc/tx-chaining.md b/doc/tx-chaining.md index 3088503b0..c8b5b60ca 100644 --- a/doc/tx-chaining.md +++ b/doc/tx-chaining.md @@ -6,6 +6,6 @@ Transaction chaining on Cardano is the ability to send transactions that depend In case the transactions come from multiple actors, some off-chain data delivery mechanism should be used - it's up to the application developers to implement it. -The only piece of data that is actually needed is the additional UTxOs that the CTL query layer is not (yet) aware of. `mustUseAdditionalUtxos` [balancer constraint](./balancing.md) can be used for that, as shown in the [transaction chaining example](../examples/TxChaining.purs). Additionally, `mustNotSpendUtxosWithOutRefs` can be used to forbid spending UTxOs that have been consumed. +The only piece of data that is actually needed is the additional UTxOs that the CTL query layer is not (yet) aware of. `mustUseAdditionalUtxos` [balancer constraint](./balancing.md) can be used for that, as shown in the [transaction chaining example](../examples/TxChaining.purs). Additionally, `mustNotSpendUtxosWithOutRefs` can be used to forbid attempting to spend UTxOs that have been consumed. `createAdditionalUtxos` is a helper function that can be used to build an UTxO set for use with `mustUseAdditionalUtxos`. `Contract.Backend.Ogmios.Mempool` module contains functions that allow to query the mempool for pending transactions (only works with Ogmios backend). See [here](https://ogmios.dev/mini-protocols/local-tx-monitor/) for more. From f5cc803bc23e04c5a6329f22499d0328dc0d494d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 24 Apr 2024 17:45:36 +0400 Subject: [PATCH 112/373] Try to debug the E2E test suite: pass logs to the shell, make the runner headful --- doc/e2e-testing.md | 1 + src/Internal/Test/E2E/Feedback/Node.purs | 17 ++++++++++---- src/Internal/Test/E2E/Options.purs | 12 ++++++++-- src/Internal/Test/E2E/Runner.purs | 26 +++++++++++++++----- src/Internal/Wallet.purs | 30 ++++++++---------------- templates/ctl-scaffold/test/e2e.env | 4 +++- test/e2e.env | 3 ++- 7 files changed, 58 insertions(+), 35 deletions(-) diff --git a/doc/e2e-testing.md b/doc/e2e-testing.md index 402388558..93135f941 100644 --- a/doc/e2e-testing.md +++ b/doc/e2e-testing.md @@ -112,6 +112,7 @@ The tests can set up using CLI arguments, environment variables, or both. CLI ar | Test timeout | `--test-timeout` | `E2E_TEST_TIMEOUT` | | Browser binary path or name | `--browser` | `E2E_BROWSER` | | Don't use headless mode | `--no-headless` | `E2E_NO_HEADLESS` | +| Pass browser logs to the shell console | `--pass-browser-logs` | `E2E_PASS_BROWSER_LOGS` | | Path to the user settings archive | `--settings-archive` | `E2E_SETTINGS_ARCHIVE` | | URL of settings archive asset | `--settings-archive-url` | `E2E_SETTINGS_ARCHIVE_URL` | | Path to the user data directory | `--chrome-user-data` | `E2E_CHROME_USER_DATA` | diff --git a/src/Internal/Test/E2E/Feedback/Node.purs b/src/Internal/Test/E2E/Feedback/Node.purs index 6ee1692e0..e95eed151 100644 --- a/src/Internal/Test/E2E/Feedback/Node.purs +++ b/src/Internal/Test/E2E/Feedback/Node.purs @@ -41,24 +41,31 @@ import Toppokki as Toppokki -- | React to events raised by the browser subscribeToBrowserEvents - :: Toppokki.Page + :: Boolean + -> Toppokki.Page -> (BrowserEvent -> Effect Unit) -> Aff Unit -subscribeToBrowserEvents page cont = do +subscribeToBrowserEvents passBrowserLogs page cont = do logs <- liftEffect $ Ref.new "" let addLogLine line = Ref.modify_ (flip append (line <> "\n")) logs liftEffect $ Toppokki.onConsole ( mkEffectFn1 \cm -> launchAff_ do - Toppokki.consoleMessageText cm >>= liftEffect <<< addLogLine + -- either log right now or safe for later (to log in case of an error) + if passBrowserLogs then + Toppokki.consoleMessageText cm >>= liftEffect <<< Console.log <<< + append "[chrome]: " + else + Toppokki.consoleMessageText cm >>= liftEffect <<< addLogLine ) page makeAff \f -> do liftEffect $ Toppokki.onPageError ( mkEffectFn1 ( \err -> do - allLogs <- Ref.read logs - Console.log allLogs + -- log everything if we haven't been passing the logs on the fly + when (not passBrowserLogs) do + Ref.read logs >>= Console.log f $ Left err ) ) diff --git a/src/Internal/Test/E2E/Options.purs b/src/Internal/Test/E2E/Options.purs index 371558944..f2866c085 100644 --- a/src/Internal/Test/E2E/Options.purs +++ b/src/Internal/Test/E2E/Options.purs @@ -3,6 +3,7 @@ module Ctl.Internal.Test.E2E.Options , BrowserOptions , ExtensionOptions , NoHeadless_ + , PassBrowserLogs_ , Tests_ , TestTimeout_ , CommonOptions_ @@ -86,7 +87,8 @@ import Type.Row (type (+)) -- | CLI options for E2E tests. type TestOptions = Record - ( NoHeadless_ + Tests_ + TestTimeout_ + ClusterPortsOptions_ + ( NoHeadless_ + Tests_ + PassBrowserLogs_ + TestTimeout_ + + ClusterPortsOptions_ + CommonOptions_ + () ) @@ -102,6 +104,8 @@ type ClusterPortsOptions = Record (ClusterPortsOptions_ ()) type NoHeadless_ (r :: Row Type) = (noHeadless :: Boolean | r) +type PassBrowserLogs_ (r :: Row Type) = (passBrowserLogs :: Boolean | r) + type Tests_ (r :: Row Type) = (tests :: Array E2ETest | r) type TestTimeout_ (r :: Row Type) = (testTimeout :: Maybe Int | r) @@ -292,6 +296,10 @@ testOptionsParser :: Parser TestOptions testOptionsParser = ado res <- browserOptionsParser tests <- testUrlsOptionParser + passBrowserLogs <- switch $ fold + [ long "pass-browser-logs" + , help "Pipe logs from the browser console to the test suite console" + ] noHeadless <- switch $ fold [ long "no-headless" , help "Show visible browser window" @@ -306,7 +314,7 @@ testOptionsParser = ado (clusterPorts :: ClusterPortsOptions) <- clusterPortsOptionsParser in build (merge clusterPorts <<< merge res) - { noHeadless, tests, testTimeout } + { noHeadless, tests, testTimeout, passBrowserLogs } testParser :: ReadM E2ETest testParser = eitherReader \str -> diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 7eeeb04db..422c7a65a 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -147,6 +147,8 @@ runE2ECommand = case _ of runtime <- readTestRuntime testOptions tests <- liftEffect $ readTests testOptions.tests noHeadless <- liftEffect $ readNoHeadless testOptions.noHeadless + passBrowserLogs <- liftEffect $ readPassBrowserLogs + testOptions.passBrowserLogs testTimeout <- liftEffect $ readTestTimeout testOptions.testTimeout portOptions <- liftEffect $ readPorts testOptions extraBrowserArgs <- liftEffect $ readExtraArgs testOptions.extraBrowserArgs @@ -156,6 +158,7 @@ runE2ECommand = case _ of , testTimeout = testTimeout , tests = tests , extraBrowserArgs = extraBrowserArgs + , passBrowserLogs = passBrowserLogs } runE2ETests testOptions' runtime RunBrowser browserOptions -> do @@ -242,7 +245,7 @@ testPlan opts@{ tests } rt@{ wallets } = withBrowser opts.noHeadless opts.extraBrowserArgs rt Nothing \browser -> do withE2ETest true (wrap url) browser \{ page } -> do - subscribeToTestStatusUpdates page + subscribeToTestStatusUpdates opts.passBrowserLogs page -- Plutip in E2E tests { url, wallet: PlutipCluster } -> do let @@ -274,7 +277,7 @@ testPlan opts@{ tests } rt@{ wallets } = \browser -> do withE2ETest true (wrap url) browser \{ page } -> do setClusterSetup page clusterSetup - subscribeToTestStatusUpdates page + subscribeToTestStatusUpdates opts.passBrowserLogs page -- E2E tests with a light wallet { url, wallet: WalletExtension wallet } -> do { password, extensionId } <- liftEffect @@ -314,7 +317,7 @@ testPlan opts@{ tests } rt@{ wallets } = res <- try aff when (isLeft res) $ liftEffect $ k res map fiberCanceler $ launchAff $ (try >=> k >>> liftEffect) $ - subscribeToBrowserEvents page + subscribeToBrowserEvents opts.passBrowserLogs page case _ of ConfirmAccess -> rethrow someWallet.confirmAccess Sign -> rethrow someWallet.sign @@ -324,9 +327,9 @@ testPlan opts@{ tests } rt@{ wallets } = Failure _ -> pure unit where -- A specialized version that does not deal with wallet automation - subscribeToTestStatusUpdates :: Toppokki.Page -> Aff Unit - subscribeToTestStatusUpdates page = - subscribeToBrowserEvents page + subscribeToTestStatusUpdates :: Boolean -> Toppokki.Page -> Aff Unit + subscribeToTestStatusUpdates passBrowserLogs page = + subscribeToBrowserEvents passBrowserLogs page case _ of Success -> pure unit Failure err -> throw err @@ -365,6 +368,7 @@ readTestRuntime testOptions = do <<< delete (Proxy :: Proxy "plutipPort") <<< delete (Proxy :: Proxy "ogmiosPort") <<< delete (Proxy :: Proxy "kupoPort") + <<< delete (Proxy :: Proxy "passBrowserLogs") ) readBrowserRuntime Nothing $ removeUnneeded testOptions @@ -594,6 +598,16 @@ readNoHeadless false = do liftMaybe (error $ "Failed to read E2E_NO_HEADLESS: " <> str) $ readBoolean str +readPassBrowserLogs :: Boolean -> Effect Boolean +readPassBrowserLogs true = pure true +readPassBrowserLogs false = do + mbStr <- lookupEnv "E2E_PASS_BROWSER_LOGS" + case mbStr of + Nothing -> pure false + Just str -> do + liftMaybe (error $ "Failed to read E2E_PASS_BROWSER_LOGS: " <> str) $ + readBoolean str + readBoolean :: String -> Maybe Boolean readBoolean = case _ of "true" -> Just true diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 608d6d5a0..baf8d165a 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -31,9 +31,10 @@ import Data.Int (toNumber) import Data.Maybe (Maybe) import Data.Newtype (wrap) import Effect (Effect) -import Effect.Aff (Aff, delay, error) +import Effect.Aff (Aff, delay) import Effect.Aff.Class (class MonadAff, liftAff) import Effect.Class (liftEffect) +import Effect.Console as Console -- NOTE: this data type is defined like this on purpose, don't change it -- to `(Cip30Wallet /\ WalletExtension)`. The motivation is to make it simpler @@ -60,25 +61,14 @@ mkKeyWallet payKey mbStakeKey = KeyWallet $ privateKeysToKeyWallet foreign import _isWalletAvailable :: String -> Effect Boolean mkWalletAff :: WalletExtension -> Aff Wallet -mkWalletAff LodeWallet = _mkLodeWalletAff -mkWalletAff (GenericCip30Wallet "LodeWallet") = _mkLodeWalletAff -mkWalletAff walletExtension = - GenericCip30 <$> - ( mkCip30WalletAff =<< Cip30.enable (walletExtensionToName walletExtension) - [] - ) - --- Lode does not inject on page load, so this function retries up to set --- number of times, for Lode to become available. -_mkLodeWalletAff :: Aff Wallet -_mkLodeWalletAff = do - retryNWithIntervalUntil 10 (toNumber 100) - $ liftEffect (isWalletAvailable LodeWallet) - (GenericCip30 <$> (mkCip30WalletAff =<< Cip30.enable "LodeWallet" [])) - `catchError` - ( \e -> throwError <<< error $ show e <> - " Note: LodeWallet is injected asynchronously and may be unreliable." - ) +mkWalletAff walletExtension = do + retryNWithIntervalUntil 300 (toNumber 100) + $ liftEffect (isWalletAvailable walletExtension) + GenericCip30 <$> do + mkCip30WalletAff =<< do + Cip30.enable (walletExtensionToName walletExtension) [] `catchError` \err -> do + liftEffect $ Console.error $ "Wallet extension " <> walletExtensionToName walletExtension <> " is not available!" + throwError err where retryNWithIntervalUntil n ms mBool = if n == zero then pure unit diff --git a/templates/ctl-scaffold/test/e2e.env b/templates/ctl-scaffold/test/e2e.env index 4d7280e45..1ecc9a1c7 100644 --- a/templates/ctl-scaffold/test/e2e.env +++ b/templates/ctl-scaffold/test/e2e.env @@ -29,7 +29,9 @@ fi; export E2E_TEST_TIMEOUT=200 export E2E_BROWSER=chromium -export E2E_NO_HEADLESS=false +export E2E_NO_HEADLESS=true +export E2E_PASS_BROWSER_LOGS=false + export E2E_SETTINGS_ARCHIVE_URL="https://github.com/mlabs-haskell/ctl-e2e-assets/releases/download/preview-1/preview-settings.tar.gz" export E2E_SETTINGS_ARCHIVE=test-data/settings.tar.gz export E2E_CHROME_USER_DATA="test-data/chrome-user-data" diff --git a/test/e2e.env b/test/e2e.env index 7b8163794..8b0cc2d87 100755 --- a/test/e2e.env +++ b/test/e2e.env @@ -87,7 +87,8 @@ export E2E_SETTINGS_ARCHIVE_URL="https://github.com/mlabs-haskell/ctl-e2e-assets export E2E_TEST_TIMEOUT=200 export E2E_BROWSER=chromium -export E2E_NO_HEADLESS=false +export E2E_NO_HEADLESS=true +export E2E_PASS_BROWSER_LOGS=false export E2E_EXTRA_BROWSER_ARGS="--disable-web-security" # Bypass CORS for Kupo # Port numbers used by services when testing with Plutip From caf238b8576936947655c83835728f797d1ab85d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 29 Apr 2024 23:27:47 +0400 Subject: [PATCH 113/373] Use fixed versions --- packages.dhall | 16 ++++++++-------- spago-packages.nix | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/packages.dhall b/packages.dhall index e9bf0a165..7962f34f3 100644 --- a/packages.dhall +++ b/packages.dhall @@ -144,7 +144,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "v2.0.0" + , version = "v2.0.1" } , bignumber = { dependencies = @@ -202,7 +202,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" - , version = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1" + , version = "v2.0.0" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] @@ -261,7 +261,7 @@ let additions = , "strings" ] , repo = "https://github.com/mlabs-haskell/purescript-bytearrays" - , version = "e3991d562a04d8825472551d91a06407ad9c9112" + , version = "v1.0.0" } , cardano-serialization-lib = { dependencies = @@ -280,13 +280,13 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "c66afbb9c572db096690ec1dd786c9ec96105c0d" + , version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema" - , version = "eb0bb78927c50c4bee364e932c9fa8cf94546191" + , version = "v1.0.0" } , plutus-types = { dependencies = @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "64652087362a8591ae0a8d73a2f4857762002606" + , version = "v1.0.0" } , cardano-message-signing = { dependencies = @@ -375,7 +375,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-message-signing" - , version = "8078bd9ce339262f29155a80572e8c44334aa801" + , version = "v1.0.0" } , cardano-hd-wallet = { dependencies = @@ -388,7 +388,7 @@ let additions = , "uint" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" - , version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9" + , version = "v1.0.0" } , mote-testplan = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index dff4f85c9..151fc4a43 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "v2.0.0"; + version = "v2.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "4fddd518a143de563299d484272a0ef18daa7dcd"; - sha256 = "1bz1z9l6nwf5yk45sbbjllmqvci0n1l92cvk3lgmni19g9silbrl"; + rev = "ac674dda5cf58c6544cb361a208bced4d06ee93a"; + sha256 = "1zx7d96rz86axqz8n28j5d4lkgx48via0nw9c7xid1z1pz215zsd"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -199,7 +199,7 @@ let "bytearrays" = pkgs.stdenv.mkDerivation { name = "bytearrays"; - version = "e3991d562a04d8825472551d91a06407ad9c9112"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-bytearrays"; rev = "e3991d562a04d8825472551d91a06407ad9c9112"; @@ -211,7 +211,7 @@ let "cardano-hd-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-hd-wallet"; - version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet"; rev = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; @@ -223,11 +223,11 @@ let "cardano-message-signing" = pkgs.stdenv.mkDerivation { name = "cardano-message-signing"; - version = "8078bd9ce339262f29155a80572e8c44334aa801"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-message-signing"; - rev = "8078bd9ce339262f29155a80572e8c44334aa801"; - sha256 = "0ay0v79ak15azk9sm4xv2fv3g3f6h89m4xm6c4vazy7qks2ap2vh"; + rev = "97f6f97a258ae3490df0be6b39fa6769677aa04f"; + sha256 = "1ns7m9awn4w5amvf9ffldxk7acm73fg8clw4hja4nnl61mskqr5w"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -247,11 +247,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "c66afbb9c572db096690ec1dd786c9ec96105c0d"; + version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "c66afbb9c572db096690ec1dd786c9ec96105c0d"; - sha256 = "1pi5q45nx1varl2pjpd60vfxv2cjvlg1ms7xnsfwb2acl216lmr5"; + rev = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; + sha256 = "1ikz6j3jvls3cvl6znrw55f59abzdaf7ggd2x7j3f81m5cvkxggr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -259,11 +259,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "64652087362a8591ae0a8d73a2f4857762002606"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "64652087362a8591ae0a8d73a2f4857762002606"; - sha256 = "0b2mbvd9v6fvwpp155hh6yh8jb68xgx1gqg4xi3h3vhgqxyb45qq"; + rev = "effe2d08e66d54b3d4f695ea06130f1d8bdb2cdb"; + sha256 = "1bqflb6yvyq1jn07zjs5zdsxw1ar84s1dsw96lb6v8g8gn42y14g"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -871,10 +871,10 @@ let "noble-secp256k1" = pkgs.stdenv.mkDerivation { name = "noble-secp256k1"; - version = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git"; - rev = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1"; + rev = "32a9b39f1734fe0d809b3a3b4854b9e4ad6056f1"; sha256 = "0hrf7vgf2mh91803l4drygg6srmkg765x4gk6i6zqyr6398fyxw6"; }; phases = "installPhase"; From adf54bf9aeefc3c91d63d0d6167193f17c503d42 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 30 Apr 2024 00:00:06 +0400 Subject: [PATCH 114/373] Apply suggestions --- src/Contract/Time.purs | 1 - src/Internal/BalanceTx/BalanceTx.purs | 13 ++++---- src/Internal/BalanceTx/CoinSelection.purs | 17 ++++------ src/Internal/BalanceTx/Collateral/Select.purs | 18 ++--------- src/Internal/BalanceTx/Error.purs | 22 ++++++------- src/Internal/Helpers.purs | 12 +++++++ src/Internal/Partition.purs | 31 ++++++++++--------- src/Internal/Plutip/Types.purs | 7 +++-- src/Internal/ProcessConstraints.purs | 20 ++++++++---- src/Internal/QuickCheck.purs | 26 ---------------- src/Internal/Serialization/MinFee.purs | 3 +- src/Internal/Test/E2E/Runner.purs | 4 +-- src/Internal/Test/KeyDir.purs | 6 ++-- src/Internal/Types/EraSummaries.purs | 11 ++++--- src/Internal/Types/Interval.purs | 30 +++++++----------- src/Internal/Types/SystemStart.purs | 9 +++--- src/Internal/Wallet.purs | 9 ++++-- templates/ctl-scaffold/Makefile | 3 -- 18 files changed, 108 insertions(+), 134 deletions(-) delete mode 100644 src/Internal/QuickCheck.purs diff --git a/src/Contract/Time.purs b/src/Contract/Time.purs index d0931f9ec..afa40d744 100644 --- a/src/Contract/Time.purs +++ b/src/Contract/Time.purs @@ -74,7 +74,6 @@ import Ctl.Internal.Types.Interval , after , always , before - , beginningOfTime , contains , findSlotEraSummary , findTimeEraSummary diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index c394f92f1..81725d976 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -100,7 +100,7 @@ import Ctl.Internal.Contract.Wallet , getWalletCollateral , getWalletUtxos ) as Wallet -import Ctl.Internal.Helpers (liftEither, pprintTagSet, (??)) +import Ctl.Internal.Helpers (liftEither, pprintTagSet, unsafeFromJust, (??)) import Ctl.Internal.Lens ( _amount , _body @@ -158,7 +158,7 @@ import Data.Map , toUnfoldable , union ) as Map -import Data.Maybe (Maybe(Just, Nothing), fromJust, isJust, maybe) +import Data.Maybe (Maybe(Just, Nothing), isJust, maybe) import Data.Newtype (unwrap, wrap) import Data.Set (Set) import Data.Set as Set @@ -177,7 +177,7 @@ balanceTxWithConstraints -> Map TransactionInput TransactionOutput -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError Transaction) -balanceTxWithConstraints transaction_ extraUtxos constraintsBuilder = do +balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do pparams <- getProtocolParameters @@ -263,8 +263,6 @@ balanceTxWithConstraints transaction_ extraUtxos constraintsBuilder = do getChangeAddress = maybe (liftContract Wallet.getChangeAddress) pure =<< asksConstraints Constraints._changeAddress - transaction = transaction_ -- # _redeemers .~ [] # _transaction <<< _body <<< _mint .~ Nothing - transactionWithNetworkId :: BalanceTxM Transaction transactionWithNetworkId = do networkId <- maybe askNetworkId pure @@ -756,8 +754,9 @@ assignCoinsToChangeValues -> NonEmptyArray (Value /\ BigInt) -> BalanceTxM (Array Value) assignCoinsToChangeValues changeAddress adaAvailable pairsAtStart = - unsafePartial $ changeValuesAtStart <#> \changeValues -> - fromJust <<< Val.toValue <$> worker (adaRequiredAtStart changeValues) + changeValuesAtStart <#> \changeValues -> + unsafeFromJust "assignCoinsToChangeValues" <<< Val.toValue <$> worker + (adaRequiredAtStart changeValues) changeValues where worker :: BigInt -> NonEmptyArray ChangeValue -> Array Val diff --git a/src/Internal/BalanceTx/CoinSelection.purs b/src/Internal/BalanceTx/CoinSelection.purs index 88a91460d..8a79c7579 100644 --- a/src/Internal/BalanceTx/CoinSelection.purs +++ b/src/Internal/BalanceTx/CoinSelection.purs @@ -27,15 +27,12 @@ import Cardano.Types.AssetClass (AssetClass(AssetClass)) import Cardano.Types.AssetName (unAssetName) import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.UtxoMap (UtxoMap) -import Cardano.Types.Value as Value import Control.Monad.Error.Class (class MonadThrow, throwError) import Ctl.Internal.BalanceTx.Error - ( Actual(Actual) - , BalanceTxError - ( BalanceInsufficientError - , InsufficientUtxoBalanceToCoverAsset + ( BalanceTxError + ( InsufficientUtxoBalanceToCoverAsset + , BalanceInsufficientError ) - , Expected(Expected) ) import Ctl.Internal.CoinSelection.UtxoIndex ( SelectionFilter(SelectSingleton, SelectPairWith, SelectAnyWith) @@ -122,16 +119,14 @@ performMultiAssetSelection -> m SelectionState performMultiAssetSelection strategy utxoIndex requiredValue = do case requiredValue `Val.leq` availableValue of - true -> do + true -> runRoundRobinM (mkSelectionState utxoIndex) selectors - false -> do + false -> throwError balanceInsufficientError where balanceInsufficientError :: BalanceTxError balanceInsufficientError = - BalanceInsufficientError - (Expected Value.empty) -- $ unsafePartial $ fromJust $ Val.toValue requiredValue) - (Actual Value.empty) -- $ unsafePartial $ fromJust $ Val.toValue availableValue) + BalanceInsufficientError requiredValue availableValue availableValue :: Val availableValue = balance (utxoIndexUniverse utxoIndex) diff --git a/src/Internal/BalanceTx/Collateral/Select.purs b/src/Internal/BalanceTx/Collateral/Select.purs index 8c295b2d5..853d9ed29 100644 --- a/src/Internal/BalanceTx/Collateral/Select.purs +++ b/src/Internal/BalanceTx/Collateral/Select.purs @@ -21,21 +21,19 @@ import Cardano.Types.UtxoMap (UtxoMap) import Cardano.Types.Value as Value import Ctl.Internal.BalanceTx.FakeOutput (fakeOutputWithMultiAssets) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) -import Ctl.Internal.Helpers (bugTrackerLink) +import Ctl.Internal.Helpers (unsafeFromJust) import Data.Array as Array import Data.Foldable (foldl) import Data.Function (on) import Data.List (List(Nil, Cons)) import Data.List as List import Data.Map (toUnfoldable) as Map -import Data.Maybe (Maybe(Just, Nothing)) +import Data.Maybe (Maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Ordering (invert) as Ordering import Data.Tuple (Tuple(Tuple)) import Data.Tuple (fst, snd) as Tuple import Data.Tuple.Nested (type (/\), (/\)) -import Effect.Exception (throw) -import Effect.Unsafe (unsafePerformEffect) minRequiredCollateral :: Coin minRequiredCollateral = wrap $ BigNum.fromInt 5_000_000 @@ -164,19 +162,9 @@ adaValue = Value.getCoin <<< _.amount <<< unwrap <<< _.output <<< unwrap consumeUtxoAdaValue :: Coin -> TransactionUnspentOutput -> Coin -consumeUtxoAdaValue acc = unsafeFromMaybe "consumeUtxoAdaValue" <<< Coin.add acc +consumeUtxoAdaValue acc = unsafeFromJust "consumeUtxoAdaValue" <<< Coin.add acc <<< adaValue -unsafeFromMaybe :: forall a. String -> Maybe a -> a -unsafeFromMaybe e a = case a of - Nothing -> - unsafePerformEffect $ throw $ "unsafeFromMaybe: impossible happened: " - <> e - <> " (please report as bug at " - <> bugTrackerLink - <> " )" - Just v -> v - nonAdaAsset :: TransactionUnspentOutput -> MultiAsset nonAdaAsset = Value.getMultiAsset <<< _.amount <<< unwrap <<< _.output <<< unwrap diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 6b02cbadb..a46cf69b9 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -30,7 +30,7 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionOutput (TransactionOutput) import Cardano.Types.UtxoMap (UtxoMap, pprintUtxoMap) -import Cardano.Types.Value (Value, pprintValue) +import Cardano.Types.Value (Value) import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) import Ctl.Internal.Lens (_redeemers, _witnessSet) @@ -49,18 +49,18 @@ import Ctl.Internal.QueryM.Ogmios ) , TxEvaluationFailure(UnparsedError, AdditionalUtxoOverlap, ScriptFailures) ) as Ogmios -import Ctl.Internal.Types.Val (Val) +import Ctl.Internal.Types.Val (Val, pprintVal) import Data.Array (catMaybes, filter, uncons) as Array import Data.Bifunctor (bimap) import Data.Either (Either(Left, Right), either, isLeft) -import Data.Foldable (find, foldMap, foldl, length) +import Data.Foldable (find, fold, foldMap, foldl, length) import Data.FoldableWithIndex (foldMapWithIndex) import Data.Function (applyN) import Data.Generic.Rep (class Generic) import Data.Int (ceil, decimal, toNumber, toStringAs) import Data.Lens ((^.)) import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (class Newtype, unwrap) +import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) import Data.String (Pattern(Pattern)) import Data.String.CodePoints (length) as String @@ -71,7 +71,7 @@ import JS.BigInt as BigInt -- | Errors conditions that may possibly arise during transaction balancing data BalanceTxError - = BalanceInsufficientError Expected Actual + = BalanceInsufficientError Val Val | CouldNotConvertScriptOutputToTxInput | CouldNotGetCollateral | InsufficientCollateralUtxos UtxoMap @@ -93,9 +93,9 @@ instance Show BalanceTxError where explainBalanceTxError :: BalanceTxError -> String explainBalanceTxError = case _ of BalanceInsufficientError expected actual -> - "Insufficient balance. " <> prettyValue "Expected" (unwrap expected) + "Insufficient balance. " <> prettyVal "Expected" expected <> ", " - <> prettyValue "actual" (unwrap actual) + <> prettyVal "Actual" actual InsufficientCollateralUtxos utxos -> "Could not cover collateral requirements. " <> pprintTagSet "UTxOs for collateral selection:" (pprintUtxoMap utxos) @@ -138,11 +138,11 @@ explainBalanceTxError = case _ of UtxoMinAdaValueCalculationFailed -> "Could not calculate min ADA for UTxO" NumericOverflowError mbVal -> - "Could not compute output value due to numeric overflow. Decrease the quantity of assets. Value: " - <> show mbVal + "Could not compute output value due to numeric overflow. Decrease the quantity of assets. " + <> fold (prettyVal "Value:" <$> mbVal) where - prettyValue :: String -> Value -> String - prettyValue str = pprintValue >>> pprintTagSet str + prettyVal :: String -> Val -> String + prettyVal str = pprintVal >>> pprintTagSet str newtype Actual = Actual Value diff --git a/src/Internal/Helpers.purs b/src/Internal/Helpers.purs index 3b7cfddd1..2c6b907fa 100644 --- a/src/Internal/Helpers.purs +++ b/src/Internal/Helpers.purs @@ -36,6 +36,7 @@ module Ctl.Internal.Helpers , compareViaCslBytes , decodeMap , decodeTaggedNewtype + , unsafeFromJust ) where import Prelude @@ -88,6 +89,7 @@ import Effect (Effect) import Effect.Class (class MonadEffect) import Effect.Class.Console (log) import Effect.Exception (throw) +import Effect.Unsafe (unsafePerformEffect) import Foreign.Object (Object) import Foreign.Object as Obj import JS.BigInt (BigInt) @@ -372,3 +374,13 @@ showFromCbor typeName a = "(" <> typeName <> " $ unsafePartial $ fromJust $ decodeCbor $ CborBytes $ " <> show (toBytes a) <> ")" + +unsafeFromJust :: forall a. String -> Maybe a -> a +unsafeFromJust e a = case a of + Nothing -> + unsafePerformEffect $ throw $ "unsafeFromJust: impossible happened: " + <> e + <> " (please report as bug at " + <> bugTrackerLink + <> " )" + Just v -> v diff --git a/src/Internal/Partition.purs b/src/Internal/Partition.purs index bf0b96649..2c121a560 100644 --- a/src/Internal/Partition.purs +++ b/src/Internal/Partition.purs @@ -16,6 +16,7 @@ import Cardano.Types.MultiAsset (MultiAsset) import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.ScriptHash (ScriptHash) import Cardano.Types.Value (Value(Value)) +import Ctl.Internal.Helpers (unsafeFromJust) import Data.Array (replicate) import Data.Array.NonEmpty (NonEmptyArray) import Data.Array.NonEmpty @@ -30,7 +31,7 @@ import Data.Array.NonEmpty ) as NEArray import Data.Foldable (any, foldl, length, sum) import Data.Function (on) -import Data.Maybe (Maybe(Just, Nothing), fromJust) +import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Ordering (invert) as Ordering import Data.Tuple (fst, snd) @@ -46,7 +47,8 @@ class Partition (a :: Type) where instance Partition BigNum where partition bigNum = unsafePartial $ map BigNum.toBigInt >>> partition (BigNum.toBigInt bigNum) - >>> map (map $ fromJust <<< BigNum.fromBigInt) + >>> map + (map $ unsafeFromJust "instance Partition BigNum" <<< BigNum.fromBigInt) -- | Partitions a `BigInt` into a number of parts, where the size of each part -- | is proportional to the size of its corresponding element in the given @@ -91,13 +93,14 @@ instance Partition BigInt where round portions = NEArray.zipWith (+) (map (fst <<< unwrap) <$> portions) - ( fromArrayUnsafe $ + ( unsafeFromJust "instance Partition BigInt" <<< NEArray.fromArray $ replicate shortfall one <> replicate (length portions - shortfall) zero ) shortfall :: Int - shortfall = toIntUnsafe $ target - sum (map fst portionsUnrounded) + shortfall = unsafeFromJust "instance Partition BigInt" <<< BigInt.toInt + $ target - sum (map fst portionsUnrounded) portionsUnrounded :: NonEmptyArray (BigInt /\ BigInt) portionsUnrounded = weights <#> \w -> (target * w) `quotRem` sumWeights @@ -120,14 +123,16 @@ instance Equipartition BigInt where NEArray.singleton bi | otherwise = let - quot /\ rem = toIntUnsafe <$> (bi `quotRem` BigInt.fromInt numParts) + quot /\ rem = + unsafeFromJust "instance Equipartition BigInt" <<< BigInt.toInt <$> + (bi `quotRem` BigInt.fromInt numParts) in NEArray.replicate (numParts - rem) quot `NEArray.appendArray` replicate rem (quot + one) instance Equipartition BigNum where equipartition bn = unsafePartial - $ map (fromJust <<< BigNum.fromBigInt) + $ map (unsafeFromJust "instance Equipartition BigNum" <<< BigNum.fromBigInt) <<< equipartition (BigNum.toBigInt bn) instance Equipartition MultiAsset where @@ -135,7 +140,8 @@ instance Equipartition MultiAsset where foldl accumulate (NEArray.replicate numParts MultiAsset.empty) (MultiAsset.flatten nonAdaAssets) where - append' a b = unsafePartial $ fromJust $ MultiAsset.add a b + append' a b = unsafeFromJust "instance Equipartition MultiAsset" $ + MultiAsset.add a b accumulate :: NonEmptyArray MultiAsset @@ -146,12 +152,6 @@ instance Equipartition MultiAsset where map (MultiAsset.singleton cs tn) (equipartition tokenQuantity numParts) -toIntUnsafe :: BigInt -> Int -toIntUnsafe = unsafePartial fromJust <<< BigInt.toInt - -fromArrayUnsafe :: forall (a :: Type). Array a -> NonEmptyArray a -fromArrayUnsafe = unsafePartial fromJust <<< NEArray.fromArray - quotRem :: forall (a :: Type). EuclideanRing a => a -> a -> (a /\ a) quotRem a b = (a `div` b) /\ (a `mod` b) @@ -202,8 +202,9 @@ equipartitionAssetsWithTokenQuantityUpperBound nonAdaAssets maxTokenQuantity = equipartition nonAdaAssets numParts /\ numParts where numParts :: Int - numParts = unsafePartial $ fromJust $ BigInt.toInt $ - divCeil (BigNum.toBigInt currentMaxTokenQuantity) maxTokenQuantity + numParts = unsafeFromJust "equipartitionAssetsWithTokenQuantityUpperBound" + $ BigInt.toInt + $ divCeil (BigNum.toBigInt currentMaxTokenQuantity) maxTokenQuantity tokenQuantity :: (ScriptHash /\ AssetName /\ BigNum) -> BigNum tokenQuantity (_ /\ _ /\ quantity) = quantity diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs index 50f59126e..45f15943e 100644 --- a/src/Internal/Plutip/Types.purs +++ b/src/Internal/Plutip/Types.purs @@ -34,6 +34,7 @@ import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.RawBytes (RawBytes(RawBytes)) import Ctl.Internal.Contract.Hooks (Hooks) +import Ctl.Internal.Helpers (unsafeFromJust) import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) import Data.ByteArray (hexToByteArray) @@ -41,13 +42,12 @@ import Data.Either (Either(Left), note) import Data.Generic.Rep (class Generic) import Data.Log.Level (LogLevel) import Data.Log.Message (Message) -import Data.Maybe (Maybe, fromJust) +import Data.Maybe (Maybe) import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) import Data.Time.Duration (Seconds(Seconds)) import Data.UInt (UInt) import Effect.Aff (Aff) -import Partial.Unsafe (unsafePartial) -- | A config that is used to run tests on Plutip clusters. -- | Note that the test suite starts the services on the specified ports. @@ -94,7 +94,8 @@ instance EncodeAeson ClusterStartupRequest where ) = encodeAeson { keysToGenerate , epochSize - , slotLength: unsafePartial $ fromJust $ finiteNumber slotLength + , slotLength: unsafeFromJust "instance EncodeAeson ClusterStartupRequest" $ + finiteNumber slotLength , maxTxSize , raiseExUnitsToMax } diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 3f8a8e4e6..226db3901 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -56,7 +56,7 @@ import Ctl.Internal.BalanceTx.RedeemerIndex ) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) -import Ctl.Internal.Helpers (liftEither, liftM) +import Ctl.Internal.Helpers (liftEither, liftM, unsafeFromJust) import Ctl.Internal.Lens ( _body , _certs @@ -181,7 +181,7 @@ import Data.Lens.Iso.Newtype (_Newtype) import Data.List (List(Nil, Cons)) import Data.Map (Map, empty, fromFoldable, lookup, union) import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromJust, fromMaybe, maybe) +import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (over, unwrap, wrap) import Data.Set as Set import Data.Traversable (for, traverse_) @@ -594,12 +594,16 @@ processConstraint -- If i is zero we raise error, because of -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1156 if Int.toBigInt i < zero then do - let value = mkValue $ unsafePartial $ fromJust $ Int.asNegative i + let + value = + mkValue $ unsafeFromJust "processConstraints" $ Int.asNegative i _valueSpentBalancesInputs <>= provideValue value else if Int.toBigInt i == zero then do throwError $ CannotMintZero scriptHash tn else do - let value = mkValue $ unsafePartial $ fromJust $ Int.asPositive i + let + value = + mkValue $ unsafeFromJust "processConstraints" $ Int.asPositive i _valueSpentBalancesOutputs <>= provideValue value _redeemers <>= [ UnindexedRedeemer { purpose: ForMint scriptHash, datum: unwrap red } ] @@ -617,12 +621,16 @@ processConstraint -- 'valueSpentBalancesInputs'. If i is positive then new tokens are -- created which must be added to 'valueSpentBalancesOutputs'. if Int.toBigInt i < zero then do - let value = mkValue $ unsafePartial $ fromJust $ Int.asNegative i + let + value = + mkValue $ unsafeFromJust "processConstraints" $ Int.asNegative i _valueSpentBalancesInputs <>= provideValue value else if Int.toBigInt i == zero then do throwError $ CannotMintZero cs tn else do - let value = mkValue $ unsafePartial $ fromJust $ Int.asPositive i + let + value = + mkValue $ unsafeFromJust "processConstraints" $ Int.asPositive i _valueSpentBalancesOutputs <>= provideValue value unsafePartial $ _cpsTransaction <<< _body <<< _mint <>= Just mint diff --git a/src/Internal/QuickCheck.purs b/src/Internal/QuickCheck.purs deleted file mode 100644 index df96c398f..000000000 --- a/src/Internal/QuickCheck.purs +++ /dev/null @@ -1,26 +0,0 @@ --- | Utils for QuickCheck -module Ctl.Internal.QuickCheck - ( genPositive - , unMaybeGen - ) where - -import Prelude - -import Data.Maybe (Maybe, fromJust, isJust) -import Data.Ord (abs) -import Partial.Unsafe (unsafePartial) -import Test.QuickCheck.Arbitrary (arbitrary) -import Test.QuickCheck.Gen (Gen, resize, sized) - -unsafeFromJust :: forall a. Maybe a -> a -unsafeFromJust x = unsafePartial $ fromJust x - --- | Run Gen (Maybe a) until it generates Just a, and return a -unMaybeGen :: forall a. Gen (Maybe a) -> Gen a -unMaybeGen gen = do - mx <- gen - if isJust mx then pure $ unsafeFromJust mx - else sized (\n -> resize (n + 1) (unMaybeGen gen)) - -genPositive :: Gen Int -genPositive = abs <$> (arbitrary :: Gen Int) diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index a2faa9f28..c6511ae68 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -18,6 +18,7 @@ import Cardano.Types.NativeScript (NativeScript(ScriptAll)) import Cardano.Types.PublicKey as PublicKey import Cardano.Types.Transaction as Transaction import Control.Monad.Error.Class (class MonadThrow) +import Ctl.Internal.Helpers (unsafeFromJust) import Ctl.Internal.Lens (_vkeys, _witnessSet) import Ctl.Internal.NativeScripts (getMaximumSigners) import Ctl.Internal.Types.ProtocolParameters @@ -54,7 +55,7 @@ calculateMinFeeCsl (ProtocolParameters pparams) selfSigners txNoSigs = do let exUnitPricesCsl = ExUnitPrices.toCsl exUnitPrices let scriptFee = minScriptFee cslTx exUnitPricesCsl -- Ignore the overflow here: fees are much lower - pure $ wrap $ unsafePartial $ fromJust $ BigNum.add (wrap fee) + pure $ wrap $ unsafeFromJust "calculateMinFeeCsl" $ BigNum.add (wrap fee) (wrap scriptFee) -- | Adds fake signatures for each expected signature of a transaction. diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 422c7a65a..debdd0673 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -18,7 +18,7 @@ import Control.Promise (Promise, toAffE) import Ctl.Internal.Affjax (request) as Affjax import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.QueryBackend (QueryBackend(CtlBackend)) -import Ctl.Internal.Helpers (liftedM, (<>)) +import Ctl.Internal.Helpers (liftedM, unsafeFromJust, (<>)) import Ctl.Internal.Plutip.Server (withPlutipContractEnv) import Ctl.Internal.Plutip.Types (PlutipConfig) import Ctl.Internal.QueryM (ClusterSetup) @@ -249,7 +249,7 @@ testPlan opts@{ tests } rt@{ wallets } = -- Plutip in E2E tests { url, wallet: PlutipCluster } -> do let - amount = unsafePartial $ fromJust $ BigNum.mul + amount = unsafeFromJust "testPlan: integer overflow" $ BigNum.mul (BigNum.fromInt 2_000_000_000) (BigNum.fromInt 100) distr = withStakeKey privateStakeKey diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 89e57147b..12495fa54 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -51,7 +51,7 @@ import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except (throwError) import Control.Monad.Reader (asks, local) import Control.Parallel (parTraverse, parTraverse_) -import Ctl.Internal.Helpers (logWithLevel) +import Ctl.Internal.Helpers (logWithLevel, unsafeFromJust) import Ctl.Internal.Lens (_amount) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) import Ctl.Internal.Test.ContractTest (ContractTest(ContractTest)) @@ -79,7 +79,7 @@ import Data.Lens ((^.)) import Data.List (List(Cons, Nil)) import Data.List as List import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), fromJust, isNothing, maybe) +import Data.Maybe (Maybe(Nothing, Just), isNothing, maybe) import Data.Newtype (over, unwrap, wrap) import Data.String (joinWith) import Data.String.Utils (startsWith) as String @@ -314,7 +314,7 @@ fundWallets env walletsArray distrArray = runContractInEnv env $ noLogs do awaitTxConfirmed txHash let fundTotal = - Array.foldl (\x y -> unsafePartial $ fromJust $ BigNum.add x y) + Array.foldl (\x y -> unsafeFromJust "fundWallets" $ BigNum.add x y) BigNum.zero $ join distrArray -- Use log so we can see, regardless of suppression info $ joinWith " " diff --git a/src/Internal/Types/EraSummaries.purs b/src/Internal/Types/EraSummaries.purs index 252fdbc67..a49335858 100644 --- a/src/Internal/Types/EraSummaries.purs +++ b/src/Internal/Types/EraSummaries.purs @@ -20,14 +20,13 @@ import Aeson ) import Cardano.Types.Epoch (Epoch) import Cardano.Types.Slot (Slot) -import Ctl.Internal.Helpers (showWithParens) +import Ctl.Internal.Helpers (showWithParens, unsafeFromJust) import Ctl.Internal.Service.Helpers (aesonObject) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe, fromJust) +import Data.Maybe (Maybe) import Data.Newtype (class Newtype, wrap) import Data.Show.Generic (genericShow) import JS.BigInt (BigInt) -import Partial.Unsafe (unsafePartial) -------------------------------------------------------------------------------- -- EraSummaries @@ -143,7 +142,8 @@ derive newtype instance DecodeAeson RelativeTime instance EncodeAeson RelativeTime where encodeAeson (RelativeTime rt) = -- We assume the numbers are finite. - encodeAeson $ unsafePartial $ fromJust $ finiteNumber rt + encodeAeson $ unsafeFromJust "instance EncodeAeson RelativeTime" $ + finiteNumber rt instance Show RelativeTime where show (RelativeTime rt) = showWithParens "RelativeTime" rt @@ -170,7 +170,8 @@ derive newtype instance DecodeAeson SlotLength instance EncodeAeson SlotLength where encodeAeson (SlotLength sl) = -- We assume the numbers are finite. - encodeAeson $ unsafePartial $ fromJust $ finiteNumber sl + encodeAeson $ unsafeFromJust "instance EncodeAeson SlotLength" $ + finiteNumber sl instance Show SlotLength where show (SlotLength slotLength) = showWithParens "SlotLength" slotLength diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index 0e8a85357..b3d16214e 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -28,7 +28,6 @@ module Ctl.Internal.Types.Interval , after , always , before - , beginningOfTime , contains , findSlotEraSummary , findTimeEraSummary @@ -99,6 +98,7 @@ import Ctl.Internal.Helpers , liftM , mkErrorRecord , showWithParens + , unsafeFromJust ) import Ctl.Internal.QueryM.Ogmios (aesonObject, slotLengthFactor) import Ctl.Internal.Types.EraSummaries @@ -119,7 +119,7 @@ import Data.Lattice , class JoinSemilattice , class MeetSemilattice ) -import Data.Maybe (Maybe(Just, Nothing), fromJust, maybe) +import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Number (trunc, (%)) as Math import Data.Show.Generic (genericShow) @@ -127,8 +127,7 @@ import Data.Tuple (uncurry) import Data.Tuple.Nested (type (/\), (/\)) import Foreign.Object (Object) import JS.BigInt (BigInt) -import JS.BigInt (fromInt, fromNumber, fromString, toNumber) as BigInt -import Partial.Unsafe (unsafePartial) +import JS.BigInt (fromInt, fromNumber, toNumber) as BigInt import Prim.TypeError (class Warn, Text) import Test.QuickCheck (class Arbitrary, arbitrary) import Test.QuickCheck.Gen (Gen, frequency) @@ -593,14 +592,6 @@ instance Show OnchainPOSIXTimeRange where type SlotRange = Interval Slot --- | 'beginningOfTime' corresponds to the Shelley launch date --- | (2020-07-29T21:44:51Z) which is 1596059091000 in POSIX time --- | (number of milliseconds since 1970-01-01T00:00:00Z). -beginningOfTime :: BigInt -beginningOfTime = - unsafePartial fromJust $ - BigInt.fromString "1596059091000" - -- | Maximum slot (u64) maxSlot :: Slot maxSlot = wrap BigNum.maxValue @@ -643,7 +634,8 @@ instance EncodeAeson SlotToPosixTimeError where slotToPosixTimeErrorStr "endTimeLessThanTime" -- We assume the numbers are finite - [ unsafePartial $ fromJust $ finiteNumber absTime ] + [ unsafeFromJust "EncodeAeson SlotToPosixTimeError" $ finiteNumber absTime + ] encodeAeson CannotGetBigIntFromNumber = do encodeAeson $ mkErrorRecord slotToPosixTimeErrorStr @@ -936,7 +928,8 @@ posixTimeToSlot eraSummaries sysStart pt'@(POSIXTime pt) = runExcept do -- to a conversion from a Number, which may be an infinity or NaN in the -- general case. However, we know that system time cannot be either of these -- things. - let sysStartPosix = unsafePartial $ fromJust $ sysStartUnixTime sysStart + let + sysStartPosix = unsafeFromJust "posixTimeToSlot" $ sysStartUnixTime sysStart -- Ensure the time we are converting is after the system start, otherwise -- we have negative slots. unless (sysStartPosix <= pt) @@ -984,8 +977,9 @@ relTimeFromAbsTime (EraSummary { start }) at@(AbsTime absTime) = do -- This conversion cannot fail: since 'relTime' is an offset from the start of -- an era, we can't overflow the 64-bit limit. let - relTimeBi = unsafePartial $ fromJust $ BigInt.fromNumber $ Math.trunc - relTime + relTimeBi = unsafeFromJust "relTimeFromAbsTime" $ BigInt.fromNumber $ + Math.trunc + relTime pure $ wrap relTimeBi -- | Converts relative time to a relative slot (using Euclidean division) and @@ -1008,7 +1002,7 @@ relSlotFromRelTime eraSummary (RelTime relTime) = (wrap $ toBigIntUnsafe modTime) where toBigIntUnsafe :: Number -> BigInt - toBigIntUnsafe x = unsafePartial $ fromJust $ BigInt.fromNumber x + toBigIntUnsafe x = unsafeFromJust "relSlotFromRelTime" $ BigInt.fromNumber x slotFromRelSlot :: EraSummary -> RelSlot /\ ModTime -> Either PosixTimeToSlotError Slot @@ -1030,7 +1024,7 @@ slotFromRelSlot end -- Slot numbers should convert without error: they're meant to be 64-bit -- integers anyway. - let bnSlot = unsafePartial $ fromJust $ BigNum.fromBigInt slot + let bnSlot = unsafeFromJust "slotFromRelSlot" $ BigNum.fromBigInt slot -- Check we are less than the end slot, or if equal, there is no excess: unless (slot < endSlot || slot == endSlot && modTime == zero) (throwError $ EndSlotLessThanSlotOrModNonZero (wrap bnSlot) mt) diff --git a/src/Internal/Types/SystemStart.purs b/src/Internal/Types/SystemStart.purs index 72bf8d2c1..f2311ba31 100644 --- a/src/Internal/Types/SystemStart.purs +++ b/src/Internal/Types/SystemStart.purs @@ -9,18 +9,18 @@ module Ctl.Internal.Types.SystemStart import Prelude import Control.Alt ((<|>)) +import Ctl.Internal.Helpers (unsafeFromJust) import Data.DateTime (DateTime) import Data.DateTime.Instant (fromDateTime, unInstant) import Data.Either (Either, hush) import Data.Formatter.DateTime (Formatter, format, parseFormatString, unformat) import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe, fromJust) +import Data.Maybe (Maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) import Data.String (length, take) as String import JS.BigInt (BigInt) import JS.BigInt (fromNumber) as BigInt -import Partial.Unsafe (unsafePartial) newtype SystemStart = SystemStart DateTime @@ -52,7 +52,8 @@ sysStartFromOgmiosTimestamp timestamp = wrap <$> (unformatMsec <|> unformatSec) sysStartFromOgmiosTimestampUnsafe :: String -> SystemStart sysStartFromOgmiosTimestampUnsafe timestamp = - unsafePartial fromJust $ hush $ sysStartFromOgmiosTimestamp timestamp + unsafeFromJust "sysStartFromOgmiosTimestampUnsafe" $ hush $ + sysStartFromOgmiosTimestamp timestamp sysStartToOgmiosTimestamp :: SystemStart -> String sysStartToOgmiosTimestamp = @@ -61,7 +62,7 @@ sysStartToOgmiosTimestamp = mkDateTimeFormatterUnsafe :: String -> Formatter mkDateTimeFormatterUnsafe = - unsafePartial fromJust <<< hush <<< parseFormatString + unsafeFromJust "mkDateTimeFormatterUnsafe" <<< hush <<< parseFormatString ogmiosDateTimeFormatStringSec :: String ogmiosDateTimeFormatStringSec = "YYYY-MM-DDTHH:mm:ss" diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index baf8d165a..16d43bb31 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -66,9 +66,12 @@ mkWalletAff walletExtension = do $ liftEffect (isWalletAvailable walletExtension) GenericCip30 <$> do mkCip30WalletAff =<< do - Cip30.enable (walletExtensionToName walletExtension) [] `catchError` \err -> do - liftEffect $ Console.error $ "Wallet extension " <> walletExtensionToName walletExtension <> " is not available!" - throwError err + Cip30.enable (walletExtensionToName walletExtension) [] `catchError` + \err -> do + liftEffect $ Console.error $ "Wallet extension " + <> walletExtensionToName walletExtension + <> " is not available!" + throwError err where retryNWithIntervalUntil n ms mBool = if n == zero then pure unit diff --git a/templates/ctl-scaffold/Makefile b/templates/ctl-scaffold/Makefile index 64274909f..0e6deadf4 100644 --- a/templates/ctl-scaffold/Makefile +++ b/templates/ctl-scaffold/Makefile @@ -58,9 +58,6 @@ webpack-serve: spago-build create-bundle-entrypoint create-html-entrypoint --port ${serve-port} \ -o dist/ --env entry=./dist/entrypoint.js -run-build: - @${ps-bundle} && BROWSER_RUNTIME=1 webpack --mode=production - check-format: @purs-tidy check ${ps-sources} @prettier --loglevel warn -c ${js-sources} From e7d257886cb8c6ebaee4a10e951b82041ebf6015 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 30 Apr 2024 00:00:24 +0400 Subject: [PATCH 115/373] Rerun spago2nix --- packages.dhall | 2 +- spago-packages.nix | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages.dhall b/packages.dhall index 7962f34f3..b1adb737b 100644 --- a/packages.dhall +++ b/packages.dhall @@ -407,7 +407,7 @@ let additions = , "transformers" ] , repo = "https://github.com/mlabs-haskell/purescript-mote-testplan" - , version = "d1c93e08ef09f5427b460f396b89da7255f8af52" + , version = "v1.0.0" } } diff --git a/spago-packages.nix b/spago-packages.nix index 151fc4a43..8bc54be86 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -235,7 +235,7 @@ let "cardano-plutus-data-schema" = pkgs.stdenv.mkDerivation { name = "cardano-plutus-data-schema"; - version = "eb0bb78927c50c4bee364e932c9fa8cf94546191"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema"; rev = "eb0bb78927c50c4bee364e932c9fa8cf94546191"; @@ -847,11 +847,11 @@ let "mote-testplan" = pkgs.stdenv.mkDerivation { name = "mote-testplan"; - version = "d1c93e08ef09f5427b460f396b89da7255f8af52"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-mote-testplan"; - rev = "d1c93e08ef09f5427b460f396b89da7255f8af52"; - sha256 = "1317v612hq1hlw3m6vvzjfpg3vzm4pdlpix6z4z221cpgaga4i2r"; + rev = "3d56986a32134fbd675e42ef6b6f55dc91ad678a"; + sha256 = "11vivzi1bs9mc8hx4v4zarb9r7x47zm6m6z1xvcn228m7lr69csy"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 44573ef7c69ff961e2764f149efb0ba39ebee723 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 30 Apr 2024 16:10:36 +0400 Subject: [PATCH 116/373] Apply suggestions from #1590 --- README.md | 3 ++- doc/test-plan.md | 2 -- src/Contract/Transaction.purs | 6 ++++- src/Internal/BalanceTx/RedeemerIndex.purs | 14 ++++------ src/Internal/Lens.purs | 32 ++++++++++++++++++----- src/Internal/Types/ScriptLookups.purs | 2 +- 6 files changed, 39 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index f6e53b492..fa05ef1eb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -# cardano-transaction-lib +# cardano-transaction-lib [![cardano-purescript](https://img.shields.io/badge/cardano--purescript?logo=cardano&logoColor=white&label=cardano-purescript&labelColor=blue&color=blue)](https://github.com/klntsky/cardano-purescript) + [![Hercules-ci][herc badge]][herc link] [![Cachix Cache][cachix badge]][cachix link] diff --git a/doc/test-plan.md b/doc/test-plan.md index 8cfb03bcd..27c312d7f 100644 --- a/doc/test-plan.md +++ b/doc/test-plan.md @@ -48,8 +48,6 @@ CTL's primary user interface is its constraints and lookups API, modeled after t - [x] `mustIncludeDatum` - [x] `mustPayToPubKeyWithDatum` - [x] `mustPayToPubKeyAddressWithDatum` -- [x] `mustProduceAtLeastTotal`. Also implies - - [x] `mustProduceAtLeast` - [x] `mustSatisfyAnyOf` - [x] `mustSpendAtLeastTotal`. Also implies - [x] `mustSpendAtLeast` diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index d5452213e..1c038632f 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -106,7 +106,8 @@ import Ctl.Internal.Contract.QueryHandle.Error import Ctl.Internal.Contract.Sign (signTransaction) import Ctl.Internal.Contract.Sign (signTransaction) as X import Ctl.Internal.Lens - ( _amount + ( _address + , _amount , _auxiliaryData , _auxiliaryDataHash , _body @@ -130,6 +131,9 @@ import Ctl.Internal.Lens , _scriptDataHash , _scriptRef , _totalCollateral + , _ttl + , _update + , _validityStartInterval , _vkeys , _withdrawals , _witnessSet diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index e6125f915..1b4182808 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -24,7 +24,6 @@ import Prelude import Aeson (class EncodeAeson, encodeAeson) import Cardano.Types ( Certificate - , ExUnits(ExUnits) , Redeemer(Redeemer) , RewardAddress , ScriptHash @@ -32,28 +31,25 @@ import Cardano.Types , TransactionBody(TransactionBody) ) import Cardano.Types.BigNum as BigNum +import Cardano.Types.ExUnits as ExUnits import Cardano.Types.PlutusData (PlutusData) import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) import Cardano.Types.TransactionInput (TransactionInput) +import Ctl.Internal.Lens (_redeemers, _witnessSet) import Data.Array (findIndex) import Data.Either (Either, note) import Data.Generic.Rep (class Generic) import Data.Lens ((.~)) -import Data.Lens.Iso.Newtype (_Newtype) -import Data.Lens.Record (prop) import Data.Map as Map import Data.Maybe (Maybe, fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Set as Set import Data.Show.Generic (genericShow) import Data.Traversable (for) -import Type.Proxy (Proxy(Proxy)) attachRedeemers :: Array Redeemer -> Transaction -> Transaction attachRedeemers redeemers = - _Newtype <<< prop (Proxy :: Proxy "witnessSet") - <<< _Newtype - <<< prop (Proxy :: Proxy "redeemers") .~ redeemers + _witnessSet <<< _redeemers .~ redeemers attachIndexedRedeemers :: Array IndexedRedeemer -> Transaction -> Transaction attachIndexedRedeemers = attachRedeemers <<< map indexedRedeemerToRedeemer @@ -87,7 +83,7 @@ unindexedRedeemerToRedeemer (UnindexedRedeemer { datum, purpose }) = { tag: redeemerPurposeToRedeemerTag purpose , "data": datum , index: BigNum.zero - , exUnits: ExUnits { mem: BigNum.zero, steps: BigNum.zero } + , exUnits: ExUnits.empty } -- | A redeemer with an index, but without `ExUnits` @@ -112,7 +108,7 @@ indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = { tag , index: BigNum.fromInt index , data: datum - , exUnits: ExUnits { mem: BigNum.zero, steps: BigNum.zero } + , exUnits: ExUnits.empty } -- | Contains a value redeemer corresponds to, different for each possible diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index cb435379a..94a9bf786 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -1,16 +1,20 @@ module Ctl.Internal.Lens - ( _amount + ( _address + , _amount , _auxiliaryData , _auxiliaryDataHash , _body , _certs , _collateral , _collateralReturn + , _datum , _fee + , _input , _inputs , _isValid , _mint , _networkId + , _output , _outputs , _plutusData , _plutusScripts @@ -18,20 +22,21 @@ module Ctl.Internal.Lens , _referenceInputs , _requiredSigners , _scriptDataHash + , _scriptRef , _totalCollateral + , _ttl + , _update + , _validityStartInterval , _vkeys , _withdrawals , _witnessSet - , _datum - , _scriptRef - , _input - , _output ) where import Prelude import Cardano.Types - ( AuxiliaryData + ( Address + , AuxiliaryData , AuxiliaryDataHash , Certificate , Coin @@ -44,12 +49,14 @@ import Cardano.Types , Redeemer , ScriptDataHash , ScriptRef + , Slot , Transaction , TransactionBody , TransactionInput , TransactionOutput , TransactionUnspentOutput , TransactionWitnessSet + , Update , Value , Vkeywitness ) @@ -119,6 +126,16 @@ _mint = _Newtype <<< prop (Proxy :: Proxy "mint") _auxiliaryDataHash :: Lens' TransactionBody (Maybe AuxiliaryDataHash) _auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") +_ttl :: Lens' TransactionBody (Maybe Slot) +_ttl = _Newtype <<< prop (Proxy :: Proxy "ttl") + +_update :: Lens' TransactionBody (Maybe Update) +_update = _Newtype <<< prop (Proxy :: Proxy "update") + +_validityStartInterval :: Lens' TransactionBody (Maybe Slot) +_validityStartInterval = _Newtype <<< prop + (Proxy :: Proxy "validityStartInterval") + -- TransactionUnspentOutput _output :: Lens' TransactionUnspentOutput TransactionOutput @@ -138,6 +155,9 @@ _scriptRef = _Newtype <<< prop (Proxy :: Proxy "scriptRef") _datum :: Lens' TransactionOutput (Maybe OutputDatum) _datum = _Newtype <<< prop (Proxy :: Proxy "datum") +_address :: Lens' TransactionOutput Address +_address = _Newtype <<< prop (Proxy :: Proxy "address") + -- TransactionWitnessSet _redeemers :: Lens' TransactionWitnessSet (Array Redeemer) diff --git a/src/Internal/Types/ScriptLookups.purs b/src/Internal/Types/ScriptLookups.purs index 2a97f56d8..26bd89ad7 100644 --- a/src/Internal/Types/ScriptLookups.purs +++ b/src/Internal/Types/ScriptLookups.purs @@ -53,7 +53,7 @@ newtype ScriptLookups = ScriptLookups , nativeMintingPolicies :: Array NativeScript , txOutputs :: UtxoMap , scripts :: Array PlutusScript -- Script validators - , datums :: Map DataHash PlutusData -- Datums that we might need + , datums :: Map DataHash PlutusData -- FIXME there's currently no way to set this field -- See https://github.com/Plutonomicon/cardano-transaction-lib/issues/569 , paymentPubKeyHashes :: From c45535e54c54084d33c3d217ec2cdf60d4839a49 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 30 Apr 2024 16:22:35 +0400 Subject: [PATCH 117/373] Update the template --- templates/ctl-scaffold/packages.dhall | 18 +++++----- templates/ctl-scaffold/spago-packages.nix | 40 +++++++++++------------ 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 092484f9d..b69e55cdc 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -144,7 +144,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-aeson.git" - , version = "v2.0.0" + , version = "v2.0.1" } , bignumber = { dependencies = @@ -202,7 +202,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git" - , version = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1" + , version = "v2.0.0" } , js-bigints = { dependencies = [ "integers", "maybe", "prelude" ] @@ -261,7 +261,7 @@ let additions = , "strings" ] , repo = "https://github.com/mlabs-haskell/purescript-bytearrays" - , version = "e3991d562a04d8825472551d91a06407ad9c9112" + , version = "v1.0.0" } , cardano-serialization-lib = { dependencies = @@ -280,13 +280,13 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "c66afbb9c572db096690ec1dd786c9ec96105c0d" + , version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema" - , version = "eb0bb78927c50c4bee364e932c9fa8cf94546191" + , version = "v1.0.0" } , plutus-types = { dependencies = @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "64652087362a8591ae0a8d73a2f4857762002606" + , version = "v1.0.0" } , cardano-message-signing = { dependencies = @@ -375,7 +375,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-message-signing" - , version = "8078bd9ce339262f29155a80572e8c44334aa801" + , version = "v1.0.0" } , cardano-hd-wallet = { dependencies = @@ -388,7 +388,7 @@ let additions = , "uint" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" - , version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9" + , version = "v1.0.0" } , mote-testplan = { dependencies = @@ -407,7 +407,7 @@ let additions = , "transformers" ] , repo = "https://github.com/mlabs-haskell/purescript-mote-testplan" - , version = "d1c93e08ef09f5427b460f396b89da7255f8af52" + , version = "v1.0.0" } , cardano-transaction-lib = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 86702a48f..c01b1351d 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -7,11 +7,11 @@ let "aeson" = pkgs.stdenv.mkDerivation { name = "aeson"; - version = "v2.0.0"; + version = "v2.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-aeson.git"; - rev = "4fddd518a143de563299d484272a0ef18daa7dcd"; - sha256 = "1bz1z9l6nwf5yk45sbbjllmqvci0n1l92cvk3lgmni19g9silbrl"; + rev = "ac674dda5cf58c6544cb361a208bced4d06ee93a"; + sha256 = "1zx7d96rz86axqz8n28j5d4lkgx48via0nw9c7xid1z1pz215zsd"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -199,7 +199,7 @@ let "bytearrays" = pkgs.stdenv.mkDerivation { name = "bytearrays"; - version = "e3991d562a04d8825472551d91a06407ad9c9112"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-bytearrays"; rev = "e3991d562a04d8825472551d91a06407ad9c9112"; @@ -211,7 +211,7 @@ let "cardano-hd-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-hd-wallet"; - version = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet"; rev = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; @@ -223,11 +223,11 @@ let "cardano-message-signing" = pkgs.stdenv.mkDerivation { name = "cardano-message-signing"; - version = "8078bd9ce339262f29155a80572e8c44334aa801"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-message-signing"; - rev = "8078bd9ce339262f29155a80572e8c44334aa801"; - sha256 = "0ay0v79ak15azk9sm4xv2fv3g3f6h89m4xm6c4vazy7qks2ap2vh"; + rev = "97f6f97a258ae3490df0be6b39fa6769677aa04f"; + sha256 = "1ns7m9awn4w5amvf9ffldxk7acm73fg8clw4hja4nnl61mskqr5w"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -235,7 +235,7 @@ let "cardano-plutus-data-schema" = pkgs.stdenv.mkDerivation { name = "cardano-plutus-data-schema"; - version = "eb0bb78927c50c4bee364e932c9fa8cf94546191"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-plutus-data-schema"; rev = "eb0bb78927c50c4bee364e932c9fa8cf94546191"; @@ -247,11 +247,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "c66afbb9c572db096690ec1dd786c9ec96105c0d"; + version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "c66afbb9c572db096690ec1dd786c9ec96105c0d"; - sha256 = "1pi5q45nx1varl2pjpd60vfxv2cjvlg1ms7xnsfwb2acl216lmr5"; + rev = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; + sha256 = "1ikz6j3jvls3cvl6znrw55f59abzdaf7ggd2x7j3f81m5cvkxggr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -271,11 +271,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "64652087362a8591ae0a8d73a2f4857762002606"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "64652087362a8591ae0a8d73a2f4857762002606"; - sha256 = "0b2mbvd9v6fvwpp155hh6yh8jb68xgx1gqg4xi3h3vhgqxyb45qq"; + rev = "effe2d08e66d54b3d4f695ea06130f1d8bdb2cdb"; + sha256 = "1bqflb6yvyq1jn07zjs5zdsxw1ar84s1dsw96lb6v8g8gn42y14g"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -859,11 +859,11 @@ let "mote-testplan" = pkgs.stdenv.mkDerivation { name = "mote-testplan"; - version = "d1c93e08ef09f5427b460f396b89da7255f8af52"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-mote-testplan"; - rev = "d1c93e08ef09f5427b460f396b89da7255f8af52"; - sha256 = "1317v612hq1hlw3m6vvzjfpg3vzm4pdlpix6z4z221cpgaga4i2r"; + rev = "3d56986a32134fbd675e42ef6b6f55dc91ad678a"; + sha256 = "11vivzi1bs9mc8hx4v4zarb9r7x47zm6m6z1xvcn228m7lr69csy"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -883,10 +883,10 @@ let "noble-secp256k1" = pkgs.stdenv.mkDerivation { name = "noble-secp256k1"; - version = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-noble-secp256k1.git"; - rev = "0b8b0e1b8f2394860fc0ac2d4e5e044edbf440a1"; + rev = "32a9b39f1734fe0d809b3a3b4854b9e4ad6056f1"; sha256 = "0hrf7vgf2mh91803l4drygg6srmkg765x4gk6i6zqyr6398fyxw6"; }; phases = "installPhase"; From 2a12b3111fee72a8d86f84217cb1687cee67432b Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 30 Apr 2024 16:27:04 +0400 Subject: [PATCH 118/373] Remove dead link --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index fa05ef1eb..bc10fb222 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,6 @@ Please explore our documentation to discover how to use CTL, how to set up its r - [Testing on local testnets with Plutip](./doc/plutip-testing.md) - [End-to-end dApp testing with headless browsers](./doc/e2e-testing.md) - [Assertion utilities for testing](./doc/test-utils.md) -- [CIP-25 NFT standard support](./doc/cip-25-nfts.md) - [Transaction balancing](./doc/balancing.md) - [Transaction chaining](./doc/tx-chaining.md) - [Ada staking support](./doc/staking.md) From 5de12f9bb5d65827f401b5806ec8005f3e4b22fb Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 5 May 2024 22:34:16 +0400 Subject: [PATCH 119/373] - Update the CHANGELOG (note on plutus conversions) - update dependency versions --- CHANGELOG.md | 2 +- packages.dhall | 4 ++-- spago-packages.nix | 12 ++++++------ templates/ctl-scaffold/packages.dhall | 4 ++-- templates/ctl-scaffold/spago-packages.nix | 12 ++++++------ 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b052ed474..05e7630ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,7 +75,7 @@ See the [cardano-purescript repo](https://github.com/klntsky/cardano-purescript) These packages maintain their own public API, so the interfaces you should use are not necessarily namespaced under `Contract.*` anymore. E.g. `Cardano.Types.*` from `purescript-cardano-types` is public. -Starting from this version, CTL does not use Plutus-domain types anymore. There are no more Plutus domain <-> Cardano domain conversion functions. This change comes with some downsides (e.g. the need to provide NetworkId in `Address`es), but the benefit of not caring about conversions for basic functionality will hopefully be more noticeable. +Starting from this version, CTL does not use Plutus-domain types anymore. This change comes with some downsides (e.g. the need to provide NetworkId in `Address`es), but the benefit of not caring about conversions for basic functionality will hopefully be more noticeable. The only case when a conversion is needed is when the developer wants to use [`purescript-plutus-types`](https://github.com/mlabs-haskell/purescript-plutus-types), which is a package that offers `PlutusData` encodings compatible with Plutus. Its main purpose is to be used when there is a need to apply arguments to parametrized scripts. ### Added diff --git a/packages.dhall b/packages.dhall index b1adb737b..459932df5 100644 --- a/packages.dhall +++ b/packages.dhall @@ -316,7 +316,7 @@ let additions = , "tuples" ] , repo = "https://github.com/mlabs-haskell/purescript-plutus-types" - , version = "143902b37e218d843b9da473553ecf50686934cb" + , version = "v1.0.1" } , cardano-types = { dependencies = @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v1.0.0" + , version = "v1.0.1" } , cardano-message-signing = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 8bc54be86..081d8d789 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -259,11 +259,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v1.0.0"; + version = "v1.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "effe2d08e66d54b3d4f695ea06130f1d8bdb2cdb"; - sha256 = "1bqflb6yvyq1jn07zjs5zdsxw1ar84s1dsw96lb6v8g8gn42y14g"; + rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; + sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1171,11 +1171,11 @@ let "plutus-types" = pkgs.stdenv.mkDerivation { name = "plutus-types"; - version = "143902b37e218d843b9da473553ecf50686934cb"; + version = "v1.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-plutus-types"; - rev = "143902b37e218d843b9da473553ecf50686934cb"; - sha256 = "116avsdgw6w392ip89lgcjcpqqznsr0h0s0gq335wakvpa6q45yf"; + rev = "dfec05e2dee79ee8dafad3d698906966ea6628bb"; + sha256 = "0milz16kdl1pd0i6b8ibxpacdd2r7p6n96gl1g6h41v9bccs69p9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index b69e55cdc..8513539b1 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -316,7 +316,7 @@ let additions = , "tuples" ] , repo = "https://github.com/mlabs-haskell/purescript-plutus-types" - , version = "143902b37e218d843b9da473553ecf50686934cb" + , version = "v1.0.1" } , cardano-types = { dependencies = @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v1.0.0" + , version = "v1.0.1" } , cardano-message-signing = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index c01b1351d..4797c481b 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -271,11 +271,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v1.0.0"; + version = "v1.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "effe2d08e66d54b3d4f695ea06130f1d8bdb2cdb"; - sha256 = "1bqflb6yvyq1jn07zjs5zdsxw1ar84s1dsw96lb6v8g8gn42y14g"; + rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; + sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1183,11 +1183,11 @@ let "plutus-types" = pkgs.stdenv.mkDerivation { name = "plutus-types"; - version = "143902b37e218d843b9da473553ecf50686934cb"; + version = "v1.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-plutus-types"; - rev = "143902b37e218d843b9da473553ecf50686934cb"; - sha256 = "116avsdgw6w392ip89lgcjcpqqznsr0h0s0gq335wakvpa6q45yf"; + rev = "dfec05e2dee79ee8dafad3d698906966ea6628bb"; + sha256 = "0milz16kdl1pd0i6b8ibxpacdd2r7p6n96gl1g6h41v9bccs69p9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 2fcd8ada2d656f66a747331129c03c84a4ca00f1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 6 May 2024 02:20:11 +0400 Subject: [PATCH 120/373] - Release v8. - Add more docs. --- CHANGELOG.md | 54 ++++++++++++++++++++++++++++++----------------- README.md | 2 ++ doc/blockfrost.md | 1 + doc/keydir.md | 5 +++++ doc/production.md | 48 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 91 insertions(+), 19 deletions(-) create mode 100644 doc/production.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 05e7630ee..1b5ae290e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,61 +9,76 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [[Unreleased]](#unreleased) - [Added](#added) + - [Removed](#removed) - [Changed](#changed) - [Fixed](#fixed) - - [Removed](#removed) -- [[v7.0.0]](#v700) +- [[v8.0.0]](#v800) - [Added](#added-1) - [Changed](#changed-1) - [Fixed](#fixed-1) - [Removed](#removed-1) -- [[v6.0.0]](#v600) +- [[v7.0.0]](#v700) - [Added](#added-2) - [Changed](#changed-2) - [Fixed](#fixed-2) - [Removed](#removed-2) -- [[v5.0.0]](#v500) +- [[v6.0.0]](#v600) - [Added](#added-3) - [Changed](#changed-3) - - [Removed](#removed-3) - [Fixed](#fixed-3) - - [Runtime Dependencies](#runtime-dependencies) -- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - - [Fixed](#fixed-4) -- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Removed](#removed-3) +- [[v5.0.0]](#v500) - [Added](#added-4) -- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - - [Added](#added-5) - [Changed](#changed-4) - [Removed](#removed-4) + - [Fixed](#fixed-4) + - [Runtime Dependencies](#runtime-dependencies) +- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - [Fixed](#fixed-5) - - [Runtime Dependencies](#runtime-dependencies-1) -- [[3.0.0] - 2022-11-21](#300---2022-11-21) +- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Added](#added-5) +- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - [Added](#added-6) - [Changed](#changed-5) - [Removed](#removed-5) - [Fixed](#fixed-6) - - [Runtime Dependencies](#runtime-dependencies-2) -- [[2.0.0] - 2022-09-12](#200---2022-09-12) + - [Runtime Dependencies](#runtime-dependencies-1) +- [[3.0.0] - 2022-11-21](#300---2022-11-21) - [Added](#added-7) - [Changed](#changed-6) - [Removed](#removed-6) - [Fixed](#fixed-7) -- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Runtime Dependencies](#runtime-dependencies-2) +- [[2.0.0] - 2022-09-12](#200---2022-09-12) - [Added](#added-8) - - [Removed](#removed-7) - [Changed](#changed-7) + - [Removed](#removed-7) - [Fixed](#fixed-8) -- [[1.1.0] - 2022-06-30](#110---2022-06-30) +- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Added](#added-9) + - [Removed](#removed-8) + - [Changed](#changed-8) - [Fixed](#fixed-9) -- [[1.0.1] - 2022-06-17](#101---2022-06-17) +- [[1.1.0] - 2022-06-30](#110---2022-06-30) - [Fixed](#fixed-10) +- [[1.0.1] - 2022-06-17](#101---2022-06-17) + - [Fixed](#fixed-11) - [[1.0.0] - 2022-06-10](#100---2022-06-10) ## [Unreleased] +### Added + +### Removed + +### Changed + +### Fixed + +## [v8.0.0] + In this version, we've refactored CTL and split it into multiple reusable sub-packages, most notably: - this package @@ -200,6 +215,7 @@ Starting from this version, CTL does not use Plutus-domain types anymore. This c - `getTxFinalFee` - `Contract.Numeric.NatRatio` - the module was not used in the library. - `Contract.AssocMap` - use `Cardano.Plutus.Types.Map` from [`purescript-plutus-types`](https://github.com/mlabs-haskell/purescript-plutus-types) +- CIP-25 metadata machinery (we need to keep the API surface thin for CTL) ## [v7.0.0] diff --git a/README.md b/README.md index bc10fb222..8b14c7907 100644 --- a/README.md +++ b/README.md @@ -44,12 +44,14 @@ Please explore our documentation to discover how to use CTL, how to set up its r - [Testing on local testnets with Plutip](./doc/plutip-testing.md) - [End-to-end dApp testing with headless browsers](./doc/e2e-testing.md) - [Assertion utilities for testing](./doc/test-utils.md) + - [Using a directory with private keys to run tests](./doc/keydir.md) - [Transaction balancing](./doc/balancing.md) - [Transaction chaining](./doc/tx-chaining.md) - [Ada staking support](./doc/staking.md) - [Key management](./doc/key-management.md) - [SECP256k1 support (CIP-49)](./doc/secp256k1-support.md) - [Custom query layers](./doc/custom-query-layers.md) +- [Going to production with CTL](./doc/production.md) - [FAQs](./doc/faq.md) - [Feature overview video](./doc/video-intro.md) - [Comparison with other frameworks (Lucid)](./doc/comparisons.md) diff --git a/doc/blockfrost.md b/doc/blockfrost.md index 8239f4fa1..66e4aa314 100644 --- a/doc/blockfrost.md +++ b/doc/blockfrost.md @@ -210,4 +210,5 @@ This function is never used for constraints resolution, the only way to make it ## See also +- [key-directory test suite](./keydir.md) that is used under the hood by `executeContractTestsWithBlockfrost`. This test machinery can be used with any runtime backend, not just Blockfrost. - [Testing utilities for CTL](./test-utils.md). diff --git a/doc/keydir.md b/doc/keydir.md index 8ef40e9a5..b933f02ba 100644 --- a/doc/keydir.md +++ b/doc/keydir.md @@ -7,6 +7,7 @@ - [Generating private keys](#generating-private-keys) - [Funding your address](#funding-your-address) - [Setting up a directory for temporary keys](#setting-up-a-directory-for-temporary-keys) + - [See also](#see-also) @@ -73,6 +74,10 @@ directories. We don't dispose of the keys automatically, as there may be some on-chain state that's uniquely tied to them, which the user might not want to lose access to. +### See also + +- [Blockfrost-powered test suite](./blockfrost.md) for an example of how to use key-directory-based test suite with Blockfrost. + [mote]: https://github.com/garyb/purescript-mote [cardano-handbook-keys-addresses]: https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses [ctl-generate-keys]: https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/scripts/generate-keys.sh diff --git a/doc/production.md b/doc/production.md new file mode 100644 index 000000000..c450a32bb --- /dev/null +++ b/doc/production.md @@ -0,0 +1,48 @@ + + + +- [Going to production with CTL](#going-to-production-with-ctl) + - [Setup security](#setup-security) + - [Achieving best performance](#achieving-best-performance) + - [Balancing](#balancing) + - [Monitoring](#monitoring) + + + +# Going to production with CTL + +## Setup security + +Ensure that: + +- You have thoroughly tested your dApp. Your tests should be based on security properties you want to maintain (who should/shouldn't be able to do X? under what conditions?). Write these properties down and review them as well. +- There are no private keys in the bundles +- Your private keys are stored securely (e.g. not served by the webserver) +- If you have private keys that are used specifically to control/shut down the system in case of a disaster, you are not storing them on the same server as the app. +- Blockfrost keys are not exposed to the user. If you run with Blockfrost, you have to set up a reverse proxy that attaches the project ID header. + +## Achieving best performance + +Most likely, you will need a custom query layer to scale your dApp. Kupo is not very performant when it comes to handling a lot of queries on mainnet if it is configured to index the whole blockchain: [it has a slightly different purpose](https://github.com/CardanoSolutions/kupo/issues/146#issuecomment-1810571796). + +The best approach would be to maintain your dApp state by folding incoming transactions (while handling rollbacks). Consider using [Ogmios chain-sync API](https://ogmios.dev/mini-protocols/local-chain-sync/). + +[Here's how to plug your own query layer as a "provider" into CTL](./custom-query-layers.md). + +## Balancing + +Use multiple backend instances if you have a lot of users, but avoid switching between different instances for a single user: CTL mildly relies on consistency of the state. + +How many instances to run? Compute the number based on the response times of your query layer and expected number of users. + +## Monitoring + +Set up monitoring and alerts for your backend services. + +Ensure that you actively check the following: + +- Disk space +- RAM usage +- Rate of failed requests to the query layer backend (e.g. kupo returns 503 when overloaded) +- Average response time +- Usage limits for Blockfrost From 7ebf75fd823fda8838e1968e340aa961d0ea513a Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 6 May 2024 20:00:34 +0400 Subject: [PATCH 121/373] Simplify TxConstraints type --- src/Contract/TxConstraints.purs | 3 +- src/Internal/ProcessConstraints.purs | 5 +-- src/Internal/Test/KeyDir.purs | 3 +- src/Internal/Types/TxConstraints.purs | 65 ++++++++------------------- 4 files changed, 22 insertions(+), 54 deletions(-) diff --git a/src/Contract/TxConstraints.purs b/src/Contract/TxConstraints.purs index cd87d375e..dc7c9288a 100644 --- a/src/Contract/TxConstraints.purs +++ b/src/Contract/TxConstraints.purs @@ -7,7 +7,7 @@ import Ctl.Internal.Types.TxConstraints , InputConstraint(InputConstraint) , InputWithScriptRef(RefInput, SpendInput) , OutputConstraint(OutputConstraint) - , TxConstraints(TxConstraints) + , TxConstraints , mustBeSignedBy , mustDelegateStakeNativeScript , mustDelegateStakePlutusScript @@ -55,5 +55,4 @@ import Ctl.Internal.Types.TxConstraints , mustWithdrawStakeNativeScript , mustWithdrawStakePlutusScript , mustWithdrawStakePubKey - , singleton ) as TxConstraints diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 226db3901..dab93d21c 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -166,7 +166,7 @@ import Ctl.Internal.Types.TxConstraints , MustValidateIn , MustIncludeDatum ) - , TxConstraints(TxConstraints) + , TxConstraints , utxoWithScriptRef ) import Ctl.Internal.Types.Val as Val @@ -207,8 +207,7 @@ import Prelude (join) as Bind processLookupsAndConstraints :: TxConstraints -> ConstraintsM (Either MkUnbalancedTxError Unit) -processLookupsAndConstraints - (TxConstraints { constraints }) = runExceptT do +processLookupsAndConstraints constraints = runExceptT do -- Hash all the MintingPolicys and Scripts beforehand. These maps are lost -- after we `runReaderT`, unlike Plutus that has a `Map` instead of `Array`. lookups <- use _lookups <#> unwrap diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 12495fa54..a623be215 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -68,10 +68,9 @@ import Ctl.Internal.Types.TxConstraints , mustBeSignedBy , mustPayToPubKeyAddress , mustSpendPubKeyOutput - , singleton ) import Ctl.Internal.Wallet.Key (KeyWallet) -import Data.Array (catMaybes) +import Data.Array (catMaybes, singleton) import Data.Array as Array import Data.Either (Either(Right, Left), hush) import Data.Foldable (fold, sum) diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index de6d26869..141a42b6f 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -35,7 +35,7 @@ module Ctl.Internal.Types.TxConstraints , MustWithdrawStakeNativeScript , MustWithdrawStakePubKey ) - , TxConstraints(TxConstraints) + , TxConstraints , mustBeSignedBy , mustDelegateStakeNativeScript , mustDelegateStakePlutusScript @@ -83,7 +83,6 @@ module Ctl.Internal.Types.TxConstraints , mustWithdrawStakeNativeScript , mustWithdrawStakePlutusScript , mustWithdrawStakePubKey - , singleton , utxoWithScriptRef ) where @@ -119,6 +118,8 @@ import Data.Foldable (class Foldable) import Data.Generic.Rep (class Generic) import Data.Map (Map) import Data.Map (singleton) as Map +import Data.Array (singleton) as X +import Data.Array (singleton) import Data.Maybe (Maybe(Just, Nothing)) import Data.Monoid (guard) import Data.Newtype (class Newtype, over, unwrap) @@ -247,28 +248,12 @@ instance Show OutputConstraint where show = genericShow -- | Restrictions placed on the allocation of funds to outputs of transactions. -newtype TxConstraints = TxConstraints - { constraints :: Array TxConstraint - } - -derive instance Generic TxConstraints _ -derive instance Newtype TxConstraints _ -derive newtype instance Eq TxConstraints --- Array concatenation allowing duplicates like Plutus -derive newtype instance Semigroup TxConstraints -derive newtype instance Monoid TxConstraints - -instance Show TxConstraints where - show = genericShow +type TxConstraints = Array TxConstraint -------------------------------------------------------------------------------- -- Helpers -------------------------------------------------------------------------------- -singleton - :: TxConstraint -> TxConstraints -singleton a = over TxConstraints _ { constraints = Array.singleton a } mempty - -- | `mustValidateIn r` requires the transaction's time range to be contained -- | in `r`. mustValidateIn @@ -421,8 +406,7 @@ mustPayToScriptWithScriptRef vh dt dtp scriptRef vl = -- | Note that the provided reference script does *not* necessarily need to -- | control the spending of the output, i.e. both scripts can be different. mustPayToScriptAddressWithScriptRef - :: forall (i :: Type) (o :: Type) - . ScriptHash + :: ScriptHash -> Credential -> PlutusData -> DatumPresence @@ -434,16 +418,14 @@ mustPayToScriptAddressWithScriptRef vh credential dt dtp scriptRef vl = <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) mustPayToNativeScript - :: forall (i :: Type) (o :: Type) - . ScriptHash + :: ScriptHash -> Value -> TxConstraints mustPayToNativeScript nsHash vl = singleton (MustPayToNativeScript nsHash Nothing vl) mustPayToNativeScriptAddress - :: forall (i :: Type) (o :: Type) - . ScriptHash + :: ScriptHash -> Credential -> Value -> TxConstraints @@ -458,8 +440,7 @@ mustMintValue = mustMintValueWithRedeemer RedeemerDatum.unit -- | Mint the given `Value` by accessing non-Ada assets. -- | The amount to mint must not be zero. mustMintValueWithRedeemer - :: forall (i :: Type) (o :: Type) - . RedeemerDatum + :: RedeemerDatum -> Mint -> TxConstraints mustMintValueWithRedeemer redeemer = @@ -481,8 +462,7 @@ mustMintCurrency mph = mustMintCurrencyWithRedeemer mph RedeemerDatum.unit mustMintCurrencyUsingNativeScript - :: forall (i :: Type) (o :: Type) - . NativeScript + :: NativeScript -> AssetName -> Int.Int -> TxConstraints @@ -578,16 +558,14 @@ mustRegisterStakeScript mustRegisterStakeScript = singleton <<< MustRegisterStakeScript mustDeregisterStakePlutusScript - :: forall (i :: Type) (o :: Type) - . PlutusScript + :: PlutusScript -> RedeemerDatum -> TxConstraints mustDeregisterStakePlutusScript sv = singleton <<< MustDeregisterStakePlutusScript sv mustDeregisterStakeNativeScript - :: forall (i :: Type) (o :: Type) - . NativeScript + :: NativeScript -> TxConstraints mustDeregisterStakeNativeScript = singleton <<< MustDeregisterStakeNativeScript @@ -596,23 +574,20 @@ mustRegisterPool mustRegisterPool = singleton <<< MustRegisterPool mustRetirePool - :: forall (i :: Type) (o :: Type) - . PoolPubKeyHash + :: PoolPubKeyHash -> Epoch -> TxConstraints mustRetirePool poolPubKeyHash = singleton <<< MustRetirePool poolPubKeyHash mustDelegateStakePubKey - :: forall (i :: Type) (o :: Type) - . StakePubKeyHash + :: StakePubKeyHash -> PoolPubKeyHash -> TxConstraints mustDelegateStakePubKey spkh ppkh = singleton $ MustDelegateStakePubKey spkh ppkh mustDelegateStakePlutusScript - :: forall (i :: Type) (o :: Type) - . PlutusScript + :: PlutusScript -> RedeemerDatum -> PoolPubKeyHash -> TxConstraints @@ -620,8 +595,7 @@ mustDelegateStakePlutusScript sv redeemer ppkh = singleton $ MustDelegateStakePlutusScript sv redeemer ppkh mustDelegateStakeNativeScript - :: forall (i :: Type) (o :: Type) - . NativeScript + :: NativeScript -> PoolPubKeyHash -> TxConstraints mustDelegateStakeNativeScript sv ppkh = @@ -632,16 +606,14 @@ mustWithdrawStakePubKey mustWithdrawStakePubKey spkh = singleton $ MustWithdrawStakePubKey spkh mustWithdrawStakePlutusScript - :: forall (i :: Type) (o :: Type) - . PlutusScript + :: PlutusScript -> RedeemerDatum -> TxConstraints mustWithdrawStakePlutusScript validator redeemer = singleton $ MustWithdrawStakePlutusScript validator redeemer mustWithdrawStakeNativeScript - :: forall (i :: Type) (o :: Type) - . NativeScript + :: NativeScript -> TxConstraints mustWithdrawStakeNativeScript = singleton <<< MustWithdrawStakeNativeScript @@ -651,13 +623,12 @@ mustWithdrawStakeNativeScript = -- | `mustSatisfyaAnyOf` is just a way to define a chain of try-catch expressions -- | in a declarative manner. It does not do any analysis of the constraints' semantics. mustSatisfyAnyOf - :: forall (f :: Type -> Type) (i :: Type) (o :: Type) + :: forall (f :: Type -> Type) . Foldable f => f (TxConstraints) -> TxConstraints mustSatisfyAnyOf = Array.fromFoldable - >>> map (_.constraints <<< unwrap) >>> MustSatisfyAnyOf >>> singleton From 1353a315131793299499e04808558b8b73bbf0cf Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 8 May 2024 21:42:26 +0400 Subject: [PATCH 122/373] WIP: new constraints interface --- src/Contract/ClientError.purs | 1 + src/Contract/Constraints.purs | 143 +++++++++ src/Contract/Transaction.purs | 1 + src/Internal/BalanceTx/RedeemerIndex.purs | 2 + src/Internal/Lens.purs | 5 + src/Internal/Types/TxConstraints.purs | 4 +- src/Internal/UseConstraints.purs | 337 ++++++++++++++++++++++ 7 files changed, 491 insertions(+), 2 deletions(-) create mode 100644 src/Contract/Constraints.purs create mode 100644 src/Internal/UseConstraints.purs diff --git a/src/Contract/ClientError.purs b/src/Contract/ClientError.purs index cbac2a82e..f6633e2e1 100644 --- a/src/Contract/ClientError.purs +++ b/src/Contract/ClientError.purs @@ -13,4 +13,5 @@ import Ctl.Internal.Service.Error ( ServiceBlockfrostError , ServiceOtherError ) + , pprintClientError ) as X diff --git a/src/Contract/Constraints.purs b/src/Contract/Constraints.purs new file mode 100644 index 000000000..d011cc1a3 --- /dev/null +++ b/src/Contract/Constraints.purs @@ -0,0 +1,143 @@ +module Contract.Constraints where + +import Prelude + +import Cardano.Types.Epoch (Epoch(..)) +import Cardano.Types.NativeScript (NativeScript) +import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash(..)) +import Cardano.Types.PlutusData (PlutusData) +import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.PoolParams (PoolParams(..)) +import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) +import Cardano.Types.ScriptHash (ScriptHash(..)) +import Cardano.Types.StakePubKeyHash (StakePubKeyHash) +import Cardano.Types.TransactionInput (TransactionInput(..)) +import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput(..)) +import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) +import Ctl.Internal.Types.TxConstraints (TxConstraint(..), TxConstraints(..)) +import Data.Array (singleton) +import Data.Either (Either(..)) +import Data.Maybe (Maybe(..)) + +-- Spending + +-- | Datums in UTxOs can be stored in two forms: inline datums or datum hashes. +-- | When there's a hash, we need to provide a datum corresponding to this hash, +-- | which can be done by either providing the value literally, or using a +-- | reference input where it is stored inline. +data DatumWitness + = DatumValue PlutusData + | DatumReference TransactionInput RefInputAction + +-- | Gives the user options for specifying everything needed to spend an UTxO +-- | located at an address with a ScriptHash payment credential. +-- | +-- | - `ScriptValue` contains a script for the witness set. +-- | +-- | - `ScriptReference` contains a CIP-31 reference input where the inline script should be available at, and a flag to either spend the referenced input or just reference it. +data ScriptWitness a + = ScriptValue a + | ScriptReference TransactionInput RefInputAction + +-- | Inputs can be referenced or spent in a transaction (See CIP-31). +-- | Inline datums (CIP-32) and reference scripts (CIP-33) contained within +-- | transaction outputs become visible to the script context of the +-- | transaction, regardless of whether the output is spent or just +-- | referenced. This data type lets the developer to specify, which +-- | action to perform with a referenced input. +data RefInputAction + = ReferenceInput + | SpendInput + +data SpendWitness + = PubKeyOutput + | NativeScriptOutput (ScriptWitness NativeScript) + | PlutusScriptOutput (ScriptWitness PlutusScript) RedeemerDatum + (Maybe DatumWitness) + +data StakeWitness + = PubKeyHashStakeWitness StakePubKeyHash + | PlutusScriptStakeWitness (ScriptWitness PlutusScript) + | NativeScriptStakeWitness (ScriptWitness NativeScript) + +data StakeRegistration + = StakePubKeyRegistration StakePubKeyHash + | StakeScriptRegistration ScriptHash + +data StakeAction + = Delegate PoolPubKeyHash + | Withdraw + | Deregister + +data Constraint + = SpendOutput TransactionUnspentOutput SpendWitness + | RegisterStake StakeRegistration + | Stake StakeAction StakeWitness + | RequireSignature PaymentPubKeyHash + | RegisterPool PoolParams + | RetirePool PoolPubKeyHash Epoch + +type Constraints = Array Constraint + +requireSignature :: PaymentPubKeyHash -> TxConstraints +requireSignature = singleton <<< MustBeSignedBy + +-- Stake Pool operations + +registerPool :: PoolParams -> TxConstraints +registerPool = singleton <<< MustRegisterPool + +retirePool + :: PoolPubKeyHash + -> Epoch + -> TxConstraints +retirePool poolPubKeyHash = singleton <<< MustRetirePool poolPubKeyHash + +-- Stake operations + +-- registerStake :: StakeRegistration -> TxConstraints +-- registerStake = singleton <<< case _ of +-- StakePubKeyRegistration spkh -> MustRegisterStakePubKey spkh +-- StakeScriptRegistration ssh -> MustRegisterStakeScript ssh + +-- delegateStake :: PoolPubKeyHash -> StakeDelegation -> TxConstraints +-- delegateStake ppkh = singleton <<< case _ of +-- DelegatePubKeyHashStake spkh -> +-- MustDelegateStakePubKey spkh ppkh +-- DelegateNativeScriptStake ns -> +-- MustDelegateStakeNativeScript ns ppkh +-- DelegatePlutusScriptStake ps redeemer -> +-- MustDelegateStakePlutusScript ps redeemer ppkh + +-- withdrawStake :: StakeWithdrawal -> TxConstraints +-- withdrawStake = singleton <<< case _ of +-- WithdrawNativeScriptStake ns -> +-- MustWithdrawStakeNativeScript ns +-- WithdrawPlutusScriptStake ps redeemer -> +-- MustWithdrawStakePlutusScript ps redeemer +-- WithdrawPubKeyStake spkh -> +-- MustWithdrawStakePubKey spkh + +-- data StakeDelegation +-- = DelegatePubKeyHashStake StakePubKeyHash +-- | DelegateNativeScriptStake NativeScriptWitness +-- | DelegatePlutusScriptStake PlutusScriptWitness + +-- data StakeWithdrawal +-- = WithdrawNativeScriptStake NativeScriptWitness +-- | WithdrawPlutusScriptStake PlutusScriptWitness +-- | WithdrawPubKeyStake StakePubKeyHash + +-- data DeregisterStake +-- = DeregisterNativeScriptStake NativeScriptWitness +-- | DeregisterPlutusScriptStake PlutusScriptWitness +-- | DeregisterPubKeyStake StakePubKeyHash + +-- deregisterStake :: DeregisterStake -> TxConstraints +-- deregisterStake = singleton <<< case _ of +-- DeregisterNativeScriptStake ns -> +-- MustDeregisterStakeNativeScript ns +-- DeregisterPlutusScriptStake ps redeemer -> +-- MustDeregisterStakePlutusScript ps redeemer +-- DeregisterPubKeyStake spkh -> +-- MustDeregisterStakePubKey spkh diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 1c038632f..b5f7227e7 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -120,6 +120,7 @@ import Ctl.Internal.Lens , _inputs , _isValid , _mint + , _nativeScripts , _networkId , _output , _outputs diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 1b4182808..7bcf25757 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -64,6 +64,7 @@ newtype UnindexedRedeemer = UnindexedRedeemer derive instance Generic UnindexedRedeemer _ derive instance Newtype UnindexedRedeemer _ derive newtype instance Eq UnindexedRedeemer +derive newtype instance Ord UnindexedRedeemer derive newtype instance EncodeAeson UnindexedRedeemer instance Show UnindexedRedeemer where @@ -123,6 +124,7 @@ data RedeemerPurpose derive instance Generic RedeemerPurpose _ derive instance Eq RedeemerPurpose +derive instance Ord RedeemerPurpose instance EncodeAeson RedeemerPurpose where encodeAeson = case _ of diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index 94a9bf786..bbfe9a8e7 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -13,6 +13,7 @@ module Ctl.Internal.Lens , _inputs , _isValid , _mint + , _nativeScripts , _networkId , _output , _outputs @@ -42,6 +43,7 @@ import Cardano.Types , Coin , Ed25519KeyHash , Mint + , NativeScript , NetworkId , OutputDatum , PlutusData @@ -169,5 +171,8 @@ _plutusData = _Newtype <<< prop (Proxy :: Proxy "plutusData") _plutusScripts :: Lens' TransactionWitnessSet (Array PlutusScript) _plutusScripts = _Newtype <<< prop (Proxy :: Proxy "plutusScripts") +_nativeScripts :: Lens' TransactionWitnessSet (Array NativeScript) +_nativeScripts = _Newtype <<< prop (Proxy :: Proxy "nativeScripts") + _vkeys :: Lens' TransactionWitnessSet (Array Vkeywitness) _vkeys = _Newtype <<< prop (Proxy :: Proxy "vkeys") diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index 141a42b6f..a6185715b 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -113,13 +113,13 @@ import Cardano.Types.Mint as Mint import Ctl.Internal.Types.Interval (POSIXTimeRange) import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) import Ctl.Internal.Types.RedeemerDatum as RedeemerDatum +import Data.Array (singleton) +import Data.Array (singleton) as X import Data.Array as Array import Data.Foldable (class Foldable) import Data.Generic.Rep (class Generic) import Data.Map (Map) import Data.Map (singleton) as Map -import Data.Array (singleton) as X -import Data.Array (singleton) import Data.Maybe (Maybe(Just, Nothing)) import Data.Monoid (guard) import Data.Newtype (class Newtype, over, unwrap) diff --git a/src/Internal/UseConstraints.purs b/src/Internal/UseConstraints.purs new file mode 100644 index 000000000..99011cda2 --- /dev/null +++ b/src/Internal/UseConstraints.purs @@ -0,0 +1,337 @@ +module Ctl.Internal.UseConstraints where + +import Data.Lens +import Prelude + +import Cardano.AsCbor (encodeCbor) +import Cardano.Types + ( Certificate + ( StakeDelegation + , PoolRetirement + , PoolRegistration + , StakeDeregistration + , StakeRegistration + ) + , DataHash + , NetworkId + , PlutusData + , PlutusScript + , ScriptHash + , ScriptRef(NativeScriptRef, PlutusScriptRef) + , StakeCredential(StakeCredential) + , Transaction + , TransactionInput + , TransactionOutput(TransactionOutput) + , TransactionUnspentOutput(TransactionUnspentOutput) + , TransactionWitnessSet(TransactionWitnessSet) + , Value(Value) + ) +import Cardano.Types.Address + ( Address(BaseAddress, EnterpriseAddress) + , getPaymentCredential + ) +import Cardano.Types.Coin as Coin +import Cardano.Types.CostModel (CostModel(..)) +import Cardano.Types.Credential + ( Credential(PubKeyHashCredential, ScriptHashCredential) + , asScriptHash + ) +import Cardano.Types.Credential as Credential +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.DataHash as Datum +import Cardano.Types.DataHash as PlutusData +import Cardano.Types.Int as Int +import Cardano.Types.Language (Language) +import Cardano.Types.Mint as Mint +import Cardano.Types.MultiAsset as MultiAsset +import Cardano.Types.NativeScript as NativeScript +import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash, OutputDatum)) +import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.Transaction as Transaction +import Cardano.Types.TransactionBody (TransactionBody(..)) +import Contract.Constraints + ( Constraint(..) + , Constraints + , DatumWitness(..) + , RefInputAction(..) + , ScriptWitness(..) + , SpendWitness(..) + ) +import Contract.Log (logWarn') +import Control.Monad (unless) +import Control.Monad.Error.Class (catchError, throwError) +import Control.Monad.Except (Except) +import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) +import Control.Monad.Reader.Class (asks) +import Control.Monad.State (StateT(..)) +import Control.Monad.State.Trans (get, gets, put, runStateT) +import Control.Monad.Trans.Class (lift) +import Ctl.Internal.BalanceTx.RedeemerIndex + ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) + , UnindexedRedeemer(UnindexedRedeemer) + , unindexedRedeemerToRedeemer + ) +import Ctl.Internal.Contract (getProtocolParameters) +import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) +import Ctl.Internal.Helpers (liftEither, liftM, unsafeFromJust) +import Ctl.Internal.Lens + ( _address + , _body + , _certs + , _datum + , _inputs + , _isValid + , _mint + , _nativeScripts + , _networkId + , _output + , _outputs + , _plutusData + , _plutusScripts + , _referenceInputs + , _requiredSigners + , _scriptDataHash + , _withdrawals + , _witnessSet + ) +import Ctl.Internal.ProcessConstraints.Error + ( MkUnbalancedTxError + ( CannotSatisfyAny + , CannotWithdrawRewardsNativeScript + , CannotWithdrawRewardsPlutusScript + , CannotWithdrawRewardsPubKey + , DatumWrongHash + , CannotMintZero + , ExpectedPlutusScriptGotNativeScript + , CannotFindDatum + , CannotQueryDatum + , CannotGetValidatorHashFromAddress + , TxOutRefWrongType + , CannotConvertPOSIXTimeRange + , NumericOverflow + , WrongRefScriptHash + , ValidatorHashNotFound + , MintingPolicyNotFound + , DatumNotFound + , TxOutRefNotFound + , CannotSolveTimeConstraints + , OwnPubKeyAndStakeKeyMissing + ) + ) +import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) +import Ctl.Internal.QueryM.Pools + ( getPubKeyHashDelegationsAndRewards + , getValidatorHashDelegationsAndRewards + ) +import Ctl.Internal.Service.Error (ClientError, pprintClientError) +import Ctl.Internal.Transaction + ( attachDatum + , attachNativeScript + , attachPlutusScript + , setScriptDataHash + ) +import Ctl.Internal.Types.Interval + ( POSIXTimeRange + , always + , intersection + , isEmpty + , posixTimeRangeToTransactionValidity + ) +import Ctl.Internal.Types.ScriptLookups (ScriptLookups) +import Ctl.Internal.Types.Val as Val +import Data.Array (cons, nub, partition, toUnfoldable, zip) +import Data.Array (mapMaybe, singleton, (:)) as Array +import Data.Bifunctor (lmap) +import Data.ByteArray (byteArrayToHex) +import Data.Either (Either(Left, Right), either, hush, isRight, note) +import Data.Foldable (foldM) +import Data.Lens (Lens', (%=), (%~), (.=), (.~), (<>=)) +import Data.Lens.Getter (to, use) +import Data.Lens.Iso.Newtype (_Newtype) +import Data.Lens.Record (prop) +import Data.List (List(Nil, Cons)) +import Data.Map (Map, empty, fromFoldable, lookup, union) +import Data.Map as Map +import Data.Maybe (Maybe(Nothing, Just), fromMaybe, isJust, maybe) +import Data.Newtype (over, unwrap, wrap) +import Data.Set as Set +import Data.Traversable (for, traverse_) +import Data.Tuple.Nested (type (/\), (/\)) +import Effect (Effect) +import Effect.Aff.Class (liftAff) +import Effect.Class (liftEffect) +import Effect.Exception (throw) +import Partial.Unsafe (unsafePartial) +import Prelude (join) as Bind +import Type.Proxy (Proxy(..)) + +type Context = + { transaction :: Transaction + , costModels :: Map Language CostModel + , redeemers :: Array UnindexedRedeemer + , datums :: Array PlutusData + } + +_transaction + :: Lens' Context Transaction +_transaction = prop (Proxy :: Proxy "transaction") + +_redeemers + :: Lens' Context (Array UnindexedRedeemer) +_redeemers = prop (Proxy :: Proxy "redeemers") + +_datums + :: Lens' Context (Array PlutusData) +_datums = prop (Proxy :: Proxy "datums") + +data ExpectedOutputType = ScriptHashOutput | PubKeyHashOutput + +data TxBuildError + = WrongSpendWitnessType TransactionUnspentOutput + | QueryError ClientError + | DatumHashLookupError DataHash + | IncorrectDatumHash TransactionUnspentOutput PlutusData DataHash + | WrongOutputType ExpectedOutputType TransactionUnspentOutput + +explainTxBuildError :: TxBuildError -> String +explainTxBuildError (WrongSpendWitnessType utxo) = + "SpendWitness is incompatible with the given output. The output does not contain a datum: " + <> show utxo +explainTxBuildError (QueryError clientError) = + "Query error: " <> pprintClientError clientError +explainTxBuildError (DatumHashLookupError dataHash) = + "The UTxO you are trying to spend contains a datum hash. You didn't provide a `DatumWitness` value corresponding to this hash, so CTL tried to look it up, using a database of datums observed on-chain. This lookup failed. Datum hash: " + <> show dataHash +explainTxBuildError (IncorrectDatumHash utxo datum datumHash) = + "You provided a `DatumWitness` with a datum that does not match the datum hash present in a transaction output.\n Datum: " + <> show datum + <> " (CBOR: " + <> byteArrayToHex (unwrap $ encodeCbor datum) + <> ")\n Datum hash: " + <> byteArrayToHex (unwrap $ encodeCbor datumHash) + <> "\n UTxO: " + <> show utxo +explainTxBuildError _ = "TODO" + +type M a = StateT Context (ExceptT TxBuildError Contract) a + +processConstraints :: Constraints -> M Unit +processConstraints = traverse_ processConstraint + +processConstraint :: Constraint -> M Unit +processConstraint = case _ of + SpendOutput utxo spendWitness -> do + _transaction <<< _body <<< _inputs + %= pushUnique (unwrap utxo).input + useSpendWitness utxo spendWitness + RequireSignature ppkh -> do + _transaction <<< _body <<< _requiredSigners <>= + [ wrap $ unwrap $ unwrap ppkh ] + _ -> pure unit + +assertOutputType :: ExpectedOutputType -> TransactionUnspentOutput -> M Unit +assertOutputType outputType utxo = do + let + mbCredential = + (getPaymentCredential (utxo ^. _output <<< _address) <#> unwrap) + >>= case outputType of + ScriptHashOutput -> Credential.asScriptHash >>> void + PubKeyHashOutput -> Credential.asPubKeyHash >>> void + unless (isJust mbCredential) do + throwError $ WrongOutputType outputType utxo + +-- | Tries to modify the transaction to make it consume a given output. +-- | Uses a `SpendWitness` to try to satisfy spending requirements. +useSpendWitness :: TransactionUnspentOutput -> SpendWitness -> M Unit +useSpendWitness utxo = case _ of + PubKeyOutput -> do + assertOutputType PubKeyHashOutput utxo + NativeScriptOutput nsWitness -> do + assertOutputType ScriptHashOutput utxo + -- attach the script + case nsWitness of + ScriptValue ns -> do + _transaction <<< _witnessSet <<< _nativeScripts + %= pushUnique ns + ScriptReference refInput refInputAction -> do + _transaction <<< _body <<< refInputActionToLens refInputAction + %= pushUnique refInput + PlutusScriptOutput plutusScriptWitness redeemerDatum mbDatumWitness -> do + assertOutputType ScriptHashOutput utxo + -- attach the script + case plutusScriptWitness of + ScriptValue ps -> do + _transaction <<< _witnessSet <<< _plutusScripts + %= pushUnique ps + ScriptReference input action -> do + _transaction <<< _body <<< refInputActionToLens action + %= pushUnique input + -- attach the datum + useDatumWitnessForUtxo utxo mbDatumWitness + -- attach the redeemer + let + uiRedeemer = UnindexedRedeemer + { purpose: ForSpend (unwrap utxo).input + , datum: unwrap redeemerDatum + } + _redeemers %= pushUnique uiRedeemer + +-- | Tries to modify the transaction state to make it consume a given script output. +-- | Uses a `DatumWitness` if the UTxO datum is provided as a hash. +useDatumWitnessForUtxo + :: TransactionUnspentOutput -> Maybe DatumWitness -> M Unit +useDatumWitnessForUtxo utxo datumWitness = do + case utxo ^. _output <<< _datum of + -- script outputs must have a datum + Nothing -> throwError $ WrongSpendWitnessType utxo + -- if the datum is inline, we don't need to attach it as witness + Just (OutputDatum providedDatum) -> do + when (isJust datumWitness) do + logWarn' $ + "You've provided an optional `DatumWitness` in `PlutusScriptWitness`, but the output you are spending already contains an inline datum (not just a datum hash). You can omit the provided datum witness. You provided: " + <> show providedDatum + -- if the datum is provided as hash, + Just (OutputDatumHash datumHash) -> + case datumWitness of + -- if the datum witness was not provided, look the datum up + Nothing -> do + queryHandle <- lift $ lift $ getQueryHandle + mbDatum <- liftEither =<< lmap QueryError <$> do + liftAff $ queryHandle.getDatumByHash datumHash + datum <- liftM (DatumHashLookupError datumHash) mbDatum + _datums %= pushUnique datum + _transaction <<< _witnessSet <<< _plutusData %= pushUnique datum + -- if the datum was provided, check it's hash. if it matches the one + -- specified in the output, use that datum. + Just (DatumValue providedDatum) + | datumHash == PlutusData.hashPlutusData providedDatum -> do + _datums %= pushUnique providedDatum + _transaction <<< _witnessSet <<< _plutusData + %= pushUnique providedDatum + -- otherwise, fail + Just (DatumValue providedDatum) -> do + throwError $ IncorrectDatumHash utxo providedDatum datumHash + -- if a reference input is provided, we just attach it. + -- TODO: consider querying for the inline datum to check if it matches. + Just (DatumReference datumWitnessRef refInputAction) -> do + _transaction <<< _body <<< refInputActionToLens refInputAction + %= pushUnique datumWitnessRef + +-- | Depending on `RefInputAction` value, we either want to spend a reference +-- | UTxO, or just reference it. +refInputActionToLens + :: RefInputAction + -> Lens' TransactionBody (Array TransactionInput) +refInputActionToLens = + case _ of + ReferenceInput -> _referenceInputs + SpendInput -> _inputs + +-- | Ensures uniqueness of an element +pushUnique :: forall a. Ord a => a -> Array a -> Array a +pushUnique x xs = nub $ xs <> [ x ] + +-- Ensures uniqueness +appendInput + :: TransactionInput -> Array TransactionInput -> Array TransactionInput +appendInput a b = Set.toUnfoldable (Set.singleton a <> Set.fromFoldable b) From 5311586cf8c8cf776968db76f37359bee6c385f6 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 9 May 2024 02:19:39 +0400 Subject: [PATCH 123/373] Add new-style constraints (up to minting) --- src/Contract/Constraints.purs | 132 +++++++----- src/Internal/UseConstraints.purs | 345 ++++++++++++++++--------------- 2 files changed, 261 insertions(+), 216 deletions(-) diff --git a/src/Contract/Constraints.purs b/src/Contract/Constraints.purs index d011cc1a3..7ee63d16c 100644 --- a/src/Contract/Constraints.purs +++ b/src/Contract/Constraints.purs @@ -2,32 +2,69 @@ module Contract.Constraints where import Prelude -import Cardano.Types.Epoch (Epoch(..)) +import Cardano.Types.Certificate (Certificate) +import Cardano.Types.Coin (Coin) +import Cardano.Types.Epoch (Epoch) import Cardano.Types.NativeScript (NativeScript) -import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash(..)) +import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash) import Cardano.Types.PlutusData (PlutusData) import Cardano.Types.PlutusScript (PlutusScript) -import Cardano.Types.PoolParams (PoolParams(..)) +import Cardano.Types.PoolParams (PoolParams) import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) -import Cardano.Types.ScriptHash (ScriptHash(..)) +import Cardano.Types.StakeCredential (StakeCredential) import Cardano.Types.StakePubKeyHash (StakePubKeyHash) -import Cardano.Types.TransactionInput (TransactionInput(..)) -import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput(..)) +import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) -import Ctl.Internal.Types.TxConstraints (TxConstraint(..), TxConstraints(..)) -import Data.Array (singleton) -import Data.Either (Either(..)) -import Data.Maybe (Maybe(..)) +import Data.Generic.Rep (class Generic) +import Data.Maybe (Maybe) +import Data.Show.Generic (genericShow) --- Spending +type Constraints = Array Constraint --- | Datums in UTxOs can be stored in two forms: inline datums or datum hashes. --- | When there's a hash, we need to provide a datum corresponding to this hash, --- | which can be done by either providing the value literally, or using a --- | reference input where it is stored inline. -data DatumWitness - = DatumValue PlutusData - | DatumReference TransactionInput RefInputAction +data Constraint + = SpendOutput TransactionUnspentOutput OutputWitness + | RegisterStake StakeCredential + | IssueCertificate Certificate CredentialWitness + | WithdrawStake StakeCredential Coin CredentialWitness + | RequireSignature PaymentPubKeyHash + | RegisterPool PoolParams + | RetirePool PoolPubKeyHash Epoch + +derive instance Generic Constraint _ +instance Show Constraint where + show = genericShow + +-- | `OutputWitness` is used to provide the evidence needed to consume an +-- | output. It must correspond to a `TransactionUnspentOutput` address' +-- | payment credential to unlock it. +data OutputWitness + = PubKeyOutput + | NativeScriptOutput (ScriptWitness NativeScript) + | PlutusScriptOutput (ScriptWitness PlutusScript) RedeemerDatum + (Maybe DatumWitness) + +derive instance Generic OutputWitness _ +instance Show OutputWitness where + show = genericShow + +-- | `CredentialWitness` is used to provide the evidence needed to perform +-- | operations on behalf of a credential, which include: +-- | +-- | - Minting +-- | - Certificate witnessing +-- | - Rewards withdrawal +-- | +-- | Unlike `OutputWitness`, it does not include a `DatumWitness`, because +-- | minting policies and stake scripts do not have a datum. +data CredentialWitness + = PubKeyCredential + | NativeScriptCredential (ScriptWitness NativeScript) + | PlutusScriptCredential (ScriptWitness PlutusScript) RedeemerDatum + +derive instance Generic CredentialWitness _ +instance Show CredentialWitness where + show = genericShow -- | Gives the user options for specifying everything needed to spend an UTxO -- | located at an address with a ScriptHash payment credential. @@ -39,6 +76,10 @@ data ScriptWitness a = ScriptValue a | ScriptReference TransactionInput RefInputAction +derive instance Show a => Generic (ScriptWitness a) _ +instance Show a => Show (ScriptWitness a) where + show = genericShow + -- | Inputs can be referenced or spent in a transaction (See CIP-31). -- | Inline datums (CIP-32) and reference scripts (CIP-33) contained within -- | transaction outputs become visible to the script context of the @@ -49,49 +90,30 @@ data RefInputAction = ReferenceInput | SpendInput -data SpendWitness - = PubKeyOutput - | NativeScriptOutput (ScriptWitness NativeScript) - | PlutusScriptOutput (ScriptWitness PlutusScript) RedeemerDatum - (Maybe DatumWitness) +derive instance Generic RefInputAction _ +instance Show RefInputAction where + show = genericShow + +-- | Datums in UTxOs can be stored in two forms: inline datums or datum hashes. +-- | When there's a hash, we need to provide a datum corresponding to this hash, +-- | which can be done by either providing the value literally, or using a +-- | reference input where it is stored inline. +data DatumWitness + = DatumValue PlutusData + | DatumReference TransactionInput RefInputAction + +derive instance Generic DatumWitness _ +instance Show DatumWitness where + show = genericShow data StakeWitness = PubKeyHashStakeWitness StakePubKeyHash | PlutusScriptStakeWitness (ScriptWitness PlutusScript) | NativeScriptStakeWitness (ScriptWitness NativeScript) -data StakeRegistration - = StakePubKeyRegistration StakePubKeyHash - | StakeScriptRegistration ScriptHash - -data StakeAction - = Delegate PoolPubKeyHash - | Withdraw - | Deregister - -data Constraint - = SpendOutput TransactionUnspentOutput SpendWitness - | RegisterStake StakeRegistration - | Stake StakeAction StakeWitness - | RequireSignature PaymentPubKeyHash - | RegisterPool PoolParams - | RetirePool PoolPubKeyHash Epoch - -type Constraints = Array Constraint - -requireSignature :: PaymentPubKeyHash -> TxConstraints -requireSignature = singleton <<< MustBeSignedBy - --- Stake Pool operations - -registerPool :: PoolParams -> TxConstraints -registerPool = singleton <<< MustRegisterPool - -retirePool - :: PoolPubKeyHash - -> Epoch - -> TxConstraints -retirePool poolPubKeyHash = singleton <<< MustRetirePool poolPubKeyHash +derive instance Generic StakeWitness _ +instance Show StakeWitness where + show = genericShow -- Stake operations diff --git a/src/Internal/UseConstraints.purs b/src/Internal/UseConstraints.purs index 99011cda2..6aeb930f4 100644 --- a/src/Internal/UseConstraints.purs +++ b/src/Internal/UseConstraints.purs @@ -1,168 +1,70 @@ module Ctl.Internal.UseConstraints where -import Data.Lens import Prelude import Cardano.AsCbor (encodeCbor) import Cardano.Types - ( Certificate - ( StakeDelegation - , PoolRetirement - , PoolRegistration - , StakeDeregistration - , StakeRegistration - ) - , DataHash + ( DataHash , NetworkId , PlutusData , PlutusScript - , ScriptHash - , ScriptRef(NativeScriptRef, PlutusScriptRef) - , StakeCredential(StakeCredential) + , StakeCredential , Transaction , TransactionInput - , TransactionOutput(TransactionOutput) - , TransactionUnspentOutput(TransactionUnspentOutput) - , TransactionWitnessSet(TransactionWitnessSet) - , Value(Value) - ) -import Cardano.Types.Address - ( Address(BaseAddress, EnterpriseAddress) - , getPaymentCredential - ) -import Cardano.Types.Coin as Coin -import Cardano.Types.CostModel (CostModel(..)) -import Cardano.Types.Credential - ( Credential(PubKeyHashCredential, ScriptHashCredential) - , asScriptHash + , TransactionUnspentOutput ) +import Cardano.Types.Address (getPaymentCredential) +import Cardano.Types.Certificate (Certificate(..)) +import Cardano.Types.Coin (Coin) +import Cardano.Types.CostModel (CostModel) import Cardano.Types.Credential as Credential -import Cardano.Types.DataHash (hashPlutusData) -import Cardano.Types.DataHash as Datum import Cardano.Types.DataHash as PlutusData -import Cardano.Types.Int as Int import Cardano.Types.Language (Language) -import Cardano.Types.Mint as Mint -import Cardano.Types.MultiAsset as MultiAsset -import Cardano.Types.NativeScript as NativeScript +import Cardano.Types.NativeScript (NativeScript) import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash, OutputDatum)) -import Cardano.Types.PlutusScript as PlutusScript -import Cardano.Types.Transaction as Transaction -import Cardano.Types.TransactionBody (TransactionBody(..)) +import Cardano.Types.TransactionBody (TransactionBody) import Contract.Constraints ( Constraint(..) , Constraints + , CredentialWitness(..) , DatumWitness(..) + , OutputWitness(..) , RefInputAction(..) , ScriptWitness(..) - , SpendWitness(..) ) -import Contract.Log (logWarn') -import Control.Monad (unless) -import Control.Monad.Error.Class (catchError, throwError) +import Control.Monad.Error.Class (throwError) import Control.Monad.Except (Except) -import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) -import Control.Monad.Reader.Class (asks) -import Control.Monad.State (StateT(..)) -import Control.Monad.State.Trans (get, gets, put, runStateT) -import Control.Monad.Trans.Class (lift) +import Control.Monad.State (StateT) +import Control.Monad.State.Trans (gets) import Ctl.Internal.BalanceTx.RedeemerIndex - ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) + ( RedeemerPurpose(ForSpend, ForCert) , UnindexedRedeemer(UnindexedRedeemer) - , unindexedRedeemerToRedeemer ) -import Ctl.Internal.Contract (getProtocolParameters) -import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) -import Ctl.Internal.Helpers (liftEither, liftM, unsafeFromJust) import Ctl.Internal.Lens ( _address , _body , _certs , _datum , _inputs - , _isValid - , _mint , _nativeScripts - , _networkId , _output - , _outputs , _plutusData , _plutusScripts , _referenceInputs , _requiredSigners - , _scriptDataHash , _withdrawals , _witnessSet ) -import Ctl.Internal.ProcessConstraints.Error - ( MkUnbalancedTxError - ( CannotSatisfyAny - , CannotWithdrawRewardsNativeScript - , CannotWithdrawRewardsPlutusScript - , CannotWithdrawRewardsPubKey - , DatumWrongHash - , CannotMintZero - , ExpectedPlutusScriptGotNativeScript - , CannotFindDatum - , CannotQueryDatum - , CannotGetValidatorHashFromAddress - , TxOutRefWrongType - , CannotConvertPOSIXTimeRange - , NumericOverflow - , WrongRefScriptHash - , ValidatorHashNotFound - , MintingPolicyNotFound - , DatumNotFound - , TxOutRefNotFound - , CannotSolveTimeConstraints - , OwnPubKeyAndStakeKeyMissing - ) - ) -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) -import Ctl.Internal.QueryM.Pools - ( getPubKeyHashDelegationsAndRewards - , getValidatorHashDelegationsAndRewards - ) -import Ctl.Internal.Service.Error (ClientError, pprintClientError) -import Ctl.Internal.Transaction - ( attachDatum - , attachNativeScript - , attachPlutusScript - , setScriptDataHash - ) -import Ctl.Internal.Types.Interval - ( POSIXTimeRange - , always - , intersection - , isEmpty - , posixTimeRangeToTransactionValidity - ) -import Ctl.Internal.Types.ScriptLookups (ScriptLookups) -import Ctl.Internal.Types.Val as Val -import Data.Array (cons, nub, partition, toUnfoldable, zip) -import Data.Array (mapMaybe, singleton, (:)) as Array -import Data.Bifunctor (lmap) +import Data.Array (nub) import Data.ByteArray (byteArrayToHex) -import Data.Either (Either(Left, Right), either, hush, isRight, note) -import Data.Foldable (foldM) -import Data.Lens (Lens', (%=), (%~), (.=), (.~), (<>=)) -import Data.Lens.Getter (to, use) -import Data.Lens.Iso.Newtype (_Newtype) +import Data.Lens (Lens', (%=), (<>=), (^.)) import Data.Lens.Record (prop) -import Data.List (List(Nil, Cons)) -import Data.Map (Map, empty, fromFoldable, lookup, union) +import Data.Map (Map) import Data.Map as Map -import Data.Maybe (Maybe(Nothing, Just), fromMaybe, isJust, maybe) -import Data.Newtype (over, unwrap, wrap) +import Data.Maybe (Maybe(Just, Nothing), isJust) +import Data.Newtype (unwrap, wrap) import Data.Set as Set -import Data.Traversable (for, traverse_) -import Data.Tuple.Nested (type (/\), (/\)) -import Effect (Effect) -import Effect.Aff.Class (liftAff) -import Effect.Class (liftEffect) -import Effect.Exception (throw) -import Partial.Unsafe (unsafePartial) -import Prelude (join) as Bind +import Data.Traversable (traverse_) import Type.Proxy (Proxy(..)) type Context = @@ -170,6 +72,7 @@ type Context = , costModels :: Map Language CostModel , redeemers :: Array UnindexedRedeemer , datums :: Array PlutusData + , networkId :: NetworkId } _transaction @@ -184,21 +87,33 @@ _datums :: Lens' Context (Array PlutusData) _datums = prop (Proxy :: Proxy "datums") -data ExpectedOutputType = ScriptHashOutput | PubKeyHashOutput +data ExpectedWitnessType = ScriptHashWitness | PubKeyHashWitness + +explainExpectedWitnessType :: ExpectedWitnessType -> String +explainExpectedWitnessType ScriptHashWitness = "ScriptHash" +explainExpectedWitnessType PubKeyHashWitness = "PubKeyHash" + +data CredentialAction = StakeCert | Withdrawal | Minting + +explainCredentialAction :: CredentialAction -> String +explainCredentialAction StakeCert = "This stake certificate" +explainCredentialAction Withdrawal = "This stake rewards withdrawal" +explainCredentialAction Minting = "This mint" data TxBuildError = WrongSpendWitnessType TransactionUnspentOutput - | QueryError ClientError | DatumHashLookupError DataHash | IncorrectDatumHash TransactionUnspentOutput PlutusData DataHash - | WrongOutputType ExpectedOutputType TransactionUnspentOutput + | WrongOutputType ExpectedWitnessType TransactionUnspentOutput + | WrongStakeCredentialType CredentialAction ExpectedWitnessType + StakeCredential + | DatumWitnessNotProvided TransactionUnspentOutput + | UnneededDatumWitness TransactionUnspentOutput DatumWitness explainTxBuildError :: TxBuildError -> String explainTxBuildError (WrongSpendWitnessType utxo) = - "SpendWitness is incompatible with the given output. The output does not contain a datum: " + "`OutputWitness` is incompatible with the given output. The output does not contain a datum: " <> show utxo -explainTxBuildError (QueryError clientError) = - "Query error: " <> pprintClientError clientError explainTxBuildError (DatumHashLookupError dataHash) = "The UTxO you are trying to spend contains a datum hash. You didn't provide a `DatumWitness` value corresponding to this hash, so CTL tried to look it up, using a database of datums observed on-chain. This lookup failed. Datum hash: " <> show dataHash @@ -211,9 +126,29 @@ explainTxBuildError (IncorrectDatumHash utxo datum datumHash) = <> byteArrayToHex (unwrap $ encodeCbor datumHash) <> "\n UTxO: " <> show utxo +explainTxBuildError (WrongOutputType ScriptHashWitness utxo) = + "The UTxO you provided requires a Script witness to unlock. UTxO: " <> show + utxo +explainTxBuildError (WrongOutputType PubKeyHashWitness utxo) = + "The UTxO you provided requires a PubKeyHash witness to unlock. UTxO: " <> + show utxo +explainTxBuildError + (WrongStakeCredentialType operation expWitnessType stakeCredential) = + explainCredentialAction operation <> " requires a " + <> explainExpectedWitnessType expWitnessType + <> " witness: " + <> show stakeCredential +explainTxBuildError (DatumWitnessNotProvided utxo) = + "The UTxO you are trying to spend contains a datum hash. A matching `DatumWitness` is required. Use `getDatumByHash`. UTxO: " + <> show utxo +explainTxBuildError (UnneededDatumWitness utxo witness) = + "You've provided an optional `DatumWitness`, but the output you are spending already contains an inline datum (not just a datum hash). You should omit the provided datum witness. You provided: " + <> show witness + <> " for the UTxO: " + <> show utxo explainTxBuildError _ = "TODO" -type M a = StateT Context (ExceptT TxBuildError Contract) a +type M a = StateT Context (Except TxBuildError) a processConstraints :: Constraints -> M Unit processConstraints = traverse_ processConstraint @@ -224,48 +159,121 @@ processConstraint = case _ of _transaction <<< _body <<< _inputs %= pushUnique (unwrap utxo).input useSpendWitness utxo spendWitness + RegisterStake stakeCredential -> do + _transaction <<< _body <<< _certs %= pushUnique + (StakeRegistration stakeCredential) + IssueCertificate cert witness -> do + useCertificateWitness cert witness + WithdrawStake stakeCredential amount witness -> do + useWithdrawRewardsWitness stakeCredential amount witness RequireSignature ppkh -> do _transaction <<< _body <<< _requiredSigners <>= [ wrap $ unwrap $ unwrap ppkh ] - _ -> pure unit + RegisterPool poolParams -> do + _transaction <<< _body <<< _certs %= pushUnique + (PoolRegistration poolParams) + RetirePool poolKeyHash epoch -> do + _transaction <<< _body <<< _certs %= pushUnique + (PoolRetirement { poolKeyHash, epoch }) -assertOutputType :: ExpectedOutputType -> TransactionUnspentOutput -> M Unit +assertOutputType :: ExpectedWitnessType -> TransactionUnspentOutput -> M Unit assertOutputType outputType utxo = do let mbCredential = (getPaymentCredential (utxo ^. _output <<< _address) <#> unwrap) >>= case outputType of - ScriptHashOutput -> Credential.asScriptHash >>> void - PubKeyHashOutput -> Credential.asPubKeyHash >>> void + ScriptHashWitness -> Credential.asScriptHash >>> void + PubKeyHashWitness -> Credential.asPubKeyHash >>> void unless (isJust mbCredential) do throwError $ WrongOutputType outputType utxo +assertStakeCredentialType + :: CredentialAction -> ExpectedWitnessType -> StakeCredential -> M Unit +assertStakeCredentialType action expectedType credential = do + let + mbCredential = + case expectedType of + ScriptHashWitness -> + void $ Credential.asScriptHash $ unwrap credential + PubKeyHashWitness -> + void $ Credential.asPubKeyHash $ unwrap credential + unless (isJust mbCredential) do + throwError $ WrongStakeCredentialType action expectedType credential + +useCertificateWitness :: Certificate -> CredentialWitness -> M Unit +useCertificateWitness cert witness = do + _transaction <<< _body <<< _certs %= pushUnique cert + case cert of + StakeDeregistration stakeCredential -> do + useCertificateCredentialWitness cert witness + useCredentialWitness StakeCert stakeCredential witness + StakeDelegation stakeCredential _ -> do + useCertificateCredentialWitness cert witness + useCredentialWitness StakeCert stakeCredential witness + StakeRegistration _ -> pure unit + PoolRegistration _ -> pure unit + PoolRetirement _ -> pure unit + GenesisKeyDelegation _ -> pure unit + MoveInstantaneousRewardsCert _ -> pure unit + +useCertificateCredentialWitness :: Certificate -> CredentialWitness -> M Unit +useCertificateCredentialWitness cert witness = do + case witness of + PubKeyCredential -> pure unit + NativeScriptCredential _nsWitness -> pure unit + PlutusScriptCredential _plutusScriptWitness redeemerDatum -> do + -- attach the redeemer + let + uiRedeemer = UnindexedRedeemer + { purpose: ForCert cert + , datum: unwrap redeemerDatum + } + _redeemers %= pushUnique uiRedeemer + +useCredentialWitness + :: CredentialAction -> StakeCredential -> CredentialWitness -> M Unit +useCredentialWitness credentialAction stakeCredential witness = do + case witness of + PubKeyCredential -> do + assertStakeCredentialType credentialAction PubKeyHashWitness + stakeCredential + NativeScriptCredential nsWitness -> do + assertStakeCredentialType credentialAction ScriptHashWitness + stakeCredential + useNativeScriptWitness nsWitness + PlutusScriptCredential plutusScriptWitness _ -> do + assertStakeCredentialType credentialAction ScriptHashWitness + stakeCredential + usePlutusScriptWitness plutusScriptWitness + +useWithdrawRewardsWitness + :: StakeCredential -> Coin -> CredentialWitness -> M Unit +useWithdrawRewardsWitness stakeCredential amount witness = do + useCredentialWitness Withdrawal stakeCredential witness + networkId <- gets _.networkId + let + rewardAddress = + { networkId + , stakeCredential + } + _transaction <<< _body <<< _withdrawals %= + Map.insert rewardAddress amount + pure unit + -- | Tries to modify the transaction to make it consume a given output. -- | Uses a `SpendWitness` to try to satisfy spending requirements. -useSpendWitness :: TransactionUnspentOutput -> SpendWitness -> M Unit +useSpendWitness :: TransactionUnspentOutput -> OutputWitness -> M Unit useSpendWitness utxo = case _ of PubKeyOutput -> do - assertOutputType PubKeyHashOutput utxo + assertOutputType PubKeyHashWitness utxo NativeScriptOutput nsWitness -> do - assertOutputType ScriptHashOutput utxo + assertOutputType ScriptHashWitness utxo -- attach the script - case nsWitness of - ScriptValue ns -> do - _transaction <<< _witnessSet <<< _nativeScripts - %= pushUnique ns - ScriptReference refInput refInputAction -> do - _transaction <<< _body <<< refInputActionToLens refInputAction - %= pushUnique refInput + useNativeScriptWitness nsWitness PlutusScriptOutput plutusScriptWitness redeemerDatum mbDatumWitness -> do - assertOutputType ScriptHashOutput utxo + assertOutputType ScriptHashWitness utxo -- attach the script - case plutusScriptWitness of - ScriptValue ps -> do - _transaction <<< _witnessSet <<< _plutusScripts - %= pushUnique ps - ScriptReference input action -> do - _transaction <<< _body <<< refInputActionToLens action - %= pushUnique input + usePlutusScriptWitness plutusScriptWitness -- attach the datum useDatumWitnessForUtxo utxo mbDatumWitness -- attach the redeemer @@ -276,31 +284,46 @@ useSpendWitness utxo = case _ of } _redeemers %= pushUnique uiRedeemer +usePlutusScriptWitness :: ScriptWitness PlutusScript -> M Unit +usePlutusScriptWitness = + case _ of + ScriptValue ps -> do + _transaction <<< _witnessSet <<< _plutusScripts + %= pushUnique ps + ScriptReference input action -> do + _transaction <<< _body <<< refInputActionToLens action + %= pushUnique input + +useNativeScriptWitness :: ScriptWitness NativeScript -> M Unit +useNativeScriptWitness = + case _ of + ScriptValue ns -> do + _transaction <<< _witnessSet <<< _nativeScripts + %= pushUnique ns + ScriptReference refInput refInputAction -> do + _transaction <<< _body <<< refInputActionToLens refInputAction + %= pushUnique refInput + -- | Tries to modify the transaction state to make it consume a given script output. -- | Uses a `DatumWitness` if the UTxO datum is provided as a hash. useDatumWitnessForUtxo :: TransactionUnspentOutput -> Maybe DatumWitness -> M Unit -useDatumWitnessForUtxo utxo datumWitness = do +useDatumWitnessForUtxo utxo mbDatumWitness = do case utxo ^. _output <<< _datum of -- script outputs must have a datum Nothing -> throwError $ WrongSpendWitnessType utxo -- if the datum is inline, we don't need to attach it as witness - Just (OutputDatum providedDatum) -> do - when (isJust datumWitness) do - logWarn' $ - "You've provided an optional `DatumWitness` in `PlutusScriptWitness`, but the output you are spending already contains an inline datum (not just a datum hash). You can omit the provided datum witness. You provided: " - <> show providedDatum + Just (OutputDatum _providedDatum) -> do + case mbDatumWitness of + Just datumWitness -> + throwError $ UnneededDatumWitness utxo datumWitness + Nothing -> pure unit -- if the datum is provided as hash, Just (OutputDatumHash datumHash) -> - case datumWitness of + case mbDatumWitness of -- if the datum witness was not provided, look the datum up Nothing -> do - queryHandle <- lift $ lift $ getQueryHandle - mbDatum <- liftEither =<< lmap QueryError <$> do - liftAff $ queryHandle.getDatumByHash datumHash - datum <- liftM (DatumHashLookupError datumHash) mbDatum - _datums %= pushUnique datum - _transaction <<< _witnessSet <<< _plutusData %= pushUnique datum + throwError $ DatumWitnessNotProvided utxo -- if the datum was provided, check it's hash. if it matches the one -- specified in the output, use that datum. Just (DatumValue providedDatum) From a960e9478a05a5dff8e817f06bd436deed24ab53 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 9 May 2024 02:21:10 +0400 Subject: [PATCH 124/373] Improve staking test: use an actually failing script --- test/Plutip/Staking.purs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 630a407d1..0a9882b2b 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -7,10 +7,12 @@ import Prelude import Cardano.AsCbor (decodeCbor) import Cardano.Types (PoolParams(PoolParams), UnitInterval(UnitInterval)) +import Cardano.Types.BigInt as BigInt import Cardano.Types.Credential ( Credential(ScriptHashCredential, PubKeyHashCredential) ) import Cardano.Types.NativeScript as NativeScript +import Cardano.Types.PlutusData (PlutusData(Integer)) import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (getNetworkId) import Contract.Backend.Ogmios (getPoolParameters) @@ -22,7 +24,7 @@ import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.Prelude (liftM) import Contract.Prim.ByteArray (hexToByteArray) import Contract.ScriptLookups as Lookups -import Contract.Scripts (NativeScript(ScriptPubkey, ScriptAny)) +import Contract.Scripts (NativeScript(ScriptPubkey, ScriptAny), applyArgs) import Contract.Staking ( getPoolIds , getPubKeyHashDelegationsAndRewards @@ -70,6 +72,7 @@ import Ctl.Examples.Helpers (submitAndLog) import Ctl.Examples.IncludeDatum (only42Script) import Data.Array (head, (!!)) import Data.Array as Array +import Data.Either (hush) import Data.Foldable (for_) import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) @@ -180,7 +183,10 @@ suite = do liftedM "Failed to get Stake PKH" (join <<< head <$> ownStakePubKeyHashes) validator1 <- alwaysSucceedsScript - validator2 <- only42Script + validator2 <- do + only42 <- only42Script + liftM (error "failed to apply args") do + applyArgs only42 [ Integer $ BigInt.fromInt 42 ] # hush let validatorHash1 = PlutusScript.hash validator1 validatorHash2 = PlutusScript.hash validator2 From 0576feabc1c7ec03eceb0d65a09fec4b26939322 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 9 May 2024 14:56:59 +0300 Subject: [PATCH 125/373] Fix developer portal link --- doc/blockfrost.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/blockfrost.md b/doc/blockfrost.md index 66e4aa314..72efd58bf 100644 --- a/doc/blockfrost.md +++ b/doc/blockfrost.md @@ -47,7 +47,7 @@ Go to https://blockfrost.io to generate a new API key and specify it as `BLOCKFR ### Generating private keys -Follow https://developers.cardano.org/docs/stake-pool-course/handbook/keys-addresses/ to generate a private payment key (and, optionally, a stake key). You can use [this script](https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/scripts/generate-keys.sh) for convenience instead of following instructions in this section manually. +Follow [this guide](https://developers.cardano.org/docs/operate-a-stake-pool/generating-wallet-keys) to generate a private payment key (and, optionally, a stake key). You can use [this script](https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/scripts/generate-keys.sh) for convenience instead of following instructions in this section manually. The generated keys should look like this: From 7d9d1e0c2a99a65923a59518961e5a35ebd529b2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 9 May 2024 18:18:26 +0400 Subject: [PATCH 126/373] Add more trivial constraints --- src/Contract/Constraints.purs | 8 ++++++++ src/Internal/Plutip/Server.purs | 1 - src/Internal/UseConstraints.purs | 21 ++++++++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/Contract/Constraints.purs b/src/Contract/Constraints.purs index 7ee63d16c..c7b2dbc3f 100644 --- a/src/Contract/Constraints.purs +++ b/src/Contract/Constraints.purs @@ -2,6 +2,7 @@ module Contract.Constraints where import Prelude +import Cardano.Types (Slot) import Cardano.Types.Certificate (Certificate) import Cardano.Types.Coin (Coin) import Cardano.Types.Epoch (Epoch) @@ -14,6 +15,7 @@ import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) import Cardano.Types.StakeCredential (StakeCredential) import Cardano.Types.StakePubKeyHash (StakePubKeyHash) import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionOutput (TransactionOutput) import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) import Data.Generic.Rep (class Generic) @@ -22,14 +24,20 @@ import Data.Show.Generic (genericShow) type Constraints = Array Constraint +-- TODO: consider using Maybe for witnesses data Constraint = SpendOutput TransactionUnspentOutput OutputWitness + | PayTo TransactionOutput | RegisterStake StakeCredential | IssueCertificate Certificate CredentialWitness | WithdrawStake StakeCredential Coin CredentialWitness | RequireSignature PaymentPubKeyHash | RegisterPool PoolParams | RetirePool PoolPubKeyHash Epoch + | IncludeDatum PlutusData + | SetTTL (Maybe Slot) + | SetValidityStartInterval (Maybe Slot) + | SetIsValid Boolean derive instance Generic Constraint _ instance Show Constraint where diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 104314d08..7eea80025 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -368,7 +368,6 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do (stopChildProcessWithPortAndRemoveOnSignal plutipCfg.kupoConfig.port) \(process /\ workdir /\ _) -> do liftEffect $ cleanupTmpDir process workdir - pure unit mkWallets' :: ContractEnv diff --git a/src/Internal/UseConstraints.purs b/src/Internal/UseConstraints.purs index 6aeb930f4..19144534d 100644 --- a/src/Internal/UseConstraints.purs +++ b/src/Internal/UseConstraints.purs @@ -46,18 +46,22 @@ import Ctl.Internal.Lens , _certs , _datum , _inputs + , _isValid , _nativeScripts , _output + , _outputs , _plutusData , _plutusScripts , _referenceInputs , _requiredSigners + , _ttl + , _validityStartInterval , _withdrawals , _witnessSet ) import Data.Array (nub) import Data.ByteArray (byteArrayToHex) -import Data.Lens (Lens', (%=), (<>=), (^.)) +import Data.Lens (Lens', (%=), (.=), (<>=), (^.)) import Data.Lens.Record (prop) import Data.Map (Map) import Data.Map as Map @@ -159,6 +163,11 @@ processConstraint = case _ of _transaction <<< _body <<< _inputs %= pushUnique (unwrap utxo).input useSpendWitness utxo spendWitness + PayTo utxo -> do + _transaction <<< _body <<< _outputs + -- intentionally not using pushUnique: we can + -- create multiple outputs of the same shape + %= flip append [ utxo ] RegisterStake stakeCredential -> do _transaction <<< _body <<< _certs %= pushUnique (StakeRegistration stakeCredential) @@ -175,6 +184,16 @@ processConstraint = case _ of RetirePool poolKeyHash epoch -> do _transaction <<< _body <<< _certs %= pushUnique (PoolRetirement { poolKeyHash, epoch }) + IncludeDatum datum -> do + _datums %= pushUnique datum + _transaction <<< _witnessSet <<< _plutusData + %= pushUnique datum + SetTTL slot -> do + _transaction <<< _body <<< _ttl .= slot + SetValidityStartInterval slot -> do + _transaction <<< _body <<< _validityStartInterval .= slot + SetIsValid isValid -> do + _transaction <<< _isValid .= isValid assertOutputType :: ExpectedWitnessType -> TransactionUnspentOutput -> M Unit assertOutputType outputType utxo = do From 7c450d75626ddecab1a26f852db127a54b0ce18d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 20 May 2024 21:39:50 +0300 Subject: [PATCH 127/373] Update plutip-testing.md: use BigNum --- doc/plutip-testing.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 39f223080..e95ef09a7 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -183,10 +183,10 @@ An example `Contract` with two actors using nested tuples: let distribution :: Array BigInt /\ Array BigInt distribution = - [ BigInt.fromInt 1_000_000_000 - , BigInt.fromInt 2_000_000_000 + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 ] /\ - [ BigInt.fromInt 2_000_000_000 ] + [ BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution \(alice /\ bob) -> do withKeyWallet alice do pure unit -- sign, balance, submit, etc. @@ -201,9 +201,9 @@ let distribution :: Array (Array BigInt) distribution = -- wallet one: two UTxOs - [ [ BigInt.fromInt 1_000_000_000, BigInt.fromInt 2_000_000_000] + [ [ BigNum.fromInt 1_000_000_000, BigNum.fromInt 2_000_000_000] -- wallet two: one UTxO - , [ BigInt.fromInt 2_000_000_000 ] + , [ BigNum.fromInt 2_000_000_000 ] ] runPlutipContract config distribution \wallets -> do traverse_ ( \wallet -> do @@ -343,8 +343,8 @@ let $ privateKeyFromBytes =<< hexToRawBytes "633b1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" aliceUtxos = - [ BigInt.fromInt 2_000_000_000 - , BigInt.fromInt 2_000_000_000 + [ BigNum.fromInt 2_000_000_000 + , BigNum.fromInt 2_000_000_000 ] distribution = withStakeKey privateStakeKey aliceUtxos ``` From 4e967d2a97c90f1662c2e22234f3983aa1c8e226 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 28 May 2024 15:07:39 +0300 Subject: [PATCH 128/373] Try to fix github pages deployment --- .github/workflows/pages.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index f0250567f..cf22b9277 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -17,6 +17,7 @@ jobs: run: | npm install -g spago npm install -g purescript@0.15.8 + rm -rf package.json # remove package.json so that we are no more in an ESM module. A hack to make 'spago docs' work spago docs - name: Deploy uses: JamesIves/github-pages-deploy-action@v4.3.3 From 3ba8f616b4c2ee2c5e17112145fbfbb374ea6f80 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 28 May 2024 17:40:08 +0400 Subject: [PATCH 129/373] Remove datums from UnbalancedTx --- src/Contract/Transaction.purs | 3 +-- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 11 +++-------- src/Internal/BalanceTx/UnattachedTx.purs | 4 +--- src/Internal/ProcessConstraints.purs | 8 ++++---- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index b5f7227e7..9018e192a 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -298,12 +298,11 @@ unUnbalancedTx unUnbalancedTx ( UnbalancedTx { transaction - , datums , redeemers , usedUtxos } ) = - { transaction, datums, redeemers } /\ usedUtxos + { transaction, redeemers } /\ usedUtxos -- | Attempts to balance an `UnbalancedTx` using the specified -- | balancer constraints. diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index ebfe61123..625c43d4f 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -191,18 +191,13 @@ finalizeTransaction tx utxos = do reattachDatumsAndFakeRedeemers :: IndexedTx -> Transaction reattachDatumsAndFakeRedeemers - { transaction, datums, redeemers } = + { transaction, redeemers } = reattachDatumsAndRedeemers - { transaction, datums, redeemers: indexedRedeemerToRedeemer <$> redeemers } + { transaction, redeemers: indexedRedeemerToRedeemer <$> redeemers } reattachDatumsAndRedeemers :: EvaluatedTx -> Transaction reattachDatumsAndRedeemers - ({ transaction, datums, redeemers }) = - let - transaction' = attachRedeemers redeemers transaction - in - transaction' - # _witnessSet <<< _plutusData .~ datums + ({ transaction, redeemers }) = attachRedeemers redeemers transaction updateTxExecutionUnits :: IndexedTx diff --git a/src/Internal/BalanceTx/UnattachedTx.purs b/src/Internal/BalanceTx/UnattachedTx.purs index f613e8d4a..f5439f576 100644 --- a/src/Internal/BalanceTx/UnattachedTx.purs +++ b/src/Internal/BalanceTx/UnattachedTx.purs @@ -25,7 +25,6 @@ import Type.Proxy (Proxy(Proxy)) type UnattachedTx redeemer = { transaction :: Transaction - , datums :: Array PlutusData , redeemers :: Array redeemer } @@ -39,11 +38,10 @@ type IndexedTx = UnattachedTx IndexedRedeemer type EvaluatedTx = UnattachedTx Redeemer indexTx :: UnindexedTx -> Either UnindexedRedeemer IndexedTx -indexTx { transaction, datums, redeemers } = do +indexTx { transaction, redeemers } = do redeemers' <- indexRedeemers (mkRedeemersContext transaction) redeemers pure { transaction: attachIndexedRedeemers redeemers' transaction - , datums , redeemers: redeemers' } diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index dab93d21c..ad5d1eeed 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -907,7 +907,7 @@ mkUnbalancedTxImpl scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map \{ transaction, datums, redeemers, usedUtxos } -> wrap - { transaction: stripDatumsRedeemers $ stripScriptDataHash transaction + { transaction: stripRedeemers $ stripScriptDataHash transaction , datums , redeemers , usedUtxos @@ -917,7 +917,7 @@ mkUnbalancedTxImpl scriptLookups txConstraints = stripScriptDataHash = _body <<< _scriptDataHash .~ Nothing - stripDatumsRedeemers :: Transaction -> Transaction - stripDatumsRedeemers = _witnessSet %~ + stripRedeemers :: Transaction -> Transaction + stripRedeemers = _witnessSet %~ over TransactionWitnessSet - _ { plutusData = [], redeemers = [] } + _ { redeemers = [] } From 94bc85cae893473b06751ed99eaf02a9c3cc1159 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 28 May 2024 17:47:28 +0400 Subject: [PATCH 130/373] Remove datums from UnbalancedTx --- src/Internal/ProcessConstraints.purs | 3 +-- src/Internal/ProcessConstraints/UnbalancedTx.purs | 3 --- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index ad5d1eeed..0e12ded53 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -905,10 +905,9 @@ mkUnbalancedTxImpl -> Contract (Either MkUnbalancedTxError UnbalancedTx) mkUnbalancedTxImpl scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map - \{ transaction, datums, redeemers, usedUtxos } -> + \{ transaction, redeemers, usedUtxos } -> wrap { transaction: stripRedeemers $ stripScriptDataHash transaction - , datums , redeemers , usedUtxos } diff --git a/src/Internal/ProcessConstraints/UnbalancedTx.purs b/src/Internal/ProcessConstraints/UnbalancedTx.purs index deee55248..c90c3d626 100644 --- a/src/Internal/ProcessConstraints/UnbalancedTx.purs +++ b/src/Internal/ProcessConstraints/UnbalancedTx.purs @@ -4,7 +4,6 @@ module Ctl.Internal.ProcessConstraints.UnbalancedTx import Prelude hiding (join) -import Cardano.Types.PlutusData (PlutusData) import Cardano.Types.Transaction (Transaction) import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionOutput (TransactionOutput) @@ -19,8 +18,6 @@ import Data.Show.Generic (genericShow) newtype UnbalancedTx = UnbalancedTx { transaction :: Transaction -- the unbalanced tx created , usedUtxos :: Map TransactionInput TransactionOutput - , datums :: - Array PlutusData -- the array of ordered datums that require attaching , redeemers :: Array UnindexedRedeemer } From 5989ccf784db14d5981df23813f044224b8d6e8f Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 30 May 2024 19:00:19 +0300 Subject: [PATCH 131/373] Make Testnet.Server module --- src/Internal/Testnet/Server.purs | 129 +++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 src/Internal/Testnet/Server.purs diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs new file mode 100644 index 000000000..52543121d --- /dev/null +++ b/src/Internal/Testnet/Server.purs @@ -0,0 +1,129 @@ +module Ctl.Internal.Testnet.Server + ( runTestnetContract + , withTestnetContractEnv + , startTestnetCluster + , stopTestnetCluster + , startTestnetServer + , checkTestnetServer + , stopChildProcessWithPort + , testTestnetxContracts + ) where + +import Prelude + +import Aeson (decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) +import Affjax (defaultRequest) as Affjax +import Affjax.RequestBody as RequestBody +import Affjax.RequestHeader as Header +import Affjax.ResponseFormat as Affjax.ResponseFormat +import Contract.Address (NetworkId(MainnetId)) +import Contract.Chain (waitNSlots) +import Contract.Config (defaultSynchronizationParams, defaultTimeParams) +import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) +import Control.Monad.Error.Class (liftEither, throwError) +import Control.Monad.State (State, execState, modify_) +import Control.Monad.Trans.Class (lift) +import Control.Monad.Writer (censor, execWriterT, tell) +import Ctl.Internal.Affjax (request) as Affjax +import Ctl.Internal.Contract.Hooks (emptyHooks) +import Ctl.Internal.Contract.Monad + ( buildBackend + , getLedgerConstants + , mkQueryHandle + , stopContractEnv + ) +import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) +import Ctl.Internal.Helpers ((<>)) +import Ctl.Internal.Logging (Logger, mkLogger, setupLogs) +-- import Ctl.Internal.Plutip.PortCheck (isPortAvailable) +-- import Ctl.Internal.Plutip.Spawn +-- ( ManagedProcess +-- , NewOutputAction(Success, NoOp) +-- , OnSignalRef +-- , cleanupOnSigint +-- , cleanupTmpDir +-- , removeOnSignal +-- , spawn +-- , stop +-- ) +import Ctl.Internal.Plutip.Types + ( ClusterStartupParameters + , ClusterStartupRequest(ClusterStartupRequest) + , PlutipConfig + , PrivateKeyResponse(PrivateKeyResponse) + , StartClusterResponse(ClusterStartupSuccess, ClusterStartupFailure) + , StopClusterRequest(StopClusterRequest) + , StopClusterResponse + ) +import Ctl.Internal.Plutip.Utils (tmpdir) +import Ctl.Internal.Service.Error + ( ClientError(ClientDecodeJsonError, ClientHttpError) + , pprintClientError + ) +import Ctl.Internal.Test.ContractTest + ( ContractTest(ContractTest) + , ContractTestPlan(ContractTestPlan) + , ContractTestPlanHandler + ) +import Ctl.Internal.Test.TestPlanM (TestPlanM) +import Ctl.Internal.Test.UtxoDistribution + ( class UtxoDistribution + , InitialUTxODistribution + , InitialUTxOs + , decodeWallets + , encodeDistribution + , keyWallets + , transferFundsFromEnterpriseToBase + ) +import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) +import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) +import Data.Array as Array +import Data.Bifunctor (lmap) +import Data.Either (Either(Left, Right), either, isLeft) +import Data.Foldable (sum) +import Data.HTTP.Method as Method +import Data.Log.Level (LogLevel) +import Data.Log.Message (Message) +import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) +import Data.Newtype (over, unwrap, wrap) +import Data.Set as Set +import Data.String.CodeUnits (indexOf) as String +import Data.String.Pattern (Pattern(Pattern)) +import Data.Traversable (foldMap, for, for_, sequence_, traverse_) +import Data.Tuple (fst, snd) +import Data.Tuple.Nested (type (/\), (/\)) +import Data.UInt (UInt) +import Data.UInt as UInt +import Effect.Aff (Aff, Milliseconds(Milliseconds), try) +import Effect.Aff (bracket) as Aff +import Effect.Aff.Class (liftAff) +import Effect.Aff.Retry + ( RetryPolicy + , constantDelay + , limitRetriesByCumulativeDelay + , recovering + ) +import Effect.Class (liftEffect) +import Effect.Exception (error, message, throw) +import Effect.Ref (Ref) +import Effect.Ref as Ref +import JS.BigInt as BigInt +import Mote (bracket) as Mote +import Mote.Description (Description(Group, Test)) +import Mote.Monad (MoteT(MoteT), mapTest) +import Node.ChildProcess (defaultSpawnOptions) +import Node.FS.Sync (exists, mkdir) as FSSync +import Node.Path (FilePath, dirname) +import Type.Prelude (Proxy(Proxy)) + +-- | Run several `Contract`s in tests in a (single) Testnet environment (cardano-testnet, kupo, etc.). +-- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. +-- | Namely, brackets are run for each of the top-level groups and tests +-- | inside the bracket. +-- | If you wish to only set up Testnet once, ensure all tests that are passed +-- | to `testTestnetContracts` are wrapped in a single group. +testTestnetContracts + :: TestnetConfig + -> TestPlanM ContractTest Unit + -> TestPlanM (Aff Unit) Unit +testTestnetContracts testnetCfg tp = do \ No newline at end of file From a37b10becce20f3686725ae680d9d5d45e3f9183 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 30 May 2024 20:30:56 +0300 Subject: [PATCH 132/373] Add cardano-testnet executable in the psProject env --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 8869b614c..8d23e5fdf 100644 --- a/flake.nix +++ b/flake.nix @@ -95,6 +95,7 @@ { self , nixpkgs , cardano-configurations + , cardano-node , ... }@inputs: let @@ -190,6 +191,7 @@ nodePackages.eslint nodePackages.prettier blockfrost-backend-ryo + cardano-node.packages.${system}.cardano-testnet ]; }; }; From 3bd831447d76055b9b24ca204ce90f4ca5a724e4 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 30 May 2024 21:53:31 +0300 Subject: [PATCH 133/373] Implement Testnet.Types --- src/Internal/Testnet/Types.purs | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/Internal/Testnet/Types.purs diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs new file mode 100644 index 000000000..677c3c06d --- /dev/null +++ b/src/Internal/Testnet/Types.purs @@ -0,0 +1,45 @@ +module Internal.Testnet.Types + ( CardanoTestnetStartupParams + , Era (..) + , LoggingFormat (..) + , OptionalStartupParams + , defaultOptionalStartupParams + ) where + + +import Contract.Prelude +import Data.Time.Duration (Milliseconds, Seconds) + +data Era + = Byron + | Shelley + | Allegra + | Mary + | Alonzo + | Babbage + +data LoggingFormat = LogAsJson | LogAsText + +type OptionalStartupParams = + ( numPoolNodes :: Maybe Int + , era :: Maybe Era + , epochLength :: Maybe Milliseconds + , slotLength :: Maybe Seconds + ) + +-- | Command line params for the cardano-testnet executable +type CardanoTestnetStartupParams = + { testnetMagic :: Int + , activeSlotsCoeff :: Number + , enableP2p :: Boolean + , nodeLoggingFormat :: LoggingFormat + | OptionalStartupParams + } + +defaultOptionalStartupParams :: Record OptionalStartupParams +defaultOptionalStartupParams = + { numPoolNodes: Nothing + , era: Nothing + , epochLength: Nothing + , slotLength: Nothing + } \ No newline at end of file From e0bc8d162fec42d6eb8b81cd259962cb47ceab6b Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 30 May 2024 22:25:01 +0300 Subject: [PATCH 134/373] Update testnet types --- src/Internal/Testnet/Types.purs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 677c3c06d..1cd6f8cef 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -18,21 +18,34 @@ data Era | Alonzo | Babbage +instance Show Era where + show = case _ of + Byron -> "byron_era" + Shelley -> "shelley_era" + Allegra -> "allegra_era" + Mary -> "mary_era" + Alonzo -> "alonzo_era" + Babbage -> "babbage_era" + data LoggingFormat = LogAsJson | LogAsText +instance Show LoggingFormat where + show = case _ of + LogAsJson -> "json" + LogAsText -> "text" type OptionalStartupParams = ( numPoolNodes :: Maybe Int , era :: Maybe Era , epochLength :: Maybe Milliseconds , slotLength :: Maybe Seconds + , activeSlotsCoeff :: Maybe Number + , enableP2p :: Maybe Boolean + , nodeLoggingFormat :: Maybe LoggingFormat ) -- | Command line params for the cardano-testnet executable type CardanoTestnetStartupParams = { testnetMagic :: Int - , activeSlotsCoeff :: Number - , enableP2p :: Boolean - , nodeLoggingFormat :: LoggingFormat | OptionalStartupParams } @@ -42,4 +55,7 @@ defaultOptionalStartupParams = , era: Nothing , epochLength: Nothing , slotLength: Nothing + , activeSlotsCoeff: Nothing + , enableP2p: Nothing + , nodeLoggingFormat: Nothing } \ No newline at end of file From 75cdb3879cbac5cff4be86e8081b018a44fbf479 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 30 May 2024 22:27:53 +0300 Subject: [PATCH 135/373] Cleanup import list --- src/Internal/Testnet/Server.purs | 129 +++++-------------------------- 1 file changed, 19 insertions(+), 110 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 52543121d..4b037043b 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -1,120 +1,29 @@ module Ctl.Internal.Testnet.Server - ( runTestnetContract - , withTestnetContractEnv - , startTestnetCluster - , stopTestnetCluster - , startTestnetServer - , checkTestnetServer + ( checkTestnet + , runTestnetTestPlan + , startTestnet , stopChildProcessWithPort - , testTestnetxContracts - ) where + , stopTestnet + , testTestnetContracts + ) + where import Prelude -import Aeson (decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) -import Affjax (defaultRequest) as Affjax -import Affjax.RequestBody as RequestBody -import Affjax.RequestHeader as Header -import Affjax.ResponseFormat as Affjax.ResponseFormat -import Contract.Address (NetworkId(MainnetId)) -import Contract.Chain (waitNSlots) -import Contract.Config (defaultSynchronizationParams, defaultTimeParams) -import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) -import Control.Monad.Error.Class (liftEither, throwError) -import Control.Monad.State (State, execState, modify_) -import Control.Monad.Trans.Class (lift) -import Control.Monad.Writer (censor, execWriterT, tell) -import Ctl.Internal.Affjax (request) as Affjax -import Ctl.Internal.Contract.Hooks (emptyHooks) -import Ctl.Internal.Contract.Monad - ( buildBackend - , getLedgerConstants - , mkQueryHandle - , stopContractEnv - ) -import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) -import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Logging (Logger, mkLogger, setupLogs) --- import Ctl.Internal.Plutip.PortCheck (isPortAvailable) --- import Ctl.Internal.Plutip.Spawn --- ( ManagedProcess --- , NewOutputAction(Success, NoOp) --- , OnSignalRef --- , cleanupOnSigint --- , cleanupTmpDir --- , removeOnSignal --- , spawn --- , stop --- ) -import Ctl.Internal.Plutip.Types - ( ClusterStartupParameters - , ClusterStartupRequest(ClusterStartupRequest) - , PlutipConfig - , PrivateKeyResponse(PrivateKeyResponse) - , StartClusterResponse(ClusterStartupSuccess, ClusterStartupFailure) - , StopClusterRequest(StopClusterRequest) - , StopClusterResponse - ) -import Ctl.Internal.Plutip.Utils (tmpdir) -import Ctl.Internal.Service.Error - ( ClientError(ClientDecodeJsonError, ClientHttpError) - , pprintClientError - ) -import Ctl.Internal.Test.ContractTest - ( ContractTest(ContractTest) - , ContractTestPlan(ContractTestPlan) - , ContractTestPlanHandler - ) -import Ctl.Internal.Test.TestPlanM (TestPlanM) -import Ctl.Internal.Test.UtxoDistribution - ( class UtxoDistribution - , InitialUTxODistribution - , InitialUTxOs - , decodeWallets - , encodeDistribution - , keyWallets - , transferFundsFromEnterpriseToBase - ) -import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) -import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) -import Data.Array as Array -import Data.Bifunctor (lmap) -import Data.Either (Either(Left, Right), either, isLeft) -import Data.Foldable (sum) -import Data.HTTP.Method as Method -import Data.Log.Level (LogLevel) -import Data.Log.Message (Message) -import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) -import Data.Newtype (over, unwrap, wrap) -import Data.Set as Set -import Data.String.CodeUnits (indexOf) as String -import Data.String.Pattern (Pattern(Pattern)) -import Data.Traversable (foldMap, for, for_, sequence_, traverse_) -import Data.Tuple (fst, snd) -import Data.Tuple.Nested (type (/\), (/\)) +import Contract.Test.Mote (TestPlanM) +import Ctl.Internal.Plutip.Spawn (ManagedProcess, spawn) +import Ctl.Internal.Plutip.Types (ClusterStartupParameters, PlutipConfig, StopClusterResponse) +import Ctl.Internal.Test.ContractTest (ContractTest, ContractTestPlan(ContractTestPlan)) +import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) +import Ctl.Internal.Wallet.Key (PrivatePaymentKey) +import Data.Array (catMaybes) +import Data.Maybe (Maybe(Nothing, Just)) +import Data.Tuple.Nested (type (/\)) import Data.UInt (UInt) -import Data.UInt as UInt -import Effect.Aff (Aff, Milliseconds(Milliseconds), try) -import Effect.Aff (bracket) as Aff -import Effect.Aff.Class (liftAff) -import Effect.Aff.Retry - ( RetryPolicy - , constantDelay - , limitRetriesByCumulativeDelay - , recovering - ) -import Effect.Class (liftEffect) -import Effect.Exception (error, message, throw) -import Effect.Ref (Ref) -import Effect.Ref as Ref -import JS.BigInt as BigInt -import Mote (bracket) as Mote -import Mote.Description (Description(Group, Test)) -import Mote.Monad (MoteT(MoteT), mapTest) +import Effect.Aff (Aff) +import Effect.Exception.Unsafe (unsafeThrow) +import Internal.Testnet.Types (CardanoTestnetStartupParams) import Node.ChildProcess (defaultSpawnOptions) -import Node.FS.Sync (exists, mkdir) as FSSync -import Node.Path (FilePath, dirname) -import Type.Prelude (Proxy(Proxy)) -- | Run several `Contract`s in tests in a (single) Testnet environment (cardano-testnet, kupo, etc.). -- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. From b6a2039a74c5b0a7d96b6923d57009e336e9dbf4 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 30 May 2024 22:29:01 +0300 Subject: [PATCH 136/373] Implement placeholders --- src/Internal/Testnet/Server.purs | 36 ++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 4b037043b..f5fcd1680 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -32,7 +32,39 @@ import Node.ChildProcess (defaultSpawnOptions) -- | If you wish to only set up Testnet once, ensure all tests that are passed -- | to `testTestnetContracts` are wrapped in a single group. testTestnetContracts - :: TestnetConfig + :: PlutipConfig -> TestPlanM ContractTest Unit -> TestPlanM (Aff Unit) Unit -testTestnetContracts testnetCfg tp = do \ No newline at end of file +testTestnetContracts testnetCfg tp = unsafeThrow "sdfsd" + +checkTestnet :: PlutipConfig -> Aff Unit +checkTestnet cfg = unsafeThrow "checkTestnet" + +-- | Start the plutip cluster, initializing the state with the given +-- | UTxO distribution. Also initializes an extra payment key (aka +-- | `ourKey`) with some UTxOs for use with further plutip +-- | setup. `ourKey` has funds proportional to the total amount of the +-- | UTxOs in the passed distribution, so it can be used to handle +-- | transaction fees. +startTestnet + :: PlutipConfig + -> InitialUTxODistribution + -> Aff (ManagedProcess /\ PrivatePaymentKey /\ ClusterStartupParameters) +startTestnet = unsafeThrow "startTestnet" + +stopTestnet :: PlutipConfig -> Aff StopClusterResponse +stopTestnet cfg = unsafeThrow "stopTestnet" + +-- | Kill a process and wait for it to stop listening on a specific port. +stopChildProcessWithPort :: UInt -> ManagedProcess -> Aff Unit +stopChildProcessWithPort = unsafeThrow "stopChildProcessWithPort" + +-- | Run a `ContractTestPlan` in a (single) Testnet environment. +-- | Supports wallet reuse - see docs on sharing wallet state between +-- | wallets in `doc/plutip-testing.md`. +runTestnetTestPlan + :: PlutipConfig + -> ContractTestPlan + -> TestPlanM (Aff Unit) Unit +runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = unsafeThrow "runTestnetTestPlan" + From 28395eb6b9dc3ba6eccfcf3ca094b3c3fa12a2dc Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 30 May 2024 22:29:20 +0300 Subject: [PATCH 137/373] Implement startCardanoTestnet --- src/Internal/Testnet/Server.purs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index f5fcd1680..277a930bd 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -68,3 +68,27 @@ runTestnetTestPlan -> TestPlanM (Aff Unit) Unit runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = unsafeThrow "runTestnetTestPlan" +startCardanoTestnet + :: CardanoTestnetStartupParams + -> Aff ManagedProcess +startCardanoTestnet params = spawn + "cardano-testnet" + options + defaultSpawnOptions + Nothing + where + flag :: String -> String + flag name = "--" <> name + option :: forall a. Show a => String -> a -> String + option name value = flag name <> " " <> show value + options :: Array String + options = catMaybes + [ Just $ option "testnet-magic" params.testnetMagic + , flag <<< show <$> params.era + , option "active-slots-coeff" <$> params.activeSlotsCoeff + , option "enable-p2p" <$> params.enableP2p + , option "node-logging-format" <$> params.nodeLoggingFormat + , option "num-pool-nodes" <$> params.numPoolNodes + , option "epoch-length" <$> params.epochLength + , option "slot-length" <$> params.slotLength + ] \ No newline at end of file From 2b64db9b62f1141ca97a092b539e190ca1331f20 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 30 May 2024 22:30:42 +0300 Subject: [PATCH 138/373] Explain function --- src/Internal/Testnet/Server.purs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 277a930bd..09e3f398e 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -68,6 +68,7 @@ runTestnetTestPlan -> TestPlanM (Aff Unit) Unit runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = unsafeThrow "runTestnetTestPlan" +-- | Runs cardano-testnet executable with provided params. startCardanoTestnet :: CardanoTestnetStartupParams -> Aff ManagedProcess From de4d635d98c280f99410cebad1ffa42ae67f2e70 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 00:48:57 +0300 Subject: [PATCH 139/373] Implement defaultStartupParams --- src/Internal/Testnet/Types.purs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 1cd6f8cef..6ba446251 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -4,11 +4,13 @@ module Internal.Testnet.Types , LoggingFormat (..) , OptionalStartupParams , defaultOptionalStartupParams + , defaultStartupParams ) where import Contract.Prelude import Data.Time.Duration (Milliseconds, Seconds) +import Record as Record data Era = Byron @@ -49,6 +51,10 @@ type CardanoTestnetStartupParams = | OptionalStartupParams } +defaultStartupParams :: {testnetMagic :: Int} -> CardanoTestnetStartupParams +defaultStartupParams necessaryParams = + defaultOptionalStartupParams `Record.union` necessaryParams + defaultOptionalStartupParams :: Record OptionalStartupParams defaultOptionalStartupParams = { numPoolNodes: Nothing From d8f7b13374c711b835bce63846e89e2176cd7017 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 00:50:05 +0300 Subject: [PATCH 140/373] Get rid of stopChildProcessWithPort --- src/Internal/Testnet/Server.purs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 09e3f398e..36febc004 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -2,7 +2,6 @@ module Ctl.Internal.Testnet.Server ( checkTestnet , runTestnetTestPlan , startTestnet - , stopChildProcessWithPort , stopTestnet , testTestnetContracts ) @@ -55,10 +54,6 @@ startTestnet = unsafeThrow "startTestnet" stopTestnet :: PlutipConfig -> Aff StopClusterResponse stopTestnet cfg = unsafeThrow "stopTestnet" --- | Kill a process and wait for it to stop listening on a specific port. -stopChildProcessWithPort :: UInt -> ManagedProcess -> Aff Unit -stopChildProcessWithPort = unsafeThrow "stopChildProcessWithPort" - -- | Run a `ContractTestPlan` in a (single) Testnet environment. -- | Supports wallet reuse - see docs on sharing wallet state between -- | wallets in `doc/plutip-testing.md`. From 7310e100dd5a92f6aecfbb56cb35e633f2d28cb1 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 00:51:29 +0300 Subject: [PATCH 141/373] Make placeholder lazy --- src/Internal/Testnet/Server.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 36febc004..6806160f8 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -49,7 +49,7 @@ startTestnet :: PlutipConfig -> InitialUTxODistribution -> Aff (ManagedProcess /\ PrivatePaymentKey /\ ClusterStartupParameters) -startTestnet = unsafeThrow "startTestnet" +startTestnet _ = unsafeThrow "startTestnet" stopTestnet :: PlutipConfig -> Aff StopClusterResponse stopTestnet cfg = unsafeThrow "stopTestnet" From b94800c752bc8215b92fd7f7ea3714c6aa7e9390 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 00:54:04 +0300 Subject: [PATCH 142/373] Implement waitForSignal --- src/Internal/Plutip/Spawn.purs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Plutip/Spawn.purs index c8f94c005..bde350961 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Plutip/Spawn.purs @@ -11,6 +11,8 @@ module Ctl.Internal.Plutip.Spawn , cleanupTmpDir , cleanupOnSigint , removeOnSignal + , waitForSignal + , _rmdirSync ) where import Prelude @@ -131,6 +133,12 @@ foreign import removeOnSignal :: OnSignalRef -> Effect Unit onSignal :: Signal -> Effect Unit -> Effect OnSignalRef onSignal sig = onSignalImpl (Signal.toString sig) +-- | Just as onSignal, but Aff. +waitForSignal :: Signal -> Aff Unit +waitForSignal signal = makeAff \cont -> ado + onSignalRef <- onSignal signal $ cont $ pure unit + in Canceler \_ -> liftEffect $ removeOnSignal onSignalRef + cleanupOnSigint :: FilePath -> FilePath -> Effect OnSignalRef cleanupOnSigint workingDir testClusterDir = do sig <- onSignal SIGINT do From 14ca676d95dd09b543f0aaed748f3e2dc50a7bb4 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 01:17:06 +0300 Subject: [PATCH 143/373] Implement mkDirIfNotExists --- src/Internal/Plutip/Utils.purs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 610390fab..a8be66024 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -1,9 +1,18 @@ module Ctl.Internal.Plutip.Utils ( tmpdir + , mkDirIfNotExists ) where +import Prelude import Effect (Effect) +import Node.FS.Sync as FS +import Node.Path (FilePath) -- TODO: remove this function when PS bindings for os.tmpdir are available. -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/726 foreign import tmpdir :: Effect String + +mkDirIfNotExists :: FilePath -> Effect Unit +mkDirIfNotExists dirName = do + exists <- FS.exists dirName + unless exists $ FS.mkdir dirName \ No newline at end of file From 1758c96a080149877001f98525ddb12241c74ff4 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 01:18:48 +0300 Subject: [PATCH 144/373] Provide custom workidr to the node process --- src/Internal/Testnet/Server.purs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 6806160f8..03e35062a 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -64,13 +64,15 @@ runTestnetTestPlan runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = unsafeThrow "runTestnetTestPlan" -- | Runs cardano-testnet executable with provided params. -startCardanoTestnet - :: CardanoTestnetStartupParams +spawnCardanoTestnet :: + CardanoTestnetStartupParams + -> { workdir :: FilePath } -> Aff ManagedProcess -startCardanoTestnet params = spawn +spawnCardanoTestnet params {workdir} = do + spawn "cardano-testnet" options - defaultSpawnOptions + (defaultSpawnOptions {cwd = Just workdir}) Nothing where flag :: String -> String From 9b286cc1f05f5d62988d905d6f55be46678cd671 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 01:19:47 +0300 Subject: [PATCH 145/373] Implement startCardanoTestnet --- src/Internal/Testnet/Server.purs | 45 ++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 03e35062a..d693a17a7 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -3,26 +3,37 @@ module Ctl.Internal.Testnet.Server , runTestnetTestPlan , startTestnet , stopTestnet + , startCardanoTestnet , testTestnetContracts ) where import Prelude +import Contract.Prelude (liftEffect) import Contract.Test.Mote (TestPlanM) -import Ctl.Internal.Plutip.Spawn (ManagedProcess, spawn) +import Ctl.Internal.Helpers ((<>)) +import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), _rmdirSync, spawn, waitForSignal) import Ctl.Internal.Plutip.Types (ClusterStartupParameters, PlutipConfig, StopClusterResponse) +import Ctl.Internal.Plutip.Utils (mkDirIfNotExists, tmpdir) +import Ctl.Internal.QueryM.UniqueId (uniqueId) import Ctl.Internal.Test.ContractTest (ContractTest, ContractTestPlan(ContractTestPlan)) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) import Ctl.Internal.Wallet.Key (PrivatePaymentKey) import Data.Array (catMaybes) import Data.Maybe (Maybe(Nothing, Just)) +import Data.Posix.Signal (Signal(..)) import Data.Tuple.Nested (type (/\)) -import Data.UInt (UInt) -import Effect.Aff (Aff) +import Effect.Aff (Aff, forkAff) import Effect.Exception.Unsafe (unsafeThrow) import Internal.Testnet.Types (CardanoTestnetStartupParams) import Node.ChildProcess (defaultSpawnOptions) +import Node.ChildProcess as Node.ChildProcess +import Node.Encoding (Encoding(UTF8)) +import Node.FS.Sync (appendTextFile) +import Node.FS.Sync as FS +import Node.Path (FilePath) +import Node.ReadLine as RL -- | Run several `Contract`s in tests in a (single) Testnet environment (cardano-testnet, kupo, etc.). -- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. @@ -74,7 +85,7 @@ spawnCardanoTestnet params {workdir} = do options (defaultSpawnOptions {cwd = Just workdir}) Nothing - where + where flag :: String -> String flag name = "--" <> name option :: forall a. Show a => String -> a -> String @@ -89,4 +100,28 @@ spawnCardanoTestnet params {workdir} = do , option "num-pool-nodes" <$> params.numPoolNodes , option "epoch-length" <$> params.epochLength , option "slot-length" <$> params.slotLength - ] \ No newline at end of file + ] + +startCardanoTestnet + :: CardanoTestnetStartupParams + -> Aff { process :: ManagedProcess, workdir :: FilePath } +startCardanoTestnet params = do + tmp <- liftEffect tmpdir + randomStr <- liftEffect $ uniqueId "" + let + workdir = tmp <> randomStr <> "-cardano-testnet-instance" + liftEffect $ mkDirIfNotExists workdir + -- clean up on SIGINT + _ <- forkAff do + waitForSignal SIGINT + liftEffect $ _rmdirSync workdir + + process@(ManagedProcess _ child _) <- spawnCardanoTestnet params {workdir} + + -- forward node's stdout + do + interface <- liftEffect $ RL.createInterface (Node.ChildProcess.stdout child) mempty + liftEffect $ flip RL.setLineHandler interface + \str -> appendTextFile UTF8 (workdir <> "log") $ "[cardano-testnet]: " <> str + + pure {process, workdir} From a8a8b4107b9e5b3334f186aeb735152f11457e6c Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 18:23:05 +0300 Subject: [PATCH 146/373] Extract utils in Plutip.Utils --- src/Internal/Plutip/Server.purs | 9 ++---- src/Internal/Plutip/Utils.purs | 54 ++++++++++++++++++++++++++++++--- 2 files changed, 51 insertions(+), 12 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 104314d08..aac68aabc 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -57,7 +57,7 @@ import Ctl.Internal.Plutip.Types , StopClusterRequest(StopClusterRequest) , StopClusterResponse ) -import Ctl.Internal.Plutip.Utils (tmpdir) +import Ctl.Internal.Plutip.Utils (tmpdir, runCleanup) import Ctl.Internal.QueryM.UniqueId (uniqueId) import Ctl.Internal.Service.Error ( ClientError(ClientDecodeJsonError, ClientHttpError) @@ -91,7 +91,7 @@ import Data.Newtype (over, unwrap, wrap) import Data.Set as Set import Data.String.CodeUnits (indexOf) as String import Data.String.Pattern (Pattern(Pattern)) -import Data.Traversable (foldMap, for, for_, sequence_, traverse_) +import Data.Traversable (foldMap, for, for_, traverse_) import Data.Tuple (fst, snd) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) @@ -203,11 +203,6 @@ runPlutipTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = do result <- liftEffect $ Ref.read resultRef >>= liftEither t result -runCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -runCleanup cleanupRef = do - cleanups <- liftEffect $ Ref.read cleanupRef - sequence_ (try <$> cleanups) - -- Similar to `catchError` but preserves the error whenError :: forall (a :: Type). Aff Unit -> Aff a -> Aff a whenError whenErrorAction action = do diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index a8be66024..b1370ac11 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -1,12 +1,24 @@ module Ctl.Internal.Plutip.Utils - ( tmpdir - , mkDirIfNotExists - ) where + ( mkDirIfNotExists + , runCleanup + , tmpdir + , cleanupOnExit + , waitForLine + ) + where + +import Contract.Prelude -import Prelude import Effect (Effect) +import Effect.Aff (try) +import Effect.Aff as Aff +import Effect.Ref (Ref) +import Effect.Ref as Ref import Node.FS.Sync as FS import Node.Path (FilePath) +import Node.Process as Process +import Node.ReadLine as RL +import Node.Stream (Readable) -- TODO: remove this function when PS bindings for os.tmpdir are available. -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/726 @@ -15,4 +27,36 @@ foreign import tmpdir :: Effect String mkDirIfNotExists :: FilePath -> Effect Unit mkDirIfNotExists dirName = do exists <- FS.exists dirName - unless exists $ FS.mkdir dirName \ No newline at end of file + unless exists $ FS.mkdir dirName + +runCleanup :: Ref (Array (Aff Unit)) -> Aff Unit +runCleanup cleanupRef = do + cleanups <- liftEffect $ Ref.read cleanupRef + sequence_ (try <$> cleanups) + +waitForBeforeExit :: Aff Unit +waitForBeforeExit = Aff.makeAff \cont -> do + isCanceledRef <- Ref.new false + let cancel = Ref.write false isCanceledRef + Process.onBeforeExit do + isCanceled <- Ref.read isCanceledRef + unless isCanceled do + cont $ Right unit + pure $ Aff.Canceler $ const $ liftEffect cancel + +waitForLine :: forall a. Readable a -> (String -> Effect Unit) -> Effect Aff.Canceler +waitForLine readable handler = do + isCanceledRef <- Ref.new false + let cancel = Ref.write false isCanceledRef + interface <- RL.createInterface readable mempty + flip RL.setLineHandler interface \line -> do + isCanceled <- Ref.read isCanceledRef + unless isCanceled do + handler line + pure $ Aff.Canceler $ const $ liftEffect cancel + +cleanupOnExit :: Ref (Array (Aff Unit)) -> Aff (Aff.Fiber Unit) +cleanupOnExit cleanupRef = Aff.forkAff do + waitForBeforeExit + log "Running cleanup on beforeExit" + runCleanup cleanupRef From 41c08feb733e4faa9f7e268eff01d50387509d42 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 18:23:42 +0300 Subject: [PATCH 147/373] Make proper logging and cleanup for cardano-testnet --- src/Internal/Testnet/Server.purs | 111 +++++++++++++++++++++++-------- 1 file changed, 82 insertions(+), 29 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index d693a17a7..ee4626e44 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -10,30 +10,32 @@ module Ctl.Internal.Testnet.Server import Prelude -import Contract.Prelude (liftEffect) +import Contract.Prelude (Effect, either, liftEffect, log, traverse) import Contract.Test.Mote (TestPlanM) +import Control.Monad.Error.Class (catchError) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), _rmdirSync, spawn, waitForSignal) +import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), _rmdirSync, spawn) import Ctl.Internal.Plutip.Types (ClusterStartupParameters, PlutipConfig, StopClusterResponse) -import Ctl.Internal.Plutip.Utils (mkDirIfNotExists, tmpdir) +import Ctl.Internal.Plutip.Utils (mkDirIfNotExists, tmpdir, waitForLine) import Ctl.Internal.QueryM.UniqueId (uniqueId) import Ctl.Internal.Test.ContractTest (ContractTest, ContractTestPlan(ContractTestPlan)) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) import Ctl.Internal.Wallet.Key (PrivatePaymentKey) -import Data.Array (catMaybes) +import Data.Array as Array import Data.Maybe (Maybe(Nothing, Just)) -import Data.Posix.Signal (Signal(..)) import Data.Tuple.Nested (type (/\)) -import Effect.Aff (Aff, forkAff) +import Effect.Aff (Aff, try) +import Effect.Exception (message) import Effect.Exception.Unsafe (unsafeThrow) +import Effect.Ref (Ref) +import Effect.Ref as Ref import Internal.Testnet.Types (CardanoTestnetStartupParams) import Node.ChildProcess (defaultSpawnOptions) import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (appendTextFile) -import Node.FS.Sync as FS import Node.Path (FilePath) -import Node.ReadLine as RL +import Node.Process (lookupEnv) -- | Run several `Contract`s in tests in a (single) Testnet environment (cardano-testnet, kupo, etc.). -- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. @@ -80,6 +82,7 @@ spawnCardanoTestnet :: -> { workdir :: FilePath } -> Aff ManagedProcess spawnCardanoTestnet params {workdir} = do + log $ show {options} spawn "cardano-testnet" options @@ -88,40 +91,90 @@ spawnCardanoTestnet params {workdir} = do where flag :: String -> String flag name = "--" <> name - option :: forall a. Show a => String -> a -> String - option name value = flag name <> " " <> show value + option :: forall a. Show a => String -> a -> Array String + option name value = [flag name, show value] + moption :: forall a. Show a => String -> Maybe a -> Array String + moption name value = option name =<< Array.fromFoldable value options :: Array String - options = catMaybes - [ Just $ option "testnet-magic" params.testnetMagic - , flag <<< show <$> params.era - , option "active-slots-coeff" <$> params.activeSlotsCoeff - , option "enable-p2p" <$> params.enableP2p - , option "node-logging-format" <$> params.nodeLoggingFormat - , option "num-pool-nodes" <$> params.numPoolNodes - , option "epoch-length" <$> params.epochLength - , option "slot-length" <$> params.slotLength + options = join + [ ["cardano"] + , option "testnet-magic" params.testnetMagic + , Array.fromFoldable $ flag <<< show <$> params.era + , moption "active-slots-coeff" params.activeSlotsCoeff + , moption "enable-p2p" params.enableP2p + , moption "node-logging-format" params.nodeLoggingFormat + , moption "num-pool-nodes" params.numPoolNodes + , moption "epoch-length" params.epochLength + , moption "slot-length" params.slotLength ] startCardanoTestnet :: CardanoTestnetStartupParams + -> Ref (Array (Aff Unit)) -> Aff { process :: ManagedProcess, workdir :: FilePath } -startCardanoTestnet params = do +startCardanoTestnet params cleanupRef = do + tmp <- liftEffect tmpdir randomStr <- liftEffect $ uniqueId "" let - workdir = tmp <> randomStr <> "-cardano-testnet-instance" + workdir = tmp <> "cardano-testnet-instance-" <> randomStr liftEffect $ mkDirIfNotExists workdir + -- clean up on SIGINT - _ <- forkAff do - waitForSignal SIGINT - liftEffect $ _rmdirSync workdir + shouldCleanup <- liftEffect $ lookupEnv "TESTNET_CLEANUP_WORKDIR" <#> case _ of + Just "0" -> false + _ -> true + when shouldCleanup + $ liftEffect + $ addCleanup cleanupRef + $ liftEffect do + log "Cleaning up workidr" + _rmdirSync workdir - process@(ManagedProcess _ child _) <- spawnCardanoTestnet params {workdir} + process <- spawnCardanoTestnet params {workdir} -- forward node's stdout - do - interface <- liftEffect $ RL.createInterface (Node.ChildProcess.stdout child) mempty - liftEffect $ flip RL.setLineHandler interface - \str -> appendTextFile UTF8 (workdir <> "log") $ "[cardano-testnet]: " <> str + liftEffect $ redirectLogging + { stdout: + { logFile: Just $ workdir <> "cardano-testnet-stdout.log" + , handleLine: log <<< append "[cardano-node-stdout]" + } + , stderr: + { logFile: Just $ workdir <> "cardano-testnet-stderr.log" + , handleLine: log <<< append "[cardano-node-stderr]" + } + } + process pure {process, workdir} + +redirectLogging :: + { stderr :: + { logFile :: Maybe FilePath + , handleLine :: String -> Effect Unit + } + , stdout :: + { logFile :: Maybe FilePath + , handleLine :: String -> Effect Unit + } + } -> + ManagedProcess -> + Effect Unit +redirectLogging {stderr,stdout} (ManagedProcess _ child _) = do + _ <- redirect stdout (Node.ChildProcess.stdout child) + _ <- redirect stderr (Node.ChildProcess.stderr child) + pure unit + where + redirect {handleLine, logFile} readable = waitForLine readable \str -> + flip catchError (message >>> append "redirectLogging: callback error: " >>> log) + $ void do + handleLine str + traverse (flip (appendTextFile UTF8) $ str <> "\n") logFile + +addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit +addCleanup = map void <<< flip (Ref.modify <<< Array.cons <<< reportError) + where + reportError action = do + try action >>= either + (log <<< append "[addCleanup][error]: " <<< message) + (const $ pure unit) \ No newline at end of file From e3109071e0f0ca7b83fca4bcc7c49f7731a9e5f3 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Fri, 31 May 2024 19:57:30 +0300 Subject: [PATCH 148/373] Make sure cardano-node operate strictly inside the workdir --- src/Internal/Testnet/Server.purs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index ee4626e44..06932d37e 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -29,13 +29,14 @@ import Effect.Exception (message) import Effect.Exception.Unsafe (unsafeThrow) import Effect.Ref (Ref) import Effect.Ref as Ref +import Foreign.Object as Object import Internal.Testnet.Types (CardanoTestnetStartupParams) import Node.ChildProcess (defaultSpawnOptions) import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (appendTextFile) import Node.Path (FilePath) -import Node.Process (lookupEnv) +import Node.Process as Node.Process -- | Run several `Contract`s in tests in a (single) Testnet environment (cardano-testnet, kupo, etc.). -- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. @@ -82,11 +83,11 @@ spawnCardanoTestnet :: -> { workdir :: FilePath } -> Aff ManagedProcess spawnCardanoTestnet params {workdir} = do - log $ show {options} + env <- Object.insert "TMPDIR" workdir <$> liftEffect Node.Process.getEnv spawn "cardano-testnet" options - (defaultSpawnOptions {cwd = Just workdir}) + (defaultSpawnOptions {cwd = Just workdir, env = Just env }) Nothing where flag :: String -> String @@ -121,7 +122,7 @@ startCardanoTestnet params cleanupRef = do liftEffect $ mkDirIfNotExists workdir -- clean up on SIGINT - shouldCleanup <- liftEffect $ lookupEnv "TESTNET_CLEANUP_WORKDIR" <#> case _ of + shouldCleanup <- liftEffect $ Node.Process.lookupEnv "TESTNET_CLEANUP_WORKDIR" <#> case _ of Just "0" -> false _ -> true when shouldCleanup From b37540c95e9f65bbece2942f35218d5ae1ea01fa Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 00:49:07 +0300 Subject: [PATCH 149/373] Export ogmios with little deps --- src/Internal/Plutip/Server.purs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index aac68aabc..8a69857d6 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -2,6 +2,7 @@ module Ctl.Internal.Plutip.Server ( checkPlutipServer , runPlutipContract , runPlutipTestPlan + , startOgmios , startPlutipCluster , startPlutipServer , stopChildProcessWithPort @@ -57,8 +58,9 @@ import Ctl.Internal.Plutip.Types , StopClusterRequest(StopClusterRequest) , StopClusterResponse ) -import Ctl.Internal.Plutip.Utils (tmpdir, runCleanup) +import Ctl.Internal.Plutip.Utils (runCleanup, tmpdir) import Ctl.Internal.QueryM.UniqueId (uniqueId) +import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Service.Error ( ClientError(ClientDecodeJsonError, ClientHttpError) , pprintClientError @@ -538,7 +540,14 @@ stopPlutipCluster cfg = do body either (liftEffect <<< throw <<< show) pure res -startOgmios :: PlutipConfig -> ClusterStartupParameters -> Aff ManagedProcess +startOgmios + :: forall r r' + . { ogmiosConfig :: ServerConfig | r } + -> { nodeSocketPath :: FilePath + , nodeConfigPath :: FilePath + | r' + } + -> Aff ManagedProcess startOgmios cfg params = do spawn "ogmios" ogmiosArgs defaultSpawnOptions $ Just From 97e72c8c1823e60bd3dc0e531d8c3b29bd713538 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 00:49:55 +0300 Subject: [PATCH 150/373] Make event emitters and handlers --- src/Internal/Plutip/Utils.purs | 83 ++++++++++++++++++++++++++++------ 1 file changed, 70 insertions(+), 13 deletions(-) diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index b1370ac11..2f8d22d2a 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -3,12 +3,17 @@ module Ctl.Internal.Plutip.Utils , runCleanup , tmpdir , cleanupOnExit - , waitForLine - ) - where + , handleLines + , EventSource(EventSource) + , onLine + , waitForEvent + ) where import Contract.Prelude +import Ctl.Internal.QueryM.UniqueId (uniqueId) +import Data.Map (Map) +import Data.Map as Map import Effect (Effect) import Effect.Aff (try) import Effect.Aff as Aff @@ -42,18 +47,70 @@ waitForBeforeExit = Aff.makeAff \cont -> do isCanceled <- Ref.read isCanceledRef unless isCanceled do cont $ Right unit - pure $ Aff.Canceler $ const $ liftEffect cancel + pure $ Aff.Canceler $ const $ liftEffect cancel + +handleLines + :: forall a + . Readable a + -> (String -> Effect Unit) + -> Effect { cancel :: Effect Unit } +handleLines readable handler = do + EventSource { subscribe, cancel } <- onLine readable Just + _ <- subscribe $ handler <<< _.event + pure { cancel } + +newtype EventSource b = EventSource + { subscribe :: + ({ unsubscribe :: Effect Unit, event :: b } -> Effect Unit) + -> Effect { unsubscribe :: Effect Unit } + , cancel :: Effect Unit + } + +-- | Waits for any event. Note, if the event source throws an async error, any joining process dies. +waitForEvent :: forall a. EventSource a -> Aff a +waitForEvent (EventSource { subscribe }) = Aff.makeAff \cont -> do + canceler <- makeCanceler + { unsubscribe } <- subscribe \{ unsubscribe, event } -> do + unsubscribe + canceler.isCanceled >>= flip unless do + cont $ Right event + pure $ Aff.Canceler $ const $ liftEffect do + unsubscribe + canceler.cancel + +onLine + :: forall a b + . Readable a + -> (String -> Maybe b) + -> Effect (EventSource b) +onLine readable filterLine = do + { isCanceled: getIsCanceled, cancel } <- makeCanceler + handlers <- Ref.new $ Map.fromFoldable [] + let + subscribe handler = do + id <- uniqueId "sub" + let unsubscribe = Ref.modify_ (Map.delete id) handlers + _ <- Ref.modify_ (Map.insert id \event -> handler { unsubscribe, event }) + handlers + pure { unsubscribe } -waitForLine :: forall a. Readable a -> (String -> Effect Unit) -> Effect Aff.Canceler -waitForLine readable handler = do - isCanceledRef <- Ref.new false - let cancel = Ref.write false isCanceledRef interface <- RL.createInterface readable mempty - flip RL.setLineHandler interface \line -> do - isCanceled <- Ref.read isCanceledRef - unless isCanceled do - handler line - pure $ Aff.Canceler $ const $ liftEffect cancel + flip RL.setLineHandler interface \line -> + case filterLine line of + Just a -> do + isCanceled <- getIsCanceled + unless isCanceled do + Ref.read handlers >>= traverse_ (_ $ a) + Nothing -> pure unit + pure $ EventSource { cancel, subscribe } + +makeCanceler :: Effect { cancel :: Effect Unit, isCanceled :: Effect Boolean } +makeCanceler = do + isCanceledRef <- Ref.new false + let + cancel = Ref.write false isCanceledRef + isCanceled = Ref.read isCanceledRef + pure { isCanceled, cancel } cleanupOnExit :: Ref (Array (Aff Unit)) -> Aff (Aff.Fiber Unit) cleanupOnExit cleanupRef = Aff.forkAff do From 11200517206079d572044cfaadbf3946903d9695 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 00:50:11 +0300 Subject: [PATCH 151/373] Make testnet utils --- src/Internal/Testnet/Utils.purs | 88 +++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 src/Internal/Testnet/Utils.purs diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs new file mode 100644 index 000000000..8c26529fb --- /dev/null +++ b/src/Internal/Testnet/Utils.purs @@ -0,0 +1,88 @@ +module Ctl.Internal.Testnet.Utils where + +import Contract.Prelude + +import Control.Monad.Error.Class (throwError) +import Control.Monad.Except (lift, runExceptT) +import Control.Monad.Rec.Class (Step(..), tailRecM) +import Ctl.Internal.Helpers ((<>)) +import Ctl.Internal.Plutip.Utils (EventSource, onLine, waitForEvent) +import Data.Monoid.Alternate (Alternate(..)) +import Data.String (Pattern(..), stripPrefix) +import Effect.Aff (Fiber, forkAff) +import Effect.Exception (Error, error) +import Internal.Testnet.Types (Event(..), StartupFailure(..), TestnetPaths) +import Node.FS.Sync as Node.FS +import Node.Path (FilePath) +import Node.Stream (Readable) + +parseEvent :: String -> Maybe Event +parseEvent = case _ of + " forAll109 =" -> Just Ready + "Usage: cardano-testnet cardano [--num-pool-nodes COUNT]" -> + Just $ StartupFailed SpawnFailed + "Failed to start testnet." -> + Just $ StartupFailed InitializationFailed + "Testnet is running. Type CTRL-C to exit." -> + Just Finished + _ -> Nothing + +onStartupFailure + :: forall a + . EventSource Event + -> (StartupFailure -> Aff a) + -> Aff (Fiber a) +onStartupFailure source handle = forkAff do + err <- waitFor source case _ of + StartupFailed err -> Just err + _ -> Nothing + handle err + +waitFor :: forall a. EventSource Event -> (Event -> Maybe a) -> Aff a +waitFor source f = flip tailRecM unit \_ -> do + event <- waitForEvent source + pure case f event of + Just a -> Done a + Nothing -> Loop unit + +onTestnetEvent :: forall a. Readable a -> Effect (EventSource Event) +onTestnetEvent = flip onLine parseEvent + +toAbsolutePaths :: { workdir :: FilePath } -> TestnetPaths -> TestnetPaths +toAbsolutePaths { workdir } { testnetDirectory, nodeSocketPath, nodeConfigPath } = + { testnetDirectory: testnetAbsPath + , nodeSocketPath: testnetAbsPath <> nodeSocketPath + , nodeConfigPath: testnetAbsPath <> nodeConfigPath + } + where + testnetAbsPath = workdir <> testnetDirectory + +findTestnetPaths + :: { workdir :: FilePath } -> Effect (Either Error TestnetPaths) +findTestnetPaths { workdir } = runExceptT do + paths <- lift $ Node.FS.readdir workdir + let + parseTestnetDir src = + src <$ stripPrefix (Pattern "testnet-test-") src + + testnetDirectory <- liftEither + $ note (error "Can't find testnet-test subdirectory") + $ unwrap + $ foldMap (Alternate <<< parseTestnetDir) paths + let + absTestnetDir = workdir <> testnetDirectory + nodeConfigPath = "configuration.yaml" + nodeSocketPath = "socket/node-spo1" + configPathExists <- lift $ Node.FS.exists $ absTestnetDir <> nodeConfigPath + socketPathExists <- lift $ Node.FS.exists $ absTestnetDir <> nodeSocketPath + unless configPathExists do + throwError $ error $ + "'configuration.yaml' not found in cardano-testnet working directory." + unless socketPathExists do + throwError $ error $ + "'socket/node-spo1' not found in cardano-testnet working directory." + pure + { testnetDirectory + , nodeConfigPath + , nodeSocketPath + } \ No newline at end of file From 1b1608cc3ff3b6574eadbba47fe20f8aab2acd3a Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 00:50:38 +0300 Subject: [PATCH 152/373] Refine testnet events --- src/Internal/Testnet/Types.purs | 43 ++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 6ba446251..3d256bf7e 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -1,15 +1,19 @@ module Internal.Testnet.Types ( CardanoTestnetStartupParams - , Era (..) - , LoggingFormat (..) + , Era(..) + , LoggingFormat(..) + , TestnetPaths + , Event(..) + , StartupFailure(..) , OptionalStartupParams , defaultOptionalStartupParams , defaultStartupParams ) where - import Contract.Prelude + import Data.Time.Duration (Milliseconds, Seconds) +import Node.Path (FilePath) import Record as Record data Era @@ -20,6 +24,26 @@ data Era | Alonzo | Babbage +data StartupFailure + = SpawnFailed + | InitializationFailed + +derive instance Eq StartupFailure +derive instance Generic StartupFailure _ +instance Show StartupFailure where + show = genericShow + +data Event + = Ready + | Finished + | Failed + | StartupFailed StartupFailure + +derive instance Eq Event +derive instance Generic Event _ +instance Show Event where + show = genericShow + instance Show Era where show = case _ of Byron -> "byron_era" @@ -30,9 +54,10 @@ instance Show Era where Babbage -> "babbage_era" data LoggingFormat = LogAsJson | LogAsText + instance Show LoggingFormat where show = case _ of - LogAsJson -> "json" + LogAsJson -> "json" LogAsText -> "text" type OptionalStartupParams = @@ -51,11 +76,11 @@ type CardanoTestnetStartupParams = | OptionalStartupParams } -defaultStartupParams :: {testnetMagic :: Int} -> CardanoTestnetStartupParams +defaultStartupParams :: { testnetMagic :: Int } -> CardanoTestnetStartupParams defaultStartupParams necessaryParams = defaultOptionalStartupParams `Record.union` necessaryParams -defaultOptionalStartupParams :: Record OptionalStartupParams +defaultOptionalStartupParams :: Record OptionalStartupParams defaultOptionalStartupParams = { numPoolNodes: Nothing , era: Nothing @@ -64,4 +89,10 @@ defaultOptionalStartupParams = , activeSlotsCoeff: Nothing , enableP2p: Nothing , nodeLoggingFormat: Nothing + } + +type TestnetPaths = + { testnetDirectory :: FilePath + , nodeConfigPath :: FilePath + , nodeSocketPath :: FilePath } \ No newline at end of file From e236d9fea6e3f70da9311ba73c5cc45c441574e2 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 00:51:28 +0300 Subject: [PATCH 153/373] Try starting ogmios along with the testnet --- src/Internal/Testnet/Server.purs | 238 +++++++++++++++++++++---------- 1 file changed, 165 insertions(+), 73 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 06932d37e..a27bd5c1d 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -5,32 +5,59 @@ module Ctl.Internal.Testnet.Server , stopTestnet , startCardanoTestnet , testTestnetContracts - ) - where + , startTestnetCluster + ) where import Prelude -import Contract.Prelude (Effect, either, liftEffect, log, traverse) +import Contract.Prelude (Effect, either, liftEffect, liftEither, log, traverse) import Contract.Test.Mote (TestPlanM) import Control.Monad.Error.Class (catchError) +import Control.Monad.Rec.Class (Step(..), tailRecM) import Ctl.Internal.Helpers ((<>)) +import Ctl.Internal.Plutip.Server (startOgmios) import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), _rmdirSync, spawn) -import Ctl.Internal.Plutip.Types (ClusterStartupParameters, PlutipConfig, StopClusterResponse) -import Ctl.Internal.Plutip.Utils (mkDirIfNotExists, tmpdir, waitForLine) +import Ctl.Internal.Plutip.Types + ( ClusterStartupParameters + , PlutipConfig + , StopClusterResponse + ) +import Ctl.Internal.Plutip.Utils + ( mkDirIfNotExists + , onLine + , tmpdir + , waitForEvent + ) import Ctl.Internal.QueryM.UniqueId (uniqueId) -import Ctl.Internal.Test.ContractTest (ContractTest, ContractTestPlan(ContractTestPlan)) +import Ctl.Internal.ServerConfig (ServerConfig) +import Ctl.Internal.Test.ContractTest + ( ContractTest + , ContractTestPlan(ContractTestPlan) + ) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) +import Ctl.Internal.Testnet.Utils + ( findTestnetPaths + , onTestnetEvent + , toAbsolutePaths + , waitFor + ) import Ctl.Internal.Wallet.Key (PrivatePaymentKey) import Data.Array as Array import Data.Maybe (Maybe(Nothing, Just)) +import Data.Posix.Signal (Signal(..)) import Data.Tuple.Nested (type (/\)) -import Effect.Aff (Aff, try) +import Effect.Aff (Aff, forkAff, try) +import Effect.Aff as Aff import Effect.Exception (message) import Effect.Exception.Unsafe (unsafeThrow) import Effect.Ref (Ref) import Effect.Ref as Ref import Foreign.Object as Object -import Internal.Testnet.Types (CardanoTestnetStartupParams) +import Internal.Testnet.Types + ( CardanoTestnetStartupParams + , Event(..) + , TestnetPaths + ) import Node.ChildProcess (defaultSpawnOptions) import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(UTF8)) @@ -59,6 +86,52 @@ checkTestnet cfg = unsafeThrow "checkTestnet" -- | setup. `ourKey` has funds proportional to the total amount of the -- | UTxOs in the passed distribution, so it can be used to handle -- | transaction fees. +startTestnetCluster + :: CardanoTestnetStartupParams + -> Ref (Array (Aff Unit)) + -> { ogmiosConfig :: ServerConfig + , kupoConfig :: ServerConfig + } + -> Aff + { ogmios :: ManagedProcess + , testnet :: ManagedProcess + , paths :: TestnetPaths + } +startTestnetCluster startupParams cleanupRef cfg = do + { process: process@(ManagedProcess _ testnetProcess _) + , workdir + } <- startCardanoTestnet startupParams cleanupRef + source <- liftEffect + $ onTestnetEvent + $ Node.ChildProcess.stdout testnetProcess + waitFor source case _ of + Ready -> Just unit + _ -> Nothing + paths <- liftEffect + $ + map (toAbsolutePaths { workdir }) + <<< liftEither + =<< findTestnetPaths { workdir } + ogmios <- after + (startOgmios cfg paths) + \(ManagedProcess _ ogmiosProcess _) -> + liftEffect + $ addCleanup cleanupRef + $ liftEffect + $ Node.ChildProcess.kill SIGINT ogmiosProcess + redirectLogging + { stderr: + { logFile: Just $ workdir <> "ogmios-stderr.log" + , handleLine: append "[ogmios][error]: " >>> log + } + , stdout: + { logFile: Just $ workdir <> "ogmios-stdout.log" + , handleLine: append "[ogmios]: " >>> log + } + } + ogmios + pure { paths, ogmios, testnet: process } + startTestnet :: PlutipConfig -> InitialUTxODistribution @@ -75,46 +148,54 @@ runTestnetTestPlan :: PlutipConfig -> ContractTestPlan -> TestPlanM (Aff Unit) Unit -runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = unsafeThrow "runTestnetTestPlan" +runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = + unsafeThrow "runTestnetTestPlan" + startCardanoTestnet -- | Runs cardano-testnet executable with provided params. -spawnCardanoTestnet :: - CardanoTestnetStartupParams +spawnCardanoTestnet + :: CardanoTestnetStartupParams -> { workdir :: FilePath } -> Aff ManagedProcess -spawnCardanoTestnet params {workdir} = do +spawnCardanoTestnet params { workdir } = do env <- Object.insert "TMPDIR" workdir <$> liftEffect Node.Process.getEnv spawn "cardano-testnet" options - (defaultSpawnOptions {cwd = Just workdir, env = Just env }) + (defaultSpawnOptions { cwd = Just workdir, env = Just env }) Nothing where - flag :: String -> String - flag name = "--" <> name - option :: forall a. Show a => String -> a -> Array String - option name value = [flag name, show value] - moption :: forall a. Show a => String -> Maybe a -> Array String - moption name value = option name =<< Array.fromFoldable value - options :: Array String - options = join - [ ["cardano"] - , option "testnet-magic" params.testnetMagic - , Array.fromFoldable $ flag <<< show <$> params.era - , moption "active-slots-coeff" params.activeSlotsCoeff - , moption "enable-p2p" params.enableP2p - , moption "node-logging-format" params.nodeLoggingFormat - , moption "num-pool-nodes" params.numPoolNodes - , moption "epoch-length" params.epochLength - , moption "slot-length" params.slotLength - ] + flag :: String -> String + flag name = "--" <> name + + option :: forall a. Show a => String -> a -> Array String + option name value = [ flag name, show value ] + + moption :: forall a. Show a => String -> Maybe a -> Array String + moption name value = option name =<< Array.fromFoldable value + + options :: Array String + options = join + [ [ "cardano" ] + , option "testnet-magic" params.testnetMagic + , Array.fromFoldable $ flag <<< show <$> params.era + , moption "active-slots-coeff" params.activeSlotsCoeff + , moption "enable-p2p" params.enableP2p + , moption "nodeLoggingFormat" params.nodeLoggingFormat + , moption "num-pool-nodes" params.numPoolNodes + , moption "epoch-length" params.epochLength + , moption "slot-length" params.slotLength + ] startCardanoTestnet :: CardanoTestnetStartupParams -> Ref (Array (Aff Unit)) - -> Aff { process :: ManagedProcess, workdir :: FilePath } + -> Aff + { process :: ManagedProcess + , workdir :: FilePath + } startCardanoTestnet params cleanupRef = do - + tmp <- liftEffect tmpdir randomStr <- liftEffect $ uniqueId "" let @@ -122,60 +203,71 @@ startCardanoTestnet params cleanupRef = do liftEffect $ mkDirIfNotExists workdir -- clean up on SIGINT - shouldCleanup <- liftEffect $ Node.Process.lookupEnv "TESTNET_CLEANUP_WORKDIR" <#> case _ of - Just "0" -> false - _ -> true + shouldCleanup <- liftEffect $ Node.Process.lookupEnv "TESTNET_CLEANUP_WORKDIR" + <#> case _ of + Just "0" -> false + _ -> true when shouldCleanup $ liftEffect - $ addCleanup cleanupRef + $ addCleanup cleanupRef $ liftEffect do - log "Cleaning up workidr" - _rmdirSync workdir + log "Cleaning up workidr" + _rmdirSync workdir - process <- spawnCardanoTestnet params {workdir} + process <- spawnCardanoTestnet params { workdir } -- forward node's stdout - liftEffect $ redirectLogging + redirectLogging { stdout: - { logFile: Just $ workdir <> "cardano-testnet-stdout.log" - , handleLine: log <<< append "[cardano-node-stdout]" - } + { logFile: Just $ workdir <> "cardano-testnet-stdout.log" + , handleLine: log <<< append "[cardano-node-stdout]" + } , stderr: - { logFile: Just $ workdir <> "cardano-testnet-stderr.log" - , handleLine: log <<< append "[cardano-node-stderr]" - } + { logFile: Just $ workdir <> "cardano-testnet-stderr.log" + , handleLine: log <<< append "[cardano-node-stderr]" + } } process - pure {process, workdir} + pure { process, workdir } -redirectLogging :: - { stderr :: - { logFile :: Maybe FilePath - , handleLine :: String -> Effect Unit - } - , stdout :: - { logFile :: Maybe FilePath - , handleLine :: String -> Effect Unit - } - } -> - ManagedProcess -> - Effect Unit -redirectLogging {stderr,stdout} (ManagedProcess _ child _) = do - _ <- redirect stdout (Node.ChildProcess.stdout child) - _ <- redirect stderr (Node.ChildProcess.stderr child) - pure unit +redirectLogging + :: { stderr :: + { logFile :: Maybe FilePath + , handleLine :: String -> Effect Unit + } + , stdout :: + { logFile :: Maybe FilePath + , handleLine :: String -> Effect Unit + } + } + -> ManagedProcess + -> Aff Unit +redirectLogging { stderr, stdout } (ManagedProcess _ child _) = do + _ <- redirect stdout (Node.ChildProcess.stdout child) + _ <- redirect stderr (Node.ChildProcess.stderr child) + pure unit where - redirect {handleLine, logFile} readable = waitForLine readable \str -> - flip catchError (message >>> append "redirectLogging: callback error: " >>> log) - $ void do - handleLine str - traverse (flip (appendTextFile UTF8) $ str <> "\n") logFile + logErrors = flip catchError + (message >>> append "redirectLogging: callback error: " >>> log) + redirect { handleLine, logFile } readable = do + events <- liftEffect $ onLine readable Just + _ <- forkAff $ flip tailRecM unit \_ -> do + line <- waitForEvent events + liftEffect $ logErrors $ void do + handleLine line + traverse (flip (appendTextFile UTF8) $ line <> "\n") logFile + pure $ Loop unit + pure unit addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit addCleanup = map void <<< flip (Ref.modify <<< Array.cons <<< reportError) where - reportError action = do - try action >>= either - (log <<< append "[addCleanup][error]: " <<< message) - (const $ pure unit) \ No newline at end of file + reportError action = do + try action >>= either + (log <<< append "[addCleanup][error]: " <<< message) + (const $ pure unit) + +-- | Just as a bracket but without the body. +after :: forall a. Aff a -> (a -> Aff Unit) -> Aff a +after first second = Aff.bracket first second pure \ No newline at end of file From 843f26eb32040ed1d1d82edd688fcd75aa05b837 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 01:51:08 +0300 Subject: [PATCH 154/373] Generalize event sources so can create childs --- src/Internal/Plutip/Utils.purs | 44 +++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 2f8d22d2a..014b594d5 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -6,13 +6,14 @@ module Ctl.Internal.Plutip.Utils , handleLines , EventSource(EventSource) , onLine + , makeEventSource + , narrowEventSource , waitForEvent ) where import Contract.Prelude import Ctl.Internal.QueryM.UniqueId (uniqueId) -import Data.Map (Map) import Data.Map as Map import Effect (Effect) import Effect.Aff (try) @@ -83,7 +84,32 @@ onLine . Readable a -> (String -> Maybe b) -> Effect (EventSource b) -onLine readable filterLine = do +onLine readable = + map _.eventSource <<< makeEventSource \cont -> do + interface <- RL.createInterface readable mempty + flip RL.setLineHandler interface cont + +-- | Create an event source based on another event source, but +-- with smaller variety of events. +narrowEventSource + :: forall a b + . (a -> Maybe b) + -> EventSource a + -> Effect (EventSource b) +narrowEventSource filter (EventSource { subscribe }) = do + { eventSource: EventSource source@{ cancel } + , outcome: { unsubscribe } + } <- flip makeEventSource filter \registerHandler -> + subscribe $ registerHandler <<< _.event + pure $ EventSource source + { cancel = cancel *> unsubscribe } + +makeEventSource + :: forall a b c + . ((a -> Effect Unit) -> Effect c) + -> (a -> Maybe b) + -> Effect { eventSource :: EventSource b, outcome :: c } +makeEventSource subscribeOnEvents filter = do { isCanceled: getIsCanceled, cancel } <- makeCanceler handlers <- Ref.new $ Map.fromFoldable [] let @@ -94,15 +120,17 @@ onLine readable filterLine = do handlers pure { unsubscribe } - interface <- RL.createInterface readable mempty - flip RL.setLineHandler interface \line -> - case filterLine line of - Just a -> do + outcome <- subscribeOnEvents \a -> + case filter a of + Just b -> do isCanceled <- getIsCanceled unless isCanceled do - Ref.read handlers >>= traverse_ (_ $ a) + Ref.read handlers >>= traverse_ (_ $ b) Nothing -> pure unit - pure $ EventSource { cancel, subscribe } + pure + { eventSource: EventSource { cancel, subscribe } + , outcome + } makeCanceler :: Effect { cancel :: Effect Unit, isCanceled :: Effect Boolean } makeCanceler = do From 460e6881b4de2203eb9e0aed48a5e9daca658922 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 01:51:53 +0300 Subject: [PATCH 155/373] Do not create extra node event handlers for additional event streams --- src/Internal/Testnet/Utils.purs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index 8c26529fb..a9bec4d4a 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -6,7 +6,7 @@ import Control.Monad.Error.Class (throwError) import Control.Monad.Except (lift, runExceptT) import Control.Monad.Rec.Class (Step(..), tailRecM) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Utils (EventSource, onLine, waitForEvent) +import Ctl.Internal.Plutip.Utils (EventSource, narrowEventSource, waitForEvent) import Data.Monoid.Alternate (Alternate(..)) import Data.String (Pattern(..), stripPrefix) import Effect.Aff (Fiber, forkAff) @@ -14,7 +14,6 @@ import Effect.Exception (Error, error) import Internal.Testnet.Types (Event(..), StartupFailure(..), TestnetPaths) import Node.FS.Sync as Node.FS import Node.Path (FilePath) -import Node.Stream (Readable) parseEvent :: String -> Maybe Event parseEvent = case _ of @@ -45,8 +44,8 @@ waitFor source f = flip tailRecM unit \_ -> do Just a -> Done a Nothing -> Loop unit -onTestnetEvent :: forall a. Readable a -> Effect (EventSource Event) -onTestnetEvent = flip onLine parseEvent +onTestnetEvent :: EventSource String -> Effect (EventSource Event) +onTestnetEvent = narrowEventSource parseEvent toAbsolutePaths :: { workdir :: FilePath } -> TestnetPaths -> TestnetPaths toAbsolutePaths { workdir } { testnetDirectory, nodeSocketPath, nodeConfigPath } = From c1642f60cc6522e1780eaace5755b6169b7d79ee Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 01:52:30 +0300 Subject: [PATCH 156/373] Return processes stderr and stdout event sources --- src/Internal/Testnet/Server.purs | 159 ++++++++++++++++++------------- 1 file changed, 93 insertions(+), 66 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index a27bd5c1d..76f355668 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -23,7 +23,8 @@ import Ctl.Internal.Plutip.Types , StopClusterResponse ) import Ctl.Internal.Plutip.Utils - ( mkDirIfNotExists + ( EventSource + , mkDirIfNotExists , onLine , tmpdir , waitForEvent @@ -80,6 +81,11 @@ testTestnetContracts testnetCfg tp = unsafeThrow "sdfsd" checkTestnet :: PlutipConfig -> Aff Unit checkTestnet cfg = unsafeThrow "checkTestnet" +type Channels a = + { stderr :: EventSource a + , stdout :: EventSource a + } + -- | Start the plutip cluster, initializing the state with the given -- | UTxO distribution. Also initializes an extra payment key (aka -- | `ourKey`) with some UTxOs for use with further plutip @@ -93,44 +99,62 @@ startTestnetCluster , kupoConfig :: ServerConfig } -> Aff - { ogmios :: ManagedProcess - , testnet :: ManagedProcess + { ogmios :: + { process :: ManagedProcess + , channels :: Channels String + } + , testnet :: + { process :: ManagedProcess + , channels :: Channels String + } , paths :: TestnetPaths } startTestnetCluster startupParams cleanupRef cfg = do - { process: process@(ManagedProcess _ testnetProcess _) + { testnet + , channels , workdir } <- startCardanoTestnet startupParams cleanupRef - source <- liftEffect - $ onTestnetEvent - $ Node.ChildProcess.stdout testnetProcess + source <- liftEffect $ onTestnetEvent channels.stdout + + -- it will crash right here if testnet process will die waitFor source case _ of Ready -> Just unit _ -> Nothing - paths <- liftEffect - $ - map (toAbsolutePaths { workdir }) - <<< liftEither - =<< findTestnetPaths { workdir } - ogmios <- after - (startOgmios cfg paths) - \(ManagedProcess _ ogmiosProcess _) -> - liftEffect - $ addCleanup cleanupRef - $ liftEffect - $ Node.ChildProcess.kill SIGINT ogmiosProcess - redirectLogging - { stderr: - { logFile: Just $ workdir <> "ogmios-stderr.log" - , handleLine: append "[ogmios][error]: " >>> log - } - , stdout: - { logFile: Just $ workdir <> "ogmios-stdout.log" - , handleLine: append "[ogmios]: " >>> log - } + + paths <- + map (toAbsolutePaths { workdir }) + <<< liftEither + =<< liftEffect (findTestnetPaths { workdir }) + + ogmios <- startOgmios' { paths, workdir } + + pure + { paths + , ogmios: ogmios + , testnet: { process: testnet, channels } } - ogmios - pure { paths, ogmios, testnet: process } + where + startOgmios' { paths, workdir } = do + ogmios <- after + (startOgmios cfg paths) + \(ManagedProcess _ ogmiosProcess _) -> + liftEffect + $ addCleanup cleanupRef + $ liftEffect + $ Node.ChildProcess.kill SIGINT ogmiosProcess + + ogmiosChannels <- liftEffect $ getChannels ogmios + redirectLogging + ogmiosChannels.stderr + { logFile: Just $ workdir <> "ogmios-stderr.log" + , handleLine: append "[ogmios][error]: " >>> log + } + redirectLogging + ogmiosChannels.stdout + { logFile: Just $ workdir <> "ogmios-stdout.log" + , handleLine: append "[ogmios]: " >>> log + } + pure { process: ogmios, channels: ogmiosChannels } startTestnet :: PlutipConfig @@ -191,7 +215,11 @@ startCardanoTestnet :: CardanoTestnetStartupParams -> Ref (Array (Aff Unit)) -> Aff - { process :: ManagedProcess + { testnet :: ManagedProcess + , channels :: + { stderr :: EventSource String + , stdout :: EventSource String + } , workdir :: FilePath } startCardanoTestnet params cleanupRef = do @@ -214,51 +242,50 @@ startCardanoTestnet params cleanupRef = do log "Cleaning up workidr" _rmdirSync workdir - process <- spawnCardanoTestnet params { workdir } + testnet <- spawnCardanoTestnet params { workdir } + channels <- liftEffect $ getChannels testnet -- forward node's stdout - redirectLogging - { stdout: - { logFile: Just $ workdir <> "cardano-testnet-stdout.log" - , handleLine: log <<< append "[cardano-node-stdout]" - } - , stderr: - { logFile: Just $ workdir <> "cardano-testnet-stderr.log" - , handleLine: log <<< append "[cardano-node-stderr]" - } + redirectLogging channels.stdout + { logFile: Just $ workdir <> "cardano-testnet-stdout.log" + , handleLine: log <<< append "[cardano-node-stdout]" + } + redirectLogging channels.stderr + { logFile: Just $ workdir <> "cardano-testnet-stderr.log" + , handleLine: log <<< append "[cardano-node-stderr]" } - process - pure { process, workdir } + pure { testnet, workdir, channels } + +getChannels + :: ManagedProcess + -> Effect + { stderr :: EventSource String + , stdout :: EventSource String + } +getChannels (ManagedProcess _ process _) = ado + stdout <- onLine (Node.ChildProcess.stdout process) Just + stderr <- onLine (Node.ChildProcess.stderr process) Just + in { stdout, stderr } redirectLogging - :: { stderr :: - { logFile :: Maybe FilePath - , handleLine :: String -> Effect Unit - } - , stdout :: - { logFile :: Maybe FilePath - , handleLine :: String -> Effect Unit - } + :: forall a + . Show a + => EventSource a + -> { logFile :: Maybe FilePath + , handleLine :: a -> Effect Unit } - -> ManagedProcess -> Aff Unit -redirectLogging { stderr, stdout } (ManagedProcess _ child _) = do - _ <- redirect stdout (Node.ChildProcess.stdout child) - _ <- redirect stderr (Node.ChildProcess.stderr child) - pure unit +redirectLogging events { handleLine, logFile } = + void $ forkAff $ flip tailRecM unit \_ -> do + line <- waitForEvent events + liftEffect $ logErrors $ void do + handleLine line + traverse (flip (appendTextFile UTF8) $ show line <> "\n") logFile + pure $ Loop unit where logErrors = flip catchError - (message >>> append "redirectLogging: callback error: " >>> log) - redirect { handleLine, logFile } readable = do - events <- liftEffect $ onLine readable Just - _ <- forkAff $ flip tailRecM unit \_ -> do - line <- waitForEvent events - liftEffect $ logErrors $ void do - handleLine line - traverse (flip (appendTextFile UTF8) $ line <> "\n") logFile - pure $ Loop unit - pure unit + $ message >>> append "redirectLogging: callback error: " >>> log addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit addCleanup = map void <<< flip (Ref.modify <<< Array.cons <<< reportError) From 07ca15cf518570deb451d4eb8202708f5f7cbc79 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 03:13:38 +0300 Subject: [PATCH 157/373] Use testnet's dir as working dir to shorten path for ogmios Ogmios doesn't work with long paths. --- src/Internal/Testnet/Server.purs | 107 ++++++++++++++++++------------- src/Internal/Testnet/Utils.purs | 51 ++++++++------- 2 files changed, 93 insertions(+), 65 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 76f355668..51d7bc624 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -8,9 +8,8 @@ module Ctl.Internal.Testnet.Server , startTestnetCluster ) where -import Prelude +import Contract.Prelude -import Contract.Prelude (Effect, either, liftEffect, liftEither, log, traverse) import Contract.Test.Mote (TestPlanM) import Control.Monad.Error.Class (catchError) import Control.Monad.Rec.Class (Step(..), tailRecM) @@ -23,13 +22,12 @@ import Ctl.Internal.Plutip.Types , StopClusterResponse ) import Ctl.Internal.Plutip.Utils - ( EventSource - , mkDirIfNotExists + ( EventSource(..) + , narrowEventSource , onLine , tmpdir , waitForEvent ) -import Ctl.Internal.QueryM.UniqueId (uniqueId) import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Test.ContractTest ( ContractTest @@ -39,6 +37,7 @@ import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) import Ctl.Internal.Testnet.Utils ( findTestnetPaths , onTestnetEvent + , tellsIt'sLocation , toAbsolutePaths , waitFor ) @@ -53,7 +52,6 @@ import Effect.Exception (message) import Effect.Exception.Unsafe (unsafeThrow) import Effect.Ref (Ref) import Effect.Ref as Ref -import Foreign.Object as Object import Internal.Testnet.Types ( CardanoTestnetStartupParams , Event(..) @@ -112,7 +110,7 @@ startTestnetCluster startTestnetCluster startupParams cleanupRef cfg = do { testnet , channels - , workdir + , workdirAbsolute } <- startCardanoTestnet startupParams cleanupRef source <- liftEffect $ onTestnetEvent channels.stdout @@ -122,11 +120,11 @@ startTestnetCluster startupParams cleanupRef cfg = do _ -> Nothing paths <- - map (toAbsolutePaths { workdir }) + map toAbsolutePaths <<< liftEither - =<< liftEffect (findTestnetPaths { workdir }) + =<< liftEffect (findTestnetPaths { workdir: workdirAbsolute }) - ogmios <- startOgmios' { paths, workdir } + ogmios <- startOgmios' { paths, workdir: workdirAbsolute } pure { paths @@ -146,12 +144,18 @@ startTestnetCluster startupParams cleanupRef cfg = do ogmiosChannels <- liftEffect $ getChannels ogmios redirectLogging ogmiosChannels.stderr - { logFile: Just $ workdir <> "ogmios-stderr.log" + { storeLogs: Just + { logFile: workdir <> "ogmios-stderr.log" + , toString: identity + } , handleLine: append "[ogmios][error]: " >>> log } redirectLogging ogmiosChannels.stdout - { logFile: Just $ workdir <> "ogmios-stdout.log" + { storeLogs: Just + { logFile: workdir <> "ogmios-stdout.log" + , toString: identity + } , handleLine: append "[ogmios]: " >>> log } pure { process: ogmios, channels: ogmiosChannels } @@ -179,14 +183,12 @@ runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = -- | Runs cardano-testnet executable with provided params. spawnCardanoTestnet :: CardanoTestnetStartupParams - -> { workdir :: FilePath } -> Aff ManagedProcess -spawnCardanoTestnet params { workdir } = do - env <- Object.insert "TMPDIR" workdir <$> liftEffect Node.Process.getEnv +spawnCardanoTestnet params = do spawn "cardano-testnet" options - (defaultSpawnOptions { cwd = Just workdir, env = Just env }) + defaultSpawnOptions Nothing where flag :: String -> String @@ -220,42 +222,55 @@ startCardanoTestnet { stderr :: EventSource String , stdout :: EventSource String } - , workdir :: FilePath + , workdirAbsolute :: FilePath } startCardanoTestnet params cleanupRef = do tmp <- liftEffect tmpdir - randomStr <- liftEffect $ uniqueId "" - let - workdir = tmp <> "cardano-testnet-instance-" <> randomStr - liftEffect $ mkDirIfNotExists workdir - -- clean up on SIGINT - shouldCleanup <- liftEffect $ Node.Process.lookupEnv "TESTNET_CLEANUP_WORKDIR" - <#> case _ of - Just "0" -> false - _ -> true - when shouldCleanup - $ liftEffect - $ addCleanup cleanupRef - $ liftEffect do - log "Cleaning up workidr" - _rmdirSync workdir - - testnet <- spawnCardanoTestnet params { workdir } + testnet <- spawnCardanoTestnet params channels <- liftEffect $ getChannels testnet + workdirAbsolute <- do + events@(EventSource { cancel }) <- liftEffect + $ narrowEventSource + (tellsIt'sLocation { tmpdir: tmp }) + channels.stdout + workdir <- waitForEvent events + log $ "Found workdir: " <> workdir + liftEffect cancel + pure $ tmp <> workdir + + -- clean up on SIGINT + do + shouldCleanup <- liftEffect + $ Node.Process.lookupEnv "TESTNET_CLEANUP_WORKDIR" + <#> case _ of + Just "0" -> false + _ -> true + when shouldCleanup + $ liftEffect + $ addCleanup cleanupRef + $ liftEffect do + log "Cleaning up workidr" + _rmdirSync workdirAbsolute -- forward node's stdout redirectLogging channels.stdout - { logFile: Just $ workdir <> "cardano-testnet-stdout.log" + { storeLogs: Just + { logFile: workdirAbsolute <> "cardano-testnet-stdout.log" + , toString: identity + } , handleLine: log <<< append "[cardano-node-stdout]" } redirectLogging channels.stderr - { logFile: Just $ workdir <> "cardano-testnet-stderr.log" + { storeLogs: Just + { logFile: workdirAbsolute <> "cardano-testnet-stderr.log" + , toString: identity + } , handleLine: log <<< append "[cardano-node-stderr]" } - pure { testnet, workdir, channels } + pure { testnet, workdirAbsolute, channels } getChannels :: ManagedProcess @@ -270,22 +285,28 @@ getChannels (ManagedProcess _ process _) = ado redirectLogging :: forall a - . Show a - => EventSource a - -> { logFile :: Maybe FilePath + . EventSource a + -> { storeLogs :: + Maybe + { logFile :: FilePath + , toString :: a -> String + } , handleLine :: a -> Effect Unit } -> Aff Unit -redirectLogging events { handleLine, logFile } = +redirectLogging events { handleLine, storeLogs } = void $ forkAff $ flip tailRecM unit \_ -> do line <- waitForEvent events liftEffect $ logErrors $ void do handleLine line - traverse (flip (appendTextFile UTF8) $ show line <> "\n") logFile + for storeLogs \{ logFile, toString } -> + appendTextFile UTF8 logFile $ toString line <> "\n" pure $ Loop unit where logErrors = flip catchError - $ message >>> append "redirectLogging: callback error: " >>> log + $ message + >>> append "redirectLogging: callback error: " + >>> log addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit addCleanup = map void <<< flip (Ref.modify <<< Array.cons <<< reportError) diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index a9bec4d4a..bebc53355 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -7,14 +7,29 @@ import Control.Monad.Except (lift, runExceptT) import Control.Monad.Rec.Class (Step(..), tailRecM) import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Plutip.Utils (EventSource, narrowEventSource, waitForEvent) -import Data.Monoid.Alternate (Alternate(..)) -import Data.String (Pattern(..), stripPrefix) +import Data.String (Pattern(..), contains) +import Data.String as String import Effect.Aff (Fiber, forkAff) import Effect.Exception (Error, error) import Internal.Testnet.Types (Event(..), StartupFailure(..), TestnetPaths) import Node.FS.Sync as Node.FS import Node.Path (FilePath) +parseTestnetDirectory :: { tmpdir :: FilePath } -> String -> Maybe FilePath +parseTestnetDirectory { tmpdir } = + map (String.takeWhile $ not <<< isFolderSeparator) + <<< String.stripPrefix (Pattern $ tmpdir <> "/") + <<< String.dropWhile (not <<< isFolderSeparator) + where + isFolderSeparator = eq $ String.codePointFromChar '/' + +tellsIt'sLocation :: { tmpdir :: FilePath } -> String -> Maybe FilePath +tellsIt'sLocation tmpdir src + | contains (Pattern "stake-pools.json") src + , contains (Pattern " ━━━━ File:") src = + parseTestnetDirectory tmpdir src + | otherwise = Nothing + parseEvent :: String -> Maybe Event parseEvent = case _ of " forAll109 =" -> Just Ready @@ -47,33 +62,25 @@ waitFor source f = flip tailRecM unit \_ -> do onTestnetEvent :: EventSource String -> Effect (EventSource Event) onTestnetEvent = narrowEventSource parseEvent -toAbsolutePaths :: { workdir :: FilePath } -> TestnetPaths -> TestnetPaths -toAbsolutePaths { workdir } { testnetDirectory, nodeSocketPath, nodeConfigPath } = - { testnetDirectory: testnetAbsPath - , nodeSocketPath: testnetAbsPath <> nodeSocketPath - , nodeConfigPath: testnetAbsPath <> nodeConfigPath +toAbsolutePaths :: TestnetPaths -> TestnetPaths +toAbsolutePaths { testnetDirectory, nodeSocketPath, nodeConfigPath } = + { testnetDirectory + , nodeSocketPath: testnetDirectory <> nodeSocketPath + , nodeConfigPath: testnetDirectory <> nodeConfigPath } - where - testnetAbsPath = workdir <> testnetDirectory findTestnetPaths :: { workdir :: FilePath } -> Effect (Either Error TestnetPaths) findTestnetPaths { workdir } = runExceptT do - paths <- lift $ Node.FS.readdir workdir let - parseTestnetDir src = - src <$ stripPrefix (Pattern "testnet-test-") src - - testnetDirectory <- liftEither - $ note (error "Can't find testnet-test subdirectory") - $ unwrap - $ foldMap (Alternate <<< parseTestnetDir) paths - let - absTestnetDir = workdir <> testnetDirectory nodeConfigPath = "configuration.yaml" nodeSocketPath = "socket/node-spo1" - configPathExists <- lift $ Node.FS.exists $ absTestnetDir <> nodeConfigPath - socketPathExists <- lift $ Node.FS.exists $ absTestnetDir <> nodeSocketPath + workdirExists <- lift $ Node.FS.exists $ workdir + configPathExists <- lift $ Node.FS.exists $ workdir <> nodeConfigPath + socketPathExists <- lift $ Node.FS.exists $ workdir <> nodeSocketPath + unless workdirExists do + throwError $ error $ + "cardano-testnet working directory not found." unless configPathExists do throwError $ error $ "'configuration.yaml' not found in cardano-testnet working directory." @@ -81,7 +88,7 @@ findTestnetPaths { workdir } = runExceptT do throwError $ error $ "'socket/node-spo1' not found in cardano-testnet working directory." pure - { testnetDirectory + { testnetDirectory: workdir , nodeConfigPath , nodeSocketPath } \ No newline at end of file From 7aefb9bf7080f8366180b97026a66046b82b5937 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 03:17:21 +0300 Subject: [PATCH 158/373] Do not forward ogmios stdout to console --- src/Internal/Testnet/Server.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 51d7bc624..0a91a8e73 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -156,7 +156,7 @@ startTestnetCluster startupParams cleanupRef cfg = do { logFile: workdir <> "ogmios-stdout.log" , toString: identity } - , handleLine: append "[ogmios]: " >>> log + , handleLine: const $ pure unit } pure { process: ogmios, channels: ogmiosChannels } From ade034c81517deecaf91f0bc5404a7a1dc531fc6 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 13:22:33 +0300 Subject: [PATCH 159/373] Do not schedule any cleanups outside cleanupRef --- src/Internal/Plutip/Server.purs | 70 +++++++++++++++++---------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 8a69857d6..4b34f4000 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -3,6 +3,7 @@ module Ctl.Internal.Plutip.Server , runPlutipContract , runPlutipTestPlan , startOgmios + , startKupo , startPlutipCluster , startPlutipServer , stopChildProcessWithPort @@ -42,10 +43,7 @@ import Ctl.Internal.Plutip.PortCheck (isPortAvailable) import Ctl.Internal.Plutip.Spawn ( ManagedProcess , NewOutputAction(Success, NoOp) - , OnSignalRef - , cleanupOnSigint - , cleanupTmpDir - , removeOnSignal + , _rmdirSync , spawn , stop ) @@ -58,7 +56,13 @@ import Ctl.Internal.Plutip.Types , StopClusterRequest(StopClusterRequest) , StopClusterResponse ) -import Ctl.Internal.Plutip.Utils (runCleanup, tmpdir) +import Ctl.Internal.Plutip.Utils + ( addCleanup + , after + , runCleanup + , suppressAndLogErrors + , tmpdir + ) import Ctl.Internal.QueryM.UniqueId (uniqueId) import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Service.Error @@ -117,7 +121,7 @@ import Mote.Monad (MoteT(MoteT), mapTest) import Mote.TestPlanM (TestPlanM) import Node.ChildProcess (defaultSpawnOptions) import Node.FS.Sync (exists, mkdir) as FSSync -import Node.Path (FilePath, dirname) +import Node.Path (FilePath) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Type.Prelude (Proxy(Proxy)) @@ -355,17 +359,15 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do startOgmios' :: ClusterStartupParameters -> Aff Unit startOgmios' response = - bracket (startOgmios plutipCfg response) - (stopChildProcessWithPort plutipCfg.ogmiosConfig.port) - (const $ pure unit) + void + $ after (startOgmios plutipCfg response) + $ stopChildProcessWithPort plutipCfg.ogmiosConfig.port startKupo' :: ClusterStartupParameters -> Aff Unit startKupo' response = - bracket (startKupo plutipCfg response) - (stopChildProcessWithPortAndRemoveOnSignal plutipCfg.kupoConfig.port) - \(process /\ workdir /\ _) -> do - liftEffect $ cleanupTmpDir process workdir - pure unit + void + $ after (startKupo plutipCfg response cleanupRef) + $ fst >>> stopChildProcessWithPort plutipCfg.kupoConfig.port mkWallets' :: ContractEnv @@ -568,22 +570,33 @@ startOgmios cfg params = do ] startKupo - :: PlutipConfig - -> ClusterStartupParameters - -> Aff (ManagedProcess /\ String /\ OnSignalRef) -startKupo cfg params = do + :: forall r r' + . { kupoConfig :: ServerConfig | r } + -> { nodeSocketPath :: FilePath + , nodeConfigPath :: FilePath + | r' + } + -> Ref (Array (Aff Unit)) + -> Aff (ManagedProcess /\ String) +startKupo cfg params cleanupRef = do tmpDir <- liftEffect tmpdir randomStr <- liftEffect $ uniqueId "" let workdir = tmpDir <> randomStr <> "-kupo-db" - testClusterDir = (dirname <<< dirname) params.nodeConfigPath liftEffect do workdirExists <- FSSync.exists workdir unless workdirExists (FSSync.mkdir workdir) - childProcess <- spawnKupoProcess workdir - -- here we also set the SIGINT handler for the whole process - sig <- liftEffect $ cleanupOnSigint workdir testClusterDir - pure (childProcess /\ workdir /\ sig) + childProcess <- + after + (spawnKupoProcess workdir) + -- set up cleanup + $ const + $ liftEffect + $ addCleanup cleanupRef + $ liftEffect + $ suppressAndLogErrors do + _rmdirSync workdir + pure (childProcess /\ workdir) where spawnKupoProcess :: FilePath -> Aff ManagedProcess spawnKupoProcess workdir = @@ -637,17 +650,6 @@ stopChildProcessWithPort port childProcess = do unless isAvailable do liftEffect $ throw "retry" -stopChildProcessWithPortAndRemoveOnSignal - :: UInt -> (ManagedProcess /\ String /\ OnSignalRef) -> Aff Unit -stopChildProcessWithPortAndRemoveOnSignal port (childProcess /\ _ /\ sig) = do - stop $ childProcess - void $ recovering defaultRetryPolicy ([ \_ _ -> pure true ]) - \_ -> do - isAvailable <- isPortAvailable port - unless isAvailable do - liftEffect $ throw "retry" - liftEffect $ removeOnSignal sig - mkClusterContractEnv :: PlutipConfig -> Logger From b76b52da003140b483cfbe1cc3ab104989d795db Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 13:23:31 +0300 Subject: [PATCH 160/373] Implement killProcessWithPort using fuser --- src/Internal/Plutip/Spawn.purs | 36 +++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Plutip/Spawn.purs index bde350961..d9a81d996 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Plutip/Spawn.purs @@ -12,25 +12,37 @@ module Ctl.Internal.Plutip.Spawn , cleanupOnSigint , removeOnSignal , waitForSignal + , killProcessWithPort , _rmdirSync ) where import Prelude +import Contract.Prelude (maybe) import Control.Monad.Error.Class (throwError) +import Ctl.Internal.Plutip.PortCheck (isPortAvailable) import Ctl.Internal.Plutip.Types (FilePath) import Data.Either (Either(Left)) import Data.Foldable (foldMap) import Data.Maybe (Maybe(Just, Nothing)) import Data.Posix.Signal (Signal(SIGINT)) import Data.Posix.Signal as Signal +import Data.Time.Duration (Milliseconds(Milliseconds)) +import Data.UInt (UInt) +import Data.UInt as UInt import Effect (Effect) import Effect.AVar (AVar) import Effect.AVar (empty, tryPut) as AVar import Effect.Aff (Aff, Canceler(Canceler), makeAff) import Effect.Aff.AVar (isEmpty, read, status) as AVar +import Effect.Aff.Retry + ( RetryPolicy + , constantDelay + , limitRetriesByCumulativeDelay + , recovering + ) import Effect.Class (liftEffect) -import Effect.Exception (Error, error) +import Effect.Exception (Error, error, throw) import Effect.Ref as Ref import Node.ChildProcess ( ChildProcess @@ -39,6 +51,7 @@ import Node.ChildProcess , stdout ) import Node.ChildProcess as ChildProcess +import Node.ChildProcess as Node.ChildProcess import Node.ReadLine (Interface, close, createInterface, setLineHandler) as RL -- | Carry along an `AVar` which resolves when the process closes. @@ -146,6 +159,27 @@ cleanupOnSigint workingDir testClusterDir = do _rmdirSync testClusterDir pure sig +killByPort :: UInt -> Effect Unit +killByPort port = + void $ Node.ChildProcess.exec + ("fuser -k " <> show (UInt.toInt port) <> "/tcp") + Node.ChildProcess.defaultExecOptions + \{ error } -> maybe (pure unit) throwError error + +-- | Kill a process and wait for it to stop listening on a specific port. +killProcessWithPort :: UInt -> Aff Unit +killProcessWithPort port = do + liftEffect $ killByPort port + void $ recovering defaultRetryPolicy ([ \_ _ -> pure true ]) + \_ -> do + isAvailable <- isPortAvailable port + unless isAvailable do + liftEffect $ throw "retry" + +defaultRetryPolicy :: RetryPolicy +defaultRetryPolicy = limitRetriesByCumulativeDelay (Milliseconds 3000.00) $ + constantDelay (Milliseconds 100.0) + cleanupTmpDir :: ManagedProcess -> FilePath -> Effect Unit cleanupTmpDir (ManagedProcess _ child _) workingDir = do ChildProcess.onExit child \_ -> do From adaad2097e5c78aac503910302f446c84a9bf3fa Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 13:26:17 +0300 Subject: [PATCH 161/373] Keep track of testnet cardano-node instances --- src/Internal/Testnet/Types.purs | 7 +++++ src/Internal/Testnet/Utils.purs | 50 ++++++++++++++++++++++++--------- 2 files changed, 44 insertions(+), 13 deletions(-) diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 3d256bf7e..fbb6b0a4c 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -6,6 +6,7 @@ module Internal.Testnet.Types , Event(..) , StartupFailure(..) , OptionalStartupParams + , TestnetRuntime , defaultOptionalStartupParams , defaultStartupParams ) where @@ -13,6 +14,7 @@ module Internal.Testnet.Types import Contract.Prelude import Data.Time.Duration (Milliseconds, Seconds) +import Data.UInt (UInt) import Node.Path (FilePath) import Record as Record @@ -95,4 +97,9 @@ type TestnetPaths = { testnetDirectory :: FilePath , nodeConfigPath :: FilePath , nodeSocketPath :: FilePath + , nodeDirs :: Array FilePath + } + +type TestnetRuntime = + { nodePorts :: Array UInt } \ No newline at end of file diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index bebc53355..c2e406fe7 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -2,16 +2,28 @@ module Ctl.Internal.Testnet.Utils where import Contract.Prelude -import Control.Monad.Error.Class (throwError) +import Control.Monad.Error.Class + ( liftMaybe + , throwError + ) import Control.Monad.Except (lift, runExceptT) import Control.Monad.Rec.Class (Step(..), tailRecM) import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Plutip.Utils (EventSource, narrowEventSource, waitForEvent) +import Data.Array as Array import Data.String (Pattern(..), contains) import Data.String as String +import Data.UInt (UInt) +import Data.UInt as UInt import Effect.Aff (Fiber, forkAff) import Effect.Exception (Error, error) -import Internal.Testnet.Types (Event(..), StartupFailure(..), TestnetPaths) +import Internal.Testnet.Types + ( Event(..) + , StartupFailure(..) + , TestnetPaths + , TestnetRuntime + ) +import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync as Node.FS import Node.Path (FilePath) @@ -62,22 +74,33 @@ waitFor source f = flip tailRecM unit \_ -> do onTestnetEvent :: EventSource String -> Effect (EventSource Event) onTestnetEvent = narrowEventSource parseEvent -toAbsolutePaths :: TestnetPaths -> TestnetPaths -toAbsolutePaths { testnetDirectory, nodeSocketPath, nodeConfigPath } = - { testnetDirectory - , nodeSocketPath: testnetDirectory <> nodeSocketPath - , nodeConfigPath: testnetDirectory <> nodeConfigPath - } +getRuntime :: TestnetPaths -> Effect TestnetRuntime +getRuntime paths = do + nodePorts <- traverse (getNodePort <<< { nodeDir: _ }) paths.nodeDirs + pure { nodePorts } + +getNodePort :: { nodeDir :: FilePath } -> Effect UInt +getNodePort { nodeDir } = + liftMaybe (error $ "Failed to parse port at " <> nodeDir <> "/port") + <<< UInt.fromString + =<< Node.FS.readTextFile UTF8 (nodeDir <> "/port") + +findNodeDirs :: { workdir :: FilePath } -> Effect (Array FilePath) +findNodeDirs { workdir } = do + subdirs <- Node.FS.readdir workdir + pure $ flip Array.mapMaybe subdirs \dirname -> + workdir <> dirname <$ String.stripPrefix (Pattern "node-spo") dirname findTestnetPaths :: { workdir :: FilePath } -> Effect (Either Error TestnetPaths) findTestnetPaths { workdir } = runExceptT do + nodeDirs <- lift $ findNodeDirs { workdir } let - nodeConfigPath = "configuration.yaml" - nodeSocketPath = "socket/node-spo1" - workdirExists <- lift $ Node.FS.exists $ workdir - configPathExists <- lift $ Node.FS.exists $ workdir <> nodeConfigPath - socketPathExists <- lift $ Node.FS.exists $ workdir <> nodeSocketPath + nodeConfigPath = workdir <> "configuration.yaml" + nodeSocketPath = workdir <> "socket/node-spo1" + workdirExists <- lift $ Node.FS.exists workdir + configPathExists <- lift $ Node.FS.exists nodeConfigPath + socketPathExists <- lift $ Node.FS.exists nodeSocketPath unless workdirExists do throwError $ error $ "cardano-testnet working directory not found." @@ -91,4 +114,5 @@ findTestnetPaths { workdir } = runExceptT do { testnetDirectory: workdir , nodeConfigPath , nodeSocketPath + , nodeDirs } \ No newline at end of file From 7ba9dbb60d96cbb6bef4d4fcaa5c7e3c5b315a33 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 13:26:39 +0300 Subject: [PATCH 162/373] Implement additional utils --- src/Internal/Plutip/Utils.purs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 014b594d5..4fcdd05b3 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -9,15 +9,22 @@ module Ctl.Internal.Plutip.Utils , makeEventSource , narrowEventSource , waitForEvent + , addCleanup + , after + , suppressAndLogErrors ) where import Contract.Prelude +import Control.Monad.Error.Class (class MonadError, catchError) import Ctl.Internal.QueryM.UniqueId (uniqueId) +import Data.Array as Array import Data.Map as Map import Effect (Effect) import Effect.Aff (try) import Effect.Aff as Aff +import Effect.Class (class MonadEffect) +import Effect.Exception (Error, message) import Effect.Ref (Ref) import Effect.Ref as Ref import Node.FS.Sync as FS @@ -30,6 +37,12 @@ import Node.Stream (Readable) -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/726 foreign import tmpdir :: Effect String +suppressAndLogErrors + :: forall a m. MonadEffect m => MonadError Error m => m Unit -> m Unit +suppressAndLogErrors = flip catchError $ message + >>> append "An error occured and suppressed: " + >>> log + mkDirIfNotExists :: FilePath -> Effect Unit mkDirIfNotExists dirName = do exists <- FS.exists dirName @@ -145,3 +158,15 @@ cleanupOnExit cleanupRef = Aff.forkAff do waitForBeforeExit log "Running cleanup on beforeExit" runCleanup cleanupRef + +addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit +addCleanup = map void <<< flip (Ref.modify <<< Array.cons <<< reportError) + where + reportError action = do + try action >>= either + (log <<< append "[addCleanup][error]: " <<< message) + (const $ pure unit) + +-- | Just as a bracket but without the body. +after :: forall a. Aff a -> (a -> Aff Unit) -> Aff a +after first second = Aff.bracket first second pure \ No newline at end of file From fa85302811db8650b435bf1a343461b13fbbcb24 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 13:27:14 +0300 Subject: [PATCH 163/373] Start kupo, cleanup cardano-node instances on close --- src/Internal/Testnet/Server.purs | 143 +++++++++++++++++++++---------- 1 file changed, 100 insertions(+), 43 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 0a91a8e73..739de5760 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -14,8 +14,16 @@ import Contract.Test.Mote (TestPlanM) import Control.Monad.Error.Class (catchError) import Control.Monad.Rec.Class (Step(..), tailRecM) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Server (startOgmios) -import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), _rmdirSync, spawn) +import Ctl.Internal.Plutip.Server + ( startKupo + , startOgmios + ) +import Ctl.Internal.Plutip.Spawn + ( ManagedProcess(..) + , _rmdirSync + , killProcessWithPort + , spawn + ) import Ctl.Internal.Plutip.Types ( ClusterStartupParameters , PlutipConfig @@ -23,6 +31,8 @@ import Ctl.Internal.Plutip.Types ) import Ctl.Internal.Plutip.Utils ( EventSource(..) + , addCleanup + , after , narrowEventSource , onLine , tmpdir @@ -35,10 +45,11 @@ import Ctl.Internal.Test.ContractTest ) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) import Ctl.Internal.Testnet.Utils - ( findTestnetPaths + ( findNodeDirs + , findTestnetPaths + , getNodePort , onTestnetEvent , tellsIt'sLocation - , toAbsolutePaths , waitFor ) import Ctl.Internal.Wallet.Key (PrivatePaymentKey) @@ -46,12 +57,12 @@ import Data.Array as Array import Data.Maybe (Maybe(Nothing, Just)) import Data.Posix.Signal (Signal(..)) import Data.Tuple.Nested (type (/\)) -import Effect.Aff (Aff, forkAff, try) +import Data.UInt (UInt) +import Effect.Aff (Aff) import Effect.Aff as Aff import Effect.Exception (message) import Effect.Exception.Unsafe (unsafeThrow) import Effect.Ref (Ref) -import Effect.Ref as Ref import Internal.Testnet.Types ( CardanoTestnetStartupParams , Event(..) @@ -101,6 +112,11 @@ startTestnetCluster { process :: ManagedProcess , channels :: Channels String } + , kupo :: + { process :: ManagedProcess + , channels :: Channels String + , workdir :: FilePath + } , testnet :: { process :: ManagedProcess , channels :: Channels String @@ -119,19 +135,38 @@ startTestnetCluster startupParams cleanupRef cfg = do Ready -> Just unit _ -> Nothing - paths <- - map toAbsolutePaths - <<< liftEither - =<< liftEffect (findTestnetPaths { workdir: workdirAbsolute }) + paths <- liftEither + =<< liftEffect (findTestnetPaths { workdir: workdirAbsolute }) ogmios <- startOgmios' { paths, workdir: workdirAbsolute } + kupo <- startKupo' { paths, workdir: workdirAbsolute } pure { paths - , ogmios: ogmios + , ogmios + , kupo , testnet: { process: testnet, channels } } where + startKupo' { paths, workdir } = do + kupo /\ kupoWorkdir <- after + (startKupo cfg paths cleanupRef) + \(ManagedProcess _ kupoProcess _ /\ _) -> + liftEffect + $ addCleanup cleanupRef + $ liftEffect + $ Node.ChildProcess.kill SIGINT kupoProcess + kupoChannels <- liftEffect $ getChannels kupo + redirectChannels + kupoChannels + { stderrTo: + { log: workdir <> "kupo.stderr.log" + , console: Just "[kupo][error]: " + } + , stdoutTo: { log: workdir <> "kupo.stdout.log", console: Nothing } + } + pure { process: kupo, workdir: kupoWorkdir, channels: kupoChannels } + startOgmios' { paths, workdir } = do ogmios <- after (startOgmios cfg paths) @@ -142,21 +177,13 @@ startTestnetCluster startupParams cleanupRef cfg = do $ Node.ChildProcess.kill SIGINT ogmiosProcess ogmiosChannels <- liftEffect $ getChannels ogmios - redirectLogging - ogmiosChannels.stderr - { storeLogs: Just - { logFile: workdir <> "ogmios-stderr.log" - , toString: identity + redirectChannels + ogmiosChannels + { stderrTo: + { log: workdir <> "ogmios.stderr.log" + , console: Just "[ogmios][error]: " } - , handleLine: append "[ogmios][error]: " >>> log - } - redirectLogging - ogmiosChannels.stdout - { storeLogs: Just - { logFile: workdir <> "ogmios-stdout.log" - , toString: identity - } - , handleLine: const $ pure unit + , stdoutTo: { log: workdir <> "ogmios.stdout.log", console: Nothing } } pure { process: ogmios, channels: ogmiosChannels } @@ -223,6 +250,7 @@ startCardanoTestnet , stdout :: EventSource String } , workdirAbsolute :: FilePath + , nodes :: Array { dir :: FilePath, port :: UInt } } startCardanoTestnet params cleanupRef = do @@ -240,6 +268,17 @@ startCardanoTestnet params cleanupRef = do liftEffect cancel pure $ tmp <> workdir + -- cardano-testnet doesn't kill cardano-nodes it spawns, so we do it ourselves + nodes <- liftEffect do + nodeDirs <- findNodeDirs { workdir: workdirAbsolute } + for nodeDirs \nodeDir -> do + port <- getNodePort { nodeDir } + pure { dir: nodeDir, port } + for_ nodes \{ port } -> do + liftEffect + $ addCleanup cleanupRef + $ killProcessWithPort port + -- clean up on SIGINT do shouldCleanup <- liftEffect @@ -257,20 +296,20 @@ startCardanoTestnet params cleanupRef = do -- forward node's stdout redirectLogging channels.stdout { storeLogs: Just - { logFile: workdirAbsolute <> "cardano-testnet-stdout.log" + { logFile: workdirAbsolute <> "cardano-testnet.stdout.log" , toString: identity } - , handleLine: log <<< append "[cardano-node-stdout]" + , handleLine: log <<< append "[cardano-testnet][info]" } redirectLogging channels.stderr { storeLogs: Just - { logFile: workdirAbsolute <> "cardano-testnet-stderr.log" + { logFile: workdirAbsolute <> "cardano-testnet.stderr.log" , toString: identity } - , handleLine: log <<< append "[cardano-node-stderr]" + , handleLine: log <<< append "[cardano-testnet][error]" } - pure { testnet, workdirAbsolute, channels } + pure { testnet, workdirAbsolute, channels, nodes } getChannels :: ManagedProcess @@ -283,6 +322,36 @@ getChannels (ManagedProcess _ process _) = ado stderr <- onLine (Node.ChildProcess.stderr process) Just in { stdout, stderr } +redirectChannels + :: { stderr :: EventSource String + , stdout :: EventSource String + } + -> { stderrTo :: { log :: FilePath, console :: Maybe String } + , stdoutTo :: { log :: FilePath, console :: Maybe String } + } + -> Aff Unit +redirectChannels { stderr, stdout } { stderrTo, stdoutTo } = do + redirectLogging + stderr + { storeLogs: Just + { logFile: stderrTo.log + , toString: identity + } + , handleLine: case stderrTo.console of + Nothing -> const $ pure unit + Just prefix -> append prefix >>> log + } + redirectLogging + stdout + { storeLogs: Just + { logFile: stdoutTo.log + , toString: identity + } + , handleLine: case stdoutTo.console of + Nothing -> const $ pure unit + Just prefix -> append prefix >>> log + } + redirectLogging :: forall a . EventSource a @@ -295,7 +364,7 @@ redirectLogging } -> Aff Unit redirectLogging events { handleLine, storeLogs } = - void $ forkAff $ flip tailRecM unit \_ -> do + void $ Aff.forkAff $ flip tailRecM unit \_ -> do line <- waitForEvent events liftEffect $ logErrors $ void do handleLine line @@ -307,15 +376,3 @@ redirectLogging events { handleLine, storeLogs } = $ message >>> append "redirectLogging: callback error: " >>> log - -addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit -addCleanup = map void <<< flip (Ref.modify <<< Array.cons <<< reportError) - where - reportError action = do - try action >>= either - (log <<< append "[addCleanup][error]: " <<< message) - (const $ pure unit) - --- | Just as a bracket but without the body. -after :: forall a. Aff a -> (a -> Aff Unit) -> Aff a -after first second = Aff.bracket first second pure \ No newline at end of file From 9fa737b8f2189d08689626348504e903ae76dd82 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 13:57:06 +0300 Subject: [PATCH 164/373] Make TestnetClusterConfig as alt to PlutipConfig --- src/Internal/Testnet/Types.purs | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index fbb6b0a4c..4b4734c3e 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -5,14 +5,18 @@ module Internal.Testnet.Types , TestnetPaths , Event(..) , StartupFailure(..) + , KupmiosConfig , OptionalStartupParams , TestnetRuntime + , TestnetClusterConfig + , LogParams , defaultOptionalStartupParams , defaultStartupParams ) where import Contract.Prelude +import Contract.Config as Config import Data.Time.Duration (Milliseconds, Seconds) import Data.UInt (UInt) import Node.Path (FilePath) @@ -100,6 +104,25 @@ type TestnetPaths = , nodeDirs :: Array FilePath } -type TestnetRuntime = - { nodePorts :: Array UInt - } \ No newline at end of file +type TestnetClusterConfig r = + ( hooks :: Config.Hooks + | KupmiosConfig (LogParams r) + ) + +type LogParams r = + ( logLevel :: LogLevel + , customLogger :: Maybe (LogLevel -> Config.Message -> Aff Unit) + , suppressLogs :: Boolean + | r + ) + +type KupmiosConfig r = + ( kupoConfig :: Config.ServerConfig + , ogmiosConfig :: Config.ServerConfig + | r + ) + +type TestnetRuntime r = + ( nodePorts :: Array UInt + | KupmiosConfig r + ) From a95274a760fb41cc7eb03eab27847119f68bf5c9 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 13:57:30 +0300 Subject: [PATCH 165/373] Generalize mkClusterContractEnv in a way it works for testnet too --- src/Internal/Plutip/Server.purs | 34 +++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 4b34f4000..76f61b725 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -10,6 +10,7 @@ module Ctl.Internal.Plutip.Server , stopPlutipCluster , testPlutipContracts , withPlutipContractEnv + , mkClusterContractEnv ) where import Prelude @@ -23,7 +24,7 @@ import Cardano.Types (NetworkId(MainnetId)) import Cardano.Types.BigNum as BigNum import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) import Contract.Chain (waitNSlots) -import Contract.Config (defaultSynchronizationParams, defaultTimeParams) +import Contract.Config (Hooks, defaultSynchronizationParams, defaultTimeParams) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) import Control.Monad.Error.Class (liftEither, throwError) import Control.Monad.State (State, execState, modify_) @@ -650,29 +651,42 @@ stopChildProcessWithPort port childProcess = do unless isAvailable do liftEffect $ throw "retry" +-- | TODO: Replace original log params with the row type +type LogParams r = + ( logLevel :: LogLevel + , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) + , suppressLogs :: Boolean + | r + ) + mkClusterContractEnv - :: PlutipConfig + :: forall r + . { ogmiosConfig :: ServerConfig + , kupoConfig :: ServerConfig + , hooks :: Hooks + | LogParams r + } -> Logger -> Maybe (LogLevel -> Message -> Aff Unit) -> Aff ContractEnv -mkClusterContractEnv plutipCfg logger customLogger = do +mkClusterContractEnv cfg logger customLogger = do usedTxOuts <- newUsedTxOuts backend <- buildBackend logger $ mkCtlBackendParams - { ogmiosConfig: plutipCfg.ogmiosConfig - , kupoConfig: plutipCfg.kupoConfig + { ogmiosConfig: cfg.ogmiosConfig + , kupoConfig: cfg.kupoConfig } ledgerConstants <- getLedgerConstants - plutipCfg { customLogger = customLogger } + cfg { customLogger = customLogger } backend backendKnownTxs <- liftEffect $ Ref.new Set.empty pure { backend - , handle: mkQueryHandle plutipCfg backend + , handle: mkQueryHandle cfg backend , networkId: MainnetId - , logLevel: plutipCfg.logLevel + , logLevel: cfg.logLevel , customLogger: customLogger - , suppressLogs: plutipCfg.suppressLogs - , hooks: plutipCfg.hooks + , suppressLogs: cfg.suppressLogs + , hooks: cfg.hooks , wallet: Nothing , usedTxOuts , ledgerConstants From d7306eb3ff6cfaa41810a03a36004d457b272a7d Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 13:58:43 +0300 Subject: [PATCH 166/373] Make Testnet.Contract module for running contracts --- src/Internal/Testnet/Contract.purs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/Internal/Testnet/Contract.purs diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs new file mode 100644 index 000000000..cce0d2527 --- /dev/null +++ b/src/Internal/Testnet/Contract.purs @@ -0,0 +1,17 @@ +module Internal.Testnet.Contract where + +import Contract.Prelude + +import Contract.Config as Config +import Contract.Monad (ContractEnv) +import Ctl.Internal.Logging (Logger) +import Ctl.Internal.Plutip.Server (mkClusterContractEnv) +import Internal.Testnet.Types (TestnetClusterConfig) + +makeContractEnv + :: forall r + . Record (TestnetClusterConfig r) + -> Logger + -> Maybe (LogLevel -> Config.Message -> Aff Unit) + -> Aff ContractEnv +makeContractEnv = mkClusterContractEnv From df9e1f57dc95c50ffc3fb004433682cda4109443 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 14:27:24 +0300 Subject: [PATCH 167/373] Purify logging suppression --- src/Internal/Plutip/Server.purs | 145 ++++++++++++++++++-------------- 1 file changed, 81 insertions(+), 64 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 76f61b725..b0bca437f 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -11,9 +11,10 @@ module Ctl.Internal.Plutip.Server , testPlutipContracts , withPlutipContractEnv , mkClusterContractEnv + , mkLogging ) where -import Prelude +import Contract.Prelude import Aeson (decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) import Affjax (defaultRequest) as Affjax @@ -26,7 +27,7 @@ import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) import Contract.Chain (waitNSlots) import Contract.Config (Hooks, defaultSynchronizationParams, defaultTimeParams) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) -import Control.Monad.Error.Class (liftEither, throwError) +import Control.Monad.Error.Class (throwError) import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) @@ -153,8 +154,9 @@ withPlutipContractEnv plutipCfg distr cont = do Aff.bracket (try $ startPlutipContractEnv plutipCfg distr cleanupRef) (const $ runCleanup cleanupRef) - $ liftEither >=> \{ env, wallets, printLogs } -> - whenError printLogs (cont env wallets) + $ liftEither + >=> \{ env, wallets, printLogs } -> + whenError printLogs (cont env wallets) -- | Run several `Contract`s in tests in a (single) Plutip environment (plutip-server and cluster, kupo, etc.). -- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. @@ -322,23 +324,11 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do Left err -> throwError $ error $ prefix <> ": " <> message err Right result' -> pure result' - -- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run - -- later. - bracket - :: forall (a :: Type) (b :: Type) - . Aff a - -> (a -> Aff Unit) - -> (a -> Aff b) - -> Aff b - bracket before after action = do - Aff.bracket - before - (\res -> liftEffect $ Ref.modify_ ([ after res ] <> _) cleanupRef) - action - startPlutipServer' :: Aff Unit startPlutipServer' = - bracket (startPlutipServer plutipCfg) + cleanupBracket + cleanupRef + (startPlutipServer plutipCfg) (stopChildProcessWithPort plutipCfg.port) (const $ checkPlutipServer plutipCfg) @@ -349,11 +339,12 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do distrArray = encodeDistribution $ ourInitialUtxos (encodeDistribution distr) /\ - distr + distr for_ distrArray $ traverse_ \n -> when (n < BigNum.fromInt 1_000_000) do liftEffect $ throw $ "UTxO is too low: " <> BigNum.toString n <> ", must be at least 1_000_000 Lovelace" - bracket + cleanupBracket + cleanupRef (startPlutipCluster plutipCfg distrArray) (const $ void $ stopPlutipCluster plutipCfg) pure @@ -368,7 +359,8 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do startKupo' response = void $ after (startKupo plutipCfg response cleanupRef) - $ fst >>> stopChildProcessWithPort plutipCfg.kupoConfig.port + $ fst + >>> stopChildProcessWithPort plutipCfg.kupoConfig.port mkWallets' :: ContractEnv @@ -387,46 +379,68 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do void $ waitNSlots BigNum.one transferFundsFromEnterpriseToBase ourKey walletsArray pure wallets - - mkContractEnv' - :: Aff - { env :: ContractEnv - , printLogs :: Aff Unit - , clearLogs :: Aff Unit - } - mkContractEnv' | plutipCfg.suppressLogs = do - -- if logs should be suppressed, setup the machinery and continue with - -- the bracket - { addLogEntry, suppressedLogger, printLogs, clearLogs } <- - liftEffect $ setupLogs plutipCfg.logLevel plutipCfg.customLogger - let - configLogger = Just $ map liftEffect <<< addLogEntry - - bracket - ( mkClusterContractEnv - plutipCfg { customLogger = configLogger } - suppressedLogger - configLogger - ) + mkContractEnv' = do + { updatedConfig + , logger + , customLogger + , printLogs + , clearLogs + } <- liftEffect $ mkLogging plutipCfg + cleanupBracket + cleanupRef + (mkClusterContractEnv updatedConfig logger customLogger) stopContractEnv - \env -> pure - { env + $ pure + <<< { env: _, printLogs, clearLogs } + +-- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run +-- later. +cleanupBracket + :: forall (a :: Type) (b :: Type) + . Ref (Array (Aff Unit)) + -> Aff a + -> (a -> Aff Unit) + -> (a -> Aff b) + -> Aff b +cleanupBracket cleanupRef before after action = do + Aff.bracket + before + (\res -> liftEffect $ Ref.modify_ ([ after res ] <> _) cleanupRef) + action + +mkLogging + :: forall r + . Record (LogParams r) + -> Effect + { updatedConfig :: Record (LogParams r) + , logger :: Logger + , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) + , printLogs :: Aff Unit + , clearLogs :: Aff Unit + } +mkLogging cfg + | cfg.suppressLogs = ado + -- if logs should be suppressed, setup the machinery and continue with + -- the bracket + { addLogEntry, suppressedLogger, printLogs, clearLogs } <- + setupLogs cfg.logLevel cfg.customLogger + let + configLogger = Just $ map liftEffect <<< addLogEntry + in + { updatedConfig: cfg { customLogger = configLogger } + , logger: suppressedLogger + , customLogger: configLogger , printLogs: liftEffect printLogs , clearLogs: liftEffect clearLogs } - mkContractEnv' = - -- otherwise, proceed with the env setup and provide a normal logger - bracket - ( mkClusterContractEnv plutipCfg - (mkLogger plutipCfg.logLevel plutipCfg.customLogger) - plutipCfg.customLogger - ) - stopContractEnv - \env -> pure - { env - , printLogs: pure unit - , clearLogs: pure unit - } + | otherwise = pure + -- otherwise, proceed with the env setup and provide a normal logger + { updatedConfig: cfg + , logger: mkLogger cfg.logLevel cfg.customLogger + , customLogger: cfg.customLogger + , printLogs: pure unit + , clearLogs: pure unit + } -- | Throw an exception if `PlutipConfig` contains ports that are occupied. configCheck :: PlutipConfig -> Aff Unit @@ -441,9 +455,11 @@ configCheck cfg = do occupiedServices <- Array.catMaybes <$> for services \(port /\ service) -> do isPortAvailable port <#> if _ then Nothing else Just (port /\ service) unless (Array.null occupiedServices) do - liftEffect $ throw $ - "Unable to run the following services, because the ports are occupied:\ - \\n" <> foldMap printServiceEntry occupiedServices + liftEffect $ throw + $ + "Unable to run the following services, because the ports are occupied:\ + \\n" + <> foldMap printServiceEntry occupiedServices where printServiceEntry :: UInt /\ String -> String printServiceEntry (port /\ service) = @@ -493,8 +509,9 @@ startPlutipCluster cfg keysToGenerate = do either (liftEffect <<< throw <<< pprintClientError) pure res >>= case _ of ClusterStartupFailure reason -> do - liftEffect $ throw $ - "Failed to start up cluster. Reason: " <> show reason + liftEffect $ throw + $ "Failed to start up cluster. Reason: " + <> show reason ClusterStartupSuccess response@{ privateKeys } -> case Array.uncons privateKeys of Nothing -> @@ -555,7 +572,7 @@ startOgmios cfg params = do spawn "ogmios" ogmiosArgs defaultSpawnOptions $ Just $ String.indexOf (Pattern "networkParameters") - >>> maybe NoOp (const Success) + >>> maybe NoOp (const Success) where ogmiosArgs :: Array String ogmiosArgs = From dab1b7f936bb3fb8a38a851d6968454eba318910 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 14:33:57 +0300 Subject: [PATCH 168/373] Extract makeClusterContractEnv --- src/Internal/Plutip/Server.purs | 59 +++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index b0bca437f..3aa3a1f15 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -10,7 +10,8 @@ module Ctl.Internal.Plutip.Server , stopPlutipCluster , testPlutipContracts , withPlutipContractEnv - , mkClusterContractEnv + , makeNaiveClusterContractEnv + , makeClusterContractEnv , mkLogging ) where @@ -296,7 +297,7 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do "Could not start Plutip cluster" tryWithReport (startOgmios' response) "Could not start Ogmios" tryWithReport (startKupo' response) "Could not start Kupo" - { env, printLogs, clearLogs } <- mkContractEnv' + { env, printLogs, clearLogs } <- makeClusterContractEnv cleanupRef plutipCfg wallets <- mkWallets' env ourKey response void $ try $ liftEffect do for_ env.hooks.onClusterStartup \clusterParamsCb -> do @@ -379,19 +380,6 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do void $ waitNSlots BigNum.one transferFundsFromEnterpriseToBase ourKey walletsArray pure wallets - mkContractEnv' = do - { updatedConfig - , logger - , customLogger - , printLogs - , clearLogs - } <- liftEffect $ mkLogging plutipCfg - cleanupBracket - cleanupRef - (mkClusterContractEnv updatedConfig logger customLogger) - stopContractEnv - $ pure - <<< { env: _, printLogs, clearLogs } -- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run -- later. @@ -668,6 +656,13 @@ stopChildProcessWithPort port childProcess = do unless isAvailable do liftEffect $ throw "retry" +type ClusterConfig r = + ( ogmiosConfig :: ServerConfig + , kupoConfig :: ServerConfig + , hooks :: Hooks + | LogParams r + ) + -- | TODO: Replace original log params with the row type type LogParams r = ( logLevel :: LogLevel @@ -676,17 +671,13 @@ type LogParams r = | r ) -mkClusterContractEnv +makeNaiveClusterContractEnv :: forall r - . { ogmiosConfig :: ServerConfig - , kupoConfig :: ServerConfig - , hooks :: Hooks - | LogParams r - } + . Record (ClusterConfig r) -> Logger -> Maybe (LogLevel -> Message -> Aff Unit) -> Aff ContractEnv -mkClusterContractEnv cfg logger customLogger = do +makeNaiveClusterContractEnv cfg logger customLogger = do usedTxOuts <- newUsedTxOuts backend <- buildBackend logger $ mkCtlBackendParams { ogmiosConfig: cfg.ogmiosConfig @@ -713,6 +704,30 @@ mkClusterContractEnv cfg logger customLogger = do , knownTxs: { backend: backendKnownTxs } } +-- | Makes cluster ContractEnv with configured logs suppression and cleanup scheduled. +makeClusterContractEnv + :: forall r + . Ref (Array (Aff Unit)) + -> Record (ClusterConfig r) + -> Aff + { env :: ContractEnv + , clearLogs :: Aff Unit + , printLogs :: Aff Unit + } +makeClusterContractEnv cleanupRef cfg = do + { updatedConfig + , logger + , customLogger + , printLogs + , clearLogs + } <- liftEffect $ mkLogging cfg + cleanupBracket + cleanupRef + (makeNaiveClusterContractEnv updatedConfig logger customLogger) + stopContractEnv + $ pure + <<< { env: _, printLogs, clearLogs } + defaultRetryPolicy :: RetryPolicy defaultRetryPolicy = limitRetriesByCumulativeDelay (Milliseconds 3000.00) $ constantDelay (Milliseconds 100.0) From 3e0b685c5e0497b5bb9b9ff4dddca1a2bff6f1e4 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 14:42:27 +0300 Subject: [PATCH 169/373] Kill processes using Plutip.Spawn.stop --- src/Internal/Plutip/Utils.purs | 10 ++++++++++ src/Internal/Testnet/Server.purs | 26 +++++++++++--------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 4fcdd05b3..544565a8b 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -10,6 +10,7 @@ module Ctl.Internal.Plutip.Utils , narrowEventSource , waitForEvent , addCleanup + , scheduleCleanup , after , suppressAndLogErrors ) where @@ -167,6 +168,15 @@ addCleanup = map void <<< flip (Ref.modify <<< Array.cons <<< reportError) (log <<< append "[addCleanup][error]: " <<< message) (const $ pure unit) +scheduleCleanup + :: forall a + . Ref (Array (Aff Unit)) + -> Aff a + -> (a -> Aff Unit) + -> Aff a +scheduleCleanup cleanupRef create cleanup = + after create $ liftEffect <<< addCleanup cleanupRef <<< cleanup + -- | Just as a bracket but without the body. after :: forall a. Aff a -> (a -> Aff Unit) -> Aff a after first second = Aff.bracket first second pure \ No newline at end of file diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 739de5760..9d768bac2 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -23,6 +23,7 @@ import Ctl.Internal.Plutip.Spawn , _rmdirSync , killProcessWithPort , spawn + , stop ) import Ctl.Internal.Plutip.Types ( ClusterStartupParameters @@ -32,9 +33,9 @@ import Ctl.Internal.Plutip.Types import Ctl.Internal.Plutip.Utils ( EventSource(..) , addCleanup - , after , narrowEventSource , onLine + , scheduleCleanup , tmpdir , waitForEvent ) @@ -55,7 +56,6 @@ import Ctl.Internal.Testnet.Utils import Ctl.Internal.Wallet.Key (PrivatePaymentKey) import Data.Array as Array import Data.Maybe (Maybe(Nothing, Just)) -import Data.Posix.Signal (Signal(..)) import Data.Tuple.Nested (type (/\)) import Data.UInt (UInt) import Effect.Aff (Aff) @@ -149,13 +149,12 @@ startTestnetCluster startupParams cleanupRef cfg = do } where startKupo' { paths, workdir } = do - kupo /\ kupoWorkdir <- after - (startKupo cfg paths cleanupRef) - \(ManagedProcess _ kupoProcess _ /\ _) -> - liftEffect - $ addCleanup cleanupRef - $ liftEffect - $ Node.ChildProcess.kill SIGINT kupoProcess + kupo /\ kupoWorkdir <- + scheduleCleanup + cleanupRef + (startKupo cfg paths cleanupRef) + $ fst + >>> stop kupoChannels <- liftEffect $ getChannels kupo redirectChannels kupoChannels @@ -168,13 +167,10 @@ startTestnetCluster startupParams cleanupRef cfg = do pure { process: kupo, workdir: kupoWorkdir, channels: kupoChannels } startOgmios' { paths, workdir } = do - ogmios <- after + ogmios <- scheduleCleanup + cleanupRef (startOgmios cfg paths) - \(ManagedProcess _ ogmiosProcess _) -> - liftEffect - $ addCleanup cleanupRef - $ liftEffect - $ Node.ChildProcess.kill SIGINT ogmiosProcess + stop ogmiosChannels <- liftEffect $ getChannels ogmios redirectChannels From 934ed39cac7147c5553f11ccc7abbda16c778d7e Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sat, 1 Jun 2024 14:48:44 +0300 Subject: [PATCH 170/373] Decouple port checking from Plutip --- src/Internal/Plutip/Server.purs | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 3aa3a1f15..2fb59f40d 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -13,6 +13,7 @@ module Ctl.Internal.Plutip.Server , makeNaiveClusterContractEnv , makeClusterContractEnv , mkLogging + , checkPortsAreFree ) where import Contract.Prelude @@ -432,15 +433,17 @@ mkLogging cfg -- | Throw an exception if `PlutipConfig` contains ports that are occupied. configCheck :: PlutipConfig -> Aff Unit -configCheck cfg = do - let - services :: Array (UInt /\ String) - services = - [ cfg.port /\ "plutip-server" - , cfg.ogmiosConfig.port /\ "ogmios" - , cfg.kupoConfig.port /\ "kupo" - ] - occupiedServices <- Array.catMaybes <$> for services \(port /\ service) -> do +configCheck cfg = + checkPortsAreFree + [ { port: cfg.port, service: "plutip-server" } + , { port: cfg.ogmiosConfig.port, service: "ogmios" } + , { port: cfg.kupoConfig.port, service: "kupo" } + ] + +-- | Throw an exception if any of the given ports is occupied. +checkPortsAreFree :: Array { port :: UInt, service :: String } -> Aff Unit +checkPortsAreFree ports = do + occupiedServices <- Array.catMaybes <$> for ports \{ port, service } -> do isPortAvailable port <#> if _ then Nothing else Just (port /\ service) unless (Array.null occupiedServices) do liftEffect $ throw From a605cde6c38d31adf7cea03e8466aec44a535702 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 03:53:29 +0300 Subject: [PATCH 171/373] Move whenError in Utils --- src/Internal/Plutip/Server.purs | 14 +++----------- src/Internal/Plutip/Utils.purs | 8 ++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 2fb59f40d..fcac5fcde 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -64,8 +64,8 @@ import Ctl.Internal.Plutip.Utils ( addCleanup , after , runCleanup - , suppressAndLogErrors , tmpdir + , whenError ) import Ctl.Internal.QueryM.UniqueId (uniqueId) import Ctl.Internal.ServerConfig (ServerConfig) @@ -91,7 +91,7 @@ import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) import Data.Array as Array import Data.Bifunctor (lmap) -import Data.Either (Either(Left, Right), either, isLeft) +import Data.Either (Either(Left, Right), either) import Data.Foldable (fold) import Data.HTTP.Method as Method import Data.Log.Level (LogLevel) @@ -214,13 +214,6 @@ runPlutipTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = do result <- liftEffect $ Ref.read resultRef >>= liftEither t result --- Similar to `catchError` but preserves the error -whenError :: forall (a :: Type). Aff Unit -> Aff a -> Aff a -whenError whenErrorAction action = do - res <- try action - when (isLeft res) whenErrorAction - liftEither res - -- | Lifts the UTxO distributions of each test out of Mote, into a combined -- | distribution. Adapts the tests to pick their distribution out of the -- | combined distribution. @@ -603,8 +596,7 @@ startKupo cfg params cleanupRef = do $ liftEffect $ addCleanup cleanupRef $ liftEffect - $ suppressAndLogErrors do - _rmdirSync workdir + $ _rmdirSync workdir pure (childProcess /\ workdir) where spawnKupoProcess :: FilePath -> Aff ManagedProcess diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 544565a8b..791c20bb7 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -12,6 +12,7 @@ module Ctl.Internal.Plutip.Utils , addCleanup , scheduleCleanup , after + , whenError , suppressAndLogErrors ) where @@ -177,6 +178,13 @@ scheduleCleanup scheduleCleanup cleanupRef create cleanup = after create $ liftEffect <<< addCleanup cleanupRef <<< cleanup +-- Similar to `catchError` but preserves the error +whenError :: forall (a :: Type). Aff Unit -> Aff a -> Aff a +whenError whenErrorAction action = do + res <- try action + when (isLeft res) whenErrorAction + liftEither res + -- | Just as a bracket but without the body. after :: forall a. Aff a -> (a -> Aff Unit) -> Aff a after first second = Aff.bracket first second pure \ No newline at end of file From 9b1bf20c1e914b598e1048e54aac1b8cfa5e5273 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 03:58:36 +0300 Subject: [PATCH 172/373] Fix module naming --- src/Internal/Testnet/Contract.purs | 2 +- src/Internal/Testnet/Server.purs | 12 +++++++----- src/Internal/Testnet/Types.purs | 2 +- src/Internal/Testnet/Utils.purs | 9 +-------- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index cce0d2527..43510c441 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -1,4 +1,4 @@ -module Internal.Testnet.Contract where +module Ctl.Internal.Testnet.Contract where import Contract.Prelude diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 9d768bac2..5342e218b 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -45,6 +45,13 @@ import Ctl.Internal.Test.ContractTest , ContractTestPlan(ContractTestPlan) ) import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) +import Ctl.Internal.Testnet.Types + ( CardanoTestnetStartupParams + , KupmiosConfig + , Node + , TestnetPaths + ) +import Ctl.Internal.Testnet.Types as Testnet.Types import Ctl.Internal.Testnet.Utils ( findNodeDirs , findTestnetPaths @@ -63,11 +70,6 @@ import Effect.Aff as Aff import Effect.Exception (message) import Effect.Exception.Unsafe (unsafeThrow) import Effect.Ref (Ref) -import Internal.Testnet.Types - ( CardanoTestnetStartupParams - , Event(..) - , TestnetPaths - ) import Node.ChildProcess (defaultSpawnOptions) import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(UTF8)) diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 4b4734c3e..8a5509379 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -1,4 +1,4 @@ -module Internal.Testnet.Types +module Ctl.Internal.Testnet.Types ( CardanoTestnetStartupParams , Era(..) , LoggingFormat(..) diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index c2e406fe7..a1610b48b 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -15,14 +15,7 @@ import Data.String (Pattern(..), contains) import Data.String as String import Data.UInt (UInt) import Data.UInt as UInt -import Effect.Aff (Fiber, forkAff) -import Effect.Exception (Error, error) -import Internal.Testnet.Types - ( Event(..) - , StartupFailure(..) - , TestnetPaths - , TestnetRuntime - ) +import Effect.Exception (Error, error, throw) import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync as Node.FS import Node.Path (FilePath) From 44afd9788e429a63e679231f28fd21308cc2893f Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 04:35:45 +0300 Subject: [PATCH 173/373] Store extended info about nodes --- src/Internal/Testnet/Types.purs | 21 +++++++++-- src/Internal/Testnet/Utils.purs | 62 +++++++++++++++++++++++---------- 2 files changed, 61 insertions(+), 22 deletions(-) diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 8a5509379..ab083aec1 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -6,6 +6,8 @@ module Ctl.Internal.Testnet.Types , Event(..) , StartupFailure(..) , KupmiosConfig + , NodeLocation + , Node , OptionalStartupParams , TestnetRuntime , TestnetClusterConfig @@ -16,6 +18,7 @@ module Ctl.Internal.Testnet.Types import Contract.Prelude +import Cardano.Types as Cardano.Types import Contract.Config as Config import Data.Time.Duration (Milliseconds, Seconds) import Data.UInt (UInt) @@ -101,9 +104,21 @@ type TestnetPaths = { testnetDirectory :: FilePath , nodeConfigPath :: FilePath , nodeSocketPath :: FilePath - , nodeDirs :: Array FilePath + , nodeDirs :: Array { | NodeLocation () } } +type Node r = + ( socket :: FilePath + , port :: UInt + | NodeLocation r + ) + +type NodeLocation r = + ( idx :: Int + , workdir :: FilePath + | r + ) + type TestnetClusterConfig r = ( hooks :: Config.Hooks | KupmiosConfig (LogParams r) @@ -123,6 +138,6 @@ type KupmiosConfig r = ) type TestnetRuntime r = - ( nodePorts :: Array UInt - | KupmiosConfig r + ( nodes :: Array { | Node () } + | r ) diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index a1610b48b..5ff097ef1 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -9,8 +9,21 @@ import Control.Monad.Error.Class import Control.Monad.Except (lift, runExceptT) import Control.Monad.Rec.Class (Step(..), tailRecM) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Utils (EventSource, narrowEventSource, waitForEvent) +import Ctl.Internal.Plutip.Utils + ( EventSource + , narrowEventSource + , waitForEvent + ) +import Ctl.Internal.Testnet.Types + ( Event(..) + , Node + , NodeLocation + , StartupFailure(..) + , TestnetPaths + , TestnetRuntime + ) import Data.Array as Array +import Data.Int as Int import Data.String (Pattern(..), contains) import Data.String as String import Data.UInt (UInt) @@ -46,17 +59,6 @@ parseEvent = case _ of Just Finished _ -> Nothing -onStartupFailure - :: forall a - . EventSource Event - -> (StartupFailure -> Aff a) - -> Aff (Fiber a) -onStartupFailure source handle = forkAff do - err <- waitFor source case _ of - StartupFailed err -> Just err - _ -> Nothing - handle err - waitFor :: forall a. EventSource Event -> (Event -> Maybe a) -> Aff a waitFor source f = flip tailRecM unit \_ -> do event <- waitForEvent source @@ -67,10 +69,30 @@ waitFor source f = flip tailRecM unit \_ -> do onTestnetEvent :: EventSource String -> Effect (EventSource Event) onTestnetEvent = narrowEventSource parseEvent -getRuntime :: TestnetPaths -> Effect TestnetRuntime +getRuntime :: TestnetPaths -> Effect (Record (TestnetRuntime ())) getRuntime paths = do - nodePorts <- traverse (getNodePort <<< { nodeDir: _ }) paths.nodeDirs - pure { nodePorts } + nodes <- readNodes paths + -- genesis <- readGenesis {workdir: paths.testnetDirectory} + pure { nodes {-, genesis-} } + +readNodes + :: forall r + . { nodeDirs :: Array { | NodeLocation () } + , testnetDirectory :: FilePath + | r + } + -> Effect (Array { | Node () }) +readNodes { nodeDirs, testnetDirectory } = do + for nodeDirs \{ idx, workdir } -> do + let + socketPath = testnetDirectory <> "socket" <> "node-spo" <> show idx + exists <- Node.FS.exists socketPath + unless exists + $ throw + $ "Couldn't find node socket at " + <> socketPath + port <- getNodePort { nodeDir: workdir } + pure { idx, socket: socketPath, port, workdir } getNodePort :: { nodeDir :: FilePath } -> Effect UInt getNodePort { nodeDir } = @@ -78,11 +100,13 @@ getNodePort { nodeDir } = <<< UInt.fromString =<< Node.FS.readTextFile UTF8 (nodeDir <> "/port") -findNodeDirs :: { workdir :: FilePath } -> Effect (Array FilePath) -findNodeDirs { workdir } = do +findNodeDirs :: { workdir :: FilePath } -> Effect (Array { | NodeLocation () }) +findNodeDirs { workdir } = ado subdirs <- Node.FS.readdir workdir - pure $ flip Array.mapMaybe subdirs \dirname -> - workdir <> dirname <$ String.stripPrefix (Pattern "node-spo") dirname + in flip Array.mapMaybe subdirs \dirname -> ado + idx <- Int.fromString + =<< String.stripPrefix (Pattern "node-spo") dirname + in { idx, workdir: workdir <> dirname } findTestnetPaths :: { workdir :: FilePath } -> Effect (Either Error TestnetPaths) From 52128d459f552783a9218650b7b07a018529264a Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 04:37:09 +0300 Subject: [PATCH 174/373] Return fiber results --- src/Internal/Testnet/Server.purs | 50 +++++++++++++++----------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 5342e218b..9a03ae9ad 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -158,7 +158,7 @@ startTestnetCluster startupParams cleanupRef cfg = do $ fst >>> stop kupoChannels <- liftEffect $ getChannels kupo - redirectChannels + _ <- redirectChannels kupoChannels { stderrTo: { log: workdir <> "kupo.stderr.log" @@ -175,7 +175,7 @@ startTestnetCluster startupParams cleanupRef cfg = do stop ogmiosChannels <- liftEffect $ getChannels ogmios - redirectChannels + _ <- redirectChannels ogmiosChannels { stderrTo: { log: workdir <> "ogmios.stderr.log" @@ -292,19 +292,16 @@ startCardanoTestnet params cleanupRef = do _rmdirSync workdirAbsolute -- forward node's stdout - redirectLogging channels.stdout - { storeLogs: Just - { logFile: workdirAbsolute <> "cardano-testnet.stdout.log" - , toString: identity + _ <- redirectChannels + { stderr: channels.stderr, stdout: channels.stdout } + { stdoutTo: + { log: workdirAbsolute <> "cardano-testnet.stdout.log" + , console: Just "[cardano-testnet][info]" } - , handleLine: log <<< append "[cardano-testnet][info]" - } - redirectLogging channels.stderr - { storeLogs: Just - { logFile: workdirAbsolute <> "cardano-testnet.stderr.log" - , toString: identity + , stderrTo: + { log: workdirAbsolute <> "cardano-testnet.stderr.log" + , console: Just "[cardano-testnet][error]" } - , handleLine: log <<< append "[cardano-testnet][error]" } pure { testnet, workdirAbsolute, channels, nodes } @@ -320,6 +317,8 @@ getChannels (ManagedProcess _ process _) = ado stderr <- onLine (Node.ChildProcess.stderr process) Just in { stdout, stderr } +-- Note: it will not throw, so to check the computation result +-- Fiber must be inspected. redirectChannels :: { stderr :: EventSource String , stdout :: EventSource String @@ -327,9 +326,9 @@ redirectChannels -> { stderrTo :: { log :: FilePath, console :: Maybe String } , stdoutTo :: { log :: FilePath, console :: Maybe String } } - -> Aff Unit + -> Aff (Aff.Fiber (Either Error Unit)) redirectChannels { stderr, stdout } { stderrTo, stdoutTo } = do - redirectLogging + handleStderr <- redirectLogging stderr { storeLogs: Just { logFile: stderrTo.log @@ -339,7 +338,7 @@ redirectChannels { stderr, stdout } { stderrTo, stdoutTo } = do Nothing -> const $ pure unit Just prefix -> append prefix >>> log } - redirectLogging + handleStdout <- redirectLogging stdout { storeLogs: Just { logFile: stdoutTo.log @@ -349,6 +348,7 @@ redirectChannels { stderr, stdout } { stderrTo, stdoutTo } = do Nothing -> const $ pure unit Just prefix -> append prefix >>> log } + pure $ applySecond <$> handleStderr <*> handleStdout redirectLogging :: forall a @@ -360,17 +360,13 @@ redirectLogging } , handleLine :: a -> Effect Unit } - -> Aff Unit + -> Aff (Aff.Fiber (Either Error Unit)) redirectLogging events { handleLine, storeLogs } = - void $ Aff.forkAff $ flip tailRecM unit \_ -> do + Aff.forkAff $ tryAndLogErrors "redirectLogging" $ flip tailRecM unit \_ -> do line <- waitForEvent events - liftEffect $ logErrors $ void do - handleLine line - for storeLogs \{ logFile, toString } -> - appendTextFile UTF8 logFile $ toString line <> "\n" + liftEffect $ suppressAndLogErrors "redirectLogging: callback error" $ void + do + handleLine line + for storeLogs \{ logFile, toString } -> + appendTextFile UTF8 logFile $ toString line <> "\n" pure $ Loop unit - where - logErrors = flip catchError - $ message - >>> append "redirectLogging: callback error: " - >>> log From fd671642257b420a19760ffa3ab4d79d3ef61a1a Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 04:39:23 +0300 Subject: [PATCH 175/373] Return useful info from cluster launch --- src/Internal/Testnet/Server.purs | 62 ++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 9a03ae9ad..5af306d20 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -6,6 +6,9 @@ module Ctl.Internal.Testnet.Server , startCardanoTestnet , testTestnetContracts , startTestnetCluster + , defaultStartupParams + , StartedTestnetCluster(MkStartedTestnetCluster) + , Channels ) where import Contract.Prelude @@ -97,6 +100,30 @@ type Channels a = , stdout :: EventSource a } +defaultStartupParams :: CardanoTestnetStartupParams +defaultStartupParams = + ( Testnet.Types.defaultStartupParams + { testnetMagic: 2 } + ) + { nodeLoggingFormat = Just Testnet.Types.LogAsJson } + +newtype StartedTestnetCluster = MkStartedTestnetCluster + { ogmios :: + { process :: ManagedProcess + , channels :: Channels String + } + , kupo :: + { process :: ManagedProcess + , channels :: Channels String + , workdir :: FilePath + } + , testnet :: + { process :: ManagedProcess + , channels :: Channels String + } + , paths :: TestnetPaths + } + -- | Start the plutip cluster, initializing the state with the given -- | UTxO distribution. Also initializes an extra payment key (aka -- | `ourKey`) with some UTxOs for use with further plutip @@ -104,27 +131,11 @@ type Channels a = -- | UTxOs in the passed distribution, so it can be used to handle -- | transaction fees. startTestnetCluster - :: CardanoTestnetStartupParams + :: forall r + . CardanoTestnetStartupParams -> Ref (Array (Aff Unit)) - -> { ogmiosConfig :: ServerConfig - , kupoConfig :: ServerConfig - } - -> Aff - { ogmios :: - { process :: ManagedProcess - , channels :: Channels String - } - , kupo :: - { process :: ManagedProcess - , channels :: Channels String - , workdir :: FilePath - } - , testnet :: - { process :: ManagedProcess - , channels :: Channels String - } - , paths :: TestnetPaths - } + -> Record (KupmiosConfig r) + -> Aff StartedTestnetCluster startTestnetCluster startupParams cleanupRef cfg = do { testnet , channels @@ -143,7 +154,7 @@ startTestnetCluster startupParams cleanupRef cfg = do ogmios <- startOgmios' { paths, workdir: workdirAbsolute } kupo <- startKupo' { paths, workdir: workdirAbsolute } - pure + pure $ MkStartedTestnetCluster { paths , ogmios , kupo @@ -248,7 +259,7 @@ startCardanoTestnet , stdout :: EventSource String } , workdirAbsolute :: FilePath - , nodes :: Array { dir :: FilePath, port :: UInt } + , nodes :: Array { | Node () } } startCardanoTestnet params cleanupRef = do @@ -263,15 +274,14 @@ startCardanoTestnet params cleanupRef = do channels.stdout workdir <- waitForEvent events log $ "Found workdir: " <> workdir - liftEffect cancel + liftEffect $ cancel $ error "Not needed anymore" pure $ tmp <> workdir -- cardano-testnet doesn't kill cardano-nodes it spawns, so we do it ourselves nodes <- liftEffect do nodeDirs <- findNodeDirs { workdir: workdirAbsolute } - for nodeDirs \nodeDir -> do - port <- getNodePort { nodeDir } - pure { dir: nodeDir, port } + readNodes { testnetDirectory: workdirAbsolute, nodeDirs } + for_ nodes \{ port } -> do liftEffect $ addCleanup cleanupRef From 1adf988f907ba6b0f97e2ca3bcab03a1ea97bba1 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 04:40:40 +0300 Subject: [PATCH 176/373] Control Aff's and events carefully --- src/Internal/Plutip/Utils.js | 17 +++ src/Internal/Plutip/Utils.purs | 268 ++++++++++++++++++++++++--------- 2 files changed, 214 insertions(+), 71 deletions(-) diff --git a/src/Internal/Plutip/Utils.js b/src/Internal/Plutip/Utils.js index ab594520c..545df944a 100644 --- a/src/Internal/Plutip/Utils.js +++ b/src/Internal/Plutip/Utils.js @@ -3,3 +3,20 @@ import os from "os"; export function tmpdir() { return os.tmpdir(); } + +export function setLineHandler(interf) { + return callback => () => { + const signal = "line"; + const cb = line => callback(line)(); + interf.on(signal, cb); + return { signal, callback: cb }; + }; +} + +export function setCloseHandler(readline) { + return callback => () => { + const signal = "close"; + readline.on(signal, callback); + return { signal, callback }; + }; +} diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 791c20bb7..c1343756b 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -2,8 +2,8 @@ module Ctl.Internal.Plutip.Utils ( mkDirIfNotExists , runCleanup , tmpdir + , annotateError , cleanupOnExit - , handleLines , EventSource(EventSource) , onLine , makeEventSource @@ -14,21 +14,33 @@ module Ctl.Internal.Plutip.Utils , after , whenError , suppressAndLogErrors + , tryAndLogErrors + , waitForClose ) where import Contract.Prelude -import Control.Monad.Error.Class (class MonadError, catchError) +import Control.Monad.Error.Class (class MonadError, catchError, throwError) +import Ctl.Internal.Plutip.Spawn + ( ManagedProcess(..) + , OnSignalRef + , makeAffCanceler + , removeOnSignal + , waitForSignal + ) import Ctl.Internal.QueryM.UniqueId (uniqueId) import Data.Array as Array import Data.Map as Map +import Data.Posix.Signal (Signal(..)) import Effect (Effect) import Effect.Aff (try) import Effect.Aff as Aff +import Effect.Aff.AVar as AVar import Effect.Class (class MonadEffect) -import Effect.Exception (Error, message) +import Effect.Exception (Error, error, message) import Effect.Ref (Ref) import Effect.Ref as Ref +import Node.ChildProcess as Node.ChildProcess import Node.FS.Sync as FS import Node.Path (FilePath) import Node.Process as Process @@ -39,12 +51,47 @@ import Node.Stream (Readable) -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/726 foreign import tmpdir :: Effect String +foreign import setLineHandler + :: RL.Interface -> (String -> Effect Unit) -> Effect OnSignalRef + +foreign import setCloseHandler + :: RL.Interface -> Effect Unit -> Effect OnSignalRef + suppressAndLogErrors - :: forall a m. MonadEffect m => MonadError Error m => m Unit -> m Unit -suppressAndLogErrors = flip catchError $ message - >>> append "An error occured and suppressed: " + :: forall m. MonadEffect m => MonadError Error m => String -> m Unit -> m Unit +suppressAndLogErrors location = flip catchError $ message + >>> append ("An error occured and suppressed at " <> location <> ": ") >>> log +-- | Waits until processe's stdout closes. +-- Assuming this means that process is closed as well. +waitForClose :: ManagedProcess -> Aff Unit +waitForClose (ManagedProcess _ child _) = do + interface <- liftEffect + $ flip RL.createInterface mempty + $ Node.ChildProcess.stdout child + Aff.makeAff \cont -> do + { canceler, cancelationStatus } <- makeAffCanceler $ const $ pure unit + _ <- setCloseHandler interface + $ cancelationStatus + >>= maybe (Right unit) Left + >>> cont + pure canceler + +tryAndLogErrors + :: forall a m + . MonadEffect m + => MonadError Error m + => String + -> m a + -> m (Either Error a) +tryAndLogErrors location = try >=> case _ of + Left err -> do + log $ "An error occured and suppressed at " <> location <> ": " <> message + err + pure $ Left err + Right a -> pure $ Right a + mkDirIfNotExists :: FilePath -> Effect Unit mkDirIfNotExists dirName = do exists <- FS.exists dirName @@ -53,46 +100,64 @@ mkDirIfNotExists dirName = do runCleanup :: Ref (Array (Aff Unit)) -> Aff Unit runCleanup cleanupRef = do cleanups <- liftEffect $ Ref.read cleanupRef - sequence_ (try <$> cleanups) + sequence_ $ suppressAndLogErrors "runCleanup" <$> cleanups waitForBeforeExit :: Aff Unit waitForBeforeExit = Aff.makeAff \cont -> do - isCanceledRef <- Ref.new false - let cancel = Ref.write false isCanceledRef - Process.onBeforeExit do - isCanceled <- Ref.read isCanceledRef - unless isCanceled do - cont $ Right unit - pure $ Aff.Canceler $ const $ liftEffect cancel - -handleLines - :: forall a - . Readable a - -> (String -> Effect Unit) - -> Effect { cancel :: Effect Unit } -handleLines readable handler = do - EventSource { subscribe, cancel } <- onLine readable Just - _ <- subscribe $ handler <<< _.event - pure { cancel } + { canceler, cancelationStatus } <- makeAffCanceler $ const $ pure unit + Process.onBeforeExit + $ cancelationStatus + >>= maybe (Right unit) Left + >>> cont + pure canceler newtype EventSource b = EventSource { subscribe :: - ({ unsubscribe :: Effect Unit, event :: b } -> Effect Unit) - -> Effect { unsubscribe :: Effect Unit } - , cancel :: Effect Unit + ( { unsubscribe :: Effect Unit + , event :: Either Error b + } + -> Effect Unit + ) + -> Effect (Either Error { unsubscribe :: Effect Unit }) + , cancel :: Error -> Effect Unit } -- | Waits for any event. Note, if the event source throws an async error, any joining process dies. waitForEvent :: forall a. EventSource a -> Aff a -waitForEvent (EventSource { subscribe }) = Aff.makeAff \cont -> do - canceler <- makeCanceler - { unsubscribe } <- subscribe \{ unsubscribe, event } -> do - unsubscribe - canceler.isCanceled >>= flip unless do - cont $ Right event - pure $ Aff.Canceler $ const $ liftEffect do - unsubscribe - canceler.cancel +waitForEvent (EventSource { subscribe }) = annotateError "waitForEvent" $ + Aff.makeAff \cont -> do + { canceler: Aff.Canceler cancel, cancelationStatus } <- + makeAffCanceler $ const $ pure unit + canceler <- makeCanceler + subscriptionResult <- subscribe \{ unsubscribe, event } -> do + unsubscribe + canceler.isCanceled >>= flip when do + void + $ suppressAndLogErrors "waitForEvent:event" + $ cont + $ Left + $ error "Action has been canceled" + cancelationStatus >>= case _ of + Nothing -> void $ suppressAndLogErrors "waitForEvent:success" $ cont + event + Just err -> void $ suppressAndLogErrors "waitForEvent:failure" $ cont $ + Left err + case subscriptionResult of + Right { unsubscribe } -> + pure $ Aff.Canceler \err -> do + log "canceling" + liftEffect do + unsubscribe + canceler.cancel + cancel err + Left subError -> do + err <- try + $ annotateError "Failed to subscribe" + $ throwError subError + + suppressAndLogErrors "waitForEvent:badSubscription" + $ cont err + pure $ Aff.Canceler \e -> throwError e onLine :: forall a b @@ -100,9 +165,20 @@ onLine -> (String -> Maybe b) -> Effect (EventSource b) onLine readable = - map _.eventSource <<< makeEventSource \cont -> do + map _.eventSource <<< makeEventSource \mainHandler -> do interface <- RL.createInterface readable mempty - flip RL.setLineHandler interface cont + lineHandler <- setLineHandler interface \x -> do + void + $ suppressAndLogErrors "onLine:setLineHandler" + $ mainHandler + $ Right x + setCloseHandler interface do + removeOnSignal lineHandler + void + $ suppressAndLogErrors "onLine:setCloseHandler" + $ mainHandler + $ Left + $ error "Line event source has been closed." -- | Create an event source based on another event source, but -- with smaller variety of events. @@ -111,42 +187,70 @@ narrowEventSource . (a -> Maybe b) -> EventSource a -> Effect (EventSource b) -narrowEventSource filter (EventSource { subscribe }) = do - { eventSource: EventSource source@{ cancel } - , outcome: { unsubscribe } - } <- flip makeEventSource filter \registerHandler -> - subscribe $ registerHandler <<< _.event - pure $ EventSource source - { cancel = cancel *> unsubscribe } +narrowEventSource filter (EventSource { subscribe }) = annotateError + "narrowEventSource" + do + { eventSource: EventSource source@{ cancel } + , outcome: subscriptionResult + } <- flip makeEventSource filter \registerHandler -> + subscribe $ registerHandler <<< _.event + { unsubscribe } <- liftEither subscriptionResult + pure $ EventSource source + { cancel = \e -> cancel e *> unsubscribe } makeEventSource :: forall a b c - . ((a -> Effect Unit) -> Effect c) + . ((Either Error a -> Effect Unit) -> Effect c) -> (a -> Maybe b) -> Effect { eventSource :: EventSource b, outcome :: c } -makeEventSource subscribeOnEvents filter = do - { isCanceled: getIsCanceled, cancel } <- makeCanceler +makeEventSource subscribeOnEvents filter = annotateError "make event source" do handlers <- Ref.new $ Map.fromFoldable [] + { isCanceled, cancel } <- makeErrorCanceler \error -> do + Ref.read handlers >>= traverse_ \cont -> + void $ suppressAndLogErrors "makeEventSource:cancel" $ cont $ Left error + Ref.write (Map.fromFoldable []) handlers let subscribe handler = do - id <- uniqueId "sub" - let unsubscribe = Ref.modify_ (Map.delete id) handlers - _ <- Ref.modify_ (Map.insert id \event -> handler { unsubscribe, event }) - handlers - pure { unsubscribe } - - outcome <- subscribeOnEvents \a -> - case filter a of + isCanceled >>= + if _ then + pure $ Left $ error "Event source is closed." + else do + id <- uniqueId "sub" + let unsubscribe = Ref.modify_ (Map.delete id) handlers + _ <- Ref.modify_ + (Map.insert id \event -> handler { unsubscribe, event }) + handlers + pure $ Right { unsubscribe } + + outcome <- subscribeOnEvents \ea -> case ea of + Left error -> cancel error + Right a -> case filter a of Just b -> do - isCanceled <- getIsCanceled - unless isCanceled do - Ref.read handlers >>= traverse_ (_ $ b) + isCanceled >>= flip unless do + Ref.read handlers >>= traverse_ (_ $ Right b) Nothing -> pure unit pure { eventSource: EventSource { cancel, subscribe } , outcome } +makeErrorCanceler + :: forall e + . (e -> Effect Unit) + -> Effect + { cancel :: e -> Effect Unit + , isCanceled :: Effect Boolean + } +makeErrorCanceler customCancelation = do + isCanceledRef <- Ref.new false + let + cancel err = do + log "Canceled." + Ref.write false isCanceledRef + customCancelation err + isCanceled = Ref.read isCanceledRef + pure { isCanceled, cancel } + makeCanceler :: Effect { cancel :: Effect Unit, isCanceled :: Effect Boolean } makeCanceler = do isCanceledRef <- Ref.new false @@ -155,19 +259,31 @@ makeCanceler = do isCanceled = Ref.read isCanceledRef pure { isCanceled, cancel } -cleanupOnExit :: Ref (Array (Aff Unit)) -> Aff (Aff.Fiber Unit) -cleanupOnExit cleanupRef = Aff.forkAff do - waitForBeforeExit - log "Running cleanup on beforeExit" - runCleanup cleanupRef +cleanupOnExit + :: Ref (Array (Aff Unit)) + -> Aff + { onBeforeExit :: Aff.Fiber Unit + , onSigint :: Aff.Fiber Unit + } +cleanupOnExit cleanupRef = do + triggered <- AVar.empty + onBeforeExit <- Aff.forkAff do + waitForBeforeExit + canStart <- AVar.tryPut unit triggered + when canStart do + log "Running cleanup on exit" + runCleanup cleanupRef + onSigint <- Aff.forkAff do + waitForSignal SIGINT + canStart <- AVar.tryPut unit triggered + when canStart do + log "Running cleanup on SIGINT" + runCleanup cleanupRef + pure { onBeforeExit, onSigint } addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit -addCleanup = map void <<< flip (Ref.modify <<< Array.cons <<< reportError) - where - reportError action = do - try action >>= either - (log <<< append "[addCleanup][error]: " <<< message) - (const $ pure unit) +addCleanup = map void <<< flip + (Ref.modify <<< Array.cons <<< suppressAndLogErrors "[addCleanup][error]: ") scheduleCleanup :: forall a @@ -187,4 +303,14 @@ whenError whenErrorAction action = do -- | Just as a bracket but without the body. after :: forall a. Aff a -> (a -> Aff Unit) -> Aff a -after first second = Aff.bracket first second pure \ No newline at end of file +after first second = Aff.bracket first second pure + +annotateError + :: forall (a :: Type) m + . MonadError Error m + => String + -> m a + -> m a +annotateError withPrefix action = + catchError action \err -> + throwError $ error $ withPrefix <> ": " <> message err From 7f2f5ec550816822e4b525970be995d527ec9d77 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 04:51:07 +0300 Subject: [PATCH 177/373] Throw on waitForSignal cancelation, don't fail silently --- src/Internal/Plutip/Spawn.purs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Plutip/Spawn.purs index d9a81d996..cb6e9429b 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Plutip/Spawn.purs @@ -16,9 +16,8 @@ module Ctl.Internal.Plutip.Spawn , _rmdirSync ) where -import Prelude +import Contract.Prelude -import Contract.Prelude (maybe) import Control.Monad.Error.Class (throwError) import Ctl.Internal.Plutip.PortCheck (isPortAvailable) import Ctl.Internal.Plutip.Types (FilePath) @@ -94,8 +93,11 @@ spawn' cmd args opts mbFilter cont = do RL.close interface void $ AVar.tryPut code closedAVar output <- Ref.read outputRef - cont $ Left $ error $ - "Process " <> fullCmd <> " exited. Output:\n" <> output + cont $ Left $ error + $ "Process " + <> fullCmd + <> " exited. Output:\n" + <> output -- Ideally we call `RL.close interface` instead of detaching the listener -- via `clearLineHandler interface`, but it causes issues with the output @@ -116,7 +118,8 @@ spawn' cmd args opts mbFilter cont = do kill SIGINT child clearLineHandler interface cont $ Left $ error - $ "Process cancelled because output received: " <> str + $ "Process cancelled because output received: " + <> str _ -> pure unit pure $ Canceler $ const $ liftEffect $ kill SIGINT child @@ -148,9 +151,14 @@ onSignal sig = onSignalImpl (Signal.toString sig) -- | Just as onSignal, but Aff. waitForSignal :: Signal -> Aff Unit -waitForSignal signal = makeAff \cont -> ado - onSignalRef <- onSignal signal $ cont $ pure unit - in Canceler \_ -> liftEffect $ removeOnSignal onSignalRef +waitForSignal signal = makeAff \cont -> do + isCanceledRef <- Ref.new false + onSignalRef <- onSignal signal + $ Ref.read isCanceledRef >>= flip unless (cont $ Right unit) + pure $ Canceler \err -> liftEffect do + Ref.write true isCanceledRef + removeOnSignal onSignalRef + cont $ Left err cleanupOnSigint :: FilePath -> FilePath -> Effect OnSignalRef cleanupOnSigint workingDir testClusterDir = do From a4deda3c7472b07c10c6fa0584b45e8b3e8d4905 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 05:25:29 +0300 Subject: [PATCH 178/373] Cleanup cancelers --- src/Internal/Plutip/Utils.purs | 71 ++++++++++++++++------------------ 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index c1343756b..433dc07ff 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -24,7 +24,6 @@ import Control.Monad.Error.Class (class MonadError, catchError, throwError) import Ctl.Internal.Plutip.Spawn ( ManagedProcess(..) , OnSignalRef - , makeAffCanceler , removeOnSignal , waitForSignal ) @@ -71,13 +70,30 @@ waitForClose (ManagedProcess _ child _) = do $ flip RL.createInterface mempty $ Node.ChildProcess.stdout child Aff.makeAff \cont -> do - { canceler, cancelationStatus } <- makeAffCanceler $ const $ pure unit - _ <- setCloseHandler interface - $ cancelationStatus - >>= maybe (Right unit) Left - >>> cont + { canceler, ifNotCanceled } <- simpleAffCanceler cont + _ <- setCloseHandler interface $ ifNotCanceled unit pure canceler +simpleAffCanceler :: forall a. (Either Error a -> Effect Unit) -> Effect + { canceler :: Aff.Canceler + , cancel :: Error -> Effect Unit + , isCanceled :: Effect Boolean + , ifNotCanceled :: a -> Effect Unit + } +simpleAffCanceler cont = do + {cancel, isCanceled} <- makeCanceler + let + onCancel = \err -> do + cancel + cont $ Left err + pure + { canceler: Aff.Canceler $ onCancel >>> liftEffect + , isCanceled + , ifNotCanceled: \a -> + isCanceled >>= flip unless (cont $ Right a) + , cancel: onCancel + } + tryAndLogErrors :: forall a m . MonadEffect m @@ -104,11 +120,8 @@ runCleanup cleanupRef = do waitForBeforeExit :: Aff Unit waitForBeforeExit = Aff.makeAff \cont -> do - { canceler, cancelationStatus } <- makeAffCanceler $ const $ pure unit - Process.onBeforeExit - $ cancelationStatus - >>= maybe (Right unit) Left - >>> cont + { canceler, ifNotCanceled } <- simpleAffCanceler cont + Process.onBeforeExit $ ifNotCanceled unit pure canceler newtype EventSource b = EventSource @@ -126,38 +139,20 @@ newtype EventSource b = EventSource waitForEvent :: forall a. EventSource a -> Aff a waitForEvent (EventSource { subscribe }) = annotateError "waitForEvent" $ Aff.makeAff \cont -> do - { canceler: Aff.Canceler cancel, cancelationStatus } <- - makeAffCanceler $ const $ pure unit - canceler <- makeCanceler + {cancel, isCanceled} <- simpleAffCanceler cont subscriptionResult <- subscribe \{ unsubscribe, event } -> do unsubscribe - canceler.isCanceled >>= flip when do - void - $ suppressAndLogErrors "waitForEvent:event" - $ cont - $ Left - $ error "Action has been canceled" - cancelationStatus >>= case _ of - Nothing -> void $ suppressAndLogErrors "waitForEvent:success" $ cont - event - Just err -> void $ suppressAndLogErrors "waitForEvent:failure" $ cont $ - Left err + isCanceled >>= flip unless (cont event) case subscriptionResult of - Right { unsubscribe } -> - pure $ Aff.Canceler \err -> do - log "canceling" - liftEffect do - unsubscribe - canceler.cancel - cancel err + Right { unsubscribe } -> pure $ Aff.Canceler \err -> liftEffect do + unsubscribe + cancel err Left subError -> do - err <- try - $ annotateError "Failed to subscribe" - $ throwError subError - + let + err = error $ append "Failed to subscribe" $ message subError suppressAndLogErrors "waitForEvent:badSubscription" - $ cont err - pure $ Aff.Canceler \e -> throwError e + $ cancel err + pure Aff.nonCanceler onLine :: forall a b From f21cd12fb51e1fb759279099776f3106f30bc9a7 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 05:27:10 +0300 Subject: [PATCH 179/373] Set onClose handlers to cleanup after spawned processes exit --- src/Internal/Testnet/Server.purs | 53 ++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 5af306d20..3532e6d3e 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -14,7 +14,10 @@ module Ctl.Internal.Testnet.Server import Contract.Prelude import Contract.Test.Mote (TestPlanM) -import Control.Monad.Error.Class (catchError) +import Control.Apply (applySecond) +import Control.Monad.Error.Class + ( throwError + ) import Control.Monad.Rec.Class (Step(..), tailRecM) import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Plutip.Server @@ -36,13 +39,17 @@ import Ctl.Internal.Plutip.Types import Ctl.Internal.Plutip.Utils ( EventSource(..) , addCleanup + , annotateError , narrowEventSource , onLine + , runCleanup , scheduleCleanup + , suppressAndLogErrors , tmpdir + , tryAndLogErrors + , waitForClose , waitForEvent ) -import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Test.ContractTest ( ContractTest , ContractTestPlan(ContractTestPlan) @@ -58,8 +65,8 @@ import Ctl.Internal.Testnet.Types as Testnet.Types import Ctl.Internal.Testnet.Utils ( findNodeDirs , findTestnetPaths - , getNodePort , onTestnetEvent + , readNodes , tellsIt'sLocation , waitFor ) @@ -67,10 +74,9 @@ import Ctl.Internal.Wallet.Key (PrivatePaymentKey) import Data.Array as Array import Data.Maybe (Maybe(Nothing, Just)) import Data.Tuple.Nested (type (/\)) -import Data.UInt (UInt) import Effect.Aff (Aff) import Effect.Aff as Aff -import Effect.Exception (message) +import Effect.Exception (Error, error) import Effect.Exception.Unsafe (unsafeThrow) import Effect.Ref (Ref) import Node.ChildProcess (defaultSpawnOptions) @@ -140,19 +146,24 @@ startTestnetCluster startupParams cleanupRef cfg = do { testnet , channels , workdirAbsolute - } <- startCardanoTestnet startupParams cleanupRef - source <- liftEffect $ onTestnetEvent channels.stdout - - -- it will crash right here if testnet process will die - waitFor source case _ of - Ready -> Just unit + } <- annotateError "Could not start cardano-testnet" + $ startCardanoTestnet startupParams cleanupRef + + testnetEvents <- liftEffect $ onTestnetEvent channels.stdout + -- it will crash right here uncatchable if testnet process will die + log "Waiting for Ready state" + waitFor testnetEvents case _ of + Testnet.Types.Ready -> Just unit _ -> Nothing + log "Testnet is ready" paths <- liftEither =<< liftEffect (findTestnetPaths { workdir: workdirAbsolute }) - ogmios <- startOgmios' { paths, workdir: workdirAbsolute } - kupo <- startKupo' { paths, workdir: workdirAbsolute } + ogmios <- annotateError "Could not start ogmios" + $ startOgmios' { paths, workdir: workdirAbsolute } + kupo <- annotateError "Could not start kupo" + $ startKupo' { paths, workdir: workdirAbsolute } pure $ MkStartedTestnetCluster { paths @@ -168,6 +179,12 @@ startTestnetCluster startupParams cleanupRef cfg = do (startKupo cfg paths cleanupRef) $ fst >>> stop + + _ <- Aff.forkAff do + waitForClose kupo + runCleanup cleanupRef + throwError $ error "kupo process has exited" + kupoChannels <- liftEffect $ getChannels kupo _ <- redirectChannels kupoChannels @@ -184,6 +201,10 @@ startTestnetCluster startupParams cleanupRef cfg = do cleanupRef (startOgmios cfg paths) stop + _ <- Aff.forkAff do + waitForClose ogmios + runCleanup cleanupRef + throwError $ error "ogmios process has exited" ogmiosChannels <- liftEffect $ getChannels ogmios _ <- redirectChannels @@ -267,6 +288,12 @@ startCardanoTestnet params cleanupRef = do testnet <- spawnCardanoTestnet params channels <- liftEffect $ getChannels testnet + + _ <- Aff.forkAff do + waitForClose testnet + runCleanup cleanupRef + throwError $ error "cardano-testnet process has exited" + workdirAbsolute <- do events@(EventSource { cancel }) <- liftEffect $ narrowEventSource From 04931e08331f3f08732aa10816feb0df2bc52a70 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 05:28:16 +0300 Subject: [PATCH 180/373] Format code --- src/Internal/Plutip/Spawn.purs | 3 ++- src/Internal/Plutip/Utils.purs | 21 ++++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Plutip/Spawn.purs index cb6e9429b..66aa208e4 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Plutip/Spawn.purs @@ -154,7 +154,8 @@ waitForSignal :: Signal -> Aff Unit waitForSignal signal = makeAff \cont -> do isCanceledRef <- Ref.new false onSignalRef <- onSignal signal - $ Ref.read isCanceledRef >>= flip unless (cont $ Right unit) + $ Ref.read isCanceledRef + >>= flip unless (cont $ Right unit) pure $ Canceler \err -> liftEffect do Ref.write true isCanceledRef removeOnSignal onSignalRef diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 433dc07ff..4f895c649 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -74,14 +74,17 @@ waitForClose (ManagedProcess _ child _) = do _ <- setCloseHandler interface $ ifNotCanceled unit pure canceler -simpleAffCanceler :: forall a. (Either Error a -> Effect Unit) -> Effect - { canceler :: Aff.Canceler - , cancel :: Error -> Effect Unit - , isCanceled :: Effect Boolean - , ifNotCanceled :: a -> Effect Unit - } +simpleAffCanceler + :: forall a + . (Either Error a -> Effect Unit) + -> Effect + { canceler :: Aff.Canceler + , cancel :: Error -> Effect Unit + , isCanceled :: Effect Boolean + , ifNotCanceled :: a -> Effect Unit + } simpleAffCanceler cont = do - {cancel, isCanceled} <- makeCanceler + { cancel, isCanceled } <- makeCanceler let onCancel = \err -> do cancel @@ -90,7 +93,7 @@ simpleAffCanceler cont = do { canceler: Aff.Canceler $ onCancel >>> liftEffect , isCanceled , ifNotCanceled: \a -> - isCanceled >>= flip unless (cont $ Right a) + isCanceled >>= flip unless (cont $ Right a) , cancel: onCancel } @@ -139,7 +142,7 @@ newtype EventSource b = EventSource waitForEvent :: forall a. EventSource a -> Aff a waitForEvent (EventSource { subscribe }) = annotateError "waitForEvent" $ Aff.makeAff \cont -> do - {cancel, isCanceled} <- simpleAffCanceler cont + { cancel, isCanceled } <- simpleAffCanceler cont subscriptionResult <- subscribe \{ unsubscribe, event } -> do unsubscribe isCanceled >>= flip unless (cont event) From 79511c94272cfb70613ceb36892f51baaf000a96 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 05:28:45 +0300 Subject: [PATCH 181/373] Implement runContract --- src/Internal/Testnet/Contract.purs | 51 +++++++++++++++++++++++------- src/Internal/Testnet/Utils.purs | 3 +- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 43510c441..19101c730 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -2,16 +2,45 @@ module Ctl.Internal.Testnet.Contract where import Contract.Prelude -import Contract.Config as Config -import Contract.Monad (ContractEnv) -import Ctl.Internal.Logging (Logger) -import Ctl.Internal.Plutip.Server (mkClusterContractEnv) -import Internal.Testnet.Types (TestnetClusterConfig) +import Contract.Monad + ( Contract + , ContractEnv + ) +import Contract.Monad as Contract +import Ctl.Internal.Plutip.Server + ( makeClusterContractEnv + ) +import Ctl.Internal.Plutip.Utils + ( cleanupOnExit + , whenError + ) +import Ctl.Internal.Testnet.Server + ( StartedTestnetCluster + , defaultStartupParams + , startTestnetCluster + ) +import Ctl.Internal.Testnet.Types (TestnetClusterConfig) +import Effect.Ref as Ref -makeContractEnv - :: forall r +-- | Run a single `Contract` in Plutip environment. +runContract + :: forall (a :: Type) r . Record (TestnetClusterConfig r) - -> Logger - -> Maybe (LogLevel -> Config.Message -> Aff Unit) - -> Aff ContractEnv -makeContractEnv = mkClusterContractEnv + -> Contract a + -> Aff a +runContract cfg cont = withContractEnv cfg \_ env -> + Contract.runContractInEnv env cont + +-- | Provide a `ContractEnv` connected to Plutip. +-- | can be used to run multiple `Contract`s using `runContractInEnv`. +withContractEnv + :: forall (a :: Type) r + . Record (TestnetClusterConfig r) + -> (StartedTestnetCluster -> ContractEnv -> Aff a) + -> Aff a +withContractEnv cfg cont = do + cleanupRef <- liftEffect $ Ref.new [] + _ <- cleanupOnExit cleanupRef + cluster <- startTestnetCluster defaultStartupParams cleanupRef cfg + { env, printLogs } <- makeClusterContractEnv cleanupRef cfg + whenError printLogs $ cont cluster env \ No newline at end of file diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index 5ff097ef1..8025ff1a1 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -103,7 +103,8 @@ getNodePort { nodeDir } = findNodeDirs :: { workdir :: FilePath } -> Effect (Array { | NodeLocation () }) findNodeDirs { workdir } = ado subdirs <- Node.FS.readdir workdir - in flip Array.mapMaybe subdirs \dirname -> ado + in + flip Array.mapMaybe subdirs \dirname -> ado idx <- Int.fromString =<< String.stripPrefix (Pattern "node-spo") dirname in { idx, workdir: workdir <> dirname } From 4a795c8f038eba161c3fa66aac4c92fe8463b84c Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 15:39:14 +0300 Subject: [PATCH 182/373] Base cancelation on unsubscription, not on boolean refs --- src/Internal/Plutip/Utils.purs | 129 ++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 57 deletions(-) diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 4f895c649..08e033b27 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -70,9 +70,10 @@ waitForClose (ManagedProcess _ child _) = do $ flip RL.createInterface mempty $ Node.ChildProcess.stdout child Aff.makeAff \cont -> do - { canceler, ifNotCanceled } <- simpleAffCanceler cont - _ <- setCloseHandler interface $ ifNotCanceled unit - pure canceler + onCloseRef <- setCloseHandler interface $ cont $ Right unit + pure $ Aff.Canceler \err -> liftEffect do + removeOnSignal onCloseRef + cont $ Left $ appendErrorMessage "waitForClose has been canceled" err simpleAffCanceler :: forall a @@ -142,19 +143,18 @@ newtype EventSource b = EventSource waitForEvent :: forall a. EventSource a -> Aff a waitForEvent (EventSource { subscribe }) = annotateError "waitForEvent" $ Aff.makeAff \cont -> do - { cancel, isCanceled } <- simpleAffCanceler cont subscriptionResult <- subscribe \{ unsubscribe, event } -> do unsubscribe - isCanceled >>= flip unless (cont event) + cont event case subscriptionResult of Right { unsubscribe } -> pure $ Aff.Canceler \err -> liftEffect do unsubscribe - cancel err + cont $ Left $ appendErrorMessage "waitForEvent:canceled" err Left subError -> do - let - err = error $ append "Failed to subscribe" $ message subError suppressAndLogErrors "waitForEvent:badSubscription" - $ cancel err + $ cont + $ Left + $ appendErrorMessage "Failed to subscribe" subError pure Aff.nonCanceler onLine @@ -163,20 +163,28 @@ onLine -> (String -> Maybe b) -> Effect (EventSource b) onLine readable = - map _.eventSource <<< makeEventSource \mainHandler -> do + map _.eventSource <<< makeEventSource \{ handle: mainHandler } -> do interface <- RL.createInterface readable mempty lineHandler <- setLineHandler interface \x -> do void $ suppressAndLogErrors "onLine:setLineHandler" $ mainHandler $ Right x - setCloseHandler interface do - removeOnSignal lineHandler - void - $ suppressAndLogErrors "onLine:setCloseHandler" - $ mainHandler - $ Left - $ error "Line event source has been closed." + let + cancel = do + removeOnSignal lineHandler + void + $ suppressAndLogErrors "onLine:setCloseHandler" + $ mainHandler + $ Left + $ error "Line event source has been closed." + closeHandler <- setCloseHandler interface cancel + pure + { outcome: unit + , unsubscribe: do + removeOnSignal closeHandler + cancel + } -- | Create an event source based on another event source, but -- with smaller variety of events. @@ -185,31 +193,41 @@ narrowEventSource . (a -> Maybe b) -> EventSource a -> Effect (EventSource b) -narrowEventSource filter (EventSource { subscribe }) = annotateError +narrowEventSource filter (EventSource source) = annotateError "narrowEventSource" do - { eventSource: EventSource source@{ cancel } - , outcome: subscriptionResult - } <- flip makeEventSource filter \registerHandler -> - subscribe $ registerHandler <<< _.event - { unsubscribe } <- liftEither subscriptionResult - pure $ EventSource source - { cancel = \e -> cancel e *> unsubscribe } + { eventSource: new + , outcome: subscriptionResult -- this goes from the source + } <- flip makeEventSource filter \{ handle } -> + do -- this is how new event source subscribe on the source + source.subscribe (handle <<< _.event) >>= case _ of + Left err -> pure + { outcome: Left err -- this is not for makeEventSource + , unsubscribe: pure unit -- how do 'new' unsubscribe from the 'source' + } + Right { unsubscribe: unsubFromSource } -> pure + { outcome: Right unit -- this is not for makeEventSource + , unsubscribe: unsubFromSource -- how do 'new' unsubscribe from the 'source' + } + liftEither subscriptionResult + pure new makeEventSource :: forall a b c - . ((Either Error a -> Effect Unit) -> Effect c) + . ( { handle :: Either Error a -> Effect Unit } + -> Effect { unsubscribe :: Effect Unit, outcome :: c } + ) -> (a -> Maybe b) -> Effect { eventSource :: EventSource b, outcome :: c } makeEventSource subscribeOnEvents filter = annotateError "make event source" do handlers <- Ref.new $ Map.fromFoldable [] - { isCanceled, cancel } <- makeErrorCanceler \error -> do - Ref.read handlers >>= traverse_ \cont -> - void $ suppressAndLogErrors "makeEventSource:cancel" $ cont $ Left error - Ref.write (Map.fromFoldable []) handlers + isCanceled <- Ref.new false + cancelRef <- Ref.new mempty let + markCanceled = Ref.write true isCanceled + cancel error = Ref.read cancelRef >>= (_ $ error) subscribe handler = do - isCanceled >>= + Ref.read isCanceled >>= if _ then pure $ Left $ error "Event source is closed." else do @@ -220,35 +238,26 @@ makeEventSource subscribeOnEvents filter = annotateError "make event source" do handlers pure $ Right { unsubscribe } - outcome <- subscribeOnEvents \ea -> case ea of - Left error -> cancel error - Right a -> case filter a of - Just b -> do - isCanceled >>= flip unless do - Ref.read handlers >>= traverse_ (_ $ Right b) - Nothing -> pure unit + { unsubscribe, outcome } <- subscribeOnEvents + { handle: \ea -> case ea of + Left error -> cancel error + Right a -> case filter a of + Just b -> do + Ref.read handlers >>= traverse_ (_ $ Right b) + Nothing -> pure unit + } + flip Ref.write cancelRef \error -> do + unsubscribe + markCanceled + Ref.read handlers >>= traverse_ \cont -> + void $ suppressAndLogErrors "makeEventSource:cancel" $ cont $ Left error + Ref.write (Map.fromFoldable []) handlers + pure { eventSource: EventSource { cancel, subscribe } , outcome } -makeErrorCanceler - :: forall e - . (e -> Effect Unit) - -> Effect - { cancel :: e -> Effect Unit - , isCanceled :: Effect Boolean - } -makeErrorCanceler customCancelation = do - isCanceledRef <- Ref.new false - let - cancel err = do - log "Canceled." - Ref.write false isCanceledRef - customCancelation err - isCanceled = Ref.read isCanceledRef - pure { isCanceled, cancel } - makeCanceler :: Effect { cancel :: Effect Unit, isCanceled :: Effect Boolean } makeCanceler = do isCanceledRef <- Ref.new false @@ -310,5 +319,11 @@ annotateError -> m a -> m a annotateError withPrefix action = - catchError action \err -> - throwError $ error $ withPrefix <> ": " <> message err + catchError action $ throwError <<< appendErrorMessage withPrefix + +appendErrorMessage + :: String + -> Error + -> Error +appendErrorMessage withPrefix = + error <<< append (withPrefix <> ": ") <<< message \ No newline at end of file From 3050ca39d11c3da98830e444ba3dfafb4e9c2f34 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Mon, 3 Jun 2024 17:50:15 +0300 Subject: [PATCH 183/373] Fix stack overflow --- src/Internal/Plutip/Utils.purs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 08e033b27..b6ef55ee3 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -58,7 +58,7 @@ foreign import setCloseHandler suppressAndLogErrors :: forall m. MonadEffect m => MonadError Error m => String -> m Unit -> m Unit -suppressAndLogErrors location = flip catchError $ message +suppressAndLogErrors location = flip catchError $ show >>> append ("An error occured and suppressed at " <> location <> ": ") >>> log @@ -174,7 +174,7 @@ onLine readable = cancel = do removeOnSignal lineHandler void - $ suppressAndLogErrors "onLine:setCloseHandler" + $ suppressAndLogErrors "onLine:cancel" $ mainHandler $ Left $ error "Line event source has been closed." @@ -247,6 +247,7 @@ makeEventSource subscribeOnEvents filter = annotateError "make event source" do Nothing -> pure unit } flip Ref.write cancelRef \error -> do + Ref.write mempty cancelRef -- canceler may be called only once unsubscribe markCanceled Ref.read handlers >>= traverse_ \cont -> From b3c753b14bfaf703a4b4ee44b37d7c6a8147b6ee Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 3 Jun 2024 20:24:27 +0300 Subject: [PATCH 184/373] Add Intersect to funding acknowledgements --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8b14c7907..eec34028f 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,7 @@ CTL is being developed by MLabs. The following companies/funds have contributed - [Catalyst Fund8](https://cardano.ideascale.com/c/idea/396607) - [Catalyst Fund9](https://cardano.ideascale.com/c/idea/420791) - [Catalyst Fund10](https://cardano.ideascale.com/c/idea/101478) +- [Intersect MBO](https://docs.intersectmbo.org/intersect-community-grants/grant-projects) - [MLabs](https://mlabs.city/) - [Indigo Protocol](https://indigoprotocol.io/) - [Equine](https://www.equine.gg/) From fabc6619ee72459561f96bf4a4db60dd40ada50d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 3 Jun 2024 20:27:50 +0300 Subject: [PATCH 185/373] Add fourierlabs to acknowledgements --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index eec34028f..ea7377c6f 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ You can find help, more information and ongoing discusion about the project here ## Funding acknowledgements -CTL is being developed by MLabs. The following companies/funds have contributed significant resources to development: +CTL is being developed by MLabs. The following companies/funds have contributed significant resources (development time or funding) to development: - [IOHK](https://iohk.io/en/about/) - [Catalyst Fund8](https://cardano.ideascale.com/c/idea/396607) @@ -89,6 +89,7 @@ CTL is being developed by MLabs. The following companies/funds have contributed - [Equine](https://www.equine.gg/) - [Liqwid Labs](https://liqwid.finance/) - [PlayerMint](https://www.playermint.com/) +- [Fourier Labs](https://fourierlabs.io/) - Ardana ## Use in production From bff8bf9c0247c32d931fc0c18ec5fab909e18e8e Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Mon, 3 Jun 2024 20:29:08 +0300 Subject: [PATCH 186/373] Update: README.md wording --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea7377c6f..a4ded1dce 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ You can find help, more information and ongoing discusion about the project here ## Funding acknowledgements -CTL is being developed by MLabs. The following companies/funds have contributed significant resources (development time or funding) to development: +CTL is being developed by MLabs. The following companies/funds have contributed significant resources (development time or funding): - [IOHK](https://iohk.io/en/about/) - [Catalyst Fund8](https://cardano.ideascale.com/c/idea/396607) From 7a6f65c6aa1f71892e702e224fdd68223ddd17cb Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 4 Jun 2024 02:19:38 +0300 Subject: [PATCH 187/373] Handle any errors and make sure no nodejs handler trigger twice --- src/Internal/Plutip/Utils.js | 36 +++++- src/Internal/Plutip/Utils.purs | 218 +++++++++++++++++++++++---------- 2 files changed, 191 insertions(+), 63 deletions(-) diff --git a/src/Internal/Plutip/Utils.js b/src/Internal/Plutip/Utils.js index 545df944a..f20ecae69 100644 --- a/src/Internal/Plutip/Utils.js +++ b/src/Internal/Plutip/Utils.js @@ -12,7 +12,41 @@ export function setLineHandler(interf) { return { signal, callback: cb }; }; } - +export function setErrorHandler(interfc) { + return callback => () => { + const signal = "error"; + const cb = err => callback(err)(); + interfc.on(signal, cb); + return { signal, callback: cb }; + }; +} +export function onExit(callback) { + const cb = exitcode => { + callback(exitcode)(); + }; + const signal = "exit"; + return () => { + process.on(signal, cb); + return { signal, callback }; + }; +} +export function onBeforeExit(callback) { + const signal = "beforeExit"; + return () => { + process.on(signal, callback); + return { signal, callback }; + }; +} +export function onUncaughtException(callback) { + const cb = error => { + callback(error)(); + }; + const signal = "uncaughtException"; + return () => { + process.on(signal, cb); + return { signal, callback }; + }; +} export function setCloseHandler(readline) { return callback => () => { const signal = "close"; diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index b6ef55ee3..5523b0ff2 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -15,12 +15,26 @@ module Ctl.Internal.Plutip.Utils , whenError , suppressAndLogErrors , tryAndLogErrors + , waitForBeforeExit , waitForClose + , waitForError + , waitForExit + , waitForUncaughtException + , waitUntil ) where import Contract.Prelude +import Control.Alt ((<|>)) import Control.Monad.Error.Class (class MonadError, catchError, throwError) +import Control.Monad.Rec.Class + ( Step(..) + , tailRecM + ) +import Control.Parallel + ( parallel + , sequential + ) import Ctl.Internal.Plutip.Spawn ( ManagedProcess(..) , OnSignalRef @@ -31,12 +45,13 @@ import Ctl.Internal.QueryM.UniqueId (uniqueId) import Data.Array as Array import Data.Map as Map import Data.Posix.Signal (Signal(..)) +import Data.Time.Duration (Milliseconds) import Effect (Effect) import Effect.Aff (try) import Effect.Aff as Aff -import Effect.Aff.AVar as AVar import Effect.Class (class MonadEffect) import Effect.Exception (Error, error, message) +import Effect.Random (randomInt) import Effect.Ref (Ref) import Effect.Ref as Ref import Node.ChildProcess as Node.ChildProcess @@ -56,9 +71,21 @@ foreign import setLineHandler foreign import setCloseHandler :: RL.Interface -> Effect Unit -> Effect OnSignalRef +foreign import setErrorHandler + :: RL.Interface -> (Error -> Effect Unit) -> Effect OnSignalRef + +foreign import onBeforeExit + :: Effect Unit -> Effect OnSignalRef + +foreign import onExit + :: (Int -> Effect Unit) -> Effect OnSignalRef + +foreign import onUncaughtException + :: (Error -> Effect Unit) -> Effect OnSignalRef + suppressAndLogErrors :: forall m. MonadEffect m => MonadError Error m => String -> m Unit -> m Unit -suppressAndLogErrors location = flip catchError $ show +suppressAndLogErrors location = flip catchError $ message >>> append ("An error occured and suppressed at " <> location <> ": ") >>> log @@ -70,33 +97,25 @@ waitForClose (ManagedProcess _ child _) = do $ flip RL.createInterface mempty $ Node.ChildProcess.stdout child Aff.makeAff \cont -> do - onCloseRef <- setCloseHandler interface $ cont $ Right unit + { cancel } <- withOneShotHandler \{ justOnce } -> + setCloseHandler interface $ justOnce $ cont $ Right unit pure $ Aff.Canceler \err -> liftEffect do - removeOnSignal onCloseRef + cancel cont $ Left $ appendErrorMessage "waitForClose has been canceled" err -simpleAffCanceler - :: forall a - . (Either Error a -> Effect Unit) - -> Effect - { canceler :: Aff.Canceler - , cancel :: Error -> Effect Unit - , isCanceled :: Effect Boolean - , ifNotCanceled :: a -> Effect Unit - } -simpleAffCanceler cont = do - { cancel, isCanceled } <- makeCanceler - let - onCancel = \err -> do +-- | Waits until processe's stdout closes. +-- Assuming this means that process is closed as well. +waitForError :: ManagedProcess -> Aff Error +waitForError (ManagedProcess _ child _) = do + interface <- liftEffect + $ flip RL.createInterface mempty + $ Node.ChildProcess.stdout child + Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> + setErrorHandler interface \err -> justOnce $ cont $ Right err + pure $ Aff.Canceler \err -> liftEffect do cancel - cont $ Left err - pure - { canceler: Aff.Canceler $ onCancel >>> liftEffect - , isCanceled - , ifNotCanceled: \a -> - isCanceled >>= flip unless (cont $ Right a) - , cancel: onCancel - } + cont $ Left $ appendErrorMessage "waitForClose has been canceled" err tryAndLogErrors :: forall a m @@ -119,14 +138,76 @@ mkDirIfNotExists dirName = do runCleanup :: Ref (Array (Aff Unit)) -> Aff Unit runCleanup cleanupRef = do - cleanups <- liftEffect $ Ref.read cleanupRef - sequence_ $ suppressAndLogErrors "runCleanup" <$> cleanups + log "Cleaning up" + cleanups <- liftEffect do + cleanups <- Ref.read cleanupRef + Ref.write [] cleanupRef + pure cleanups + if null cleanups then log "No cleanup needed" + else do + sequence_ $ suppressAndLogErrors "runCleanup" <$> cleanups + log "Cleanup finished" waitForBeforeExit :: Aff Unit waitForBeforeExit = Aff.makeAff \cont -> do - { canceler, ifNotCanceled } <- simpleAffCanceler cont - Process.onBeforeExit $ ifNotCanceled unit - pure canceler + { cancel } <- withOneShotHandler \{ justOnce } -> onBeforeExit $ justOnce do + log "ON BEFORE EXIT" + cont $ Right unit + pure $ Aff.Canceler \err -> liftEffect do + cancel + suppressAndLogErrors "waitForBeforeExit" $ cont $ Left err + +-- | Specifically for nodejs handlers: +-- Makes sure that the callback is called at most once, and unregistering it +-- on cancelation and on the first call. +withOneShotHandler + :: ({ justOnce :: Effect Unit -> Effect Unit } -> Effect OnSignalRef) + -> Effect { cancel :: Effect Unit } +withOneShotHandler with = do + removeHandler <- Ref.new mempty + isClosedRef <- Ref.new false + let + cancel = do + join $ Ref.read removeHandler + Ref.write true isClosedRef + handle <- with + { justOnce: \oneShotHandler -> do + -- otherwise it may be triggered multiple times, for unknown reason + Ref.read isClosedRef >>= flip unless do + cancel + oneShotHandler + } + Ref.write (removeOnSignal handle) removeHandler + pure { cancel } + +waitForUncaughtException :: Aff Error +waitForUncaughtException = Aff.makeAff \cont -> do + n <- randomInt 0 100 + { cancel } <- withOneShotHandler \{ justOnce } -> + onUncaughtException \err -> justOnce do + log $ "ON UNCAUGHT EXCEPTION " <> show n + cont $ Right err + pure $ Aff.Canceler \err -> liftEffect do + cancel + suppressAndLogErrors "waitForUncaughtException" $ cont $ Left err + +waitUntil :: forall a. Milliseconds -> Aff (Maybe a) -> Aff a +waitUntil checkingInterval fa = flip tailRecM unit \_ -> + fa >>= case _ of + Nothing -> do + Aff.delay checkingInterval + pure $ Loop unit + Just x -> pure $ Done x + +waitForExit :: Aff Int +waitForExit = Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> onExit \exitcode -> justOnce + do + log "ON EXIT" + cont $ Right exitcode + pure $ Aff.Canceler \err -> liftEffect do + cancel + suppressAndLogErrors "waitForExit" $ cont $ Left err newtype EventSource b = EventSource { subscribe :: @@ -165,25 +246,28 @@ onLine onLine readable = map _.eventSource <<< makeEventSource \{ handle: mainHandler } -> do interface <- RL.createInterface readable mempty + handlers <- Ref.new [] lineHandler <- setLineHandler interface \x -> do void $ suppressAndLogErrors "onLine:setLineHandler" $ mainHandler $ Right x let - cancel = do - removeOnSignal lineHandler + cancel = \err -> do + Ref.read handlers >>= traverse_ (try <<< removeOnSignal) void $ suppressAndLogErrors "onLine:cancel" $ mainHandler - $ Left - $ error "Line event source has been closed." - closeHandler <- setCloseHandler interface cancel + $ Left err + closeHandler <- setCloseHandler interface + $ cancel + $ error "Line event source has been closed." + errorHandler <- setErrorHandler interface cancel + Ref.write [ lineHandler, closeHandler, errorHandler ] handlers pure { outcome: unit , unsubscribe: do - removeOnSignal closeHandler - cancel + cancel $ error "Unsubscribed from line event." } -- | Create an event source based on another event source, but @@ -259,35 +343,45 @@ makeEventSource subscribeOnEvents filter = annotateError "make event source" do , outcome } -makeCanceler :: Effect { cancel :: Effect Unit, isCanceled :: Effect Boolean } -makeCanceler = do - isCanceledRef <- Ref.new false - let - cancel = Ref.write false isCanceledRef - isCanceled = Ref.read isCanceledRef - pure { isCanceled, cancel } - cleanupOnExit :: Ref (Array (Aff Unit)) - -> Aff - { onBeforeExit :: Aff.Fiber Unit - , onSigint :: Aff.Fiber Unit - } + -> Aff { fiber :: Aff.Fiber Unit } cleanupOnExit cleanupRef = do - triggered <- AVar.empty - onBeforeExit <- Aff.forkAff do - waitForBeforeExit - canStart <- AVar.tryPut unit triggered - when canStart do - log "Running cleanup on exit" - runCleanup cleanupRef - onSigint <- Aff.forkAff do - waitForSignal SIGINT - canStart <- AVar.tryPut unit triggered - when canStart do - log "Running cleanup on SIGINT" + log "Cleanup scheduled" + let + handle handlers = do + handler <- sequential do + ( handlers.onExit + <$> parallel waitForExit + ) + <|> + ( handlers.onUncaughtException + <$> parallel waitForUncaughtException + ) + <|> + ( handlers.onBeforeExit + <$ parallel waitForBeforeExit + ) + <|> + ( handlers.onWaitForSignal + <$ parallel (waitForSignal SIGINT) + ) + handler + cleanup triggeredBy = do + log $ "Running cleanup on " <> triggeredBy runCleanup cleanupRef - pure { onBeforeExit, onSigint } + + fiber <- Aff.forkAff $ handle + { onExit: \code -> cleanup $ "exit with " <> show code + , onUncaughtException: \err -> do + cleanup "uncaught exception" + log $ "Failing irrecoverably after the cleanup after error: " <> show + err + liftEffect $ Process.exit 7 -- Failing irrecoverably + , onBeforeExit: cleanup "before exit" + , onWaitForSignal: cleanup "SIGINT" + } + pure { fiber } addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit addCleanup = map void <<< flip From 71db862653430bf12d8c24f574e7371435bc78a6 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 4 Jun 2024 02:24:46 +0300 Subject: [PATCH 188/373] Adopt to cardano-testnet 8.1.1 --- .../data/alonzo/genesis.alonzo.spec.json | 194 ++++++++++++++++++ .../data/conway/genesis.conway.spec.json | 3 + src/Internal/Testnet/Server.purs | 176 ++++++++++------ src/Internal/Testnet/Types.purs | 1 + src/Internal/Testnet/Utils.purs | 116 ++++++++--- 5 files changed, 401 insertions(+), 89 deletions(-) create mode 100644 cardano-testnet-files/cardano-testnet/files/data/alonzo/genesis.alonzo.spec.json create mode 100644 cardano-testnet-files/cardano-testnet/files/data/conway/genesis.conway.spec.json diff --git a/cardano-testnet-files/cardano-testnet/files/data/alonzo/genesis.alonzo.spec.json b/cardano-testnet-files/cardano-testnet/files/data/alonzo/genesis.alonzo.spec.json new file mode 100644 index 000000000..cf8e5ef32 --- /dev/null +++ b/cardano-testnet-files/cardano-testnet/files/data/alonzo/genesis.alonzo.spec.json @@ -0,0 +1,194 @@ +{ + "lovelacePerUTxOWord": 34482, + "executionPrices": { + "prSteps": { + "numerator": 721, + "denominator": 10000000 + }, + "prMem": { + "numerator": 577, + "denominator": 10000 + } + }, + "maxTxExUnits": { + "exUnitsMem": 10000000, + "exUnitsSteps": 10000000000 + }, + "maxBlockExUnits": { + "exUnitsMem": 50000000, + "exUnitsSteps": 40000000000 + }, + "maxValueSize": 5000, + "collateralPercentage": 150, + "maxCollateralInputs": 3, + "costModels": { + "PlutusV1": { + "sha2_256-memory-arguments": 4, + "equalsString-cpu-arguments-constant": 1000, + "cekDelayCost-exBudgetMemory": 100, + "lessThanEqualsByteString-cpu-arguments-intercept": 103599, + "divideInteger-memory-arguments-minimum": 1, + "appendByteString-cpu-arguments-slope": 621, + "blake2b-cpu-arguments-slope": 29175, + "iData-cpu-arguments": 150000, + "encodeUtf8-cpu-arguments-slope": 1000, + "unBData-cpu-arguments": 150000, + "multiplyInteger-cpu-arguments-intercept": 61516, + "cekConstCost-exBudgetMemory": 100, + "nullList-cpu-arguments": 150000, + "equalsString-cpu-arguments-intercept": 150000, + "trace-cpu-arguments": 150000, + "mkNilData-memory-arguments": 32, + "lengthOfByteString-cpu-arguments": 150000, + "cekBuiltinCost-exBudgetCPU": 29773, + "bData-cpu-arguments": 150000, + "subtractInteger-cpu-arguments-slope": 0, + "unIData-cpu-arguments": 150000, + "consByteString-memory-arguments-intercept": 0, + "divideInteger-memory-arguments-slope": 1, + "divideInteger-cpu-arguments-model-arguments-slope": 118, + "listData-cpu-arguments": 150000, + "headList-cpu-arguments": 150000, + "chooseData-memory-arguments": 32, + "equalsInteger-cpu-arguments-intercept": 136542, + "sha3_256-cpu-arguments-slope": 82363, + "sliceByteString-cpu-arguments-slope": 5000, + "unMapData-cpu-arguments": 150000, + "lessThanInteger-cpu-arguments-intercept": 179690, + "mkCons-cpu-arguments": 150000, + "appendString-memory-arguments-intercept": 0, + "modInteger-cpu-arguments-model-arguments-slope": 118, + "ifThenElse-cpu-arguments": 1, + "mkNilPairData-cpu-arguments": 150000, + "lessThanEqualsInteger-cpu-arguments-intercept": 145276, + "addInteger-memory-arguments-slope": 1, + "chooseList-memory-arguments": 32, + "constrData-memory-arguments": 32, + "decodeUtf8-cpu-arguments-intercept": 150000, + "equalsData-memory-arguments": 1, + "subtractInteger-memory-arguments-slope": 1, + "appendByteString-memory-arguments-intercept": 0, + "lengthOfByteString-memory-arguments": 4, + "headList-memory-arguments": 32, + "listData-memory-arguments": 32, + "consByteString-cpu-arguments-intercept": 150000, + "unIData-memory-arguments": 32, + "remainderInteger-memory-arguments-minimum": 1, + "bData-memory-arguments": 32, + "lessThanByteString-cpu-arguments-slope": 248, + "encodeUtf8-memory-arguments-intercept": 0, + "cekStartupCost-exBudgetCPU": 100, + "multiplyInteger-memory-arguments-intercept": 0, + "unListData-memory-arguments": 32, + "remainderInteger-cpu-arguments-model-arguments-slope": 118, + "cekVarCost-exBudgetCPU": 29773, + "remainderInteger-memory-arguments-slope": 1, + "cekForceCost-exBudgetCPU": 29773, + "sha2_256-cpu-arguments-slope": 29175, + "equalsInteger-memory-arguments": 1, + "indexByteString-memory-arguments": 1, + "addInteger-memory-arguments-intercept": 1, + "chooseUnit-cpu-arguments": 150000, + "sndPair-cpu-arguments": 150000, + "cekLamCost-exBudgetCPU": 29773, + "fstPair-cpu-arguments": 150000, + "quotientInteger-memory-arguments-minimum": 1, + "decodeUtf8-cpu-arguments-slope": 1000, + "lessThanInteger-memory-arguments": 1, + "lessThanEqualsInteger-cpu-arguments-slope": 1366, + "fstPair-memory-arguments": 32, + "modInteger-memory-arguments-intercept": 0, + "unConstrData-cpu-arguments": 150000, + "lessThanEqualsInteger-memory-arguments": 1, + "chooseUnit-memory-arguments": 32, + "sndPair-memory-arguments": 32, + "addInteger-cpu-arguments-intercept": 197209, + "decodeUtf8-memory-arguments-slope": 8, + "equalsData-cpu-arguments-intercept": 150000, + "mapData-cpu-arguments": 150000, + "mkPairData-cpu-arguments": 150000, + "quotientInteger-cpu-arguments-constant": 148000, + "consByteString-memory-arguments-slope": 1, + "cekVarCost-exBudgetMemory": 100, + "indexByteString-cpu-arguments": 150000, + "unListData-cpu-arguments": 150000, + "equalsInteger-cpu-arguments-slope": 1326, + "cekStartupCost-exBudgetMemory": 100, + "subtractInteger-cpu-arguments-intercept": 197209, + "divideInteger-cpu-arguments-model-arguments-intercept": 425507, + "divideInteger-memory-arguments-intercept": 0, + "cekForceCost-exBudgetMemory": 100, + "blake2b-cpu-arguments-intercept": 2477736, + "remainderInteger-cpu-arguments-constant": 148000, + "tailList-cpu-arguments": 150000, + "encodeUtf8-cpu-arguments-intercept": 150000, + "equalsString-cpu-arguments-slope": 1000, + "lessThanByteString-memory-arguments": 1, + "multiplyInteger-cpu-arguments-slope": 11218, + "appendByteString-cpu-arguments-intercept": 396231, + "lessThanEqualsByteString-cpu-arguments-slope": 248, + "modInteger-memory-arguments-slope": 1, + "addInteger-cpu-arguments-slope": 0, + "equalsData-cpu-arguments-slope": 10000, + "decodeUtf8-memory-arguments-intercept": 0, + "chooseList-cpu-arguments": 150000, + "constrData-cpu-arguments": 150000, + "equalsByteString-memory-arguments": 1, + "cekApplyCost-exBudgetCPU": 29773, + "quotientInteger-memory-arguments-slope": 1, + "verifySignature-cpu-arguments-intercept": 3345831, + "unMapData-memory-arguments": 32, + "mkCons-memory-arguments": 32, + "sliceByteString-memory-arguments-slope": 1, + "sha3_256-memory-arguments": 4, + "ifThenElse-memory-arguments": 1, + "mkNilPairData-memory-arguments": 32, + "equalsByteString-cpu-arguments-slope": 247, + "appendString-cpu-arguments-intercept": 150000, + "quotientInteger-cpu-arguments-model-arguments-slope": 118, + "cekApplyCost-exBudgetMemory": 100, + "equalsString-memory-arguments": 1, + "multiplyInteger-memory-arguments-slope": 1, + "cekBuiltinCost-exBudgetMemory": 100, + "remainderInteger-memory-arguments-intercept": 0, + "sha2_256-cpu-arguments-intercept": 2477736, + "remainderInteger-cpu-arguments-model-arguments-intercept": 425507, + "lessThanEqualsByteString-memory-arguments": 1, + "tailList-memory-arguments": 32, + "mkNilData-cpu-arguments": 150000, + "chooseData-cpu-arguments": 150000, + "unBData-memory-arguments": 32, + "blake2b-memory-arguments": 4, + "iData-memory-arguments": 32, + "nullList-memory-arguments": 32, + "cekDelayCost-exBudgetCPU": 29773, + "subtractInteger-memory-arguments-intercept": 1, + "lessThanByteString-cpu-arguments-intercept": 103599, + "consByteString-cpu-arguments-slope": 1000, + "appendByteString-memory-arguments-slope": 1, + "trace-memory-arguments": 32, + "divideInteger-cpu-arguments-constant": 148000, + "cekConstCost-exBudgetCPU": 29773, + "encodeUtf8-memory-arguments-slope": 8, + "quotientInteger-cpu-arguments-model-arguments-intercept": 425507, + "mapData-memory-arguments": 32, + "appendString-cpu-arguments-slope": 1000, + "modInteger-cpu-arguments-constant": 148000, + "verifySignature-cpu-arguments-slope": 1, + "unConstrData-memory-arguments": 32, + "quotientInteger-memory-arguments-intercept": 0, + "equalsByteString-cpu-arguments-constant": 150000, + "sliceByteString-memory-arguments-intercept": 0, + "mkPairData-memory-arguments": 32, + "equalsByteString-cpu-arguments-intercept": 112536, + "appendString-memory-arguments-slope": 1, + "lessThanInteger-cpu-arguments-slope": 497, + "modInteger-cpu-arguments-model-arguments-intercept": 425507, + "modInteger-memory-arguments-minimum": 1, + "sha3_256-cpu-arguments-intercept": 0, + "verifySignature-memory-arguments": 1, + "cekLamCost-exBudgetMemory": 100, + "sliceByteString-cpu-arguments-intercept": 150000 + } + } +} \ No newline at end of file diff --git a/cardano-testnet-files/cardano-testnet/files/data/conway/genesis.conway.spec.json b/cardano-testnet-files/cardano-testnet/files/data/conway/genesis.conway.spec.json new file mode 100644 index 000000000..4525ef4a5 --- /dev/null +++ b/cardano-testnet-files/cardano-testnet/files/data/conway/genesis.conway.spec.json @@ -0,0 +1,3 @@ +{ + "genDelegs": {} +} diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 3532e6d3e..f38072f4f 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -14,16 +14,13 @@ module Ctl.Internal.Testnet.Server import Contract.Prelude import Contract.Test.Mote (TestPlanM) +import Control.Alt ((<|>)) import Control.Apply (applySecond) -import Control.Monad.Error.Class - ( throwError - ) +import Control.Monad.Error.Class (liftMaybe, throwError, try) import Control.Monad.Rec.Class (Step(..), tailRecM) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Server - ( startKupo - , startOgmios - ) +import Ctl.Internal.Plutip.Server ( + startKupo, startOgmios) import Ctl.Internal.Plutip.Spawn ( ManagedProcess(..) , _rmdirSync @@ -37,10 +34,10 @@ import Ctl.Internal.Plutip.Types , StopClusterResponse ) import Ctl.Internal.Plutip.Utils - ( EventSource(..) + ( EventSource , addCleanup , annotateError - , narrowEventSource + , mkDirIfNotExists , onLine , runCleanup , scheduleCleanup @@ -48,7 +45,9 @@ import Ctl.Internal.Plutip.Utils , tmpdir , tryAndLogErrors , waitForClose + , waitForError , waitForEvent + , waitUntil ) import Ctl.Internal.Test.ContractTest ( ContractTest @@ -65,24 +64,26 @@ import Ctl.Internal.Testnet.Types as Testnet.Types import Ctl.Internal.Testnet.Utils ( findNodeDirs , findTestnetPaths - , onTestnetEvent + , findTestnetWorkir + , getRuntime , readNodes - , tellsIt'sLocation - , waitFor ) import Ctl.Internal.Wallet.Key (PrivatePaymentKey) import Data.Array as Array import Data.Maybe (Maybe(Nothing, Just)) +import Data.Time.Duration (Milliseconds(..)) import Data.Tuple.Nested (type (/\)) import Effect.Aff (Aff) import Effect.Aff as Aff import Effect.Exception (Error, error) import Effect.Exception.Unsafe (unsafeThrow) +import Effect.Random (randomInt) import Effect.Ref (Ref) +import Foreign.Object as Object import Node.ChildProcess (defaultSpawnOptions) import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(UTF8)) -import Node.FS.Sync (appendTextFile) +import Node.FS.Sync as Node.FS import Node.Path (FilePath) import Node.Process as Node.Process @@ -149,16 +150,24 @@ startTestnetCluster startupParams cleanupRef cfg = do } <- annotateError "Could not start cardano-testnet" $ startCardanoTestnet startupParams cleanupRef - testnetEvents <- liftEffect $ onTestnetEvent channels.stdout + -- testnetEvents <- liftEffect $ onTestnetEvent channels.stdout -- it will crash right here uncatchable if testnet process will die log "Waiting for Ready state" - waitFor testnetEvents case _ of - Testnet.Types.Ready -> Just unit - _ -> Nothing - log "Testnet is ready" + -- waitFor testnetEvents case _ of + -- Testnet.Types.Ready -> Just unit + -- _ -> Nothing + + { runtime, paths } <- waitUntil (Milliseconds 4000.0) + $ map hush + $ tryAndLogErrors "Waiting for ready state" + $ liftEffect do + + paths <- liftEither =<< findTestnetPaths { workdir: workdirAbsolute } + runtime <- getRuntime paths + pure { runtime, paths } - paths <- liftEither - =<< liftEffect (findTestnetPaths { workdir: workdirAbsolute }) + log "Testnet is ready" + Aff.delay $ Milliseconds 2000.0 ogmios <- annotateError "Could not start ogmios" $ startOgmios' { paths, workdir: workdirAbsolute } @@ -189,10 +198,11 @@ startTestnetCluster startupParams cleanupRef cfg = do _ <- redirectChannels kupoChannels { stderrTo: - { log: workdir <> "kupo.stderr.log" + { log: Just $ workdir <> "kupo.stderr.log" , console: Just "[kupo][error]: " } - , stdoutTo: { log: workdir <> "kupo.stdout.log", console: Nothing } + , stdoutTo: + { log: Just $ workdir <> "kupo.stdout.log", console: Nothing } } pure { process: kupo, workdir: kupoWorkdir, channels: kupoChannels } @@ -210,10 +220,11 @@ startTestnetCluster startupParams cleanupRef cfg = do _ <- redirectChannels ogmiosChannels { stderrTo: - { log: workdir <> "ogmios.stderr.log" + { log: Just $ workdir <> "ogmios.stderr.log" , console: Just "[ogmios][error]: " } - , stdoutTo: { log: workdir <> "ogmios.stdout.log", console: Nothing } + , stdoutTo: + { log: Just $ workdir <> "ogmios.stdout.log", console: Nothing } } pure { process: ogmios, channels: ogmiosChannels } @@ -239,15 +250,28 @@ runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = -- | Runs cardano-testnet executable with provided params. spawnCardanoTestnet - :: CardanoTestnetStartupParams + :: { cwd :: FilePath } + -> CardanoTestnetStartupParams -> Aff ManagedProcess -spawnCardanoTestnet params = do +spawnCardanoTestnet { cwd } params = do + env <- liftEffect Node.Process.getEnv + initCwd <- liftMaybe (error "Couldn't find INIT_CWD env variable") + $ Object.lookup "INIT_CWD" env + let + env' = Object.fromFoldable + [ "TMPDIR" /\ cwd + , "CARDANO_NODE_SRC" /\ (initCwd <> "cardano-testnet-files") + ] + opts = defaultSpawnOptions + { cwd = Just cwd, env = Just $ Object.union env' env } + -- log $ show env spawn "cardano-testnet" options - defaultSpawnOptions + opts Nothing where + flag :: String -> String flag name = "--" <> name @@ -282,32 +306,62 @@ startCardanoTestnet , workdirAbsolute :: FilePath , nodes :: Array { | Node () } } -startCardanoTestnet params cleanupRef = do - - tmp <- liftEffect tmpdir - - testnet <- spawnCardanoTestnet params +startCardanoTestnet params cleanupRef = annotateError "startCardanoTestnet" do + + testDir <- liftEffect do + tmp <- tmpdir + log $ show { tmp } + testId <- randomInt 0 999 + let dir = tmp <> "testnet-" <> show testId + mkDirIfNotExists dir + log $ show { dir } + pure dir + + let + tmpLogDir = testDir <> "logs" + tmpStdoutLogs = tmpLogDir <> "cardano-testnet.stdout.tmp.log" + tmpStderrLogs = tmpLogDir <> "cardano-testnet.stderr.tmp.log" + cleanupTmpLogs = do + void $ try $ Node.FS.rm tmpStdoutLogs + void $ try $ Node.FS.rm tmpStderrLogs + + testnet <- spawnCardanoTestnet { cwd: testDir } params channels <- liftEffect $ getChannels testnet - _ <- Aff.forkAff do - waitForClose testnet + -- Additional logging channels + _ <- Aff.forkAff $ annotateError "startCardanoTestnet:waitForFail" do + let + waitError = Just <$> waitForError testnet + waitClose = Nothing <$ waitForClose testnet + cause <- waitError <|> waitClose runCleanup cleanupRef - throwError $ error "cardano-testnet process has exited" - - workdirAbsolute <- do - events@(EventSource { cancel }) <- liftEffect - $ narrowEventSource - (tellsIt'sLocation { tmpdir: tmp }) - channels.stdout - workdir <- waitForEvent events - log $ "Found workdir: " <> workdir - liftEffect $ cancel $ error "Not needed anymore" - pure $ tmp <> workdir + throwError $ fromMaybe (error "cardano-testnet process has exited") cause + + liftEffect $ mkDirIfNotExists tmpLogDir + tempOutput <- redirectChannels + { stderr: channels.stderr, stdout: channels.stdout } + { stdoutTo: { log: Just tmpStdoutLogs, console: Just "[node][stdout]" } + , stderrTo: { log: Just tmpStderrLogs, console: Just "[node][stderr]" } + } + log "Redirected logs" + + -- -- It may not create an own directory until show any signs of life + -- _ <- waitForEvent channels.stdout + + -- forward node's stdout + workdirAbsolute <- waitUntil (Milliseconds 1000.0) do + liftEffect $ findTestnetWorkir { tmpdir: testDir, dirIdx: 0 } + Aff.killFiber (error "Temp output is not needed anymore") tempOutput -- cardano-testnet doesn't kill cardano-nodes it spawns, so we do it ourselves - nodes <- liftEffect do - nodeDirs <- findNodeDirs { workdir: workdirAbsolute } - readNodes { testnetDirectory: workdirAbsolute, nodeDirs } + + nodes <- waitUntil (Milliseconds 3000.0) + $ liftEffect + $ map hush + $ tryAndLogErrors "waiting until nodes are there" do + + nodeDirs <- findNodeDirs { workdir: workdirAbsolute } + readNodes { testnetDirectory: workdirAbsolute, nodeDirs } for_ nodes \{ port } -> do liftEffect @@ -326,21 +380,21 @@ startCardanoTestnet params cleanupRef = do $ addCleanup cleanupRef $ liftEffect do log "Cleaning up workidr" + cleanupTmpLogs _rmdirSync workdirAbsolute - -- forward node's stdout _ <- redirectChannels { stderr: channels.stderr, stdout: channels.stdout } { stdoutTo: - { log: workdirAbsolute <> "cardano-testnet.stdout.log" - , console: Just "[cardano-testnet][info]" + { log: Just $ workdirAbsolute <> "cardano-testnet.stdout.log" + , console: Nothing } , stderrTo: - { log: workdirAbsolute <> "cardano-testnet.stderr.log" - , console: Just "[cardano-testnet][error]" + { log: Just $ workdirAbsolute <> "cardano-testnet.stderr.log" + , console: Nothing } } - + log "startCardanoTestnet:done" pure { testnet, workdirAbsolute, channels, nodes } getChannels @@ -360,15 +414,15 @@ redirectChannels :: { stderr :: EventSource String , stdout :: EventSource String } - -> { stderrTo :: { log :: FilePath, console :: Maybe String } - , stdoutTo :: { log :: FilePath, console :: Maybe String } + -> { stderrTo :: { log :: Maybe FilePath, console :: Maybe String } + , stdoutTo :: { log :: Maybe FilePath, console :: Maybe String } } -> Aff (Aff.Fiber (Either Error Unit)) redirectChannels { stderr, stdout } { stderrTo, stdoutTo } = do handleStderr <- redirectLogging stderr - { storeLogs: Just - { logFile: stderrTo.log + { storeLogs: stderrTo.log <#> + { logFile: _ , toString: identity } , handleLine: case stderrTo.console of @@ -377,8 +431,8 @@ redirectChannels { stderr, stdout } { stderrTo, stdoutTo } = do } handleStdout <- redirectLogging stdout - { storeLogs: Just - { logFile: stdoutTo.log + { storeLogs: stdoutTo.log <#> + { logFile: _ , toString: identity } , handleLine: case stdoutTo.console of @@ -405,5 +459,5 @@ redirectLogging events { handleLine, storeLogs } = do handleLine line for storeLogs \{ logFile, toString } -> - appendTextFile UTF8 logFile $ toString line <> "\n" + Node.FS.appendTextFile UTF8 logFile $ toString line <> "\n" pure $ Loop unit diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index ab083aec1..79d9fddbd 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -115,6 +115,7 @@ type Node r = type NodeLocation r = ( idx :: Int + , name :: String , workdir :: FilePath | r ) diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index 8025ff1a1..979a01b11 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -1,7 +1,19 @@ -module Ctl.Internal.Testnet.Utils where +module Ctl.Internal.Testnet.Utils + ( findNodeDirs + , findTestnetPaths + , findTestnetWorkir + , getNodePort + , getRuntime + , is811TestnetDirectoryName + , onTestnetEvent + , parseEvent + , readNodes + , waitFor + ) where import Contract.Prelude +import Control.Alt ((<|>)) import Control.Monad.Error.Class ( liftMaybe , throwError @@ -24,33 +36,31 @@ import Ctl.Internal.Testnet.Types ) import Data.Array as Array import Data.Int as Int -import Data.String (Pattern(..), contains) +import Data.String (Pattern(..)) import Data.String as String import Data.UInt (UInt) import Data.UInt as UInt -import Effect.Exception (Error, error, throw) +import Effect.Exception (Error, error) import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync as Node.FS import Node.Path (FilePath) -parseTestnetDirectory :: { tmpdir :: FilePath } -> String -> Maybe FilePath -parseTestnetDirectory { tmpdir } = - map (String.takeWhile $ not <<< isFolderSeparator) - <<< String.stripPrefix (Pattern $ tmpdir <> "/") - <<< String.dropWhile (not <<< isFolderSeparator) - where - isFolderSeparator = eq $ String.codePointFromChar '/' +-- | For cardano-node 8.1.1 +is811TestnetDirectoryName :: Int -> FilePath -> Boolean +is811TestnetDirectoryName n = + isJust <<< String.stripPrefix (Pattern $ "testnet-" <> show n <> "-test-") -tellsIt'sLocation :: { tmpdir :: FilePath } -> String -> Maybe FilePath -tellsIt'sLocation tmpdir src - | contains (Pattern "stake-pools.json") src - , contains (Pattern " ━━━━ File:") src = - parseTestnetDirectory tmpdir src - | otherwise = Nothing +findTestnetWorkir + :: { tmpdir :: FilePath, dirIdx :: Int } -> Effect (Maybe FilePath) +findTestnetWorkir { tmpdir, dirIdx } = + map (tmpdir <> _) + <<< Array.find (is811TestnetDirectoryName dirIdx) + <$> Node.FS.readdir tmpdir parseEvent :: String -> Maybe Event parseEvent = case _ of - " forAll109 =" -> Just Ready + -- we can't know this way when 8.1.1 cardano-testnet is ready + -- " forAll709 =" -> Just Ready -- forAll109 for 8.3.2 "Usage: cardano-testnet cardano [--num-pool-nodes COUNT]" -> Just $ StartupFailed SpawnFailed "Failed to start testnet." -> @@ -69,6 +79,48 @@ waitFor source f = flip tailRecM unit \_ -> do onTestnetEvent :: EventSource String -> Effect (EventSource Event) onTestnetEvent = narrowEventSource parseEvent +-- type GenesisKeyFile = Int /\ FilePath + +-- parseGenesisKeyFileName +-- :: FilePath +-- -> Maybe +-- (Either { vkey :: GenesisKeyFile } { skey :: GenesisKeyFile }) +-- parseGenesisKeyFileName filename = do +-- idWithExt <- String.stripPrefix (Pattern "genesis") filename +-- let +-- vkey = do +-- idx <- parseIdx ".vkey" idWithExt +-- pure { vkey: idx /\ filename } +-- skey = do +-- idx <- parseIdx ".skey" idWithExt +-- pure { skey: idx /\ filename } +-- choose vkey skey +-- where +-- parseIdx ext = +-- Int.fromString <=< String.stripSuffix (Pattern ext) + +-- readGenesisKeyPaths +-- :: { workdir :: FilePath } +-- -> Effect (Map.Map Int { skey :: FilePath, vkey :: FilePath }) +-- readGenesisKeyPaths { workdir } = do +-- keyfiles <- Node.FS.readdir $ workdir <> "genesis-keys" +-- genesis <- liftMaybe (error $ "Can't parse genesis-keys filenames") +-- $ traverse parseGenesisKeyFileName keyfiles +-- let +-- empty :: forall k v. Ord k => Map.Map k v +-- empty = Map.fromFoldable [] +-- vkeys /\ skeys = fold $ genesis <#> +-- either +-- (\{ vkey: elem } -> Map.fromFoldable [ elem ] /\ empty) +-- (\{ skey: elem } -> empty /\ Map.fromFoldable [ elem ]) +-- keys = Map.intersectionWith { vkey: _, skey: _ } vkeys skeys +-- toFullPath filename = workdir <> "genesis-keys" <> filename + +-- pure $ keys <#> \{ skey, vkey } -> +-- { skey: toFullPath skey +-- , vkey: toFullPath vkey +-- } + getRuntime :: TestnetPaths -> Effect (Record (TestnetRuntime ())) getRuntime paths = do nodes <- readNodes paths @@ -83,16 +135,17 @@ readNodes } -> Effect (Array { | Node () }) readNodes { nodeDirs, testnetDirectory } = do - for nodeDirs \{ idx, workdir } -> do + for nodeDirs \{ idx, workdir, name } -> do let - socketPath = testnetDirectory <> "socket" <> "node-spo" <> show idx + socketPath = testnetDirectory <> "socket" <> name exists <- Node.FS.exists socketPath unless exists - $ throw + $ throwError + $ error $ "Couldn't find node socket at " <> socketPath port <- getNodePort { nodeDir: workdir } - pure { idx, socket: socketPath, port, workdir } + pure { idx, socket: socketPath, port, workdir, name } getNodePort :: { nodeDir :: FilePath } -> Effect UInt getNodePort { nodeDir } = @@ -105,17 +158,22 @@ findNodeDirs { workdir } = ado subdirs <- Node.FS.readdir workdir in flip Array.mapMaybe subdirs \dirname -> ado - idx <- Int.fromString - =<< String.stripPrefix (Pattern "node-spo") dirname - in { idx, workdir: workdir <> dirname } + idx <- Int.fromString =<< node881 dirname + in { idx, workdir: workdir <> dirname, name: dirname } + where + node881 x = + String.stripPrefix (Pattern "node-bft") x + <|> String.stripPrefix (Pattern "node-pool") x + node832 = String.stripPrefix (Pattern "node-spo") findTestnetPaths :: { workdir :: FilePath } -> Effect (Either Error TestnetPaths) findTestnetPaths { workdir } = runExceptT do - nodeDirs <- lift $ findNodeDirs { workdir } let nodeConfigPath = workdir <> "configuration.yaml" - nodeSocketPath = workdir <> "socket/node-spo1" + firstNode811 = "socket/node-pool1" + firstNode832 = "socket/node-spo1" + nodeSocketPath = workdir <> firstNode811 workdirExists <- lift $ Node.FS.exists workdir configPathExists <- lift $ Node.FS.exists nodeConfigPath socketPathExists <- lift $ Node.FS.exists nodeSocketPath @@ -126,8 +184,10 @@ findTestnetPaths { workdir } = runExceptT do throwError $ error $ "'configuration.yaml' not found in cardano-testnet working directory." unless socketPathExists do - throwError $ error $ - "'socket/node-spo1' not found in cardano-testnet working directory." + throwError $ error + $ firstNode811 + <> " not found in cardano-testnet working directory." + nodeDirs <- lift $ findNodeDirs { workdir } pure { testnetDirectory: workdir , nodeConfigPath From 06e600e766de84fcd872679028c0500890b51ff8 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 4 Jun 2024 02:25:58 +0300 Subject: [PATCH 189/373] Add necessary cardano-node execs in the dev env --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 8d23e5fdf..fc12c7649 100644 --- a/flake.nix +++ b/flake.nix @@ -192,6 +192,8 @@ nodePackages.prettier blockfrost-backend-ryo cardano-node.packages.${system}.cardano-testnet + cardano-node.packages.${system}.cardano-cli + cardano-node.packages.${system}.cardano-node ]; }; }; From 7b0b18643e4be8fff1c7c09d4b77651139d12222 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 4 Jun 2024 02:26:14 +0300 Subject: [PATCH 190/373] Format code --- src/Internal/Testnet/Server.purs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index f38072f4f..6849c5409 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -19,8 +19,10 @@ import Control.Apply (applySecond) import Control.Monad.Error.Class (liftMaybe, throwError, try) import Control.Monad.Rec.Class (Step(..), tailRecM) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Server ( - startKupo, startOgmios) +import Ctl.Internal.Plutip.Server + ( startKupo + , startOgmios + ) import Ctl.Internal.Plutip.Spawn ( ManagedProcess(..) , _rmdirSync @@ -271,7 +273,6 @@ spawnCardanoTestnet { cwd } params = do opts Nothing where - flag :: String -> String flag name = "--" <> name From d12563b33cb92973a3d5d921fd7d6ada5962c693 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 4 Jun 2024 02:27:49 +0300 Subject: [PATCH 191/373] Tests debug WIP [to revert] --- test/Plutip.purs | 210 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 163 insertions(+), 47 deletions(-) diff --git a/test/Plutip.purs b/test/Plutip.purs index 2a582b224..2ca6b98db 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -4,37 +4,89 @@ module Test.Ctl.Plutip import Prelude -import Contract.Test.Plutip - ( PlutipConfig - , noWallet - , runPlutipTestPlan - , testPlutipContracts +import Contract.Config as Config +import Contract.Monad (Contract, launchAff_, withContractEnv) +import Contract.Monad as Contract +import Contract.Prelude + ( Either(..) + , Maybe(..) + , for + , isJust + , length + , liftAff + , liftEffect + , log ) +import Contract.ProtocolParameters (getProtocolParameters) +import Contract.Staking (getPoolIds) +import Contract.Test.Plutip (PlutipConfig, defaultPlutipConfig, noWallet) import Contract.Test.Utils (exitCode, interruptOnSignal) -import Ctl.Internal.Contract.Monad (wrapQueryM) -import Ctl.Internal.Plutip.Server - ( checkPlutipServer - , startPlutipCluster - , startPlutipServer - , stopChildProcessWithPort - , stopPlutipCluster +import Contract.TextEnvelope + ( TextEnvelope(..) + , TextEnvelopeType(..) + , decodeTextEnvelope + ) +import Contract.Wallet + ( getWalletBalance + , mkKeyWalletFromPrivateKeys + , withKeyWallet ) +import Contract.Wallet.KeyFile + ( mkKeyWalletFromFiles + , privatePaymentKeyFromTextEnvelope + ) +import Control.Monad.Error.Class (liftMaybe, throwError, try) +import Ctl.Internal.Contract.Monad (wrapQueryM) +import Ctl.Internal.Helpers ((<>)) +import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), stop) import Ctl.Internal.Plutip.Types (StopClusterResponse(StopClusterSuccess)) +import Ctl.Internal.Plutip.Utils + ( cleanupOnExit + , tmpdir + , waitForBeforeExit + , waitForExit + , waitForUncaughtException + ) +import Ctl.Internal.Testnet.Contract as Testnet.Contract +import Ctl.Internal.Testnet.Server + ( checkTestnet + , runTestnetTestPlan + , startTestnet + , stopTestnet + , testTestnetContracts + ) +import Ctl.Internal.Testnet.Server as Testnet +import Ctl.Internal.Testnet.Types (Event(..), LoggingFormat(..)) +import Ctl.Internal.Testnet.Types as Testnet.Types +import Ctl.Internal.Testnet.Utils (findTestnetPaths, onTestnetEvent, waitFor) +import Ctl.Internal.Wallet.KeyFile (privateStakeKeyFromTextEnvelope) import Data.Maybe (Maybe(Just)) -import Data.Posix.Signal (Signal(SIGINT)) +import Data.Posix.Signal (Signal(..)) import Effect (Effect) import Effect.Aff ( Aff , Milliseconds(Milliseconds) , bracket , cancelWith + , delay , effectCanceler + , forkAff + , killFiber , launchAff ) +import Effect.Aff as Aff +import Effect.Exception (error, throw) +import Effect.Ref as Ref import Mote (group, test) import Mote.Monad (mapTest) import Mote.TestPlanM (TestPlanM) import Mote.TestPlanM as Utils +import Node.ChildProcess (kill) +import Node.ChildProcess as Node.ChildProcess +import Node.Encoding (Encoding(..)) +import Node.FS.Aff (readTextFile, writeTextFile) +import Node.Path (FilePath) +import Node.Process as Process import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract @@ -50,44 +102,108 @@ import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface import Test.Spec.Assertions (shouldSatisfy) import Test.Spec.Runner (defaultConfig) +readGenesisPkey :: FilePath -> Aff Config.PrivatePaymentKey +readGenesisPkey path = do + TextEnvelope envelope <- + liftMaybe (error "Cannot decode genesis pkey envelope") + <<< decodeTextEnvelope + =<< readTextFile UTF8 path + let + envelope' = TextEnvelope + (envelope { type_ = PaymentSigningKeyShelleyed25519 }) + liftMaybe (error "Cannot decode genesis pkey from decoded envelope") + $ privatePaymentKeyFromTextEnvelope envelope' + +readGenesisStakingPkey :: FilePath -> Aff Config.PrivateStakeKey +readGenesisStakingPkey path = do + TextEnvelope envelope <- + liftMaybe (error "Cannot decode genesis pkey envelope") + <<< decodeTextEnvelope + =<< readTextFile UTF8 path + let + envelope' = TextEnvelope + (envelope { type_ = StakeSigningKeyShelleyed25519 }) + liftMaybe (error "Cannot decode genesis pkey from decoded envelope") + $ privateStakeKeyFromTextEnvelope envelope' + -- Run with `npm run plutip-test` main :: Effect Unit -main = interruptOnSignal SIGINT =<< launchAff do - flip cancelWith (effectCanceler (exitCode 1)) do - Utils.interpretWithConfig - defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } - $ group "Plutip" do - testPlutipContracts config Mnemonics.suite - group "ExUnits - normal limits" do - testPlutipContracts config $ ExUnits.mkFailingSuite 3000 - testPlutipContracts config $ ExUnits.mkSuite 2550 - group "ExUnits - relaxed limits" do - testPlutipContracts configWithMaxExUnits $ ExUnits.mkSuite 3000 - testPlutipContracts config Assert.suite - Logging.suite - testStartPlutipCluster - testPlutipContracts config $ do - flip mapTest QueryM.AffInterface.suite - (noWallet <<< wrapQueryM) - ChangeGeneration.suite - Contract.suite - UtxoDistribution.suite - testPlutipContracts config OgmiosMempool.suite - runPlutipTestPlan config SameWallets.suite - ClusterParameters.runTest +main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do + + -- cleanupRef <- liftEffect $ Ref.new [] + -- _ <- cleanupOnExit cleanupRef + -- { paths, testnet: { process } } <- + -- Testnet.startTestnetCluster + -- Testnet.defaultStartupParams + -- cleanupRef + -- { kupoConfig: defaultPlutipConfig.kupoConfig + -- , ogmiosConfig: defaultPlutipConfig.ogmiosConfig + -- } + -- genesisPaths <- liftEffect + -- $ readGenesisKeyPaths {workdir: paths.testnetDirectory} + -- for genesisPaths $ readGenesisPkey <<< _.skey + -- log $ show $ "Parsed genesis keys: " <> show (isJust key) + -- + -- _ <- Testnet.Contract.runContract defaultPlutipConfig do + -- key <- + -- liftAff $ readGenesisPkey $ genesis1Path paths.testnetDirectory + -- let spo2 = mkKeyWalletFromPrivateKeys key Nothing + + _ <- Testnet.Contract.withContractEnv defaultPlutipConfig \cluster env -> + Contract.runContractInEnv env do + let + Testnet.MkStartedTestnetCluster { paths } = cluster + addressesDir = paths.testnetDirectory <> "addresses" + + wallet <- liftAff $ mkKeyWalletFromFiles + (addressesDir <> "pool-owner1.skey") + (Just $ addressesDir <> "pool-owner1-stake.skey") + _ <- withKeyWallet wallet do + log <<< append "Balance: " <<< show =<< getWalletBalance + + log <<< show =<< getProtocolParameters + log <<< show =<< getPoolIds + + -- startupFailureWaiting <- onStartupFailure source + -- (show >>> append "Failed to startup testnet: " >>> error >>> throwError) + + log <<< append "Tmp dir is: " =<< liftEffect tmpdir + +-- flip cancelWith (effectCanceler (exitCode 1)) do +-- Utils.interpretWithConfig +-- defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } +-- $ group "Plutip" do +-- testTestnetContracts config Mnemonics.suite +-- group "ExUnits - normal limits" do +-- testTestnetContracts config $ ExUnits.mkFailingSuite 3000 +-- testTestnetContracts config $ ExUnits.mkSuite 2550 +-- group "ExUnits - relaxed limits" do +-- testTestnetContracts configWithMaxExUnits $ ExUnits.mkSuite 3000 +-- testTestnetContracts config Assert.suite +-- Logging.suite +-- testStartTestnet +-- testTestnetContracts config $ do +-- flip mapTest QueryM.AffInterface.suite +-- (noWallet <<< wrapQueryM) +-- ChangeGeneration.suite +-- Contract.suite +-- UtxoDistribution.suite +-- testTestnetContracts config OgmiosMempool.suite +-- runTestnetTestPlan config SameWallets.suite +-- ClusterParameters.runTest configWithMaxExUnits :: PlutipConfig configWithMaxExUnits = config { clusterConfig = config.clusterConfig { raiseExUnitsToMax = true } } -testStartPlutipCluster :: TestPlanM (Aff Unit) Unit -testStartPlutipCluster = group "Server" do - test "startPlutipCluster / stopPlutipCluster" do - bracket (startPlutipServer config) - (stopChildProcessWithPort config.port) $ const do - checkPlutipServer config - _startRes <- startPlutipCluster config [ [] ] - stopRes <- stopPlutipCluster config - stopRes `shouldSatisfy` case _ of - StopClusterSuccess -> true - _ -> false +-- testStartTestnet:: TestPlanM (Aff Unit) Unit +-- testStartTestnet = group "Server" do +-- test "startTestnet / stopTestnet" do +-- -- bracket (startTestnet config) +-- -- (stopChildProcessWithPort config.port) $ const do +-- checkTestnet config +-- _startRes <- startTestnet config [ [] ] +-- stopRes <- stopTestnet config +-- stopRes `shouldSatisfy` case _ of +-- StopClusterSuccess -> true +-- _ -> false From 84f6709ffd5511a261551707d1cb99dd7b35a833 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 4 Jun 2024 02:34:43 +0300 Subject: [PATCH 192/373] Use TestnetId in ContractEnv --- src/Internal/Testnet/Contract.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 19101c730..f120085d8 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -43,4 +43,4 @@ withContractEnv cfg cont = do _ <- cleanupOnExit cleanupRef cluster <- startTestnetCluster defaultStartupParams cleanupRef cfg { env, printLogs } <- makeClusterContractEnv cleanupRef cfg - whenError printLogs $ cont cluster env \ No newline at end of file + whenError printLogs $ cont cluster $ env { networkId = TestnetId } \ No newline at end of file From 30fa2bce7501bb2ddd2b099c03863033ef6f68eb Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 4 Jun 2024 02:39:21 +0300 Subject: [PATCH 193/373] Add forgotten import --- src/Internal/Testnet/Contract.purs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index f120085d8..7b4924500 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -6,6 +6,7 @@ import Contract.Monad ( Contract , ContractEnv ) +import Cardano.Types (NetworkId(TestnetId)) import Contract.Monad as Contract import Ctl.Internal.Plutip.Server ( makeClusterContractEnv From c3858f2b2576855e4f1a46d83ea16c9ae384ab48 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 4 Jun 2024 02:39:59 +0300 Subject: [PATCH 194/373] Pass env manually instead of using local .envrc --- src/Internal/Testnet/Server.purs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 6849c5409..777eab9b1 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -261,8 +261,13 @@ spawnCardanoTestnet { cwd } params = do $ Object.lookup "INIT_CWD" env let env' = Object.fromFoldable - [ "TMPDIR" /\ cwd + [ "TMPDIR" /\ cwd -- only for 8.1.1; 8.7.2 puts it's testnet directory into cwd instead , "CARDANO_NODE_SRC" /\ (initCwd <> "cardano-testnet-files") + , "CARDANO_CLI" /\ "cardano-cli" + , "CREATE_SCRIPT_CONTEXT" /\ "create-script-context" + , "CARDANO_NODE" /\ "cardano-node" + , "CARDANO_SUBMIT_API" /\ "cardano-submit-api" + , "CARDANO_NODE_CHAIRMAN" /\ "cardano-node-chairman" ] opts = defaultSpawnOptions { cwd = Just cwd, env = Just $ Object.union env' env } From 23b84083dbcca9bd950940954ab534ac831af51d Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 5 Jun 2024 14:44:19 +0300 Subject: [PATCH 195/373] Do not wait for the second working dir --- src/Internal/Testnet/Server.purs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 777eab9b1..9503450c8 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -355,8 +355,12 @@ startCardanoTestnet params cleanupRef = annotateError "startCardanoTestnet" do -- _ <- waitForEvent channels.stdout -- forward node's stdout - workdirAbsolute <- waitUntil (Milliseconds 1000.0) do - liftEffect $ findTestnetWorkir { tmpdir: testDir, dirIdx: 0 } + workdirAbsolute <- waitUntil (Milliseconds 1000.0) + $ liftEffect + $ map hush + $ try + $ liftMaybe (error "First testnet dir is missing") + =<< findTestnetWorkir { tmpdir: testDir, dirIdx: 0 } Aff.killFiber (error "Temp output is not needed anymore") tempOutput -- cardano-testnet doesn't kill cardano-nodes it spawns, so we do it ourselves From afdf8929261d50877186511632d4ce0b4d7b6049 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 5 Jun 2024 14:44:55 +0300 Subject: [PATCH 196/373] Merge plutip and startup config --- src/Internal/Testnet/Contract.purs | 14 ++++++++------ src/Internal/Testnet/Server.purs | 25 +++++++++---------------- src/Internal/Testnet/Types.purs | 16 +++++++++------- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 7b4924500..8c35aba26 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -2,11 +2,11 @@ module Ctl.Internal.Testnet.Contract where import Contract.Prelude +import Cardano.Types (NetworkId(TestnetId)) import Contract.Monad ( Contract , ContractEnv ) -import Cardano.Types (NetworkId(TestnetId)) import Contract.Monad as Contract import Ctl.Internal.Plutip.Server ( makeClusterContractEnv @@ -17,16 +17,18 @@ import Ctl.Internal.Plutip.Utils ) import Ctl.Internal.Testnet.Server ( StartedTestnetCluster - , defaultStartupParams , startTestnetCluster ) -import Ctl.Internal.Testnet.Types (TestnetClusterConfig) +import Ctl.Internal.Testnet.Types + ( CardanoTestnetStartupParams + , TestnetClusterConfig + ) import Effect.Ref as Ref -- | Run a single `Contract` in Plutip environment. runContract :: forall (a :: Type) r - . Record (TestnetClusterConfig r) + . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) -> Contract a -> Aff a runContract cfg cont = withContractEnv cfg \_ env -> @@ -36,12 +38,12 @@ runContract cfg cont = withContractEnv cfg \_ env -> -- | can be used to run multiple `Contract`s using `runContractInEnv`. withContractEnv :: forall (a :: Type) r - . Record (TestnetClusterConfig r) + . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) -> (StartedTestnetCluster -> ContractEnv -> Aff a) -> Aff a withContractEnv cfg cont = do cleanupRef <- liftEffect $ Ref.new [] _ <- cleanupOnExit cleanupRef - cluster <- startTestnetCluster defaultStartupParams cleanupRef cfg + cluster <- startTestnetCluster cfg cleanupRef { env, printLogs } <- makeClusterContractEnv cleanupRef cfg whenError printLogs $ cont cluster $ env { networkId = TestnetId } \ No newline at end of file diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 9503450c8..b1171bcea 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -6,7 +6,6 @@ module Ctl.Internal.Testnet.Server , startCardanoTestnet , testTestnetContracts , startTestnetCluster - , defaultStartupParams , StartedTestnetCluster(MkStartedTestnetCluster) , Channels ) where @@ -109,13 +108,6 @@ type Channels a = , stdout :: EventSource a } -defaultStartupParams :: CardanoTestnetStartupParams -defaultStartupParams = - ( Testnet.Types.defaultStartupParams - { testnetMagic: 2 } - ) - { nodeLoggingFormat = Just Testnet.Types.LogAsJson } - newtype StartedTestnetCluster = MkStartedTestnetCluster { ogmios :: { process :: ManagedProcess @@ -141,11 +133,10 @@ newtype StartedTestnetCluster = MkStartedTestnetCluster -- | transaction fees. startTestnetCluster :: forall r - . CardanoTestnetStartupParams + . Record (CardanoTestnetStartupParams (KupmiosConfig r)) -> Ref (Array (Aff Unit)) - -> Record (KupmiosConfig r) -> Aff StartedTestnetCluster -startTestnetCluster startupParams cleanupRef cfg = do +startTestnetCluster startupParams cleanupRef = do { testnet , channels , workdirAbsolute @@ -187,7 +178,7 @@ startTestnetCluster startupParams cleanupRef cfg = do kupo /\ kupoWorkdir <- scheduleCleanup cleanupRef - (startKupo cfg paths cleanupRef) + (startKupo startupParams paths cleanupRef) $ fst >>> stop @@ -211,7 +202,7 @@ startTestnetCluster startupParams cleanupRef cfg = do startOgmios' { paths, workdir } = do ogmios <- scheduleCleanup cleanupRef - (startOgmios cfg paths) + (startOgmios startupParams paths) stop _ <- Aff.forkAff do waitForClose ogmios @@ -252,8 +243,9 @@ runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = -- | Runs cardano-testnet executable with provided params. spawnCardanoTestnet - :: { cwd :: FilePath } - -> CardanoTestnetStartupParams + :: forall r + . { cwd :: FilePath } + -> { | CardanoTestnetStartupParams r } -> Aff ManagedProcess spawnCardanoTestnet { cwd } params = do env <- liftEffect Node.Process.getEnv @@ -301,7 +293,8 @@ spawnCardanoTestnet { cwd } params = do ] startCardanoTestnet - :: CardanoTestnetStartupParams + :: forall r + . { | CardanoTestnetStartupParams r } -> Ref (Array (Aff Unit)) -> Aff { testnet :: ManagedProcess diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 79d9fddbd..531ca89ed 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -69,7 +69,7 @@ instance Show LoggingFormat where LogAsJson -> "json" LogAsText -> "text" -type OptionalStartupParams = +type OptionalStartupParams r = ( numPoolNodes :: Maybe Int , era :: Maybe Era , epochLength :: Maybe Milliseconds @@ -77,19 +77,21 @@ type OptionalStartupParams = , activeSlotsCoeff :: Maybe Number , enableP2p :: Maybe Boolean , nodeLoggingFormat :: Maybe LoggingFormat + | r ) -- | Command line params for the cardano-testnet executable -type CardanoTestnetStartupParams = - { testnetMagic :: Int - | OptionalStartupParams - } +type CardanoTestnetStartupParams r = + ( testnetMagic :: Int + | OptionalStartupParams r + ) -defaultStartupParams :: { testnetMagic :: Int } -> CardanoTestnetStartupParams +defaultStartupParams + :: { testnetMagic :: Int } -> Record (CardanoTestnetStartupParams ()) defaultStartupParams necessaryParams = defaultOptionalStartupParams `Record.union` necessaryParams -defaultOptionalStartupParams :: Record OptionalStartupParams +defaultOptionalStartupParams :: Record (OptionalStartupParams ()) defaultOptionalStartupParams = { numPoolNodes: Nothing , era: Nothing From eb47b395165b632479fb95696850aee7378cdc1b Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 5 Jun 2024 14:46:08 +0300 Subject: [PATCH 197/373] Implement askAddressFunds that queries address funds via cardano-cli --- test/Plutip.js | 4 ++ test/Plutip.purs | 100 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 test/Plutip.js diff --git a/test/Plutip.js b/test/Plutip.js new file mode 100644 index 000000000..0f8a22182 --- /dev/null +++ b/test/Plutip.js @@ -0,0 +1,4 @@ +import stream from "node:stream"; + +export const readableFromBuffer = buf => () => + stream.Readable.from(buf, { objectMode: false }); diff --git a/test/Plutip.purs b/test/Plutip.purs index 2ca6b98db..b3fdcf592 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -2,8 +2,9 @@ module Test.Ctl.Plutip ( main ) where -import Prelude +import Contract.Prelude +import Cardano.Types.Address as Cardano.Types import Contract.Config as Config import Contract.Monad (Contract, launchAff_, withContractEnv) import Contract.Monad as Contract @@ -11,11 +12,15 @@ import Contract.Prelude ( Either(..) , Maybe(..) , for + , for_ + , intercalate , isJust , length , liftAff , liftEffect , log + , maybe + , traverse ) import Contract.ProtocolParameters (getProtocolParameters) import Contract.Staking (getPoolIds) @@ -27,8 +32,10 @@ import Contract.TextEnvelope , decodeTextEnvelope ) import Contract.Wallet - ( getWalletBalance + ( getWalletAddresses + , getWalletBalance , mkKeyWalletFromPrivateKeys + , ownPaymentPubKeyHashes , withKeyWallet ) import Contract.Wallet.KeyFile @@ -42,6 +49,7 @@ import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), stop) import Ctl.Internal.Plutip.Types (StopClusterResponse(StopClusterSuccess)) import Ctl.Internal.Plutip.Utils ( cleanupOnExit + , onLine , tmpdir , waitForBeforeExit , waitForExit @@ -50,15 +58,21 @@ import Ctl.Internal.Plutip.Utils import Ctl.Internal.Testnet.Contract as Testnet.Contract import Ctl.Internal.Testnet.Server ( checkTestnet + , redirectChannels , runTestnetTestPlan , startTestnet , stopTestnet , testTestnetContracts ) import Ctl.Internal.Testnet.Server as Testnet -import Ctl.Internal.Testnet.Types (Event(..), LoggingFormat(..)) +import Ctl.Internal.Testnet.Types + ( CardanoTestnetStartupParams + , Event(..) + , LoggingFormat(..) + ) import Ctl.Internal.Testnet.Types as Testnet.Types import Ctl.Internal.Testnet.Utils (findTestnetPaths, onTestnetEvent, waitFor) +import Ctl.Internal.Types.ScriptLookups (ownPaymentPubKeyHash) import Ctl.Internal.Wallet.KeyFile (privateStakeKeyFromTextEnvelope) import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(..)) @@ -75,18 +89,21 @@ import Effect.Aff , launchAff ) import Effect.Aff as Aff -import Effect.Exception (error, throw) +import Effect.Exception (Error, error, throw) import Effect.Ref as Ref import Mote (group, test) import Mote.Monad (mapTest) import Mote.TestPlanM (TestPlanM) import Mote.TestPlanM as Utils +import Node.Buffer as Node.Buffer import Node.ChildProcess (kill) import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(..)) import Node.FS.Aff (readTextFile, writeTextFile) import Node.Path (FilePath) import Node.Process as Process +import Node.Stream as Node.Stream +import Record as Record import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract @@ -102,6 +119,9 @@ import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface import Test.Spec.Assertions (shouldSatisfy) import Test.Spec.Runner (defaultConfig) +foreign import readableFromBuffer + :: Node.Buffer.Buffer -> Effect (Node.Stream.Readable ()) + readGenesisPkey :: FilePath -> Aff Config.PrivatePaymentKey readGenesisPkey path = do TextEnvelope envelope <- @@ -126,6 +146,49 @@ readGenesisStakingPkey path = do liftMaybe (error "Cannot decode genesis pkey from decoded envelope") $ privateStakeKeyFromTextEnvelope envelope' +askAddressFunds + :: { socketPath :: FilePath + , testnetMagic :: Int + } + -> Cardano.Types.Address + -> Aff Unit +askAddressFunds { socketPath, testnetMagic } address = do + channels <- do + { stderr, stdout } <- execCardanoCli + [ "query" + , "utxo" + , "--socket-path" + , socketPath + , "--testnet-magic" + , show testnetMagic + , "--address" + , Cardano.Types.toBech32 address + ] + liftEffect + $ { stderr: _, stdout: _ } + <$> onLine stderr Just + <*> onLine stdout Just + + void $ redirectChannels channels + { stderrTo: + { console: Just "[cardano-cli][stderr]" + , log: Just + "/home/alexey/cardano-transaction-lib/cardano-cli.stderr.log" + } + , stdoutTo: + { console: Just "[cardano-cli][stdout]" + , log: Just + "/home/alexey/cardano-transaction-lib/cardano-cli.stdout.log" + } + } + +defaultStartupParams :: { | CardanoTestnetStartupParams () } +defaultStartupParams = + ( Testnet.Types.defaultStartupParams + { testnetMagic: 2 } + ) + { nodeLoggingFormat = Just Testnet.Types.LogAsJson } + -- Run with `npm run plutip-test` main :: Effect Unit main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do @@ -207,3 +270,32 @@ configWithMaxExUnits = config -- stopRes `shouldSatisfy` case _ of -- StopClusterSuccess -> true -- _ -> false + +execCardanoCli + :: Array String + -> Aff + { stdout :: Node.Stream.Readable () + , stderr :: Node.Stream.Readable () + , process :: Node.ChildProcess.ChildProcess + } +execCardanoCli params = Aff.makeAff \cont -> do + processRef <- Ref.new Nothing + process <- Node.ChildProcess.exec + ("cardano-cli " <> intercalate " " params) + Node.ChildProcess.defaultExecOptions + ( \{ error: err, stderr, stdout } -> do + process <- + liftMaybe (error "Couldn't find executed process" :: Error) + =<< Ref.read processRef + stderrStream <- readableFromBuffer stderr :: Effect _ + stdoutStream <- readableFromBuffer stdout + let + result = + { stderr: stderrStream + , stdout: stdoutStream + , process + } + cont $ maybe (Right result) Left err + ) + Ref.write (Just process) processRef + pure $ Aff.Canceler \err -> liftEffect $ cont $ Left err \ No newline at end of file From ae7d00b1fa36c291d89917a634214f62526637c5 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 5 Jun 2024 14:46:44 +0300 Subject: [PATCH 198/373] Search for funds on all the addresses --- test/Plutip.purs | 63 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 9 deletions(-) diff --git a/test/Plutip.purs b/test/Plutip.purs index b3fdcf592..cd0e8d1a8 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -211,21 +211,66 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do -- key <- -- liftAff $ readGenesisPkey $ genesis1Path paths.testnetDirectory -- let spo2 = mkKeyWalletFromPrivateKeys key Nothing - - _ <- Testnet.Contract.withContractEnv defaultPlutipConfig \cluster env -> + let cfg = Record.union defaultStartupParams defaultPlutipConfig + _ <- Testnet.Contract.withContractEnv cfg \cluster env -> Contract.runContractInEnv env do let Testnet.MkStartedTestnetCluster { paths } = cluster addressesDir = paths.testnetDirectory <> "addresses" + delegatesDir = paths.testnetDirectory <> "shelley" <> + "delegate-keys" + + readWallet name n = liftAff $ mkKeyWalletFromFiles + (name <> show n <> ".skey") + (Just $ name <> show n <> "-stake.skey") + + readHackWallet makeStakeKey name n = + liftAff $ walletFromHackedKeys + (name <> show n <> ".skey") + ( if makeStakeKey then Just $ name <> show n <> "-stake.skey" + else Nothing + ) + walletFromHackedKeys payment staking = do + pk <- readGenesisPkey payment + sk <- traverse readGenesisStakingPkey staking + pure $ mkKeyWalletFromPrivateKeys pk sk + -- (Just $ name <> show n <> "-stake.skey") + + walletBalance wallet = + withKeyWallet wallet do + addresses <- getWalletAddresses + for_ addresses $ liftAff <<< askAddressFunds + { socketPath: paths.nodeSocketPath + , testnetMagic: cfg.testnetMagic + } - wallet <- liftAff $ mkKeyWalletFromFiles - (addressesDir <> "pool-owner1.skey") - (Just $ addressesDir <> "pool-owner1-stake.skey") - _ <- withKeyWallet wallet do - log <<< append "Balance: " <<< show =<< getWalletBalance + -- log <<< show =<< ownPaymentPubKeyHashes + -- log <<< append "Balance: " <<< show =<< getWalletBalance - log <<< show =<< getProtocolParameters - log <<< show =<< getPoolIds + for_ [ 1, 2 ] \n -> do + walletBalance =<< readWallet (addressesDir <> "pool-owner") n + walletBalance =<< readWallet (addressesDir <> "user") n + liftAff $ Aff.delay $ Milliseconds 8000.0 + for_ [ 1, 2, 3, 4 ] \n -> do + walletBalance =<< readHackWallet false (delegatesDir <> "delegate") n + for_ [ 1, 2 ] \n -> do + walletBalance =<< liftAff + ( walletFromHackedKeys + ( paths.testnetDirectory <> "node-bft" <> show n + <> "shelley" + <> "operator.skey" + ) + Nothing + ) + walletBalance =<< liftAff + ( walletFromHackedKeys + ( paths.testnetDirectory <> "node-pool" <> show n <> + "owner.skey" + ) + Nothing + ) + -- log <<< show =<< getProtocolParameters + -- log <<< show =<< getPoolIds -- startupFailureWaiting <- onStartupFailure source -- (show >>> append "Failed to startup testnet: " >>> error >>> throwError) From eb0e7275df99970f859a8b30c2d68afca7961c03 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 5 Jun 2024 14:48:40 +0300 Subject: [PATCH 199/373] Export redirectChannels from Testnet.Server --- src/Internal/Testnet/Server.purs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index b1171bcea..9cf587bca 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -1,6 +1,7 @@ module Ctl.Internal.Testnet.Server ( checkTestnet , runTestnetTestPlan + , redirectChannels , startTestnet , stopTestnet , startCardanoTestnet From fdce5f85e6c5ec72fc88c2b8137ea58930e0b539 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 5 Jun 2024 14:48:59 +0300 Subject: [PATCH 200/373] Log cardano-cli commands --- test/Plutip.purs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/Plutip.purs b/test/Plutip.purs index cd0e8d1a8..002bd7c96 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -325,8 +325,10 @@ execCardanoCli } execCardanoCli params = Aff.makeAff \cont -> do processRef <- Ref.new Nothing + let cmd = "cardano-cli " <> intercalate " " params + log $ show {execCardanoCli: cmd} process <- Node.ChildProcess.exec - ("cardano-cli " <> intercalate " " params) + cmd Node.ChildProcess.defaultExecOptions ( \{ error: err, stderr, stdout } -> do process <- From 6b03403cd1e92619ab69e397bd38ce31c3cbcdc0 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 5 Jun 2024 15:03:23 +0300 Subject: [PATCH 201/373] Log addresses being checked by walletBalance --- test/Plutip.purs | 106 +++++++++++++---------------------------------- 1 file changed, 29 insertions(+), 77 deletions(-) diff --git a/test/Plutip.purs b/test/Plutip.purs index 002bd7c96..cf38070c9 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -8,68 +8,24 @@ import Cardano.Types.Address as Cardano.Types import Contract.Config as Config import Contract.Monad (Contract, launchAff_, withContractEnv) import Contract.Monad as Contract -import Contract.Prelude - ( Either(..) - , Maybe(..) - , for - , for_ - , intercalate - , isJust - , length - , liftAff - , liftEffect - , log - , maybe - , traverse - ) +import Contract.Prelude (Either(..), Maybe(..), for, for_, intercalate, isJust, length, liftAff, liftEffect, log, maybe, traverse) import Contract.ProtocolParameters (getProtocolParameters) import Contract.Staking (getPoolIds) import Contract.Test.Plutip (PlutipConfig, defaultPlutipConfig, noWallet) import Contract.Test.Utils (exitCode, interruptOnSignal) -import Contract.TextEnvelope - ( TextEnvelope(..) - , TextEnvelopeType(..) - , decodeTextEnvelope - ) -import Contract.Wallet - ( getWalletAddresses - , getWalletBalance - , mkKeyWalletFromPrivateKeys - , ownPaymentPubKeyHashes - , withKeyWallet - ) -import Contract.Wallet.KeyFile - ( mkKeyWalletFromFiles - , privatePaymentKeyFromTextEnvelope - ) +import Contract.TextEnvelope (TextEnvelope(..), TextEnvelopeType(..), decodeTextEnvelope) +import Contract.Wallet (KeyWallet, getWalletAddresses, getWalletBalance, mkKeyWalletFromPrivateKeys, ownPaymentPubKeyHashes, withKeyWallet) +import Contract.Wallet.KeyFile (mkKeyWalletFromFiles, privatePaymentKeyFromTextEnvelope) import Control.Monad.Error.Class (liftMaybe, throwError, try) import Ctl.Internal.Contract.Monad (wrapQueryM) import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), stop) import Ctl.Internal.Plutip.Types (StopClusterResponse(StopClusterSuccess)) -import Ctl.Internal.Plutip.Utils - ( cleanupOnExit - , onLine - , tmpdir - , waitForBeforeExit - , waitForExit - , waitForUncaughtException - ) +import Ctl.Internal.Plutip.Utils (cleanupOnExit, onLine, tmpdir, waitForBeforeExit, waitForExit, waitForUncaughtException) import Ctl.Internal.Testnet.Contract as Testnet.Contract -import Ctl.Internal.Testnet.Server - ( checkTestnet - , redirectChannels - , runTestnetTestPlan - , startTestnet - , stopTestnet - , testTestnetContracts - ) +import Ctl.Internal.Testnet.Server (checkTestnet, redirectChannels, runTestnetTestPlan, startTestnet, stopTestnet, testTestnetContracts) import Ctl.Internal.Testnet.Server as Testnet -import Ctl.Internal.Testnet.Types - ( CardanoTestnetStartupParams - , Event(..) - , LoggingFormat(..) - ) +import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams, Event(..), LoggingFormat(..)) import Ctl.Internal.Testnet.Types as Testnet.Types import Ctl.Internal.Testnet.Utils (findTestnetPaths, onTestnetEvent, waitFor) import Ctl.Internal.Types.ScriptLookups (ownPaymentPubKeyHash) @@ -77,18 +33,9 @@ import Ctl.Internal.Wallet.KeyFile (privateStakeKeyFromTextEnvelope) import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(..)) import Effect (Effect) -import Effect.Aff - ( Aff - , Milliseconds(Milliseconds) - , bracket - , cancelWith - , delay - , effectCanceler - , forkAff - , killFiber - , launchAff - ) +import Effect.Aff (Aff, Milliseconds(Milliseconds), bracket, cancelWith, delay, effectCanceler, forkAff, killFiber, launchAff) import Effect.Aff as Aff +import Effect.Aff.Class (class MonadAff) import Effect.Exception (Error, error, throw) import Effect.Ref as Ref import Mote (group, test) @@ -220,24 +167,28 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do delegatesDir = paths.testnetDirectory <> "shelley" <> "delegate-keys" - readWallet name n = liftAff $ mkKeyWalletFromFiles - (name <> show n <> ".skey") - (Just $ name <> show n <> "-stake.skey") - - readHackWallet makeStakeKey name n = - liftAff $ walletFromHackedKeys + readWallet name n = liftAff do + wallet <- mkKeyWalletFromFiles + (name <> show n <> ".skey") + (Just $ name <> show n <> "-stake.skey") + pure $ (name <> show n) /\ wallet + readHackWallet :: forall m. MonadAff m => _ -> _ -> _ -> m (String /\ KeyWallet) + readHackWallet makeStakeKey name n = liftAff do + wallet <- walletFromHackedKeys (name <> show n <> ".skey") ( if makeStakeKey then Just $ name <> show n <> "-stake.skey" else Nothing ) + pure $ (name <> show n) /\ wallet walletFromHackedKeys payment staking = do pk <- readGenesisPkey payment sk <- traverse readGenesisStakingPkey staking pure $ mkKeyWalletFromPrivateKeys pk sk -- (Just $ name <> show n <> "-stake.skey") - walletBalance wallet = + walletBalance walletName wallet = withKeyWallet wallet do + log $ show {walletBalance: walletName} addresses <- getWalletAddresses for_ addresses $ liftAff <<< askAddressFunds { socketPath: paths.nodeSocketPath @@ -248,24 +199,25 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do -- log <<< append "Balance: " <<< show =<< getWalletBalance for_ [ 1, 2 ] \n -> do - walletBalance =<< readWallet (addressesDir <> "pool-owner") n - walletBalance =<< readWallet (addressesDir <> "user") n + uncurry walletBalance =<< readWallet (addressesDir <> "pool-owner") n + uncurry walletBalance =<< readWallet (addressesDir <> "user") n liftAff $ Aff.delay $ Milliseconds 8000.0 for_ [ 1, 2, 3, 4 ] \n -> do - walletBalance =<< readHackWallet false (delegatesDir <> "delegate") n + uncurry walletBalance =<< readHackWallet false (delegatesDir <> "delegate") n for_ [ 1, 2 ] \n -> do - walletBalance =<< liftAff + let nodeBft = "node-bft" <> show n + nodePool = "node-pool" <> show n + walletBalance nodeBft =<< liftAff ( walletFromHackedKeys - ( paths.testnetDirectory <> "node-bft" <> show n + ( paths.testnetDirectory <> nodeBft <> "shelley" <> "operator.skey" ) Nothing ) - walletBalance =<< liftAff + walletBalance nodePool =<< liftAff ( walletFromHackedKeys - ( paths.testnetDirectory <> "node-pool" <> show n <> - "owner.skey" + ( paths.testnetDirectory <> nodePool <> "owner.skey" ) Nothing ) From 26555b3570c7465bc62c19869a71c84bbbd867f4 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sun, 9 Jun 2024 21:38:01 +0300 Subject: [PATCH 202/373] Update cardano-node input to 8.7.2 --- flake.lock | 1858 ++++++++++++++++++++++++++++++++++++---------------- flake.nix | 2 +- 2 files changed, 1298 insertions(+), 562 deletions(-) diff --git a/flake.lock b/flake.lock index 3a8562dcd..fc966a0ae 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ "CHaP_2": { "flake": false, "locked": { - "lastModified": 1686070892, - "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", + "lastModified": 1701964264, + "narHash": "sha256-sOs8bLbMvtIBQLywB3AM6wcpHr5JUmHJyDhtBmRkHBI=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "596cf203a0a1ba252a083a79d384325000faeb49", + "rev": "b3ccccc588891d765bd68cd2fc1110844a3bef35", "type": "github" }, "original": { @@ -182,7 +182,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1641576265, @@ -200,8 +200,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_10" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1641404293, @@ -219,8 +219,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_12" + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_14" }, "locked": { "lastModified": 1641404293, @@ -238,8 +238,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_41" + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_43" }, "locked": { "lastModified": 1641404293, @@ -257,7 +257,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_13" }, "locked": { "lastModified": 1641576265, @@ -350,7 +350,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_40" + "nixpkgs": "nixpkgs_42" }, "locked": { "lastModified": 1641576265, @@ -418,7 +418,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_35" + "nixpkgs": "nixpkgs_37" }, "locked": { "lastModified": 1646360966, @@ -534,22 +534,22 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_2", + "blank": "blank_3", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", - "fenix": "fenix_4", + "fenix": "fenix_5", "hydra": "hydra_3", - "n2c": "n2c_2", + "n2c": "n2c_3", "nix": "nix_5", - "nixpkgs": "nixpkgs_29", + "nixpkgs": "nixpkgs_31", "nixpkgs-docker": "nixpkgs-docker", "nixpkgs-unstable": "nixpkgs-unstable_3", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", "ops-lib": "ops-lib_3", "ragenix": "ragenix_3", - "std": "std_2", + "std": "std_3", "terranix": "terranix_2", "utils": "utils_12" }, @@ -629,12 +629,12 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_3", + "blank": "blank_4", "deploy": "deploy", - "fenix": "fenix_2", + "fenix": "fenix_3", "hydra": "hydra_2", "nix": "nix_2", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_17", "nixpkgs-unstable": "nixpkgs-unstable_2", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", @@ -663,12 +663,12 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_4", + "blank": "blank_5", "deploy": "deploy_3", - "fenix": "fenix_6", + "fenix": "fenix_7", "hydra": "hydra_4", "nix": "nix_9", - "nixpkgs": "nixpkgs_44", + "nixpkgs": "nixpkgs_46", "nixpkgs-unstable": "nixpkgs-unstable_4", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", @@ -768,6 +768,21 @@ "type": "github" } }, + "blank_6": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1198,7 +1213,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_23", + "nixpkgs": "nixpkgs_25", "ragenix": "ragenix_2" }, "locked": { @@ -1219,7 +1234,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_52", + "nixpkgs": "nixpkgs_54", "ragenix": "ragenix_5" }, "locked": { @@ -1247,10 +1262,7 @@ "cardano-node", "nixpkgs" ], - "tullia": [ - "cardano-node", - "tullia" - ] + "tullia": "tullia" }, "locked": { "lastModified": 1679408951, @@ -1334,7 +1346,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1642701714, @@ -1359,7 +1371,7 @@ "customConfig": "customConfig", "em": "em", "empty-flake": "empty-flake", - "flake-compat": "flake-compat", + "flake-compat": "flake-compat_2", "hackageNix": "hackageNix", "haskellNix": "haskellNix", "hostNixpkgs": [ @@ -1367,32 +1379,27 @@ "nixpkgs" ], "iohkNix": "iohkNix", - "nix2container": "nix2container", + "nix2container": "nix2container_2", "nixpkgs": [ "cardano-node", "haskellNix", "nixpkgs-unstable" ], "ops-lib": "ops-lib", - "std": [ - "cardano-node", - "tullia", - "std" - ], - "tullia": "tullia", + "std": "std_2", "utils": "utils_2" }, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "lastModified": 1702024268, + "narHash": "sha256-DSvhXbm75rXMLgRCg/CLLeDFa6JbcCLTLJZoH/VY0MY=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "rev": "30b6e447c7e4586f43e30a68fe47c8481b0ba205", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "8.1.1", + "ref": "8.7.2", "repo": "cardano-node", "type": "github" } @@ -1531,8 +1538,8 @@ "customConfig": "customConfig_2", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_25", + "flake-compat": "flake-compat_9", + "flake-utils": "flake-utils_26", "haskellNix": "haskellNix_2", "hostNixpkgs": [ "db-sync", @@ -1578,13 +1585,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_9", + "flake-compat": "flake-compat_10", "hackage": "hackage_3", "haskell-nix": "haskell-nix_2", "iohk-nix": "iohk-nix", - "n2c": "n2c_3", + "n2c": "n2c_4", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_65", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -1592,7 +1599,7 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_3", + "std": "std_4", "tullia": "tullia_2" }, "locked": { @@ -1613,14 +1620,14 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_8", + "devshell": "devshell_9", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix", "inclusive": "inclusive_8", "nix": "nix_8", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_39", + "nixpkgs": "nixpkgs_41", "poetry2nix": "poetry2nix", "utils": "utils_16" }, @@ -1638,6 +1645,32 @@ "type": "github" } }, + "crane": { + "inputs": { + "flake-compat": "flake-compat_4", + "flake-utils": "flake-utils_6", + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "customConfig": { "locked": { "lastModified": 1630400035, @@ -1683,7 +1716,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_2" + "yants": "yants_3" }, "locked": { "lastModified": 1648237091, @@ -1720,7 +1753,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_4" + "yants": "yants_5" }, "locked": { "lastModified": 1655854240, @@ -1740,7 +1773,7 @@ "inputs": { "cardano-world": "cardano-world", "customConfig": "customConfig_3", - "flake-compat": "flake-compat_10", + "flake-compat": "flake-compat_11", "haskellNix": "haskellNix_3", "iohkNix": "iohkNix_3", "nixpkgs": [ @@ -1767,8 +1800,8 @@ }, "deploy": { "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat_4", + "fenix": "fenix_2", + "flake-compat": "flake-compat_5", "nixpkgs": [ "db-sync", "cardano-world", @@ -1797,8 +1830,8 @@ }, "deploy_2": { "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_5", + "fenix": "fenix_4", + "flake-compat": "flake-compat_6", "nixpkgs": [ "db-sync", "cardano-world", @@ -1825,8 +1858,8 @@ }, "deploy_3": { "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_6", + "fenix": "fenix_6", + "flake-compat": "flake-compat_7", "nixpkgs": [ "db-sync", "cardano-world", @@ -1856,12 +1889,14 @@ "inputs": { "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" @@ -1882,6 +1917,21 @@ } }, "devshell_10": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1896,7 +1946,7 @@ "type": "github" } }, - "devshell_11": { + "devshell_12": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1911,7 +1961,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_13": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -1926,7 +1976,7 @@ "type": "github" } }, - "devshell_13": { + "devshell_14": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1941,7 +1991,7 @@ "type": "github" } }, - "devshell_14": { + "devshell_15": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -1956,7 +2006,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_16": { "inputs": { "flake-utils": [ "db-sync", @@ -1985,9 +2035,9 @@ "type": "github" } }, - "devshell_16": { + "devshell_17": { "inputs": { - "flake-utils": "flake-utils_31", + "flake-utils": "flake-utils_32", "nixpkgs": [ "db-sync", "cardano-world", @@ -2011,6 +2061,29 @@ } }, "devshell_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_3": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2025,7 +2098,7 @@ "type": "github" } }, - "devshell_3": { + "devshell_4": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2040,7 +2113,7 @@ "type": "github" } }, - "devshell_4": { + "devshell_5": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -2055,7 +2128,7 @@ "type": "github" } }, - "devshell_5": { + "devshell_6": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -2070,7 +2143,7 @@ "type": "github" } }, - "devshell_6": { + "devshell_7": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -2085,7 +2158,7 @@ "type": "github" } }, - "devshell_7": { + "devshell_8": { "inputs": { "flake-utils": [ "db-sync", @@ -2116,10 +2189,10 @@ "type": "github" } }, - "devshell_8": { + "devshell_9": { "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": "nixpkgs_36" + "flake-utils": "flake-utils_16", + "nixpkgs": "nixpkgs_38" }, "locked": { "lastModified": 1644227066, @@ -2135,31 +2208,18 @@ "type": "github" } }, - "devshell_9": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "dmerge": { "inputs": { "nixlib": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ], "yants": [ "cardano-node", + "cardano-automation", "tullia", "std", "yants" @@ -2180,6 +2240,40 @@ } }, "dmerge_2": { + "inputs": { + "haumea": [ + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "type": "github" + }, + "original": { + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", + "type": "github" + } + }, + "dmerge_3": { "inputs": { "nixlib": [ "db-sync", @@ -2210,7 +2304,7 @@ "type": "github" } }, - "dmerge_3": { + "dmerge_4": { "inputs": { "nixlib": [ "db-sync", @@ -2241,7 +2335,7 @@ }, "driver": { "inputs": { - "devshell": "devshell_9", + "devshell": "devshell_10", "inclusive": "inclusive_6", "nix": "nix_7", "nixpkgs": [ @@ -2301,9 +2395,9 @@ }, "ema": { "inputs": { - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_54", + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_56", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -2342,7 +2436,7 @@ "ema": "ema_2", "flake-parts": "flake-parts", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_57", + "nixpkgs": "nixpkgs_59", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -2376,9 +2470,28 @@ }, "fenix": { "inputs": { - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_10", "rust-analyzer-src": "rust-analyzer-src" }, + "locked": { + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_15", + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { "lastModified": 1645165506, "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", @@ -2393,7 +2506,7 @@ "type": "github" } }, - "fenix_2": { + "fenix_3": { "inputs": { "nixpkgs": [ "db-sync", @@ -2403,7 +2516,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_2" + "rust-analyzer-src": "rust-analyzer-src_3" }, "locked": { "lastModified": 1649226351, @@ -2419,10 +2532,10 @@ "type": "github" } }, - "fenix_3": { + "fenix_4": { "inputs": { - "nixpkgs": "nixpkgs_26", - "rust-analyzer-src": "rust-analyzer-src_3" + "nixpkgs": "nixpkgs_28", + "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { "lastModified": 1645165506, @@ -2438,7 +2551,7 @@ "type": "github" } }, - "fenix_4": { + "fenix_5": { "inputs": { "nixpkgs": [ "db-sync", @@ -2446,7 +2559,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_4" + "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { "lastModified": 1660631227, @@ -2462,10 +2575,10 @@ "type": "github" } }, - "fenix_5": { + "fenix_6": { "inputs": { - "nixpkgs": "nixpkgs_42", - "rust-analyzer-src": "rust-analyzer-src_5" + "nixpkgs": "nixpkgs_44", + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { "lastModified": 1645165506, @@ -2481,7 +2594,7 @@ "type": "github" } }, - "fenix_6": { + "fenix_7": { "inputs": { "nixpkgs": [ "db-sync", @@ -2490,7 +2603,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_6" + "rust-analyzer-src": "rust-analyzer-src_7" }, "locked": { "lastModified": 1649226351, @@ -2509,21 +2622,36 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, "flake-compat_10": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_11": { "flake": false, "locked": { "lastModified": 1647532380, @@ -2540,7 +2668,7 @@ "type": "github" } }, - "flake-compat_11": { + "flake-compat_12": { "flake": false, "locked": { "lastModified": 1696426674, @@ -2556,7 +2684,7 @@ "type": "github" } }, - "flake-compat_12": { + "flake-compat_13": { "flake": false, "locked": { "lastModified": 1672831974, @@ -2573,7 +2701,7 @@ "type": "github" } }, - "flake-compat_13": { + "flake-compat_14": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2589,7 +2717,7 @@ "type": "github" } }, - "flake-compat_14": { + "flake-compat_15": { "flake": false, "locked": { "lastModified": 1673956053, @@ -2608,16 +2736,16 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -2625,15 +2753,16 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -2641,11 +2770,11 @@ "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -2689,11 +2818,11 @@ "flake-compat_7": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -2705,15 +2834,15 @@ "flake-compat_8": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -2721,22 +2850,22 @@ "flake-compat_9": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", "repo": "flake-compat", "type": "github" } }, "flake-parts": { "inputs": { - "nixpkgs": "nixpkgs_56" + "nixpkgs": "nixpkgs_58" }, "locked": { "lastModified": 1655570068, @@ -2788,6 +2917,21 @@ } }, "flake-utils_10": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_11": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2802,7 +2946,7 @@ "type": "github" } }, - "flake-utils_11": { + "flake-utils_12": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2817,7 +2961,7 @@ "type": "github" } }, - "flake-utils_12": { + "flake-utils_13": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2832,7 +2976,7 @@ "type": "github" } }, - "flake-utils_13": { + "flake-utils_14": { "locked": { "lastModified": 1656928814, "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", @@ -2847,7 +2991,7 @@ "type": "github" } }, - "flake-utils_14": { + "flake-utils_15": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -2862,7 +3006,7 @@ "type": "github" } }, - "flake-utils_15": { + "flake-utils_16": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -2877,7 +3021,7 @@ "type": "github" } }, - "flake-utils_16": { + "flake-utils_17": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2892,7 +3036,7 @@ "type": "github" } }, - "flake-utils_17": { + "flake-utils_18": { "locked": { "lastModified": 1610051610, "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", @@ -2907,7 +3051,7 @@ "type": "github" } }, - "flake-utils_18": { + "flake-utils_19": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -2922,13 +3066,13 @@ "type": "github" } }, - "flake-utils_19": { + "flake-utils_2": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -2937,23 +3081,22 @@ "type": "github" } }, - "flake-utils_2": { + "flake-utils_20": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, - "flake-utils_20": { + "flake-utils_21": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -2968,7 +3111,7 @@ "type": "github" } }, - "flake-utils_21": { + "flake-utils_22": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -2983,7 +3126,7 @@ "type": "github" } }, - "flake-utils_22": { + "flake-utils_23": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -2998,7 +3141,7 @@ "type": "github" } }, - "flake-utils_23": { + "flake-utils_24": { "locked": { "lastModified": 1619345332, "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", @@ -3013,7 +3156,7 @@ "type": "github" } }, - "flake-utils_24": { + "flake-utils_25": { "locked": { "lastModified": 1652776076, "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", @@ -3029,7 +3172,7 @@ "type": "github" } }, - "flake-utils_25": { + "flake-utils_26": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3044,7 +3187,7 @@ "type": "github" } }, - "flake-utils_26": { + "flake-utils_27": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3059,7 +3202,7 @@ "type": "github" } }, - "flake-utils_27": { + "flake-utils_28": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3074,7 +3217,7 @@ "type": "github" } }, - "flake-utils_28": { + "flake-utils_29": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3089,13 +3232,13 @@ "type": "github" } }, - "flake-utils_29": { + "flake-utils_3": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3104,13 +3247,13 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_30": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -3119,7 +3262,7 @@ "type": "github" } }, - "flake-utils_30": { + "flake-utils_31": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3134,7 +3277,7 @@ "type": "github" } }, - "flake-utils_31": { + "flake-utils_32": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -3149,7 +3292,7 @@ "type": "github" } }, - "flake-utils_32": { + "flake-utils_33": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3164,7 +3307,7 @@ "type": "github" } }, - "flake-utils_33": { + "flake-utils_34": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -3211,11 +3354,11 @@ }, "flake-utils_6": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -3256,11 +3399,11 @@ }, "flake-utils_9": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -3287,7 +3430,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_11", "inclusive": "inclusive_7", "nixpkgs": [ "db-sync", @@ -3450,7 +3593,44 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, + "ghc98X_2": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, "ghc99": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_2": { "flake": false, "locked": { "lastModified": 1701580282, @@ -3470,7 +3650,7 @@ }, "gomod2nix": { "inputs": { - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_2", "utils": "utils" }, "locked": { @@ -3522,11 +3702,11 @@ "hackageNix": { "flake": false, "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", "type": "github" }, "original": { @@ -3621,7 +3801,7 @@ "cabal-34": "cabal-34_2", "cabal-36": "cabal-36_2", "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_16", + "flake-utils": "flake-utils_17", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", "hackage": "hackage", "hpc-coveralls": "hpc-coveralls_2", @@ -3668,7 +3848,7 @@ "cabal-34": "cabal-34_4", "cabal-36": "cabal-36_4", "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", + "flake-utils": "flake-utils_28", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", "hackage": [ "db-sync", @@ -3713,18 +3893,18 @@ "cabal-34": "cabal-34_6", "cabal-36": "cabal-36_6", "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_12", + "flake-compat": "flake-compat_13", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "ghc98X": "ghc98X", - "ghc99": "ghc99", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", "hackage": [ "hackage-nix" ], "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", "hpc-coveralls": "hpc-coveralls_6", "hydra": "hydra_8", "iserv-proxy": "iserv-proxy_2", @@ -3736,7 +3916,7 @@ "nixpkgs-2111": "nixpkgs-2111_6", "nixpkgs-2205": "nixpkgs-2205_3", "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-2305": "nixpkgs-2305_2", "nixpkgs-2311": "nixpkgs-2311", "nixpkgs-unstable": "nixpkgs-unstable_8", "old-ghc-nix": "old-ghc-nix_6", @@ -3763,7 +3943,7 @@ "cabal-34": "cabal-34_7", "cabal-36": "cabal-36_7", "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_34", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_5", "hpc-coveralls": "hpc-coveralls_7", @@ -3803,14 +3983,19 @@ "cabal-34": "cabal-34", "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", + "flake-compat": "flake-compat_3", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "ghc98X": "ghc98X", + "ghc99": "ghc99", "hackage": [ "cardano-node", "hackageNix" ], "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", @@ -3823,16 +4008,17 @@ "nixpkgs-2111": "nixpkgs-2111", "nixpkgs-2205": "nixpkgs-2205", "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", "nixpkgs-unstable": "nixpkgs-unstable", "old-ghc-nix": "old-ghc-nix", "stackage": "stackage" }, "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", "type": "github" }, "original": { @@ -3848,7 +4034,7 @@ "cabal-34": "cabal-34_3", "cabal-36": "cabal-36_3", "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_26", + "flake-utils": "flake-utils_27", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", "hackage": "hackage_2", "hpc-coveralls": "hpc-coveralls_3", @@ -3888,7 +4074,7 @@ "cabal-34": "cabal-34_5", "cabal-36": "cabal-36_5", "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_32", + "flake-utils": "flake-utils_33", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", "hackage": "hackage_4", "hpc-coveralls": "hpc-coveralls_5", @@ -3920,10 +4106,29 @@ "type": "github" } }, + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_8" + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, "hercules-ci-effects": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_70" + "nixpkgs": "nixpkgs_72" }, "locked": { "lastModified": 1701009247, @@ -3990,10 +4195,44 @@ "type": "github" } }, - "hls-2.2": { + "hls-2.0_2": { "flake": false, "locked": { - "lastModified": 1693064058, + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_2": { + "flake": false, + "locked": { + "lastModified": 1693064058, "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", "owner": "haskell", "repo": "haskell-language-server", @@ -4024,6 +4263,23 @@ "type": "github" } }, + "hls-2.3_2": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.4": { "flake": false, "locked": { @@ -4041,6 +4297,23 @@ "type": "github" } }, + "hls-2.4_2": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hpc-coveralls": { "flake": false, "locked": { @@ -4399,6 +4672,7 @@ "inputs": { "nixlib": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" @@ -4418,6 +4692,29 @@ "type": "github" } }, + "incl_2": { + "inputs": { + "nixlib": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, "inclusive": { "inputs": { "stdlib": "stdlib" @@ -4618,9 +4915,9 @@ }, "iogo": { "inputs": { - "devshell": "devshell_4", + "devshell": "devshell_5", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_22", + "nixpkgs": "nixpkgs_24", "utils": "utils_8" }, "locked": { @@ -4639,9 +4936,9 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_15", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_51", + "nixpkgs": "nixpkgs_53", "utils": "utils_22" }, "locked": { @@ -4737,11 +5034,11 @@ "sodium": "sodium" }, "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", "type": "github" }, "original": { @@ -4797,11 +5094,11 @@ "iserv-proxy": { "flake": false, "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, "type": "git", "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, @@ -5165,23 +5462,25 @@ "inputs": { "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "std", "flake-utils" ], "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", "owner": "nlewo", "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", "type": "github" }, "original": { @@ -5192,8 +5491,35 @@ }, "n2c_2": { "inputs": { - "flake-utils": "flake-utils_11", - "nixpkgs": "nixpkgs_27" + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_29" }, "locked": { "lastModified": 1650568002, @@ -5209,10 +5535,10 @@ "type": "github" } }, - "n2c_3": { + "n2c_4": { "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_62" + "flake-utils": "flake-utils_29", + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1655533513, @@ -5231,7 +5557,7 @@ "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_6", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { @@ -5251,7 +5577,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_12", "inclusive": [ "db-sync", "cardano-world", @@ -5302,9 +5628,10 @@ }, "nix-nomad": { "inputs": { - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat", "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "nix2container", "flake-utils" @@ -5312,11 +5639,13 @@ "gomod2nix": "gomod2nix", "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "nixpkgs" ], "nixpkgs-lib": [ "cardano-node", + "cardano-automation", "tullia", "nixpkgs" ] @@ -5417,15 +5746,15 @@ }, "nix2container": { "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_4" + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", "owner": "nlewo", "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { @@ -5437,14 +5766,14 @@ "nix2container_2": { "inputs": { "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", "owner": "nlewo", "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { @@ -5455,8 +5784,8 @@ }, "nix2container_3": { "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_65" + "flake-utils": "flake-utils_31", + "nixpkgs": "nixpkgs_67" }, "locked": { "lastModified": 1653427219, @@ -5476,7 +5805,7 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_45" + "nixpkgs": "nixpkgs_47" }, "locked": { "lastModified": 1604400356, @@ -5495,7 +5824,7 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_47", + "nixpkgs": "nixpkgs_49", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { @@ -5515,7 +5844,7 @@ "nix_12": { "inputs": { "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_59", + "nixpkgs": "nixpkgs_61", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { @@ -5536,7 +5865,7 @@ "nix_13": { "inputs": { "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_61", + "nixpkgs": "nixpkgs_63", "nixpkgs-regression": "nixpkgs-regression_11" }, "locked": { @@ -5557,7 +5886,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_68", + "nixpkgs": "nixpkgs_70", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -5578,7 +5907,7 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_69", + "nixpkgs": "nixpkgs_71", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -5599,7 +5928,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_71", + "nixpkgs": "nixpkgs_73", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -5620,7 +5949,7 @@ "nix_2": { "inputs": { "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_14", + "nixpkgs": "nixpkgs_16", "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { @@ -5641,7 +5970,7 @@ "nix_3": { "inputs": { "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_18" }, "locked": { "lastModified": 1604400356, @@ -5660,7 +5989,7 @@ "nix_4": { "inputs": { "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_18", + "nixpkgs": "nixpkgs_20", "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { @@ -5680,7 +6009,7 @@ "nix_5": { "inputs": { "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_28", + "nixpkgs": "nixpkgs_30", "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { @@ -5701,7 +6030,7 @@ "nix_6": { "inputs": { "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", + "nixpkgs": "nixpkgs_32", "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { @@ -5721,7 +6050,7 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_37", + "nixpkgs": "nixpkgs_39", "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { @@ -5742,7 +6071,7 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_38", + "nixpkgs": "nixpkgs_40", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { @@ -5763,7 +6092,7 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_43", + "nixpkgs": "nixpkgs_45", "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { @@ -5785,29 +6114,32 @@ "inputs": { "flake-utils": [ "cardano-node", + "cardano-automation", "tullia", "std", "flake-utils" ], "nixago-exts": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" ], "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", "owner": "nix-community", "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { @@ -5847,6 +6179,38 @@ } }, "nixago_2": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_3": { "inputs": { "flake-utils": [ "db-sync", @@ -5878,7 +6242,7 @@ "type": "github" } }, - "nixago_3": { + "nixago_4": { "inputs": { "flake-utils": [ "db-sync", @@ -6307,11 +6671,11 @@ }, "nixpkgs-2205": { "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { @@ -6355,11 +6719,11 @@ }, "nixpkgs-2211": { "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { @@ -6386,6 +6750,22 @@ } }, "nixpkgs-2305": { + "locked": { + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_2": { "locked": { "lastModified": 1701362232, "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", @@ -6647,11 +7027,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { @@ -6790,6 +7170,36 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_12": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6805,7 +7215,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_13": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -6819,7 +7229,7 @@ "type": "indirect" } }, - "nixpkgs_12": { + "nixpkgs_14": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6835,7 +7245,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_15": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6851,7 +7261,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_16": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6866,7 +7276,7 @@ "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs_17": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -6882,7 +7292,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_18": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -6897,7 +7307,7 @@ "type": "indirect" } }, - "nixpkgs_17": { + "nixpkgs_19": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -6913,7 +7323,23 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_2": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6928,7 +7354,7 @@ "type": "indirect" } }, - "nixpkgs_19": { + "nixpkgs_21": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -6944,21 +7370,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_20": { + "nixpkgs_22": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -6974,7 +7386,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_23": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6990,7 +7402,7 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_24": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7006,7 +7418,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_25": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7022,7 +7434,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_26": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7038,7 +7450,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_27": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -7053,7 +7465,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_28": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7069,7 +7481,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_29": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7084,7 +7496,22 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_3": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_30": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7099,7 +7526,7 @@ "type": "indirect" } }, - "nixpkgs_29": { + "nixpkgs_31": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -7115,23 +7542,7 @@ "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { + "nixpkgs_32": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7146,7 +7557,7 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_33": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7162,7 +7573,7 @@ "type": "github" } }, - "nixpkgs_32": { + "nixpkgs_34": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7178,7 +7589,7 @@ "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_35": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7194,7 +7605,7 @@ "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_36": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7210,7 +7621,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_37": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -7226,7 +7637,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_38": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -7242,7 +7653,7 @@ "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_39": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7257,7 +7668,23 @@ "type": "indirect" } }, - "nixpkgs_38": { + "nixpkgs_4": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7272,7 +7699,7 @@ "type": "indirect" } }, - "nixpkgs_39": { + "nixpkgs_41": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -7288,22 +7715,7 @@ "type": "github" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { + "nixpkgs_42": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7317,7 +7729,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_43": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7333,7 +7745,7 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_44": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7349,7 +7761,7 @@ "type": "github" } }, - "nixpkgs_43": { + "nixpkgs_45": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7364,7 +7776,7 @@ "type": "indirect" } }, - "nixpkgs_44": { + "nixpkgs_46": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7380,7 +7792,7 @@ "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_47": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7395,7 +7807,7 @@ "type": "indirect" } }, - "nixpkgs_46": { + "nixpkgs_48": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7411,7 +7823,7 @@ "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_49": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7426,7 +7838,21 @@ "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_5": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_50": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7442,7 +7868,7 @@ "type": "github" } }, - "nixpkgs_49": { + "nixpkgs_51": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7458,23 +7884,7 @@ "type": "github" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_50": { + "nixpkgs_52": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7490,7 +7900,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_53": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7506,7 +7916,7 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_54": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7522,7 +7932,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_55": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7538,7 +7948,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_56": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -7554,7 +7964,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_57": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -7568,7 +7978,7 @@ "type": "indirect" } }, - "nixpkgs_56": { + "nixpkgs_58": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -7584,7 +7994,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_59": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -7598,7 +8008,23 @@ "type": "indirect" } }, - "nixpkgs_58": { + "nixpkgs_6": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -7612,7 +8038,7 @@ "type": "indirect" } }, - "nixpkgs_59": { + "nixpkgs_61": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7627,22 +8053,7 @@ "type": "indirect" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_62": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -7657,7 +8068,7 @@ "type": "github" } }, - "nixpkgs_61": { + "nixpkgs_63": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7672,7 +8083,7 @@ "type": "indirect" } }, - "nixpkgs_62": { + "nixpkgs_64": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -7687,7 +8098,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_65": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -7703,7 +8114,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_66": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7719,7 +8130,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_67": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7734,7 +8145,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_68": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -7750,7 +8161,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_69": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -7766,7 +8177,22 @@ "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_7": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7781,7 +8207,7 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_71": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -7797,23 +8223,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_72": { "locked": { "lastModified": 1697723726, "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", @@ -7829,7 +8239,7 @@ "type": "github" } }, - "nixpkgs_71": { + "nixpkgs_73": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7846,38 +8256,39 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, "nixpkgs_9": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nomad": { "inputs": { "nix": "nix_3", - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_19", "utils": "utils_4" }, "locked": { @@ -7897,10 +8308,10 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_2", + "devshell": "devshell_3", "inclusive": "inclusive", "nix": "nix_4", - "nixpkgs": "nixpkgs_19", + "nixpkgs": "nixpkgs_21", "utils": "utils_5" }, "locked": { @@ -7919,10 +8330,10 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_5", + "devshell": "devshell_6", "inclusive": "inclusive_4", "nix": "nix_6", - "nixpkgs": "nixpkgs_31", + "nixpkgs": "nixpkgs_33", "utils": "utils_10" }, "locked": { @@ -7941,10 +8352,10 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_13", "inclusive": "inclusive_9", "nix": "nix_11", - "nixpkgs": "nixpkgs_48", + "nixpkgs": "nixpkgs_50", "utils": "utils_19" }, "locked": { @@ -7963,9 +8374,9 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_3", + "devshell": "devshell_4", "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_20", + "nixpkgs": "nixpkgs_22", "utils": "utils_6" }, "locked": { @@ -7984,9 +8395,9 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_6", + "devshell": "devshell_7", "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_32", + "nixpkgs": "nixpkgs_34", "utils": "utils_11" }, "locked": { @@ -8005,9 +8416,9 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_13", + "devshell": "devshell_14", "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_49", + "nixpkgs": "nixpkgs_51", "utils": "utils_20" }, "locked": { @@ -8027,7 +8438,7 @@ "nomad_2": { "inputs": { "nix": "nix_10", - "nixpkgs": "nixpkgs_46", + "nixpkgs": "nixpkgs_48", "utils": "utils_18" }, "locked": { @@ -8047,11 +8458,26 @@ }, "nosys": { "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_2": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", "owner": "divnix", "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { @@ -8080,12 +8506,12 @@ "ogmios-nixos": { "inputs": { "CHaP": "CHaP_3", - "blank": "blank_5", + "blank": "blank_6", "cardano-configurations": "cardano-configurations_2", "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_13", + "flake-compat": "flake-compat_14", "haskell-nix": [ "haskell-nix" ], @@ -8269,48 +8695,218 @@ "ops-lib_2": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_3": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_4": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "paisano": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys", + "yants": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "core", + "type": "github" + } + }, + "paisano-actions": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "actions", + "type": "github" + } + }, + "paisano-mdbook-preprocessor": { + "inputs": { + "crane": "crane", + "fenix": "fenix", + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "cardano-node", + "std" + ] + }, + "locked": { + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "type": "github" + } + }, + "paisano-tui": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "cardano-node", + "cardano-automation", + "tullia", + "std" + ] + }, + "locked": { + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "ops-lib_3": { - "flake": false, + "paisano-tui_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "blank" + ], + "std": [ + "cardano-node", + "std" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "paisano_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "nosys": "nosys_2", + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, @@ -8320,7 +8916,7 @@ "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_14", + "flake-compat": "flake-compat_15", "hackage-nix": [ "hackage-nix" ], @@ -8351,7 +8947,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_17", + "flake-utils": "flake-utils_18", "nixpkgs": [ "db-sync", "cardano-world", @@ -8377,8 +8973,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_57" }, "locked": { "lastModified": 1639823344, @@ -8397,9 +8993,9 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_21", - "rust-overlay": "rust-overlay" + "flake-utils": "flake-utils_9", + "nixpkgs": "nixpkgs_23", + "rust-overlay": "rust-overlay_2" }, "locked": { "lastModified": 1641119695, @@ -8418,9 +9014,9 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_24", - "rust-overlay": "rust-overlay_2" + "flake-utils": "flake-utils_11", + "nixpkgs": "nixpkgs_26", + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1645147603, @@ -8439,9 +9035,9 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_33", - "rust-overlay": "rust-overlay_3" + "flake-utils": "flake-utils_13", + "nixpkgs": "nixpkgs_35", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1641119695, @@ -8460,9 +9056,9 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_50", - "rust-overlay": "rust-overlay_4" + "flake-utils": "flake-utils_20", + "nixpkgs": "nixpkgs_52", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1641119695, @@ -8481,9 +9077,9 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_53", - "rust-overlay": "rust-overlay_5" + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_55", + "rust-overlay": "rust-overlay_6" }, "locked": { "lastModified": 1645147603, @@ -8507,7 +9103,7 @@ "cardano-node": "cardano-node", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_11", + "flake-compat": "flake-compat_12", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_3", "hercules-ci-effects": "hercules-ci-effects", @@ -8524,6 +9120,23 @@ } }, "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_2": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8540,7 +9153,7 @@ "type": "github" } }, - "rust-analyzer-src_2": { + "rust-analyzer-src_3": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8557,7 +9170,7 @@ "type": "github" } }, - "rust-analyzer-src_3": { + "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8574,7 +9187,7 @@ "type": "github" } }, - "rust-analyzer-src_4": { + "rust-analyzer-src_5": { "flake": false, "locked": { "lastModified": 1660579619, @@ -8591,7 +9204,7 @@ "type": "github" } }, - "rust-analyzer-src_5": { + "rust-analyzer-src_6": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8608,7 +9221,7 @@ "type": "github" } }, - "rust-analyzer-src_6": { + "rust-analyzer-src_7": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8626,6 +9239,37 @@ } }, "rust-overlay": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { "inputs": { "flake-utils": [ "db-sync", @@ -8660,7 +9304,7 @@ "type": "github" } }, - "rust-overlay_2": { + "rust-overlay_3": { "inputs": { "flake-utils": [ "db-sync", @@ -8693,7 +9337,7 @@ "type": "github" } }, - "rust-overlay_3": { + "rust-overlay_4": { "inputs": { "flake-utils": [ "db-sync", @@ -8724,7 +9368,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_5": { "inputs": { "flake-utils": [ "db-sync", @@ -8757,7 +9401,7 @@ "type": "github" } }, - "rust-overlay_5": { + "rust-overlay_6": { "inputs": { "flake-utils": [ "db-sync", @@ -8859,11 +9503,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", "type": "github" }, "original": { @@ -8972,6 +9616,7 @@ "inputs": { "arion": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" @@ -8979,32 +9624,35 @@ "blank": "blank", "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_3", "incl": "incl", "makes": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" ], "microvm": [ "cardano-node", + "cardano-automation", "tullia", "std", "blank" ], "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_8", - "nosys": "nosys", + "nixpkgs": "nixpkgs_4", + "paisano": "paisano", + "paisano-tui": "paisano-tui", "yants": "yants" }, "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", "owner": "divnix", "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", "type": "github" }, "original": { @@ -9015,13 +9663,58 @@ }, "std_2": { "inputs": { - "devshell": "devshell_7", + "arion": [ + "cardano-node", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_13", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "flake-utils": "flake-utils_5", + "haumea": "haumea", + "incl": "incl_2", + "makes": [ + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "std", + "blank" + ], + "n2c": "n2c_2", "nixago": "nixago_2", - "nixpkgs": "nixpkgs_34", - "yants": "yants_3" + "nixpkgs": "nixpkgs_9", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", + "yants": "yants_2" + }, + "locked": { + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_3": { + "inputs": { + "devshell": "devshell_8", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_14", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_36", + "yants": "yants_4" }, "locked": { "lastModified": 1661370377, @@ -9037,15 +9730,15 @@ "type": "github" } }, - "std_3": { + "std_4": { "inputs": { - "devshell": "devshell_15", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_29", + "devshell": "devshell_16", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_30", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_64", - "yants": "yants_5" + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_66", + "yants": "yants_6" }, "locked": { "lastModified": 1661367957, @@ -9061,11 +9754,11 @@ "type": "github" } }, - "std_4": { + "std_5": { "inputs": { - "devshell": "devshell_16", - "nixpkgs": "nixpkgs_67", - "yants": "yants_6" + "devshell": "devshell_17", + "nixpkgs": "nixpkgs_69", + "yants": "yants_7" }, "locked": { "lastModified": 1652784712, @@ -9261,10 +9954,25 @@ "type": "github" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_58" + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_60" }, "locked": { "lastModified": 1654211622, @@ -9285,7 +9993,7 @@ "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_9", + "flake-utils": "flake-utils_10", "nixpkgs": [ "db-sync", "cardano-world", @@ -9359,7 +10067,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_14", + "flake-utils": "flake-utils_15", "nixpkgs": [ "db-sync", "cardano-world", @@ -9386,7 +10094,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_20", + "flake-utils": "flake-utils_21", "nixpkgs": [ "db-sync", "cardano-world", @@ -9413,16 +10121,20 @@ "tullia": { "inputs": { "nix-nomad": "nix-nomad", - "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_7", + "nix2container": "nix2container", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "nixpkgs" + ], "std": "std" }, "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "lastModified": 1684859161, + "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", "owner": "input-output-hk", "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", "type": "github" }, "original": { @@ -9434,8 +10146,8 @@ "tullia_2": { "inputs": { "nix2container": "nix2container_3", - "nixpkgs": "nixpkgs_66", - "std": "std_4" + "nixpkgs": "nixpkgs_68", + "std": "std_5" }, "locked": { "lastModified": 1657811465, @@ -9834,6 +10546,7 @@ "inputs": { "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" @@ -9855,7 +10568,30 @@ }, "yants_2": { "inputs": { - "nixpkgs": "nixpkgs_25" + "nixpkgs": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", + "owner": "divnix", + "repo": "yants", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_3": { + "inputs": { + "nixpkgs": "nixpkgs_27" }, "locked": { "lastModified": 1645126146, @@ -9871,7 +10607,7 @@ "type": "github" } }, - "yants_3": { + "yants_4": { "inputs": { "nixpkgs": [ "db-sync", @@ -9895,9 +10631,9 @@ "type": "github" } }, - "yants_4": { + "yants_5": { "inputs": { - "nixpkgs": "nixpkgs_60" + "nixpkgs": "nixpkgs_62" }, "locked": { "lastModified": 1645126146, @@ -9913,7 +10649,7 @@ "type": "github" } }, - "yants_5": { + "yants_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -9936,7 +10672,7 @@ "type": "github" } }, - "yants_6": { + "yants_7": { "inputs": { "nixpkgs": [ "db-sync", diff --git a/flake.nix b/flake.nix index fc12c7649..6aabe7097 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; + cardano-node.url = "github:input-output-hk/cardano-node/8.7.2"; ogmios-nixos = { url = "github:mlabs-haskell/ogmios-nixos/78e829e9ebd50c5891024dcd1004c2ac51facd80"; From 5c9a973700886888c180ba964f68a3b1a44af787 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sun, 9 Jun 2024 21:40:53 +0300 Subject: [PATCH 203/373] Change server runner in a way it works with 8.7.2 --- src/Internal/Testnet/Server.purs | 18 ++++++++--------- src/Internal/Testnet/Types.purs | 2 +- src/Internal/Testnet/Utils.purs | 33 ++++++++++++++++++++++---------- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 9cf587bca..0c8fcb33a 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -66,9 +66,9 @@ import Ctl.Internal.Testnet.Types as Testnet.Types import Ctl.Internal.Testnet.Utils ( findNodeDirs , findTestnetPaths - , findTestnetWorkir , getRuntime , readNodes + , waitForTestnet872Workdir ) import Ctl.Internal.Wallet.Key (PrivatePaymentKey) import Data.Array as Array @@ -161,13 +161,13 @@ startTestnetCluster startupParams cleanupRef = do pure { runtime, paths } log "Testnet is ready" - Aff.delay $ Milliseconds 2000.0 ogmios <- annotateError "Could not start ogmios" $ startOgmios' { paths, workdir: workdirAbsolute } kupo <- annotateError "Could not start kupo" $ startKupo' { paths, workdir: workdirAbsolute } + log "startTestnetCluster:done" pure $ MkStartedTestnetCluster { paths , ogmios @@ -347,18 +347,16 @@ startCardanoTestnet params cleanupRef = annotateError "startCardanoTestnet" do -- -- It may not create an own directory until show any signs of life -- _ <- waitForEvent channels.stdout - + log "Waiting until testnet create it's own workdir" -- forward node's stdout - workdirAbsolute <- waitUntil (Milliseconds 1000.0) - $ liftEffect - $ map hush - $ try - $ liftMaybe (error "First testnet dir is missing") - =<< findTestnetWorkir { tmpdir: testDir, dirIdx: 0 } + workdirAbsolute <- + map (_.workdir >>> (testDir <> _)) -- workdir name to abs path + + $ waitForTestnet872Workdir channels.stdout { tmpdir: testDir } Aff.killFiber (error "Temp output is not needed anymore") tempOutput -- cardano-testnet doesn't kill cardano-nodes it spawns, so we do it ourselves - + log "Waiting for node sockets" nodes <- waitUntil (Milliseconds 3000.0) $ liftEffect $ map hush diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 531ca89ed..0944e08bd 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -43,7 +43,7 @@ instance Show StartupFailure where show = genericShow data Event - = Ready + = Ready872 -- when cardano-testnet 8.7.2 is ready to go | Finished | Failed | StartupFailed StartupFailure diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index 979a01b11..c9f5e4e10 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -1,7 +1,7 @@ module Ctl.Internal.Testnet.Utils ( findNodeDirs + , waitForTestnet872Workdir , findTestnetPaths - , findTestnetWorkir , getNodePort , getRuntime , is811TestnetDirectoryName @@ -50,17 +50,30 @@ is811TestnetDirectoryName :: Int -> FilePath -> Boolean is811TestnetDirectoryName n = isJust <<< String.stripPrefix (Pattern $ "testnet-" <> show n <> "-test-") -findTestnetWorkir +find811TestnetWorkir :: { tmpdir :: FilePath, dirIdx :: Int } -> Effect (Maybe FilePath) -findTestnetWorkir { tmpdir, dirIdx } = +find811TestnetWorkir { tmpdir, dirIdx } = map (tmpdir <> _) <<< Array.find (is811TestnetDirectoryName dirIdx) <$> Node.FS.readdir tmpdir +waitForTestnet872Workdir + :: EventSource String -> { tmpdir :: FilePath } -> Aff { workdir :: FilePath } +waitForTestnet872Workdir src = map { workdir: _ } + <<< waitFor src + <<< parseTestnet872Workdir + +parseTestnet872Workdir :: { tmpdir :: FilePath } -> String -> Maybe FilePath +parseTestnet872Workdir { tmpdir } = String.stripPrefix + $ Pattern + $ " Workspace: " + <> tmpdir + <> "/" + parseEvent :: String -> Maybe Event parseEvent = case _ of -- we can't know this way when 8.1.1 cardano-testnet is ready - -- " forAll709 =" -> Just Ready -- forAll109 for 8.3.2 + " forAll109 =" -> Just Ready872 "Usage: cardano-testnet cardano [--num-pool-nodes COUNT]" -> Just $ StartupFailed SpawnFailed "Failed to start testnet." -> @@ -69,7 +82,7 @@ parseEvent = case _ of Just Finished _ -> Nothing -waitFor :: forall a. EventSource Event -> (Event -> Maybe a) -> Aff a +waitFor :: forall a e. EventSource e -> (e -> Maybe a) -> Aff a waitFor source f = flip tailRecM unit \_ -> do event <- waitForEvent source pure case f event of @@ -158,13 +171,13 @@ findNodeDirs { workdir } = ado subdirs <- Node.FS.readdir workdir in flip Array.mapMaybe subdirs \dirname -> ado - idx <- Int.fromString =<< node881 dirname + idx <- Int.fromString =<< node872 dirname in { idx, workdir: workdir <> dirname, name: dirname } where node881 x = String.stripPrefix (Pattern "node-bft") x <|> String.stripPrefix (Pattern "node-pool") x - node832 = String.stripPrefix (Pattern "node-spo") + node872 = String.stripPrefix (Pattern "node-spo") findTestnetPaths :: { workdir :: FilePath } -> Effect (Either Error TestnetPaths) @@ -172,8 +185,8 @@ findTestnetPaths { workdir } = runExceptT do let nodeConfigPath = workdir <> "configuration.yaml" firstNode811 = "socket/node-pool1" - firstNode832 = "socket/node-spo1" - nodeSocketPath = workdir <> firstNode811 + firstNode872 = "socket/node-spo1" + nodeSocketPath = workdir <> firstNode872 workdirExists <- lift $ Node.FS.exists workdir configPathExists <- lift $ Node.FS.exists nodeConfigPath socketPathExists <- lift $ Node.FS.exists nodeSocketPath @@ -185,7 +198,7 @@ findTestnetPaths { workdir } = runExceptT do "'configuration.yaml' not found in cardano-testnet working directory." unless socketPathExists do throwError $ error - $ firstNode811 + $ firstNode872 <> " not found in cardano-testnet working directory." nodeDirs <- lift $ findNodeDirs { workdir } pure From 45658c30485764e105180ae1133530162fab23e1 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sun, 9 Jun 2024 21:43:42 +0300 Subject: [PATCH 204/373] Resend initial funds to make Kupo see it --- test/Plutip.purs | 420 +++++++++++++++++++++++++++++++---------------- 1 file changed, 274 insertions(+), 146 deletions(-) diff --git a/test/Plutip.purs b/test/Plutip.purs index cf38070c9..e1051ee4b 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -4,67 +4,82 @@ module Test.Ctl.Plutip import Contract.Prelude -import Cardano.Types.Address as Cardano.Types +import Cardano.Plutus.Types.Address as Cardano.Plutus.Types.Address +import Cardano.Serialization.Lib as CSL +import Cardano.Types + ( Credential(PubKeyHashCredential) + , PaymentCredential(..) + , TransactionHash + ) +import Cardano.Types (NetworkId(TestnetId)) as Cardano.Types +import Cardano.Types.Address (Address, toBech32) as Cardano.Types +import Cardano.Types.Address as Cardano.Types.Address +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PrivateKey as Cardano.Type.PrivateKey +import Cardano.Types.PublicKey as Cardano.Types.PublicKey +import Contract.Config (PrivatePaymentKey) import Contract.Config as Config -import Contract.Monad (Contract, launchAff_, withContractEnv) -import Contract.Monad as Contract -import Contract.Prelude (Either(..), Maybe(..), for, for_, intercalate, isJust, length, liftAff, liftEffect, log, maybe, traverse) -import Contract.ProtocolParameters (getProtocolParameters) -import Contract.Staking (getPoolIds) -import Contract.Test.Plutip (PlutipConfig, defaultPlutipConfig, noWallet) -import Contract.Test.Utils (exitCode, interruptOnSignal) -import Contract.TextEnvelope (TextEnvelope(..), TextEnvelopeType(..), decodeTextEnvelope) -import Contract.Wallet (KeyWallet, getWalletAddresses, getWalletBalance, mkKeyWalletFromPrivateKeys, ownPaymentPubKeyHashes, withKeyWallet) -import Contract.Wallet.KeyFile (mkKeyWalletFromFiles, privatePaymentKeyFromTextEnvelope) -import Control.Monad.Error.Class (liftMaybe, throwError, try) -import Ctl.Internal.Contract.Monad (wrapQueryM) +import Contract.Monad (runContractInEnv) as Contract +import Contract.Test.Plutip (defaultPlutipConfig) +import Contract.Test.Utils + ( interruptOnSignal + ) +import Contract.TextEnvelope + ( TextEnvelope(..) + , TextEnvelopeType(..) + , decodeTextEnvelope + ) +import Contract.Transaction (awaitTxConfirmed) +import Contract.Utxos (utxosAt) +import Contract.Wallet + ( getWalletAddresses + , getWalletBalance + , mkKeyWalletFromPrivateKeys + , withKeyWallet + ) +import Contract.Wallet.Key (KeyWallet(..)) +import Contract.Wallet.KeyFile + ( privatePaymentKeyFromTextEnvelope + , privatePaymentKeyToFile + ) +import Control.Monad.Error.Class (liftMaybe) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), stop) -import Ctl.Internal.Plutip.Types (StopClusterResponse(StopClusterSuccess)) -import Ctl.Internal.Plutip.Utils (cleanupOnExit, onLine, tmpdir, waitForBeforeExit, waitForExit, waitForUncaughtException) +import Ctl.Internal.Plutip.Utils (EventSource, onLine, tmpdir) import Ctl.Internal.Testnet.Contract as Testnet.Contract -import Ctl.Internal.Testnet.Server (checkTestnet, redirectChannels, runTestnetTestPlan, startTestnet, stopTestnet, testTestnetContracts) +import Ctl.Internal.Testnet.Server + ( redirectChannels + ) import Ctl.Internal.Testnet.Server as Testnet -import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams, Event(..), LoggingFormat(..)) +import Ctl.Internal.Testnet.Types + ( CardanoTestnetStartupParams + ) import Ctl.Internal.Testnet.Types as Testnet.Types -import Ctl.Internal.Testnet.Utils (findTestnetPaths, onTestnetEvent, waitFor) -import Ctl.Internal.Types.ScriptLookups (ownPaymentPubKeyHash) +import Ctl.Internal.Testnet.Utils + ( waitFor + ) import Ctl.Internal.Wallet.KeyFile (privateStakeKeyFromTextEnvelope) +import Data.Array as Array +import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(..)) +import Data.String as String +import Data.UInt (UInt) +import Data.UInt as UInt import Effect (Effect) -import Effect.Aff (Aff, Milliseconds(Milliseconds), bracket, cancelWith, delay, effectCanceler, forkAff, killFiber, launchAff) +import Effect.Aff (Aff, launchAff) import Effect.Aff as Aff import Effect.Aff.Class (class MonadAff) -import Effect.Exception (Error, error, throw) +import Effect.Exception (Error, error) +import Effect.Random (randomInt) import Effect.Ref as Ref -import Mote (group, test) -import Mote.Monad (mapTest) -import Mote.TestPlanM (TestPlanM) -import Mote.TestPlanM as Utils import Node.Buffer as Node.Buffer -import Node.ChildProcess (kill) import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(..)) -import Node.FS.Aff (readTextFile, writeTextFile) +import Node.FS.Aff (mkdir, readTextFile) import Node.Path (FilePath) -import Node.Process as Process import Node.Stream as Node.Stream import Record as Record -import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration -import Test.Ctl.Plutip.Common (config) -import Test.Ctl.Plutip.Contract as Contract -import Test.Ctl.Plutip.Contract.Assert as Assert -import Test.Ctl.Plutip.Contract.ClusterParameters as ClusterParameters -import Test.Ctl.Plutip.Contract.Mnemonics as Mnemonics -import Test.Ctl.Plutip.Contract.OgmiosMempool as OgmiosMempool -import Test.Ctl.Plutip.ExUnits as ExUnits -import Test.Ctl.Plutip.Logging as Logging -import Test.Ctl.Plutip.SameWallets as SameWallets -import Test.Ctl.Plutip.UtxoDistribution as UtxoDistribution -import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface -import Test.Spec.Assertions (shouldSatisfy) -import Test.Spec.Runner (defaultConfig) foreign import readableFromBuffer :: Node.Buffer.Buffer -> Effect (Node.Stream.Readable ()) @@ -93,41 +108,142 @@ readGenesisStakingPkey path = do liftMaybe (error "Cannot decode genesis pkey from decoded envelope") $ privateStakeKeyFromTextEnvelope envelope' -askAddressFunds - :: { socketPath :: FilePath - , testnetMagic :: Int +allToConsolePrefixed + :: String + -> { stdout :: EventSource String + , stderr :: EventSource String } - -> Cardano.Types.Address -> Aff Unit -askAddressFunds { socketPath, testnetMagic } address = do - channels <- do - { stderr, stdout } <- execCardanoCli - [ "query" - , "utxo" +allToConsolePrefixed prefix channels = void $ redirectChannels channels + { stderrTo: + { console: Just $ "[" <> prefix <> "][stderr]" + , log: Nothing + } + , stdoutTo: + { console: Just $ "[" <> prefix <> "][stdout]" + , log: Nothing + } + } + +-- | Send lovelace from one address to another, requiring only one signature +sendFundsViaCardanoCli + :: { socketPath :: FilePath, testnetMagic :: Int } + -> { from :: + { txIn :: { hash :: String, id :: Int } + , privatePaymentKey :: PrivatePaymentKey + , verificationKeyHash :: String + , amount :: BigNum + } + , changeAddress :: String + , to :: { address :: String } + } + -> Aff TransactionHash +sendFundsViaCardanoCli { socketPath, testnetMagic } { from, changeAddress, to } = + do + -- every instance have it's own dir for temp files + workdir <- liftEffect do + tmp <- tmpdir + operationId <- show <$> randomInt 0 1000 + pure $ tmp <> "transaction-" <> operationId + let + keyFile = workdir <> "signature.skey" + txBodyFile = workdir <> "tx-body.json" + txFile = workdir <> "tx.json" + mkdir workdir + privatePaymentKeyToFile keyFile from.privatePaymentKey + { channels: buildTxChannel } <- execCardanoCli + [ "transaction" + , "build" + , "--socket-path" + , socketPath + , "--testnet-magic" + , show testnetMagic + , "--tx-in" + , from.txIn.hash <> "#" <> show from.txIn.id + , "--tx-out" + , to.address <> "+" <> BigNum.toString from.amount + , "--required-signer-hash" + , from.verificationKeyHash + , "--required-signer" + , keyFile + , "--change-address" + , changeAddress + , "--out-file" + , txBodyFile + ] + allToConsolePrefixed "cardano-cli/build-transaction" buildTxChannel + { channels: signTxChannel } <- execCardanoCli + [ "transaction" + , "sign" + , "--tx-body-file" + , txBodyFile + , "--signing-key-file" + , keyFile + , "--testnet-magic" + , show testnetMagic + , "--out-file" + , txFile + ] + allToConsolePrefixed "cardano-cli/sign-transaction" signTxChannel + { channels: txIdChannel } <- execCardanoCli + [ "transaction" + , "txid" + , "--tx-file" + , txFile + ] + allToConsolePrefixed "cardano-cli/transaction-id" txIdChannel + txHash <- waitFor txIdChannel.stdout Just -- the only output is a tx hash + { channels: submitTxChannel } <- execCardanoCli + [ "transaction" + , "submit" , "--socket-path" , socketPath , "--testnet-magic" , show testnetMagic - , "--address" - , Cardano.Types.toBech32 address + , "--tx-file" + , txFile ] - liftEffect - $ { stderr: _, stdout: _ } - <$> onLine stderr Just - <*> onLine stdout Just + allToConsolePrefixed "cardano-cli/submit-transaction" submitTxChannel + liftMaybe (error "Cannot parse tx hash") + $ map wrap + <<< CSL.fromBytes + =<< hexToByteArray txHash - void $ redirectChannels channels - { stderrTo: - { console: Just "[cardano-cli][stderr]" - , log: Just - "/home/alexey/cardano-transaction-lib/cardano-cli.stderr.log" - } - , stdoutTo: - { console: Just "[cardano-cli][stdout]" - , log: Just - "/home/alexey/cardano-transaction-lib/cardano-cli.stdout.log" - } - } +askAddressFunds + :: { socketPath :: FilePath + , testnetMagic :: Int + } + -> Cardano.Types.Address + -> Aff CardanoCliTxOutInfo +askAddressFunds { socketPath, testnetMagic } address = do + { channels } <- execCardanoCli + [ "query" + , "utxo" + , "--socket-path" + , socketPath + , "--testnet-magic" + , show testnetMagic + , "--address" + , Cardano.Types.toBech32 address + ] + allToConsolePrefixed "cardano-cli/query-utxo" channels + waitFor channels.stdout parseTxOut + +type CardanoCliTxOutInfo = + { txId :: TransactionHash, txOutId :: UInt, amount :: BigNum } + +parseTxOut :: String -> Maybe CardanoCliTxOutInfo +parseTxOut src = do + let + words = String.split (String.Pattern " ") src + nonEmptyWords = Array.take 3 $ Array.filter (not <<< String.null) words + { hash, id, amt } <- case nonEmptyWords of + [ hash, id, amt ] -> Just { hash, id, amt } + _ -> Nothing + txId <- map wrap <<< CSL.fromBytes =<< hexToByteArray hash + txOutId <- UInt.fromString id + amount <- BigNum.fromString amt + pure { txId, txOutId, amount } defaultStartupParams :: { | CardanoTestnetStartupParams () } defaultStartupParams = @@ -139,88 +255,95 @@ defaultStartupParams = -- Run with `npm run plutip-test` main :: Effect Unit main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do - - -- cleanupRef <- liftEffect $ Ref.new [] - -- _ <- cleanupOnExit cleanupRef - -- { paths, testnet: { process } } <- - -- Testnet.startTestnetCluster - -- Testnet.defaultStartupParams - -- cleanupRef - -- { kupoConfig: defaultPlutipConfig.kupoConfig - -- , ogmiosConfig: defaultPlutipConfig.ogmiosConfig - -- } - -- genesisPaths <- liftEffect - -- $ readGenesisKeyPaths {workdir: paths.testnetDirectory} - -- for genesisPaths $ readGenesisPkey <<< _.skey - -- log $ show $ "Parsed genesis keys: " <> show (isJust key) - -- - -- _ <- Testnet.Contract.runContract defaultPlutipConfig do - -- key <- - -- liftAff $ readGenesisPkey $ genesis1Path paths.testnetDirectory - -- let spo2 = mkKeyWalletFromPrivateKeys key Nothing let cfg = Record.union defaultStartupParams defaultPlutipConfig - _ <- Testnet.Contract.withContractEnv cfg \cluster env -> + _ <- Testnet.Contract.withContractEnv cfg \cluster env -> do + log "Running test contract" Contract.runContractInEnv env do + log "Inside" let Testnet.MkStartedTestnetCluster { paths } = cluster - addressesDir = paths.testnetDirectory <> "addresses" - delegatesDir = paths.testnetDirectory <> "shelley" <> - "delegate-keys" + v872utxoKeysDir = paths.testnetDirectory <> "utxo-keys" + + -- a new wallet to send initial lovelace to + newWallet <- do + newPk <- wrap <<< wrap <$> liftEffect CSL.privateKey_generateEd25519 + let + pkh = Cardano.Types.PublicKey.hash + $ Cardano.Type.PrivateKey.toPublicKey + $ unwrap newPk + wallet = mkKeyWalletFromPrivateKeys newPk Nothing + address <- + liftMaybe (error "Cannot convert Plutus address to Cardano address") + $ Cardano.Plutus.Types.Address.toCardano Cardano.Types.TestnetId + $ Cardano.Plutus.Types.Address.pubKeyHashAddress + (wrap $ wrap pkh) + Nothing + pure { pkh, wallet, address } + + let + -- | Creates wallet from a payment key in TextEnvelope of any .type as if it was private payment key type. + readHackWallet + :: forall m. MonadAff m => String -> Int -> m (String /\ KeyWallet) + readHackWallet name idx = liftAff do + let identifier = name <> show idx + wallet <- walletFromHackedKeys (identifier <> ".skey") Nothing + pure $ identifier /\ wallet - readWallet name n = liftAff do - wallet <- mkKeyWalletFromFiles - (name <> show n <> ".skey") - (Just $ name <> show n <> "-stake.skey") - pure $ (name <> show n) /\ wallet - readHackWallet :: forall m. MonadAff m => _ -> _ -> _ -> m (String /\ KeyWallet) - readHackWallet makeStakeKey name n = liftAff do - wallet <- walletFromHackedKeys - (name <> show n <> ".skey") - ( if makeStakeKey then Just $ name <> show n <> "-stake.skey" - else Nothing - ) - pure $ (name <> show n) /\ wallet walletFromHackedKeys payment staking = do pk <- readGenesisPkey payment sk <- traverse readGenesisStakingPkey staking pure $ mkKeyWalletFromPrivateKeys pk sk - -- (Just $ name <> show n <> "-stake.skey") - walletBalance walletName wallet = - withKeyWallet wallet do - log $ show {walletBalance: walletName} - addresses <- getWalletAddresses - for_ addresses $ liftAff <<< askAddressFunds + -- do something interesting with every utxo in utxo-keys + for_ [ 1, 2, 3 ] \idx -> do + walletName /\ wallet@(KeyWallet w) <- + readHackWallet (v872utxoKeysDir <> "utxo") idx + withKeyWallet wallet do + addresses <- getWalletAddresses + log + <<< show + <<< { wallet: walletName, initialBalanceViaKupo: _ } + =<< getWalletBalance + for_ addresses \addr -> do + { txId, txOutId } <- liftAff $ askAddressFunds { socketPath: paths.nodeSocketPath , testnetMagic: cfg.testnetMagic } + addr + ownPkh <- liftMaybe (error "Cannot get own pkh") + $ Cardano.Types.Address.getPaymentCredential addr + >>= case _ of + PaymentCredential (PubKeyHashCredential pkh) -> Just pkh + _ -> Nothing + log "Making makeTxViaCli args" + let + args = + { from: + { txIn: + { hash: byteArrayToHex $ CSL.toBytes $ unwrap txId + , id: UInt.toInt txOutId + } + , amount: BigNum.fromInt 300000000 + , privatePaymentKey: w.paymentKey + , verificationKeyHash: + byteArrayToHex $ CSL.toBytes $ unwrap ownPkh + } + , changeAddress: Cardano.Types.Address.toBech32 addr + , to: + { address: Cardano.Types.Address.toBech32 newWallet.address + } + } + log "Made makeTxViaCli args" + txHash <- liftAff $ sendFundsViaCardanoCli + { socketPath: paths.nodeSocketPath + , testnetMagic: cfg.testnetMagic + } + args + awaitTxConfirmed txHash + log "Confirmed" + log <<< show <<< { utxosAfterTx: _ } =<< utxosAt newWallet.address - -- log <<< show =<< ownPaymentPubKeyHashes - -- log <<< append "Balance: " <<< show =<< getWalletBalance - - for_ [ 1, 2 ] \n -> do - uncurry walletBalance =<< readWallet (addressesDir <> "pool-owner") n - uncurry walletBalance =<< readWallet (addressesDir <> "user") n - liftAff $ Aff.delay $ Milliseconds 8000.0 - for_ [ 1, 2, 3, 4 ] \n -> do - uncurry walletBalance =<< readHackWallet false (delegatesDir <> "delegate") n - for_ [ 1, 2 ] \n -> do - let nodeBft = "node-bft" <> show n - nodePool = "node-pool" <> show n - walletBalance nodeBft =<< liftAff - ( walletFromHackedKeys - ( paths.testnetDirectory <> nodeBft - <> "shelley" - <> "operator.skey" - ) - Nothing - ) - walletBalance nodePool =<< liftAff - ( walletFromHackedKeys - ( paths.testnetDirectory <> nodePool <> "owner.skey" - ) - Nothing - ) + pure unit -- log <<< show =<< getProtocolParameters -- log <<< show =<< getPoolIds @@ -252,9 +375,9 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do -- runTestnetTestPlan config SameWallets.suite -- ClusterParameters.runTest -configWithMaxExUnits :: PlutipConfig -configWithMaxExUnits = config - { clusterConfig = config.clusterConfig { raiseExUnitsToMax = true } } +-- configWithMaxExUnits :: PlutipConfig +-- configWithMaxExUnits = config +-- { clusterConfig = config.clusterConfig { raiseExUnitsToMax = true } } -- testStartTestnet:: TestPlanM (Aff Unit) Unit -- testStartTestnet = group "Server" do @@ -271,14 +394,16 @@ configWithMaxExUnits = config execCardanoCli :: Array String -> Aff - { stdout :: Node.Stream.Readable () - , stderr :: Node.Stream.Readable () + { channels :: + { stdout :: EventSource String + , stderr :: EventSource String + } , process :: Node.ChildProcess.ChildProcess } execCardanoCli params = Aff.makeAff \cont -> do processRef <- Ref.new Nothing let cmd = "cardano-cli " <> intercalate " " params - log $ show {execCardanoCli: cmd} + log $ show { execCardanoCli: cmd } process <- Node.ChildProcess.exec cmd Node.ChildProcess.defaultExecOptions @@ -288,10 +413,13 @@ execCardanoCli params = Aff.makeAff \cont -> do =<< Ref.read processRef stderrStream <- readableFromBuffer stderr :: Effect _ stdoutStream <- readableFromBuffer stdout + channels <- liftEffect + $ { stderr: _, stdout: _ } + <$> onLine stderrStream Just + <*> onLine stdoutStream Just let result = - { stderr: stderrStream - , stdout: stdoutStream + { channels , process } cont $ maybe (Right result) Left err From 16fa5204a7df4addd957af379851437ec58ff4d0 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sun, 9 Jun 2024 21:51:07 +0300 Subject: [PATCH 205/373] Refactor --- test/Plutip.purs | 68 +++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/test/Plutip.purs b/test/Plutip.purs index e1051ee4b..8b383b619 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -209,13 +209,14 @@ sendFundsViaCardanoCli { socketPath, testnetMagic } { from, changeAddress, to } <<< CSL.fromBytes =<< hexToByteArray txHash -askAddressFunds +-- | Queries address funds via cardano-cli and returns the first UTxO data. +queryUtxosViaCardanoCli :: { socketPath :: FilePath , testnetMagic :: Int } -> Cardano.Types.Address -> Aff CardanoCliTxOutInfo -askAddressFunds { socketPath, testnetMagic } address = do +queryUtxosViaCardanoCli { socketPath, testnetMagic } address = do { channels } <- execCardanoCli [ "query" , "utxo" @@ -281,6 +282,12 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do pure { pkh, wallet, address } let + getAddressPaymentPkh addr = liftMaybe (error "Cannot get own pkh") + $ Cardano.Types.Address.getPaymentCredential addr + >>= case _ of + PaymentCredential (PubKeyHashCredential pkh) -> Just pkh + _ -> Nothing + -- | Creates wallet from a payment key in TextEnvelope of any .type as if it was private payment key type. readHackWallet :: forall m. MonadAff m => String -> Int -> m (String /\ KeyWallet) @@ -299,51 +306,40 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do walletName /\ wallet@(KeyWallet w) <- readHackWallet (v872utxoKeysDir <> "utxo") idx withKeyWallet wallet do + let + nodeCfg = + { socketPath: paths.nodeSocketPath + , testnetMagic: cfg.testnetMagic + } addresses <- getWalletAddresses log <<< show <<< { wallet: walletName, initialBalanceViaKupo: _ } =<< getWalletBalance for_ addresses \addr -> do - { txId, txOutId } <- liftAff $ askAddressFunds - { socketPath: paths.nodeSocketPath - , testnetMagic: cfg.testnetMagic - } - addr - ownPkh <- liftMaybe (error "Cannot get own pkh") - $ Cardano.Types.Address.getPaymentCredential addr - >>= case _ of - PaymentCredential (PubKeyHashCredential pkh) -> Just pkh - _ -> Nothing - log "Making makeTxViaCli args" - let - args = - { from: - { txIn: - { hash: byteArrayToHex $ CSL.toBytes $ unwrap txId - , id: UInt.toInt txOutId - } - , amount: BigNum.fromInt 300000000 - , privatePaymentKey: w.paymentKey - , verificationKeyHash: - byteArrayToHex $ CSL.toBytes $ unwrap ownPkh - } - , changeAddress: Cardano.Types.Address.toBech32 addr - , to: - { address: Cardano.Types.Address.toBech32 newWallet.address - } - } - log "Made makeTxViaCli args" + ownPkh <- getAddressPaymentPkh addr + { txId, txOutId } <- liftAff $ queryUtxosViaCardanoCli nodeCfg addr + txHash <- liftAff $ sendFundsViaCardanoCli - { socketPath: paths.nodeSocketPath - , testnetMagic: cfg.testnetMagic + nodeCfg + { from: + { txIn: + { hash: byteArrayToHex $ CSL.toBytes $ unwrap txId + , id: UInt.toInt txOutId + } + , amount: BigNum.fromInt 300000000 + , privatePaymentKey: w.paymentKey + , verificationKeyHash: + byteArrayToHex $ CSL.toBytes $ unwrap ownPkh + } + , changeAddress: Cardano.Types.Address.toBech32 addr + , to: + { address: Cardano.Types.Address.toBech32 newWallet.address + } } - args awaitTxConfirmed txHash log "Confirmed" log <<< show <<< { utxosAfterTx: _ } =<< utxosAt newWallet.address - - pure unit -- log <<< show =<< getProtocolParameters -- log <<< show =<< getPoolIds From e3228613fd174c9fd462d9ebf8e606edf97ec418 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sun, 9 Jun 2024 21:54:51 +0300 Subject: [PATCH 206/373] Explain testing scenario --- test/Plutip.purs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/test/Plutip.purs b/test/Plutip.purs index 8b383b619..489352a26 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -312,14 +312,17 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do , testnetMagic: cfg.testnetMagic } addresses <- getWalletAddresses + -- it will show zero balance log <<< show <<< { wallet: walletName, initialBalanceViaKupo: _ } =<< getWalletBalance + -- so let's try to use cardano-cli to resend funds and then Kupo will see it for_ addresses \addr -> do ownPkh <- getAddressPaymentPkh addr + -- cardano-cli will show some funds { txId, txOutId } <- liftAff $ queryUtxosViaCardanoCli nodeCfg addr - + -- sending to the new wallet defined above txHash <- liftAff $ sendFundsViaCardanoCli nodeCfg { from: @@ -339,12 +342,8 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do } awaitTxConfirmed txHash log "Confirmed" + -- Kupo does see funds on the new wallet log <<< show <<< { utxosAfterTx: _ } =<< utxosAt newWallet.address - -- log <<< show =<< getProtocolParameters - -- log <<< show =<< getPoolIds - - -- startupFailureWaiting <- onStartupFailure source - -- (show >>> append "Failed to startup testnet: " >>> error >>> throwError) log <<< append "Tmp dir is: " =<< liftEffect tmpdir From 64cf389d2aa4200f5cd2137bb7d80a76157a8889 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Sun, 9 Jun 2024 22:02:08 +0300 Subject: [PATCH 207/373] Update hacked key reading fns --- test/Plutip.purs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/test/Plutip.purs b/test/Plutip.purs index 489352a26..02a77175d 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -84,28 +84,30 @@ import Record as Record foreign import readableFromBuffer :: Node.Buffer.Buffer -> Effect (Node.Stream.Readable ()) -readGenesisPkey :: FilePath -> Aff Config.PrivatePaymentKey -readGenesisPkey path = do +-- | Changes TextEnvelope type to match private payment key one and tries to read that. +readTextEnvelopeAsPaymentSkey :: FilePath -> Aff Config.PrivatePaymentKey +readTextEnvelopeAsPaymentSkey path = do TextEnvelope envelope <- - liftMaybe (error "Cannot decode genesis pkey envelope") + liftMaybe (error "Cannot decode skey envelope") <<< decodeTextEnvelope =<< readTextFile UTF8 path let envelope' = TextEnvelope (envelope { type_ = PaymentSigningKeyShelleyed25519 }) - liftMaybe (error "Cannot decode genesis pkey from decoded envelope") + liftMaybe (error "Cannot decode payment skey from decoded envelope") $ privatePaymentKeyFromTextEnvelope envelope' -readGenesisStakingPkey :: FilePath -> Aff Config.PrivateStakeKey -readGenesisStakingPkey path = do +-- | Changes TextEnvelope type to match private staking key one and tries to read that. +readTextEnvelopeAsStakingSkey :: FilePath -> Aff Config.PrivateStakeKey +readTextEnvelopeAsStakingSkey path = do TextEnvelope envelope <- - liftMaybe (error "Cannot decode genesis pkey envelope") + liftMaybe (error "Cannot decode skey envelope") <<< decodeTextEnvelope =<< readTextFile UTF8 path let envelope' = TextEnvelope (envelope { type_ = StakeSigningKeyShelleyed25519 }) - liftMaybe (error "Cannot decode genesis pkey from decoded envelope") + liftMaybe (error "Cannot decode staking skey from decoded envelope") $ privateStakeKeyFromTextEnvelope envelope' allToConsolePrefixed @@ -297,8 +299,8 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do pure $ identifier /\ wallet walletFromHackedKeys payment staking = do - pk <- readGenesisPkey payment - sk <- traverse readGenesisStakingPkey staking + pk <- readTextEnvelopeAsPaymentSkey payment + sk <- traverse readTextEnvelopeAsStakingSkey staking pure $ mkKeyWalletFromPrivateKeys pk sk -- do something interesting with every utxo in utxo-keys From 05eabddb48050ab5da427582ef49ea155765f787 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 11 Jun 2024 23:48:50 +0300 Subject: [PATCH 208/373] Depend on node-streams-aff --- spago-packages.nix | 12 ++++++++++++ spago.dhall | 1 + 2 files changed, 13 insertions(+) diff --git a/spago-packages.nix b/spago-packages.nix index 081d8d789..8b9d18b15 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -1001,6 +1001,18 @@ let installPhase = "ln -s $src $out"; }; + "node-streams-aff" = pkgs.stdenv.mkDerivation { + name = "node-streams-aff"; + version = "v4.0.1"; + src = pkgs.fetchgit { + url = "https://github.com/purescript-node/purescript-node-streams-aff.git"; + rev = "5c9b6937d14d6fed2273e3ac8780e3d256763e7d"; + sha256 = "1vm5s6mlawdpqamnqfyh1vbsybjm2s972m02h8mza4m47zlca948"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "node-url" = pkgs.stdenv.mkDerivation { name = "node-url"; version = "v6.0.0"; diff --git a/spago.dhall b/spago.dhall index 3fa172ac8..1282894ad 100644 --- a/spago.dhall +++ b/spago.dhall @@ -63,6 +63,7 @@ You can edit this file as you like. , "node-process" , "node-readline" , "node-streams" + , "node-streams-aff" , "nonempty" , "now" , "nullable" From 5c396cb73735657dba45af7eb9c003fba51f399e Mon Sep 17 00:00:00 2001 From: Renegatto Date: Tue, 11 Jun 2024 23:50:50 +0300 Subject: [PATCH 209/373] Complete utxosAt with cardanoCli to see genesis utxos --- src/Internal/CardanoCli.purs | 129 +++++++++++ src/Internal/Plutip/Spawn.js | 4 + src/Internal/Plutip/Spawn.purs | 49 ++++- test/Plutip.purs | 386 +++++++++++++++++---------------- 4 files changed, 376 insertions(+), 192 deletions(-) create mode 100644 src/Internal/CardanoCli.purs diff --git a/src/Internal/CardanoCli.purs b/src/Internal/CardanoCli.purs new file mode 100644 index 000000000..eaac631da --- /dev/null +++ b/src/Internal/CardanoCli.purs @@ -0,0 +1,129 @@ +module Internal.CardanoCli where + +import Contract.Prelude + +import Cardano.Serialization.Lib as CSL +import Cardano.Types as Cardano.Types +import Cardano.Types.Address as Cardano.Types.Address +import Cardano.Types.BigNum as BigNum +import Contract.Value as Contract.Value +import Control.Monad.Error.Class (liftMaybe) +import Control.Monad.Except (throwError) +import Control.Parallel (parallel, sequential) +import Ctl.Internal.Plutip.Spawn as Ctl.Internal.Plutip.Spawn +import Ctl.Internal.Plutip.Utils (annotateError) +import Data.Array as Array +import Data.ByteArray as Data.ByteArray +import Data.List as List +import Data.String as String +import Data.UInt (UInt) +import Data.UInt as UInt +import Effect.Exception (error) +import Node.Buffer as Node.Buffer +import Node.ChildProcess as Node.ChildProcess +import Node.Encoding as Node.Encoding +import Node.Path as Node.Path +import Node.Stream.Aff as Node.Stream.Aff + +type CardanoNodeInstance = + { socketPath :: Node.Path.FilePath + , testnetMagic :: Int + } + +cardanoCliTxOutInfoToUtxo + :: Cardano.Types.Address + -> CardanoCliTxOutInfo + -> Cardano.Types.TransactionInput /\ Cardano.Types.TransactionOutput +cardanoCliTxOutInfoToUtxo address { input: { txHash, txOutId }, amount } = + let + txIn = Cardano.Types.TransactionInput + { index: txOutId, transactionId: txHash } + txOut = Cardano.Types.TransactionOutput + { address + , amount: Contract.Value.coinToValue amount + , datum: Nothing + , scriptRef: Nothing + } + in + txIn /\ txOut + +type CardanoCliTxOutInfo = + { input :: + { txHash :: Cardano.Types.TransactionHash + , txOutId :: UInt + } + , amount :: Cardano.Types.Coin + } + +-- | A line of the CLI output of 'cardano-cli query utxo' containing utxo information +newtype CliUtxo = CliUtxo String + +parseTxOut :: CliUtxo -> Maybe CardanoCliTxOutInfo +parseTxOut (CliUtxo src) = do + let + words = String.split (String.Pattern " ") src + nonEmptyWords = Array.take 3 $ Array.filter (not <<< String.null) words + { hash, id, amt } <- case nonEmptyWords of + [ hash, id, amt ] -> Just { hash, id, amt } + _ -> Nothing + txHash <- map wrap <<< CSL.fromBytes =<< Data.ByteArray.hexToByteArray hash + txOutId <- UInt.fromString id + amount <- BigNum.fromString amt + pure { input: { txHash, txOutId }, amount: wrap amount } + +-- | Queries address funds via cardano-cli and returns the first UTxO data. +queryUtxosViaCardanoCli + :: CardanoNodeInstance + -> Cardano.Types.Address + -> Aff (Array CardanoCliTxOutInfo) +queryUtxosViaCardanoCli { socketPath, testnetMagic } address = + annotateError "queryUtxosViaCardanoCli" do + { stdout } <- execCardanoCli + [ "query" + , "utxo" + , "--socket-path" + , socketPath + , "--testnet-magic" + , show testnetMagic + , "--address" + , Cardano.Types.Address.toBech32 address + ] + case List.fromFoldable stdout of + List.Cons _ (List.Cons _ utxos) -> + map Array.fromFoldable + <<< liftMaybe (error $ "Cannot parse TxOuts" <> show utxos) + $ for utxos (parseTxOut <<< CliUtxo) + _ -> throwError $ error $ "Output is too short " <> show stdout + +execCardanoCli + :: Array String + -> Aff + { stdout :: Array String + , process :: Node.ChildProcess.ChildProcess + } +execCardanoCli params = annotateError "execCardanoCli" do + let cmd = "cardano-cli " <> intercalate " " params + log $ show { execCardanoCli: cmd } + { channels, process } <- Ctl.Internal.Plutip.Spawn.exec cmd + let + bufferToLines = + map (String.split (String.Pattern "\n") <<< String.trim) + <<< liftEffect + <<< Node.Buffer.toString Node.Encoding.UTF8 + output <- sequential ado + stderr <- parallel + $ map join + <<< traverse bufferToLines + <<< fst + =<< Node.Stream.Aff.readAll channels.stderr + stdout <- parallel + $ map join + $ traverse bufferToLines + <<< fst + =<< Node.Stream.Aff.readAll channels.stdout + in { stderr, stdout } + when (not $ Array.null output.stderr) do + throwError + $ error + $ intercalate "\n" output.stderr + pure { stdout: output.stdout, process } \ No newline at end of file diff --git a/src/Internal/Plutip/Spawn.js b/src/Internal/Plutip/Spawn.js index 93cba32e6..7fb83aad1 100644 --- a/src/Internal/Plutip/Spawn.js +++ b/src/Internal/Plutip/Spawn.js @@ -1,4 +1,5 @@ "use strict"; +import stream from "node:stream"; export function clearLineHandler(readline) { return () => { @@ -6,6 +7,9 @@ export function clearLineHandler(readline) { }; } +export const readableFromBuffer = buf => () => + stream.Readable.from(buf, { objectMode: false }); + import fs from "fs"; export function _rmdirSync(path) { diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Plutip/Spawn.purs index 66aa208e4..4fde5d965 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Plutip/Spawn.purs @@ -6,6 +6,7 @@ module Ctl.Internal.Plutip.Spawn , OnSignalRef , ManagedProcess(ManagedProcess) , spawn + , exec , stop , waitForStop , cleanupTmpDir @@ -18,7 +19,10 @@ module Ctl.Internal.Plutip.Spawn import Contract.Prelude -import Control.Monad.Error.Class (throwError) +import Control.Monad.Error.Class + ( liftMaybe + , throwError + ) import Ctl.Internal.Plutip.PortCheck (isPortAvailable) import Ctl.Internal.Plutip.Types (FilePath) import Data.Either (Either(Left)) @@ -33,6 +37,7 @@ import Effect (Effect) import Effect.AVar (AVar) import Effect.AVar (empty, tryPut) as AVar import Effect.Aff (Aff, Canceler(Canceler), makeAff) +import Effect.Aff as Aff import Effect.Aff.AVar (isEmpty, read, status) as AVar import Effect.Aff.Retry ( RetryPolicy @@ -43,6 +48,7 @@ import Effect.Aff.Retry import Effect.Class (liftEffect) import Effect.Exception (Error, error, throw) import Effect.Ref as Ref +import Node.Buffer as Node.Buffer import Node.ChildProcess ( ChildProcess , SpawnOptions @@ -52,6 +58,7 @@ import Node.ChildProcess import Node.ChildProcess as ChildProcess import Node.ChildProcess as Node.ChildProcess import Node.ReadLine (Interface, close, createInterface, setLineHandler) as RL +import Node.Stream as Node.Stream -- | Carry along an `AVar` which resolves when the process closes. -- | Necessary due to `child_process` having no way to query if a process has @@ -124,6 +131,46 @@ spawn' cmd args opts mbFilter cont = do pure $ Canceler $ const $ liftEffect $ kill SIGINT child +exec + :: String + -> Aff + { channels :: + { stdout :: Node.Stream.Readable () + , stderr :: Node.Stream.Readable () + } + , process :: Node.ChildProcess.ChildProcess + } +exec cmd = Aff.makeAff \cont -> do + processRef <- Ref.new Nothing + isCanceledRef <- Ref.new false + let + isCanceled = Ref.read isCanceledRef + markCanceled = Ref.write true isCanceledRef + log $ show { exec: cmd } + process <- Node.ChildProcess.exec + cmd + Node.ChildProcess.defaultExecOptions + ( \{ error: err, stderr, stdout } -> isCanceled >>= flip unless do + process <- + liftMaybe (error "Couldn't find executed process" :: Error) + =<< Ref.read processRef + stderrStream <- readableFromBuffer stderr + stdoutStream <- readableFromBuffer stdout + let + result = + { channels: { stderr: stderrStream, stdout: stdoutStream } + , process + } + cont $ maybe (Right result) Left err + ) + Ref.write (Just process) processRef + pure $ Aff.Canceler \err -> liftEffect do + markCanceled + cont $ Left err + +foreign import readableFromBuffer + :: Node.Buffer.Buffer -> Effect (Node.Stream.Readable ()) + foreign import clearLineHandler :: RL.Interface -> Effect Unit stop :: ManagedProcess -> Aff Unit diff --git a/test/Plutip.purs b/test/Plutip.purs index 02a77175d..6880796d2 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -5,21 +5,26 @@ module Test.Ctl.Plutip import Contract.Prelude import Cardano.Plutus.Types.Address as Cardano.Plutus.Types.Address +import Cardano.Plutus.Types.OutputDatum (OutputDatum(..)) import Cardano.Serialization.Lib as CSL import Cardano.Types ( Credential(PubKeyHashCredential) , PaymentCredential(..) , TransactionHash + , TransactionInput(..) ) -import Cardano.Types (NetworkId(TestnetId)) as Cardano.Types +import Cardano.Types as Cardano.Types import Cardano.Types.Address (Address, toBech32) as Cardano.Types import Cardano.Types.Address as Cardano.Types.Address import Cardano.Types.BigNum (BigNum) import Cardano.Types.BigNum as BigNum import Cardano.Types.PrivateKey as Cardano.Type.PrivateKey import Cardano.Types.PublicKey as Cardano.Types.PublicKey +import Contract.ClientError as Contract.ClientError import Contract.Config (PrivatePaymentKey) import Contract.Config as Config +import Contract.Log (logInfo) +import Contract.Monad (ContractEnv) import Contract.Monad (runContractInEnv) as Contract import Contract.Test.Plutip (defaultPlutipConfig) import Contract.Test.Utils @@ -32,6 +37,12 @@ import Contract.TextEnvelope ) import Contract.Transaction (awaitTxConfirmed) import Contract.Utxos (utxosAt) +import Contract.Value + ( Coin(..) + , coinToValue + , valueToCoin + ) +import Contract.Value as Contract.Value import Contract.Wallet ( getWalletAddresses , getWalletBalance @@ -43,9 +54,29 @@ import Contract.Wallet.KeyFile ( privatePaymentKeyFromTextEnvelope , privatePaymentKeyToFile ) -import Control.Monad.Error.Class (liftMaybe) +import Control.Bind (bindFlipped) +import Control.Monad.Error.Class + ( liftMaybe + , throwError + , try + ) +import Control.Monad.Except + ( ExceptT(..) + , lift + , runExceptT + ) +import Control.Monad.Reader (local) +import Control.Parallel + ( parallel + , sequential + ) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Utils (EventSource, onLine, tmpdir) +import Ctl.Internal.Plutip.Utils + ( EventSource + , annotateError + , onLine + , tmpdir + ) import Ctl.Internal.Testnet.Contract as Testnet.Contract import Ctl.Internal.Testnet.Server ( redirectChannels @@ -55,12 +86,15 @@ import Ctl.Internal.Testnet.Types ( CardanoTestnetStartupParams ) import Ctl.Internal.Testnet.Types as Testnet.Types -import Ctl.Internal.Testnet.Utils - ( waitFor - ) +import Ctl.Internal.Testnet.Utils (waitFor) import Ctl.Internal.Wallet.KeyFile (privateStakeKeyFromTextEnvelope) import Data.Array as Array +import Data.Bifunctor (bimap, lmap) import Data.ByteArray (byteArrayToHex, hexToByteArray) +import Data.Lens (Lens', (%~)) +import Data.Lens.Record (prop) +import Data.List as List +import Data.Map as Map import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(..)) import Data.String as String @@ -70,19 +104,21 @@ import Effect (Effect) import Effect.Aff (Aff, launchAff) import Effect.Aff as Aff import Effect.Aff.Class (class MonadAff) -import Effect.Exception (Error, error) +import Effect.Exception (Error, error, message) +import Effect.Exception.Unsafe (unsafeThrow) import Effect.Random (randomInt) import Effect.Ref as Ref +import Internal.CardanoCli as CardanoCli import Node.Buffer as Node.Buffer import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(..)) import Node.FS.Aff (mkdir, readTextFile) import Node.Path (FilePath) +import Node.Stream (Readable) import Node.Stream as Node.Stream +import Node.Stream.Aff as Node.Stream.Aff import Record as Record - -foreign import readableFromBuffer - :: Node.Buffer.Buffer -> Effect (Node.Stream.Readable ()) +import Type.Proxy (Proxy(..)) -- | Changes TextEnvelope type to match private payment key one and tries to read that. readTextEnvelopeAsPaymentSkey :: FilePath -> Aff Config.PrivatePaymentKey @@ -128,125 +164,119 @@ allToConsolePrefixed prefix channels = void $ redirectChannels channels } -- | Send lovelace from one address to another, requiring only one signature -sendFundsViaCardanoCli - :: { socketPath :: FilePath, testnetMagic :: Int } - -> { from :: - { txIn :: { hash :: String, id :: Int } - , privatePaymentKey :: PrivatePaymentKey - , verificationKeyHash :: String - , amount :: BigNum - } - , changeAddress :: String - , to :: { address :: String } - } - -> Aff TransactionHash -sendFundsViaCardanoCli { socketPath, testnetMagic } { from, changeAddress, to } = - do - -- every instance have it's own dir for temp files - workdir <- liftEffect do - tmp <- tmpdir - operationId <- show <$> randomInt 0 1000 - pure $ tmp <> "transaction-" <> operationId - let - keyFile = workdir <> "signature.skey" - txBodyFile = workdir <> "tx-body.json" - txFile = workdir <> "tx.json" - mkdir workdir - privatePaymentKeyToFile keyFile from.privatePaymentKey - { channels: buildTxChannel } <- execCardanoCli - [ "transaction" - , "build" - , "--socket-path" - , socketPath - , "--testnet-magic" - , show testnetMagic - , "--tx-in" - , from.txIn.hash <> "#" <> show from.txIn.id - , "--tx-out" - , to.address <> "+" <> BigNum.toString from.amount - , "--required-signer-hash" - , from.verificationKeyHash - , "--required-signer" - , keyFile - , "--change-address" - , changeAddress - , "--out-file" - , txBodyFile - ] - allToConsolePrefixed "cardano-cli/build-transaction" buildTxChannel - { channels: signTxChannel } <- execCardanoCli - [ "transaction" - , "sign" - , "--tx-body-file" - , txBodyFile - , "--signing-key-file" - , keyFile - , "--testnet-magic" - , show testnetMagic - , "--out-file" - , txFile - ] - allToConsolePrefixed "cardano-cli/sign-transaction" signTxChannel - { channels: txIdChannel } <- execCardanoCli - [ "transaction" - , "txid" - , "--tx-file" - , txFile - ] - allToConsolePrefixed "cardano-cli/transaction-id" txIdChannel - txHash <- waitFor txIdChannel.stdout Just -- the only output is a tx hash - { channels: submitTxChannel } <- execCardanoCli - [ "transaction" - , "submit" - , "--socket-path" - , socketPath - , "--testnet-magic" - , show testnetMagic - , "--tx-file" - , txFile - ] - allToConsolePrefixed "cardano-cli/submit-transaction" submitTxChannel - liftMaybe (error "Cannot parse tx hash") - $ map wrap - <<< CSL.fromBytes - =<< hexToByteArray txHash +-- sendFundsViaCardanoCli +-- :: { socketPath :: FilePath, testnetMagic :: Int } +-- -> { from :: +-- { txIn :: { hash :: String, id :: Int } +-- , privatePaymentKey :: PrivatePaymentKey +-- , verificationKeyHash :: String +-- , amount :: BigNum +-- } +-- , changeAddress :: String +-- , to :: { address :: String } +-- } +-- -> Aff TransactionHash +-- sendFundsViaCardanoCli { socketPath, testnetMagic } { from, changeAddress, to } = +-- do +-- -- every instance have it's own dir for temp files +-- workdir <- liftEffect do +-- tmp <- tmpdir +-- operationId <- show <$> randomInt 0 1000 +-- pure $ tmp <> "transaction-" <> operationId +-- let +-- keyFile = workdir <> "signature.skey" +-- txBodyFile = workdir <> "tx-body.json" +-- txFile = workdir <> "tx.json" +-- mkdir workdir +-- privatePaymentKeyToFile keyFile from.privatePaymentKey +-- do +-- { stdout } <- execCardanoCli +-- [ "transaction" +-- , "build" +-- , "--socket-path" +-- , socketPath +-- , "--testnet-magic" +-- , show testnetMagic +-- , "--tx-in" +-- , from.txIn.hash <> "#" <> show from.txIn.id +-- , "--tx-out" +-- , to.address <> "+" <> BigNum.toString from.amount +-- , "--required-signer-hash" +-- , from.verificationKeyHash +-- , "--required-signer" +-- , keyFile +-- , "--change-address" +-- , changeAddress +-- , "--out-file" +-- , txBodyFile +-- ] +-- for_ stdout $ log <<< append "cardano-cli/build-transaction" +-- do +-- { stdout } <- execCardanoCli +-- [ "transaction" +-- , "sign" +-- , "--tx-body-file" +-- , txBodyFile +-- , "--signing-key-file" +-- , keyFile +-- , "--testnet-magic" +-- , show testnetMagic +-- , "--out-file" +-- , txFile +-- ] +-- for_ stdout $ log <<< append "cardano-cli/sign-transaction" +-- txHash <- do +-- { stdout } <- execCardanoCli +-- [ "transaction" +-- , "txid" +-- , "--tx-file" +-- , txFile +-- ] +-- txHash <- case stdout of +-- [txHash] -> pure txHash +-- _ -> throwError $ error $ "cardano-cli/tx-hash: wrong output lines: " <> show stdout +-- liftMaybe (error "Cannot parse tx hash") +-- $ map wrap +-- <<< CSL.fromBytes +-- =<< hexToByteArray txHash +-- do +-- { stdout } <- execCardanoCli +-- [ "transaction" +-- , "submit" +-- , "--socket-path" +-- , socketPath +-- , "--testnet-magic" +-- , show testnetMagic +-- , "--tx-file" +-- , txFile +-- ] +-- for_ stdout $ log <<< append "cardano-cli/submit-transaction" +-- pure txHash --- | Queries address funds via cardano-cli and returns the first UTxO data. -queryUtxosViaCardanoCli - :: { socketPath :: FilePath - , testnetMagic :: Int - } - -> Cardano.Types.Address - -> Aff CardanoCliTxOutInfo -queryUtxosViaCardanoCli { socketPath, testnetMagic } address = do - { channels } <- execCardanoCli - [ "query" - , "utxo" - , "--socket-path" - , socketPath - , "--testnet-magic" - , show testnetMagic - , "--address" - , Cardano.Types.toBech32 address - ] - allToConsolePrefixed "cardano-cli/query-utxo" channels - waitFor channels.stdout parseTxOut +--unsafeThrow "asdfsadf" -type CardanoCliTxOutInfo = - { txId :: TransactionHash, txOutId :: UInt, amount :: BigNum } +type UtxosAtQuery = + Cardano.Types.Address + -> Aff (Either Contract.ClientError.ClientError Cardano.Types.UtxoMap) -parseTxOut :: String -> Maybe CardanoCliTxOutInfo -parseTxOut src = do +utxosAtWithCardanoCli + :: CardanoCli.CardanoNodeInstance + -> UtxosAtQuery + -> UtxosAtQuery +utxosAtWithCardanoCli node utxosAt address = runExceptT do let - words = String.split (String.Pattern " ") src - nonEmptyWords = Array.take 3 $ Array.filter (not <<< String.null) words - { hash, id, amt } <- case nonEmptyWords of - [ hash, id, amt ] -> Just { hash, id, amt } - _ -> Nothing - txId <- map wrap <<< CSL.fromBytes =<< hexToByteArray hash - txOutId <- UInt.fromString id - amount <- BigNum.fromString amt - pure { txId, txOutId, amount } + toCliError :: Error -> Contract.ClientError.ClientError + toCliError = Contract.ClientError.ClientOtherError <<< message + + toUtxoMap :: Array CardanoCli.CardanoCliTxOutInfo -> Cardano.Types.UtxoMap + toUtxoMap = Map.fromFoldable + <<< map (CardanoCli.cardanoCliTxOutInfoToUtxo address) + cardanoCliUtxos <- ExceptT + $ map (bimap toCliError toUtxoMap) + $ try + $ CardanoCli.queryUtxosViaCardanoCli node address + kupoUtxos <- ExceptT $ utxosAt address + pure $ Map.union kupoUtxos cardanoCliUtxos defaultStartupParams :: { | CardanoTestnetStartupParams () } defaultStartupParams = @@ -284,11 +314,11 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do pure { pkh, wallet, address } let - getAddressPaymentPkh addr = liftMaybe (error "Cannot get own pkh") - $ Cardano.Types.Address.getPaymentCredential addr - >>= case _ of - PaymentCredential (PubKeyHashCredential pkh) -> Just pkh - _ -> Nothing + -- getAddressPaymentPkh addr = liftMaybe (error "Cannot get own pkh") + -- $ Cardano.Types.Address.getPaymentCredential addr + -- >>= case _ of + -- PaymentCredential (PubKeyHashCredential pkh) -> Just pkh + -- _ -> Nothing -- | Creates wallet from a payment key in TextEnvelope of any .type as if it was private payment key type. readHackWallet @@ -320,35 +350,44 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do <<< { wallet: walletName, initialBalanceViaKupo: _ } =<< getWalletBalance -- so let's try to use cardano-cli to resend funds and then Kupo will see it - for_ addresses \addr -> do - ownPkh <- getAddressPaymentPkh addr - -- cardano-cli will show some funds - { txId, txOutId } <- liftAff $ queryUtxosViaCardanoCli nodeCfg addr - -- sending to the new wallet defined above - txHash <- liftAff $ sendFundsViaCardanoCli - nodeCfg - { from: - { txIn: - { hash: byteArrayToHex $ CSL.toBytes $ unwrap txId - , id: UInt.toInt txOutId - } - , amount: BigNum.fromInt 300000000 - , privatePaymentKey: w.paymentKey - , verificationKeyHash: - byteArrayToHex $ CSL.toBytes $ unwrap ownPkh - } - , changeAddress: Cardano.Types.Address.toBech32 addr - , to: - { address: Cardano.Types.Address.toBech32 newWallet.address - } - } - awaitTxConfirmed txHash - log "Confirmed" - -- Kupo does see funds on the new wallet - log <<< show <<< { utxosAfterTx: _ } =<< utxosAt newWallet.address + -- genesisUtxos <- for addresses \addr -> do + -- ownPkh <- getAddressPaymentPkh addr + -- -- cardano-cli will show some funds + -- utxo@{ txId, txOutId } <- liftAff $ queryUtxosViaCardanoCli nodeCfg addr >>= case _ of + -- [utxo] -> pure utxo + -- _ -> throwError $ error "Expected exactly one genesis UTxO" + -- pure $ addr /\ utxo + -- -- sending to the new wallet defined above + -- txHash <- liftAff $ sendFundsViaCardanoCli + -- nodeCfg + -- { from: + -- { txIn: + -- { hash: byteArrayToHex $ CSL.toBytes $ unwrap txId + -- , id: UInt.toInt txOutId + -- } + -- , amount: BigNum.fromInt 300000000 + -- , privatePaymentKey: w.paymentKey + -- , verificationKeyHash: + -- byteArrayToHex $ CSL.toBytes $ unwrap ownPkh + -- } + -- , changeAddress: Cardano.Types.Address.toBech32 addr + -- , to: + -- { address: Cardano.Types.Address.toBech32 newWallet.address + -- } + -- } + -- awaitTxConfirmed txHash + -- log "Confirmed" + -- Kupo does see funds on the new wallet + local (utxosAtL %~ utxosAtWithCardanoCli nodeCfg) do + log <<< show <<< { utxosAfterTx: _ } <<< map valueToCoin =<< + getWalletBalance -- utxosAt newWallet.address log <<< append "Tmp dir is: " =<< liftEffect tmpdir +-- | txos +utxosAtL :: Lens' ContractEnv UtxosAtQuery +utxosAtL = prop (Proxy :: _ "handle") <<< prop (Proxy :: _ "utxosAt") + -- flip cancelWith (effectCanceler (exitCode 1)) do -- Utils.interpretWithConfig -- defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } @@ -388,38 +427,3 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do -- StopClusterSuccess -> true -- _ -> false -execCardanoCli - :: Array String - -> Aff - { channels :: - { stdout :: EventSource String - , stderr :: EventSource String - } - , process :: Node.ChildProcess.ChildProcess - } -execCardanoCli params = Aff.makeAff \cont -> do - processRef <- Ref.new Nothing - let cmd = "cardano-cli " <> intercalate " " params - log $ show { execCardanoCli: cmd } - process <- Node.ChildProcess.exec - cmd - Node.ChildProcess.defaultExecOptions - ( \{ error: err, stderr, stdout } -> do - process <- - liftMaybe (error "Couldn't find executed process" :: Error) - =<< Ref.read processRef - stderrStream <- readableFromBuffer stderr :: Effect _ - stdoutStream <- readableFromBuffer stdout - channels <- liftEffect - $ { stderr: _, stdout: _ } - <$> onLine stderrStream Just - <*> onLine stdoutStream Just - let - result = - { channels - , process - } - cont $ maybe (Right result) Left err - ) - Ref.write (Just process) processRef - pure $ Aff.Canceler \err -> liftEffect $ cont $ Left err \ No newline at end of file From 1a84153176367473172497bb619db3d4e51f535d Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 12 Jun 2024 00:19:33 +0300 Subject: [PATCH 210/373] Implement newWallet for making initial distribution --- test/Plutip.js | 4 - test/Plutip.purs | 266 +++++++++-------------------------------------- 2 files changed, 51 insertions(+), 219 deletions(-) delete mode 100644 test/Plutip.js diff --git a/test/Plutip.js b/test/Plutip.js deleted file mode 100644 index 0f8a22182..000000000 --- a/test/Plutip.js +++ /dev/null @@ -1,4 +0,0 @@ -import stream from "node:stream"; - -export const readableFromBuffer = buf => () => - stream.Readable.from(buf, { objectMode: false }); diff --git a/test/Plutip.purs b/test/Plutip.purs index 6880796d2..28227a011 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -4,26 +4,13 @@ module Test.Ctl.Plutip import Contract.Prelude -import Cardano.Plutus.Types.Address as Cardano.Plutus.Types.Address -import Cardano.Plutus.Types.OutputDatum (OutputDatum(..)) import Cardano.Serialization.Lib as CSL -import Cardano.Types - ( Credential(PubKeyHashCredential) - , PaymentCredential(..) - , TransactionHash - , TransactionInput(..) - ) import Cardano.Types as Cardano.Types -import Cardano.Types.Address (Address, toBech32) as Cardano.Types import Cardano.Types.Address as Cardano.Types.Address -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum as BigNum import Cardano.Types.PrivateKey as Cardano.Type.PrivateKey import Cardano.Types.PublicKey as Cardano.Types.PublicKey import Contract.ClientError as Contract.ClientError -import Contract.Config (PrivatePaymentKey) import Contract.Config as Config -import Contract.Log (logInfo) import Contract.Monad (ContractEnv) import Contract.Monad (runContractInEnv) as Contract import Contract.Test.Plutip (defaultPlutipConfig) @@ -35,88 +22,52 @@ import Contract.TextEnvelope , TextEnvelopeType(..) , decodeTextEnvelope ) -import Contract.Transaction (awaitTxConfirmed) -import Contract.Utxos (utxosAt) import Contract.Value - ( Coin(..) - , coinToValue - , valueToCoin + ( valueToCoin ) -import Contract.Value as Contract.Value import Contract.Wallet - ( getWalletAddresses - , getWalletBalance + ( getWalletBalance , mkKeyWalletFromPrivateKeys , withKeyWallet ) -import Contract.Wallet.Key (KeyWallet(..)) import Contract.Wallet.KeyFile ( privatePaymentKeyFromTextEnvelope - , privatePaymentKeyToFile ) -import Control.Bind (bindFlipped) import Control.Monad.Error.Class ( liftMaybe - , throwError , try ) import Control.Monad.Except ( ExceptT(..) - , lift , runExceptT ) import Control.Monad.Reader (local) -import Control.Parallel - ( parallel - , sequential - ) import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Plutip.Utils - ( EventSource - , annotateError - , onLine - , tmpdir + ( tmpdir ) import Ctl.Internal.Testnet.Contract as Testnet.Contract -import Ctl.Internal.Testnet.Server - ( redirectChannels - ) import Ctl.Internal.Testnet.Server as Testnet import Ctl.Internal.Testnet.Types ( CardanoTestnetStartupParams ) import Ctl.Internal.Testnet.Types as Testnet.Types -import Ctl.Internal.Testnet.Utils (waitFor) +import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) import Ctl.Internal.Wallet.KeyFile (privateStakeKeyFromTextEnvelope) -import Data.Array as Array -import Data.Bifunctor (bimap, lmap) -import Data.ByteArray (byteArrayToHex, hexToByteArray) +import Data.Bifunctor (bimap) import Data.Lens (Lens', (%~)) import Data.Lens.Record (prop) -import Data.List as List import Data.Map as Map import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(..)) -import Data.String as String -import Data.UInt (UInt) -import Data.UInt as UInt import Effect (Effect) import Effect.Aff (Aff, launchAff) -import Effect.Aff as Aff import Effect.Aff.Class (class MonadAff) import Effect.Exception (Error, error, message) -import Effect.Exception.Unsafe (unsafeThrow) -import Effect.Random (randomInt) -import Effect.Ref as Ref import Internal.CardanoCli as CardanoCli -import Node.Buffer as Node.Buffer -import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(..)) -import Node.FS.Aff (mkdir, readTextFile) +import Node.FS.Aff (readTextFile) import Node.Path (FilePath) -import Node.Stream (Readable) -import Node.Stream as Node.Stream -import Node.Stream.Aff as Node.Stream.Aff import Record as Record import Type.Proxy (Proxy(..)) @@ -146,115 +97,6 @@ readTextEnvelopeAsStakingSkey path = do liftMaybe (error "Cannot decode staking skey from decoded envelope") $ privateStakeKeyFromTextEnvelope envelope' -allToConsolePrefixed - :: String - -> { stdout :: EventSource String - , stderr :: EventSource String - } - -> Aff Unit -allToConsolePrefixed prefix channels = void $ redirectChannels channels - { stderrTo: - { console: Just $ "[" <> prefix <> "][stderr]" - , log: Nothing - } - , stdoutTo: - { console: Just $ "[" <> prefix <> "][stdout]" - , log: Nothing - } - } - --- | Send lovelace from one address to another, requiring only one signature --- sendFundsViaCardanoCli --- :: { socketPath :: FilePath, testnetMagic :: Int } --- -> { from :: --- { txIn :: { hash :: String, id :: Int } --- , privatePaymentKey :: PrivatePaymentKey --- , verificationKeyHash :: String --- , amount :: BigNum --- } --- , changeAddress :: String --- , to :: { address :: String } --- } --- -> Aff TransactionHash --- sendFundsViaCardanoCli { socketPath, testnetMagic } { from, changeAddress, to } = --- do --- -- every instance have it's own dir for temp files --- workdir <- liftEffect do --- tmp <- tmpdir --- operationId <- show <$> randomInt 0 1000 --- pure $ tmp <> "transaction-" <> operationId --- let --- keyFile = workdir <> "signature.skey" --- txBodyFile = workdir <> "tx-body.json" --- txFile = workdir <> "tx.json" --- mkdir workdir --- privatePaymentKeyToFile keyFile from.privatePaymentKey --- do --- { stdout } <- execCardanoCli --- [ "transaction" --- , "build" --- , "--socket-path" --- , socketPath --- , "--testnet-magic" --- , show testnetMagic --- , "--tx-in" --- , from.txIn.hash <> "#" <> show from.txIn.id --- , "--tx-out" --- , to.address <> "+" <> BigNum.toString from.amount --- , "--required-signer-hash" --- , from.verificationKeyHash --- , "--required-signer" --- , keyFile --- , "--change-address" --- , changeAddress --- , "--out-file" --- , txBodyFile --- ] --- for_ stdout $ log <<< append "cardano-cli/build-transaction" --- do --- { stdout } <- execCardanoCli --- [ "transaction" --- , "sign" --- , "--tx-body-file" --- , txBodyFile --- , "--signing-key-file" --- , keyFile --- , "--testnet-magic" --- , show testnetMagic --- , "--out-file" --- , txFile --- ] --- for_ stdout $ log <<< append "cardano-cli/sign-transaction" --- txHash <- do --- { stdout } <- execCardanoCli --- [ "transaction" --- , "txid" --- , "--tx-file" --- , txFile --- ] --- txHash <- case stdout of --- [txHash] -> pure txHash --- _ -> throwError $ error $ "cardano-cli/tx-hash: wrong output lines: " <> show stdout --- liftMaybe (error "Cannot parse tx hash") --- $ map wrap --- <<< CSL.fromBytes --- =<< hexToByteArray txHash --- do --- { stdout } <- execCardanoCli --- [ "transaction" --- , "submit" --- , "--socket-path" --- , socketPath --- , "--testnet-magic" --- , show testnetMagic --- , "--tx-file" --- , txFile --- ] --- for_ stdout $ log <<< append "cardano-cli/submit-transaction" --- pure txHash - ---unsafeThrow "asdfsadf" - type UtxosAtQuery = Cardano.Types.Address -> Aff (Either Contract.ClientError.ClientError Cardano.Types.UtxoMap) @@ -285,6 +127,48 @@ defaultStartupParams = ) { nodeLoggingFormat = Just Testnet.Types.LogAsJson } +newWallet :: Effect KeyWallet +newWallet = ado + paymentSkey <- wrap <$> genSkey + stakingSkey <- wrap <$> genSkey + in mkKeyWalletFromPrivateKeys paymentSkey (Just stakingSkey) + where + genSkey = wrap <$> CSL.privateKey_generateEd25519 + +walletInfo + :: Cardano.Types.NetworkId + -> KeyWallet + -> { address :: Cardano.Types.Address + , paymentPubKeyHash :: Cardano.Types.PaymentPubKeyHash + , stakePubKeyHash :: Maybe Cardano.Types.StakePubKeyHash + } +walletInfo network (KeyWallet wallet) = + let + privateKeyToPkh = + Cardano.Types.PublicKey.hash + <<< Cardano.Type.PrivateKey.toPublicKey + + paymentPubKeyHash :: Cardano.Types.PaymentPubKeyHash + paymentPubKeyHash = + wrap $ privateKeyToPkh $ unwrap wallet.paymentKey + + stakePubKeyHash :: Maybe Cardano.Types.StakePubKeyHash + stakePubKeyHash = + wrap <<< privateKeyToPkh <<< unwrap <$> wallet.stakeKey + address = + Cardano.Types.Address.mkPaymentAddress + network + (wrap $ Cardano.Types.PubKeyHashCredential $ unwrap paymentPubKeyHash) + $ wrap + <<< Cardano.Types.PubKeyHashCredential + <<< unwrap + <$> stakePubKeyHash + in + { paymentPubKeyHash + , stakePubKeyHash + , address + } + -- Run with `npm run plutip-test` main :: Effect Unit main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do @@ -298,28 +182,8 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do v872utxoKeysDir = paths.testnetDirectory <> "utxo-keys" -- a new wallet to send initial lovelace to - newWallet <- do - newPk <- wrap <<< wrap <$> liftEffect CSL.privateKey_generateEd25519 - let - pkh = Cardano.Types.PublicKey.hash - $ Cardano.Type.PrivateKey.toPublicKey - $ unwrap newPk - wallet = mkKeyWalletFromPrivateKeys newPk Nothing - address <- - liftMaybe (error "Cannot convert Plutus address to Cardano address") - $ Cardano.Plutus.Types.Address.toCardano Cardano.Types.TestnetId - $ Cardano.Plutus.Types.Address.pubKeyHashAddress - (wrap $ wrap pkh) - Nothing - pure { pkh, wallet, address } let - -- getAddressPaymentPkh addr = liftMaybe (error "Cannot get own pkh") - -- $ Cardano.Types.Address.getPaymentCredential addr - -- >>= case _ of - -- PaymentCredential (PubKeyHashCredential pkh) -> Just pkh - -- _ -> Nothing - -- | Creates wallet from a payment key in TextEnvelope of any .type as if it was private payment key type. readHackWallet :: forall m. MonadAff m => String -> Int -> m (String /\ KeyWallet) @@ -335,7 +199,7 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do -- do something interesting with every utxo in utxo-keys for_ [ 1, 2, 3 ] \idx -> do - walletName /\ wallet@(KeyWallet w) <- + walletName /\ wallet <- readHackWallet (v872utxoKeysDir <> "utxo") idx withKeyWallet wallet do let @@ -343,41 +207,13 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do { socketPath: paths.nodeSocketPath , testnetMagic: cfg.testnetMagic } - addresses <- getWalletAddresses -- it will show zero balance log <<< show <<< { wallet: walletName, initialBalanceViaKupo: _ } =<< getWalletBalance - -- so let's try to use cardano-cli to resend funds and then Kupo will see it - -- genesisUtxos <- for addresses \addr -> do - -- ownPkh <- getAddressPaymentPkh addr - -- -- cardano-cli will show some funds - -- utxo@{ txId, txOutId } <- liftAff $ queryUtxosViaCardanoCli nodeCfg addr >>= case _ of - -- [utxo] -> pure utxo - -- _ -> throwError $ error "Expected exactly one genesis UTxO" - -- pure $ addr /\ utxo - -- -- sending to the new wallet defined above - -- txHash <- liftAff $ sendFundsViaCardanoCli - -- nodeCfg - -- { from: - -- { txIn: - -- { hash: byteArrayToHex $ CSL.toBytes $ unwrap txId - -- , id: UInt.toInt txOutId - -- } - -- , amount: BigNum.fromInt 300000000 - -- , privatePaymentKey: w.paymentKey - -- , verificationKeyHash: - -- byteArrayToHex $ CSL.toBytes $ unwrap ownPkh - -- } - -- , changeAddress: Cardano.Types.Address.toBech32 addr - -- , to: - -- { address: Cardano.Types.Address.toBech32 newWallet.address - -- } - -- } - -- awaitTxConfirmed txHash - -- log "Confirmed" - -- Kupo does see funds on the new wallet + + -- we can see genesis utxos when add cardano-cli query results to utxosAt local (utxosAtL %~ utxosAtWithCardanoCli nodeCfg) do log <<< show <<< { utxosAfterTx: _ } <<< map valueToCoin =<< getWalletBalance -- utxosAt newWallet.address From b29deca185a9414b0fe056bea0bf15693c4f05ba Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 12 Jun 2024 00:32:46 +0300 Subject: [PATCH 211/373] Extract withCardanoCliCompletion to CardanoCli.QueryHandler --- src/Internal/CardanoCli.purs | 2 +- src/Internal/CardanoCli/QueryHandler.purs | 54 +++++++++++++++++++++++ test/Plutip.purs | 48 ++------------------ 3 files changed, 59 insertions(+), 45 deletions(-) create mode 100644 src/Internal/CardanoCli/QueryHandler.purs diff --git a/src/Internal/CardanoCli.purs b/src/Internal/CardanoCli.purs index eaac631da..09264d40b 100644 --- a/src/Internal/CardanoCli.purs +++ b/src/Internal/CardanoCli.purs @@ -1,4 +1,4 @@ -module Internal.CardanoCli where +module Ctl.Internal.CardanoCli where import Contract.Prelude diff --git a/src/Internal/CardanoCli/QueryHandler.purs b/src/Internal/CardanoCli/QueryHandler.purs new file mode 100644 index 000000000..f5231fdb9 --- /dev/null +++ b/src/Internal/CardanoCli/QueryHandler.purs @@ -0,0 +1,54 @@ +module Internal.CardanoCli.QueryHandler + ( withCardanoCliCompletion + ) where + +import Contract.Prelude + +import Cardano.Types as Cardano.Types +import Contract.ClientError as Contract.ClientError +import Contract.Monad (Contract, ContractEnv) +import Control.Monad.Error.Class (try) +import Control.Monad.Except (ExceptT(..), runExceptT) +import Control.Monad.Reader (local) +import Ctl.Internal.CardanoCli as CardanoCli +import Data.Bifunctor (bimap) +import Data.Lens (Lens', (%~)) +import Data.Lens.Record (prop) +import Data.Map as Map +import Effect.Exception (Error, message) +import Type.Proxy (Proxy(..)) + +type UtxosAtQuery = + Cardano.Types.Address + -> Aff (Either Contract.ClientError.ClientError Cardano.Types.UtxoMap) + +withCardanoCliCompletion + :: forall a + . CardanoCli.CardanoNodeInstance + -> Contract a + -> Contract a +withCardanoCliCompletion node = + local $ utxosAtL %~ completeUtxosAt node + +utxosAtL :: Lens' ContractEnv UtxosAtQuery +utxosAtL = prop (Proxy :: _ "handle") <<< prop (Proxy :: _ "utxosAt") + +-- | Adds to the results UTxOs found by cardano-cli but not found by the given 'utxosAt' query. +completeUtxosAt + :: CardanoCli.CardanoNodeInstance + -> UtxosAtQuery + -> UtxosAtQuery +completeUtxosAt node utxosAt address = runExceptT do + let + toCliError :: Error -> Contract.ClientError.ClientError + toCliError = Contract.ClientError.ClientOtherError <<< message + + toUtxoMap :: Array CardanoCli.CardanoCliTxOutInfo -> Cardano.Types.UtxoMap + toUtxoMap = Map.fromFoldable + <<< map (CardanoCli.cardanoCliTxOutInfoToUtxo address) + cardanoCliUtxos <- ExceptT + $ map (bimap toCliError toUtxoMap) + $ try + $ CardanoCli.queryUtxosViaCardanoCli node address + kupoUtxos <- ExceptT $ utxosAt address + pure $ Map.union kupoUtxos cardanoCliUtxos diff --git a/test/Plutip.purs b/test/Plutip.purs index 28227a011..b2d6d8076 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -9,10 +9,8 @@ import Cardano.Types as Cardano.Types import Cardano.Types.Address as Cardano.Types.Address import Cardano.Types.PrivateKey as Cardano.Type.PrivateKey import Cardano.Types.PublicKey as Cardano.Types.PublicKey -import Contract.ClientError as Contract.ClientError import Contract.Config as Config -import Contract.Monad (ContractEnv) -import Contract.Monad (runContractInEnv) as Contract +import Contract.Monad as Contract import Contract.Test.Plutip (defaultPlutipConfig) import Contract.Test.Utils ( interruptOnSignal @@ -35,13 +33,7 @@ import Contract.Wallet.KeyFile ) import Control.Monad.Error.Class ( liftMaybe - , try ) -import Control.Monad.Except - ( ExceptT(..) - , runExceptT - ) -import Control.Monad.Reader (local) import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Plutip.Utils ( tmpdir @@ -54,22 +46,17 @@ import Ctl.Internal.Testnet.Types import Ctl.Internal.Testnet.Types as Testnet.Types import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) import Ctl.Internal.Wallet.KeyFile (privateStakeKeyFromTextEnvelope) -import Data.Bifunctor (bimap) -import Data.Lens (Lens', (%~)) -import Data.Lens.Record (prop) -import Data.Map as Map import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(..)) import Effect (Effect) import Effect.Aff (Aff, launchAff) import Effect.Aff.Class (class MonadAff) -import Effect.Exception (Error, error, message) -import Internal.CardanoCli as CardanoCli +import Effect.Exception (error) +import Internal.CardanoCli.QueryHandler as CardanoCli.QueryHandler import Node.Encoding (Encoding(..)) import Node.FS.Aff (readTextFile) import Node.Path (FilePath) import Record as Record -import Type.Proxy (Proxy(..)) -- | Changes TextEnvelope type to match private payment key one and tries to read that. readTextEnvelopeAsPaymentSkey :: FilePath -> Aff Config.PrivatePaymentKey @@ -97,29 +84,6 @@ readTextEnvelopeAsStakingSkey path = do liftMaybe (error "Cannot decode staking skey from decoded envelope") $ privateStakeKeyFromTextEnvelope envelope' -type UtxosAtQuery = - Cardano.Types.Address - -> Aff (Either Contract.ClientError.ClientError Cardano.Types.UtxoMap) - -utxosAtWithCardanoCli - :: CardanoCli.CardanoNodeInstance - -> UtxosAtQuery - -> UtxosAtQuery -utxosAtWithCardanoCli node utxosAt address = runExceptT do - let - toCliError :: Error -> Contract.ClientError.ClientError - toCliError = Contract.ClientError.ClientOtherError <<< message - - toUtxoMap :: Array CardanoCli.CardanoCliTxOutInfo -> Cardano.Types.UtxoMap - toUtxoMap = Map.fromFoldable - <<< map (CardanoCli.cardanoCliTxOutInfoToUtxo address) - cardanoCliUtxos <- ExceptT - $ map (bimap toCliError toUtxoMap) - $ try - $ CardanoCli.queryUtxosViaCardanoCli node address - kupoUtxos <- ExceptT $ utxosAt address - pure $ Map.union kupoUtxos cardanoCliUtxos - defaultStartupParams :: { | CardanoTestnetStartupParams () } defaultStartupParams = ( Testnet.Types.defaultStartupParams @@ -214,16 +178,12 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do =<< getWalletBalance -- we can see genesis utxos when add cardano-cli query results to utxosAt - local (utxosAtL %~ utxosAtWithCardanoCli nodeCfg) do + CardanoCli.QueryHandler.withCardanoCliCompletion nodeCfg do log <<< show <<< { utxosAfterTx: _ } <<< map valueToCoin =<< getWalletBalance -- utxosAt newWallet.address log <<< append "Tmp dir is: " =<< liftEffect tmpdir --- | txos -utxosAtL :: Lens' ContractEnv UtxosAtQuery -utxosAtL = prop (Proxy :: _ "handle") <<< prop (Proxy :: _ "utxosAt") - -- flip cancelWith (effectCanceler (exitCode 1)) do -- Utils.interpretWithConfig -- defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } From 3753a33d07a4a43e0a5ddd4fe6f7b23dbea0cbc2 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 12 Jun 2024 19:22:22 +0300 Subject: [PATCH 212/373] Improve queryUtxosViaCardanoCli to parse all the utxo assets --- src/Internal/CardanoCli.purs | 140 +++++++++++++++++++--- src/Internal/CardanoCli/QueryHandler.purs | 5 +- test/Plutip.purs | 1 + 3 files changed, 127 insertions(+), 19 deletions(-) diff --git a/src/Internal/CardanoCli.purs b/src/Internal/CardanoCli.purs index 09264d40b..50c14997e 100644 --- a/src/Internal/CardanoCli.purs +++ b/src/Internal/CardanoCli.purs @@ -1,18 +1,28 @@ -module Ctl.Internal.CardanoCli where +module Ctl.Internal.CardanoCli + ( CardanoNodeInstance + , CardanoCliTxOutInfo + , queryUtxosViaCardanoCli + , cardanoCliTxOutInfoToUtxo + ) where import Contract.Prelude import Cardano.Serialization.Lib as CSL import Cardano.Types as Cardano.Types import Cardano.Types.Address as Cardano.Types.Address +import Cardano.Types.AssetName as Cardano.Types.AssetName import Cardano.Types.BigNum as BigNum +import Cardano.Types.Value as Cardano.Types.Value import Contract.Value as Contract.Value -import Control.Monad.Error.Class (liftMaybe) +import Control.Alt ((<|>)) import Control.Monad.Except (throwError) +import Control.Monad.Rec.Class (Step(..), tailRecM) import Control.Parallel (parallel, sequential) import Ctl.Internal.Plutip.Spawn as Ctl.Internal.Plutip.Spawn import Ctl.Internal.Plutip.Utils (annotateError) import Data.Array as Array +import Data.Bifunctor (lmap) +import Data.ByteArray (ByteArray) import Data.ByteArray as Data.ByteArray import Data.List as List import Data.String as String @@ -24,6 +34,10 @@ import Node.ChildProcess as Node.ChildProcess import Node.Encoding as Node.Encoding import Node.Path as Node.Path import Node.Stream.Aff as Node.Stream.Aff +import Parsing as Parsing +import Parsing.Combinators as Parsing.Combinators +import Parsing.String as Parsing.String +import Parsing.String.Basic as Parsing.String.Basic type CardanoNodeInstance = { socketPath :: Node.Path.FilePath @@ -40,7 +54,7 @@ cardanoCliTxOutInfoToUtxo address { input: { txHash, txOutId }, amount } = { index: txOutId, transactionId: txHash } txOut = Cardano.Types.TransactionOutput { address - , amount: Contract.Value.coinToValue amount + , amount , datum: Nothing , scriptRef: Nothing } @@ -52,26 +66,42 @@ type CardanoCliTxOutInfo = { txHash :: Cardano.Types.TransactionHash , txOutId :: UInt } - , amount :: Cardano.Types.Coin + , amount :: Cardano.Types.Value -- Coin } -- | A line of the CLI output of 'cardano-cli query utxo' containing utxo information newtype CliUtxo = CliUtxo String -parseTxOut :: CliUtxo -> Maybe CardanoCliTxOutInfo -parseTxOut (CliUtxo src) = do +parseTxOutIgnoringDatums + :: CliUtxo -> Either Parsing.ParseError CardanoCliTxOutInfo +parseTxOutIgnoringDatums (CliUtxo src) = Parsing.runParser src do + Parsing.String.Basic.skipSpaces + txHash <- parseTxHash + Parsing.String.Basic.skipSpaces + txOutId <- parseTxOutputIndex let - words = String.split (String.Pattern " ") src - nonEmptyWords = Array.take 3 $ Array.filter (not <<< String.null) words - { hash, id, amt } <- case nonEmptyWords of - [ hash, id, amt ] -> Just { hash, id, amt } - _ -> Nothing - txHash <- map wrap <<< CSL.fromBytes =<< Data.ByteArray.hexToByteArray hash - txOutId <- UInt.fromString id - amount <- BigNum.fromString amt - pure { input: { txHash, txOutId }, amount: wrap amount } + txDatumBegin = + Parsing.String.string "TxOutDatumNone" + <|> Parsing.String.string "TxOutDatumInline" + <|> Parsing.String.string "TxOutDatumHash" + + parseAssets + :: Contract.Value.Value -> Parsing.Parser String Contract.Value.Value + parseAssets = tailRecM \acc -> do + value <- parseAsset + void $ Parsing.String.string " + " + acc' <- noteParser "Can't sum up value" + $ Contract.Value.add acc value + (Done acc' <$ txDatumBegin) <|> pure (Loop acc') + Parsing.String.Basic.skipSpaces + value <- parseAssets Contract.Value.empty + pure + { input: { txHash, txOutId } + , amount: value + } -- | Queries address funds via cardano-cli and returns the first UTxO data. +-- Note, that it assumes no output datum and script ref. queryUtxosViaCardanoCli :: CardanoNodeInstance -> Cardano.Types.Address @@ -88,11 +118,21 @@ queryUtxosViaCardanoCli { socketPath, testnetMagic } address = , "--address" , Cardano.Types.Address.toBech32 address ] + let + parsingError utxos (Parsing.ParseError msg pos) = mconcat + [ "Cannot parse UTxOs: " + , show utxos + , " because of " + , msg + , " at " + , show pos + ] case List.fromFoldable stdout of List.Cons _ (List.Cons _ utxos) -> map Array.fromFoldable - <<< liftMaybe (error $ "Cannot parse TxOuts" <> show utxos) - $ for utxos (parseTxOut <<< CliUtxo) + <<< liftEither + <<< lmap (error <<< parsingError utxos) + $ for utxos (parseTxOutIgnoringDatums <<< CliUtxo) _ -> throwError $ error $ "Output is too short " <> show stdout execCardanoCli @@ -126,4 +166,68 @@ execCardanoCli params = annotateError "execCardanoCli" do throwError $ error $ intercalate "\n" output.stderr - pure { stdout: output.stdout, process } \ No newline at end of file + pure { stdout: output.stdout, process } + +-- * Parsing + +parseTxOutputIndex :: Parsing.Parser String UInt +parseTxOutputIndex = parseNatural \n -> + note ("Can't parse Tx output index: " <> n) + $ UInt.fromString n + +parseAsset :: Parsing.Parser String Cardano.Types.Value +parseAsset = do + amount <- parseAmount + Parsing.String.Basic.skipSpaces + parseLovelace amount <|> parseNativeAsset amount + where + parseAmount = parseNatural \n -> + note ("Can't parse asset amount: " <> n) + $ BigNum.fromString n + parseLovelace amount = do + void $ Parsing.String.string "lovelace" + pure $ Cardano.Types.Value.coinToValue $ wrap amount + parseNativeAsset amount = do + cs <- parseScriptHash + void $ Parsing.String.char '.' + tn <- parseAssetName + pure $ Contract.Value.singleton cs tn amount + +parseTxHash :: Parsing.Parser String Cardano.Types.TransactionHash +parseTxHash = map wrap + <<< noteParser "Cannot parse tx hash from byte array" + <<< CSL.fromBytes + =<< parseHex + +parseScriptHash :: Parsing.Parser String Cardano.Types.ScriptHash +parseScriptHash = parseHex >>= \bytes -> + map wrap + $ noteParser ("Cannot parse script hash from byte array" <> show bytes) + $ CSL.fromBytes bytes + +parseAssetName :: Parsing.Parser String Cardano.Types.AssetName +parseAssetName = + noteParser "Cannot create asset name from the parsed bytes" + <<< Cardano.Types.AssetName.mkAssetName + =<< parseHex + +makeString :: forall f. Foldable f => f Char -> String +makeString = String.fromCodePointArray + <<< map String.codePointFromChar + <<< Array.fromFoldable + +parseNatural :: forall n. (String -> Either String n) -> Parsing.Parser String n +parseNatural toNumber = Parsing.liftEither + <<< toNumber + <<< makeString + =<< Parsing.Combinators.many Parsing.String.Basic.digit + +noteParser :: forall s a. String -> Maybe a -> Parsing.Parser s a +noteParser err = Parsing.liftEither <<< note err + +parseHex :: Parsing.Parser String ByteArray +parseHex = + noteParser "Cannot parse hex-encoded byte array" + <<< Data.ByteArray.hexToByteArray + <<< makeString + =<< Parsing.Combinators.many Parsing.String.Basic.hexDigit \ No newline at end of file diff --git a/src/Internal/CardanoCli/QueryHandler.purs b/src/Internal/CardanoCli/QueryHandler.purs index f5231fdb9..edfea77e0 100644 --- a/src/Internal/CardanoCli/QueryHandler.purs +++ b/src/Internal/CardanoCli/QueryHandler.purs @@ -22,6 +22,8 @@ type UtxosAtQuery = Cardano.Types.Address -> Aff (Either Contract.ClientError.ClientError Cardano.Types.UtxoMap) +-- | Adds to the utxosAt results UTxOs found by cardano-cli but not found by the current 'utxosAt' query. +-- UTxOs found by cardano-cli assumed to have no datum or script ref. withCardanoCliCompletion :: forall a . CardanoCli.CardanoNodeInstance @@ -33,7 +35,8 @@ withCardanoCliCompletion node = utxosAtL :: Lens' ContractEnv UtxosAtQuery utxosAtL = prop (Proxy :: _ "handle") <<< prop (Proxy :: _ "utxosAt") --- | Adds to the results UTxOs found by cardano-cli but not found by the given 'utxosAt' query. +-- | Adds to the results UTxOs found by cardano-cli but not found by the given 'utxosAt' query. +-- UTxOs found by cardano-cli assumed to have no datum or script ref. completeUtxosAt :: CardanoCli.CardanoNodeInstance -> UtxosAtQuery diff --git a/test/Plutip.purs b/test/Plutip.purs index b2d6d8076..3eec3e446 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -34,6 +34,7 @@ import Contract.Wallet.KeyFile import Control.Monad.Error.Class ( liftMaybe ) +import Ctl.Internal.CardanoCli as CardanoCli import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Plutip.Utils ( tmpdir From 60d75e437bdcd364d16cd6ba77598899f23bb6bf Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 12 Jun 2024 19:36:28 +0300 Subject: [PATCH 213/373] Simplify parser --- src/Internal/CardanoCli.purs | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/Internal/CardanoCli.purs b/src/Internal/CardanoCli.purs index 50c14997e..9f5e97b5e 100644 --- a/src/Internal/CardanoCli.purs +++ b/src/Internal/CardanoCli.purs @@ -16,7 +16,6 @@ import Cardano.Types.Value as Cardano.Types.Value import Contract.Value as Contract.Value import Control.Alt ((<|>)) import Control.Monad.Except (throwError) -import Control.Monad.Rec.Class (Step(..), tailRecM) import Control.Parallel (parallel, sequential) import Ctl.Internal.Plutip.Spawn as Ctl.Internal.Plutip.Spawn import Ctl.Internal.Plutip.Utils (annotateError) @@ -85,16 +84,14 @@ parseTxOutIgnoringDatums (CliUtxo src) = Parsing.runParser src do <|> Parsing.String.string "TxOutDatumInline" <|> Parsing.String.string "TxOutDatumHash" - parseAssets - :: Contract.Value.Value -> Parsing.Parser String Contract.Value.Value - parseAssets = tailRecM \acc -> do - value <- parseAsset - void $ Parsing.String.string " + " - acc' <- noteParser "Can't sum up value" - $ Contract.Value.add acc value - (Done acc' <$ txDatumBegin) <|> pure (Loop acc') Parsing.String.Basic.skipSpaces - value <- parseAssets Contract.Value.empty + rawValues <- Parsing.Combinators.manyTill + (parseAsset <* Parsing.String.string " + ") + txDatumBegin + value <- + noteParser "Can't sum up asset amounts" + $ Contract.Value.sum + $ Array.fromFoldable rawValues pure { input: { txHash, txOutId } , amount: value @@ -184,14 +181,14 @@ parseAsset = do parseAmount = parseNatural \n -> note ("Can't parse asset amount: " <> n) $ BigNum.fromString n - parseLovelace amount = do + parseLovelace amount = ado void $ Parsing.String.string "lovelace" - pure $ Cardano.Types.Value.coinToValue $ wrap amount - parseNativeAsset amount = do + in Cardano.Types.Value.coinToValue $ wrap amount + parseNativeAsset amount = ado cs <- parseScriptHash void $ Parsing.String.char '.' tn <- parseAssetName - pure $ Contract.Value.singleton cs tn amount + in Contract.Value.singleton cs tn amount parseTxHash :: Parsing.Parser String Cardano.Types.TransactionHash parseTxHash = map wrap From 1092364797d13e6608d3b200c9f868c72a5c84ac Mon Sep 17 00:00:00 2001 From: Renegatto Date: Wed, 12 Jun 2024 19:40:02 +0300 Subject: [PATCH 214/373] Make TODO for the next task --- src/Internal/Testnet/Contract.purs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 8c35aba26..c5afbcd00 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -8,6 +8,7 @@ import Contract.Monad , ContractEnv ) import Contract.Monad as Contract +import Contract.Wallet as Contract.Wallet import Ctl.Internal.Plutip.Server ( makeClusterContractEnv ) @@ -23,6 +24,7 @@ import Ctl.Internal.Testnet.Types ( CardanoTestnetStartupParams , TestnetClusterConfig ) +import Effect.Exception.Unsafe (unsafeThrow) import Effect.Ref as Ref -- | Run a single `Contract` in Plutip environment. @@ -34,6 +36,10 @@ runContract runContract cfg cont = withContractEnv cfg \_ env -> Contract.runContractInEnv env cont +-- TODO +genesisWallets :: Aff Contract.Wallet.KeyWallet +genesisWallets = unsafeThrow "not implemented" + -- | Provide a `ContractEnv` connected to Plutip. -- | can be used to run multiple `Contract`s using `runContractInEnv`. withContractEnv From 828f39a587d7fc255d8fa30eed593752e7d93fe2 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 13 Jun 2024 00:02:54 +0300 Subject: [PATCH 215/373] Add genesis utxo wallet parsing to the api --- spago.dhall | 1 + src/Internal/Testnet/Contract.purs | 16 +++++-- src/Internal/Testnet/Types.purs | 9 +++- src/Internal/Testnet/Utils.purs | 59 +++++++++++++++++++++++ test/Plutip.purs | 75 +++--------------------------- 5 files changed, 87 insertions(+), 73 deletions(-) diff --git a/spago.dhall b/spago.dhall index 1282894ad..3a6efba8d 100644 --- a/spago.dhall +++ b/spago.dhall @@ -72,6 +72,7 @@ You can edit this file as you like. , "ordered-collections" , "orders" , "parallel" + , "parsing" , "partial" , "plutus-types" , "posix-types" diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index c5afbcd00..62ca20119 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -8,6 +8,9 @@ import Contract.Monad , ContractEnv ) import Contract.Monad as Contract +import Contract.Wallet + ( mkKeyWalletFromPrivateKeys + ) import Contract.Wallet as Contract.Wallet import Ctl.Internal.Plutip.Server ( makeClusterContractEnv @@ -22,9 +25,10 @@ import Ctl.Internal.Testnet.Server ) import Ctl.Internal.Testnet.Types ( CardanoTestnetStartupParams + , GenesisUtxoKeyLocation , TestnetClusterConfig ) -import Effect.Exception.Unsafe (unsafeThrow) +import Ctl.Internal.Testnet.Utils (read872GenesisKey) import Effect.Ref as Ref -- | Run a single `Contract` in Plutip environment. @@ -36,9 +40,13 @@ runContract runContract cfg cont = withContractEnv cfg \_ env -> Contract.runContractInEnv env cont --- TODO -genesisWallets :: Aff Contract.Wallet.KeyWallet -genesisWallets = unsafeThrow "not implemented" +readGenesisWallets + :: forall r r1 + . { genesisKeys :: Array { | GenesisUtxoKeyLocation r } | r1 } + -> Effect (Array Contract.Wallet.KeyWallet) +readGenesisWallets { genesisKeys } = for genesisKeys \location -> do + paymentKey <- read872GenesisKey location + pure $ mkKeyWalletFromPrivateKeys paymentKey Nothing -- | Provide a `ContractEnv` connected to Plutip. -- | can be used to run multiple `Contract`s using `runContractInEnv`. diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 0944e08bd..dbe112c20 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -8,6 +8,7 @@ module Ctl.Internal.Testnet.Types , KupmiosConfig , NodeLocation , Node + , GenesisUtxoKeyLocation , OptionalStartupParams , TestnetRuntime , TestnetClusterConfig @@ -18,7 +19,6 @@ module Ctl.Internal.Testnet.Types import Contract.Prelude -import Cardano.Types as Cardano.Types import Contract.Config as Config import Data.Time.Duration (Milliseconds, Seconds) import Data.UInt (UInt) @@ -104,6 +104,7 @@ defaultOptionalStartupParams = type TestnetPaths = { testnetDirectory :: FilePath + , genesisKeys :: Array { | GenesisUtxoKeyLocation () } , nodeConfigPath :: FilePath , nodeSocketPath :: FilePath , nodeDirs :: Array { | NodeLocation () } @@ -122,6 +123,12 @@ type NodeLocation r = | r ) +type GenesisUtxoKeyLocation r = + ( path :: FilePath + , idx :: Int + | r + ) + type TestnetClusterConfig r = ( hooks :: Config.Hooks | KupmiosConfig (LogParams r) diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index c9f5e4e10..34b7130b8 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -9,10 +9,20 @@ module Ctl.Internal.Testnet.Utils , parseEvent , readNodes , waitFor + , read872GenesisKey ) where import Contract.Prelude +import Contract.Config as Contract.Config +import Contract.TextEnvelope + ( TextEnvelope(TextEnvelope) + , TextEnvelopeType(PaymentSigningKeyShelleyed25519) + , decodeTextEnvelope + ) +import Contract.Wallet.KeyFile + ( privatePaymentKeyFromTextEnvelope + ) import Control.Alt ((<|>)) import Control.Monad.Error.Class ( liftMaybe @@ -28,6 +38,7 @@ import Ctl.Internal.Plutip.Utils ) import Ctl.Internal.Testnet.Types ( Event(..) + , GenesisUtxoKeyLocation , Node , NodeLocation , StartupFailure(..) @@ -42,7 +53,9 @@ import Data.UInt (UInt) import Data.UInt as UInt import Effect.Exception (Error, error) import Node.Encoding (Encoding(UTF8)) +import Node.Encoding as Node.Encoding import Node.FS.Sync as Node.FS +import Node.FS.Sync as Node.FS.Sync import Node.Path (FilePath) -- | For cardano-node 8.1.1 @@ -160,6 +173,50 @@ readNodes { nodeDirs, testnetDirectory } = do port <- getNodePort { nodeDir: workdir } pure { idx, socket: socketPath, port, workdir, name } +-- | Changes TextEnvelope type to match private payment key one and tries to read that. +readTextEnvelopeAsPaymentSkey + :: FilePath + -> Effect Contract.Config.PrivatePaymentKey +readTextEnvelopeAsPaymentSkey path = do + TextEnvelope envelope <- + liftMaybe (error "Cannot decode skey envelope") + <<< decodeTextEnvelope + =<< Node.FS.Sync.readTextFile Node.Encoding.UTF8 path + let + envelope' = TextEnvelope + (envelope { type_ = PaymentSigningKeyShelleyed25519 }) + liftMaybe (error "Cannot decode payment skey from decoded envelope") + $ privatePaymentKeyFromTextEnvelope envelope' + +parse872UtxoKeyFilename :: FilePath -> Either Error (Maybe { idx :: Int }) +parse872UtxoKeyFilename path = + traverse + ( map { idx: _ } + <<< note (error "Can't parse genesis key index") + <<< Int.fromString + ) + $ String.stripSuffix (Pattern ".skey") + =<< String.stripPrefix (Pattern "utxo") path + +read872GenesisKeyLocations + :: { workdir :: FilePath } + -> Effect (Array { | GenesisUtxoKeyLocation () }) +read872GenesisKeyLocations { workdir } = do + let + keysDir = workdir <> "utxo-keys" + filenames <- Node.FS.readdir keysDir + map Array.catMaybes + $ liftEither + $ for filenames \filename -> + parse872UtxoKeyFilename filename <#> map \{ idx } -> + { idx, path: keysDir <> filename } + +read872GenesisKey + :: forall r + . { | GenesisUtxoKeyLocation r } + -> Effect Contract.Config.PrivatePaymentKey +read872GenesisKey { path } = readTextEnvelopeAsPaymentSkey path + getNodePort :: { nodeDir :: FilePath } -> Effect UInt getNodePort { nodeDir } = liftMaybe (error $ "Failed to parse port at " <> nodeDir <> "/port") @@ -201,9 +258,11 @@ findTestnetPaths { workdir } = runExceptT do $ firstNode872 <> " not found in cardano-testnet working directory." nodeDirs <- lift $ findNodeDirs { workdir } + genesisKeys <- lift $ read872GenesisKeyLocations { workdir } pure { testnetDirectory: workdir , nodeConfigPath , nodeSocketPath + , genesisKeys , nodeDirs } \ No newline at end of file diff --git a/test/Plutip.purs b/test/Plutip.purs index 3eec3e446..305dd3f99 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -9,17 +9,11 @@ import Cardano.Types as Cardano.Types import Cardano.Types.Address as Cardano.Types.Address import Cardano.Types.PrivateKey as Cardano.Type.PrivateKey import Cardano.Types.PublicKey as Cardano.Types.PublicKey -import Contract.Config as Config import Contract.Monad as Contract import Contract.Test.Plutip (defaultPlutipConfig) import Contract.Test.Utils ( interruptOnSignal ) -import Contract.TextEnvelope - ( TextEnvelope(..) - , TextEnvelopeType(..) - , decodeTextEnvelope - ) import Contract.Value ( valueToCoin ) @@ -28,17 +22,12 @@ import Contract.Wallet , mkKeyWalletFromPrivateKeys , withKeyWallet ) -import Contract.Wallet.KeyFile - ( privatePaymentKeyFromTextEnvelope - ) -import Control.Monad.Error.Class - ( liftMaybe - ) -import Ctl.Internal.CardanoCli as CardanoCli -import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Plutip.Utils ( tmpdir ) +import Ctl.Internal.Testnet.Contract + ( readGenesisWallets + ) import Ctl.Internal.Testnet.Contract as Testnet.Contract import Ctl.Internal.Testnet.Server as Testnet import Ctl.Internal.Testnet.Types @@ -46,45 +35,13 @@ import Ctl.Internal.Testnet.Types ) import Ctl.Internal.Testnet.Types as Testnet.Types import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) -import Ctl.Internal.Wallet.KeyFile (privateStakeKeyFromTextEnvelope) import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(..)) import Effect (Effect) -import Effect.Aff (Aff, launchAff) -import Effect.Aff.Class (class MonadAff) -import Effect.Exception (error) +import Effect.Aff (launchAff) import Internal.CardanoCli.QueryHandler as CardanoCli.QueryHandler -import Node.Encoding (Encoding(..)) -import Node.FS.Aff (readTextFile) -import Node.Path (FilePath) import Record as Record --- | Changes TextEnvelope type to match private payment key one and tries to read that. -readTextEnvelopeAsPaymentSkey :: FilePath -> Aff Config.PrivatePaymentKey -readTextEnvelopeAsPaymentSkey path = do - TextEnvelope envelope <- - liftMaybe (error "Cannot decode skey envelope") - <<< decodeTextEnvelope - =<< readTextFile UTF8 path - let - envelope' = TextEnvelope - (envelope { type_ = PaymentSigningKeyShelleyed25519 }) - liftMaybe (error "Cannot decode payment skey from decoded envelope") - $ privatePaymentKeyFromTextEnvelope envelope' - --- | Changes TextEnvelope type to match private staking key one and tries to read that. -readTextEnvelopeAsStakingSkey :: FilePath -> Aff Config.PrivateStakeKey -readTextEnvelopeAsStakingSkey path = do - TextEnvelope envelope <- - liftMaybe (error "Cannot decode skey envelope") - <<< decodeTextEnvelope - =<< readTextFile UTF8 path - let - envelope' = TextEnvelope - (envelope { type_ = StakeSigningKeyShelleyed25519 }) - liftMaybe (error "Cannot decode staking skey from decoded envelope") - $ privateStakeKeyFromTextEnvelope envelope' - defaultStartupParams :: { | CardanoTestnetStartupParams () } defaultStartupParams = ( Testnet.Types.defaultStartupParams @@ -144,28 +101,10 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do log "Inside" let Testnet.MkStartedTestnetCluster { paths } = cluster - v872utxoKeysDir = paths.testnetDirectory <> "utxo-keys" - -- a new wallet to send initial lovelace to - - let - -- | Creates wallet from a payment key in TextEnvelope of any .type as if it was private payment key type. - readHackWallet - :: forall m. MonadAff m => String -> Int -> m (String /\ KeyWallet) - readHackWallet name idx = liftAff do - let identifier = name <> show idx - wallet <- walletFromHackedKeys (identifier <> ".skey") Nothing - pure $ identifier /\ wallet - - walletFromHackedKeys payment staking = do - pk <- readTextEnvelopeAsPaymentSkey payment - sk <- traverse readTextEnvelopeAsStakingSkey staking - pure $ mkKeyWalletFromPrivateKeys pk sk - -- do something interesting with every utxo in utxo-keys - for_ [ 1, 2, 3 ] \idx -> do - walletName /\ wallet <- - readHackWallet (v872utxoKeysDir <> "utxo") idx + genesisWallets <- liftEffect $ readGenesisWallets paths + for_ genesisWallets \wallet -> do withKeyWallet wallet do let nodeCfg = @@ -175,7 +114,7 @@ main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do -- it will show zero balance log <<< show - <<< { wallet: walletName, initialBalanceViaKupo: _ } + <<< { initialBalanceViaKupo: _ } =<< getWalletBalance -- we can see genesis utxos when add cardano-cli query results to utxosAt From 69c4c00a89d7f77011203b1ad5de8a43e7071fd3 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 13 Jun 2024 14:45:07 +0200 Subject: [PATCH 216/373] Bump purs-cardano-types and purs-csl, Fix errors - Remove transaction serialization roundtrip tests - these tests are present in purs-cardano-types --- packages.dhall | 18 +- spago-packages.nix | 12 +- src/Contract/Transaction.purs | 1 - src/Internal/BalanceTx/RedeemerIndex.purs | 4 +- src/Internal/Lens.purs | 5 - src/Internal/QueryM/Ogmios.purs | 19 +- test/Fixtures.purs | 382 +--------------------- test/Serialization.purs | 35 +- 8 files changed, 46 insertions(+), 430 deletions(-) diff --git a/packages.dhall b/packages.dhall index 459932df5..73c1f6223 100644 --- a/packages.dhall +++ b/packages.dhall @@ -266,21 +266,27 @@ let additions = , cardano-serialization-lib = { dependencies = [ "aeson" + , "aff" , "argonaut" , "bifunctors" , "bytearrays" , "effect" , "either" + , "enums" , "maybe" , "nullable" , "ordered-collections" + , "partial" , "prelude" , "profunctor" + , "spec" + , "transformers" , "tuples" + , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0" + , version = "v1.0.0" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -321,14 +327,15 @@ let additions = , cardano-types = { dependencies = [ "aeson" + , "aff" , "arraybuffer-types" , "arrays" , "bifunctors" , "bytearrays" , "cardano-plutus-data-schema" , "cardano-serialization-lib" - , "console" , "control" + , "datetime" , "effect" , "either" , "encoding" @@ -342,6 +349,8 @@ let additions = , "literals" , "maybe" , "monad-logger" + , "mote" + , "mote-testplan" , "newtype" , "nonempty" , "nullable" @@ -349,11 +358,12 @@ let additions = , "partial" , "prelude" , "profunctor" + , "profunctor-lenses" , "quickcheck" , "rationals" , "record" , "safe-coerce" - , "strings" + , "spec" , "these" , "tuples" , "typelevel-prelude" @@ -362,7 +372,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v1.0.1" + , version = "v2.0.0" } , cardano-message-signing = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 081d8d789..2d53c79c4 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -247,11 +247,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; - sha256 = "1ikz6j3jvls3cvl6znrw55f59abzdaf7ggd2x7j3f81m5cvkxggr"; + rev = "903bf0adeefedc4d065ad6523ad079433bdd8e32"; + sha256 = "0jlfxrx037hyd4v0j7l2b16yxlm6nw6qlnr992hj9nzip36vbpfg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -259,11 +259,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v1.0.1"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; - sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; + rev = "780c28ee27d0ba7e76884a565ad60dea0a414842"; + sha256 = "1my7fgk218h6yllw09zf1m55hpn787mjq79whxxm9lqgarrdp66z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 1c038632f..1ed8e59f2 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -132,7 +132,6 @@ import Ctl.Internal.Lens , _scriptRef , _totalCollateral , _ttl - , _update , _validityStartInterval , _vkeys , _withdrawals diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 1b4182808..47a938810 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -81,7 +81,7 @@ unindexedRedeemerToRedeemer :: UnindexedRedeemer -> Redeemer unindexedRedeemerToRedeemer (UnindexedRedeemer { datum, purpose }) = Redeemer { tag: redeemerPurposeToRedeemerTag purpose - , "data": datum + , "data": wrap datum , index: BigNum.zero , exUnits: ExUnits.empty } @@ -107,7 +107,7 @@ indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = Redeemer { tag , index: BigNum.fromInt index - , data: datum + , data: wrap datum , exUnits: ExUnits.empty } diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index 94a9bf786..4be16aa3e 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -25,7 +25,6 @@ module Ctl.Internal.Lens , _scriptRef , _totalCollateral , _ttl - , _update , _validityStartInterval , _vkeys , _withdrawals @@ -56,7 +55,6 @@ import Cardano.Types , TransactionOutput , TransactionUnspentOutput , TransactionWitnessSet - , Update , Value , Vkeywitness ) @@ -129,9 +127,6 @@ _auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") _ttl :: Lens' TransactionBody (Maybe Slot) _ttl = _Newtype <<< prop (Proxy :: Proxy "ttl") -_update :: Lens' TransactionBody (Maybe Update) -_update = _Newtype <<< prop (Proxy :: Proxy "update") - _validityStartInterval :: Lens' TransactionBody (Maybe Slot) _validityStartInterval = _Newtype <<< prop (Proxy :: Proxy "validityStartInterval") diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 8d1cb2eb8..e53ec84b8 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -99,7 +99,7 @@ import Cardano.Serialization.Lib (fromBytes, ipv4_new) import Cardano.Types ( Bech32String , BigNum(BigNum) - , Language(PlutusV1, PlutusV2) + , Language(PlutusV1, PlutusV2, PlutusV3) , RedeemerTag , VRFKeyHash(VRFKeyHash) ) @@ -1205,20 +1205,19 @@ instance EncodeAeson AdditionalUtxoSet where encodeScriptRef :: ScriptRef -> Aeson encodeScriptRef (NativeScriptRef s) = - encodeAeson $ + encodeAeson { "language": "native" -- NOTE: We omit the cbor argument. , "json": (encodeNativeScript s) } - encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (_ /\ PlutusV1)))) = - encodeAeson - { "language": "plutus:v1" - , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps - } - encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (_ /\ PlutusV2)))) = + encodeScriptRef (PlutusScriptRef (PlutusScript (script /\ lang))) = encodeAeson - { "language": "plutus:v2" - , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps + { "language": + case lang of + PlutusV1 -> "plutus:v1" + PlutusV2 -> "plutus:v2" + PlutusV3 -> "plutus:v3" + , "cbor": byteArrayToHex script } encodeValue :: Value -> Aeson diff --git a/test/Fixtures.purs b/test/Fixtures.purs index e4a9f0783..8a5331927 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -56,11 +56,6 @@ module Test.Ctl.Fixtures , txBinaryFixture5 , txBinaryFixture6 , txFixture1 - , txFixture2 - , txFixture3 - , txFixture4 - , txFixture5 - , txFixture6 , txInputFixture1 , txOutputBinaryFixture1 , txOutputFixture1 @@ -91,8 +86,6 @@ import Cardano.Types , StakeDelegation , PoolRegistration , PoolRetirement - , GenesisKeyDelegation - , MoveInstantaneousRewardsCert ) , Coin(Coin) , Credential(PubKeyHashCredential) @@ -102,9 +95,6 @@ import Cardano.Types , ExUnits(ExUnits) , GeneralTransactionMetadata(GeneralTransactionMetadata) , Language(PlutusV2) - , MIRPot(Reserves, Treasury) - , MIRToStakeCredentials(MIRToStakeCredentials) - , MoveInstantaneousReward(ToOtherPot, ToStakeCreds) , NativeScript ( TimelockExpiry , TimelockStart @@ -121,7 +111,6 @@ import Cardano.Types , PoolMetadata(PoolMetadata) , PoolParams(PoolParams) , PoolPubKeyHash(PoolPubKeyHash) - , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) , ProtocolParamUpdate(ProtocolParamUpdate) , ProtocolVersion(ProtocolVersion) , Redeemer(Redeemer) @@ -139,7 +128,6 @@ import Cardano.Types , TransactionWitnessSet(TransactionWitnessSet) , URL(URL) , UnitInterval(UnitInterval) - , Update(Update) , UtxoMap , Value(Value) , Vkey(Vkey) @@ -254,49 +242,6 @@ bigNumOne = BigNum.fromInt 1 rewardAddress1 :: RewardAddress rewardAddress1 = { networkId: TestnetId, stakeCredential: wrap stake1 } -proposedProtocolParameterUpdates1 :: ProposedProtocolParameterUpdates -proposedProtocolParameterUpdates1 = ProposedProtocolParameterUpdates $ - Map.fromFoldable - [ ( unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - ) /\ - ProtocolParamUpdate - { minfeeA: Just $ Coin $ BigNum.fromInt 1 - , minfeeB: Just $ Coin $ BigNum.fromInt 1 - , maxBlockBodySize: Just $ UInt.fromInt 10000 - , maxTxSize: Just $ UInt.fromInt 10000 - , maxBlockHeaderSize: Just $ UInt.fromInt 1000 - , keyDeposit: Just $ Coin $ BigNum.fromInt 1 - , poolDeposit: Just $ Coin $ BigNum.fromInt 1 - , maxEpoch: Just $ Epoch one - , nOpt: Just $ UInt.fromInt 1 - , poolPledgeInfluence: Just $ UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - , expansionRate: Just $ UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - , treasuryGrowthRate: Just $ UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - , protocolVersion: Just $ ProtocolVersion - { major: 1, minor: 1 } - , minPoolCost: Just $ wrap bigNumOne - , adaPerUtxoByte: Just $ wrap bigNumOne - , costModels: Just costModelsFixture1 - , executionCosts: Just $ ExUnitPrices - { memPrice: UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - , stepPrice: UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - } - , maxTxExUnits: Just $ ExUnits - { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } - , maxBlockExUnits: Just $ ExUnits - { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } - , maxValueSize: Just $ UInt.fromInt 1 - , collateralPercentage: Just $ UInt.fromInt 140 - , maxCollateralInputs: Just $ UInt.fromInt 10 - } - ] - -- | Extend this for your needs. type SampleTxConfig = { inputs :: Array TransactionInput } @@ -325,7 +270,6 @@ mkSampleTx startTx changes = , ttl , certs , withdrawals - , update , auxiliaryDataHash , validityStartInterval , mint @@ -336,6 +280,10 @@ mkSampleTx startTx changes = , networkId , collateralReturn , totalCollateral + , votingProposals + , votingProcedures + , currentTreasuryValue + , donation } , witnessSet , isValid @@ -351,7 +299,6 @@ mkSampleTx startTx changes = , ttl , certs , withdrawals - , update , auxiliaryDataHash , validityStartInterval , mint @@ -362,6 +309,10 @@ mkSampleTx startTx changes = , networkId , collateralReturn , totalCollateral + , votingProposals + , votingProcedures + , currentTreasuryValue + , donation } , witnessSet , isValid @@ -404,7 +355,6 @@ txFixture1 = , ttl: Nothing , certs: [] , withdrawals: Map.empty - , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -415,92 +365,10 @@ txFixture1 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing - } - , witnessSet: TransactionWitnessSet - { vkeys: [] - , nativeScripts: [] - , bootstraps: [] - , plutusScripts: [] - , plutusData: [] - , redeemers: [] - } - , isValid: true - , auxiliaryData: mempty - } - -txFixture2 :: Transaction -txFixture2 = - Transaction - { body: TransactionBody - { inputs: [ txInputFixture1 ] - , outputs: [ txOutputFixture2 ] - , fee: Coin $ BigNum.fromInt 177513 - , ttl: Nothing - , certs: [] - , withdrawals: Map.empty - , update: Nothing - , auxiliaryDataHash: Nothing - , validityStartInterval: Nothing - , mint: Nothing - , referenceInputs: mempty - , scriptDataHash: Nothing - , collateral: [] - , requiredSigners: [] - , networkId: Just MainnetId - , collateralReturn: Nothing - , totalCollateral: Nothing - } - , witnessSet: witnessSetFixture3Value - , isValid: true - , auxiliaryData: mempty - } - -txFixture3 :: Transaction -txFixture3 = - Transaction - { body: TransactionBody - { inputs: [ txInputFixture1 ] - , outputs: - [ TransactionOutput - { address: keyHashBaseAddress - { stake: - "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - , payment: - "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - } - , amount: Value (Coin $ BigNum.fromInt 2353402) MultiAsset.empty - , datum: Nothing - , scriptRef: Nothing - } - , TransactionOutput - { address: keyHashBaseAddress - { stake: - "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - , payment: - "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - } - , amount: Value (Coin $ BigNum.fromInt 1000000) MultiAsset.empty - , datum: Nothing - , scriptRef: Nothing - } - ] - , fee: Coin $ BigNum.fromInt 177513 - , ttl: Nothing - , certs: [] - , withdrawals: Map.empty - , update: Nothing - , referenceInputs: [ txInputFixture1 ] - , auxiliaryDataHash: Nothing - , validityStartInterval: Nothing - , mint: Nothing - , scriptDataHash: Nothing - , collateral: [] - , requiredSigners: [] - , networkId: Just MainnetId - , collateralReturn: Nothing - , totalCollateral: Nothing + , votingProposals: [] + , votingProcedures: mempty + , currentTreasuryValue: Nothing + , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -531,230 +399,6 @@ mint0 = Mint $ Map.fromFoldable int1 :: Int.Int int1 = Int.newPositive BigNum.one -txFixture4 :: Transaction -txFixture4 = - Transaction - { body: TransactionBody - { inputs: [ txInputFixture1 ] - , outputs: - [ TransactionOutput - { address: keyHashBaseAddress - { stake: - "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - , payment: - "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - } - , amount: Value (Coin $ BigNum.fromInt 2353402) MultiAsset.empty - , datum: Just $ OutputDatum plutusDataFixture1 - , scriptRef: Just $ PlutusScriptRef plutusScriptFixture1 - } - , TransactionOutput - { address: keyHashBaseAddress - { stake: - "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - , payment: - "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - } - , amount: Value (Coin $ BigNum.fromInt 1000000) MultiAsset.empty - , datum: Nothing - , scriptRef: Just $ NativeScriptRef nativeScriptFixture5 - } - ] - , fee: Coin $ BigNum.fromInt 177513 - , ttl: Just $ Slot $ BigNum.fromInt 123 - , certs: - [ StakeRegistration $ wrap stake1 - , StakeDeregistration $ wrap stake1 - , StakeDelegation (wrap stake1) - (PoolPubKeyHash ed25519KeyHash1) - , PoolRegistration $ PoolParams - { operator: PoolPubKeyHash ed25519KeyHash1 - , vrfKeyhash: unsafePartial $ fromJust $ - hexToByteArray - "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - >>= wrap >>> decodeCbor - , pledge: bigNumOne - , cost: bigNumOne - , margin: UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - , rewardAccount: - { networkId: MainnetId, stakeCredential: wrap stake1 } - , poolOwners: [ ed25519KeyHash1 ] - , relays: - [ SingleHostAddr - { port: Just 8080 - , ipv4: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe - [ 127, 0, 0, 1 ] - , ipv6: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe - $ Array.replicate 16 123 - } - , SingleHostName - { port: Just 8080 - , dnsName: "example.com" - } - , MultiHostName { dnsName: "example.com" } - ] - , poolMetadata: Just $ PoolMetadata - { url: URL "https://example.com/" - , hash: unsafePartial $ fromJust $ decodeCbor $ wrap $ - hexToByteArrayUnsafe - "94b8cac47761c1140c57a48d56ab15d27a842abff041b3798b8618fa84641f5a" - } - } - , PoolRetirement - { poolKeyHash: PoolPubKeyHash ed25519KeyHash1 - , epoch: Epoch one - } - , GenesisKeyDelegation - { genesisHash: unsafePartial $ fromJust $ decodeCbor $ wrap $ - hexToByteArrayUnsafe - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - , genesisDelegateHash: unsafePartial $ fromJust $ decodeCbor - $ wrap - $ - hexToByteArrayUnsafe - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - , vrfKeyhash: unsafePartial $ fromJust $ decodeCbor $ wrap $ - hexToByteArrayUnsafe - "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - } - , MoveInstantaneousRewardsCert $ ToOtherPot - { pot: Reserves - , amount: wrap bigNumOne - } - , MoveInstantaneousRewardsCert $ ToStakeCreds - { pot: Treasury - , amounts: MIRToStakeCredentials $ Map.fromFoldable - [ wrap stake1 /\ Int.newPositive bigNumOne ] - } - ] - , withdrawals: Map.fromFoldable - [ rewardAddress1 /\ Coin BigNum.one ] - , update: Just $ Update - { proposedProtocolParameterUpdates: - proposedProtocolParameterUpdates1 - , epoch: Epoch zero - } - , auxiliaryDataHash: decodeCbor $ wrap - $ byteArrayFromIntArrayUnsafe - $ Array.replicate 32 0 - , validityStartInterval: Nothing -- Just $ Slot $ BigNum.fromInt 124 - , mint: Just $ Mint $ Map.fromFoldable - [ currencySymbol1 /\ Map.fromFoldable - [ tokenName2 /\ Int.newPositive BigNum.one - ] - ] - , referenceInputs: mempty - , scriptDataHash: Nothing - , collateral: [] - , requiredSigners: [ ed25519KeyHashFixture1 ] - , networkId: Just MainnetId - , collateralReturn: Just txOutputFixture1 - , totalCollateral: Just $ Coin $ BigNum.fromInt 5_000_000 - } - , witnessSet: TransactionWitnessSet - { vkeys: [] - , nativeScripts: [] - , bootstraps: [] - , plutusScripts: [] - , plutusData: [] - , redeemers: [] - } - , isValid: true - , auxiliaryData: mempty - } - -txFixture5 :: Transaction -txFixture5 = - Transaction - { body: TransactionBody - { inputs: [ txInputFixture1 ] - , outputs: - [ TransactionOutput - { address: keyHashBaseAddress - { stake: - "0f45aaf1b2959db6e5ff94dbb1f823bf257680c3c723ac2d49f97546" - -- $ T.Bech32 "hbas_1xranhpfej50zdup5jy995dlj9juem9x36syld8wm465hz92acfp" - , payment: - "30fb3b8539951e26f034910a5a37f22cb99d94d1d409f69ddbaea971" - } - , amount: Value (Coin $ BigNum.fromInt 490234098) - MultiAsset.empty - , datum: Just $ OutputDatum plutusDataFixture1 - , scriptRef: Just $ PlutusScriptRef plutusScriptFixture2 - } - ] - , fee: Coin $ BigNum.fromInt 89489324 - , ttl: Nothing - , certs: [] - , withdrawals: Map.empty - , update: Nothing - , auxiliaryDataHash: Nothing - , validityStartInterval: Nothing - , mint: Nothing - , referenceInputs: mempty - , scriptDataHash: Nothing - , collateral: [] - , requiredSigners: [] - , networkId: Just MainnetId - , collateralReturn: Nothing - , totalCollateral: Nothing - } - , witnessSet: TransactionWitnessSet - { vkeys: [] - , nativeScripts: [] - , bootstraps: [] - , plutusScripts: [] - , plutusData: [] - , redeemers: [] - } - , isValid: true - , auxiliaryData: mempty - } - -txFixture6 :: Transaction -txFixture6 = - Transaction - { body: TransactionBody - { inputs: [ txInputFixture1 ] - , outputs: [ txOutputFixture1 ] - , fee: Coin $ BigNum.fromInt 177513 - , ttl: Nothing - , certs: [] - , withdrawals: Map.empty - , update: Nothing - , auxiliaryDataHash: Nothing - , validityStartInterval: Nothing - , mint: Nothing - , referenceInputs: mempty - , scriptDataHash: Nothing - , collateral: [] - , requiredSigners: [] - , networkId: Just MainnetId - , collateralReturn: Nothing - , totalCollateral: Nothing - } - , witnessSet: TransactionWitnessSet - { vkeys: [] - , nativeScripts: [] - , bootstraps: [] - , plutusScripts: [] - , plutusData: [] - , redeemers: [] - } - , isValid: true - , auxiliaryData: Just $ AuxiliaryData - { metadata: Just $ GeneralTransactionMetadata - ( Map.fromFoldable - [ BigNum.fromInt 8 /\ Text "foo" ] - ) - , nativeScripts: Nothing - , plutusScripts: Nothing - } - } - -- | To quickly check a serialized tx, create a file with the following contents: -- | -- | @@ -1351,7 +995,7 @@ redeemerFixture1 :: Redeemer redeemerFixture1 = Redeemer { tag: Spend , index: BigNum.fromInt 0 - , data: plutusDataFixture7 + , data: wrap plutusDataFixture7 , exUnits: ExUnits { mem: BigNum.fromInt 1 , steps: BigNum.fromInt 1 diff --git a/test/Serialization.purs b/test/Serialization.purs index 19b957f41..e0971729b 100644 --- a/test/Serialization.purs +++ b/test/Serialization.purs @@ -4,7 +4,7 @@ import Prelude import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Serialization.Lib (publicKey_fromBytes) -import Cardano.Types (PublicKey, Transaction, TransactionHash) +import Cardano.Types (PublicKey, TransactionHash) import Cardano.Types.BigNum (fromString, one) as BN import Cardano.Types.PlutusData as PD import Cardano.Types.PublicKey as PublicKey @@ -21,17 +21,7 @@ import Effect.Exception (error) import JS.BigInt as BigInt import Mote (group, test) import Mote.TestPlanM (TestPlanM) -import Test.Ctl.Fixtures - ( txFixture1 - , txFixture2 - , txFixture3 - , txFixture4 - , txFixture5 - , txFixture6 - , txOutputBinaryFixture1 - , txOutputFixture1 - ) -import Test.Ctl.Utils (errMaybe) +import Test.Ctl.Fixtures (txOutputBinaryFixture1, txOutputFixture1) import Test.Spec.Assertions (shouldEqual, shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit @@ -106,19 +96,6 @@ suite = do test "TransactionOutput serialization" $ liftEffect do let bytes = unwrap $ encodeCbor txOutputFixture1 byteArrayToHex bytes `shouldEqual` txOutputBinaryFixture1 - group "Transaction Roundtrips" $ do - test "Deserialization is inverse to serialization #1" $ - txSerializedRoundtrip txFixture1 - test "Deserialization is inverse to serialization #2" $ - txSerializedRoundtrip txFixture2 - test "Deserialization is inverse to serialization #3" $ - txSerializedRoundtrip txFixture3 - test "Deserialization is inverse to serialization #4" $ - txSerializedRoundtrip txFixture4 - test "Deserialization is inverse to serialization #5" $ - txSerializedRoundtrip txFixture5 - test "Deserialization is inverse to serialization #6" $ - txSerializedRoundtrip txFixture6 group "BigNum tests" $ do test "BigNum ok" $ do let bn = "18446744073709551615" @@ -129,11 +106,3 @@ suite = do test "BigNum negative" $ do let bnNeg = "-1" BN.fromString bnNeg `shouldSatisfy` isNothing - -txSerializedRoundtrip :: Transaction -> Aff Unit -txSerializedRoundtrip tx = do - let serialized = encodeCbor tx - (deserialized :: Transaction) <- errMaybe "Cannot deserialize bytes" $ - decodeCbor serialized - let expected = encodeCbor deserialized - serialized `shouldEqual` expected From 5f5f32a939f55f46c68e494c10159d12b5f72adb Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 13 Jun 2024 17:39:47 +0300 Subject: [PATCH 217/373] Implement and test core logic for distributing funds --- src/Internal/Testnet/Contract.purs | 85 ++++++- src/Internal/Testnet/DistributeFunds.purs | 209 ++++++++++++++++ test/Testnet/DistributeFunds.purs | 291 ++++++++++++++++++++++ test/Unit.purs | 2 + 4 files changed, 585 insertions(+), 2 deletions(-) create mode 100644 src/Internal/Testnet/DistributeFunds.purs create mode 100644 test/Testnet/DistributeFunds.purs diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 62ca20119..0489655cf 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -2,16 +2,27 @@ module Ctl.Internal.Testnet.Contract where import Contract.Prelude +import Cardano.Serialization.Lib as CSL import Cardano.Types (NetworkId(TestnetId)) +import Cardano.Types as Cardano.Types +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum import Contract.Monad ( Contract , ContractEnv ) import Contract.Monad as Contract +import Contract.Value (valueToCoin) import Contract.Wallet - ( mkKeyWalletFromPrivateKeys + ( KeyWallet + , getWalletBalance + , mkKeyWalletFromPrivateKeys + , withKeyWallet ) import Contract.Wallet as Contract.Wallet +import Control.Monad.Error.Class + ( liftMaybe + ) import Ctl.Internal.Plutip.Server ( makeClusterContractEnv ) @@ -19,6 +30,7 @@ import Ctl.Internal.Plutip.Utils ( cleanupOnExit , whenError ) +import Ctl.Internal.Test.UtxoDistribution as UtxoDistribution import Ctl.Internal.Testnet.Server ( StartedTestnetCluster , startTestnetCluster @@ -29,6 +41,8 @@ import Ctl.Internal.Testnet.Types , TestnetClusterConfig ) import Ctl.Internal.Testnet.Utils (read872GenesisKey) +import Effect.Exception (error) +import Effect.Exception.Unsafe (unsafeThrow) import Effect.Ref as Ref -- | Run a single `Contract` in Plutip environment. @@ -60,4 +74,71 @@ withContractEnv cfg cont = do _ <- cleanupOnExit cleanupRef cluster <- startTestnetCluster cfg cleanupRef { env, printLogs } <- makeClusterContractEnv cleanupRef cfg - whenError printLogs $ cont cluster $ env { networkId = TestnetId } \ No newline at end of file + whenError printLogs $ cont cluster $ env { networkId = TestnetId } + +distributeFunds + :: { sources :: Array KeyWallet + , targets :: + Array + { wallet :: KeyWallet + , required :: + { totalRequired :: BigNum + , utxoDistribution :: Array BigNum + } + } + , thresholds :: + { maxCoinPerTx :: BigNum + , maxUtxosPerTx :: BigNum + } + } + -> Contract Unit +distributeFunds given = do + sources <- for given.sources \wallet -> do + balance <- withKeyWallet wallet + $ map (BigNum.toBigInt <<< unwrap <<< valueToCoin) + <<< liftMaybe (error "Can't get source wallet balance") + =<< getWalletBalance + pure { wallet, balance } + unsafeThrow "todo" + +makeTargetDistribution + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution.UtxoDistribution distr wallets + => distr + -> Effect + { wallets :: wallets + , distributionInfo :: + Array + { wallet :: KeyWallet + , required :: + { total :: BigNum + , utxoDistribution :: Array BigNum + } + } + } +makeTargetDistribution distrib = do + distributionInfo <- for (UtxoDistribution.encodeDistribution distrib) + \utxos -> do + paymentKey <- wrap <$> genPrivateKey + let + wallet = mkKeyWalletFromPrivateKeys paymentKey Nothing + total <- liftMaybe (error "Cannot sum target utxo amounts") + $ foldM BigNum.add BigNum.zero utxos + pure + { wallet + , required: { utxoDistribution: utxos, total } + } + let + paymentKeys = + unwrap + <<< _.paymentKey + <<< unwrap + <<< _.wallet + <$> distributionInfo + wallets <- + liftMaybe (error "Can't decode wallets") + $ UtxoDistribution.decodeWallets distrib paymentKeys + pure { wallets, distributionInfo } + +genPrivateKey :: Effect Cardano.Types.PrivateKey +genPrivateKey = wrap <$> CSL.privateKey_generateEd25519 diff --git a/src/Internal/Testnet/DistributeFunds.purs b/src/Internal/Testnet/DistributeFunds.purs new file mode 100644 index 000000000..d7cce52a2 --- /dev/null +++ b/src/Internal/Testnet/DistributeFunds.purs @@ -0,0 +1,209 @@ +module Ctl.Internal.Testnet.DistributeFunds + ( Tx + , SourceState + , parallelizedDistributionPlan + , makeDistributionPlan + -- * exported for testing purposes + , assignUtxo + , emptyTx + , initialSourceState + ) where + +import Contract.Prelude + +import Control.Alt ((<|>)) +import Data.Array as Array +import Data.Bifunctor (class Bifunctor, bimap) +import Data.List (List(..)) +import Data.List as List +import Data.Map (Map) +import Data.Map as Map +import Effect.Exception.Unsafe (unsafeThrow) + +type Tx src target amount = + { source :: { key :: src } + , total :: amount + , totalUtxos :: Int + , utxos :: List { key :: target, amount :: amount } + } + +emptyTx + :: forall target amount + . amount + -> Tx Unit target amount +emptyTx total = + { source: { key: unit } + , total + , totalUtxos: 0 + , utxos: Nil + } + +type SourceState src target amount = + { source :: src + , leftover :: amount + , tx :: Tx Unit target amount + , completeTxs :: List (Tx Unit target amount) + } + +initialSourceState + :: forall src target amount + . Semiring amount + => { initialFunds :: amount, key :: src } + -> SourceState src target amount +initialSourceState { initialFunds, key } = + { source: key + , leftover: initialFunds + , tx: emptyTx zero + , completeTxs: Nil + } + +parallelizedDistributionPlan + :: forall src target amount + . Map src (Array (Tx Unit target amount)) + -> Array (Map src (Tx Unit target amount)) +parallelizedDistributionPlan _ = unsafeThrow "hello" + +makeDistributionPlan + :: forall src target amount + . Ord src + => Ord amount + => Ord target + => Ring amount + => Map src amount + -> Map target (Array amount) + -> { maxCoinPerTx :: amount + , maxTargetUtxosPerTx :: Int + } + -> Either + { err :: String + , acc :: List (SourceState src target amount) + } + (Map src (Array (Tx Unit target amount))) +makeDistributionPlan sources targets thresholds = do + let + targetsUtxosAsc :: List { key :: target, amount :: amount } + targetsUtxosAsc = List.sortBy (flip compare) + $ Map.toUnfoldable targets + >>= \(key /\ utxos) -> + { key, amount: _ } <$> List.fromFoldable utxos + + assigned :: Either _ (Map src (Array (Tx Unit target amount))) + assigned = do + sourcesTxs <- foldM + (flip $ assignUtxo thresholds) + ( initialSourceState <<< uncurry { key: _, initialFunds: _ } <$> + Map.toUnfoldable sources + ) + targetsUtxosAsc + let + finish src = + src + { tx = emptyTx + , completeTxs = Cons src.tx src.completeTxs + } + sourceToTxs = Map.fromFoldable + $ Tuple + <<< _.source + <*> Array.fromFoldable + <<< _.completeTxs + <<< finish + <$> sourcesTxs + pure sourceToTxs + assigned + +assignUtxo + :: forall target src amount + . Ord amount + => Ring amount + => { maxCoinPerTx :: amount + , maxTargetUtxosPerTx :: Int + } + -> { amount :: amount, key :: target } + -> List (SourceState src target amount) + -> Either + { err :: String + , acc :: List (SourceState src target amount) + } + (List (SourceState src target amount)) +assignUtxo _ _ Nil = Left + { err: "Ran out of sources", acc: Nil } +assignUtxo thresholds utxo acc@(Cons source sources) + | 0 >= thresholds.maxTargetUtxosPerTx = + Left { err: "maxTargetUtxosPerTx must be greater than 1", acc } + | utxo.amount >= thresholds.maxCoinPerTx = + Left + { err: "UTxO required amount is higher than the maxCoinPerTx threshold" + , acc + } + | source.tx.totalUtxos + >= thresholds.maxTargetUtxosPerTx = + -- means that this Tx is complete + assignUtxo thresholds utxo + $ startNewTx source sources -- be careful: infinite loop + -- it will terminate because new tx has 0 utxos which is higher than 'maxTargetUtxosPerTx' + | source.tx.total + utxo.amount + > thresholds.maxCoinPerTx = + -- means that utxo cannot be fit in this Tx + let + -- try fit this utxo in any source + tryAnother = tryWithAnotherSource + "Cannot fit UTxO amount into the Tx" + (assignUtxo thresholds utxo) + source + sources + -- if no source can fit this utxo, create a new tx + startNew = assignUtxo thresholds utxo + $ startNewTx source sources -- be careful: infinite loop + -- it will terminate because either new Tx starting with 0 total can fit it + -- or the condition above will throw Left + in + tryAnother <|> startNew + | source.leftover < utxo.amount = + -- means that this source cannot fit this tx + -- should try with the rest of sources and fail otherwise + tryWithAnotherSource + "Not enough funds on sources" + (assignUtxo thresholds utxo) + source + sources + | otherwise = + -- means that utxo can be fit into the current tx + let + source' = source + { leftover = source.leftover - utxo.amount + , tx = source.tx + { total = source.tx.total + utxo.amount + , totalUtxos = source.tx.totalUtxos + 1 + , utxos = Cons utxo source.tx.utxos + } + } + in + Right $ Cons source' sources + +-- * Helpers + +-- helper for assignUtxo +tryWithAnotherSource + :: forall s f + . Bifunctor f + => String + -> (List s -> f { err :: String, acc :: List s } (List s)) + -> s + -> List s + -> f { err :: String, acc :: List s } (List s) +tryWithAnotherSource err self source sources = + bimap (\e -> e { err = err <> "/" <> e.err, acc = Cons source e.acc }) + (Cons source) + $ self sources + +-- helper for assignUtxo +startNewTx + :: forall src target amount + . Semiring amount + => SourceState src target amount + -> List (SourceState src target amount) + -> List (SourceState src target amount) +startNewTx source sources = List.snoc sources source + { tx = emptyTx zero + , completeTxs = Cons source.tx source.completeTxs + } diff --git a/test/Testnet/DistributeFunds.purs b/test/Testnet/DistributeFunds.purs new file mode 100644 index 000000000..1cdca3b11 --- /dev/null +++ b/test/Testnet/DistributeFunds.purs @@ -0,0 +1,291 @@ +module Test.Ctl.Testnet.DistributeFunds where + +import Contract.Prelude + +import Contract.Test.Mote (TestPlanM) +import Ctl.Internal.Testnet.DistributeFunds as Distribute +import Data.Bifunctor (lmap) +import Data.List (List(..)) +import Data.List as List +import Mote (group, test) +import Test.Spec.Assertions (shouldEqual) + +suite :: TestPlanM (Aff Unit) Unit +suite = group "Testnet" $ group "Distribute Funds" do + group "assignUtxo" do + let + highThreshold = + { maxCoinPerTx: 999_999 + , maxTargetUtxosPerTx: 999_999 + } + + -- emptyTx :: Distribute.Tx Unit String Int + -- emptyTx = + -- { source: { key: unit } + -- , total: 0 + -- , totalUtxos: 0 + -- , utxos: Nil + -- } + + -- emptySource :: Int -> Distribute.SourceState Int String Int + -- emptySource src = + -- { source: src + -- , leftover: 0 + -- , tx: emptyTx + -- , completeTxs: Nil + -- } + test "Fails if sources do not have enough funds" do + + let + outcome = + Distribute.assignUtxo + highThreshold + { amount: 120, key: "utxo0" } + $ List.fromFoldable + [ Distribute.initialSourceState + { key: 1, initialFunds: 90 } + , Distribute.initialSourceState + { key: 2, initialFunds: 100 } + ] + lmap (const unit) outcome `shouldEqual` Left unit + test "Starts new Tx when reaches the limit of UTxOs" do + let + thresholds = highThreshold { maxTargetUtxosPerTx = 3 } + + src0 :: Distribute.SourceState Int String Int + src0 = + ( Distribute.initialSourceState + { key: 0, initialFunds: 90 } + ) + { tx = (Distribute.emptyTx 370) + { totalUtxos = 2 + , utxos = List.fromFoldable + [ { key: "tgt0", amount: 300 } + , { key: "tgt42", amount: 70 } + ] + } + } + + src1 :: Distribute.SourceState Int String Int + src1 = Distribute.initialSourceState + { key: 1, initialFunds: 30 } + + utxo0 = { amount: 10, key: "utxo0" } + utxo1 = { amount: 6, key: "utxo1" } + acc0 = List.fromFoldable [ src0, src1 ] + outcome = do + acc1 <- Distribute.assignUtxo + thresholds + utxo0 + acc0 + acc2 <- Distribute.assignUtxo + thresholds + utxo1 + acc1 + pure acc2 + + expected :: List (Distribute.SourceState Int String Int) + expected = List.fromFoldable + [ src1 + { leftover = src1.leftover - utxo1.amount + , tx = (Distribute.emptyTx utxo1.amount) + { totalUtxos = 1 + , utxos = Cons utxo1 Nil + } + } + , src0 + { leftover = src0.leftover - utxo0.amount + , tx = Distribute.emptyTx zero + , completeTxs = + let + tx' = src0.tx + { total = src0.tx.total + utxo0.amount + , totalUtxos = 3 + , utxos = Cons utxo0 src0.tx.utxos + } + in + Cons tx' src0.completeTxs + } + ] + + outcome `shouldEqual` Right expected + test "Tends to spend sources evenly" do + let + utxos0 = List.fromFoldable + [ { key: "01", amount: 2 } + , { key: "02", amount: 18 } + ] + utxos1 = List.fromFoldable + [ { key: "11", amount: 3 } + , { key: "12", amount: 17 } + ] + utxos2 = List.fromFoldable + [ { key: "21", amount: 9 } + , { key: "22", amount: 11 } + ] + utxos3 = List.fromFoldable + [ { key: "31", amount: 15 } + , { key: "32", amount: 5 } + ] + -- total = 80 + utxos = utxos0 <> utxos1 <> utxos2 <> utxos3 + + -- they have exactly enough to fit all the utxos + src0 = Distribute.initialSourceState + { key: 0, initialFunds: 40 } + src1 = Distribute.initialSourceState + { key: 1, initialFunds: 40 } + sources = List.fromFoldable [ src0, src1 ] + + outcome = foldM + ( flip $ Distribute.assignUtxo highThreshold + { maxTargetUtxosPerTx = 2 } + ) + sources + utxos + + -- Both must have 2 txs, 20 UTxO each. All sources funds must be spent. + expected = List.fromFoldable + [ src1 + { leftover = 0 + -- it would be put in completeTxs on the next iteration + , tx = (Distribute.emptyTx 20) + { totalUtxos = 2 + , utxos = List.reverse utxos3 + } + , completeTxs = List.fromFoldable + [ (Distribute.emptyTx 20) + { totalUtxos = 2 + , utxos = List.reverse utxos1 + } + ] + } + , src0 + { leftover = 0 + , completeTxs = List.fromFoldable + [ (Distribute.emptyTx 20) + { totalUtxos = 2 + , utxos = List.reverse utxos2 + } + , (Distribute.emptyTx 20) + { totalUtxos = 2 + , utxos = List.reverse utxos0 + } + ] + + } + ] + outcome `shouldEqual` Right expected + + -- It could be better: seach for a source that have a Tx with lowest total or lowest amount of UTxOs + -- But if it worths it? + test "Makes new Tx if utxo is impossible to fit in existing ones" do + let + src0 = + ( Distribute.initialSourceState + { key: 0, initialFunds: 900 } + ) + { tx = Distribute.emptyTx 120 + } + src1 = + ( Distribute.initialSourceState + { key: 1, initialFunds: 800 } + ) + { tx = Distribute.emptyTx 105 + } + utxo = { key: "utxo0", amount: 100 } + outcome = + Distribute.assignUtxo + highThreshold { maxCoinPerTx = 200 } + utxo + $ List.fromFoldable [ src0, src1 ] + expected = List.fromFoldable + [ src0 + , src1 + { leftover = src1.leftover - utxo.amount + , tx = (Distribute.emptyTx utxo.amount) + { totalUtxos = 1 + , utxos = Cons utxo Nil + } + , completeTxs = Cons src1.tx Nil + } + ] + outcome `shouldEqual` Right expected + test "Tries to fit UTxO in any constructing tx that can fit it" do + let + src0 = + ( Distribute.initialSourceState + { key: 0, initialFunds: 900 } + ) + -- not enough to fit the utxo + { tx = Distribute.emptyTx 120 + } + src1 = + ( Distribute.initialSourceState + { key: 1, initialFunds: 800 } + ) + { -- exactly enough to fit the utxo + tx = Distribute.emptyTx 100 + } + utxo = { key: "utxo0", amount: 100 } + outcome = + Distribute.assignUtxo + highThreshold { maxCoinPerTx = 200 } + utxo + $ List.fromFoldable [ src0, src1 ] + expected = List.fromFoldable + [ src0 + , src1 + { leftover = src1.leftover - utxo.amount + , tx = + ( Distribute.emptyTx + (src1.tx.total + utxo.amount) + ) + { totalUtxos = 1 + , utxos = Cons utxo Nil + } + } + ] + outcome `shouldEqual` Right expected + test "Tries to fit UTxO in any source tx that has enough funds" do + let + -- not enough + src0 = Distribute.initialSourceState + { key: 0, initialFunds: 200 } + src1 = Distribute.initialSourceState + { key: 1, initialFunds: 100 } + -- enough + src2 = Distribute.initialSourceState + { key: 2, initialFunds: 300 } + utxo = { key: "utxo0", amount: 250 } + outcome = map (List.sortBy $ comparing _.source) + $ Distribute.assignUtxo highThreshold utxo + $ List.fromFoldable [ src0, src1, src2 ] + expected = List.sortBy (comparing _.source) $ List.fromFoldable + [ src0 + , src1 + , src2 + { leftover = src2.leftover - utxo.amount + , tx = (Distribute.emptyTx utxo.amount) + { totalUtxos = 1 + , utxos = Cons utxo Nil + } + } + ] + outcome `shouldEqual` Right expected + test "Fails if UTxO amount is higher than threshold" do + let + -- not enough + src0 = Distribute.initialSourceState + { key: 0, initialFunds: 300 } + src1 = Distribute.initialSourceState + { key: 1, initialFunds: 900 } + utxo = { key: "utxo0", amount: 250 } + outcome = + Distribute.assignUtxo + highThreshold { maxCoinPerTx = 200 } + utxo + $ List.fromFoldable [ src0, src1 ] + lmap (const unit) outcome `shouldEqual` Left unit + pure unit + diff --git a/test/Unit.purs b/test/Unit.purs index c7882764b..2df8e4a08 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -28,6 +28,7 @@ import Test.Ctl.Partition as Partition import Test.Ctl.ProtocolParams as ProtocolParams import Test.Ctl.Serialization as Serialization import Test.Ctl.Serialization.Hash as Serialization.Hash +import Test.Ctl.Testnet.DistributeFunds as Testnet.DistributeFunds import Test.Ctl.Types.Interval as Types.Interval import Test.Ctl.Types.Ipv6 as Ipv6 import Test.Ctl.Types.TokenName as Types.TokenName @@ -47,6 +48,7 @@ main = interruptOnSignal SIGINT =<< launchAff do testPlan :: TestPlanM (Aff Unit) Unit testPlan = do + Testnet.DistributeFunds.suite ApplyArgs.suite Ipv6.suite NativeScript.suite From 48214103599c1817d88f75e6b232c1a3bb0bfe1c Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 13 Jun 2024 17:08:14 +0200 Subject: [PATCH 218/373] Bump cardano-node, ogmios, and kupo; Fix warnings --- Makefile | 7 +- flake.lock | 14584 +++++++++++++++++++++--------- flake.nix | 47 +- src/Internal/QueryM/Ogmios.purs | 1 - test/Fixtures.purs | 40 +- 5 files changed, 10552 insertions(+), 4127 deletions(-) diff --git a/Makefile b/Makefile index c84457f7e..5b78bb779 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,12 @@ SHELL := bash .ONESHELL: -.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports spago-build create-bundle-entrypoint create-html-entrypoint delete-bundle-entrypoint +.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports build create-bundle-entrypoint create-html-entrypoint delete-bundle-entrypoint .SHELLFLAGS := -eu -o pipefail -c ps-sources := $(shell fd --no-ignore-parent -epurs) nix-sources := $(shell fd --no-ignore-parent -enix --exclude='spago*') js-sources := $(shell fd --no-ignore-parent -ejs -ecjs) +purs-args := "--stash --censor-lib --censor-codes=UserDefinedWarning,ImplicitImport,ImplicitQualifiedImport,ImplicitQualifiedImportReExport" ### Bundler setup @@ -21,8 +22,8 @@ preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') serve-port := 4008 -spago-build: - @spago build +build: + @spago build --purs-args ${purs-args} create-bundle-entrypoint: @mkdir -p dist/ diff --git a/flake.lock b/flake.lock index 3a8562dcd..f62a8ad13 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1702742788, - "narHash": "sha256-lSU0M27LC0d60cJ2C2Kdo6gBwTCCYRiALbD528CoTtc=", + "lastModified": 1718200515, + "narHash": "sha256-LhZDhH/Ii4X7r+bo7LGC+Q//OiUJ8uRwCJ5ULNpbj00=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "4a236a8ad9e3c6d20235de27eacbe3d4de72479c", + "rev": "b731179078dc9960d68c3d0297d1c26f69e33614", "type": "github" }, "original": { @@ -18,6 +18,23 @@ } }, "CHaP_2": { + "flake": false, + "locked": { + "lastModified": 1702906471, + "narHash": "sha256-br+hVo3R6nfmiSEPXcLKhIX4Kg5gcK2PjzjmvQsuUp8=", + "owner": "IntersectMBO", + "repo": "cardano-haskell-packages", + "rev": "48a359ac3f1d437ebaa91126b20e15a65201f004", + "type": "github" + }, + "original": { + "owner": "IntersectMBO", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_3": { "flake": false, "locked": { "lastModified": 1686070892, @@ -34,14 +51,14 @@ "type": "github" } }, - "CHaP_3": { + "CHaP_4": { "flake": false, "locked": { - "lastModified": 1695160702, - "narHash": "sha256-+Mfc6eGA1ZwQ/ZjKzMoMWkHzd+sgR1JbxY0i849HjEU=", + "lastModified": 1702593630, + "narHash": "sha256-IWu27+sfPtazjIZiWLUm8G4BKvjXmIL+/1XT/ETnfhg=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "9932690af3713ef034c928850252eb1b88450ee6", + "rev": "9783a177efcea5beb8808aab7513098bdab185ba", "type": "github" }, "original": { @@ -51,7 +68,24 @@ "type": "github" } }, - "CHaP_4": { + "CHaP_5": { + "flake": false, + "locked": { + "lastModified": 1715690409, + "narHash": "sha256-+PWaq7ngq5d601d+GBNggNuzT+jXSV7Dl2IrMNCY1KQ=", + "owner": "intersectmbo", + "repo": "cardano-haskell-packages", + "rev": "0ce6797192cbbab051cd8fe5b7516b55273229f1", + "type": "github" + }, + "original": { + "owner": "intersectmbo", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_6": { "flake": false, "locked": { "lastModified": 1694601145, @@ -84,6 +118,22 @@ "type": "github" } }, + "HTTP_10": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_2": { "flake": false, "locked": { @@ -180,9 +230,41 @@ "type": "github" } }, + "HTTP_8": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_9": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -200,8 +282,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_10" + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641404293, @@ -219,8 +301,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_12" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_43" }, "locked": { "lastModified": 1641404293, @@ -238,8 +320,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_41" + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_72" }, "locked": { "lastModified": 1641404293, @@ -257,7 +339,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_42" }, "locked": { "lastModified": 1641576265, @@ -350,7 +432,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_40" + "nixpkgs": "nixpkgs_71" }, "locked": { "lastModified": 1641576265, @@ -418,7 +500,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_35" + "nixpkgs": "nixpkgs_66" }, "locked": { "lastModified": 1646360966, @@ -434,6 +516,51 @@ "type": "github" } }, + "ameba-src": { + "flake": false, + "locked": { + "lastModified": 1679041484, + "narHash": "sha256-pc9mtVR/PBhM5l1PnDkm+y+McxbrfAmQzxmLi761VF4=", + "owner": "crystal-ameba", + "repo": "ameba", + "rev": "7c74d196d6d9a496a81a0c7b79ef44f39faf41b8", + "type": "github" + }, + "original": { + "owner": "crystal-ameba", + "ref": "v1.4.3", + "repo": "ameba", + "type": "github" + } + }, + "auth-keys-hub": { + "inputs": { + "crystal": "crystal", + "flake-parts": "flake-parts_2", + "inclusive": "inclusive", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ], + "statix": "statix", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1691483346, + "narHash": "sha256-wvn84eGcc+PMbq/qSCWcZ/kV7/bjwuGOVSn/9rGaaKw=", + "owner": "input-output-hk", + "repo": "auth-keys-hub", + "rev": "ab7c79f49886b8f24cfae4b967a59ea62af9156e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "auth-keys-hub", + "type": "github" + } + }, "bats-assert": { "flake": false, "locked": { @@ -482,6 +609,22 @@ "type": "github" } }, + "bats-assert_4": { + "flake": false, + "locked": { + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "type": "github" + }, + "original": { + "owner": "bats-core", + "repo": "bats-assert", + "type": "github" + } + }, "bats-support": { "flake": false, "locked": { @@ -530,28 +673,61 @@ "type": "github" } }, + "bats-support_4": { + "flake": false, + "locked": { + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "type": "github" + }, + "original": { + "owner": "bats-core", + "repo": "bats-support", + "type": "github" + } + }, + "bdwgc-src": { + "flake": false, + "locked": { + "lastModified": 1661523039, + "narHash": "sha256-UYJQGeSykmfydGAmTlNJNyAPBasBkddOSoopBHiY7TI=", + "owner": "ivmai", + "repo": "bdwgc", + "rev": "cd1fbc1dbfd2cc888436944dd2784f39820698d7", + "type": "github" + }, + "original": { + "owner": "ivmai", + "ref": "v8.2.2", + "repo": "bdwgc", + "type": "github" + } + }, "bitte": { "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_2", + "blank": "blank_6", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", - "fenix": "fenix_4", - "hydra": "hydra_3", - "n2c": "n2c_2", - "nix": "nix_5", - "nixpkgs": "nixpkgs_29", + "fenix": "fenix_7", + "hydra": "hydra_7", + "n2c": "n2c_6", + "nix": "nix_10", + "nixpkgs": "nixpkgs_60", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_3", + "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_3", + "ops-lib": "ops-lib_5", "ragenix": "ragenix_3", - "std": "std_2", - "terranix": "terranix_2", - "utils": "utils_12" + "std": "std_6", + "terranix": "terranix_3", + "utils": "utils_17" }, "locked": { "lastModified": 1661790449, @@ -629,20 +805,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_3", + "blank": "blank_7", "deploy": "deploy", - "fenix": "fenix_2", - "hydra": "hydra_2", - "nix": "nix_2", - "nixpkgs": "nixpkgs_15", - "nixpkgs-unstable": "nixpkgs-unstable_2", + "fenix": "fenix_5", + "hydra": "hydra_6", + "nix": "nix_7", + "nixpkgs": "nixpkgs_46", + "nixpkgs-unstable": "nixpkgs-unstable_7", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib_2", + "ops-lib": "ops-lib_4", "ragenix": "ragenix", - "terranix": "terranix", - "utils": "utils_7", + "terranix": "terranix_2", + "utils": "utils_12", "vulnix": "vulnix" }, "locked": { @@ -663,20 +839,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_4", + "blank": "blank_8", "deploy": "deploy_3", - "fenix": "fenix_6", - "hydra": "hydra_4", - "nix": "nix_9", - "nixpkgs": "nixpkgs_44", - "nixpkgs-unstable": "nixpkgs-unstable_4", + "fenix": "fenix_9", + "hydra": "hydra_8", + "nix": "nix_14", + "nixpkgs": "nixpkgs_75", + "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_4", + "ops-lib": "ops-lib_6", "ragenix": "ragenix_4", - "terranix": "terranix_3", - "utils": "utils_21", + "terranix": "terranix_4", + "utils": "utils_26", "vulnix": "vulnix_2" }, "locked": { @@ -768,6 +944,51 @@ "type": "github" } }, + "blank_6": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_7": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_8": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -821,37 +1042,139 @@ "type": "github" } }, - "byron-chain": { + "blst_3": { "flake": false, "locked": { - "lastModified": 1557232434, - "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32": { + "blst_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_5": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_6": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_7": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "byron-chain": { + "flake": false, + "locked": { + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "type": "github" + } + }, + "cabal-32": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_10": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" } }, "cabal-32_2": { @@ -956,6 +1279,40 @@ "type": "github" } }, + "cabal-32_8": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_9": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, "cabal-34": { "flake": false, "locked": { @@ -973,14 +1330,31 @@ "type": "github" } }, + "cabal-34_10": { + "flake": false, + "locked": { + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -993,11 +1367,11 @@ "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -1008,6 +1382,40 @@ } }, "cabal-34_4": { + "flake": false, + "locked": { + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34_5": { + "flake": false, + "locked": { + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34_6": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1024,7 +1432,7 @@ "type": "github" } }, - "cabal-34_5": { + "cabal-34_7": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1041,14 +1449,14 @@ "type": "github" } }, - "cabal-34_6": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -1058,7 +1466,7 @@ "type": "github" } }, - "cabal-34_7": { + "cabal-34_9": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1092,14 +1500,14 @@ "type": "github" } }, - "cabal-36_2": { + "cabal-36_10": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1109,14 +1517,14 @@ "type": "github" } }, - "cabal-36_3": { + "cabal-36_2": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1126,14 +1534,14 @@ "type": "github" } }, - "cabal-36_4": { + "cabal-36_3": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1143,14 +1551,14 @@ "type": "github" } }, - "cabal-36_5": { + "cabal-36_4": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1160,7 +1568,7 @@ "type": "github" } }, - "cabal-36_6": { + "cabal-36_5": { "flake": false, "locked": { "lastModified": 1669081697, @@ -1177,7 +1585,7 @@ "type": "github" } }, - "cabal-36_7": { + "cabal-36_6": { "flake": false, "locked": { "lastModified": 1641652457, @@ -1194,24 +1602,90 @@ "type": "github" } }, - "capsules": { - "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_23", - "ragenix": "ragenix_2" - }, + "cabal-36_7": { + "flake": false, "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_8": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_9": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "capkgs": { + "locked": { + "lastModified": 1697123727, + "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", + "owner": "input-output-hk", + "repo": "capkgs", + "rev": "b197e225592dfe38afb80c94b628d99968c0541d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "capkgs", + "type": "github" + } + }, + "capsules": { + "inputs": { + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_54", + "ragenix": "ragenix_2" + }, + "locked": { + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, @@ -1219,7 +1693,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_52", + "nixpkgs": "nixpkgs_83", "ragenix": "ragenix_5" }, "locked": { @@ -1238,17 +1712,20 @@ }, "cardano-automation": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_4", "haskellNix": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "haskellNix" ], "nixpkgs": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "nixpkgs" ], "tullia": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia" ] }, @@ -1266,911 +1743,1073 @@ "type": "github" } }, - "cardano-configurations": { - "flake": false, + "cardano-automation_2": { + "inputs": { + "flake-utils": "flake-utils_9", + "haskellNix": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "tullia": "tullia_2" + }, "locked": { - "lastModified": 1699561895, - "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "repo": "cardano-automation", "type": "github" } }, - "cardano-configurations_2": { - "flake": false, + "cardano-automation_3": { + "inputs": { + "flake-utils": "flake-utils_16", + "haskellNix": [ + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "tullia": "tullia_3" + }, "locked": { - "lastModified": 1694019972, - "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", + "repo": "cardano-automation", "type": "github" } }, - "cardano-explorer-app": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "lastModified": 1715909148, + "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "repo": "cardano-configurations", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "repo": "cardano-configurations", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" } }, - "cardano-graphql": { + "cardano-configurations-8.1.1": { "flake": false, "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "lastModified": 1692193634, + "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-graphql", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_2" - }, + "cardano-configurations-8.7.3": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "lastModified": 1702085095, + "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" } }, - "cardano-node": { + "cardano-db-sync": { "inputs": { "CHaP": "CHaP_2", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake", - "flake-compat": "flake-compat", + "cardano-parts": "cardano-parts", + "flake-compat": "flake-compat_4", "hackageNix": "hackageNix", "haskellNix": "haskellNix", - "hostNixpkgs": [ - "cardano-node", - "nixpkgs" - ], "iohkNix": "iohkNix", - "nix2container": "nix2container", "nixpkgs": [ - "cardano-node", + "cardano-nix", + "cardano-db-sync", "haskellNix", "nixpkgs-unstable" ], - "ops-lib": "ops-lib", - "std": [ - "cardano-node", - "tullia", - "std" - ], - "tullia": "tullia", - "utils": "utils_2" + "utils": "utils" }, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "lastModified": 1707925775, + "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", + "owner": "intersectmbo", + "repo": "cardano-db-sync", + "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "8.1.1", - "repo": "cardano-node", + "owner": "intersectmbo", + "ref": "13.2.0.1", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-node_2": { + "cardano-db-sync-schema": { "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-shell": { + "cardano-db-sync-schema-ng": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1694078776, + "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-db-sync", + "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "sancho-1-1-0", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-shell_2": { + "cardano-db-sync-service": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-shell_3": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "cardano-shell_4": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "cardano-graphql", "type": "github" } }, - "cardano-shell_5": { - "flake": false, + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_14" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cardano-shell_6": { - "flake": false, + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_24" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cardano-shell_7": { - "flake": false, + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_34" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cardano-wallet": { + "cardano-nix": { "inputs": { - "customConfig": "customConfig_2", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_25", - "haskellNix": "haskellNix_2", + "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", + "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", + "cardano-db-sync": "cardano-db-sync", + "cardano-node-8.1.1": "cardano-node-8.1.1", + "cardano-node-8.7.3": "cardano-node-8.7.3", + "devour-flake": "devour-flake", + "devshell": "devshell_4", + "flake-parts": "flake-parts_5", + "flake-root": "flake-root", + "hercules-ci-effects": "hercules-ci-effects", + "nixpkgs": "nixpkgs_30", + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "treefmt-nix": "treefmt-nix_3" + }, + "locked": { + "lastModified": 1717782115, + "narHash": "sha256-RfG3Z7Ph8UDQUsTAfGJ3lbLZK5W9p2i9iyceBJISb5Q=", + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "rev": "f641fb662d17d38a2d7ca543966d36f39c9a6cba", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "type": "github" + } + }, + "cardano-node": { + "inputs": { + "CHaP": "CHaP_5", + "cardano-automation": "cardano-automation_3", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "customConfig": "customConfig_3", + "em": "em_3", + "empty-flake": "empty-flake_4", + "flake-compat": "flake-compat_15", + "hackageNix": "hackageNix_4", + "haskellNix": "haskellNix_4", "hostNixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", + "cardano-node", "nixpkgs" ], - "iohkNix": "iohkNix_2", + "iohkNix": "iohkNix_4", + "nix2container": "nix2container_6", "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", + "cardano-node", "haskellNix", "nixpkgs-unstable" - ] + ], + "ops-lib": "ops-lib_3", + "std": "std_5", + "utils": "utils_7" }, "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "lastModified": 1715901350, + "narHash": "sha256-teLUo4cQ9H52EkmJ9uXOIuyI78DtrKWxflJm+BnBqlM=", + "owner": "IntersectMBO", + "repo": "cardano-node", + "rev": "235e34f6df9a1490190f6247b610b4e114ca3b96", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", + "owner": "IntersectMBO", + "ref": "8.11.0-sancho", + "repo": "cardano-node", "type": "github" } }, - "cardano-world": { + "cardano-node-8.1.1": { "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ - "db-sync" + "CHaP": "CHaP_3", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake_2", + "flake-compat": "flake-compat_6", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node_2", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_9", - "hackage": "hackage_3", - "haskell-nix": "haskell-nix_2", - "iohk-nix": "iohk-nix", - "n2c": "n2c_3", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_63", - "nixpkgs-haskell": [ - "db-sync", - "cardano-world", - "haskell-nix", + "iohkNix": "iohkNix_2", + "nix2container": "nix2container", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", "nixpkgs-unstable" ], - "ogmios": "ogmios", - "std": "std_3", - "tullia": "tullia_2" + "ops-lib": "ops-lib", + "std": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_3" }, "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", - "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-world", + "owner": "intersectmbo", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "cicero": { + "cardano-node-8.7.3": { "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_8", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix", - "inclusive": "inclusive_8", - "nix": "nix_8", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_39", - "poetry2nix": "poetry2nix", - "utils": "utils_16" + "CHaP": "CHaP_4", + "cardano-automation": "cardano-automation_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "customConfig": "customConfig_2", + "em": "em_2", + "empty-flake": "empty-flake_3", + "flake-compat": "flake-compat_10", + "hackageNix": "hackageNix_3", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nix2container": "nix2container_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_2", + "std": "std_3", + "utils": "utils_5" }, "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", - "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "lastModified": 1702654749, + "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cicero", + "owner": "intersectmbo", + "ref": "8.7.3", + "repo": "cardano-node", "type": "github" } }, - "customConfig": { + "cardano-node-service": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1690209950, + "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-node", + "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "8.1.2", + "repo": "cardano-node", "type": "github" } }, - "customConfig_2": { + "cardano-node_2": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "customConfig_3": { - "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" - }, - "original": { - "path": "./custom-config", - "type": "path" - } - }, - "data-merge": { + "cardano-parts": { "inputs": { - "nixlib": "nixlib", - "yants": "yants_2" + "auth-keys-hub": "auth-keys-hub", + "capkgs": "capkgs", + "cardano-db-sync-schema": "cardano-db-sync-schema", + "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", + "cardano-db-sync-service": "cardano-db-sync-service", + "cardano-node-service": "cardano-node-service", + "cardano-wallet-service": "cardano-wallet-service", + "colmena": "colmena", + "empty-flake": "empty-flake", + "flake-parts": "flake-parts_3", + "haskell-nix": "haskell-nix", + "inputs-check": "inputs-check", + "iohk-nix": "iohk-nix", + "iohk-nix-ng": "iohk-nix-ng", + "nix": "nix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "nixpkgs-unstable": "nixpkgs-unstable_2", + "offchain-metadata-tools-service": "offchain-metadata-tools-service", + "sops-nix": "sops-nix", + "terraform-providers": "terraform-providers", + "terranix": "terranix", + "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", - "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", + "lastModified": 1697147999, + "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", + "owner": "input-output-hk", + "repo": "cardano-parts", + "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-parts", "type": "github" } }, - "data-merge_2": { - "inputs": { - "nixlib": "nixlib_2" - }, + "cardano-shell": { + "flake": false, "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "data-merge_3": { - "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_4" - }, + "cardano-shell_10": { + "flake": false, "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "db-sync": { - "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_3", - "flake-compat": "flake-compat_10", - "haskellNix": "haskellNix_3", - "iohkNix": "iohkNix_3", - "nixpkgs": [ - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_23" - }, + "cardano-shell_2": { + "flake": false, "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "13.1.0.0", - "repo": "cardano-db-sync", + "repo": "cardano-shell", "type": "github" } }, - "deploy": { - "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat_4", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_3" - }, + "cardano-shell_3": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "cardano-shell", "type": "github" } }, - "deploy_2": { - "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_5", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_9" - }, + "cardano-shell_4": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "cardano-shell", "type": "github" } }, - "deploy_3": { - "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_6", - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_17" - }, + "cardano-shell_5": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "cardano-shell", "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "cardano-shell_6": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_10": { + "cardano-shell_7": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_11": { + "cardano-shell_8": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_12": { + "cardano-shell_9": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_13": { + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig_4", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_22", + "flake-utils": "flake-utils_41", + "haskellNix": "haskellNix_5", + "hostNixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix_5", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "devshell_14": { + "cardano-wallet-service": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1689751896, + "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", + "owner": "cardano-foundation", + "repo": "cardano-wallet", + "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "cardano-foundation", + "ref": "v2023-07-18", + "repo": "cardano-wallet", "type": "github" } }, - "devshell_15": { + "cardano-world": { "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "std", - "flake-utils" + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "db-sync" ], - "nixpkgs": [ + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_23", + "hackage": "hackage_4", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "n2c": "n2c_7", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_94", + "nixpkgs-haskell": [ "db-sync", "cardano-world", - "std", - "nixpkgs" - ] + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_7", + "tullia": "tullia_4" }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "devshell_16": { + "cicero": { "inputs": { - "flake-utils": "flake-utils_31", + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_13", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix_2", + "inclusive": "inclusive_9", + "nix": "nix_13", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_70", + "poetry2nix": "poetry2nix", + "utils": "utils_21" + }, + "locked": { + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cicero", + "type": "github" + } + }, + "colmena": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", "nixpkgs": [ - "db-sync", - "cardano-world", - "tullia", - "std", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", "nixpkgs" - ] + ], + "stable": "stable" }, "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "lastModified": 1684127108, + "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", + "owner": "zhaofengli", + "repo": "colmena", + "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "zhaofengli", + "ref": "v0.4.0", + "repo": "colmena", "type": "github" } }, - "devshell_2": { + "crane": { + "inputs": { + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_14", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "ipetkov", + "repo": "crane", "type": "github" } }, - "devshell_3": { + "crane_2": { + "inputs": { + "flake-compat": "flake-compat_17", + "flake-utils": "flake-utils_21", + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay_2" + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "ipetkov", + "repo": "crane", "type": "github" } }, - "devshell_4": { + "crystal": { + "inputs": { + "ameba-src": "ameba-src", + "bdwgc-src": "bdwgc-src", + "crystal-aarch64-darwin": "crystal-aarch64-darwin", + "crystal-src": "crystal-src", + "crystal-x86_64-darwin": "crystal-x86_64-darwin", + "crystal-x86_64-linux": "crystal-x86_64-linux", + "crystalline-src": "crystalline-src", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" + }, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1683429373, + "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", + "owner": "manveru", + "repo": "crystal-flake", + "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "manveru", + "repo": "crystal-flake", "type": "github" } }, - "devshell_5": { + "crystal-aarch64-darwin": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + } + }, + "crystal-src": { + "flake": false, + "locked": { + "lastModified": 1681995387, + "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", + "owner": "crystal-lang", + "repo": "crystal", + "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "crystal-lang", + "ref": "1.8.1", + "repo": "crystal", "type": "github" } }, - "devshell_6": { + "crystal-x86_64-darwin": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + } + }, + "crystal-x86_64-linux": { + "flake": false, + "locked": { + "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + } + }, + "crystalline-src": { + "flake": false, + "locked": { + "lastModified": 1681549124, + "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", + "owner": "elbywan", + "repo": "crystalline", + "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "elbywan", + "ref": "v0.9.0", + "repo": "crystalline", "type": "github" } }, - "devshell_7": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, + "customConfig": { "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "devshell_8": { - "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": "nixpkgs_36" + "customConfig_2": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_3": { "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "devshell_9": { + "customConfig_4": { "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "dmerge": { + "customConfig_5": { + "locked": { + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" + }, + "original": { + "path": "./custom-config", + "type": "path" + } + }, + "data-merge": { "inputs": { - "nixlib": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-node", - "tullia", - "std", - "yants" - ] + "nixlib": "nixlib", + "yants": "yants_6" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", "owner": "divnix", "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { @@ -2179,29 +2818,16 @@ "type": "github" } }, - "dmerge_2": { + "data-merge_2": { "inputs": { - "nixlib": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] + "nixlib": "nixlib_2" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", "owner": "divnix", "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { @@ -2210,27 +2836,17 @@ "type": "github" } }, - "dmerge_3": { + "data-merge_3": { "inputs": { - "nixlib": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "db-sync", - "cardano-world", - "std", - "yants" - ] + "nixlib": "nixlib_3", + "yants": "yants_8" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", "owner": "divnix", "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { @@ -2239,1044 +2855,1345 @@ "type": "github" } }, - "driver": { + "db-sync": { "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_6", - "nix": "nix_7", + "cardano-world": "cardano-world", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_24", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", "nixpkgs": [ "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" + "haskellNix", + "nixpkgs-unstable" ], - "utils": "utils_13" + "utils": "utils_28" }, "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", + "repo": "cardano-db-sync", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "ref": "13.1.0.0", + "repo": "cardano-db-sync", "type": "github" } }, - "easy-purescript-nix": { - "flake": false, + "deploy": { + "inputs": { + "fenix": "fenix_4", + "flake-compat": "flake-compat_18", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_8" + }, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "em": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_6", + "flake-compat": "flake-compat_19", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_14" + }, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "ema": { + "deploy_3": { "inputs": { - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_54", - "pre-commit-hooks": "pre-commit-hooks" + "fenix": "fenix_8", + "flake-compat": "flake-compat_20", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_22" }, "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "srid", - "repo": "ema", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "ema_2": { + "devour-flake": { "flake": false, "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "lastModified": 1709858306, + "narHash": "sha256-Vey9n9hIlWiSAZ6CCTpkrL6jt4r2JvT2ik9wa2bjeC0=", "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "repo": "devour-flake", + "rev": "17b711b9deadbbc5629cb7d2b64cf86ae72af3fa", "type": "github" }, "original": { "owner": "srid", - "ref": "multisite", - "repo": "ema", + "repo": "devour-flake", "type": "github" } }, - "emanote": { + "devshell": { "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_57", - "tailwind-haskell": "tailwind-haskell" + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "srid", - "repo": "emanote", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "empty-flake": { + "devshell_10": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix": { - "inputs": { - "nixpkgs": "nixpkgs_13", - "rust-analyzer-src": "rust-analyzer-src" - }, + "devshell_11": { "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_2": { + "devshell_12": { "inputs": { - "nixpkgs": [ + "flake-utils": [ "db-sync", "cardano-world", "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" + "std", + "flake-utils" ], - "rust-analyzer-src": "rust-analyzer-src_2" + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_3": { + "devshell_13": { "inputs": { - "nixpkgs": "nixpkgs_26", - "rust-analyzer-src": "rust-analyzer-src_3" + "flake-utils": "flake-utils_31", + "nixpkgs": "nixpkgs_67" }, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_4": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_4" - }, + "devshell_14": { "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_5": { - "inputs": { - "nixpkgs": "nixpkgs_42", - "rust-analyzer-src": "rust-analyzer-src_5" - }, + "devshell_15": { "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_6": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_6" - }, + "devshell_16": { "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat": { - "flake": false, + "devshell_17": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_10": { - "flake": false, + "devshell_18": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_11": { - "flake": false, + "devshell_19": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_12": { - "flake": false, + "devshell_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_13": { - "flake": false, + "devshell_20": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_14": { - "flake": false, + "devshell_21": { + "inputs": { + "flake-utils": "flake-utils_47", + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_2": { - "flake": false, + "devshell_3": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "systems": "systems_2" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_3": { - "flake": false, + "devshell_4": { + "inputs": { + "flake-utils": "flake-utils_15", + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1713532798, + "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", + "owner": "numtide", + "repo": "devshell", + "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_4": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" + "devshell_5": { + "inputs": { + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_5": { - "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_6": { - "flake": false, + "devshell_6": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "systems": "systems_4" + }, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_7": { - "flake": false, + "devshell_7": { "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_8": { - "flake": false, + "devshell_8": { "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_9": { - "flake": false, + "devshell_9": { "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts": { + "dmerge": { "inputs": { - "nixpkgs": "nixpkgs_56" + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-parts_2": { + "dmerge_2": { "inputs": { - "nixpkgs-lib": [ - "hercules-ci-effects", + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" ] }, "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "id": "flake-parts", - "type": "indirect" + "owner": "divnix", + "repo": "data-merge", + "type": "github" } }, - "flake-utils": { + "dmerge_3": { + "inputs": { + "haumea": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea" + ], + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "flake-utils_10": { + "dmerge_4": { + "inputs": { + "nixlib": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_11": { + "dmerge_5": { + "inputs": { + "haumea": [ + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "flake-utils_12": { + "dmerge_6": { + "inputs": { + "nixlib": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ], + "yants": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_13": { + "dmerge_7": { + "inputs": { + "nixlib": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ], + "yants": [ + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_14": { + "driver": { + "inputs": { + "devshell": "devshell_14", + "inclusive": "inclusive_7", + "nix": "nix_12", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_18" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "flake-utils_15": { + "easy-purescript-nix": { + "flake": false, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_16": { + "em": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_17": { + "em_2": { + "flake": false, "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_18": { + "em_3": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_19": { + "ema": { + "inputs": { + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_85", + "pre-commit-hooks": "pre-commit-hooks" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "repo": "ema", "type": "github" } }, - "flake-utils_2": { + "ema_2": { + "flake": false, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "srid", + "ref": "multisite", + "repo": "ema", "type": "github" } }, - "flake-utils_20": { + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts_6", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_88", + "tailwind-haskell": "tailwind-haskell" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "repo": "emanote", "type": "github" } }, - "flake-utils_21": { + "empty-flake": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_22": { + "empty-flake_2": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_23": { + "empty-flake_3": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_24": { + "empty-flake_4": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_25": { + "fenix": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "auth-keys-hub", + "statix", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1645251813, + "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", + "owner": "nix-community", + "repo": "fenix", + "rev": "9892337b588c38ec59466a1c89befce464aae7f8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_26": { + "fenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_29", + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_27": { + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_39", + "rust-analyzer-src": "rust-analyzer-src_3" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_28": { + "fenix_4": { + "inputs": { + "nixpkgs": "nixpkgs_44", + "rust-analyzer-src": "rust-analyzer-src_4" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_29": { + "fenix_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_5" + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_3": { + "fenix_6": { + "inputs": { + "nixpkgs": "nixpkgs_57", + "rust-analyzer-src": "rust-analyzer-src_6" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_30": { + "fenix_7": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_7" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_31": { + "fenix_8": { + "inputs": { + "nixpkgs": "nixpkgs_73", + "rust-analyzer-src": "rust-analyzer-src_8" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_32": { + "fenix_9": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_9" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_33": { + "flake-compat": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_4": { + "flake-compat_10": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_5": { + "flake-compat_11": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_6": { + "flake-compat_12": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_7": { + "flake-compat_13": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_8": { + "flake-compat_14": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_9": { + "flake-compat_15": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "flakeCompat": { + "flake-compat_16": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_17": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -3285,3389 +4202,7542 @@ "type": "github" } }, - "follower": { - "inputs": { - "devshell": "devshell_10", - "inclusive": "inclusive_7", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_14" - }, + "flake-compat_18": { + "flake": false, "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk": { + "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_2": { + "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_3": { + "flake-compat_20": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_4": { + "flake-compat_21": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_5": { + "flake-compat_22": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_6": { + "flake-compat_23": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_7": { + "flake-compat_24": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "ghc98X": { + "flake-compat_25": { "flake": false, "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" }, "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "ghc99": { + "flake-compat_26": { "flake": false, "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_5", - "utils": "utils" - }, + "flake-compat_27": { + "flake": false, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage": { + "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage-nix": { + "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1702772694, - "narHash": "sha256-KL6ZjbhPBCco1ho0lmh0/dfPSNxjF8qtrTlzQcTN3iw=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "20bd4b5f667f892230d4a28ea4607e85ce9bc44e", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "hackageNix": { + "flake-compat_5": { "flake": false, "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackage_2": { + "flake-compat_6": { "flake": false, "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "hackage_3": { + "flake-compat_7": { "flake": false, "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackage_4": { + "flake-compat_8": { "flake": false, "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage_5": { + "flake-compat_9": { "flake": false, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "haskell-flake": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "lastModified": 1672152762, + "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", "type": "github" }, "original": { - "owner": "srid", - "repo": "haskell-flake", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "haskell-nix": { + "flake-parts_2": { "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_16", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls_2", - "nix-tools": "nix-tools", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-unstable": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" + "nixpkgs-lib": "nixpkgs-lib_2" }, "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "lastModified": 1682984683, + "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "86684881e184f41aa322e653880e497b66429f3e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "haskell-nix_2": { + "flake-parts_3": { "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "hackage": [ - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_6", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" + "nixpkgs-lib": "nixpkgs-lib_3" }, "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "haskell-nix_3": { + "flake-parts_4": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_12", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ - "hackage-nix" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_8", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6" + "nixpkgs-lib": "nixpkgs-lib_4" }, "locked": { - "lastModified": 1702774226, - "narHash": "sha256-QUQBV05VimFU0pasJlialCcL/jlCumzaTmCM9+6Ncpk=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6ce1c8ab2a6d4af5721b22bd95968439b8c3c307", + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "haskell-nix_4": { + "flake-parts_5": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_33", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_5", - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" + "nixpkgs-lib": "nixpkgs-lib_5" }, "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "haskellNix": { + "flake-parts_6": { "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": [ - "cardano-node", - "hackageNix" - ], - "hls-1.10": "hls-1.10", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" + "nixpkgs": "nixpkgs_87" }, "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "haskellNix_2": { + "flake-parts_7": { "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_5", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", + "nixpkgs-lib": [ + "hercules-ci-effects", "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" + ] }, "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" + "id": "flake-parts", + "type": "indirect" } }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_7", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" - }, + "flake-root": { "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "lastModified": 1713493429, + "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", + "owner": "srid", + "repo": "flake-root", + "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "srid", + "repo": "flake-root", "type": "github" } }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_70" - }, + "flake-utils": { "locked": { - "lastModified": 1701009247, - "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-1.10": { - "flake": false, + "flake-utils_10": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-1.10_2": { - "flake": false, + "flake-utils_11": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.0": { - "flake": false, + "flake-utils_12": { "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.2": { - "flake": false, + "flake-utils_13": { "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.3": { - "flake": false, + "flake-utils_14": { "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.4": { - "flake": false, - "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "flake-utils_15": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls": { - "flake": false, + "flake-utils_16": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_2": { - "flake": false, + "flake-utils_17": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_3": { - "flake": false, + "flake-utils_18": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_4": { - "flake": false, + "flake-utils_19": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_5": { - "flake": false, + "flake-utils_2": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_6": { - "flake": false, + "flake-utils_20": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_7": { - "flake": false, + "flake-utils_21": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_22": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "hydra_2": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] + "flake-utils_23": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_24": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hydra_3": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] + "flake-utils_25": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_26": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hydra_4": { + "flake-utils_27": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_28": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_29": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_30": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_31": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_32": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_33": { + "locked": { + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_34": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_35": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_36": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_37": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_38": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_39": { + "locked": { + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_40": { + "locked": { + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "type": "github" + }, + "original": { + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_41": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_42": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_43": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_44": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_45": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_46": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_47": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_48": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_8": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flakeCompat": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "follower": { + "inputs": { + "devshell": "devshell_15", + "inclusive": "inclusive_8", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_19" + }, + "locked": { + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "ghc-8.6.5-iohk": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_10": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_2": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_4": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_5": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_6": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_7": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_8": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_9": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc910X": { + "flake": false, + "locked": { + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_2": { + "flake": false, + "locked": { + "lastModified": 1714520650, + "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", + "ref": "ghc-9.10", + "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", + "revCount": 62663, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911": { + "flake": false, + "locked": { + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_2": { + "flake": false, + "locked": { + "lastModified": 1714817013, + "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", + "ref": "refs/heads/master", + "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", + "revCount": 62816, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_2": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_2": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_17", + "utils": "utils_2" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_21", + "utils": "utils_4" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_31", + "utils": "utils_6" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "hackage": { + "flake": false, + "locked": { + "lastModified": 1692145451, + "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage-nix": { + "flake": false, + "locked": { + "lastModified": 1718239062, + "narHash": "sha256-EE2UmHeFA0hOGuJmDNaq3mD1qdxvEfMB8dzlVldaJCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "bcddede5a9e756a6077bf4ff2d711d7edf7f9dc2", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix": { + "flake": false, + "locked": { + "lastModified": 1702945378, + "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_2": { + "flake": false, + "locked": { + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_3": { + "flake": false, + "locked": { + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_4": { + "flake": false, + "locked": { + "lastModified": 1711412520, + "narHash": "sha256-48Aw1X7IuXZR6Wi2WOlvj9HpoUHty/JW1MqAehgnoHo=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "fc84d1170ccc83d50db7b71a6edd090b2cef7657", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_2": { + "flake": false, + "locked": { + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_3": { + "flake": false, + "locked": { + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_4": { + "flake": false, + "locked": { + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_5": { + "flake": false, + "locked": { + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "empty-flake" + ] + }, + "locked": { + "lastModified": 1692147008, + "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_6", + "nix-tools": "nix-tools", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" + }, + "locked": { + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_43", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": [ + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "ghc910X": "ghc910X_2", + "ghc911": "ghc911_2", + "hackage": [ + "hackage-nix" + ], + "hls-1.10": "hls-1.10_6", + "hls-2.0": "hls-2.0_5", + "hls-2.2": "hls-2.2_4", + "hls-2.3": "hls-2.3_4", + "hls-2.4": "hls-2.4_4", + "hls-2.5": "hls-2.5_2", + "hls-2.6": "hls-2.6_2", + "hls-2.7": "hls-2.7", + "hls-2.8": "hls-2.8", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2305": "nixpkgs-2305_5", + "nixpkgs-2311": "nixpkgs-2311_2", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" + }, + "locked": { + "lastModified": 1718239828, + "narHash": "sha256-1chHzdklYFbIyWsLn+5jA4TDRxmtI4qeAF1YVHA54LY=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "08f455cefb5305b53cc5c7f4484ca9fb0d26bda7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-compat": "flake-compat_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "cardano-nix", + "cardano-db-sync", + "hackageNix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage" + }, + "locked": { + "lastModified": 1701053834, + "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "cardano-nix", + "cardano-node-8.1.1", + "hackageNix" + ], + "hls-1.10": "hls-1.10_3", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "iserv-proxy": "iserv-proxy_3", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_2" + }, + "locked": { + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-compat": "flake-compat_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", + "hackage": [ + "cardano-nix", + "cardano-node-8.7.3", + "hackageNix" + ], + "hls-1.10": "hls-1.10_4", + "hls-2.0": "hls-2.0_3", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_4", + "iserv-proxy": "iserv-proxy_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2211": "nixpkgs-2211_4", + "nixpkgs-2305": "nixpkgs-2305_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-compat": "flake-compat_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "ghc910X": "ghc910X", + "ghc911": "ghc911", + "hackage": [ + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10_5", + "hls-2.0": "hls-2.0_4", + "hls-2.2": "hls-2.2_3", + "hls-2.3": "hls-2.3_3", + "hls-2.4": "hls-2.4_3", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_5", + "iserv-proxy": "iserv-proxy_5", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2211": "nixpkgs-2211_5", + "nixpkgs-2305": "nixpkgs-2305_4", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_4" + }, + "locked": { + "lastModified": 1712278203, + "narHash": "sha256-L4eFUxnID2EYYtONE3fmZxPQdgPlB6XbAfIjlZi4c+U=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "57938c23a4d40e5a746f05f2b71af11a7273a133", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" + }, + "locked": { + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_48", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" + }, + "locked": { + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_27" + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "haumea_2": { + "inputs": { + "nixpkgs": "nixpkgs_37" + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "cardano-nix", + "flake-parts" + ], + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1714676393, + "narHash": "sha256-OA2LZPTCHyH0PcsNkjeTLvgsn4JmsV2VTvXQacHeUZU=", + "owner": "mlabs-haskell", + "repo": "hercules-ci-effects", + "rev": "5ad8f9613b735cb4f8222f07ae45ca37bfe76a23", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "ref": "push-cache-effect", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hercules-ci-effects_2": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_101" + }, + "locked": { + "lastModified": 1718018037, + "narHash": "sha256-03rLBd/lKecgaKz0j5ESUf9lDn5R0SJatZTKLL5unWE=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "0ab08b23ce3c3f75fe9a5598756b6fb8bcf0b414", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hls-1.10": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_2": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_3": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_4": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_5": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_6": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_2": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_3": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_4": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_5": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_3": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_4": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_2": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_4": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_2": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_3": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_4": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_2": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_2": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.8": { + "flake": false, + "locked": { + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_10": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_2": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_3": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_4": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_5": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_6": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_7": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_8": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_9": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hydra": { + "inputs": { + "nix": "nix", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_10": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_11": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_12": { + "inputs": { + "nix": "nix_20", + "nixpkgs": [ + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_2": { + "inputs": { + "nix": "nix_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_3": { + "inputs": { + "nix": "nix_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_4": { + "inputs": { + "nix": "nix_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_5": { + "inputs": { + "nix": "nix_6", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_6": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_7": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_8": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "incl": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_2": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_3": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_4": { + "inputs": { + "nixlib": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_5": { + "inputs": { + "nixlib": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_11": { + "inputs": { + "stdlib": "stdlib_11" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_12": { + "inputs": { + "stdlib": "stdlib_12" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_2": { + "inputs": { + "stdlib": "stdlib_2" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_3": { + "inputs": { + "stdlib": "stdlib_3" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_4": { + "inputs": { + "stdlib": "stdlib_4" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_5": { + "inputs": { + "stdlib": "stdlib_5" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_6": { + "inputs": { + "stdlib": "stdlib_6" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_7": { + "inputs": { + "stdlib": "stdlib_7" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_9": { + "inputs": { + "stdlib": "stdlib_9" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inputs-check": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1692633913, + "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", + "owner": "input-output-hk", + "repo": "inputs-check", + "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "inputs-check", + "type": "github" + } + }, + "iogo": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_4", + "nixpkgs": "nixpkgs_53", + "utils": "utils_13" + }, + "locked": { + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogo_2": { + "inputs": { + "devshell": "devshell_19", + "inclusive": "inclusive_12", + "nixpkgs": "nixpkgs_82", + "utils": "utils_27" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "blst": "blst", + "nixpkgs": "nixpkgs_7", + "secp256k1": "secp256k1", + "sodium": "sodium" + }, + "locked": { + "lastModified": 1691469905, + "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + } + }, + "iohk-nix-ng": { + "inputs": { + "blst": "blst_2", + "nixpkgs": "nixpkgs_8", + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" + }, + "locked": { + "lastModified": 1696471795, + "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "blst": "blst_7", + "nixpkgs": [ + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" + }, + "locked": { + "lastModified": 1715898223, + "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix": { + "inputs": { + "blst": "blst_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "secp256k1": "secp256k1_3", + "sodium": "sodium_3" + }, + "locked": { + "lastModified": 1698999258, + "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { + "blst": "blst_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "secp256k1": "secp256k1_4", + "sodium": "sodium_4" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_3": { + "inputs": { + "blst": "blst_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "secp256k1": "secp256k1_5", + "sodium": "sodium_5" + }, + "locked": { + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_4": { + "inputs": { + "blst": "blst_6", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "secp256k1": "secp256k1_6", + "sodium": "sodium_6" + }, + "locked": { + "lastModified": 1715898223, + "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { + "inputs": { + "nixpkgs": [ + "db-sync", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "ref": "hkm/remote-iserv", + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_3": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_4": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_5": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_6": { + "flake": false, + "locked": { + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_10": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_11": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_12": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_13": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_14": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_15": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_16": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_17": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_18": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_19": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_20": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_4": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_7": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_8": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_4": { + "inputs": { + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_5": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_6": { + "inputs": { + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_58" + }, + "locked": { + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_7": { + "inputs": { + "flake-utils": "flake-utils_44", + "nixpkgs": "nixpkgs_93" + }, + "locked": { + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_5", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_16", + "inclusive": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_20" + }, + "locked": { + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "type": "github" + } + }, + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_13" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_8", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_9", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_14", + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_3": { + "flake": false, + "locked": { + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_4": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_16" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_18" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_22" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_26" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_5": { + "inputs": { + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_32" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_6": { + "inputs": { + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_36" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_7": { "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] + "flake-utils": "flake-utils_46", + "nixpkgs": "nixpkgs_96" + }, + "locked": { + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "type": "github" + }, + "original": { + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", + "type": "github" + } + }, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_59", + "nixpkgs-regression": "nixpkgs-regression_9" + }, + "locked": { + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", + "type": "github" + } + }, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_61", + "nixpkgs-regression": "nixpkgs-regression_10" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_11" + }, + "locked": { + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + } + }, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_69", + "nixpkgs-regression": "nixpkgs-regression_12" + }, + "locked": { + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + } + }, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_74", + "nixpkgs-regression": "nixpkgs-regression_13" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_76" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_78", + "nixpkgs-regression": "nixpkgs-regression_14" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_90", + "nixpkgs-regression": "nixpkgs-regression_15" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_92", + "nixpkgs-regression": "nixpkgs-regression_16" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_19": { + "inputs": { + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_99", + "nixpkgs-regression": "nixpkgs-regression_17" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_2": { + "inputs": { + "flake-compat": "flake-compat_3", + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_9", + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1693573010, + "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", + "owner": "nixos", + "repo": "nix", + "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.17-maintenance", + "repo": "nix", + "type": "github" + } + }, + "nix_20": { + "inputs": { + "lowdown-src": "lowdown-src_20", + "nixpkgs": "nixpkgs_100", + "nixpkgs-regression": "nixpkgs-regression_18" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_13", + "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "hydra_5": { + "nix_4": { "inputs": { - "nix": "nix_12", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_15", + "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "hydra_6": { + "nix_5": { "inputs": { - "nix": "nix_13", - "nixpkgs": [ - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_25", + "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "hydra_7": { + "nix_6": { "inputs": { - "nix": "nix_14", - "nixpkgs": [ - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_35", + "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "hydra_8": { + "nix_7": { "inputs": { - "nix": "nix_15", - "nixpkgs": [ - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_45", + "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" } }, - "hydra_9": { + "nix_8": { "inputs": { - "nix": "nix_16", - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_47" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "repo": "nix", + "type": "github" } }, - "incl": { + "nix_9": { "inputs": { - "nixlib": [ - "cardano-node", + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_49", + "nixpkgs-regression": "nixpkgs-regression_8" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nixago": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive": { - "inputs": { - "stdlib": "stdlib" - }, + "nixago-exts": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "inclusive_10": { - "inputs": { - "stdlib": "stdlib_10" - }, + "nixago-exts_2": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "inclusive_11": { + "nixago_2": { "inputs": { - "stdlib": "stdlib_11" + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_2": { + "nixago_3": { "inputs": { - "stdlib": "stdlib_2" + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_3": { + "nixago_4": { "inputs": { - "stdlib": "stdlib_3" + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_4": { + "nixago_5": { "inputs": { - "stdlib": "stdlib_4" + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_5": { + "nixago_6": { "inputs": { - "stdlib": "stdlib_5" + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_6": { + "nixago_7": { "inputs": { - "stdlib": "stdlib_6" + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_7": { - "inputs": { - "stdlib": "stdlib_7" - }, + "nixlib": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "inclusive_8": { - "inputs": { - "stdlib": "stdlib_8" - }, + "nixlib_2": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "inclusive_9": { - "inputs": { - "stdlib": "stdlib_9" - }, + "nixlib_3": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "iogo": { - "inputs": { - "devshell": "devshell_4", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_22", - "utils": "utils_8" - }, + "nixpkgs": { "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", "type": "github" } }, - "iogo_2": { - "inputs": { - "devshell": "devshell_14", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_51", - "utils": "utils_22" + "nixpkgs-2003": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_10": { "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "nixpkgs" - ] - }, + "nixpkgs-2003_2": { "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_2": { - "inputs": { - "blst": "blst_2", - "nixpkgs": [ - "nixpkgs" - ], - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" - }, + "nixpkgs-2003_3": { "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_3": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs-2003_4": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix": { - "inputs": { - "blst": "blst", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1", - "sodium": "sodium" - }, + "nixpkgs-2003_5": { "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, + "nixpkgs-2003_6": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "db-sync", - "nixpkgs" - ] - }, + "nixpkgs-2003_7": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iserv-proxy": { - "flake": false, + "nixpkgs-2003_8": { "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "iserv-proxy_2": { - "flake": false, + "nixpkgs-2003_9": { "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "kupo": { - "flake": false, + "nixpkgs-2105": { "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "kupo-nixos": { - "inputs": { - "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_3", - "kupo": [ - "kupo" - ], - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs-2105_10": { "locked": { - "lastModified": 1672905539, - "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src": { - "flake": false, + "nixpkgs-2105_2": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_10": { - "flake": false, + "nixpkgs-2105_3": { "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_11": { - "flake": false, + "nixpkgs-2105_4": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_12": { - "flake": false, + "nixpkgs-2105_5": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_13": { - "flake": false, + "nixpkgs-2105_6": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_14": { - "flake": false, + "nixpkgs-2105_7": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_15": { - "flake": false, + "nixpkgs-2105_8": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_16": { - "flake": false, + "nixpkgs-2105_9": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_2": { - "flake": false, + "nixpkgs-2111": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_3": { - "flake": false, + "nixpkgs-2111_10": { "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_4": { - "flake": false, + "nixpkgs-2111_2": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_5": { - "flake": false, + "nixpkgs-2111_3": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_6": { - "flake": false, + "nixpkgs-2111_4": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_7": { - "flake": false, + "nixpkgs-2111_5": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_8": { - "flake": false, + "nixpkgs-2111_6": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_9": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "nixpkgs-2111_7": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor": { - "flake": false, + "nixpkgs-2111_8": { "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { - "flake": false, + "nixpkgs-2111_9": { "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "n2c": { - "inputs": { - "flake-utils": [ - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs-2205": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": "flake-utils_11", - "nixpkgs": "nixpkgs_27" - }, + "nixpkgs-2205_2": { "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_62" - }, + "nixpkgs-2205_3": { "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_3", - "nixpkgs-regression": "nixpkgs-regression" - }, + "nixpkgs-2205_4": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-cache-proxy": { - "inputs": { - "devshell": "devshell_11", - "inclusive": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_15" - }, + "nixpkgs-2205_5": { "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_12" - }, + "nixpkgs-2205_6": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_3", - "flake-utils": [ - "cardano-node", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "cardano-node", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-node", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs-2205_7": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools": { - "flake": false, + "nixpkgs-2211": { "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_2": { - "flake": false, + "nixpkgs-2211_2": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_3": { - "flake": false, + "nixpkgs-2211_3": { "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_4": { - "flake": false, + "nixpkgs-2211_4": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_5": { - "flake": false, + "nixpkgs-2211_5": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_4" - }, + "nixpkgs-2211_6": { "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_6" - }, + "nixpkgs-2305": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_65" - }, + "nixpkgs-2305_2": { "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_10": { - "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_45" - }, + "nixpkgs-2305_3": { "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { "owner": "NixOS", - "repo": "nix", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_47", - "nixpkgs-regression": "nixpkgs-regression_9" - }, + "nixpkgs-2305_4": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_12": { - "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_59", - "nixpkgs-regression": "nixpkgs-regression_10" - }, + "nixpkgs-2305_5": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_13": { - "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_61", - "nixpkgs-regression": "nixpkgs-regression_11" - }, + "nixpkgs-2311": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_14": { - "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_68", - "nixpkgs-regression": "nixpkgs-regression_12" - }, + "nixpkgs-2311_2": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_15": { - "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_69", - "nixpkgs-regression": "nixpkgs-regression_13" + "nixpkgs-docker": { + "locked": { + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + } + }, + "nixpkgs-lib": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "dir": "lib", + "lastModified": 1671359686, + "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "repo": "nixpkgs", + "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", "type": "github" }, "original": { + "dir": "lib", "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_16": { - "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_71", - "nixpkgs-regression": "nixpkgs-regression_14" - }, + "nixpkgs-lib_2": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", "type": "github" }, "original": { + "dir": "lib", "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_2": { - "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_14", - "nixpkgs-regression": "nixpkgs-regression_2" - }, + "nixpkgs-lib_3": { "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_16" - }, + "nixpkgs-lib_4": { "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { + "dir": "lib", "owner": "NixOS", - "repo": "nix", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_18", - "nixpkgs-regression": "nixpkgs-regression_3" - }, + "nixpkgs-lib_5": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" + "lastModified": 1714640452, + "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" }, "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" } }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_28", - "nixpkgs-regression": "nixpkgs-regression_4" - }, + "nixpkgs-regression": { "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", - "nixpkgs-regression": "nixpkgs-regression_5" - }, + "nixpkgs-regression_10": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nix_7": { - "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_37", - "nixpkgs-regression": "nixpkgs-regression_6" - }, + "nixpkgs-regression_11": { "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nix_8": { - "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_38", - "nixpkgs-regression": "nixpkgs-regression_7" - }, + "nixpkgs-regression_12": { "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_13": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nix_9": { - "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_43", - "nixpkgs-regression": "nixpkgs-regression_8" - }, + "nixpkgs-regression_14": { "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago": { - "inputs": { - "flake-utils": [ - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs-regression_15": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago-exts": { + "nixpkgs-regression_16": { "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago-exts_2": { + "nixpkgs-regression_17": { "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, + "nixpkgs-regression_18": { "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "nixpkgs-regression_2": { "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixlib": { + "nixpkgs-regression_3": { "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixlib_2": { + "nixpkgs-regression_4": { "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixlib_3": { + "nixpkgs-regression_5": { "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs": { + "nixpkgs-regression_6": { "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-23.05", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-2003": { + "nixpkgs-regression_7": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_8": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-2003_2": { + "nixpkgs-regression_9": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1690066826, + "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_3": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_4": { + "nixpkgs-unstable_10": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_5": { + "nixpkgs-unstable_11": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_6": { + "nixpkgs-unstable_12": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_7": { + "nixpkgs-unstable_13": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "nixpkgs-2105": { + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", + "lastModified": 1696577711, + "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_2": { + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_3": { + "nixpkgs-unstable_4": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_4": { + "nixpkgs-unstable_5": { "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_5": { + "nixpkgs-unstable_6": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "nixpkgs-2105_6": { + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_7": { + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111": { + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_2": { + "nixpkgs_10": { "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "lastModified": 1690026219, + "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_3": { + "nixpkgs_100": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_4": { + "nixpkgs_101": { "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_5": { + "nixpkgs_11": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_6": { + "nixpkgs_12": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "owner": "nixos", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_7": { + "nixpkgs_13": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205": { + "nixpkgs_14": { "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs-2205_2": { + "nixpkgs_15": { "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_3": { + "nixpkgs_16": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211": { + "nixpkgs_17": { "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211_2": { + "nixpkgs_18": { "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2305": { + "nixpkgs_19": { "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", + "owner": "nixos", + "ref": "nixos-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2311": { + "nixpkgs_2": { "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "lastModified": 1677543769, + "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", + "ref": "nixos-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-docker": { + "nixpkgs_20": { "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "nixpkgs-regression": { + "nixpkgs_21": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-regression_10": { + "nixpkgs_22": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_11": { + "nixpkgs_23": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_12": { + "nixpkgs_24": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "indirect" } }, - "nixpkgs-regression_13": { + "nixpkgs_25": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-regression_14": { + "nixpkgs_26": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_2": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_3": { + "nixpkgs_27": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, - "nixpkgs-regression_4": { + "nixpkgs_28": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_5": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_6": { + "nixpkgs_29": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_7": { + "nixpkgs_3": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1645013224, + "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_8": { + "nixpkgs_30": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1716137900, + "narHash": "sha256-sowPU+tLQv8GlqtVtsXioTKeaQvlMz/pefcdwg8MvfM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "6c0b7a92c30122196a761b440ac0d46d3d9954f1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_9": { + "nixpkgs_31": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs_32": { "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_2": { + "nixpkgs_33": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { @@ -6677,119 +11747,129 @@ "type": "github" } }, - "nixpkgs-unstable_3": { + "nixpkgs_34": { "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", - "owner": "nixos", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs-unstable_4": { + "nixpkgs_35": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_5": { + "nixpkgs_36": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_6": { + "nixpkgs_37": { "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs-unstable_7": { + "nixpkgs_38": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_8": { + "nixpkgs_39": { "locked": { - "lastModified": 1701336116, - "narHash": "sha256-kEmpezCR/FpITc6yMbAh4WrOCiT2zg5pSjnKrq51h5Y=", - "owner": "NixOS", + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "f5c27c6136db4d76c30e533c20517df6864c46ee", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_9": { + "nixpkgs_4": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", "type": "github" }, "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs_10": { + "nixpkgs_41": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6805,7 +11885,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_42": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -6819,7 +11899,7 @@ "type": "indirect" } }, - "nixpkgs_12": { + "nixpkgs_43": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6835,7 +11915,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_44": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6851,7 +11931,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_45": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6866,7 +11946,7 @@ "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs_46": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -6882,7 +11962,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_47": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -6897,7 +11977,7 @@ "type": "indirect" } }, - "nixpkgs_17": { + "nixpkgs_48": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -6913,7 +11993,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_49": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6928,37 +12008,39 @@ "type": "indirect" } }, - "nixpkgs_19": { + "nixpkgs_5": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_50": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_20": { + "nixpkgs_51": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -6974,7 +12056,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_52": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6990,7 +12072,7 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_53": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7006,7 +12088,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_54": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7022,7 +12104,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_55": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7038,7 +12120,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_56": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -7053,7 +12135,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_57": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7069,7 +12151,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_58": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7084,7 +12166,7 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_59": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7099,39 +12181,39 @@ "type": "indirect" } }, - "nixpkgs_29": { + "nixpkgs_6": { "locked": { - "lastModified": 1652559422, - "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", - "owner": "NixOS", + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-21.11", + "ref": "nixos-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_60": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", + "owner": "nixos", + "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_30": { + "nixpkgs_61": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7146,7 +12228,7 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_62": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7162,7 +12244,7 @@ "type": "github" } }, - "nixpkgs_32": { + "nixpkgs_63": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7178,7 +12260,7 @@ "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_64": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7194,7 +12276,7 @@ "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_65": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7210,7 +12292,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_66": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -7226,7 +12308,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_67": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -7242,7 +12324,7 @@ "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_68": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7257,7 +12339,7 @@ "type": "indirect" } }, - "nixpkgs_38": { + "nixpkgs_69": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7272,38 +12354,39 @@ "type": "indirect" } }, - "nixpkgs_39": { + "nixpkgs_7": { "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", - "owner": "NixOS", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "release-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_70": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_40": { + "nixpkgs_71": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7317,7 +12400,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_72": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7333,7 +12416,7 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_73": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7349,7 +12432,7 @@ "type": "github" } }, - "nixpkgs_43": { + "nixpkgs_74": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7364,7 +12447,7 @@ "type": "indirect" } }, - "nixpkgs_44": { + "nixpkgs_75": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7380,7 +12463,7 @@ "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_76": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7395,7 +12478,7 @@ "type": "indirect" } }, - "nixpkgs_46": { + "nixpkgs_77": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7411,7 +12494,7 @@ "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_78": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7426,7 +12509,7 @@ "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_79": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7442,39 +12525,39 @@ "type": "github" } }, - "nixpkgs_49": { + "nixpkgs_8": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", + "ref": "release-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_80": { "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_50": { + "nixpkgs_81": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7490,7 +12573,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_82": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7506,7 +12589,7 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_83": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7522,805 +12605,1187 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_84": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_85": { + "locked": { + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "type": "github" + } + }, + "nixpkgs_86": { + "locked": { + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_87": { + "locked": { + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_88": { + "locked": { + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_89": { + "locked": { + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_90": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_91": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_92": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_93": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_94": { + "locked": { + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_95": { + "locked": { + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_96": { + "locked": { + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_97": { + "locked": { + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", + "ref": "nixos-22.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_98": { "locked": { - "lastModified": 1646470760, - "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_99": { "locked": { - "lastModified": 1619531122, - "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs_56": { + "nomad": { + "inputs": { + "nix": "nix_8", + "nixpkgs": "nixpkgs_48", + "utils": "utils_9" + }, "locked": { - "lastModified": 1656461576, - "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "nixpkgs_57": { + "nomad-driver-nix": { + "inputs": { + "devshell": "devshell_7", + "inclusive": "inclusive_2", + "nix": "nix_9", + "nixpkgs": "nixpkgs_50", + "utils": "utils_10" + }, "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "type": "github" } }, - "nixpkgs_58": { + "nomad-driver-nix_2": { + "inputs": { + "devshell": "devshell_10", + "inclusive": "inclusive_5", + "nix": "nix_11", + "nixpkgs": "nixpkgs_62", + "utils": "utils_15" + }, "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "type": "github" } }, - "nixpkgs_59": { + "nomad-driver-nix_3": { + "inputs": { + "devshell": "devshell_17", + "inclusive": "inclusive_10", + "nix": "nix_16", + "nixpkgs": "nixpkgs_79", + "utils": "utils_24" + }, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "type": "github" } }, - "nixpkgs_6": { + "nomad-follower": { + "inputs": { + "devshell": "devshell_8", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_51", + "utils": "utils_11" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs_60": { + "nomad-follower_2": { + "inputs": { + "devshell": "devshell_11", + "inclusive": "inclusive_6", + "nixpkgs": "nixpkgs_63", + "utils": "utils_16" + }, "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs_61": { + "nomad-follower_3": { + "inputs": { + "devshell": "devshell_18", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_80", + "utils": "utils_25" + }, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" } }, - "nixpkgs_62": { + "nomad_2": { + "inputs": { + "nix": "nix_15", + "nixpkgs": "nixpkgs_77", + "utils": "utils_23" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "nixpkgs_63": { + "nosys": { "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "nixpkgs_64": { + "nosys_2": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "nixpkgs_65": { + "nosys_3": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_4": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_5": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "nixpkgs_66": { + "offchain-metadata-tools-service": { + "flake": false, "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "lastModified": 1684160858, + "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", + "owner": "input-output-hk", + "repo": "offchain-metadata-tools", + "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "feat-add-password-to-db-conn-string", + "repo": "offchain-metadata-tools", "type": "github" } }, - "nixpkgs_67": { + "ogmios": { + "flake": false, "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", "type": "github" } }, - "nixpkgs_68": { + "ogmios_2": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1711124598, + "narHash": "sha256-hp7FGm5hozG/70CbGzEDRnEmk3VCVvWH4lEX9WUPSAI=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "088501eb499ec4b9460d7b5d6816284997e62510", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "CardanoSolutions", + "ref": "v6.2.0", + "repo": "ogmios", + "type": "github" } }, - "nixpkgs_69": { + "old-ghc-nix": { + "flake": false, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs_7": { + "old-ghc-nix_10": { + "flake": false, "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs_70": { + "old-ghc-nix_2": { + "flake": false, "locked": { - "lastModified": 1697723726, - "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7c9cc5a6e5d38010801741ac830a3f8fd667a7a0", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs_71": { + "old-ghc-nix_3": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs_8": { + "old-ghc-nix_4": { + "flake": false, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs_9": { + "old-ghc-nix_5": { + "flake": false, "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nomad": { - "inputs": { - "nix": "nix_3", - "nixpkgs": "nixpkgs_17", - "utils": "utils_4" - }, + "old-ghc-nix_6": { + "flake": false, "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nomad-driver-nix": { - "inputs": { - "devshell": "devshell_2", - "inclusive": "inclusive", - "nix": "nix_4", - "nixpkgs": "nixpkgs_19", - "utils": "utils_5" - }, + "old-ghc-nix_7": { + "flake": false, "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nomad-driver-nix_2": { - "inputs": { - "devshell": "devshell_5", - "inclusive": "inclusive_4", - "nix": "nix_6", - "nixpkgs": "nixpkgs_31", - "utils": "utils_10" - }, + "old-ghc-nix_8": { + "flake": false, "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nomad-driver-nix_3": { - "inputs": { - "devshell": "devshell_12", - "inclusive": "inclusive_9", - "nix": "nix_11", - "nixpkgs": "nixpkgs_48", - "utils": "utils_19" - }, + "old-ghc-nix_9": { + "flake": false, "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nomad-follower": { - "inputs": { - "devshell": "devshell_3", - "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_20", - "utils": "utils_6" - }, + "ops-lib": { + "flake": false, "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-follower", + "repo": "ops-lib", "type": "github" } }, - "nomad-follower_2": { - "inputs": { - "devshell": "devshell_6", - "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_32", - "utils": "utils_11" - }, + "ops-lib_2": { + "flake": false, "locked": { - "lastModified": 1658244176, - "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-follower", + "repo": "ops-lib", "type": "github" } }, - "nomad-follower_3": { - "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_49", - "utils": "utils_20" - }, + "ops-lib_3": { + "flake": false, "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-follower", + "repo": "ops-lib", "type": "github" } }, - "nomad_2": { - "inputs": { - "nix": "nix_10", - "nixpkgs": "nixpkgs_46", - "utils": "utils_18" - }, + "ops-lib_4": { + "flake": false, "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "repo": "ops-lib", "type": "github" } }, - "nosys": { + "ops-lib_5": { + "flake": false, "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "ogmios": { + "ops-lib_6": { "flake": false, "locked": { - "lastModified": 1657544501, - "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v5.5.2", - "repo": "ogmios", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "ogmios-nixos": { + "paisano": { "inputs": { - "CHaP": "CHaP_3", - "blank": "blank_5", - "cardano-configurations": "cardano-configurations_2", - "cardano-node": [ - "cardano-node" - ], - "flake-compat": "flake-compat_13", - "haskell-nix": [ - "haskell-nix" - ], - "iohk-nix": [ - "iohk-nix" - ], "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", "nixpkgs" ], - "ogmios-src": [ - "ogmios" + "nosys": "nosys_2", + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" ] }, "locked": { - "lastModified": 1695289922, - "narHash": "sha256-WeZkYCyvOqnVx9zYgyO2rh0rd3O2DmxH0HZ4OJnf/aw=", - "owner": "mlabs-haskell", - "repo": "ogmios-nixos", - "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios-nixos", - "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", + "owner": "paisano-nix", + "repo": "core", "type": "github" } }, - "ogmios_2": { - "flake": false, - "locked": { - "lastModified": 1691769233, - "narHash": "sha256-7CLprKq3RwJfvy31LAPux+DYFLjEmbRBFgvtYDpJA8Q=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "3d3f359b0987c009ef66fb4d4b4bddce92b9aeb3", - "type": "github" + "paisano-actions": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] }, - "original": { - "owner": "CardanoSolutions", - "ref": "v6.0.0", - "repo": "ogmios", - "type": "github" - } - }, - "old-ghc-nix": { - "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "paisano-nix", + "repo": "actions", "type": "github" } }, - "old-ghc-nix_2": { - "flake": false, + "paisano-actions_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "paisano-nix", + "repo": "actions", "type": "github" } }, - "old-ghc-nix_3": { - "flake": false, + "paisano-mdbook-preprocessor": { + "inputs": { + "crane": "crane", + "fenix": "fenix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", "type": "github" } }, - "old-ghc-nix_4": { - "flake": false, + "paisano-mdbook-preprocessor_2": { + "inputs": { + "crane": "crane_2", + "fenix": "fenix_3", + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions_2", + "std": [ + "cardano-node", + "std" + ] + }, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", "type": "github" } }, - "old-ghc-nix_5": { - "flake": false, + "paisano-tui": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std" + ] + }, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "old-ghc-nix_6": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "paisano-tui_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, + "locked": { + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "old-ghc-nix_7": { - "flake": false, + "paisano-tui_3": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "cardano-node", + "cardano-automation", + "tullia", + "std" + ] + }, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "ops-lib": { - "flake": false, + "paisano-tui_4": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "blank" + ], + "std": [ + "cardano-node", + "std" + ] + }, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "ops-lib_2": { - "flake": false, + "paisano_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "nosys": "nosys_3", + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, - "ops-lib_3": { - "flake": false, + "paisano_3": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys_4", + "yants": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "repo": "core", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "paisano_4": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "nosys": "nosys_5", + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, "plutip": { "inputs": { - "CHaP": "CHaP_4", + "CHaP": "CHaP_6", "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_14", + "flake-compat": "flake-compat_27", "hackage-nix": [ "hackage-nix" ], @@ -8351,7 +13816,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_17", + "flake-utils": "flake-utils_33", "nixpkgs": [ "db-sync", "cardano-world", @@ -8377,8 +13842,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_86" }, "locked": { "lastModified": 1639823344, @@ -8394,12 +13859,39 @@ "type": "github" } }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat_13", + "gitignore": "gitignore", + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1716213921, + "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_21", - "rust-overlay": "rust-overlay" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_52", + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1641119695, @@ -8418,9 +13910,9 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_24", - "rust-overlay": "rust-overlay_2" + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_55", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1645147603, @@ -8439,9 +13931,9 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_33", - "rust-overlay": "rust-overlay_3" + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_64", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1641119695, @@ -8460,9 +13952,9 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_50", - "rust-overlay": "rust-overlay_4" + "flake-utils": "flake-utils_35", + "nixpkgs": "nixpkgs_81", + "rust-overlay": "rust-overlay_6" }, "locked": { "lastModified": 1641119695, @@ -8481,9 +13973,9 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_53", - "rust-overlay": "rust-overlay_5" + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_84", + "rust-overlay": "rust-overlay_7" }, "locked": { "lastModified": 1645147603, @@ -8504,26 +13996,75 @@ "CHaP": "CHaP", "blockfrost": "blockfrost", "cardano-configurations": "cardano-configurations", + "cardano-nix": "cardano-nix", "cardano-node": "cardano-node", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_11", + "flake-compat": "flake-compat_25", "hackage-nix": "hackage-nix", - "haskell-nix": "haskell-nix_3", - "hercules-ci-effects": "hercules-ci-effects", - "iohk-nix": "iohk-nix_2", - "kupo": "kupo", - "kupo-nixos": "kupo-nixos", + "haskell-nix": "haskell-nix_4", + "hercules-ci-effects": "hercules-ci-effects_2", + "iohk-nix": "iohk-nix_3", "nixpkgs": [ "haskell-nix", "nixpkgs-unstable" ], "ogmios": "ogmios_2", - "ogmios-nixos": "ogmios-nixos", "plutip": "plutip" } }, "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1645205556, + "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_2": { + "flake": false, + "locked": { + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_3": { + "flake": false, + "locked": { + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8540,7 +14081,7 @@ "type": "github" } }, - "rust-analyzer-src_2": { + "rust-analyzer-src_5": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8557,7 +14098,7 @@ "type": "github" } }, - "rust-analyzer-src_3": { + "rust-analyzer-src_6": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8574,7 +14115,7 @@ "type": "github" } }, - "rust-analyzer-src_4": { + "rust-analyzer-src_7": { "flake": false, "locked": { "lastModified": 1660579619, @@ -8591,7 +14132,7 @@ "type": "github" } }, - "rust-analyzer-src_5": { + "rust-analyzer-src_8": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8608,7 +14149,7 @@ "type": "github" } }, - "rust-analyzer-src_6": { + "rust-analyzer-src_9": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8625,7 +14166,71 @@ "type": "github" } }, - "rust-overlay": { + "rust-overlay": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_3": { "inputs": { "flake-utils": [ "db-sync", @@ -8660,7 +14265,7 @@ "type": "github" } }, - "rust-overlay_2": { + "rust-overlay_4": { "inputs": { "flake-utils": [ "db-sync", @@ -8693,7 +14298,7 @@ "type": "github" } }, - "rust-overlay_3": { + "rust-overlay_5": { "inputs": { "flake-utils": [ "db-sync", @@ -8724,7 +14329,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_6": { "inputs": { "flake-utils": [ "db-sync", @@ -8757,7 +14362,7 @@ "type": "github" } }, - "rust-overlay_5": { + "rust-overlay_7": { "inputs": { "flake-utils": [ "db-sync", @@ -8775,95 +14380,348 @@ ] }, "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "secp256k1": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_2": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_3": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_4": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_5": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_6": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_7": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "sodium": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_2": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_3": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_4": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_5": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_6": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_7": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_10", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1690199016, + "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "Mic92", + "repo": "sops-nix", "type": "github" } }, - "secp256k1": { - "flake": false, + "stable": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1669735802, + "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "731cc710aeebecbf45a258e977e8b68350549522", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_2": { + "stackage": { "flake": false, "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1701043780, + "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "sodium": { + "stackage_2": { "flake": false, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "repo": "stackage.nix", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "repo": "stackage.nix", "type": "github" } }, - "sodium_2": { + "stackage_3": { "flake": false, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "repo": "stackage.nix", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "repo": "stackage.nix", "type": "github" } }, - "stackage": { + "stackage_4": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "lastModified": 1712276009, + "narHash": "sha256-KlRJ+CGXRueyz2VRLDwra5JBNaI2GkltNJAjHa7fowE=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "rev": "758035379a5ac4390879e4cd5164abe0c96fcea7", "type": "github" }, "original": { @@ -8872,7 +14730,7 @@ "type": "github" } }, - "stackage_2": { + "stackage_5": { "flake": false, "locked": { "lastModified": 1646010978, @@ -8888,7 +14746,7 @@ "type": "github" } }, - "stackage_3": { + "stackage_6": { "flake": false, "locked": { "lastModified": 1655255731, @@ -8904,7 +14762,7 @@ "type": "github" } }, - "stackage_4": { + "stackage_7": { "flake": false, "locked": { "lastModified": 1659402917, @@ -8920,7 +14778,7 @@ "type": "github" } }, - "stackage_5": { + "stackage_8": { "flake": false, "locked": { "lastModified": 1650936094, @@ -8936,14 +14794,14 @@ "type": "github" } }, - "stackage_6": { + "stackage_9": { "flake": false, "locked": { - "lastModified": 1702771826, - "narHash": "sha256-4jFlIYY/hzkRrt4mXpUV81wC9ge4VpC5zcmQANl8GQg=", + "lastModified": 1718238200, + "narHash": "sha256-+jqYlXVxXe8xPKcJBZpdYPYKn22wiqLRezhz4TvvEYg=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "4aab61a73de63a828ac33eb588e1e65411020a0c", + "rev": "b3c17e923da5729f375df86aa0999752d641e192", "type": "github" }, "original": { @@ -8952,26 +14810,30 @@ "type": "github" } }, - "stackage_7": { - "flake": false, + "statix": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "lastModified": 1676888642, + "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", + "owner": "nerdypepper", + "repo": "statix", + "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nerdypepper", + "repo": "statix", "type": "github" } }, "std": { "inputs": { "arion": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "blank" @@ -8979,23 +14841,25 @@ "blank": "blank", "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_8", "incl": "incl", "makes": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "blank" ], "microvm": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "blank" ], "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_20", "nosys": "nosys", "yants": "yants" }, @@ -9015,14 +14879,208 @@ }, "std_2": { "inputs": { - "devshell": "devshell_7", + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_13", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "flake-utils": "flake-utils_11", + "incl": "incl_2", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_2", "nixago": "nixago_2", - "nixpkgs": "nixpkgs_34", + "nixpkgs": "nixpkgs_23", + "paisano": "paisano", + "paisano-tui": "paisano-tui", + "yants": "yants_2" + }, + "locked": { + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_3": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "blank": "blank_3", + "devshell": "devshell_3", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_13", + "haumea": "haumea", + "incl": "incl_3", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_28", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", "yants": "yants_3" }, + "locked": { + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_4": { + "inputs": { + "arion": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_4", + "devshell": "devshell_5", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_18", + "incl": "incl_4", + "makes": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_33", + "paisano": "paisano_3", + "paisano-tui": "paisano-tui_3", + "yants": "yants_4" + }, + "locked": { + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_5": { + "inputs": { + "arion": [ + "cardano-node", + "std", + "blank" + ], + "blank": "blank_5", + "devshell": "devshell_6", + "dmerge": "dmerge_5", + "flake-utils": "flake-utils_20", + "haumea": "haumea_2", + "incl": "incl_5", + "makes": [ + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "std", + "blank" + ], + "n2c": "n2c_5", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_38", + "paisano": "paisano_4", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor_2", + "paisano-tui": "paisano-tui_4", + "yants": "yants_5" + }, + "locked": { + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_6": { + "inputs": { + "devshell": "devshell_12", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_29", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_65", + "yants": "yants_7" + }, "locked": { "lastModified": 1661370377, "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", @@ -9037,15 +15095,15 @@ "type": "github" } }, - "std_3": { + "std_7": { "inputs": { - "devshell": "devshell_15", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_29", + "devshell": "devshell_20", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_45", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_64", - "yants": "yants_5" + "nixago": "nixago_7", + "nixpkgs": "nixpkgs_95", + "yants": "yants_9" }, "locked": { "lastModified": 1661367957, @@ -9061,11 +15119,11 @@ "type": "github" } }, - "std_4": { + "std_8": { "inputs": { - "devshell": "devshell_16", - "nixpkgs": "nixpkgs_67", - "yants": "yants_6" + "devshell": "devshell_21", + "nixpkgs": "nixpkgs_98", + "yants": "yants_10" }, "locked": { "lastModified": 1652784712, @@ -9076,12 +15134,27 @@ "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "stdlib": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "stdlib": { + "stdlib_10": { "locked": { "lastModified": 1590026685, "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", @@ -9096,7 +15169,7 @@ "type": "github" } }, - "stdlib_10": { + "stdlib_11": { "locked": { "lastModified": 1590026685, "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", @@ -9111,7 +15184,7 @@ "type": "github" } }, - "stdlib_11": { + "stdlib_12": { "locked": { "lastModified": 1590026685, "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", @@ -9126,7 +15199,7 @@ "type": "github" } }, - "stdlib_12": { + "stdlib_13": { "locked": { "lastModified": 1590026685, "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", @@ -9261,10 +15334,70 @@ "type": "github" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_58" + "flake-utils": "flake-utils_40", + "nixpkgs": "nixpkgs_89" }, "locked": { "lastModified": 1654211622, @@ -9281,27 +15414,38 @@ "type": "github" } }, + "terraform-providers": { + "inputs": { + "nixpkgs": "nixpkgs_11" + }, + "locked": { + "lastModified": 1695893013, + "narHash": "sha256-+5EuXNXwxpTiOEGCbZWtZCU75WcVwnS89heLa5xJ2K0=", + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "rev": "6c6865ae6f9bff7aaa4e86c875f520f2aca65c0d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "type": "github" + } + }, "terranix": { "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_9", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "blank" - ], + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_12", "terranix-examples": "terranix-examples" }, "locked": { - "lastModified": 1637158331, - "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "lastModified": 1684906298, + "narHash": "sha256-pNuJxmVMGbBHw7pa+Bx0HY0orXIXoyyAXOKuQ1zpfus=", "owner": "terranix", "repo": "terranix", - "rev": "34198bb154af86d2a559446f10d7339e53126abe", + "rev": "c0dd15076856c6cb425795b8c7d5d37d3a1e922a", "type": "github" }, "original": { @@ -9355,15 +15499,32 @@ "type": "github" } }, + "terranix-examples_4": { + "locked": { + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", + "type": "github" + }, + "original": { + "owner": "terranix", + "repo": "terranix-examples", + "type": "github" + } + }, "terranix_2": { "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_14", + "flake-utils": "flake-utils_25", "nixpkgs": [ "db-sync", "cardano-world", "bitte", + "capsules", + "bitte", "blank" ], "terranix-examples": "terranix-examples_2" @@ -9386,11 +15547,10 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_20", + "flake-utils": "flake-utils_30", "nixpkgs": [ "db-sync", "cardano-world", - "capsules", "bitte", "blank" ], @@ -9410,54 +15570,273 @@ "type": "github" } }, + "terranix_4": { + "inputs": { + "bats-assert": "bats-assert_4", + "bats-support": "bats-support_4", + "flake-utils": "flake-utils_36", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_4" + }, + "locked": { + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", + "type": "github" + }, + "original": { + "owner": "terranix", + "repo": "terranix", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1683117219, + "narHash": "sha256-IyNRNRxw0slA3VQySVA7QPXHMOxlbx0ePWvj9oln+Wk=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "c8c3731dc404f837f38f89c2c5ffc2afc02e249d", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1691440708, + "narHash": "sha256-c7Cc08vJ0IPFgIERpTdO2xvDHQNL7Uf5iXT0GlYO6vo=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "2a535809ac5c9a32288f4d3b938296e056d948cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_3": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715940852, + "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "tullia": { "inputs": { "nix-nomad": "nix-nomad", "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_19", "std": "std" }, "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_2": { + "inputs": { + "nix-nomad": "nix-nomad_2", + "nix2container": "nix2container_3", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "nixpkgs" + ], + "std": "std_2" + }, + "locked": { + "lastModified": 1684859161, + "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_3": { + "inputs": { + "nix-nomad": "nix-nomad_3", + "nix2container": "nix2container_5", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "nixpkgs" + ], + "std": "std_4" + }, + "locked": { + "lastModified": 1684859161, + "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_4": { + "inputs": { + "nix2container": "nix2container_7", + "nixpkgs": "nixpkgs_97", + "std": "std_8" + }, + "locked": { + "lastModified": 1657811465, + "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_10": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_11": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_12": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia_2": { - "inputs": { - "nix2container": "nix2container_3", - "nixpkgs": "nixpkgs_66", - "std": "std_4" - }, + "utils_13": { "locked": { - "lastModified": 1657811465, - "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "utils": { + "utils_14": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -9466,7 +15845,7 @@ "type": "github" } }, - "utils_10": { + "utils_15": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9481,7 +15860,7 @@ "type": "github" } }, - "utils_11": { + "utils_16": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9496,7 +15875,7 @@ "type": "github" } }, - "utils_12": { + "utils_17": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9511,7 +15890,7 @@ "type": "github" } }, - "utils_13": { + "utils_18": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9526,7 +15905,7 @@ "type": "github" } }, - "utils_14": { + "utils_19": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9541,7 +15920,22 @@ "type": "github" } }, - "utils_15": { + "utils_2": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_20": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9556,7 +15950,7 @@ "type": "github" } }, - "utils_16": { + "utils_21": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -9571,7 +15965,7 @@ "type": "github" } }, - "utils_17": { + "utils_22": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -9586,7 +15980,7 @@ "type": "github" } }, - "utils_18": { + "utils_23": { "locked": { "lastModified": 1601282935, "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", @@ -9601,7 +15995,7 @@ "type": "github" } }, - "utils_19": { + "utils_24": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9616,22 +16010,7 @@ "type": "github" } }, - "utils_2": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_20": { + "utils_25": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9646,7 +16025,7 @@ "type": "github" } }, - "utils_21": { + "utils_26": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9661,7 +16040,7 @@ "type": "github" } }, - "utils_22": { + "utils_27": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9676,7 +16055,7 @@ "type": "github" } }, - "utils_23": { + "utils_28": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9693,11 +16072,11 @@ }, "utils_3": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -9708,11 +16087,11 @@ }, "utils_4": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -9723,41 +16102,41 @@ }, "utils_5": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_6": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_7": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -9768,26 +16147,26 @@ }, "utils_8": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_9": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -9833,7 +16212,8 @@ "yants": { "inputs": { "nixpkgs": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "nixpkgs" @@ -9853,9 +16233,15 @@ "type": "github" } }, - "yants_2": { + "yants_10": { "inputs": { - "nixpkgs": "nixpkgs_25" + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, @@ -9871,22 +16257,47 @@ "type": "github" } }, + "yants_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "owner": "divnix", + "repo": "yants", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, "yants_3": { "inputs": { "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", + "cardano-nix", + "cardano-node-8.7.3", "std", + "haumea", "nixpkgs" ] }, "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", "owner": "divnix", "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", "type": "github" }, "original": { @@ -9897,7 +16308,54 @@ }, "yants_4": { "inputs": { - "nixpkgs": "nixpkgs_60" + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "owner": "divnix", + "repo": "yants", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_5": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", + "owner": "divnix", + "repo": "yants", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_6": { + "inputs": { + "nixpkgs": "nixpkgs_56" }, "locked": { "lastModified": 1645126146, @@ -9913,11 +16371,12 @@ "type": "github" } }, - "yants_5": { + "yants_7": { "inputs": { "nixpkgs": [ "db-sync", "cardano-world", + "bitte", "std", "nixpkgs" ] @@ -9936,12 +16395,29 @@ "type": "github" } }, - "yants_6": { + "yants_8": { + "inputs": { + "nixpkgs": "nixpkgs_91" + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_9": { "inputs": { "nixpkgs": [ "db-sync", "cardano-world", - "tullia", "std", "nixpkgs" ] diff --git a/flake.nix b/flake.nix index 8869b614c..e90218dfa 100644 --- a/flake.nix +++ b/flake.nix @@ -32,41 +32,25 @@ flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; + cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-sancho"; - ogmios-nixos = { - url = "github:mlabs-haskell/ogmios-nixos/78e829e9ebd50c5891024dcd1004c2ac51facd80"; - inputs = { - nixpkgs.follows = "nixpkgs"; - iohk-nix.follows = "iohk-nix"; - haskell-nix.follows = "haskell-nix"; - cardano-node.follows = "cardano-node"; - ogmios-src.follows = "ogmios"; - }; - }; - - ogmios = { - url = "github:CardanoSolutions/ogmios/v6.0.0"; + # Repository with network parameters + # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. + cardano-configurations = { + # Override with "path:/path/to/cardano-configurations"; + url = "github:input-output-hk/cardano-configurations?rev=692010ed0f454bfbb566c06443227c79e2f4dbab"; flake = false; }; - kupo-nixos = { - url = "github:mlabs-haskell/kupo-nixos/6f89cbcc359893a2aea14dd380f9a45e04c6aa67"; - inputs.kupo.follows = "kupo"; - }; + # Get Ogmios and Kupo from cardano-nix + cardano-nix.url = "github:mlabs-haskell/cardano.nix"; - kupo = { - url = "github:CardanoSolutions/kupo/v2.2.0"; + # Get Ogmios test fixtures + ogmios = { + url = "github:CardanoSolutions/ogmios/v6.2.0"; flake = false; }; - # Repository with network parameters - # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. - cardano-configurations = { - # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations?rev=d952529afdfdf6d53ce190b1bf8af990a7ae9590"; - flake = false; - }; easy-purescript-nix = { url = "github:justinwoo/easy-purescript-nix"; flake = false; @@ -105,6 +89,9 @@ "aarch64-darwin" ]; + ogmiosVersion = "6.2.0"; + kupoVersion = "2.8.0"; + perSystem = nixpkgs.lib.genAttrs supportedSystems; mkNixpkgsFor = system: import nixpkgs { @@ -225,7 +212,7 @@ name = "ctl-e2e-test"; runnerMain = "Test.Ctl.E2E"; testMain = "Ctl.Examples.ByUrl"; - buildInputs = [ inputs.kupo-nixos.packages.${pkgs.system}.kupo ]; + buildInputs = [ inputs.cardano-nix.packages.${pkgs.system}."kupo-${kupoVersion}" ]; }; ctl-plutip-test = project.runPlutipTest { name = "ctl-plutip-test"; @@ -315,8 +302,8 @@ { plutip-server = (plutipServerFor system).hsPkgs.plutip-server.components.exes.plutip-server; - ogmios = ogmios-nixos.packages.${system}."ogmios:exe:ogmios"; - kupo = inputs.kupo-nixos.packages.${system}.kupo; + ogmios = cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; + kupo = cardano-nix.packages.${system}."kupo-${kupoVersion}"; cardano-db-sync = inputs.db-sync.packages.${system}.cardano-db-sync; blockfrost-backend-ryo = inputs.blockfrost.packages.${system}.blockfrost-backend-ryo; buildCtlRuntime = buildCtlRuntime final; diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index e53ec84b8..d89b29218 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -126,7 +126,6 @@ import Cardano.Types.NativeScript ) ) import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) -import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.PoolMetadata (PoolMetadata(PoolMetadata)) import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) as RedeemerTag diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 8a5331927..dbd26864f 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -78,22 +78,11 @@ import Prelude import Aeson (Aeson, aesonNull, decodeAeson, fromString, parseJsonStringToAeson) import Cardano.AsCbor (decodeCbor) import Cardano.Types - ( AuxiliaryData(AuxiliaryData) - , Bech32String - , Certificate - ( StakeRegistration - , StakeDeregistration - , StakeDelegation - , PoolRegistration - , PoolRetirement - ) + ( Bech32String , Coin(Coin) , Credential(PubKeyHashCredential) , Ed25519KeyHash - , Epoch(Epoch) - , ExUnitPrices(ExUnitPrices) , ExUnits(ExUnits) - , GeneralTransactionMetadata(GeneralTransactionMetadata) , Language(PlutusV2) , NativeScript ( TimelockExpiry @@ -104,21 +93,12 @@ import Cardano.Types , ScriptPubkey ) , NetworkId(TestnetId, MainnetId) - , OutputDatum(OutputDatum) , PaymentPubKeyHash(PaymentPubKeyHash) , PlutusData(Integer, Bytes, Constr, List, Map) , PlutusScript(PlutusScript) - , PoolMetadata(PoolMetadata) - , PoolParams(PoolParams) - , PoolPubKeyHash(PoolPubKeyHash) - , ProtocolParamUpdate(ProtocolParamUpdate) - , ProtocolVersion(ProtocolVersion) , Redeemer(Redeemer) , RedeemerTag(Spend) - , Relay(SingleHostAddr, SingleHostName, MultiHostName) - , RewardAddress , ScriptHash - , ScriptRef(NativeScriptRef) , Slot(Slot) , Transaction(Transaction) , TransactionBody(TransactionBody) @@ -126,8 +106,6 @@ import Cardano.Types , TransactionOutput(TransactionOutput) , TransactionUnspentOutput(TransactionUnspentOutput) , TransactionWitnessSet(TransactionWitnessSet) - , URL(URL) - , UnitInterval(UnitInterval) , UtxoMap , Value(Value) , Vkey(Vkey) @@ -142,12 +120,7 @@ import Cardano.Types.Mint (Mint(Mint)) import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.PlutusScript (plutusV1Script, plutusV2Script) import Cardano.Types.PublicKey as PublicKey -import Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef)) -import Cardano.Types.TransactionMetadatum (TransactionMetadatum(Text)) -import Contract.Numeric.BigNum (BigNum) import Contract.Numeric.BigNum (fromInt, one, zero) as BigNum -import Contract.Prim.ByteArray (hexToByteArray) -import Data.Array as Array import Data.ByteArray ( ByteArray , byteArrayFromIntArrayUnsafe @@ -165,7 +138,6 @@ import JS.BigInt as BigInt import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) import Partial.Unsafe (unsafePartial) -import Test.Ctl.Fixtures.CostModels (costModelsFixture1) txOutputFixture1 :: TransactionOutput txOutputFixture1 = @@ -229,19 +201,9 @@ txOutputBinaryFixture1 = pkhBech32 :: Bech32String pkhBech32 = "addr_vkh1zuctrdcq6ctd29242w8g84nlz0q38t2lnv3zzfcrfqktx0c9tzp" -stake1 :: Credential -stake1 = unsafePartial $ fromJust do - PubKeyHashCredential <$> Ed25519KeyHash.fromBech32 pkhBech32 - ed25519KeyHash1 :: Ed25519KeyHash ed25519KeyHash1 = unsafePartial $ fromJust $ Ed25519KeyHash.fromBech32 pkhBech32 -bigNumOne :: BigNum -bigNumOne = BigNum.fromInt 1 - -rewardAddress1 :: RewardAddress -rewardAddress1 = { networkId: TestnetId, stakeCredential: wrap stake1 } - -- | Extend this for your needs. type SampleTxConfig = { inputs :: Array TransactionInput } From 69b59bb7f01cd6e0dafb078ad89c22ff9cda88d5 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 13 Jun 2024 19:29:54 +0400 Subject: [PATCH 219/373] Update @mlabs-haskell/uplc-apply-args version --- package-lock.json | 62 ++++++++++++------------ package.json | 2 +- templates/ctl-scaffold/package-lock.json | 62 ++++++++++++------------ templates/ctl-scaffold/package.json | 2 +- 4 files changed, 64 insertions(+), 64 deletions(-) diff --git a/package-lock.json b/package-lock.json index 962c3453e..7732cd60b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "1.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.0", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", @@ -521,14 +521,24 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "node_modules/@mlabs-haskell/uplc-apply-args": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.0.tgz", - "integrity": "sha512-jygKgElPSmrjBifiec8lLAjcKAPDOvDTv0hCW6jfX+/hnlaI8p9w5amv6jeCMmnr3/ncRzE9JrcuVJoB5lBwLA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.0.tgz", + "integrity": "sha512-EAm/VsD29/4B16q7c32G1C00RHKhpL3R6XQOpw7Bek92/X+jNoTeY1I9zrWi3FPk6/f5MRwW6R9QfN4ZMTNBjA==", "dependencies": { - "apply-args-browser": "^0.0.1", - "apply-args-nodejs": "^0.0.1" + "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", + "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" } }, + "node_modules/@mlabs-haskell/uplc-apply-args-browser": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", + "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + }, + "node_modules/@mlabs-haskell/uplc-apply-args-nodejs": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", + "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + }, "node_modules/@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -1148,16 +1158,6 @@ "node": ">= 8" } }, - "node_modules/apply-args-browser": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/apply-args-browser/-/apply-args-browser-0.0.1.tgz", - "integrity": "sha512-gq4ldo4Fk5SEVpeW/0yBe0v5g3VDEWAm9LB80zGarYtDvojTD7ar0Y/WvIy9gYAkKmlE3USu5wYwKKCqOXfNkg==" - }, - "node_modules/apply-args-nodejs": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/apply-args-nodejs/-/apply-args-nodejs-0.0.1.tgz", - "integrity": "sha512-JwZPEvEDrL+4y16Un6FcNjDSITpsBykchgwPh8UtxnziYrbxKAc2BUfyC5uvA6ZVIhQjiO4r+Kg1MQ3nqWk+1Q==" - }, "node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -6645,14 +6645,24 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "@mlabs-haskell/uplc-apply-args": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.0.tgz", - "integrity": "sha512-jygKgElPSmrjBifiec8lLAjcKAPDOvDTv0hCW6jfX+/hnlaI8p9w5amv6jeCMmnr3/ncRzE9JrcuVJoB5lBwLA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.0.tgz", + "integrity": "sha512-EAm/VsD29/4B16q7c32G1C00RHKhpL3R6XQOpw7Bek92/X+jNoTeY1I9zrWi3FPk6/f5MRwW6R9QfN4ZMTNBjA==", "requires": { - "apply-args-browser": "^0.0.1", - "apply-args-nodejs": "^0.0.1" + "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", + "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" } }, + "@mlabs-haskell/uplc-apply-args-browser": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", + "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + }, + "@mlabs-haskell/uplc-apply-args-nodejs": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", + "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + }, "@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -7195,16 +7205,6 @@ "picomatch": "^2.0.4" } }, - "apply-args-browser": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/apply-args-browser/-/apply-args-browser-0.0.1.tgz", - "integrity": "sha512-gq4ldo4Fk5SEVpeW/0yBe0v5g3VDEWAm9LB80zGarYtDvojTD7ar0Y/WvIy9gYAkKmlE3USu5wYwKKCqOXfNkg==" - }, - "apply-args-nodejs": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/apply-args-nodejs/-/apply-args-nodejs-0.0.1.tgz", - "integrity": "sha512-JwZPEvEDrL+4y16Un6FcNjDSITpsBykchgwPh8UtxnziYrbxKAc2BUfyC5uvA6ZVIhQjiO4r+Kg1MQ3nqWk+1Q==" - }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", diff --git a/package.json b/package.json index f7b5ed7ca..84970282d 100755 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "1.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.0", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index aa87d088a..b8720387b 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -12,7 +12,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "1.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.0", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", @@ -519,14 +519,24 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "node_modules/@mlabs-haskell/uplc-apply-args": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.0.tgz", - "integrity": "sha512-jygKgElPSmrjBifiec8lLAjcKAPDOvDTv0hCW6jfX+/hnlaI8p9w5amv6jeCMmnr3/ncRzE9JrcuVJoB5lBwLA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.0.tgz", + "integrity": "sha512-EAm/VsD29/4B16q7c32G1C00RHKhpL3R6XQOpw7Bek92/X+jNoTeY1I9zrWi3FPk6/f5MRwW6R9QfN4ZMTNBjA==", "dependencies": { - "apply-args-browser": "^0.0.1", - "apply-args-nodejs": "^0.0.1" + "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", + "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" } }, + "node_modules/@mlabs-haskell/uplc-apply-args-browser": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", + "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + }, + "node_modules/@mlabs-haskell/uplc-apply-args-nodejs": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", + "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + }, "node_modules/@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -1099,16 +1109,6 @@ "node": ">= 8" } }, - "node_modules/apply-args-browser": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/apply-args-browser/-/apply-args-browser-0.0.1.tgz", - "integrity": "sha512-gq4ldo4Fk5SEVpeW/0yBe0v5g3VDEWAm9LB80zGarYtDvojTD7ar0Y/WvIy9gYAkKmlE3USu5wYwKKCqOXfNkg==" - }, - "node_modules/apply-args-nodejs": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/apply-args-nodejs/-/apply-args-nodejs-0.0.1.tgz", - "integrity": "sha512-JwZPEvEDrL+4y16Un6FcNjDSITpsBykchgwPh8UtxnziYrbxKAc2BUfyC5uvA6ZVIhQjiO4r+Kg1MQ3nqWk+1Q==" - }, "node_modules/array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -5772,14 +5772,24 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "@mlabs-haskell/uplc-apply-args": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.0.tgz", - "integrity": "sha512-jygKgElPSmrjBifiec8lLAjcKAPDOvDTv0hCW6jfX+/hnlaI8p9w5amv6jeCMmnr3/ncRzE9JrcuVJoB5lBwLA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.0.tgz", + "integrity": "sha512-EAm/VsD29/4B16q7c32G1C00RHKhpL3R6XQOpw7Bek92/X+jNoTeY1I9zrWi3FPk6/f5MRwW6R9QfN4ZMTNBjA==", "requires": { - "apply-args-browser": "^0.0.1", - "apply-args-nodejs": "^0.0.1" + "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", + "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" } }, + "@mlabs-haskell/uplc-apply-args-browser": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", + "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + }, + "@mlabs-haskell/uplc-apply-args-nodejs": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", + "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + }, "@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -6275,16 +6285,6 @@ "picomatch": "^2.0.4" } }, - "apply-args-browser": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/apply-args-browser/-/apply-args-browser-0.0.1.tgz", - "integrity": "sha512-gq4ldo4Fk5SEVpeW/0yBe0v5g3VDEWAm9LB80zGarYtDvojTD7ar0Y/WvIy9gYAkKmlE3USu5wYwKKCqOXfNkg==" - }, - "apply-args-nodejs": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/apply-args-nodejs/-/apply-args-nodejs-0.0.1.tgz", - "integrity": "sha512-JwZPEvEDrL+4y16Un6FcNjDSITpsBykchgwPh8UtxnziYrbxKAc2BUfyC5uvA6ZVIhQjiO4r+Kg1MQ3nqWk+1Q==" - }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index c1325f4fe..6b85c768a 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -28,7 +28,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "1.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.0", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", From f7ee1d15931e8933b24c1d212aef31c13efe5f22 Mon Sep 17 00:00:00 2001 From: Renegatto Date: Thu, 13 Jun 2024 18:52:10 +0300 Subject: [PATCH 220/373] Use newtypes and leans to improve type inference --- src/Internal/Testnet/DistributeFunds.purs | 97 +++++++--- test/Testnet/DistributeFunds.purs | 213 ++++++++++------------ 2 files changed, 168 insertions(+), 142 deletions(-) diff --git a/src/Internal/Testnet/DistributeFunds.purs b/src/Internal/Testnet/DistributeFunds.purs index d7cce52a2..205989ede 100644 --- a/src/Internal/Testnet/DistributeFunds.purs +++ b/src/Internal/Testnet/DistributeFunds.purs @@ -1,9 +1,16 @@ module Ctl.Internal.Testnet.DistributeFunds - ( Tx - , SourceState + ( makeDistributionPlan , parallelizedDistributionPlan - , makeDistributionPlan - -- * exported for testing purposes + , SourceState(SourceState) + , Tx(Tx) + , _completeTxs + , _leftover + , _source + , _total + , _totalUtxos + , _tx + , _utxos + -- * Exported for testing purposes , assignUtxo , emptyTx , initialSourceState @@ -14,43 +21,61 @@ import Contract.Prelude import Control.Alt ((<|>)) import Data.Array as Array import Data.Bifunctor (class Bifunctor, bimap) +import Data.Lens (Lens', view, (%~), (+~), (-~), (.~), (^.)) +import Data.Lens.Iso.Newtype (_Newtype) +import Data.Lens.Record (prop) import Data.List (List(..)) import Data.List as List import Data.Map (Map) import Data.Map as Map import Effect.Exception.Unsafe (unsafeThrow) +import Type.Proxy (Proxy(Proxy)) -type Tx src target amount = +newtype Tx src target amount = Tx { source :: { key :: src } , total :: amount , totalUtxos :: Int , utxos :: List { key :: target, amount :: amount } } +derive instance Newtype (Tx s t a) _ +derive instance Generic (Tx s t a) _ +derive instance (Eq s, Eq t, Eq a) => Eq (Tx s t a) +derive instance (Ord s, Ord t, Ord a) => Ord (Tx s t a) +instance (Show s, Show t, Show a) => Show (Tx s t a) where + show = genericShow + emptyTx :: forall target amount . amount -> Tx Unit target amount -emptyTx total = +emptyTx total = Tx { source: { key: unit } , total , totalUtxos: 0 , utxos: Nil } -type SourceState src target amount = +newtype SourceState src target amount = SourceState { source :: src , leftover :: amount , tx :: Tx Unit target amount , completeTxs :: List (Tx Unit target amount) } +derive instance Newtype (SourceState s t a) _ +derive instance Generic (SourceState s t a) _ +derive instance (Eq s, Eq t, Eq a) => Eq (SourceState s t a) +derive instance (Ord s, Ord t, Ord a) => Ord (SourceState s t a) +instance (Show s, Show t, Show a) => Show (SourceState s t a) where + show = genericShow + initialSourceState :: forall src target amount . Semiring amount => { initialFunds :: amount, key :: src } -> SourceState src target amount -initialSourceState { initialFunds, key } = +initialSourceState { initialFunds, key } = SourceState { source: key , leftover: initialFunds , tx: emptyTx zero @@ -98,14 +123,13 @@ makeDistributionPlan sources targets thresholds = do let finish src = src - { tx = emptyTx - , completeTxs = Cons src.tx src.completeTxs - } + # (_tx .~ emptyTx zero) + # (_completeTxs %~ Cons (src ^. _tx)) sourceToTxs = Map.fromFoldable $ Tuple - <<< _.source + <<< view _source <*> Array.fromFoldable - <<< _.completeTxs + <<< view _completeTxs <<< finish <$> sourcesTxs pure sourceToTxs @@ -135,13 +159,13 @@ assignUtxo thresholds utxo acc@(Cons source sources) { err: "UTxO required amount is higher than the maxCoinPerTx threshold" , acc } - | source.tx.totalUtxos + | (source ^. _tx <<< _totalUtxos) >= thresholds.maxTargetUtxosPerTx = -- means that this Tx is complete assignUtxo thresholds utxo $ startNewTx source sources -- be careful: infinite loop -- it will terminate because new tx has 0 utxos which is higher than 'maxTargetUtxosPerTx' - | source.tx.total + utxo.amount + | (source ^. _tx <<< _total) + utxo.amount > thresholds.maxCoinPerTx = -- means that utxo cannot be fit in this Tx let @@ -158,7 +182,7 @@ assignUtxo thresholds utxo acc@(Cons source sources) -- or the condition above will throw Left in tryAnother <|> startNew - | source.leftover < utxo.amount = + | source ^. _leftover < utxo.amount = -- means that this source cannot fit this tx -- should try with the rest of sources and fail otherwise tryWithAnotherSource @@ -170,13 +194,10 @@ assignUtxo thresholds utxo acc@(Cons source sources) -- means that utxo can be fit into the current tx let source' = source - { leftover = source.leftover - utxo.amount - , tx = source.tx - { total = source.tx.total + utxo.amount - , totalUtxos = source.tx.totalUtxos + 1 - , utxos = Cons utxo source.tx.utxos - } - } + # (_leftover -~ utxo.amount) + # (_tx <<< _total +~ utxo.amount) + # (_tx <<< _totalUtxos +~ 1) + # (_tx <<< _utxos %~ Cons utxo) in Right $ Cons source' sources @@ -203,7 +224,29 @@ startNewTx => SourceState src target amount -> List (SourceState src target amount) -> List (SourceState src target amount) -startNewTx source sources = List.snoc sources source - { tx = emptyTx zero - , completeTxs = Cons source.tx source.completeTxs - } +startNewTx source sources = + List.snoc sources + $ (_tx .~ emptyTx zero) + $ (_completeTxs %~ Cons (source ^. _tx)) + $ source + +_totalUtxos :: forall s t a. Lens' (Tx s t a) Int +_totalUtxos = _Newtype <<< prop (Proxy :: _ "totalUtxos") + +_utxos :: forall s t a. Lens' (Tx s t a) (List { key :: t, amount :: a }) +_utxos = _Newtype <<< prop (Proxy :: _ "utxos") + +_total :: forall s t a. Lens' (Tx s t a) a +_total = _Newtype <<< prop (Proxy :: _ "total") + +_tx :: forall s t a. Lens' (SourceState s t a) (Tx Unit t a) +_tx = _Newtype <<< prop (Proxy :: _ "tx") + +_leftover :: forall s t a. Lens' (SourceState s t a) a +_leftover = _Newtype <<< prop (Proxy :: _ "leftover") + +_source :: forall s t a. Lens' (SourceState s t a) s +_source = _Newtype <<< prop (Proxy :: _ "source") + +_completeTxs :: forall s t a. Lens' (SourceState s t a) (List (Tx Unit t a)) +_completeTxs = _Newtype <<< prop (Proxy :: _ "completeTxs") \ No newline at end of file diff --git a/test/Testnet/DistributeFunds.purs b/test/Testnet/DistributeFunds.purs index 1cdca3b11..513b07a22 100644 --- a/test/Testnet/DistributeFunds.purs +++ b/test/Testnet/DistributeFunds.purs @@ -1,10 +1,20 @@ module Test.Ctl.Testnet.DistributeFunds where -import Contract.Prelude +import Contract.Prelude hiding (over) import Contract.Test.Mote (TestPlanM) +import Ctl.Internal.Testnet.DistributeFunds + ( _completeTxs + , _leftover + , _source + , _total + , _totalUtxos + , _tx + , _utxos + ) import Ctl.Internal.Testnet.DistributeFunds as Distribute import Data.Bifunctor (lmap) +import Data.Lens (over, set, view, (%~), (+~), (-~), (.~), (^.)) import Data.List (List(..)) import Data.List as List import Mote (group, test) @@ -19,21 +29,6 @@ suite = group "Testnet" $ group "Distribute Funds" do , maxTargetUtxosPerTx: 999_999 } - -- emptyTx :: Distribute.Tx Unit String Int - -- emptyTx = - -- { source: { key: unit } - -- , total: 0 - -- , totalUtxos: 0 - -- , utxos: Nil - -- } - - -- emptySource :: Int -> Distribute.SourceState Int String Int - -- emptySource src = - -- { source: src - -- , leftover: 0 - -- , tx: emptyTx - -- , completeTxs: Nil - -- } test "Fails if sources do not have enough funds" do let @@ -54,17 +49,16 @@ suite = group "Testnet" $ group "Distribute Funds" do src0 :: Distribute.SourceState Int String Int src0 = - ( Distribute.initialSourceState - { key: 0, initialFunds: 90 } - ) - { tx = (Distribute.emptyTx 370) - { totalUtxos = 2 - , utxos = List.fromFoldable - [ { key: "tgt0", amount: 300 } - , { key: "tgt42", amount: 70 } - ] - } - } + Distribute.initialSourceState + { key: 0, initialFunds: 90 } + # (_tx <<< _total .~ 370) + # (_tx <<< _totalUtxos .~ 2) + # + ( _tx <<< _utxos .~ List.fromFoldable + [ { key: "tgt0", amount: 300 } + , { key: "tgt42", amount: 70 } + ] + ) src1 :: Distribute.SourceState Int String Int src1 = Distribute.initialSourceState @@ -87,25 +81,25 @@ suite = group "Testnet" $ group "Distribute Funds" do expected :: List (Distribute.SourceState Int String Int) expected = List.fromFoldable [ src1 - { leftover = src1.leftover - utxo1.amount - , tx = (Distribute.emptyTx utxo1.amount) - { totalUtxos = 1 - , utxos = Cons utxo1 Nil - } - } + # (_leftover -~ utxo1.amount) + # + ( set _tx + $ Distribute.emptyTx utxo1.amount + # (_totalUtxos .~ 1) + # (_utxos .~ pure utxo1) + ) , src0 - { leftover = src0.leftover - utxo0.amount - , tx = Distribute.emptyTx zero - , completeTxs = - let - tx' = src0.tx - { total = src0.tx.total + utxo0.amount - , totalUtxos = 3 - , utxos = Cons utxo0 src0.tx.utxos - } - in - Cons tx' src0.completeTxs - } + # (_leftover -~ utxo0.amount) + # (_tx .~ Distribute.emptyTx zero) + # + ( over _completeTxs + $ src0 + # (view _tx) + # (_total +~ utxo0.amount) + # (_totalUtxos .~ 3) + # (_utxos %~ Cons utxo0) + # Cons + ) ] outcome `shouldEqual` Right expected @@ -147,33 +141,33 @@ suite = group "Testnet" $ group "Distribute Funds" do -- Both must have 2 txs, 20 UTxO each. All sources funds must be spent. expected = List.fromFoldable [ src1 - { leftover = 0 + # (_leftover .~ 0) -- it would be put in completeTxs on the next iteration - , tx = (Distribute.emptyTx 20) - { totalUtxos = 2 - , utxos = List.reverse utxos3 - } - , completeTxs = List.fromFoldable - [ (Distribute.emptyTx 20) - { totalUtxos = 2 - , utxos = List.reverse utxos1 - } - ] - } + # + ( set _tx + $ Distribute.emptyTx 20 + # (_totalUtxos .~ 2) + # (_utxos .~ List.reverse utxos3) + ) + # + ( set _completeTxs + $ Distribute.emptyTx 20 + # (_totalUtxos .~ 2) + # (_utxos .~ List.reverse utxos1) + # pure + ) , src0 - { leftover = 0 - , completeTxs = List.fromFoldable - [ (Distribute.emptyTx 20) - { totalUtxos = 2 - , utxos = List.reverse utxos2 - } - , (Distribute.emptyTx 20) - { totalUtxos = 2 - , utxos = List.reverse utxos0 - } - ] - - } + # (_leftover .~ 0) + # + ( _completeTxs .~ List.fromFoldable + [ Distribute.emptyTx 20 + # (_totalUtxos .~ 2) + # (_utxos .~ List.reverse utxos2) + , Distribute.emptyTx 20 + # (_totalUtxos .~ 2) + # (_utxos .~ List.reverse utxos0) + ] + ) ] outcome `shouldEqual` Right expected @@ -182,17 +176,13 @@ suite = group "Testnet" $ group "Distribute Funds" do test "Makes new Tx if utxo is impossible to fit in existing ones" do let src0 = - ( Distribute.initialSourceState - { key: 0, initialFunds: 900 } - ) - { tx = Distribute.emptyTx 120 - } + Distribute.initialSourceState + { key: 0, initialFunds: 900 } + # (_tx <<< _total .~ 120) src1 = - ( Distribute.initialSourceState - { key: 1, initialFunds: 800 } - ) - { tx = Distribute.emptyTx 105 - } + Distribute.initialSourceState + { key: 1, initialFunds: 800 } + # (_tx <<< _total .~ 105) utxo = { key: "utxo0", amount: 100 } outcome = Distribute.assignUtxo @@ -202,31 +192,28 @@ suite = group "Testnet" $ group "Distribute Funds" do expected = List.fromFoldable [ src0 , src1 - { leftover = src1.leftover - utxo.amount - , tx = (Distribute.emptyTx utxo.amount) - { totalUtxos = 1 - , utxos = Cons utxo Nil - } - , completeTxs = Cons src1.tx Nil - } + # (_leftover -~ utxo.amount) + # + ( set _tx + $ Distribute.emptyTx utxo.amount + # (_totalUtxos .~ 1) + # (_utxos .~ pure utxo) + ) + # (_completeTxs .~ pure (src1 ^. _tx)) ] outcome `shouldEqual` Right expected test "Tries to fit UTxO in any constructing tx that can fit it" do let src0 = - ( Distribute.initialSourceState - { key: 0, initialFunds: 900 } - ) + Distribute.initialSourceState + { key: 0, initialFunds: 900 } -- not enough to fit the utxo - { tx = Distribute.emptyTx 120 - } + # (_tx <<< _total .~ 120) src1 = - ( Distribute.initialSourceState - { key: 1, initialFunds: 800 } - ) - { -- exactly enough to fit the utxo - tx = Distribute.emptyTx 100 - } + Distribute.initialSourceState + { key: 1, initialFunds: 800 } + -- exactly enough to fit the utxo + # (_tx <<< _total .~ 100) utxo = { key: "utxo0", amount: 100 } outcome = Distribute.assignUtxo @@ -236,15 +223,10 @@ suite = group "Testnet" $ group "Distribute Funds" do expected = List.fromFoldable [ src0 , src1 - { leftover = src1.leftover - utxo.amount - , tx = - ( Distribute.emptyTx - (src1.tx.total + utxo.amount) - ) - { totalUtxos = 1 - , utxos = Cons utxo Nil - } - } + # (_leftover -~ utxo.amount) + # (_tx <<< _total +~ utxo.amount) + # (_tx <<< _totalUtxos +~ 1) + # (_tx <<< _utxos .~ pure utxo) ] outcome `shouldEqual` Right expected test "Tries to fit UTxO in any source tx that has enough funds" do @@ -258,19 +240,20 @@ suite = group "Testnet" $ group "Distribute Funds" do src2 = Distribute.initialSourceState { key: 2, initialFunds: 300 } utxo = { key: "utxo0", amount: 250 } - outcome = map (List.sortBy $ comparing _.source) + outcome = map (List.sortBy $ comparing (view _source)) $ Distribute.assignUtxo highThreshold utxo $ List.fromFoldable [ src0, src1, src2 ] - expected = List.sortBy (comparing _.source) $ List.fromFoldable + expected = List.sortBy (comparing $ view _source) $ List.fromFoldable [ src0 , src1 , src2 - { leftover = src2.leftover - utxo.amount - , tx = (Distribute.emptyTx utxo.amount) - { totalUtxos = 1 - , utxos = Cons utxo Nil - } - } + # (_leftover -~ utxo.amount) + # + ( set _tx + $ Distribute.emptyTx utxo.amount + # (_totalUtxos .~ 1) + # (_utxos .~ pure utxo) + ) ] outcome `shouldEqual` Right expected test "Fails if UTxO amount is higher than threshold" do From a9ebef4b1c1b5d3cb0b9bff7646bcf4fde02b420 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 13 Jun 2024 19:57:04 +0400 Subject: [PATCH 221/373] Update the dependencies (once more) --- package-lock.json | 14 +++++++------- package.json | 2 +- templates/ctl-scaffold/package-lock.json | 14 +++++++------- templates/ctl-scaffold/package.json | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7732cd60b..a9845f2b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", @@ -521,9 +521,9 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "node_modules/@mlabs-haskell/uplc-apply-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.0.tgz", - "integrity": "sha512-EAm/VsD29/4B16q7c32G1C00RHKhpL3R6XQOpw7Bek92/X+jNoTeY1I9zrWi3FPk6/f5MRwW6R9QfN4ZMTNBjA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", + "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", "dependencies": { "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" @@ -6645,9 +6645,9 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "@mlabs-haskell/uplc-apply-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.0.tgz", - "integrity": "sha512-EAm/VsD29/4B16q7c32G1C00RHKhpL3R6XQOpw7Bek92/X+jNoTeY1I9zrWi3FPk6/f5MRwW6R9QfN4ZMTNBjA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", + "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", "requires": { "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" diff --git a/package.json b/package.json index 84970282d..4cb9d9892 100755 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index b8720387b..561dc93e3 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -12,7 +12,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", @@ -519,9 +519,9 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "node_modules/@mlabs-haskell/uplc-apply-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.0.tgz", - "integrity": "sha512-EAm/VsD29/4B16q7c32G1C00RHKhpL3R6XQOpw7Bek92/X+jNoTeY1I9zrWi3FPk6/f5MRwW6R9QfN4ZMTNBjA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", + "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", "dependencies": { "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" @@ -5772,9 +5772,9 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "@mlabs-haskell/uplc-apply-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.0.tgz", - "integrity": "sha512-EAm/VsD29/4B16q7c32G1C00RHKhpL3R6XQOpw7Bek92/X+jNoTeY1I9zrWi3FPk6/f5MRwW6R9QfN4ZMTNBjA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", + "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", "requires": { "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index 6b85c768a..f34f4d9e3 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -28,7 +28,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", From 0476d2d07426d860ad09bcafdb441761e957f3ce Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 13 Jun 2024 18:14:42 +0200 Subject: [PATCH 222/373] Bump cardano-serialization-lib-gc --- package-lock.json | 46 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 962c3453e..ad665c27e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "license": "MIT", "dependencies": { "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", + "@mlabs-haskell/cardano-serialization-lib-gc": "12.0.0-alpha.31", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "1.0.0", "@noble/secp256k1": "^1.7.0", @@ -60,14 +60,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", - "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" + "version": "12.0.0-alpha.32", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.32.tgz", + "integrity": "sha512-Pe2cUB69zLRKLsk0orj2C6drntJXK3P9l9rBmK3tzJTlUUuYWECPY8IhnLNmax3YborYOxY3bJBucTf/zqBHeA==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", - "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" + "version": "12.0.0-alpha.32", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.32.tgz", + "integrity": "sha512-HykivQs8K4f2KNRcXFw+D91llAxZhu1neKPVYwyWe6nYZPW/9Tn1A9p602ceGmF0LxIeiJBg0GYOufAA5yVsUQ==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -501,12 +501,12 @@ } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", - "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", + "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", "dependencies": { - "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, @@ -6391,14 +6391,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", - "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" + "version": "12.0.0-alpha.32", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.32.tgz", + "integrity": "sha512-Pe2cUB69zLRKLsk0orj2C6drntJXK3P9l9rBmK3tzJTlUUuYWECPY8IhnLNmax3YborYOxY3bJBucTf/zqBHeA==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", - "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" + "version": "12.0.0-alpha.32", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.32.tgz", + "integrity": "sha512-HykivQs8K4f2KNRcXFw+D91llAxZhu1neKPVYwyWe6nYZPW/9Tn1A9p602ceGmF0LxIeiJBg0GYOufAA5yVsUQ==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -6625,12 +6625,12 @@ } }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", - "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", + "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", "requires": { - "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, diff --git a/package.json b/package.json index f7b5ed7ca..f75cf4980 100755 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "license": "MIT", "dependencies": { "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", + "@mlabs-haskell/cardano-serialization-lib-gc": "12.0.0-alpha.31", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "1.0.0", "@noble/secp256k1": "^1.7.0", From f4a4fbd125ca29334922f943c4db500274ae10cd Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 13 Jun 2024 19:09:30 +0200 Subject: [PATCH 223/373] Fix ctl-runtime, Use cardano-node v8.10.1-pre with patched config --- flake.lock | 16 ++++++++-------- flake.nix | 5 +++-- nix/runtime.nix | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/flake.lock b/flake.lock index f62a8ad13..dc59d8e5b 100644 --- a/flake.lock +++ b/flake.lock @@ -1802,17 +1802,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1715909148, - "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", + "lastModified": 1715082002, + "narHash": "sha256-R4ZkrQAmxHpSWSOp6TlWpV34DY9YkXJCP0CKJ8sE/zY=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "rev": "1282efd00d9a9a166fd7c66bfb0b0499b559a021", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "rev": "1282efd00d9a9a166fd7c66bfb0b0499b559a021", "type": "github" } }, @@ -2079,16 +2079,16 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1715901350, - "narHash": "sha256-teLUo4cQ9H52EkmJ9uXOIuyI78DtrKWxflJm+BnBqlM=", + "lastModified": 1713857353, + "narHash": "sha256-Ss5MHb8DTFlBXlWqyjW5hzwEI9i/SEx3xXASXtxxTlM=", "owner": "IntersectMBO", "repo": "cardano-node", - "rev": "235e34f6df9a1490190f6247b610b4e114ca3b96", + "rev": "1ffe4a57137000b99ae2f148eaf763bc55f0ed89", "type": "github" }, "original": { "owner": "IntersectMBO", - "ref": "8.11.0-sancho", + "ref": "8.10.1-pre", "repo": "cardano-node", "type": "github" } diff --git a/flake.nix b/flake.nix index e90218dfa..aa97c14ad 100644 --- a/flake.nix +++ b/flake.nix @@ -32,13 +32,14 @@ flake = false; }; - cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-sancho"; + # TODO: bump to 8.11.0-sancho and patch cardano-configurations + cardano-node.url = "github:IntersectMBO/cardano-node/8.10.1-pre"; # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations?rev=692010ed0f454bfbb566c06443227c79e2f4dbab"; + url = "github:input-output-hk/cardano-configurations?rev=1282efd00d9a9a166fd7c66bfb0b0499b559a021"; flake = false; }; diff --git a/nix/runtime.nix b/nix/runtime.nix index c03e5bc57..2062e55bf 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -137,7 +137,7 @@ rec { "${pkgs.bash}/bin/sh" "-c" '' - ${inputs.kupo-nixos.packages.${pkgs.system}.kupo}/bin/kupo \ + ${pkgs.kupo}/bin/kupo \ --node-config /config/cardano-node/config.json \ --node-socket "${nodeSocketPath}" \ --since "${kupo.since}" \ From 954e686fd5edfe51c6737aced3ed09bcf6fd0ac4 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 13 Jun 2024 19:14:35 +0200 Subject: [PATCH 224/373] Fix formatting --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index aa97c14ad..ad68bbb27 100644 --- a/flake.nix +++ b/flake.nix @@ -46,7 +46,7 @@ # Get Ogmios and Kupo from cardano-nix cardano-nix.url = "github:mlabs-haskell/cardano.nix"; - # Get Ogmios test fixtures + # Get Ogmios test fixtures ogmios = { url = "github:CardanoSolutions/ogmios/v6.2.0"; flake = false; From 919f3eae9857c77f9358d6ced8846d2131c1547f Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 13 Jun 2024 19:34:21 +0200 Subject: [PATCH 225/373] Regenerate Ogmios fixtures --- ...eryLedgerState-epoch-6b311f7667fc823d883a8d5c95904190.json | 1 + ...eryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json | 1 - ...erState-eraSummaries-98b3bc6427566974984a768fb0a5e2b9.json | 1 + ...erState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json | 1 - ...e-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json | 1 - ...e-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json | 1 + ...dgerState-stakePools-0b940fdf774c8501f46e08f9fb41a01f.json | 1 + ...dgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json | 1 - ...eryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json | 1 - ...eryNetwork-startTime-5185237542c7c8a6810aeb0fe74b3b40.json | 1 + .../queryNetwork-tip-81c282b9c0e02dbd4628e80ff508e68b.json | 1 + .../queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json | 1 - test/Blockfrost/ProtocolParameters.purs | 2 +- test/CoinSelection/CoinSelection.purs | 2 +- test/ProtocolParams.purs | 2 +- test/Types/Interval.purs | 4 ++-- 16 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-6b311f7667fc823d883a8d5c95904190.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json create mode 100644 fixtures/test/ogmios/queryLedgerState-eraSummaries-98b3bc6427566974984a768fb0a5e2b9.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json create mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json create mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-0b940fdf774c8501f46e08f9fb41a01f.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json delete mode 100644 fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json create mode 100644 fixtures/test/ogmios/queryNetwork-startTime-5185237542c7c8a6810aeb0fe74b3b40.json create mode 100644 fixtures/test/ogmios/queryNetwork-tip-81c282b9c0e02dbd4628e80ff508e68b.json delete mode 100644 fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-6b311f7667fc823d883a8d5c95904190.json b/fixtures/test/ogmios/queryLedgerState-epoch-6b311f7667fc823d883a8d5c95904190.json new file mode 100644 index 000000000..68e720003 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-epoch-6b311f7667fc823d883a8d5c95904190.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/epoch","result":45,"id":"queryLedgerState/epoch-hfkgnvkflxdivdsj"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json b/fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json deleted file mode 100644 index 093568ebd..000000000 --- a/fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json +++ /dev/null @@ -1 +0,0 @@ -{"result":374,"method":"queryLedgerState/epoch","jsonrpc":"2.0","id":"queryLedgerState/epoch-3rvj1ml27d5loixoww7","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-98b3bc6427566974984a768fb0a5e2b9.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-98b3bc6427566974984a768fb0a5e2b9.json new file mode 100644 index 000000000..80335465a --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-eraSummaries-98b3bc6427566974984a768fb0a5e2b9.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/eraSummaries","result":[{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"milliseconds":20000},"safeZone":864}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":259200},"slot":259200,"epoch":3},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":259200},"slot":259200,"epoch":3},"end":{"time":{"seconds":4060800},"slot":4060800,"epoch":47},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}}],"id":"queryLedgerState/eraSummaries-hfkgnvkflxdivdsk"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json deleted file mode 100644 index 6a2ce7478..000000000 --- a/fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json +++ /dev/null @@ -1 +0,0 @@ -{"result":[{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"seconds":20},"safeZone":864}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":259200,"slot":259200,"epoch":3},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":259200,"slot":259200,"epoch":3},"end":{"time":32486400,"slot":32486400,"epoch":376},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}}],"method":"queryLedgerState/eraSummaries","jsonrpc":"2.0","id":"queryLedgerState/eraSummaries-3rvj1ml27d5loixoww8","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json deleted file mode 100644 index 154c4a496..000000000 --- a/fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json +++ /dev/null @@ -1 +0,0 @@ -{"result":{"minFeeCoefficient":44,"minFeeConstant":{"lovelace":155381},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"lovelace":2000000},"stakePoolDeposit":{"lovelace":500000000},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"lovelace":170000000},"minUtxoDepositConstant":0,"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,57996947,18975,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,57996947,18975,10,38887044,32947,10]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":20000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":8,"minor":0}},"method":"queryLedgerState/protocolParameters","jsonrpc":"2.0","id":"queryLedgerState/protocolParameters-3rvj1ml27d5loixoww9","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json new file mode 100644 index 000000000..83df6bb28 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/protocolParameters","result":{"minFeeCoefficient":44,"minFeeConstant":{"ada":{"lovelace":155381}},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"ada":{"lovelace":2000000}},"stakePoolDeposit":{"ada":{"lovelace":500000000}},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"ada":{"lovelace":340000000}},"minUtxoDepositConstant":{"ada":{"lovelace":0}},"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,9462713,1021,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,9462713,1021,10,38887044,32947,10]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":40000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":8,"minor":0}},"id":"queryLedgerState/protocolParameters-hfkgnvkflxdivdsl"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-0b940fdf774c8501f46e08f9fb41a01f.json b/fixtures/test/ogmios/queryLedgerState-stakePools-0b940fdf774c8501f46e08f9fb41a01f.json new file mode 100644 index 000000000..f45a01598 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-stakePools-0b940fdf774c8501f46e08f9fb41a01f.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/stakePools","result":{"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":345000000}},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"ada":{"lovelace":420000000}},"cost":{"ada":{"lovelace":420000000}},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"ada":{"lovelace":1111000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p90428kec03mjdya3k4gv5d20w7lmed7ca0snknef5j977l3y8l":{"id":"pool1p90428kec03mjdya3k4gv5d20w7lmed7ca0snknef5j977l3y8l","vrfVerificationKeyHash":"af790879fc1dc4a8c00147aebc13e95585d641b76986d9a449a1ba4652ba77ad","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/2","rewardAccount":"stake_test1uruf9dc3kf35aqnng5wz38kt03h9jk6y5gdszy69nppkylqdk8agr","owners":["f892b711b2634e8273451c289ecb7c6e595b44a21b0113459843627c"],"relays":[{"type":"hostname","hostname":"water.lbcrypt.com","port":9600}],"metadata":{"url":"https://www.lbcrypt.com/json/LBCPP.json","hash":"6074e009fcb59f6ef28337412168e1b5391b42e6cec8dc01f7291babf6d2771d"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"ada":{"lovelace":500000000}},"cost":{"ada":{"lovelace":1000000000}},"margin":"1/2","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"0b15c664cf2883a8d68140f852963f8c7f8adac538ddf1f6cfab60444465ee5e"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"ada":{"lovelace":8000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"da1d45782040dd4862a9f97ac9fa706ca14f8f2f2823a0e2a466932cf530da6e","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"hostname","hostname":"api.monrma.ml","port":6020}],"metadata":{"url":"https://api.monrma.ml/meta/JOSEP.json","hash":"e57cf36265b7d3b5defc64bfb12d04d0f00ae5875ab58215644f7b947e802442"}},"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3":{"id":"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3","vrfVerificationKeyHash":"b5971d1f29a9938574aa98cf5a8437a8245239644fe6dcaa8b22b92ed2b00e90","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/9a065d69-ef59-4aff-983d-e34.json","hash":"92bab22abc33ea5fa2be2f515639bec213e782b5f417b3cc0441fd115172d171"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"ada":{"lovelace":100000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"ada":{"lovelace":70000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"e3f126e3063c8c7e2afac03df555a83d2513f4efba64399234788b93a6319edc"}},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"ada":{"lovelace":1000000}},"cost":{"ada":{"lovelace":1130000000}},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"ada":{"lovelace":65000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"ada":{"lovelace":1659000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce":{"id":"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce","vrfVerificationKeyHash":"a1b272e77f8d5cebc04ba482dacba825e8f7f59251d95746e8ff23864e0c89ee","pledge":{"ada":{"lovelace":100000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["788cf0519348fefaf3c721c5f5bd60b195b444fa0d8fb4512dc259be"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"ada":{"lovelace":3500000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"ada":{"lovelace":9400000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"ada":{"lovelace":10000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku":{"id":"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku","vrfVerificationKeyHash":"5ad90f4be69faac1c7e216cd50631240db41842b5a43f2ce344670fa7219a6c6","pledge":{"ada":{"lovelace":100000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["f631370cc87882bf5e14ab72534caf2655d0a2a50a9a8a3820bb6f4a"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"4173aad927f4be2a67adf068fcb45871ecac8614864d7af2e079502109e81644","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"ada":{"lovelace":1104000000}},"cost":{"ada":{"lovelace":411000000}},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"ada":{"lovelace":1000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"ada":{"lovelace":1000000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"ada":{"lovelace":30000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"153.127.67.171","port":3001},{"type":"hostname","hostname":"3rd.vps.deroris.net","port":3001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"ada":{"lovelace":9147456725}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"hostname","hostname":"api.monrma.ml","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"ada":{"lovelace":1000000}},"cost":{"ada":{"lovelace":429000000}},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":10000000000}},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"ipAddress","ipv4":"185.164.6.221","port":54326}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"ada":{"lovelace":8000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"ada":{"lovelace":50000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"ipAddress","ipv4":"144.217.73.208","port":8000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ab249c551e01ea72a5483a45c9f31b2b60bd30c15c865fedf03332ede23439fc"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"ada":{"lovelace":15000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"ipAddress","ipv4":"3.38.178.149","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"01dba041599331a31a2a17d26cdaeae514973d3df383c311dc20a2f591effb73"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"ada":{"lovelace":1112000000}},"cost":{"ada":{"lovelace":413000000}},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"ada":{"lovelace":500000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"ada":{"lovelace":2000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"ada":{"lovelace":3000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001},{"type":"hostname","hostname":"testnet-relay2.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14gzp9699juxeku56qc5dsk00vv9kngrz4art5v04fh77wmd37hq":{"id":"pool14gzp9699juxeku56qc5dsk00vv9kngrz4art5v04fh77wmd37hq","vrfVerificationKeyHash":"bb0670c4efe93e9bafc85323da00fef702997d64a0894b6398d8fb72d97eb7c1","pledge":{"ada":{"lovelace":252000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1up6ckzx75pw6h5wdx5gx384anmak5jf3dt9npm4dw58za8sxw5223","owners":["758b08dea05dabd1cd3510689ebd9efb6a49316acb30eead750e2e9e"],"relays":[{"type":"hostname","hostname":"test.everestada.com","port":7002}],"metadata":{"url":"https://raw.githubusercontent.com/everestada/esp/main/Meta.json","hash":"fe93bf08749b0aabb73d7a22c4af69ae15e89a52105df2ebd9a28b03a89a2353"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"ada":{"lovelace":50000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1uruen30w3mydukztulc8z5xqp2zpezctum9x4j6kctp3csclazf3y","owners":["f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool1kgyazdg4n0vvdkznuud3ktm0wmwvd2gr932k6mt346d2u4l9tt2":{"id":"pool1kgyazdg4n0vvdkznuud3ktm0wmwvd2gr932k6mt346d2u4l9tt2","vrfVerificationKeyHash":"cc5ab92aac59fe72d675667deaf7a434306b9b9d6dd0990de872af491e6dca67","pledge":{"ada":{"lovelace":8000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1uzjzx5vw5zz035qqt0uh4wdgewdg6g0qemt0x3vlrfun45sg063rs","owners":["a423518ea084f8d0005bf97ab9a8cb9a8d21e0ced6f3459f1a793ad2"],"relays":[{"type":"ipAddress","ipv4":"129.213.186.21","port":6000}],"metadata":{"url":"https://brewclub.io/pool.json","hash":"1026c5819b1441e4dd708a20a5301de474b12ab2aaec43e6fa364da7c8b2b3cb"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"ada":{"lovelace":6000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"ada":{"lovelace":9487000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"ada":{"lovelace":8000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"ada":{"lovelace":250000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"b552338f84a5971eadc8b130e9bf0dcc46894a7ea80c688d5f4a95a49118d716"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"ada":{"lovelace":9000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"ada":{"lovelace":19000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"ada":{"lovelace":9369000000}},"cost":{"ada":{"lovelace":369000000}},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932":{"id":"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932","vrfVerificationKeyHash":"4331f2905796fd9a028c17896ce5305dc1daf710ad448a3872df75722f2cc41d","pledge":{"ada":{"lovelace":100000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["ba149e2e2379097e65f0c03f2733d3103151e7f100d36dfdb01a0b22"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"ada":{"lovelace":4567000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"117/5000","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1uqthfy3jsrd82q067vu8ml8g0w3xr20qp8kv7z0yzrdhqrawkm2":{"id":"pool1uqthfy3jsrd82q067vu8ml8g0w3xr20qp8kv7z0yzrdhqrawkm2","vrfVerificationKeyHash":"7104302efc01232ce74b1c5c5fd8519e0ac84f07a62d0deb7fb8ebd05454b5ea","pledge":{"ada":{"lovelace":9400000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1upltzjkedla8ukdnj3k58xwy3pgjqwckmnx5s4a07lr0gds7yvh0x","owners":["7eb14ad96ffa7e59b3946d4399c48851203b16dccd4857aff7c6f436"],"relays":[{"type":"ipAddress","ipv4":"14.201.4.90","port":6006},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"139.218.11.14","port":6005}],"metadata":{"url":"https://dpadapools.com/preview3meta.json","hash":"e075ccee5c7172d62b0da89fbe1ee02a2569de5ceb438a6dd22be079c63670c5"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"ada":{"lovelace":35000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"ada":{"lovelace":1450000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"b2cbd9af0915b7f4b170a3dda7487f763e2ff31b9b960511a1a7d754c2d5714e"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1ltyxtkh37lfuh73ayulf8jdd742kmrqvx8rvt44r65c7q96xh08":{"id":"pool1ltyxtkh37lfuh73ayulf8jdd742kmrqvx8rvt44r65c7q96xh08","vrfVerificationKeyHash":"4a30b9817ba1af57e8a179ab619d8f49d50b7db1016af16741001dcb730b027d","pledge":{"ada":{"lovelace":9400000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1uqr86uc2k2kh7rmveddyjyx4q3nwskc8str3k3y3j3est8qd0hz3t","owners":["067d730ab2ad7f0f6ccb5a4910d50466e85b0782c71b44919473059c"],"relays":[{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006},{"type":"ipAddress","ipv4":"139.218.11.14","port":6005}],"metadata":{"url":"https://dpadapools.com/preview2meta.json","hash":"63cfd40cdf080705301829a840accb793d0ad8fa8c42863fcd372b91ae3e1d80"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"ada":{"lovelace":9900000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}}},"id":"queryLedgerState/stakePools-hfkgnvkflxdivdsm"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json b/fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json deleted file mode 100644 index 0fd254181..000000000 --- a/fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json +++ /dev/null @@ -1 +0,0 @@ -{"result":{"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36":{"id":"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36","vrfVerificationKeyHash":"5746d095a8a960de6ebb1fed6acac883a194645b523d5006692a3ba1481ea70e","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqrty8jrgjn4cywwzds025d64fz39ke2pkjk5rt5nqyrr9gxljplf","owners":["06b21e4344a75c11ce1360f551baaa4512db2a0da56a0d7498083195"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO5","hash":"9ee2d16fe3a94f0e9ac1fda5b5259ae73612d43ed274504b549e849e863eb992"}},"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9":{"id":"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k":{"id":"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k","vrfVerificationKeyHash":"00e024fbc63daf0af69eebc5741e7ff183b890ef2628e9bfd4e2bc4d6d1b16b8","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uztsmrxurfw7v3gjz04n8m45kngf4fwhfzxez9wa24rmdxclut9y5","owners":["970d8cdc1a5de6451213eb33eeb4b4d09aa5d7488d9115dd5547b69b"],"relays":[{"type":"ipAddress","ipv4":"83.58.170.227","port":6000}],"metadata":{"url":"https://not.me","hash":"e3568b0190e59d344e0a9803d31ac9fe4ca11c5861b6e3b06527343adbdefae9"}},"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng":{"id":"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng","vrfVerificationKeyHash":"e8e9921e6e7428b4a53da8874a843f7cf3ad868cea778f0490dee728273644a5","pledge":{"lovelace":9900000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1uqm7ecwn9mydtgpnqwcssnc9cq8nsneshs0q9zchq7zrz7gfzcshd","owners":["37ece1d32ec8d5a03303b1084f05c00f384f30bc1e028b1707843179"],"relays":[{"type":"hostname","hostname":"pn1.powerfulpools.com","port":6030}],"metadata":{"url":"https://powerfulpools.com/previewpool1.json","hash":"782694a7c6c9e679f3370bb5aecae8a8988e4c4e37647b2177be59bd0f704ca7"}},"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"lovelace":0},"cost":{"lovelace":345000000},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e":{"id":"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e","vrfVerificationKeyHash":"240b5246bc511fa4d7873d91a627aae4e74a60ecfd1165309774a0a7b1dab952","pledge":{"lovelace":42000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzhzr9qzlcr98rhuek3t623e008rye68grawtx6gc5v7g7q2j5u2z","owners":["ae219402fe06538efccda2bd2a397bce32674740fae59b48c519e478"],"relays":[{"type":"hostname","hostname":"test.smaug.pool.pm","port":3003}],"metadata":{"url":"https://smaug.pool.pm/meta-testnet-6adaf6af.json","hash":"6adaf6af9346cc941c916534118b48bdc0e0d560164333d7ab79b113421f2b3b"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"lovelace":420000000},"cost":{"lovelace":420000000},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"lovelace":1111000000},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"5f9824434e7fc57a08ab0fe9d7f09ed59f2601ec138af8be0a3c89305aa2dc9c"}},"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5":{"id":"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5","vrfVerificationKeyHash":"666efbd46910b4a0472219a7e9a198c5b07437329a47a89a9d85ca3b6da806f4","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqedemevyevg5esgdpdpc9awlepc49nhqln75clf5n4n6tsxqzcvz","owners":["32dcef2c26588a6608685a1c17aefe438a967707e7ea63e9a4eb3d2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/CD1","hash":"167b65b63ca316b3d6968ccd60ab59ef18202b7218dd2447170218d0f3c40b77"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej":{"id":"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej","vrfVerificationKeyHash":"420f04838a553e3e959b9b402e36bdd8123888b5f22126491294238150ba385a","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1urmpvvedk8cjnzxp0g89u87ghenhdkyrwn7vl2qg9aly99cp6ypdy","owners":["f616332db1f12988c17a0e5e1fc8be6776d88374fccfa8082f7e4297"],"relays":[{"type":"ipAddress","ipv4":"73.70.8.87","port":6000}],"metadata":{"url":"https://tinyurl.com/yy69a8eh","hash":"52977d65de765d1ec235c59676d4fea81046dc6ef561ab2790d4c359d8611b1d"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk":{"id":"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"http://gmbh.roastfrog.com","hash":"62ba8350ad0da97a45cb5cf4940204c702bb5a89c81dff3eab95e35a9657b775"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92":{"id":"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92","vrfVerificationKeyHash":"2661c5f0a335170cc2342c8dc322c5b47f8e2611df6bcc4d5192adb79cc20257","pledge":{"lovelace":500000000},"cost":{"lovelace":500000000},"margin":"1/20","rewardAccount":"stake_test1uruhhewtul8tkg88vdp4l84ds5t5j4s8tlrdjafr4crh7xckcrc2x","owners":["f97be5cbe7cebb20e763435f9ead85174956075fc6d97523ae077f1b"],"relays":[{"type":"ipAddress","ipv4":"3.72.231.105","port":30002}],"metadata":{"url":"https://cardanofiles.blob.core.windows.net/test/poolMdata.json","hash":"3b29e608eed25bb13c9d0950599634ed6d4f498ec4a748322dff5e5cca5deddb"}},"pool1p79majfcn554nkl88auu5njmprfsx9jdkv29rtltkn44y2h04qy":{"id":"pool1p79majfcn554nkl88auu5njmprfsx9jdkv29rtltkn44y2h04qy","vrfVerificationKeyHash":"b6168f2e63d95d18756328cf2ea0f869c7f227e50e13f55228cf3854dea16475","pledge":{"lovelace":2000000000000},"cost":{"lovelace":170000000},"margin":"99/100","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/c856b8c5-0f0a-42db-8a78-59a.json","hash":"8de3639f2d956664dd0d58903461853572e01355895cbc5932e42e22b0c1b960"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"92a482dd75c257122c3eb24de9b2f3b029319aa4e1ca0ac1125f62a912ce8c9d","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:feb6:d700","port":6000}],"metadata":{"url":"https://api.monrma.fr/meta/JOSEP.json","hash":"6c133a6ba49006eee1fdd1525662d64de10f4a54566e715246525b3b386f0c02"}},"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6":{"id":"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6","vrfVerificationKeyHash":"7827b526f0599b169c664b0dd8733a38a702d6d9e868e689cd8404e110a96dcb","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1url5r2tsk5j9sd49exdale4da6vd2ucn44hcqeygqcfdyyc84hjr3","owners":["ff41a970b5245836a5c99bdfe6adee98d57313ad6f8064880612d213"],"relays":[{"type":"ipAddress","ipv4":"90.251.253.249","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/OYSTERPOOL/GIT/main/prev.json","hash":"cd19e8c622a0c35e0384caeeced99552fe989a6ee8bd98018b8236328663132d"}},"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0":{"id":"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0","vrfVerificationKeyHash":"e0c09cfd7e6b1766efe46f4297d5ada1a5f8b006c1ed72535e16c6fd2f384174","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzzx65ylw8yrkeusmfwa6exesgpzlw74630cxusgq3jn9jqrgsrjc","owners":["846d509f71c83b6790da5ddd64d982022fbbd5d45f837208046532c8"],"relays":[{"type":"ipAddress","ipv4":"129.152.11.126","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/stefanosu-code/stpz/a/s2.j","hash":"0bf71440af0a351555045ae2a59e65c8661748a2781476f9bd560871afb2069f"}},"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f":{"id":"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f","vrfVerificationKeyHash":"cf027ebfbfec5c3f964b05341519180003e2ed092829a402f775efec666d78e1","pledge":{"lovelace":0},"cost":{"lovelace":456789123000000},"margin":"1/10000000","rewardAccount":"stake_test1uzcyml6eacaevjnana8a5pxe3m6rmcateqepztxr0g6azwq30tk38","owners":["b04dff59ee3b964a7d9f4fda04d98ef43de3abc832112cc37a35d138"],"relays":[{"type":"ipAddress","ipv4":"5.161.75.212","port":5003},{"type":"ipAddress","ipv4":"100.100.100.100","port":100},{"type":"ipAddress","ipv4":"200.200.200.200","port":200}],"metadata":{"url":"https://digitalfortress.online/digi7.json","hash":"0dd9984a4a83fd1e15a182fa318787acfea2d9e26fd416bc71f939367a0dc625"}},"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh":{"id":"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh","vrfVerificationKeyHash":"17842dce450acb74a96644b90ad38f7713f57f06526b620a4de322506fb67e6e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq8slx8ar3a6srktfrwjrqfsj9qgcapd7rn9xxd4z6dssyg4a57zg","owners":["0f0f98fd1c7ba80ecb48dd21813091408c742df0e65319b5169b0811"],"relays":[{"type":"hostname","hostname":"testrl2.duckdns.org","port":6000},{"type":"hostname","hostname":"bbotest.duckdns.org","port":3000}],"metadata":{"url":"https://ada-bamboo.com/testccb.json","hash":"bd75a5e72fe17426f170ac3a3ec1a82b151ddca9ce2f2ad49e0187edcf736c4a"}},"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf":{"id":"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf","vrfVerificationKeyHash":"4eb3784dc978391209b63132e32cdbd180cdb4eb5a08e2d38551d907907dea51","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq4r9wzkug92c2pfhl6l60rpnvtqyklncdezr4p7p668rpgnjtsyx","owners":["2a32b856e20aac2829bff5fd3c619b16025bf3c37221d43e0eb47185"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNA","hash":"f801fa03129fb7fc2dc8478c2fc7fbe5a7711be676ca6fb7f6660b09477ea0a1"}},"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr":{"id":"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr","vrfVerificationKeyHash":"0e0c0f257842b44b19dda1a20d8e406401f7696725f1c00a5b2768a4c684a089","pledge":{"lovelace":70000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1upxxj9un9j6xyaxkxnw0n2hajye3ux6qxn53ex7g4xwdh2cq3xsrd","owners":["4c6917932cb46274d634dcf9aafd91331e1b4034e91c9bc8a99cdbab"],"relays":[{"type":"hostname","hostname":"adarelay-t2-1.nanyka.com","port":1856}],"metadata":{"url":"https://nanyka.com/cardanospo/poolmeta_preview.json","hash":"a14630b7010397fc9bf309f59618b613698851bc1ac5772fd43717405b426bf5"}},"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7":{"id":"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7","vrfVerificationKeyHash":"f3a05875600f9960501f6b4e3a65b345b018da7a4b11ab2cd61638c08c2370d6","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urdxvfs090s0wysk9v5fsy70caswrfksjw0j4nzv5xh7ffq06zrw8","owners":["da66260f2be0f712162b289813cfc760e1a6d0939f2acc4ca1afe4a4"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi-pv.json","hash":"e42ed99f0b9752054081f0176b33b548bdc3db13558389fef7e0455e990edad8"}},"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn":{"id":"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn","vrfVerificationKeyHash":"41dbf753c8cb0c835d3719de7490a64921a66ad81d598981012a2cf2c1f762f8","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzvex98c4tw539cel9rj9u7axrxqvpat3r769tlgrw33t3gjxq666","owners":["999314f8aadd489719f94722f3dd30cc0607ab88fda2afe81ba315c5"],"relays":[{"type":"ipAddress","ipv4":"130.162.169.5","port":6000},{"type":"ipAddress","ipv4":"161.0.154.231","port":6000}],"metadata":{"url":"https://tinyurl.com/3kv77zvd","hash":"52daa526fd9d0b35e57ca376d617d0f99068c5f98afd13745f969cc79ef5928f"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk":{"id":"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk","vrfVerificationKeyHash":"9406b0490a7683eb52c139db3ff4ed3c8f48e6e3c786b9dc12c1fd2639e74ae8","pledge":{"lovelace":5},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzp8gpkuaz50mqexhfs6tpzqxlznhgdl9ev9q7pv9e9d8dcmva7p6","owners":["827406dce8a8fd8326ba61a5844037c53ba1bf2e5850782c2e4ad3b7","8e901a894907f529925330e4dbb4070e8ee6c45d5a0e85f4102444aa"],"relays":[]},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99":{"id":"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99","vrfVerificationKeyHash":"11351c5c5dfe74a8adb76e47b1590ab9e0251915548447db027806fe0d64fd64","pledge":{"lovelace":2000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz79lrtfw5w9z6pl2047nn7mxtqvzv9x0senqg6g3upwgeqq9zjj6","owners":["bc5f8d69751c51683f53ebe9cfdb32c0c130a67c333023488f02e464"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org"}],"metadata":{"url":"https://git.io/JJWdJ","hash":"bf3eeabce96f495924dc15000ca067699f38fca78ea36e6d69328dc9c88a5e84"}},"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6":{"id":"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6","vrfVerificationKeyHash":"7a785758a863bbad51e9fabdeba75009acbe05236f416dacb327c78a5c15a638","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq578ry6j5t3ud23e4q8grrhfygm0cf6200rwpquts203zs62922g","owners":["29e38c9a95171e3551cd40740c774911b7e13a53de37041c5c14f88a"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP0","hash":"62acb9589309a17b39d1fa6115541f0fad74d89c07072a835e11fcce93d5d23c"}},"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d":{"id":"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d","vrfVerificationKeyHash":"d6d05e32b4c2eb2e62cb5659d118061473360c2db23a213c377edb2ead2cf591","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urty9s8ufz8kydh8wfz6k9cqsj4v2q2k5wdu8wtetvlz4fs7adk6p","owners":["d642c0fc488f6236e77245ab170084aac50156a39bc3b9795b3e2aa6"],"relays":[{"type":"hostname","hostname":"pool.sudosu.cyou","port":30443},{"type":"hostname","hostname":"pool.sudosu.cyou","port":30444}],"metadata":{"url":"https://ado-pool.web.app/poolMetadata.json","hash":"aeaaf5c46c1466f65ff731fc3cc82f006acfd0aaedb4d4f6ff665f04224a1bd1"}},"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge":{"id":"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge","vrfVerificationKeyHash":"83602a44cf3b951a3ef83a4d868852ccfa50cc841e93212b302a67c8d1cd9144","pledge":{"lovelace":175000000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1urt0mxys755epyacjdacm4e0wyyr7kd603tzxrqzstj7auc5l9456","owners":["d6fd9890f5299093b8937b8dd72f71083f59ba7c56230c0282e5eef3"],"relays":[{"type":"hostname","hostname":"129.213.55.211","port":6000}],"metadata":{"url":"https://cardano-blockhouse.de/preview/poolMetaData.json","hash":"b570b17ca6e0b44783f4a18654f14b472460f0f553e2cc29eaa25a7a2f874f09"}},"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse":{"id":"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse","vrfVerificationKeyHash":"ad310b61f0ae967eccfcc0557661f421389c9bef3cbef6dc22bf877c7f08f9ea","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urjxc8q208jfclu9me2zn36luj70d8qsmrgemcga37vr2hg76ymtw","owners":["e46c1c0a79e49c7f85de5429c75fe4bcf69c10d8d19de11d8f98355d"],"relays":[{"type":"hostname","hostname":"relays.planetstake.com","port":30002}],"metadata":{"url":"https://planetstake.s3.eu-west-2.amazonaws.com/STAKEPreview.json","hash":"87fa8b931cb4641c75039d7b3314e9b0d0efc5d0c496d01a67863e7d25453fac"}},"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7":{"id":"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7","vrfVerificationKeyHash":"b2ff1c4e1aee2de9b5212f4d964b6acb09c67e54a9e2aaefdebda42e08125cc6","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urfvlns8kzw5rl08uns7g35atul8k43unpcyd8we8juwuhclq5pxz","owners":["d2cfce07b09d41fde7e4e1e4469d5f3e7b563c9870469dd93cb8ee5f"],"relays":[{"type":"hostname","hostname":"adaboy-preview-1c.gleeze.com","port":5000},{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"lovelace":3000000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"8bcb8efe6973b8b6bd0918cd356735ff3ce0ca41276fac6fb4b50b900fbcebce"}},"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7":{"id":"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7","vrfVerificationKeyHash":"e84a8a24359b57aec037671ec8597f73ca6d231f06174e7b58c1536ad0f28c9e","pledge":{"lovelace":1000},"cost":{"lovelace":500000000},"margin":"1/1000","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya":{"id":"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya","vrfVerificationKeyHash":"444a5509caf8074e6bb5f387b93c802837410f45efb4867f22a0e4e4d1fc9866","pledge":{"lovelace":1200000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqc9rnvul66ud5azgn95678uy5aj8y2cfy734m3caxlyrjc204n8m","owners":["3051cd9cfeb5c6d3a244cb4d78fc253b239158493d1aee38e9be41cb"],"relays":[{"type":"ipAddress","ipv4":"82.208.22.91","port":6003}],"metadata":{"url":"https://www.cardanolink.net/metadata.json","hash":"9e52ad6d3397ef0e196752f5b6c783d159e6e11b012fc426ed10e5e99b44a8af"}},"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8":{"id":"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8","vrfVerificationKeyHash":"8a97230d41bc99a952bbad1382a384fad365521e3e222a1baf227998f6c5fbdd","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz488lprpyycw8h6jelrudnuw9syv55judndgdqyrmwnl0qnx56dn","owners":["aa73fc230909871efa967e3e367c7160465292e366d434041edd3fbc"],"relays":[{"type":"hostname","hostname":"preview.ada.chicando.net","port":3002}],"metadata":{"url":"https://chicando.net/resources/metadata/ccdo.json","hash":"c2d117b0ee365a4717ae5e1c1659f5246db80a4cc12f1fc437eab19076b8c09b"}},"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc":{"id":"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc","vrfVerificationKeyHash":"002345b996b612fbe645a9e51f0bad41c19570417c92dd16f00785619c3b9691","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"17/100","rewardAccount":"stake_test1urx0wzfjh55njew498usze4jaqu3sjaugu8gdjnxm3faj7cmwkhjg","owners":["ccf70932bd293965d529f90166b2e839184bbc470e86ca66dc53d97b"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":6000}],"metadata":{"url":"https://tinyurl.com/4w5yp728","hash":"af5d091d79115e56fa7b6d0a5d39fe9901141d93a1beed06003b3b44f75b12b1"}},"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt":{"id":"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt","vrfVerificationKeyHash":"b06775ea69068784c2735f6211c537ffd5fa50aa3e3e2a798eea1f3b0e4ec98c","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9l0p6pr3ctkjaewnwawuykwma9skxjhx9nrdafndhs7jsa0vjgx","owners":["db266813b8285a41aaf806024aa16f4c5a3592e1b012460435224de3"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool19wrj23gqupswxefaks40xncv69ca83mqck2e9gxwncza6vl8h47":{"id":"pool19wrj23gqupswxefaks40xncv69ca83mqck2e9gxwncza6vl8h47","vrfVerificationKeyHash":"48de9f061019deaba5729b48be6db15e7169a18574c995cbb27d5b89f243ab9f","pledge":{"lovelace":3000000000},"cost":{"lovelace":170000000},"margin":"1/50","rewardAccount":"stake_test1uz2r2kjj8ulkp2l9l8474pfe800ad77yl2p2ksqg6keza9c8azv2g","owners":["94355a523f3f60abe5f9ebea85393bdfd6fbc4fa82ab4008d5b22e97"],"relays":[{"type":"ipAddress","ipv4":"78.131.56.145","port":7362}],"metadata":{"url":"https://tinyurl.com/2s3jx2rs","hash":"502b700e1c714a9e51534f1f61731a1ae1ec251199bdeb0d7d7fa65fa53b4626"}},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"lovelace":1000000},"cost":{"lovelace":805000000},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"e9a969b627f3cac9581322dab1f352533d63264fcdbb9e46c11bbd25b8b1c5e3"}},"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv":{"id":"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv","vrfVerificationKeyHash":"61e5b9672e64e846c49cbf305ed1ae7de084c6c5b9b2c202589068337d275295","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqag28j8d0qahxj3q85mzfgzr7k2duckp46t76ju8snrqug9eknpj","owners":["3a851e476bc1db9a5101e9b125021faca6f3160d74bf6a5c3c263071"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSND","hash":"9b41da403200a656749255f4575016eaac46b803656bc96616c89dad89728364"}},"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7":{"id":"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7","vrfVerificationKeyHash":"4664efa0023bf465d8e746a80eefa620ee04c0e9455760779bd484a8dadc1e16","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urr658f2tpkx8jfnmjczdvv2s8zwpug6cnegdxqc4rvuc8cdy3xrz","owners":["c7aa1d2a586c63c933dcb026b18a81c4e0f11ac4f2869818a8d9cc1f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP1","hash":"828d2ec12cdfbd0c989b82e8ceb3ea9ba48491ab6453f2c5d66d503048648d53"}},"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff":{"id":"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff","vrfVerificationKeyHash":"af51e586a3601de453af80a5d24d88d3e451cc283aff0602d96e2e7f872d983e","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1upeasuglk6mfjthng6xmua0f7q4tzqpsvn3a6wdjry26z0sscd4la","owners":["73d8711fb6b6992ef3468dbe75e9f02ab1003064e3dd39b21915a13e"],"relays":[{"type":"hostname","hostname":"guavarelay.com","port":6000}],"metadata":{"url":"https://github.com/MontiMarti","hash":"72497a1aa897015a10c30bff37371adde3fedf5da930fbf54c40976856782d46"}},"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v":{"id":"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v","vrfVerificationKeyHash":"066490995d792052c4cf4a1010ca55547035261003fd5d42730b92acb165ce4b","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upd07wdllf3heh5y0c7893gfh04ye5s9r69nq382m4kgtgcd206pr","owners":["5aff39bffa637cde847e3c72c509bbea4cd2051e8b3044eadd6c85a3"],"relays":[{"type":"hostname","hostname":"grokism.com","port":6003}],"metadata":{"url":"https://www.grokism.com/groktnet.json","hash":"b04da3c89fa84062ab55ef8653b00f469f60137afc1d6ff20cd175b00105d888"}},"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se":{"id":"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se","vrfVerificationKeyHash":"3efd3ace7be87e59adfbf0196c75d16bae4c46b6c2eeba65c0a32a97c3043eda","pledge":{"lovelace":7500000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uppctwdc07j7aeut3kzwkxddtarc8s5znulauvcp8snl6wsx8ttpx","owners":["4385b9b87fa5eee78b8d84eb19ad5f4783c2829f3fde33013c27fd3a"],"relays":[{"type":"ipAddress","ipv4":"95.88.156.175","port":4444}],"metadata":{"url":"https://sharepool-crypto.github.io/share/poolMetaData.json","hash":"396f9b3f3dfaaa606e6459758f580ec461f5e4a416027038ff4565a3891301d8"}},"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq":{"id":"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq","vrfVerificationKeyHash":"360f9057c01159a44581ccc4ba786d64b80c551bae0163f09fc408b5779b0e55","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1ur3yj9zs0cd9mtx43zssh877qmgp5env3pa0hhytw53fw2se7fthy","owners":["e24914507e1a5dacd588a10b9fde06d01a666c887afbdc8b7522972a"],"relays":[{"type":"ipAddress","ipv4":"73.23.36.140","port":6000}],"metadata":{"url":"https://petloverstake.com/PET_Preview2.json","hash":"87b5fae91c87eb8dbd828c24088dfea6dca290170723092a2575a9d654444a85"}},"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth":{"id":"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth","vrfVerificationKeyHash":"b2f21592a1eeebdfd7a29d997d93d6c73b80f11c5818408836033a4e93aca409","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up22rprkrxxhme8gqfqqntvzjfvw2app3sxn85rgsn2me6gq0r6c2","owners":["54a18476198d7de4e8024009ad829258e574218c0d33d06884d5bce9"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP3","hash":"fd7246127084e052c2a6bf8005ff1a35fe4dcbb4dc32cf97bc110d5470cbe71f"}},"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3":{"id":"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3","vrfVerificationKeyHash":"4967db4150525352a6eaaec789d27795fc7bb17cfd72da8b0815e43bef540a6f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urw67l30v2at04d2uaa6cazpuzl4csa5xmu6k4cvcj9yadccrvm93","owners":["ddaf7e2f62bab7d5aae77bac7441e0bf5c43b436f9ab570cc48a4eb7"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"lovelace":65000000000},"cost":{"lovelace":170000000},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye":{"id":"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye","vrfVerificationKeyHash":"342463d308642d685df96501b3727510cd10a690927e80727721c837eaff390f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzcd50ffs5upkujgw2wa88ky099wka33a6yd6y9zexd6cyss0mu6v","owners":["b0da3d2985381b7248729dd39ec4794aeb7631ee88dd10a2c99bac12"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"lovelace":1659000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"lovelace":220000000000},"cost":{"lovelace":170000000},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x0rtv0vznym7cczsunqcfs5atrve4dfcavfmpe7wkg8ga4urve":{"id":"pool18x0rtv0vznym7cczsunqcfs5atrve4dfcavfmpe7wkg8ga4urve","vrfVerificationKeyHash":"2288a7b58fe88ea76717ba5dd7741e4274042e6806307c10804c581788098d9b","pledge":{"lovelace":2000000000000},"cost":{"lovelace":170000000},"margin":"9999/10000","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/f60a27ae-11a4-4e87-9707-3d9.json","hash":"32c22289da648abcb85bf98d81ab0cde0959e92bb01dfd2837966d6b6858d3d0"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"lovelace":9400000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a":{"id":"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a","vrfVerificationKeyHash":"a21d1f6c4c25e3c81754fb21b73b20a4cf64264978980ee1b42c4cfed4c0217f","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfmqylayt305l5h2lh9xe4h5snu8dqm853fkaj0ex92n4sk3zgy0","owners":["93b013fd22e2fa7e9757ee5366b7a427c3b41b3d229b764fc98aa9d6"],"relays":[{"type":"hostname","hostname":"relay1.preview.metablx.com","port":8092}],"metadata":{"url":"https://bit.ly/8BOOL_01","hash":"b8be919f1da5d19de98673907c00530ccb15eb8f728712cfca433432ffc84f77"}},"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h":{"id":"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h","vrfVerificationKeyHash":"dbefdeb6466e8c439d6f2c433677bb4baadd745778ee83480d29cb54dcda0c25","pledge":{"lovelace":7000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upha97flpp5xn22nq0n8k3pg5gk85g6p7fmh9u89q8df5kg9axepw","owners":["6fd2f93f086869a95303e67b4428a22c7a2341f27772f0e501da9a59"],"relays":[{"type":"hostname","hostname":"relay3.preview.metablx.com","port":8093}],"metadata":{"url":"https://bit.ly/8BOOM_01","hash":"843ac18da9b54c0fa8262d6bb99868c29dae4ad9181a1ac1e44ed97ff7e8b2bd"}},"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0":{"id":"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0","vrfVerificationKeyHash":"6dbfd220765e0271d5bc9619238ec289d954e4ac9b435f0444bef87c8a89b2ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfjqkmx3uatgthyk70uazalp2vrgg3vffjrwgfc2uwksncxh5z6a","owners":["93205b668f3ab42ee4b79fce8bbf0a9834222c4a64372138571d684f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP5","hash":"0db9041127868af4eb8675f134648d2d3776768b2e658206c840867280579ec3"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3":{"id":"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3","vrfVerificationKeyHash":"1d77bf5d2db5645ebde81bf496105973c50f780479dffe796772c3fac4382e99","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1urh699v5gws437m5x5qn09mwv68r9jcmmwngltwjeyfpensx3dcvn","owners":["491ed3664c9cb520f39f4d7eb3275dab8e26f0b6b52bb7deeba111f2","7c344ba81cddc582d4683d093fe1cdb152b4ed3809e52cc719e863bd"],"relays":[{"type":"hostname","hostname":"relays.tradingtools.software","port":6000}],"metadata":{"url":"https://tradingtools.software/downloads/pool_description.json","hash":"aff79b84a4543912a5db601af91474b8b4d6077e1c49d3828793f34bacb2219e"}},"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv":{"id":"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv","vrfVerificationKeyHash":"671132f505c4fa210ac3f8d35c6d390a610b555d9c16452fd8c80aed79f82275","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uznvpusq22cmypf9qefkpersmghzqgk492sju2elhfvmnzcrwrrkn","owners":["a6c0f20052b1b20525065360e470da2e2022d52aa12e2b3fba59b98b"],"relays":[{"type":"ipAddress","ipv4":"172.19.0.3","port":3002}],"metadata":{"url":"https://short.gy/huOsbi","hash":"229136efb689e4c9c4246fd9ba19832a815db1b08f8126b2e3df7132e3b4427a"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"59fa47761c925ff90e191c5d7d18d62ddd15ff88094575c2b1b139ea231b8485","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9":{"id":"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9","vrfVerificationKeyHash":"5fa64452a0b245bd9778b32ca0b65ecf13d658903419a4978d5ee70dd1eec6b8","pledge":{"lovelace":5000000000},"cost":{"lovelace":341000000},"margin":"1/25","rewardAccount":"stake_test1uznc9768hq2qvkg3f588ps9gssw05jztp8n0s7zc7tldlmcku0gxs","owners":["a782fb47b8140659114d0e70c0a8841cfa484b09e6f87858f2fedfef"],"relays":[{"type":"hostname","hostname":"preview.testnet.cryptobounty.org","port":6161}],"metadata":{"url":"https://bnty.one","hash":"677d4eba97170f5267a84ca9d12e0c2bdd116c87128aaa2aaf6905912841fa63"}},"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04":{"id":"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04","vrfVerificationKeyHash":"4b4e8c37e61a53313028a84eef9bcd1d0ddc77c5da6570be8d23ab77e0088318","pledge":{"lovelace":100},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"lovelace":1104000000},"cost":{"lovelace":411000000},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th":{"id":"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th","vrfVerificationKeyHash":"02f96e2a0f0e25b1fe59eade571d1389eae47cda456f949de278791ca2f300e7","pledge":{"lovelace":500000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upvea236pch7jvvrdsxczr0t9t4f5n9plnx4u8rrkz4h74gxy80l0","owners":["599eaa3a0e2fe931836c0d810deb2aea9a4ca1fccd5e1c63b0ab7f55"],"relays":[{"type":"ipAddress","ipv4":"142.132.229.15","port":6001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"2afac2a4edec44da0f81ba5bd6c23eb2a895e172c8561c6680819feb4872f667"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an":{"id":"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an","vrfVerificationKeyHash":"838ca6096cff572b788d840445bf2167345f3d87485133ebcbfc729af016ee14","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"7/100","rewardAccount":"stake_test1ur7dav7tz75n7qd4p5fx2su0m5vdu6udvpn2aw4gusx536sag3auf","owners":["fcdeb3cb17a93f01b50d1265438fdd18de6b8d6066aebaa8e40d48ea"],"relays":[{"type":"ipAddress","ipv4":"162.55.3.29","port":3003}],"metadata":{"url":"https://test.com","hash":"0ba562271b66ca6929aff5026bb127d05fb7fdab05cb165854f13f57ed87a222"}},"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj":{"id":"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj","vrfVerificationKeyHash":"10236e06f67a865caf85cb51a7465dba3e35d0afab2ff55a0ae4626502c91793","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upq6yxehs9le5fzav7476zngs4kvmrn5qane0mwe9y8a8tqzmjfcd","owners":["10417a1f689bb4328ca92d6ba5eae93da2eb2d5e25c34acbbe0cdfee","17cf6f438e4eec78e697919fee6a4a2095207cfd96a3aaa1a84b59c4","41a21b37817f9a245d67abed0a68856ccd8e74076797edd9290fd3ac"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"4cd0cdc50f4220f9c134c7370e68a50142c9e272da4eeba45c1bc367792ef224"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"lovelace":1000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03":{"id":"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03","vrfVerificationKeyHash":"bb6a74b787c6c3f59dce9524356655c714d28c18af92dc14007a90cd5cf84851","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uz6wcl67glqj2sfx7e55afxv58g6f0p9rlwq0xyt6cm33hqxczkka","owners":["b4ec7f5e47c1254126f6694ea4cca1d1a4bc251fdc07988bd63718dc"],"relays":[{"type":"ipAddress","ipv4":"194.28.129.203","port":3001}],"metadata":{"url":"https://shorturl.at/hloWY","hash":"3be51e24185ed60ebcc73af79dd1e13167d78093dbbbb4dc61f4e26f1b10e40a"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z":{"id":"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z","vrfVerificationKeyHash":"f39deed0607f101e4d3de99930f0a1532c914a2796651c6e2bef756eaf0636ed","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relay.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"156868305e96086404ebfdbef2b552d266771597a206f1bfa34874e83fe46c4a"}},"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa":{"id":"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa","vrfVerificationKeyHash":"9692c9b1540de270cff040ba6df0d680b91c524b2e01673b97b4679a9e2d91eb","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9dz9x9yzn65ys0ms72l6gsmk9w3dfdj26qrvknjvlhmrgnzpcmv","owners":["25d448544726958c9232dab0aa12c63b06b1db494ea133b96e73c836"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx":{"id":"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx","vrfVerificationKeyHash":"442324fe40068b5c1dca530dab61fdbc273e1ec20aed07b13fbba87f6e45840a","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq8jgpx346l6hwuxa3vdecegtyfcv35wy4hmyfczw39876g0mhcw7","owners":["0f2404d1aebfabbb86ec58dce328591386468e256fb22702744a7f69"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNE","hash":"2424d0726b990ec170fd1f9298bde6cfe1792153ea6ba56387ad098cec30c4ea"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2":{"id":"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2","vrfVerificationKeyHash":"254e89d363387a17fecaedaf04ff7cee91be656a25f9d4371416722b078c8c6f","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"6969/10000","rewardAccount":"stake_test1uqjgdtza3mr6k9w76798vs3hpu4dm963rdkpxrlqrcvknmcn38xkh","owners":["2486ac5d8ec7ab15ded78a7642370f2add97511b6c130fe01e1969ef"],"relays":[{"type":"ipAddress","ipv4":"146.235.201.221","port":6000}],"metadata":{"url":"https://tinyurl.com/3rp46mu3","hash":"dc2e0b9de0a745efcfc863dbbb9a69553899c0bdc1daadf2656e9d32ec53cd93"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e":{"id":"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e","vrfVerificationKeyHash":"957d1696507a9f88c641db39cc2e34274456efeee9538a2bb4f332f44fb1d25c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uq9yp8wqvgpnucpe6s6yavnrvqnuykadx8y40sv0c5ur93gapzeka","owners":["0a409dc062033e6039d4344eb2636027c25bad31c957c18fc53832c5"],"relays":[{"type":"hostname","hostname":"mithril-signer-3.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2qvmy5xy","hash":"adaff9f5327ad0a3b9a47ba88a14100235915c80da2806f9bf8d271dbc0a6e13"}},"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj":{"id":"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj","vrfVerificationKeyHash":"64e14353b2cc4050d5fa27c40acbea2556089d57527e595101ef0e1ef2986009","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uqe8qlh2xqneakexw06jgfl9pev9r5vqj743de0a6uqw8ygs0gw82","owners":["32707eea30279edb2673f52427e50e5851d18097ab16e5fdd700e391"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3001}],"metadata":{"url":"https://bit.ly/43u9ybcJ","hash":"c1ef608ac6ba33acba208cdbbb2eaa7eb8fc944103f84646040931b1284478e7"}},"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg":{"id":"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg","vrfVerificationKeyHash":"afb03550e8b2974b2ddeb22231132b361ca45d4b3d4fc45435c053c510dc6481","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqz3lkuqxjh42yujn5l3zegcvc6a82lmyhr8ylc68sq44fcj9dppz","owners":["051fdb8034af5513929d3f1165186635d3abfb25c6727f1a3c015aa7"],"relays":[{"type":"hostname","hostname":"preview.frcan.com","port":6010}],"metadata":{"url":"https://raw.githubusercontent.com/Mikederel/p/main/p.json","hash":"ade52fe0bf2d23ed509ce2fc5b3990f4178ad8768f66ead1955a1f7e04b11c82"}},"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43":{"id":"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43","vrfVerificationKeyHash":"dd6686e356e2bec35ee51b17356d801e69917e3b472e2e59d3371e48207fd990","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urp9rkuj73fqcuc47u3r92huffdmfgnxszkk8nl3dpdmwvqjwpjgz","owners":["c251db92f4520c7315f72232aafc4a5bb4a26680ad63cff1685bb730"],"relays":[{"type":"hostname","hostname":"sator89.ddns.net","port":25369}],"metadata":{"url":"https://capitalstakepool.info/CSP.json","hash":"04028c72c74f04d605fc0d1a04c99357c8563bcf5cc408a6b6e8c7e72176c9d9"}},"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6":{"id":"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6","vrfVerificationKeyHash":"697920a02a8ec26f6b77ad9c0b8744339b26433e80974cfc35f68e4e38fee2f2","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"29/1000","rewardAccount":"stake_test1uzwev96me9lpndczchkgaytxwrjlny97qh0dl4zk5hs3wagw9s0c3","owners":["9d96175bc97e19b702c5ec8e916670e5f990be05dedfd456a5e11775"],"relays":[{"type":"ipAddress","ipv4":"128.140.96.209","port":8000}],"metadata":{"url":"https://cardano24.com/premeta.json","hash":"bf9b1cfe6a7caf8adb5c868f49d6e2414960aa1fefd815694f4525622c73efd7"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"lovelace":250000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201},{"type":"hostname","hostname":"tn-preview2.psilobyte.io","port":4202}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae":{"id":"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae","vrfVerificationKeyHash":"db19e2b96aabf2a9dd42c8d91d88bca9feff8286e77ca6b0873d4de3b06f7d1e","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upylhjc96sxhmawg0z4vut0c2nku4nhayul28a0w2msnfdcjyehf0","owners":["49fbcb05d40d7df5c878aace2df854edcacefd273ea3f5ee56e134b7"],"relays":[{"type":"ipAddress","ipv4":"204.216.214.226","port":6000}],"metadata":{"url":"https://bit.ly/48BnVgU","hash":"c74260178b12b253edc70b950a9dc9dbbfb94c4e76f74172dbbe2ad4f06d0879"}},"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx":{"id":"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx","vrfVerificationKeyHash":"5cd33abcda61776fa52893373e96b8c63430635f74d2f604faf23ffdd7fe614c","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1upvhfqp8qywsyhe45zflp7ytphwuq8uzxtx0eed4agqsl3cx966vk","owners":["59748027011d025f35a093f0f88b0dddc01f8232ccfce5b5ea010fc7"],"relays":[{"type":"ipAddress","ipv4":"10.0.0.31","port":3000}],"metadata":{"url":"https://tinyurl.com/y2z4cvnt","hash":"91514f535468f45ee8bf8aae5c06e69bae95aeaec8775e2ee7c519ec42525c00"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw":{"id":"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw","vrfVerificationKeyHash":"41762f6a5cf97a405230e278c52b9d711937858c3f7c5d54e5d892ca626798c7","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uz5ah77y8xvnxs6cyp979hg7fhxezjw39jfrpardqymnz7sg7ea8y","owners":["7981e93ea49a82b02369e8b16b3aca1dd0a015ada02cd72f5f23031b","a9dbfbc43999334358204be2dd1e4dcd9149d12c9230f46d0137317a"],"relays":[{"type":"ipAddress","ipv4":"73.222.122.247","port":23001}],"metadata":{"url":"https://bit.ly/3GNLlTI","hash":"251194136caedddada9227adfe30312af6c011a1628d178fa7377051bd385bd2"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"113.43.231.41","port":3001},{"type":"ipAddress","ipv4":"113.43.231.41","port":4001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":3001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":4001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"lovelace":9147456725},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m":{"id":"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m","vrfVerificationKeyHash":"1eec12eccea7cdfe494ac8b980a2c6d6a510d44ad87e3fa6f5092d34d86abae4","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur0paqh4t5cwgflh4phdjkhvpwdvv3ps6zd8l7cv9ffk20qxjhqwf","owners":["de1e82f55d30e427f7a86ed95aec0b9ac64430d09a7ffb0c2a53653c"],"relays":[{"type":"ipAddress","ipv4":"185.43.205.110","port":3003},{"type":"hostname","hostname":"cardano.illusion.hu"}],"metadata":{"url":"https://www.illusion.hu/cardano/hunada-test.json","hash":"d93c4c6690186dfa973b6a7ee3203a16e953153616d7165895f4ab7b94de6212"}},"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa":{"id":"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa","vrfVerificationKeyHash":"9f6e5d16ea05c1905907e8aee60b426c7680c32870c2ebe0be50281d889d5cf0","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzkxke5d0tjj0utd8tf2v75vytt6wjkx0tp4lr0885slcnqtq2ryf","owners":["ac6b668d7ae527f16d3ad2a67a8c22d7a74ac67ac35f8de73d21fc4c"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.testing-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/263p356z","hash":"276f035319f342a84f7e8abf8ec0befde2434bcb29f20f41afd09132fb083fd1"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:fe05:9009","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"lovelace":1000000},"cost":{"lovelace":429000000},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7":{"id":"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7","vrfVerificationKeyHash":"922ce518a7130d31bf31b4501585e51ccb58db022fb4d6fe429ec56eae5f9db9","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzj0zcvrpkt6lv6c2543vshmxqptnxux0qz5nt744e0gjtgycwrj8","owners":["a4f161830d97afb358552b1642fb3002b99b86780549afd5ae5e892d"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO1","hash":"666f5ac6701133f3b54b43785b2ce4ed4a12432d9a27f3e07583e8714fd8229c"}},"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua":{"id":"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua","vrfVerificationKeyHash":"d67f65e8c4fa6346a631b6623b35951e63596920c2ccf1c9d4a836fcea66846c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzv69q0u5g7zdvepd96ljt0ngex4gdhules9pj9m73s8w3csm5xm5","owners":["99a281fca23c26b3216975f92df3464d5436fcfe6050c8bbf4607747"],"relays":[{"type":"hostname","hostname":"west.piada.io","port":6000}],"metadata":{"url":"https://piada.io/piada_preview.metadata.json","hash":"f4bf83eb38af4c225b5ee264085d5c0bb529e2016e50b731e590019d37c780f0"}},"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2":{"id":"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2","vrfVerificationKeyHash":"4afa907233b0f44c6d6293e323a986854fcb0bbc2ba818daa48dc5ef7dd8e048","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqnkzt5ju2c6enmg04k63hz9ryc4lgxrjr5ygfq88kfsymczryjw6","owners":["27612e92e2b1accf687d6da8dc4519315fa0c390e84424073d93026f"],"relays":[{"type":"ipAddress","ipv4":"52.166.113.150","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/aleincsharp/a/main/md.json","hash":"49222a06d7b62846b99583b1dcb76d835bb62b1cec8edf5c4744c1d398182a5e"}},"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh":{"id":"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh","vrfVerificationKeyHash":"45a81cd08738c9bdb890a312f394a8aabc344f9f5e17dae53a877aa966f3293a","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzgcmw4nr5ytnfpvr7khq5nsgh87qc79yat66wzu7s7kzwcqdzjlz","owners":["918dbab31d08b9a42c1fad70527045cfe063c52757ad385cf43d613b"],"relays":[{"type":"hostname","hostname":"10.0.3.15","port":6000}],"metadata":{"url":"https://gaiastakepool.com/wp-content/uploads/2023/10/md.json","hash":"d123bf56ab892805ea6c215c88af2b73ba9e7eafc156fc19f27e9f6cf5441272"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"lovelace":0},"cost":{"lovelace":10000000000},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"hostname","hostname":"test.stakepool.at","port":9001}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"lovelace":0},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5":{"id":"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5","vrfVerificationKeyHash":"6ee546ad0102c3576526fc600b4ab806d5ae3f2cd037110d4cd2505c31c05a18","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"9/500","rewardAccount":"stake_test1uzu2wh3mwjg0pua454hskmehvvte4ut9nn22tqxzuycdclq5kuf7g","owners":["b8a75e3b7490f0f3b5a56f0b6f3763179af1659cd4a580c2e130dc7c"],"relays":[{"type":"ipAddress","ipv4":"139.180.205.134","port":6000}],"metadata":{"url":"https://stakinghouse.com/poolMetaData.json","hash":"021ca91a9f24147bd20c4b7f9a4a1a329998e5fa2ac2a362b40850749ff54b1d"}},"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj":{"id":"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj","vrfVerificationKeyHash":"8a9f2e79f70743bdc43b20da993c90b9512849f939fb5b6c3bdad80b5ff3261e","pledge":{"lovelace":25000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqj0hyhn72p495gntxzt4g9au76ycpcvku693mpexqxdk5s7cwqed","owners":["24fb92f3f28352d1135984baa0bde7b44c070cb73458ec39300cdb52"],"relays":[{"type":"hostname","hostname":"preview.relay.beerpool.io","port":6000}],"metadata":{"url":"https://beerpool.io/poolmeta.json","hash":"3f2d006aa149ac16689d6dd5d0dbbe46d87b41d4b8a282e7621996b6a64cd819"}},"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666":{"id":"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666","vrfVerificationKeyHash":"7e076f5dd02cead70dcd2058305392b67f66b8e4e6dc553fa032b918c5ddbce0","pledge":{"lovelace":2090000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqucdhr6kfvgzp2py95cqtqhvmpzswtgh8z6t2klnfr9vdgm7c25a","owners":["3986dc7ab2588105412169802c1766c2283968b9c5a5aadf9a465635"],"relays":[{"type":"hostname","hostname":"scarborough1.ddns.net","port":6000},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6001},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6002}],"metadata":{"url":"https://raw.githubusercontent.com/poonasor/cbcp/main/meta.json","hash":"c23b67ca0d0c470bc2816afa0f0bcf4a46374148be2bcf80a204c03dd1148d09"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj":{"id":"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj","vrfVerificationKeyHash":"a63ae2342ab8c541978c1f12f0a2338b78b1486c9c6fcdc5d516df4f08bbd93f","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqmeldflttkgjsjelhzxmznfklc2d8awc9g2afs07m55kfcv70208","owners":["379fb53f5aec894259fdc46d8a69b7f0a69faec150aea60ff6e94b27"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO2","hash":"170ccb211dcc6ca0074b6f36077799a40a1d5aa421066feb09a5aa60692e9db0"}},"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk":{"id":"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk","vrfVerificationKeyHash":"d203f215f4ebd6374ca67745a4d7ca99caff1b1b364cc630d18519e5ddb118ac","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzp6ykjc52zfcx5a5xqcxdwv20s66y0pqmzpn4pczuqpzqs83gzya","owners":["83a25a58a2849c1a9da1818335cc53e1ad11e106c419d43817001102"],"relays":[{"type":"hostname","hostname":"esq.ddns.net","port":6010},{"type":"hostname","hostname":"esq.ddns.net","port":6011}],"metadata":{"url":"https://raw.githubusercontent.com/bspdefi/esq/master/meta","hash":"7ae1ee1e5ad1645a9f8ee5bde677cbddafe60bcb1d014e655451ab5777aec7f7"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"lovelace":8000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat":{"id":"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat","vrfVerificationKeyHash":"482a895958b40cb9b00aa0069ded71dc7516c203e8b30d3c9993d7a3e50d47f6","pledge":{"lovelace":10000000000},"cost":{"lovelace":345000000},"margin":"3/50","rewardAccount":"stake_test1ur8xh997mc3p7vduu0ufkm3wda6dan9wxv3zz4rhguzglqs3elq2d","owners":["ce6b94bede221f31bce3f89b6e2e6f74deccae332221547747048f82"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.141","port":6000}],"metadata":{"url":"https://t.ly/QCIeZ","hash":"5dba9fe7cd4be8e0aebea2012090d3f0f5dcb6f14f86b2a9aa0596b568763bb1"}},"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0":{"id":"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0","vrfVerificationKeyHash":"2c1baf122a9eb546c89b8cd975461cf2a82fc0ef370cb53459e24d39ca852c4e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upq35kyukearpcp58waywdpxxwc3k8kt75cs05mz3mssm6g7ac95u","owners":["411a589cb67a30e0343bba47342633b11b1ecbf53107d3628ee10de9"],"relays":[{"type":"ipAddress","ipv4":"13.229.226.159","port":3001}],"metadata":{"url":"https://git.io/JJWdJ","hash":"d5688399cc3e9c839a21d4ae577e1e7ac4de2e97f54cc05b228e4b53bc6fd52d"}},"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm":{"id":"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm","vrfVerificationKeyHash":"8b69b1e8752c05884f3356cf375b648f62110997de4bb5f60f7ee2a75153b115","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upzd8a7wtfwfumdlnf95shwezqg6hpqcvuah8t372atntas9rpfa6","owners":["44d3f7ce5a5c9e6dbf9a4b485dd91011ab8418673b73ae3e575735f6"],"relays":[{"type":"hostname","hostname":"cbfr.ddns.net","port":6000}],"metadata":{"url":"https://cardanoblockchain.fr/md.json","hash":"b29d5f3120ef7dd8cfbbf7204e5c923a6a21ae821f6870abb374a7adaedb76a4"}},"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5":{"id":"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5","vrfVerificationKeyHash":"c068cab82739462b7f5c3c937105e9194e09d6aba368c3ebdef1a235bca1d450","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1upps8qhch0n9a79fms75tgtxrvutt6qzj0lktz0fa7evyssnnpavx","owners":["31888329dde5e0bf984d564311c8d1f409212227301c6e63d9a0c80b","430382f8bbe65ef8a9dc3d45a1661b38b5e80293ff6589e9efb2c242"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"767a3a2606485fd86800173f6878b387ab908523019e2b181b48196b41114db4"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv":{"id":"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv","vrfVerificationKeyHash":"e8c4df26e49c8f3c7a033297fffb3732f54563e89e5db9ef812380eb708a1733","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1up5zw8rhwj7ew09ggqtzdrrlg77xq3et7627wegaylgt5fc2lvmw7","owners":["68271c7774bd973ca84016268c7f47bc60472bf695e7651d27d0ba27"],"relays":[{"type":"ipAddress","ipv4":"5.12.45.138","port":1337}],"metadata":{"url":"https://tinyurl.com/mpde34ve","hash":"cb74d28b4cacd5153c146fb2bc5eaf3428d87db172ef4e8efb63575bb8b5e316"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l":{"id":"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l","vrfVerificationKeyHash":"1cbfd07a6145d0d2859c4d114f7e71cb5b9fc7e29cbfa37a393db2637241ce92","pledge":{"lovelace":9000000000},"cost":{"lovelace":400000000},"margin":"0/1","rewardAccount":"stake_test1uqza4tpx4698h0w793fjhtnqh4amhyfcftyx78h54q2wh0qgq074z","owners":["05daac26ae8a7bbdde2c532bae60bd7bbb91384ac86f1ef4a814ebbc"],"relays":[{"type":"hostname","hostname":"relay1.dynip.org","port":28000}],"metadata":{"url":"http://panyvino.com","hash":"9ac046260b09e2befc7addb05b469f90279338821285da90f5cc6e8cb4c5ab15"}},"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs":{"id":"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs","vrfVerificationKeyHash":"66cf87b05688c2872b17f57da72550758a8cd23097484f68803b8f250d9f90bc","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq90sudgsaa0wj4z27yeeeggwpjyzh6w2kxvujffcax0llc8aqm32","owners":["0af871a8877af74aa257899ce5087064415f4e558cce4929c74cffff"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/politikoz/p/master/p.json","hash":"0321dff086209d0f90a1804199e4c296e91b2bbc6fdbb596af11a51c4d1d2c4f"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6":{"id":"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6","vrfVerificationKeyHash":"9ab23eba9fbe7912061f4e2dbc1a4f98ea684156f2811737452506c70cf54e44","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relays.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"96e877b9c2852f47a31570794f4845c3cf9c5e2a78687129a770d2c7768efd62"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"hostname","hostname":"relay1.preview.stakepool.quebec","port":4000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ca053fef4b28242ebbdec5bfe99fdcd0ce37927a281dbfd3173f09a59a7a8432"}},"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy":{"id":"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy","vrfVerificationKeyHash":"c1cc951ff3f672f20e31ae5bce743ebef7cf1eed6594c2842cf76d29d6d91f09","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1uqh2r3mmdwgqqzjc3fqtfgx3a02tlx6dvjs6t56aeyqnnds9xydza","owners":["2ea1c77b6b90000a588a40b4a0d1ebd4bf9b4d64a1a5d35dc90139b6","d9cabfbd20d5e0250f063fc138f1c7dc401c1a84cf418059f4b3d5fa"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"1cc405454be71cd728d3842d30ba187d5ea3287d05056e62df4a90f87b579891"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"hostname","hostname":"cardano-preview-relay-1.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-2.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-3.syn.pizza","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"7fdeea9ed970f2e5eb06a7a8c272c84ce2ca2f6a48ab5912b75f25346a0acbf6"}},"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84":{"id":"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84","vrfVerificationKeyHash":"5d6cfbf6cb00aef9009058eec7e6a2aaa4f341d8ff0862a6cc2840c308a2f8b5","pledge":{"lovelace":50000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzd3kkuwvul6ydz869tp8fym6602y24wqww7z5qtc2a9pnst74u6p","owners":["9b1b5b8e673fa23447d15613a49bd69ea22aae039de1500bc2ba50ce"],"relays":[],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"16ccef737d542fcc0ee71f8ed13526c7d7cd76858326cdd7ca417ab93e889bbc"}},"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd":{"id":"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd","vrfVerificationKeyHash":"829ee2ddb2984b5e23c93a8b67a7b7aa7af02da2340177ae386d54d8c7ad42ee","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1uzflds3zydwqeqk28qy97zwwum7v862vm0uh4ll6uxkxrts92gtm7","owners":["93f6c222235c0c82ca38085f09cee6fcc3e94cdbf97afffae1ac61ae"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi3-pv.json","hash":"6588af1eb497556ea55193a3e0cc15686b95ac38695d42417ccc696063e8b21b"}},"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5":{"id":"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5","vrfVerificationKeyHash":"891823d960e31bb9f1fbd8c64b28771c917f46fbdc036ed29bbbef5005e780bb","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzklqrm9xmagw0t7r63mf8ce8x26yawrqcr6ux5r3x9ve5crp8sha","owners":["adf00f6536fa873d7e1ea3b49f193995a275c30607ae1a83898accd3"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNF","hash":"8ed31aa584c62fe11967425b6596144ca7822128031d374fcc1a43e662c914f4"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"lovelace":1112000000},"cost":{"lovelace":413000000},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp":{"id":"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp","vrfVerificationKeyHash":"9792680b674d04b392cb637a223d327d7af568ef358080cea4d2e10790040f08","pledge":{"lovelace":14000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq9f3jgmfywhgcmhtd0mv7m3qwp22ah08sd3x8s4ljylpxghkf2yx","owners":["0a98c91b491d7463775b5fb67b710382a576ef3c1b131e15fc89f099"],"relays":[{"type":"hostname","hostname":"preview.blockchainbill.lol","port":3003}],"metadata":{"url":"https://preview.blockchainbill.lol/SNSOB.metadata.json","hash":"4792d9a653baab097047724e97896697c4d1f04accd9e9d126f1786102f1e2d4"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj":{"id":"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj","vrfVerificationKeyHash":"3b18c66658a5d9dd1a2bd876f1e0b076451641c41017017ccc6b448bcf38c529","pledge":{"lovelace":70000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uqz0vs8vnxqpdcuey0qcvufn95gydj6x5g37wgy975wlfwgdhyuk4","owners":["04f640ec998016e39923c18671332d1046cb46a223e72085f51df4b9"],"relays":[{"type":"ipAddress","ipv4":"184.73.135.122","port":3002}],"metadata":{"url":"bit.ly/3Eh3p7A","hash":"9b9d00fcec79d306e3dffcc6865d4088f35b13c268e32c7a2fabb1845947f9c7"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"lovelace":5000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet":{"id":"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet","vrfVerificationKeyHash":"35cf12acb20ade24b4a1b09b8b033299e0551a556519b42ca47f32511e64531e","pledge":{"lovelace":9369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uz7ne2udchys5e3kjfzpjj2f84v63csfhhpluz80kfwegpqawzmqc","owners":["bd3cab8dc5c90a663692441949493d59a8e209bdc3fe08efb25d9404"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3":{"id":"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3","vrfVerificationKeyHash":"e5ae4cca1fc629ef51b88e6224dddc93d9b87eabfeee18cfc90fd7b35e396dc3","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzjqrwex060z6w0f3j87sz6cehvmw2h5hk3szz0kyth9f7sd977ss","owners":["a401bb267e9e2d39e98c8fe80b58cdd9b72af4bda30109f622ee54fa"],"relays":[],"metadata":{"url":"https://pastebin.com/raw/xDxT4v5n","hash":"da9773e26d50eea8283a80ff5b0549c28ff2ec4d64015e7532b5acc22f0c57ee"}},"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk":{"id":"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk","vrfVerificationKeyHash":"678c83627cbe1378f39d12b5c7bdd27a2e90358a7b80fa0cece79e39139f08b2","pledge":{"lovelace":1000000000},"cost":{"lovelace":444000000},"margin":"1/100","rewardAccount":"stake_test1up28m49ylffdnc8fwty0d5waau8udzuzv6uh0e6m0n2n5lgactsc7","owners":["547dd4a4fa52d9e0e972c8f6d1ddef0fc68b8266b977e75b7cd53a7d"],"relays":[{"type":"hostname","hostname":"ava1.sytes.net","port":6031}],"metadata":{"url":"https://avacsp.com/metadata/ava-preview-MetaData.json","hash":"c0db5e94c1dbe73a6abd0f837b8165d06709e7c02ef02ca2d7400e04ae972db5"}},"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j":{"id":"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j","vrfVerificationKeyHash":"c85155a3402b3d36b205b7657eb1c787f7ea9c5ed02003a39c08ebb2530453bd","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz5h6parv7gfk7hk3kgna07svwq5qaumrfut437965r0p4gt650jf","owners":["a97d07a367909b7af68d913ebfd0638140779b1a78bac7c5d506f0d5"],"relays":[{"type":"ipAddress","ipv4":"185.2.100.31","port":6000}],"metadata":{"url":"https://me2.do/5QGindar","hash":"13ff652f003ffde0d19c92450f89b19b056f7976f758b3e1e4f95e5ec58f10eb"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3":{"id":"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3","vrfVerificationKeyHash":"896bac573601caf048566f3562e99be9c742832ad7e4527b5b1cdc330e9384c1","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqr9uznkqeuv6e7ez79yf8us678xus3y6ac0su9d253r0eg5l4clt","owners":["065e0a760678cd67d9178a449f90d78e6e4224d770f870ad552237e5"],"relays":[{"type":"ipAddress","ipv4":"75.119.130.108","port":6000}],"metadata":{"url":"https://hamster-stake-pool.de/preview_poolmeta.json","hash":"81813b6eb7904fb8533aa51f9aebc16f14e6ade80576078b83a8b307ace6b987"}},"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg":{"id":"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg","vrfVerificationKeyHash":"9b0cdfd880b67152d7b808ee37f33c0e9181ebda8ecab369b239fdbfdf3ecaad","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"1/1","rewardAccount":"stake_test1uzyvlggps4p4c0aejtr4qqxywwp9gg9xk6f9u49s7tzcdmqstww5s","owners":["88cfa10185435c3fb992c75000c473825420a6b6925e54b0f2c586ec"],"relays":[{"type":"hostname","hostname":"adrelay.hawak.cloud","port":6000}],"metadata":{"url":"https://tinyurl.com/hawakpool","hash":"f06c26e560a1395007149ef13dc7301348a77f43f67ce9f504f0be571cc59e6e"}},"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm":{"id":"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm","vrfVerificationKeyHash":"b8b2e69a0b590af68cbf1411aad7c93c1b48346047551461ec2a2ccf9dc182d6","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test17r76qtu38a29387whc40a5e6da3xqrkkf87sf78kjgggals8xt5hy","owners":["69c9b2655d27e06722905f4ae9e356a18886340964baa472f29d8586"],"relays":[{"type":"hostname","hostname":"preview-node.pool.milkomeda.com","port":3001}],"metadata":{"url":"https://is.gd/Ikn7kl","hash":"8fc709584d2f7d859a902539fc28e8c9a7f6d046b8c8d89a793aad1594fbdfc2"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"lovelace":200000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1uzpck3ssxf3cw5mxs8umex3stuf4pk5m9qyfp57ymrkc3fg0mmtsj","owners":["838b4610326387536681f9bc9a305f1350da9b280890d3c4d8ed88a5","f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v":{"id":"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v","vrfVerificationKeyHash":"71762169bc3dfc516e39854f78e572f24d5a7ab85d42a55c1bfd4e86e0b531a7","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1uperlgjrwsqv0gluun7xk670lnevmlc9v3m0zxjx76p7z3q95gj3k","owners":["723fa2437400c7a3fce4fc6b6bcffcf2cdff056476f11a46f683e144"],"relays":[{"type":"ipAddress","ipv4":"184.174.32.106","port":6002}],"metadata":{"url":"https://mladenlm.github.io/poolMetadata.json","hash":"30c5b5372462def97e466b84ff8179ab80dc4deac67b61981e9db947915c8558"}},"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth":{"id":"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth","vrfVerificationKeyHash":"3a238800d748179b955445d9c2488125785f1e271e8d43449e292d5a7c4b7b71","pledge":{"lovelace":1000000},"cost":{"lovelace":200000000},"margin":"1/2","rewardAccount":"stake_test1upxs40dqlfrh4gkd7djhwr5qlq225c3etv66f8m0mgsahxgk45c6j","owners":["4d0abda0fa477aa2cdf365770e80f814aa62395b35a49f6fda21db99"],"relays":[{"type":"ipAddress","ipv4":"212.24.98.109","port":5333}],"metadata":{"url":"https://adawallet.io/public_files/MDS_ST_meta_v2.json","hash":"ef3aca5a37d0bc4d81c4f85da513e3565be372e9bc3ecdf6fe5cb1a5bb55bff2"}},"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye":{"id":"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye","vrfVerificationKeyHash":"0b9f2a9f73eb7d35054626b561f9b4d4d4d5040a547c0cc2beffe50829b36c93","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1urgqett9quhpsjm4cygp3uf7u63tz5gzx4czf5t965xejegd67zc0","owners":["d00cad65072e184b75c11018f13ee6a2b15102357024d165d50d9965"],"relays":[{"type":"hostname","hostname":"xsecpreview.infra.getlenses.co.uk","port":3000}],"metadata":{"url":"https://tinyurl.com/bdfmuct6","hash":"afb2956e054911e178c9d5556e560155e2f663022112bc476820348d1006eb32"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"lovelace":6000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea":{"id":"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea","vrfVerificationKeyHash":"b4ea03eb58cbfa9059e0b8478f09762f002e4cebc9aae7bf6de04b9ccebb9d94","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzx366cdgqv9lg69y7ufw59af3y7yh9jxflnym8z8qz3pfgmef2r8","owners":["8d1d6b0d40185fa34527b89750bd4c49e25cb2327f326ce2380510a5"],"relays":[{"type":"hostname","hostname":"preview.adanorthpool.com","port":9613}],"metadata":{"url":"https://www.adanorthpool.com/ANPPREVIEW.metadata.json","hash":"e4f9a2cf26e72b93955893bbcae4a37c27c061b04ab2a8d79856350e6dc3fb26"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"lovelace":45000000000},"cost":{"lovelace":340000000},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"159.138.55.134","port":3001},{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp":{"id":"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp","vrfVerificationKeyHash":"9cd4eab04ea0073076b33c6501787d932edd031f49daa0c0fdecc4774a2ef977","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzuahv2t7qhvgshhsnj47xhmh32n6hhpgjk5e296kwyr8lq5fvd5s","owners":["b9dbb14bf02ec442f784e55f1afbbc553d5ee144ad4ca8bab38833fc"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"lovelace":1000000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"edc82ecfb1cabeb15cb122bd6a65b6de6006e2201617e3c8dfdf8cc652baacfe"}},"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk":{"id":"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk","vrfVerificationKeyHash":"f727fdc0e656c1faea14c812b9cf7648795f5b606f6428f6e8dd68d0f729514d","pledge":{"lovelace":4000000000},"cost":{"lovelace":340000000},"margin":"3/200","rewardAccount":"stake_test1uzpp6e09x70k4wu4ccwujgwfdjwluf4nzyekkaa2l0dlgjq07ax2w","owners":["821d65e5379f6abb95c61dc921c96c9dfe26b311336b77aafbdbf448"],"relays":[{"type":"ipAddress","ipv4":"51.255.82.47","port":6000}],"metadata":{"url":"http://config.ada-staking.fr/metadatas_preview.json","hash":"86fd4e3118fe835008a699f339ec111ac35682de1d449b15255544b1570b601f"}},"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339":{"id":"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339","vrfVerificationKeyHash":"1764a62306c3f165ab2a890709c9b5c17559cfbadf77923948d3dc8fa41bcdf6","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up0me0jesha4wvnnn5j28tdkdqpk0ufdwa8fk9wdl4q9kts8rpqh9","owners":["5fbcbe5985fb5732739d24a3adb6680367f12d774e9b15cdfd405b2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNG","hash":"de0fcdf1da51661d27fbf97ce6e78d71a038e5582e90659eb216c19d66738cfa"}},"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas":{"id":"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas","vrfVerificationKeyHash":"fc012f1cd6346ba64f1faed6ad9676769d1cb12c46901c8b2c12f6bb71d90aed","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up536agqy6nr5u0gpddwjlx5m2r9sevhd4nwp5su8ktg4wqlrp2vc","owners":["691d750026a63a71e80b5ae97cd4da865865976d66e0d21c3d968ab8"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO3","hash":"07945a19eb6413ce7b8523495d7670c3d2b6ce90f75a54c023845a87fdde2fb3"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m":{"id":"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m","vrfVerificationKeyHash":"654ed6220e9cc5fd5ceb71f1bc1b4cf34e1826eea3261ba595cc290e9469a79f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urk948umhqw2z6c95r0dhdr62898urgf46y2plpzre2fe7qzntp6f","owners":["ec5a9f9bb81ca16b05a0dedbb47a51ca7e0d09ae88a0fc221e549cf8"],"relays":[{"type":"hostname","hostname":"preview.relays.liqwid.finance","port":3001}],"metadata":{"url":"https://lqwdpool.s3.amazonaws.com/metadata","hash":"9af8ffcc01e792191a220e45b1342178ccd65ac6ce721ee3c37c3614ce18c2a4"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn":{"id":"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn","vrfVerificationKeyHash":"46b2dca70839f8515b2d65cb7abe6c251aef8f0221025dc30c4b63af7bf355e3","pledge":{"lovelace":50000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upedrdplfruuaplyaet524e4x6nxus2z3hss8gnwep62eqqsq4mym","owners":["72d1b43f48f9ce87e4ee5745573536a66e41428de103a26ec874ac80"],"relays":[{"type":"hostname","hostname":"172.30.100.12","port":6000},{"type":"hostname","hostname":"172.30.100.10","port":6000}],"metadata":{"url":"https://tinyurl.com/DVJMDG","hash":"56949b92b173ecdc5852d9fe5946411f384a1ef1659a26840f4467ffd1a62fb0"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"lovelace":9000000},"cost":{"lovelace":340000000},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6":{"id":"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6","vrfVerificationKeyHash":"30ff40541e2c155acfcdfa844069e705dee1ae8eef9bdcde22de465de6fa8fdd","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1up3pxcv3etz7d8h5e6csly3yggnmnwrgqrvhhjsqak7828ck4ytys","owners":["62136191cac5e69ef4ceb10f92244227b9b86800d97bca00edbc751f"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn":{"id":"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn","vrfVerificationKeyHash":"a6b8428cc8ef74f793adb8469e2a36b7ae063186f0b314f837397d71ae6bf974","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ur6paxqxatgnvwjedszllqn54wd0t0xu9tq7lj8qjx4py2su8z4zw","owners":["f41e9806ead1363a596c05ff8274ab9af5bcdc2ac1efc8e091aa122a"],"relays":[{"type":"hostname","hostname":"75.119.159.254","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/TurboEgon/ada/master/md.json","hash":"9e02e9270ef85cc9415878d079a9237f2d55a924438b5cbf03850d894130d7b2"}},"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3":{"id":"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3","vrfVerificationKeyHash":"7d96da7d962d2bf0b372f5626e34b124bd38e8996d1d8880ec902b12b3a6a47d","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ursgmmafa26uqmacut9k9ewgxrja60gv5gxlevrgevmx28gm8c59h","owners":["e6f0fb6aa711a3ce9f89d3d85d75e9215d990586b899aa80837744ef"],"relays":[{"type":"ipAddress","ipv4":"1.1.1.1","port":11}],"metadata":{"url":"http://baidu.com/","hash":"5418650706007cbfb0f784cb6a4a274c3c00ef4345e76cb053c3046cf481e74b"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"lovelace":5000000000},"cost":{"lovelace":500000000},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"lovelace":167369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh":{"id":"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh","vrfVerificationKeyHash":"c6cdbfe1e04a602a85be83b553a44657a8dd69835d14255bc820f754b38d55b3","pledge":{"lovelace":555000000},"cost":{"lovelace":350000000},"margin":"3/20","rewardAccount":"stake_test1uqgvynv9sx5kvlpn5a2zs2y6c9hfwxzuwwlntq0s2uqdahspm9ss4","owners":["10c24d8581a9667c33a75428289ac16e97185c73bf3581f05700dede"],"relays":[{"type":"ipAddress","ipv4":"185.161.193.105","port":6012}],"metadata":{"url":"https://clio.one/metadata/clio1_testnet.json","hash":"47530ba97c12e2ac40462e9c86eeb07ea555877d2a1f9d74b6ff8471839267d8"}},"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm":{"id":"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm","vrfVerificationKeyHash":"04c92fa6798809d11f840b1b15bf94f4a1ca9faebc92b82453741b453c700f6c","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uzz4zhcllemvlf6n5yr5nuyxrpws3k06nrs6cn200900m8qtufxcz","owners":["85515f1ffe76cfa753a10749f086185d08d9fa98e1ac4d4f795efd9c"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"https://bit.ly/preview_afica_metadata","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n":{"id":"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n","vrfVerificationKeyHash":"e10abc12be25311013a194e97766854c732f0bad09ff6c8bf3554e30f1d21d02","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upyrg0gn898nnfeal4c8j0536d9hrdlh82cu9kd39s26mgsd90gfn","owners":["48343d13394f39a73dfd70793e91d34b71b7f73ab1c2d9b12c15ada2"],"relays":[{"type":"hostname","hostname":"1.tcp.au.ngrok.io","port":25432}],"metadata":{"url":"https://t.ly/IT5j2","hash":"d79139620ec27edc094bbf79051bb0b97e599d1826f9545718786a4f9ae4eed0"}},"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76":{"id":"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76","vrfVerificationKeyHash":"bf219f9491ead9d95d362259f14e6ac78e68f3e7b06972b631ba8ac80a82b1af","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1up8yrvxz9vvc54jh3xhau9n4hgvp004yj2xgnxrsx665e6qvf8nhl","owners":["4e41b0c22b198a565789afde1675ba1817bea4928c89987036b54ce8"],"relays":[{"type":"hostname","hostname":"beta.stake-cardano-pool.com","port":7002}],"metadata":{"url":"https://bit.ly/prevRCADA","hash":"28b7537b13a8954f80ca50022dce103252a2d64262e62b17847482ff8b474ca0"}},"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d":{"id":"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d","vrfVerificationKeyHash":"968a613baf8ec8e434b663e0a1fdf1c710a7b760a67dfb15e8ede88b818236e9","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uppyxzrrhyfh5ja2tgfm87u8h36xgr3a6d6p2ljztpfew8snugder","owners":["42430863b9137a4baa5a13b3fb87bc74640e3dd374157e425853971e"],"relays":[{"type":"ipAddress","ipv4":"123.121.123.121","port":3000}],"metadata":{"url":"https://git.io/JJWdJ","hash":"c5c38833176e2d575bd8693e206e3af2e1088e556def86cae9f6c2fc45579f36"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd":{"id":"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd","vrfVerificationKeyHash":"0cd296f8c5f1337827cacf997a68fc4e700e79632a72ef341419464cea335f87","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1up6g3hdqewdu96xcsaszvfg2jz422aq604ukkaw8cp686xcjnchlw","owners":["7488dda0cb9bc2e8d8876026250a90aaa5741a7d796b75c7c0747d1b"],"relays":[{"type":"hostname","hostname":"preview.happystaking.io","port":3003}],"metadata":{"url":"https://happystaking.io/poolMetadataPreview.json","hash":"cafacba1d7a1e22665204fd41daf451d767e5bb684856b5f58e70511cf8ac076"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6":{"id":"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6","vrfVerificationKeyHash":"d35ac02a0872f631f2eeca690a00578d2522af70ee749c75a696b458dfc74a3b","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1ure4jcjcvf0np3hfen3ngfvgqymmur783tdmjw0hnrf4q8s52ymvc","owners":["f3596258625f30c6e9cce33425880137be0fc78adbb939f798d3501e"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"http://metadata.afica.io/preview.json","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg":{"id":"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa":{"id":"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa","vrfVerificationKeyHash":"9255fd57d5e228c2228181d99087ab6551eb7d27fc5294813a48c3f1d2327d18","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upzkdmu99wpclw7h9v8hvdd09vwygyj77qsma0gnef2znwqpk8aff","owners":["4566ef852b838fbbd72b0f7635af2b1c44125ef021bebd13ca5429b8"],"relays":[{"type":"hostname","hostname":"5.161.205.147","port":3001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"f7f5329cbaf15b781d1a97f0f596697065f7c453aa2baf3ac034a67c2ac6d0be"}},"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da":{"id":"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"https://www.roastfrog.com/testpoolMetadata.json","hash":"f03b6faa03747b3657b1e5dd6c2f400421a609529654dbd1c1cfe6a774c5bd19"}},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"lovelace":123000000},"cost":{"lovelace":171000000},"margin":"27/625","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd":{"id":"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd","vrfVerificationKeyHash":"1077d0e618747203a2c133c9c758f9201a6666c8b342571650b441ed79a8b435","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzdz78y403tg3vr4qs5yz24yxdn5mg5knl09wnyta8sn6ds6xq8dv","owners":["9a2f1c957c5688b0750428412aa433674da2969fde574c8be9e13d36"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP2","hash":"8c3c4274796876b709eb9fc24b0ed08cdefd0574a011626c307ec83789dd0f61"}},"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv":{"id":"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv","vrfVerificationKeyHash":"78042dd9de14cb768582a928c234c4bda3c58ce993a2fb67e575eb5035a15335","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzmundjjeta9g6lkszul9zqvnnhnfjgqqkra5a6sfykljfq89ydly","owners":["b7c9b652cafa546bf680b9f2880c9cef34c9000587da7750492df924"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNB","hash":"c15f332d03f1660ac02c025bd89bbb03b313d11f3c8e8a3c3f331709e422e56d"}},"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav":{"id":"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav","vrfVerificationKeyHash":"8eeabd1fa1f3b29dd9939e75e8ca450f88d77ec6be1f1a038515b0f0460e5312","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upznunn78q5v6myxfmmgfe6czuhszmnwwpvszr2w8sf4aggtdp3ck","owners":["3b957bf2d0a2299394ce7dd21dd42ff0cb2ee8d517b0b2d297e31828","453e4e7e3828cd6c864ef684e758172f016e6e7059010d4e3c135ea1","5fe8542e18bde2f7469871e89b39839db8b782df86cf68b036450b73"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"997efa7ae731f7d203d790985f7ddf6ce37fe07944e2633e9acc386dae553dbe"}},"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua":{"id":"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua","vrfVerificationKeyHash":"b015beeb402d42c1607f69634ed3e53962354246f15e64073697aa03c704955b","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1urfjhemxd66mhxds7g6w07gsfy6dx2fheh6jv7zyd88l54qxghsqh","owners":["9b4052824b5cd89bb9c74ebe9405fbabf76003c5753e35d3bcc86531"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr":{"id":"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr","vrfVerificationKeyHash":"9003483796788e265a27728db0f83eb9bd41739f821924e286629999e10a88e5","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urmdhhr5qhr5rgrsnw7wa2kernuahyemrr4pqta3lke6jxguxf7n4","owners":["f6dbdc7405c741a0709bbceeaad91cf9db933b18ea102fb1fdb3a919"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO4","hash":"611a69c0d90dbff124db9e3f5b21c846958e340fee72ed00bceb6e5e1f429a66"}},"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e":{"id":"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e","vrfVerificationKeyHash":"335399acf3228243efb0fec0e43f18d61a496d4fd740fd800f9b91b5fa7d0540","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1upv6ppwktpx45y3x4msy20fpm0fyyt4g6d9xh4ntlf9tykqyulqzd","owners":["59a085d6584d5a1226aee0453d21dbd2422ea8d34a6bd66bfa4ab258"],"relays":[{"type":"hostname","hostname":"lion474.duckdns.org","port":6000}],"metadata":{"url":"https://tinyurl.com/pkmer3hs","hash":"00ab354051a92cecb843d473c1bce7057e8d922c2f790da4326d1e4daff323e2"}},"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0":{"id":"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0","vrfVerificationKeyHash":"ae3c85580444e5a30cfad07b6a70e004c1875faf87851a06ce756e5ed42ee8f4","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzds77htp7kk5txdk5e2zntrejgmv5gum445n26ygawv40ghak4zs","owners":["9b0f7aeb0fad6a2ccdb532a14d63cc91b6511cdd6b49ab44475ccabd"],"relays":[{"type":"hostname","hostname":"sp.altzpool.com","port":5001}],"metadata":{"url":"https://altzpool.com/WALTZ/poolmeta.json","hash":"5c8ab40789c4fdc8aeb4684deda3c85aa0202078e0f2d575977f76351da9e771"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka":{"id":"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka","vrfVerificationKeyHash":"a06673f1adeb90f1c228becf0d7467f750aa2ff22380297b92cba4af98c1f2ac","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upglkzseasr52vrwa8lyuare8vrlsgj7gd7u7qcapfr4rtcxzny4g","owners":["51fb0a19ec0745306ee9fe4e74793b07f8225e437dcf031d0a4751af"],"relays":[{"type":"ipAddress","ipv4":"144.126.157.40","port":3005}],"metadata":{"url":"https://onecommunityada.com/public/poolmeta-preview-v01.json","hash":"13789ef22250148bba4158df16011318b63a18110d64f2b449bb10df5648f2d6"}},"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w":{"id":"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w","vrfVerificationKeyHash":"6c3788da12fce689f7e7d6f50814ad1b21a2ec41f2689bd12770b72958d62689","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqyjm25xx2jv62fydccgx036ahs7c5fvwl9a2vpempeemgcj594y7","owners":["092daa8632a4cd29246e30833e3aede1ec512c77cbd53039d8739da3"],"relays":[{"type":"ipAddress","ipv4":"159.203.25.174","port":6000}],"metadata":{"url":"https://tinyurl.com/uakazrpv","hash":"afdf5aa90ad33073ed75f0a72bc72b952e774deac00e7f4cb1020bfb7c6e91ef"}},"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8":{"id":"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8","vrfVerificationKeyHash":"168dc3fcbe016160b0bb58e60880b2cc422d63937a944e9522bd3c1847f429f0","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz2equk92h9kfjj3v80ls23t4hx4r4n3mwr8tcddgpc9ldcn3cvfz","owners":["959072c555cb64ca5161dff82a2badcd51d671db8675e1ad40705fb7"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.140","port":6000}],"metadata":{"url":"https://t.ly/W1Nni","hash":"167d5e2610687507e54ed74f89c5705a09375e89199ed5c8fbd980a26ad84a7d"}},"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f":{"id":"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f","vrfVerificationKeyHash":"1786535ea1a4e6ee4addea9ea255643515698bfe927b7a631402a274172685ae","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqxcefkp07zelmy36y3jdpzajxz2w053h027sknlk4fkklqe96s62","owners":["0d8ca6c17f859fec91d12326845d9184a73e91bbd5e85a7fb5536b7c"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP4","hash":"2d9ef4dab347f7151dbdb884f61dbeb1d1322655d0835a002cba7072dc2baa41"}},"pool1a6ug5gelydu29djkuvxl869257e7v4d3zwqwt69ygu7dcfts59j":{"id":"pool1a6ug5gelydu29djkuvxl869257e7v4d3zwqwt69ygu7dcfts59j","vrfVerificationKeyHash":"1c3ba4a44d07d779d3b699936ead18a3dd9b20eeaa25281df144c404b611f864","pledge":{"lovelace":1000000000},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uqrw4g3al234sqskw87z6t45k42z2t9qyp9jyeec83wm0csq2u08c","owners":["06eaa23dfaa358021671fc2d2eb4b554252ca0204b2267383c5db7e2"],"relays":[{"type":"hostname","hostname":"testnet.valhallapool.net","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/t0m3kf/v/main/testnet.json","hash":"1d707d6861b2fdb6b46321270e40ea01ff9a49acc3858b5499b5f33fa4f3bebf"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj":{"id":"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj","vrfVerificationKeyHash":"d2c415e4eb5c7295a10d17b1eecc7791f6217f0dfcf298e83eba53f44a792362","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1ur2pejlgfqa5e4stqg529tqj06k6gamweaawgphvewkdgtqqkuwlr","owners":["d41ccbe8483b4cd60b0228a2ac127eada4776ecf7ae406eccbacd42c"],"relays":[{"type":"ipAddress","ipv4":"194.163.158.69","port":6002}],"metadata":{"url":"https://solidsnakedev.github.io/poolMetadata.json","hash":"66e626854b9d86d419cba818f04e4958247cb7d613d55959cb8df924bdb99c03"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521},{"type":"hostname","hostname":"passive-preview-testnet-relay.junostakepool.com","port":4531}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"3a0d397aa9bf08753197678d93ee2f615daa4727671497bfd69fabd84c63d907"}},"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r":{"id":"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r","vrfVerificationKeyHash":"392d334b0670323093e6cf60edf36961e4005de35b2c86f01e41ce2f7428837a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urmklja3h07ndxxrg6eu950x9glzws3gcu7wpphz2cdgujql0rxpn","owners":["10d1fd3cc499c8651bc9344fabe05739fa3e5777145eb638d39dc449"],"relays":[{"type":"ipAddress","ipv4":"210.54.38.228","port":4020}],"metadata":{"url":"https://bit.ly/3vlDN4w","hash":"ff6cdb1fba6074de46d95e0f878d9683d2ce2cf3acb57e6a4fdb9d97af8fe739"}},"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma":{"id":"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma","vrfVerificationKeyHash":"f4c30ed620cf34f18f8a03e87a178fa01dcd21f07aeaab8c69bd1ad168177b1a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urwheaxgd4llq93s85tlnazqtzqpgrxy3nagtagl97xswug363ct0","owners":["dd7cf4c86d7ff016303d17f9f4405880140cc48cfa85f51f2f8d0771"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi2-pv.json","hash":"9b7e689634956d37e264f89a9ff1dc9cc38f3f4feb2984193ba55b75fbbe4edc"}},"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p":{"id":"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p","vrfVerificationKeyHash":"54b1898f88cf3e41f0b2d961132a6d35aee6e6c1cd06b10676d07eaaddb739f2","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqy849fm6tqp8vvn69tmvtgnc26kkre9xhu236kxf2mpgcg4lusqv","owners":["087a953bd2c013b193d157b62d13c2b56b0f2535f8a8eac64ab61461"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO6","hash":"7fd82335e38dff9fcf4d7cbc685bc81120b34a8138a5f63ac49bbe34e52f5adf"}},"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l":{"id":"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l","vrfVerificationKeyHash":"51e8282e2675e4b384ca03ee2b001d3d430349a80b8c5147215f77a5739a66ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urvkry4v3ncrhzjhmwg0uluerrr0rx43eh3pafq75ufucpcherj5s","owners":["d96192ac8cf03b8a57db90fe7f9918c6f19ab1cde21ea41ea713cc07"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNC","hash":"ccd9b7349e6a97c5f670f93225c9596bff725a63f7f4f1a42f5ea1367c639a80"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37":{"id":"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37","vrfVerificationKeyHash":"28c7be4bfae439c34bbd00ee1f38fbdd6da7699348e1a2d8cc8f5a5f37ec0e0e","pledge":{"lovelace":20000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upzyxqc689puxvznynchysv368j4jwjvghzszqsx4fsnsasec99jl","owners":["4443031a3943c3305324f1724191d1e5593a4c45c5010206aa613876"],"relays":[],"metadata":{"url":"http://bit.ly/rabbitholepools","hash":"618d89696eea579b5e4402f220109785e9039181d5a46fc7fff45e035a8cab61"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"lovelace":127813888409},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"lovelace":65000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}},"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38":{"id":"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38","vrfVerificationKeyHash":"3256df2b38272c09c93044fa2702d5ffb1f38c5a2145dc3cb94d5800b28accce","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzdgxac7lcan0v7qr4tre4v8aeurwtgk3cszpthf3fra68gc7wnk2","owners":["9a83771efe3b37b3c01d563cd587ee78372d168e2020aee98a47dd1d"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":3001}],"metadata":{"url":"https://tinyurl.com/6br33xwj","hash":"12b539568a42859dd8a2fe2e9c9ab3095ca4f8dedbb8899f9943ecd54dc16047"}}},"method":"queryLedgerState/stakePools","jsonrpc":"2.0","id":"queryLedgerState/stakePools-3rvj1ml27d5loixowwa","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json b/fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json deleted file mode 100644 index a70856486..000000000 --- a/fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json +++ /dev/null @@ -1 +0,0 @@ -{"result":"2022-10-25T00:00:00Z","method":"queryNetwork/startTime","jsonrpc":"2.0","id":"queryNetwork/startTime-3rvj1ml27d5loixoww6","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-startTime-5185237542c7c8a6810aeb0fe74b3b40.json b/fixtures/test/ogmios/queryNetwork-startTime-5185237542c7c8a6810aeb0fe74b3b40.json new file mode 100644 index 000000000..6bc185e37 --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-startTime-5185237542c7c8a6810aeb0fe74b3b40.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryNetwork/startTime","result":"2022-10-25T00:00:00Z","id":"queryNetwork/startTime-hfkgnvkflxdivdsi"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-81c282b9c0e02dbd4628e80ff508e68b.json b/fixtures/test/ogmios/queryNetwork-tip-81c282b9c0e02dbd4628e80ff508e68b.json new file mode 100644 index 000000000..004402d99 --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-tip-81c282b9c0e02dbd4628e80ff508e68b.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryNetwork/tip","result":{"slot":3967178,"id":"96f09de5433b9cddf7cdc7cf4c2cf9e0b6f6e88895c705a807e87d5f852da0cf"},"id":"queryNetwork/tip-hfkgnvkflxdivdsh"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json b/fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json deleted file mode 100644 index 9bf66db46..000000000 --- a/fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json +++ /dev/null @@ -1 +0,0 @@ -{"result":{"slot":32379177,"id":"5f88efad29d47924ac3c275ad44ec1e1163d04c9e6d98927b1389ae87325a418"},"method":"queryNetwork/tip","jsonrpc":"2.0","id":"queryNetwork/tip-3rvj1ml27d5loixoww4","error":null} \ No newline at end of file diff --git a/test/Blockfrost/ProtocolParameters.purs b/test/Blockfrost/ProtocolParameters.purs index ec9e596c8..23b9c2460 100644 --- a/test/Blockfrost/ProtocolParameters.purs +++ b/test/Blockfrost/ProtocolParameters.purs @@ -29,7 +29,7 @@ blockfrostFixture = ogmiosFixture :: String ogmiosFixture = - "ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json" + "ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json" loadFixture :: forall (a :: Type). DecodeAeson a => String -> Aff a loadFixture fixture = diff --git a/test/CoinSelection/CoinSelection.purs b/test/CoinSelection/CoinSelection.purs index 0a7066ded..c74466833 100644 --- a/test/CoinSelection/CoinSelection.purs +++ b/test/CoinSelection/CoinSelection.purs @@ -65,7 +65,7 @@ suite = SelectionState.suite UtxoIndex.suite group "performMultiAssetSelection" do - test "Performs a selection with zero outputs" do + test "Performs selection with zero outputs" do quickCheck' 30 prop_performMultiAssetSelection_empty runSelectionTestWithFixture selFixture0 "Selects only from the 'singletons' subset if possible" diff --git a/test/ProtocolParams.purs b/test/ProtocolParams.purs index fa065c52e..c14a66824 100644 --- a/test/ProtocolParams.purs +++ b/test/ProtocolParams.purs @@ -16,7 +16,7 @@ import Test.Spec.Assertions (shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit suite = do aeson <- Utils.readAeson - "./fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json" + "./fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json" group "ProtocolParameters parser" $ do test "is able to parse ogmios response fixture" $ (decodeAeson aeson :: Either _ { result :: OgmiosProtocolParameters }) diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index abfcaddcf..4f429e1b2 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -87,14 +87,14 @@ eraSummariesFixture :: Effect EraSummaries eraSummariesFixture = do { result } :: { result :: OgmiosEraSummaries } <- loadOgmiosFixture "queryLedgerState-eraSummaries" - "d8b19110b9580cddfa3895eea34c2139" + "98b3bc6427566974984a768fb0a5e2b9" pure $ unwrap result systemStartFixture :: Effect SystemStart systemStartFixture = do { result } :: { result :: OgmiosSystemStart } <- loadOgmiosFixture "queryNetwork-startTime" - "02fa6f9e7ed04ebfe3294c7648be54d5" + "5185237542c7c8a6810aeb0fe74b3b40" pure $ unwrap result testPosixTimeToSlot :: EraSummaries -> SystemStart -> Effect Unit From 61b29ddc078dd4de1874e070512191c876417fc3 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 18 Jun 2024 17:38:15 +0200 Subject: [PATCH 226/373] Fix most unit tests (only one fails) --- ...ters-2d2ce3159a465c84058d7eab67b1b345.json | 1 - ...ters-7fe834fd628aa322eedeb3d8c7c1dd61.json | 1 - ...ters-980c21227fdfd9bad3d3a40ab41fde7a.json | 1 + ...poch-549aea404aff3926f2fce0325e9cd8d4.json | 1 + ...poch-6b311f7667fc823d883a8d5c95904190.json | 1 - ...ies-8073a8f378e969384ec52010ec6c290c.json} | 2 +- ...ters-44aa6959a9fdb9d5e92b85678918374e.json | 1 + ...ters-8b04ffba41e11788bfdb9110af812a8b.json | 1 - ...ools-0147fed3c201c7769462ebd9f2e0aa8d.json | 1 + ...ools-0b940fdf774c8501f46e08f9fb41a01f.json | 1 - ...Time-5185237542c7c8a6810aeb0fe74b3b40.json | 2 +- ...-tip-0175559aa0cbb9d1a23217a7152cc76f.json | 1 + ...-tip-81c282b9c0e02dbd4628e80ff508e68b.json | 1 - flake.lock | 31 ++--- flake.nix | 11 +- nix/runtime.nix | 7 +- src/Contract/TextEnvelope.purs | 1 + src/Internal/Cardano/TextEnvelope.purs | 32 +++-- src/Internal/QueryM/Kupo.purs | 15 ++- src/Internal/QueryM/Ogmios.purs | 120 +++++++++++------- src/Internal/Serialization/MinFee.purs | 2 +- src/Internal/ServerConfig.purs | 9 ++ src/Internal/Service/Blockfrost.purs | 11 +- src/Internal/Types/Interval.purs | 5 +- src/Internal/Types/ProtocolParameters.purs | 19 ++- test/Blockfrost/GenerateFixtures/Helpers.purs | 3 + .../GenerateFixtures/ProtocolParameters.purs | 43 +++++++ test/Blockfrost/ProtocolParameters.purs | 4 +- ...miosEvaluateTxFailScriptErrorsFixture.json | 65 +++++++++- ...EvaluateTxInvalidPointerFormatFixture.json | 15 ++- .../OgmiosEvaluateTxValidRespFixture.json | 15 ++- test/Plutus/Time.purs | 22 +--- test/ProtocolParams.purs | 2 +- test/Types/Interval.purs | 4 +- 34 files changed, 320 insertions(+), 131 deletions(-) delete mode 100644 fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json delete mode 100644 fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-7fe834fd628aa322eedeb3d8c7c1dd61.json create mode 100644 fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json create mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-549aea404aff3926f2fce0325e9cd8d4.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-6b311f7667fc823d883a8d5c95904190.json rename fixtures/test/ogmios/{queryLedgerState-eraSummaries-98b3bc6427566974984a768fb0a5e2b9.json => queryLedgerState-eraSummaries-8073a8f378e969384ec52010ec6c290c.json} (59%) create mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json create mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-0147fed3c201c7769462ebd9f2e0aa8d.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-0b940fdf774c8501f46e08f9fb41a01f.json create mode 100644 fixtures/test/ogmios/queryNetwork-tip-0175559aa0cbb9d1a23217a7152cc76f.json delete mode 100644 fixtures/test/ogmios/queryNetwork-tip-81c282b9c0e02dbd4628e80ff508e68b.json create mode 100644 test/Blockfrost/GenerateFixtures/ProtocolParameters.purs diff --git a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json deleted file mode 100644 index d137e184a..000000000 --- a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json +++ /dev/null @@ -1 +0,0 @@ -{"epoch":374,"min_fee_a":44,"min_fee_b":155381,"max_block_size":90112,"max_tx_size":16384,"max_block_header_size":1100,"key_deposit":"2000000","pool_deposit":"500000000","e_max":18,"n_opt":500,"a0":0.3,"rho":0.003,"tau":0.2,"decentralisation_param":0,"extra_entropy":null,"protocol_major_ver":8,"protocol_minor_ver":0,"min_utxo":"4310","min_pool_cost":"170000000","nonce":"e35763cef0b1b30b21d7cf61e8572e016fe3b71c0619a80d1d4850643357d047","cost_models":{"PlutusV1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10},"PlutusV2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10}},"price_mem":0.0577,"price_step":0.0000721,"max_tx_ex_mem":"14000000","max_tx_ex_steps":"10000000000","max_block_ex_mem":"62000000","max_block_ex_steps":"20000000000","max_val_size":"5000","collateral_percent":150,"max_collateral_inputs":3,"coins_per_utxo_size":"4310","coins_per_utxo_word":"4310"} \ No newline at end of file diff --git a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-7fe834fd628aa322eedeb3d8c7c1dd61.json b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-7fe834fd628aa322eedeb3d8c7c1dd61.json deleted file mode 100644 index 0fed15880..000000000 --- a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-7fe834fd628aa322eedeb3d8c7c1dd61.json +++ /dev/null @@ -1 +0,0 @@ -{"epoch":71,"min_fee_a":44,"min_fee_b":155381,"max_block_size":90112,"max_tx_size":16384,"max_block_header_size":1100,"key_deposit":"2000000","pool_deposit":"500000000","e_max":18,"n_opt":500,"a0":0.3,"rho":0.003,"tau":0.2,"decentralisation_param":0,"extra_entropy":null,"protocol_major_ver":8,"protocol_minor_ver":0,"min_utxo":"4310","min_pool_cost":"340000000","nonce":"e3ba06ef0f6021007739589d435432517a86e4e22723ac11b92b12f817718c77","cost_models":{"PlutusV1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10},"PlutusV2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10}},"price_mem":0.0577,"price_step":0.0000721,"max_tx_ex_mem":"14000000","max_tx_ex_steps":"10000000000","max_block_ex_mem":"62000000","max_block_ex_steps":"40000000000","max_val_size":"5000","collateral_percent":150,"max_collateral_inputs":3,"coins_per_utxo_size":"4310","coins_per_utxo_word":"4310"} \ No newline at end of file diff --git a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json new file mode 100644 index 000000000..2f81200a8 --- /dev/null +++ b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json @@ -0,0 +1 @@ +{"epoch":369,"min_fee_a":44,"min_fee_b":155381,"max_block_size":90112,"max_tx_size":16384,"max_block_header_size":1100,"key_deposit":"2000000","pool_deposit":"500000000","e_max":18,"n_opt":500,"a0":0.3,"rho":0.003,"tau":0.2,"decentralisation_param":0,"extra_entropy":null,"protocol_major_ver":10,"protocol_minor_ver":0,"min_utxo":"4310","min_pool_cost":"340000000","nonce":"0fe2c964e5238d978619d2f3bf1da6ba37303cbfad99d54b3ef0c7f9297b72d7","cost_models":{"PlutusV1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10},"PlutusV2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10},"PlutusV3":{"0":205665,"1":812,"2":1,"3":1,"4":1000,"5":571,"6":0,"7":1,"8":1000,"9":24177,"10":4,"11":1,"12":1000,"13":32,"14":117366,"15":10475,"16":4,"17":23000,"18":100,"19":23000,"20":100,"21":23000,"22":100,"23":23000,"24":100,"25":23000,"26":100,"27":23000,"28":100,"29":100,"30":100,"31":23000,"32":100,"33":19537,"34":32,"35":175354,"36":32,"37":46417,"38":4,"39":221973,"40":511,"41":0,"42":1,"43":89141,"44":32,"45":497525,"46":14068,"47":4,"48":2,"49":196500,"50":453240,"51":220,"52":0,"53":1,"54":1,"55":1000,"56":28662,"57":4,"58":2,"59":245000,"60":216773,"61":62,"62":1,"63":1060367,"64":12586,"65":1,"66":208512,"67":421,"68":1,"69":187000,"70":1000,"71":52998,"72":1,"73":80436,"74":32,"75":43249,"76":32,"77":1000,"78":32,"79":80556,"80":1,"81":57667,"82":4,"83":1000,"84":10,"85":197145,"86":156,"87":1,"88":197145,"89":156,"90":1,"91":204924,"92":473,"93":1,"94":208896,"95":511,"96":1,"97":52467,"98":32,"99":64832,"100":32,"101":65493,"102":32,"103":22558,"104":32,"105":16563,"106":32,"107":76511,"108":32,"109":196500,"110":453240,"111":220,"112":0,"113":1,"114":1,"115":69522,"116":11687,"117":0,"118":1,"119":60091,"120":32,"121":196500,"122":453240,"123":220,"124":0,"125":1,"126":1,"127":196500,"128":453240,"129":220,"130":0,"131":1,"132":1,"133":1159724,"134":392670,"135":0,"136":2,"137":806990,"138":30482,"139":4,"140":1927926,"141":82523,"142":4,"143":265318,"144":0,"145":4,"146":0,"147":85931,"148":32,"149":205665,"150":812,"151":1,"152":1,"153":41182,"154":32,"155":212342,"156":32,"157":31220,"158":32,"159":32696,"160":32,"161":43357,"162":32,"163":32247,"164":32,"165":38314,"166":32,"167":35190005,"168":10,"169":57996947,"170":18975,"171":10,"172":39121781,"173":32260,"174":10,"175":23000,"176":100,"177":23000,"178":100,"179":832808,"180":18,"181":3209094,"182":6,"183":331451,"184":1,"185":65990684,"186":23097,"187":18,"188":114242,"189":18,"190":94393407,"191":87060,"192":18,"193":16420089,"194":18,"195":2145798,"196":36,"197":3795345,"198":12,"199":889023,"200":1,"201":204237282,"202":23271,"203":36,"204":129165,"205":36,"206":189977790,"207":85902,"208":36,"209":33012864,"210":36,"211":388443360,"212":1,"213":401885761,"214":72,"215":2331379,"216":72,"217":1927926,"218":82523,"219":4,"220":117366,"221":10475,"222":4,"223":1292075,"224":24469,"225":74,"226":0,"227":1,"228":936157,"229":49601,"230":237,"231":0,"232":1}},"price_mem":0.0577,"price_step":0.0000721,"max_tx_ex_mem":"14000000","max_tx_ex_steps":"10000000000","max_block_ex_mem":"62000000","max_block_ex_steps":"20000000000","max_val_size":"5000","collateral_percent":150,"max_collateral_inputs":3,"coins_per_utxo_size":"4310","coins_per_utxo_word":"4310","pvt_motion_no_confidence":0.6,"pvt_committee_normal":0.6,"pvt_committee_no_confidence":0.51,"pvt_hard_fork_initiation":0.51,"dvt_motion_no_confidence":0.67,"dvt_committee_normal":0.67,"dvt_committee_no_confidence":0.6,"dvt_update_to_constitution":0.75,"dvt_hard_fork_initiation":0.6,"dvt_p_p_network_group":0.67,"dvt_p_p_economic_group":0.67,"dvt_p_p_technical_group":0.67,"dvt_p_p_gov_group":0.75,"dvt_treasury_withdrawal":0.67,"committee_min_size":"3","committee_max_term_length":"73","gov_action_lifetime":"8","gov_action_deposit":"50000000000","drep_deposit":"500000000","drep_activity":"20"} diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-549aea404aff3926f2fce0325e9cd8d4.json b/fixtures/test/ogmios/queryLedgerState-epoch-549aea404aff3926f2fce0325e9cd8d4.json new file mode 100644 index 000000000..667523d64 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-epoch-549aea404aff3926f2fce0325e9cd8d4.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/epoch","result":369,"id":"queryLedgerState/epoch-hfkgvfollxkiih0n"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-6b311f7667fc823d883a8d5c95904190.json b/fixtures/test/ogmios/queryLedgerState-epoch-6b311f7667fc823d883a8d5c95904190.json deleted file mode 100644 index 68e720003..000000000 --- a/fixtures/test/ogmios/queryLedgerState-epoch-6b311f7667fc823d883a8d5c95904190.json +++ /dev/null @@ -1 +0,0 @@ -{"jsonrpc":"2.0","method":"queryLedgerState/epoch","result":45,"id":"queryLedgerState/epoch-hfkgnvkflxdivdsj"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-98b3bc6427566974984a768fb0a5e2b9.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-8073a8f378e969384ec52010ec6c290c.json similarity index 59% rename from fixtures/test/ogmios/queryLedgerState-eraSummaries-98b3bc6427566974984a768fb0a5e2b9.json rename to fixtures/test/ogmios/queryLedgerState-eraSummaries-8073a8f378e969384ec52010ec6c290c.json index 80335465a..6b0afe0cf 100644 --- a/fixtures/test/ogmios/queryLedgerState-eraSummaries-98b3bc6427566974984a768fb0a5e2b9.json +++ b/fixtures/test/ogmios/queryLedgerState-eraSummaries-8073a8f378e969384ec52010ec6c290c.json @@ -1 +1 @@ -{"jsonrpc":"2.0","method":"queryLedgerState/eraSummaries","result":[{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"milliseconds":20000},"safeZone":864}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":259200},"slot":259200,"epoch":3},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":259200},"slot":259200,"epoch":3},"end":{"time":{"seconds":4060800},"slot":4060800,"epoch":47},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}}],"id":"queryLedgerState/eraSummaries-hfkgnvkflxdivdsk"} \ No newline at end of file +{"jsonrpc":"2.0","method":"queryLedgerState/eraSummaries","result":[{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"milliseconds":20000},"safeZone":864}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":172800},"slot":172800,"epoch":2},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":172800},"slot":172800,"epoch":2},"end":{"time":{"seconds":28944000},"slot":28944000,"epoch":335},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":28944000},"slot":28944000,"epoch":335},"end":{"time":{"seconds":31968000},"slot":31968000,"epoch":370},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}}],"id":"queryLedgerState/eraSummaries-hfkgvfollxkiih0o"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json new file mode 100644 index 000000000..46aa46ae2 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/protocolParameters","result":{"minFeeCoefficient":44,"minFeeConstant":{"ada":{"lovelace":155381}},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"ada":{"lovelace":2000000}},"stakePoolDeposit":{"ada":{"lovelace":500000000}},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"ada":{"lovelace":340000000}},"minUtxoDepositConstant":{"ada":{"lovelace":0}},"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,57996947,18975,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,57996947,18975,10,38887044,32947,10],"plutus:v3":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35190005,10,57996947,18975,10,39121781,32260,10,23000,100,23000,100,832808,18,3209094,6,331451,1,65990684,23097,18,114242,18,94393407,87060,18,16420089,18,2145798,36,3795345,12,889023,1,204237282,23271,36,129165,36,189977790,85902,36,33012864,36,388443360,1,401885761,72,2331379,72,1927926,82523,4,117366,10475,4,1292075,24469,74,0,1,936157,49601,237,0,1]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":20000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":10,"minor":0},"stakePoolVotingThresholds":{"noConfidence":"3/5","constitutionalCommittee":{"default":"3/5","stateOfNoConfidence":"51/100"},"hardForkInitiation":"51/100"},"delegateRepresentativeVotingThresholds":{"noConfidence":"67/100","constitutionalCommittee":{"default":"67/100","stateOfNoConfidence":"3/5"},"constitution":"3/4","hardForkInitiation":"3/5","protocolParametersUpdate":{"network":"67/100","economic":"67/100","technical":"67/100","governance":"3/4"},"treasuryWithdrawals":"67/100"},"constitutionalCommitteeMinSize":3,"constitutionalCommitteeMaxTermLength":73,"governanceActionLifetime":8,"governanceActionDeposit":{"ada":{"lovelace":50000000000}},"delegateRepresentativeDeposit":{"ada":{"lovelace":500000000}},"delegateRepresentativeMaxIdleTime":20},"id":"queryLedgerState/protocolParameters-hfkgvfollxkiih0p"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json deleted file mode 100644 index 83df6bb28..000000000 --- a/fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json +++ /dev/null @@ -1 +0,0 @@ -{"jsonrpc":"2.0","method":"queryLedgerState/protocolParameters","result":{"minFeeCoefficient":44,"minFeeConstant":{"ada":{"lovelace":155381}},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"ada":{"lovelace":2000000}},"stakePoolDeposit":{"ada":{"lovelace":500000000}},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"ada":{"lovelace":340000000}},"minUtxoDepositConstant":{"ada":{"lovelace":0}},"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,9462713,1021,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,9462713,1021,10,38887044,32947,10]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":40000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":8,"minor":0}},"id":"queryLedgerState/protocolParameters-hfkgnvkflxdivdsl"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-0147fed3c201c7769462ebd9f2e0aa8d.json b/fixtures/test/ogmios/queryLedgerState-stakePools-0147fed3c201c7769462ebd9f2e0aa8d.json new file mode 100644 index 000000000..fe3504a59 --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-stakePools-0147fed3c201c7769462ebd9f2e0aa8d.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/stakePools","result":{"pool1qfjpgpy83v9hal8z3hjnt3namnc8xcrqstgp504sr2p2krfu7dd":{"id":"pool1qfjpgpy83v9hal8z3hjnt3namnc8xcrqstgp504sr2p2krfu7dd","vrfVerificationKeyHash":"39af5d6fcd342985e6c3bd7159b8f74eb8a2181a9eae524fecf02b58fa3ef95d","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"21/500","rewardAccount":"stake_test1uqzah3n6wfgxw78kmha95vnpnq35yqlnqq8e0q9vf79pfjq30m0al","owners":["05dbc67a72506778f6ddfa5a326198234203f3000f9780ac4f8a14c8"],"relays":[{"type":"hostname","hostname":"test.smaug.pool.pm","port":3004}],"metadata":{"url":"https://smaug.pool.pm/meta-b4391f2c.json","hash":"b4391f2c278c8b34fd73a1b33ea20da50383e1a906d11ba27c644975cba97412"}},"pool1rdaxrw3722f0x3nx4uam9u9c6dh9qqd2g83r2uyllf53qmmj5uu":{"id":"pool1rdaxrw3722f0x3nx4uam9u9c6dh9qqd2g83r2uyllf53qmmj5uu","vrfVerificationKeyHash":"fdb9ec5d3e9774458dbdb7b337190fc9a2fbc585f28060fd0158ee8f9a96b8a2","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":10000000000}},"margin":"1/10","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"hostname","hostname":"test.stakepool.at","port":3001}],"metadata":{"url":"https://my-ip.at/test/sanchopool.metadata.json","hash":"69059846a028ab1161218d3b683502abcc0513a88567de78cc18b43d506e3f3c"}},"pool1xrr9pc5wrh6p30mgsx5f87lcwgzrk53dylt6mr4dgs7gyy7vrl8":{"id":"pool1xrr9pc5wrh6p30mgsx5f87lcwgzrk53dylt6mr4dgs7gyy7vrl8","vrfVerificationKeyHash":"006bf4607575e637cc001309fb9ee1a7d298c1854ee680004586989080affd6f","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":420000000}},"margin":"1/10","rewardAccount":"stake_test1uqucy2kt9hvqatv66um3n9k250txwk75fdk5nderred0v0q8tc0ex","owners":["39822acb2dd80ead9ad7371996caa3d6675bd44b6d49b7231e5af63c"],"relays":[{"type":"hostname","hostname":"sn-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/testnet/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool1xxym8esp42n98d5xa9mg96hp8x3lflfzdde3k9jvwgqsqmpc7k0":{"id":"pool1xxym8esp42n98d5xa9mg96hp8x3lflfzdde3k9jvwgqsqmpc7k0","vrfVerificationKeyHash":"2cf4c32db8b90524046b2970e9839d9ff50234a0b701514531b629ad4064d64f","pledge":{"ada":{"lovelace":90000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uqgpckl60xvctfhfdtdmtpv7jr97fg8yah977sy2xc39tzcqq85ws","owners":["101c5bfa799985a6e96adbb5859e90cbe4a0e4edcbef408a3622558b"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6401},{"type":"hostname","hostname":"node2.cardano.gratis","port":6402}],"metadata":{"url":"https://cardano.gratis/poolmetadatasanchonet.json","hash":"42bccfe66e06bdfaac74c361c5f8d9f6fa899c82f1f72815fd6e48deead38ccc"}},"pool1x2zyeurdn6p0vfus5hye5hcjdu2pk9lp43wkpp7g0hasxjxu0r6":{"id":"pool1x2zyeurdn6p0vfus5hye5hcjdu2pk9lp43wkpp7g0hasxjxu0r6","vrfVerificationKeyHash":"5889f906dd051543f7bfbc8d0c95110260ccdfa26a905d247a8f7499bb87d283","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uzkfmfgarpr7ghgz7w7cunv06r8tqncrh6xsynee2gxj5ks3r8g2w","owners":["ac9da51d1847e45d02f3bd8e4d8fd0ceb04f03be8d024f39520d2a5a"],"relays":[{"type":"hostname","hostname":"c-sn-rn01.liv.io","port":30004},{"type":"hostname","hostname":"c-sn-rn02.liv.io","port":30004}],"metadata":{"url":"https://liv.io/metadata.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool180jwa8p7zyjke2g8q8gccfl0fhqm5e3guqeh03vjlmfx2jdn6h6":{"id":"pool180jwa8p7zyjke2g8q8gccfl0fhqm5e3guqeh03vjlmfx2jdn6h6","vrfVerificationKeyHash":"e8b0fb834d5574273d44979b1a4a44a8f829cce2b32aa09d34827ac06995236a","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urceznh2v6kel2rxlyqmay9caqff0fgtettjwnkhz59fnlghle5jn","owners":["f1914eea66ad9fa866f901be90b8e81297a50bcad7274ed7150a99fd"],"relays":[{"type":"hostname","hostname":"sanchorelay.junglestakepool.com","port":3003}],"metadata":{"url":"https://junglestakepool.com/jp-sanchonet.json","hash":"ed8428ea6ab07e94f8af44a0ddec8df1ccf63401b5592f88831fed0da9dda860"}},"pool1fhr6s9xqqu7cenr662paxcyyhcxvdwga0355v22h9z50zrcxljs":{"id":"pool1fhr6s9xqqu7cenr662paxcyyhcxvdwga0355v22h9z50zrcxljs","vrfVerificationKeyHash":"5c047db583e2d79ed308bde394664b3675465b2ec350388f957ba96dfecb8d9d","pledge":{"ada":{"lovelace":50000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uqj3zvljhu695w0yzqvtp3w5lra6vzgxd0lz50rh4s38yssxfmvqf","owners":["251133f2bf345a39e41018b0c5d4f8fba609066bfe2a3c77ac227242"],"relays":[{"type":"ipAddress","ipv4":"73.23.36.140","port":5000}],"metadata":{"url":"https://petloverstake.com/PET_Sancho.json","hash":"bf6ee843301bdabbddc4e18f920b1da6e91a5a7a3057381a04c6cfe9b165dcf3"}},"pool1v7ek9g8xnm9gud47x209vzsypcaxmcsqrth7zwcs4c6k506ffnq":{"id":"pool1v7ek9g8xnm9gud47x209vzsypcaxmcsqrth7zwcs4c6k506ffnq","vrfVerificationKeyHash":"b41ffe1f1b752cdb7fddad90137e07a655c2673007af5daac18d7827fc4394ae","pledge":{"ada":{"lovelace":90000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1upxen45d9t467l76pvxlue99635hleqcmvtrcnghmf6v7lgjengrp","owners":["4d99d68d2aebaf7fda0b0dfe64a5d4697fe418db163c4d17da74cf7d"],"relays":[{"type":"hostname","hostname":"sancho.junostakepool.com","port":18441}],"metadata":{"url":"https://junostakepool.com/juno-sancho.metadata.json","hash":"098b2ced4cf44471bb7737e07f600bab426fe485ef71343b7f4b2a4b067e325f"}},"pool104flte3y29dprxcntacsuyznhduvlaza38gvp8yyhy2vvmfenxa":{"id":"pool104flte3y29dprxcntacsuyznhduvlaza38gvp8yyhy2vvmfenxa","vrfVerificationKeyHash":"47bc02cc376e3a44d4c77b821e13993d30d02bdb97933a061fbda74f15132f09","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1urw2jna5t23pj24jdmlcgz02qy8694rkrmafysm7p4dkkcqx6m2u0","owners":["dca94fb45aa2192ab26eff8409ea010fa2d4761efa92437e0d5b6b60"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3002}],"metadata":{"url":"https://testforge.adamantium.online/otg-sancho.metadata.json","hash":"cbe49b4a77211ce5641a8958914b33f239d65787b67165958e94f12f1c64022b"}},"pool1spv6ts5262ze925mhdasxdcrc50n0eq5ktp7764h6kc97r7dd7z":{"id":"pool1spv6ts5262ze925mhdasxdcrc50n0eq5ktp7764h6kc97r7dd7z","vrfVerificationKeyHash":"719f4a7b25aeded42e3729a1bd29b47c8389fe664f1f8c90039d644361c3d991","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1up7e0lctmgctqjksm0s3sqzqa0pu2ndmg704j0lmuz4q47gr57fwr","owners":["7d97ff0bda30b04ad0dbe1180040ebc3c54dbb479f593ffbe0aa0af9"],"relays":[{"type":"ipAddress","ipv4":"192.168.1.158","port":7001}]},"pool1s49txezsz73m09jvdv5deu7fwa9atln0dg60ze6xqjx5sj4l3fn":{"id":"pool1s49txezsz73m09jvdv5deu7fwa9atln0dg60ze6xqjx5sj4l3fn","vrfVerificationKeyHash":"eb9938878f68c63f0c0d2b9a96e7679ec5ab3c37bb9746bf8b6ae9cb206bc8d3","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"7/100","rewardAccount":"stake_test1up22k6t7wlmlwc4888nr8r020te8ezhthpatpv56006j03s7f38nn","owners":["54ab697e77f7f762a739e6338dea7af27c8aebb87ab0b29a7bf527c6"],"relays":[{"type":"hostname","hostname":"adar-monitor.freeddns.org","port":3012}],"metadata":{"url":"http://tinyurl.com/snet-adar","hash":"12174285d72804e73c883b01d2f645ba37467c2a5fbb133a355da88b067a2474"}},"pool13lr6wv9m55el9ahscn8qmutc80gq9m5ajgawjstj3v5rqm7fpd9":{"id":"pool13lr6wv9m55el9ahscn8qmutc80gq9m5ajgawjstj3v5rqm7fpd9","vrfVerificationKeyHash":"48f8762dd20e68830b05aa9320ee9f0f5dd0173a8a3c73b0a7ad725e039ea4ca","pledge":{"ada":{"lovelace":1000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzpaylcrkxth2rhyrd7u5qkgqeccze9exjc0h7n5wdy73usd0pxpl","owners":["b2f1e813fb3108fe6926717ec6409bc369ae81b485aa2120dc1fa1d7"],"relays":[{"type":"hostname","hostname":"sanchonet3-node.play.dev.cardano.org","port":3001}]},"pool14hwlqytt0kcxz57edu78k5qhqvd0v9m0ae4h9annux2eg8ayq5p":{"id":"pool14hwlqytt0kcxz57edu78k5qhqvd0v9m0ae4h9annux2eg8ayq5p","vrfVerificationKeyHash":"11c83eee77c51c9a60d2ea01ee70611910c2ad4a89e16cee6eaa783adc5b15b4","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzt80vhpew2f5qkaa5pga5x7r7eps0kpkc758s0ay68aursp0hk4r","owners":["9677b2e1cb949a02dded028ed0de1fb2183ec1b63d43c1fd268fde0e"],"relays":[]},"pool1k3nuy86a7g077j7njdtsr54rxv3355ca3fnx239675nju4898er":{"id":"pool1k3nuy86a7g077j7njdtsr54rxv3355ca3fnx239675nju4898er","vrfVerificationKeyHash":"749e83b1d436209ab75d583ed8773f1afdebdf35f1152fda43545e1c5ef551c4","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1up42qf6yrz0jkgfn0dhvev7ap4ulygt92t36wsvp7km983s30hke6","owners":["6aa02744189f2b21337b6eccb3dd0d79f2216552e3a74181f5b653c6"],"relays":[{"type":"hostname","hostname":"relay1.sanchonet.pool.cardanofoundation.org","port":30004},{"type":"hostname","hostname":"relay2.sanchonet.pool.cardanofoundation.org","port":30004}],"metadata":{"url":"https://sanchonet.pool.cardanofoundation.org/metadata.json","hash":"32930af3be03dea4488f66718fb2f62cddda26c914b9940b94fb9f585a61598f"}},"pool1h722gdd6kx782me0v9zresnds4ajugneq0vl9a0ju7mgvemezdf":{"id":"pool1h722gdd6kx782me0v9zresnds4ajugneq0vl9a0ju7mgvemezdf","vrfVerificationKeyHash":"24e3099f2fdf533c6148c33737c54e908795e13979573bf999df8bc74727fbbe","pledge":{"ada":{"lovelace":1000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzpaylcrkxth2rhyrd7u5qkgqeccze9exjc0h7n5wdy73usd0pxpl","owners":["2f5fde105530993a262d744e534847794d477d2cc5a457312b2014b1"],"relays":[{"type":"hostname","hostname":"sanchonet2-node.play.dev.cardano.org","port":3001}]},"pool1cpxhrrewpu0ltk8fulczrqsj0mgaj8mx8yujzqmmkwp05393ln2":{"id":"pool1cpxhrrewpu0ltk8fulczrqsj0mgaj8mx8yujzqmmkwp05393ln2","vrfVerificationKeyHash":"a612a9fbbf33a50bf64719444423564a567b8cf8da530a6fd53e4469cdc892dc","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1ur0qtgl8rj9jwsmtjvs90dstpprdzvscuxd7z04y57g548gy7q30j","owners":["de05a3e71c8b27436b932057b60b0846d13218e19be13ea4a7914a9d"],"relays":[{"type":"hostname","hostname":"sanchonet.happystaking.io","port":3004}],"metadata":{"url":"https://happystaking.io/poolMetadataSanchonet.json","hash":"88f21480bcd6a5709c1fcd3c8604a18d1e0c40b17966043bf4339184bbcd24de"}},"pool1c6xrqt8nq6zasfmvpk0067je69r2eljh5xa08hsvf0lgzgaw4lr":{"id":"pool1c6xrqt8nq6zasfmvpk0067je69r2eljh5xa08hsvf0lgzgaw4lr","vrfVerificationKeyHash":"e82231789278477533459b806e845ffc7719abfc11a29f486604c65f7ff3668f","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uq3qf285n6qg8wqu34etec69g0al0y60a7gckntjsyp6mhgawzd20","owners":["2204a8f49e8083b81c8d72bce34543fbf7934fef918b4d728103addd"],"relays":[{"type":"hostname","hostname":"relay.hephy.io","port":9000}],"metadata":{"url":"https://raw.githubusercontent.com/hephy-io/sancho/main/snet.json","hash":"1cffc29ea55b7864fca5854e0ce4d3bae8456de0a6458b2cf6be2d9b22581a78"}},"pool1e8ud28v893mq2nmre2x09ex07ek3seljh4w7a2zphcy5z4sek9v":{"id":"pool1e8ud28v893mq2nmre2x09ex07ek3seljh4w7a2zphcy5z4sek9v","vrfVerificationKeyHash":"36af8b2a8521adf754f98042817887d691066bc40eba545527e8d7a773766143","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1ur94h9va6rmc9lg9gye8686sv6cfyvqaka2w8drf8qlekxqgzxnd2","owners":["cb5b959dd0f782fd0541327d1f5066b092301db754e3b469383f9b18"],"relays":[{"type":"hostname","hostname":"sancho.adanorthpool.com","port":8013}],"metadata":{"url":"https://adanorthpool.com/anpsanchopool.metadata.json","hash":"dbb6db6197a9c9512e65f18b533a91a0db495ea157fcb3e34b480205572d803b"}},"pool1m8glad404zhwsa6k2lalm6qu95ptfffj9uk5drphmu0rsj3mnaz":{"id":"pool1m8glad404zhwsa6k2lalm6qu95ptfffj9uk5drphmu0rsj3mnaz","vrfVerificationKeyHash":"0faf9e2d07c9909291d51e5776fd2715cc1b5e3cf0aa79866cd41f305171d135","pledge":{"ada":{"lovelace":100000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":3001}],"metadata":{"url":"https://my-ip.at/test/testpool.metadata.json","hash":"93a6d4a028620f31b4315cf96a53eb05fa5f1364c4fad75bec43a9cf95b9ee96"}},"pool1m840r7thpj9mxhw33hud3g9jkvjvm00wkw89ul8t06nngjewl6m":{"id":"pool1m840r7thpj9mxhw33hud3g9jkvjvm00wkw89ul8t06nngjewl6m","vrfVerificationKeyHash":"668902c613a1875f7b1b3323fc995cc2c94dace33203d6c7cb042c6da0a9d103","pledge":{"ada":{"lovelace":1000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzpaylcrkxth2rhyrd7u5qkgqeccze9exjc0h7n5wdy73usd0pxpl","owners":["f535d2bfc700116bb07ad9f9a1159d45577e85fc3c472d692780d996"],"relays":[{"type":"hostname","hostname":"sanchonet1-node.play.dev.cardano.org","port":3001}]},"pool1m6prw8mg3ttu45s45e6dyqfsxjzkfk7ln07pktksujsr29ghtxm":{"id":"pool1m6prw8mg3ttu45s45e6dyqfsxjzkfk7ln07pktksujsr29ghtxm","vrfVerificationKeyHash":"452f30d0f5141104287bd3c3a0e2c1b82f8a1be2593c9e1e41b4e94925b928e4","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1urvdtlnh4axqa8heuwtnm699zp4lk3hjqcjh5xrjm68wqdsvfcqzv","owners":["d8d5fe77af4c0e9ef9e3973de8a5106bfb46f206257a1872de8ee036"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.testing-sanchonet.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xrncehj","hash":"12225f1ea91b643eae68730e5a01e97bd229228b0f52f8374d15b3ef3e050105"}},"pool1as9wfr5422grct7cxnctjvwja0urauwazapjw7y9xl66vz78ae4":{"id":"pool1as9wfr5422grct7cxnctjvwja0urauwazapjw7y9xl66vz78ae4","vrfVerificationKeyHash":"2bfb08731a0945d5c68498a8959deb3b7052ca0d2d3ccfebe9ac3be95eab0389","pledge":{"ada":{"lovelace":500000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1up254pxpxzmrqn7mmsrxyrk2ga3qlsargrhm98c0qyh3zccs58zch","owners":["554a84c130b6304fdbdc06620eca47620fc3a340efb29f0f012f1163"],"relays":[{"type":"ipAddress","ipv4":"64.176.50.202","port":4002}]},"pool17ckkqnsxhvj467ey03jqxjrtgq8reuq6zz7gpnrdv4p52ds25sa":{"id":"pool17ckkqnsxhvj467ey03jqxjrtgq8reuq6zz7gpnrdv4p52ds25sa","vrfVerificationKeyHash":"f2144066d9c5545aec573b6cac041742f7bceed2a9ea23085db2d00d290e6d3f","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1ur0407lhwpgq0cdje5ldpmrwgxfxehgz0ztq5efdy9nej6g4dxxdy","owners":["df57fbf7705007e1b2cd3ed0ec6e41926cdd0278960a652d21679969"],"relays":[{"type":"hostname","hostname":"sancho-testnet.able-pool.io","port":6002}],"metadata":{"url":"https://hornan7.github.io/sanchometadata.json","hash":"4e544cca134322ef1fbf5dce57524cc06be1cfe07c545bd49e240b3df536c7d7"}},"pool1lj20psmnkjau2ywmuzlhp44jnfku3w3l0pdyqkn0p08k7e32cx3":{"id":"pool1lj20psmnkjau2ywmuzlhp44jnfku3w3l0pdyqkn0p08k7e32cx3","vrfVerificationKeyHash":"5062b97786383eace8f8364274b531e50dc4cc5d7e5afc8e6ad563da112f4071","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"9999/10000","rewardAccount":"stake_test1uzywv7fwzvaaurpkct7yqg9ayxvdr06rlkldaerw7jmd9rchpy3ut","owners":["e94c611b70b247e748b07f8553e5cce2193f8bdf86f80d0b0b8f5221"],"relays":[{"type":"hostname","hostname":"relay.sancho.cardanostakehouse.com","port":8000}],"metadata":{"url":"https://cardanostakehouse.com/523bc64b-d2ad-42c3-81e7-eb0.json","hash":"b65998c78972998aa13b0e2ae8f032b58583f2d6df9b42ea6272f16bfff23b0b"}}},"id":"queryLedgerState/stakePools-hfkgvfollxkiih0q"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-0b940fdf774c8501f46e08f9fb41a01f.json b/fixtures/test/ogmios/queryLedgerState-stakePools-0b940fdf774c8501f46e08f9fb41a01f.json deleted file mode 100644 index f45a01598..000000000 --- a/fixtures/test/ogmios/queryLedgerState-stakePools-0b940fdf774c8501f46e08f9fb41a01f.json +++ /dev/null @@ -1 +0,0 @@ -{"jsonrpc":"2.0","method":"queryLedgerState/stakePools","result":{"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":345000000}},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"ada":{"lovelace":420000000}},"cost":{"ada":{"lovelace":420000000}},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"ada":{"lovelace":1111000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p90428kec03mjdya3k4gv5d20w7lmed7ca0snknef5j977l3y8l":{"id":"pool1p90428kec03mjdya3k4gv5d20w7lmed7ca0snknef5j977l3y8l","vrfVerificationKeyHash":"af790879fc1dc4a8c00147aebc13e95585d641b76986d9a449a1ba4652ba77ad","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/2","rewardAccount":"stake_test1uruf9dc3kf35aqnng5wz38kt03h9jk6y5gdszy69nppkylqdk8agr","owners":["f892b711b2634e8273451c289ecb7c6e595b44a21b0113459843627c"],"relays":[{"type":"hostname","hostname":"water.lbcrypt.com","port":9600}],"metadata":{"url":"https://www.lbcrypt.com/json/LBCPP.json","hash":"6074e009fcb59f6ef28337412168e1b5391b42e6cec8dc01f7291babf6d2771d"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"ada":{"lovelace":500000000}},"cost":{"ada":{"lovelace":1000000000}},"margin":"1/2","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"0b15c664cf2883a8d68140f852963f8c7f8adac538ddf1f6cfab60444465ee5e"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"ada":{"lovelace":8000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"da1d45782040dd4862a9f97ac9fa706ca14f8f2f2823a0e2a466932cf530da6e","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"hostname","hostname":"api.monrma.ml","port":6020}],"metadata":{"url":"https://api.monrma.ml/meta/JOSEP.json","hash":"e57cf36265b7d3b5defc64bfb12d04d0f00ae5875ab58215644f7b947e802442"}},"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3":{"id":"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3","vrfVerificationKeyHash":"b5971d1f29a9938574aa98cf5a8437a8245239644fe6dcaa8b22b92ed2b00e90","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/9a065d69-ef59-4aff-983d-e34.json","hash":"92bab22abc33ea5fa2be2f515639bec213e782b5f417b3cc0441fd115172d171"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"ada":{"lovelace":100000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"ada":{"lovelace":70000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"e3f126e3063c8c7e2afac03df555a83d2513f4efba64399234788b93a6319edc"}},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"ada":{"lovelace":1000000}},"cost":{"ada":{"lovelace":1130000000}},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"ada":{"lovelace":65000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"ada":{"lovelace":1659000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce":{"id":"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce","vrfVerificationKeyHash":"a1b272e77f8d5cebc04ba482dacba825e8f7f59251d95746e8ff23864e0c89ee","pledge":{"ada":{"lovelace":100000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["788cf0519348fefaf3c721c5f5bd60b195b444fa0d8fb4512dc259be"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"ada":{"lovelace":3500000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"ada":{"lovelace":9400000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"ada":{"lovelace":10000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku":{"id":"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku","vrfVerificationKeyHash":"5ad90f4be69faac1c7e216cd50631240db41842b5a43f2ce344670fa7219a6c6","pledge":{"ada":{"lovelace":100000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["f631370cc87882bf5e14ab72534caf2655d0a2a50a9a8a3820bb6f4a"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"4173aad927f4be2a67adf068fcb45871ecac8614864d7af2e079502109e81644","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"ada":{"lovelace":1104000000}},"cost":{"ada":{"lovelace":411000000}},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"ada":{"lovelace":1000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"ada":{"lovelace":1000000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"ada":{"lovelace":30000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"153.127.67.171","port":3001},{"type":"hostname","hostname":"3rd.vps.deroris.net","port":3001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"ada":{"lovelace":9147456725}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"hostname","hostname":"api.monrma.ml","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"ada":{"lovelace":1000000}},"cost":{"ada":{"lovelace":429000000}},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":10000000000}},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"ipAddress","ipv4":"185.164.6.221","port":54326}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"ada":{"lovelace":8000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"ada":{"lovelace":50000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"ipAddress","ipv4":"144.217.73.208","port":8000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ab249c551e01ea72a5483a45c9f31b2b60bd30c15c865fedf03332ede23439fc"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"ada":{"lovelace":15000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"ipAddress","ipv4":"3.38.178.149","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"01dba041599331a31a2a17d26cdaeae514973d3df383c311dc20a2f591effb73"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"ada":{"lovelace":1112000000}},"cost":{"ada":{"lovelace":413000000}},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"ada":{"lovelace":500000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"ada":{"lovelace":2000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"ada":{"lovelace":3000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001},{"type":"hostname","hostname":"testnet-relay2.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14gzp9699juxeku56qc5dsk00vv9kngrz4art5v04fh77wmd37hq":{"id":"pool14gzp9699juxeku56qc5dsk00vv9kngrz4art5v04fh77wmd37hq","vrfVerificationKeyHash":"bb0670c4efe93e9bafc85323da00fef702997d64a0894b6398d8fb72d97eb7c1","pledge":{"ada":{"lovelace":252000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1up6ckzx75pw6h5wdx5gx384anmak5jf3dt9npm4dw58za8sxw5223","owners":["758b08dea05dabd1cd3510689ebd9efb6a49316acb30eead750e2e9e"],"relays":[{"type":"hostname","hostname":"test.everestada.com","port":7002}],"metadata":{"url":"https://raw.githubusercontent.com/everestada/esp/main/Meta.json","hash":"fe93bf08749b0aabb73d7a22c4af69ae15e89a52105df2ebd9a28b03a89a2353"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"ada":{"lovelace":50000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1uruen30w3mydukztulc8z5xqp2zpezctum9x4j6kctp3csclazf3y","owners":["f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool1kgyazdg4n0vvdkznuud3ktm0wmwvd2gr932k6mt346d2u4l9tt2":{"id":"pool1kgyazdg4n0vvdkznuud3ktm0wmwvd2gr932k6mt346d2u4l9tt2","vrfVerificationKeyHash":"cc5ab92aac59fe72d675667deaf7a434306b9b9d6dd0990de872af491e6dca67","pledge":{"ada":{"lovelace":8000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1uzjzx5vw5zz035qqt0uh4wdgewdg6g0qemt0x3vlrfun45sg063rs","owners":["a423518ea084f8d0005bf97ab9a8cb9a8d21e0ced6f3459f1a793ad2"],"relays":[{"type":"ipAddress","ipv4":"129.213.186.21","port":6000}],"metadata":{"url":"https://brewclub.io/pool.json","hash":"1026c5819b1441e4dd708a20a5301de474b12ab2aaec43e6fa364da7c8b2b3cb"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"ada":{"lovelace":6000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"ada":{"lovelace":9487000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"ada":{"lovelace":8000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"ada":{"lovelace":250000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"b552338f84a5971eadc8b130e9bf0dcc46894a7ea80c688d5f4a95a49118d716"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"ada":{"lovelace":9000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"ada":{"lovelace":19000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"ada":{"lovelace":9369000000}},"cost":{"ada":{"lovelace":369000000}},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932":{"id":"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932","vrfVerificationKeyHash":"4331f2905796fd9a028c17896ce5305dc1daf710ad448a3872df75722f2cc41d","pledge":{"ada":{"lovelace":100000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["ba149e2e2379097e65f0c03f2733d3103151e7f100d36dfdb01a0b22"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"ada":{"lovelace":4567000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"117/5000","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1uqthfy3jsrd82q067vu8ml8g0w3xr20qp8kv7z0yzrdhqrawkm2":{"id":"pool1uqthfy3jsrd82q067vu8ml8g0w3xr20qp8kv7z0yzrdhqrawkm2","vrfVerificationKeyHash":"7104302efc01232ce74b1c5c5fd8519e0ac84f07a62d0deb7fb8ebd05454b5ea","pledge":{"ada":{"lovelace":9400000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1upltzjkedla8ukdnj3k58xwy3pgjqwckmnx5s4a07lr0gds7yvh0x","owners":["7eb14ad96ffa7e59b3946d4399c48851203b16dccd4857aff7c6f436"],"relays":[{"type":"ipAddress","ipv4":"14.201.4.90","port":6006},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"139.218.11.14","port":6005}],"metadata":{"url":"https://dpadapools.com/preview3meta.json","hash":"e075ccee5c7172d62b0da89fbe1ee02a2569de5ceb438a6dd22be079c63670c5"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"ada":{"lovelace":35000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"ada":{"lovelace":1450000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"b2cbd9af0915b7f4b170a3dda7487f763e2ff31b9b960511a1a7d754c2d5714e"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1ltyxtkh37lfuh73ayulf8jdd742kmrqvx8rvt44r65c7q96xh08":{"id":"pool1ltyxtkh37lfuh73ayulf8jdd742kmrqvx8rvt44r65c7q96xh08","vrfVerificationKeyHash":"4a30b9817ba1af57e8a179ab619d8f49d50b7db1016af16741001dcb730b027d","pledge":{"ada":{"lovelace":9400000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1uqr86uc2k2kh7rmveddyjyx4q3nwskc8str3k3y3j3est8qd0hz3t","owners":["067d730ab2ad7f0f6ccb5a4910d50466e85b0782c71b44919473059c"],"relays":[{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006},{"type":"ipAddress","ipv4":"139.218.11.14","port":6005}],"metadata":{"url":"https://dpadapools.com/preview2meta.json","hash":"63cfd40cdf080705301829a840accb793d0ad8fa8c42863fcd372b91ae3e1d80"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"ada":{"lovelace":9900000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}}},"id":"queryLedgerState/stakePools-hfkgnvkflxdivdsm"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-startTime-5185237542c7c8a6810aeb0fe74b3b40.json b/fixtures/test/ogmios/queryNetwork-startTime-5185237542c7c8a6810aeb0fe74b3b40.json index 6bc185e37..c0dbb56e6 100644 --- a/fixtures/test/ogmios/queryNetwork-startTime-5185237542c7c8a6810aeb0fe74b3b40.json +++ b/fixtures/test/ogmios/queryNetwork-startTime-5185237542c7c8a6810aeb0fe74b3b40.json @@ -1 +1 @@ -{"jsonrpc":"2.0","method":"queryNetwork/startTime","result":"2022-10-25T00:00:00Z","id":"queryNetwork/startTime-hfkgnvkflxdivdsi"} \ No newline at end of file +{"jsonrpc":"2.0","method":"queryNetwork/startTime","result":"2022-10-25T00:00:00Z","id":"queryNetwork/startTime-hfkgnvkflxdivdsi"} diff --git a/fixtures/test/ogmios/queryNetwork-tip-0175559aa0cbb9d1a23217a7152cc76f.json b/fixtures/test/ogmios/queryNetwork-tip-0175559aa0cbb9d1a23217a7152cc76f.json new file mode 100644 index 000000000..bcf53b0c3 --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-tip-0175559aa0cbb9d1a23217a7152cc76f.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryNetwork/tip","result":{"slot":31932656,"id":"4088d6aad9edebce1047e09259981a52ebdec26904d632090f643811cd137556"},"id":"queryNetwork/tip-hfkgvfollxkiih0l"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-81c282b9c0e02dbd4628e80ff508e68b.json b/fixtures/test/ogmios/queryNetwork-tip-81c282b9c0e02dbd4628e80ff508e68b.json deleted file mode 100644 index 004402d99..000000000 --- a/fixtures/test/ogmios/queryNetwork-tip-81c282b9c0e02dbd4628e80ff508e68b.json +++ /dev/null @@ -1 +0,0 @@ -{"jsonrpc":"2.0","method":"queryNetwork/tip","result":{"slot":3967178,"id":"96f09de5433b9cddf7cdc7cf4c2cf9e0b6f6e88895c705a807e87d5f852da0cf"},"id":"queryNetwork/tip-hfkgnvkflxdivdsh"} \ No newline at end of file diff --git a/flake.lock b/flake.lock index dc59d8e5b..ce4625a2c 100644 --- a/flake.lock +++ b/flake.lock @@ -1802,17 +1802,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1715082002, - "narHash": "sha256-R4ZkrQAmxHpSWSOp6TlWpV34DY9YkXJCP0CKJ8sE/zY=", + "lastModified": 1715909148, + "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "1282efd00d9a9a166fd7c66bfb0b0499b559a021", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "1282efd00d9a9a166fd7c66bfb0b0499b559a021", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" } }, @@ -2039,15 +2039,16 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1717782115, - "narHash": "sha256-RfG3Z7Ph8UDQUsTAfGJ3lbLZK5W9p2i9iyceBJISb5Q=", + "lastModified": 1718715819, + "narHash": "sha256-scs7lMJQ4kLSIh9nahzoxk9L6BRyt2hYFbr5nIaqCWY=", "owner": "mlabs-haskell", "repo": "cardano.nix", - "rev": "f641fb662d17d38a2d7ca543966d36f39c9a6cba", + "rev": "197582b8517873dc11085ac191201a467f45a493", "type": "github" }, "original": { "owner": "mlabs-haskell", + "ref": "dshuiski/ogmios", "repo": "cardano.nix", "type": "github" } @@ -2079,16 +2080,16 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1713857353, - "narHash": "sha256-Ss5MHb8DTFlBXlWqyjW5hzwEI9i/SEx3xXASXtxxTlM=", + "lastModified": 1715901350, + "narHash": "sha256-teLUo4cQ9H52EkmJ9uXOIuyI78DtrKWxflJm+BnBqlM=", "owner": "IntersectMBO", "repo": "cardano-node", - "rev": "1ffe4a57137000b99ae2f148eaf763bc55f0ed89", + "rev": "235e34f6df9a1490190f6247b610b4e114ca3b96", "type": "github" }, "original": { "owner": "IntersectMBO", - "ref": "8.10.1-pre", + "ref": "8.11.0-sancho", "repo": "cardano-node", "type": "github" } @@ -13148,16 +13149,16 @@ "ogmios_2": { "flake": false, "locked": { - "lastModified": 1711124598, - "narHash": "sha256-hp7FGm5hozG/70CbGzEDRnEmk3VCVvWH4lEX9WUPSAI=", + "lastModified": 1717661787, + "narHash": "sha256-AnIxPug+DnPHn69z+Vz+Us2a+Z3LnkI+LJaIyUm4c5w=", "owner": "CardanoSolutions", "repo": "ogmios", - "rev": "088501eb499ec4b9460d7b5d6816284997e62510", + "rev": "4dbf1f34d9ea046dda50bf0c58bd276f80f41784", "type": "github" }, "original": { "owner": "CardanoSolutions", - "ref": "v6.2.0", + "ref": "v6.4.0", "repo": "ogmios", "type": "github" } diff --git a/flake.nix b/flake.nix index ad68bbb27..999c9de62 100644 --- a/flake.nix +++ b/flake.nix @@ -32,23 +32,22 @@ flake = false; }; - # TODO: bump to 8.11.0-sancho and patch cardano-configurations - cardano-node.url = "github:IntersectMBO/cardano-node/8.10.1-pre"; + cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-sancho"; # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations?rev=1282efd00d9a9a166fd7c66bfb0b0499b559a021"; + url = "github:input-output-hk/cardano-configurations?rev=692010ed0f454bfbb566c06443227c79e2f4dbab"; flake = false; }; # Get Ogmios and Kupo from cardano-nix - cardano-nix.url = "github:mlabs-haskell/cardano.nix"; + cardano-nix.url = "github:mlabs-haskell/cardano.nix/dshuiski/ogmios"; # Get Ogmios test fixtures ogmios = { - url = "github:CardanoSolutions/ogmios/v6.2.0"; + url = "github:CardanoSolutions/ogmios/v6.4.0"; flake = false; }; @@ -90,7 +89,7 @@ "aarch64-darwin" ]; - ogmiosVersion = "6.2.0"; + ogmiosVersion = "6.4.0"; kupoVersion = "2.8.0"; perSystem = nixpkgs.lib.genAttrs supportedSystems; diff --git a/nix/runtime.nix b/nix/runtime.nix index 2062e55bf..372e98e2c 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -3,12 +3,14 @@ rec { defaultConfig = final: with final; { inherit (inputs) cardano-configurations; # { name = "preprod"; magic = 1; } + # { name = "preview"; magic = 2; } + # { name = "sanchonet"; magic = 4; } # { name = "mainnet"; magic = null; } # See `doc/development.md` and `doc/runtime.md#changing-network-configurations` # for info on how to switch networks. network = { - name = "preview"; - magic = 2; # use `null` for mainnet + name = "sanchonet"; + magic = 4; # use `null` for mainnet }; # *All* of these values are optional, and shown with their default # values. If you need even more customization, you can use `overideAttrs` @@ -27,7 +29,6 @@ rec { port = 1442; since = "origin"; match = "*/*"; # matches Shelley addresses only - tag = "v2.2.0"; deferDbIndexes = true; # whether to pass --defer-db-indexes pruneUtxo = true; # whether to pass --prune-utxo # TODO: Do we want to support connection through ogmios? diff --git a/src/Contract/TextEnvelope.purs b/src/Contract/TextEnvelope.purs index f8bca24eb..2411a2856 100644 --- a/src/Contract/TextEnvelope.purs +++ b/src/Contract/TextEnvelope.purs @@ -7,6 +7,7 @@ import Ctl.Internal.Cardano.TextEnvelope , TextEnvelopeType ( PlutusScriptV1 , PlutusScriptV2 + , PlutusScriptV3 , PaymentSigningKeyShelleyed25519 , StakeSigningKeyShelleyed25519 , Other diff --git a/src/Internal/Cardano/TextEnvelope.purs b/src/Internal/Cardano/TextEnvelope.purs index 48e76e78f..0e291cff8 100644 --- a/src/Internal/Cardano/TextEnvelope.purs +++ b/src/Internal/Cardano/TextEnvelope.purs @@ -3,6 +3,7 @@ module Ctl.Internal.Cardano.TextEnvelope , TextEnvelopeType ( PlutusScriptV1 , PlutusScriptV2 + , PlutusScriptV3 , PaymentSigningKeyShelleyed25519 , StakeSigningKeyShelleyed25519 , Other @@ -14,18 +15,20 @@ module Ctl.Internal.Cardano.TextEnvelope import Prelude import Aeson (class DecodeAeson, decodeAeson, parseJsonStringToAeson) +import Cardano.Types.Language (Language(PlutusV3)) import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript -import Control.Alt ((<|>)) import Ctl.Internal.Types.Cbor (toByteArray) import Data.ByteArray (ByteArray, hexToByteArray) import Data.Either (hush) -import Data.Maybe (Maybe(Nothing)) -import Data.Newtype (class Newtype, wrap) +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Tuple.Nested ((/\)) data TextEnvelopeType = PlutusScriptV1 | PlutusScriptV2 + | PlutusScriptV3 | PaymentSigningKeyShelleyed25519 | StakeSigningKeyShelleyed25519 | Other String @@ -36,6 +39,7 @@ instance Show TextEnvelopeType where show = case _ of PlutusScriptV1 -> "PlutusScriptV1" PlutusScriptV2 -> "PlutusScriptV2" + PlutusScriptV3 -> "PlutusScriptV3" PaymentSigningKeyShelleyed25519 -> "PaymentSigningKeyShelley_ed25519" StakeSigningKeyShelleyed25519 -> "StakeSigningKeyShelley_ed25519" Other other -> other @@ -45,6 +49,7 @@ instance DecodeAeson TextEnvelopeType where decodeAeson aeson >>= case _ of "PlutusScriptV1" -> pure PlutusScriptV1 "PlutusScriptV2" -> pure PlutusScriptV2 + "PlutusScriptV3" -> pure PlutusScriptV3 "PaymentSigningKeyShelley_ed25519" -> pure PaymentSigningKeyShelleyed25519 "StakeSigningKeyShelley_ed25519" -> pure @@ -81,15 +86,16 @@ decodeTextEnvelope json = do ba <- decodeCborHexToBytes cborHex pure $ wrap { type_, description, bytes: ba } -plutusScriptFromEnvelope - :: TextEnvelope -> Maybe PlutusScript +plutusScriptFromEnvelope :: TextEnvelope -> Maybe PlutusScript plutusScriptFromEnvelope (TextEnvelope envelope) = - plutusScriptV1FromEnvelope <|> plutusScriptV2FromEnvelope + case envelope.type_ of + PlutusScriptV1 -> + Just $ PlutusScript.plutusV1Script envelopeBytes + PlutusScriptV2 -> + Just $ PlutusScript.plutusV2Script envelopeBytes + PlutusScriptV3 -> + -- TODO: add plutusV3Script to Cardano.Types.PlutusScript + Just $ wrap $ unwrap envelopeBytes /\ PlutusV3 + _ -> Nothing where - plutusScriptV1FromEnvelope = do - unless (envelope.type_ == PlutusScriptV1) Nothing - pure $ PlutusScript.plutusV1Script $ wrap envelope.bytes - - plutusScriptV2FromEnvelope = do - unless (envelope.type_ == PlutusScriptV2) Nothing - pure $ PlutusScript.plutusV2Script $ wrap envelope.bytes + envelopeBytes = wrap envelope.bytes diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index d4bbe9d47..89dd7544c 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -31,8 +31,10 @@ import Cardano.Types , BigNum , DataHash , GeneralTransactionMetadata + , Language(PlutusV3) , MultiAsset , PlutusData + , PlutusScript(PlutusScript) , ScriptHash , Slot , TransactionHash(TransactionHash) @@ -381,7 +383,11 @@ instance DecodeAeson KupoDatum where -- `getScriptByHash` response parsing -------------------------------------------------------------------------------- -data KupoScriptLanguage = NativeScript | PlutusV1Script | PlutusV2Script +data KupoScriptLanguage + = NativeScript + | PlutusV1Script + | PlutusV2Script + | PlutusV3Script derive instance Generic KupoScriptLanguage _ @@ -393,9 +399,10 @@ instance DecodeAeson KupoScriptLanguage where "native" -> pure NativeScript "plutus:v1" -> pure PlutusV1Script "plutus:v2" -> pure PlutusV2Script + "plutus:v3" -> pure PlutusV3Script invalid -> Left $ TypeMismatch $ - "language: expected 'native' or 'plutus:v{1|2}', got: " <> invalid + "language: expected 'native' or 'plutus:v{1|2|3}', got: " <> invalid newtype KupoScriptRef = KupoScriptRef (Maybe ScriptRef) @@ -422,6 +429,10 @@ instance DecodeAeson KupoScriptRef where PlutusV2Script -> pure $ PlutusScriptRef $ PlutusScript.plutusV2Script $ wrap $ unwrap scriptBytes + PlutusV3Script -> + -- TODO: add plutusV3Script to Cardano.Types.PlutusScript + pure $ PlutusScriptRef $ PlutusScript $ unwrap scriptBytes /\ + PlutusV3 ------------------------------------------------------------------------------- -- `isTxConfirmed` response parsing diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index d89b29218..9ceaebe30 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -65,7 +65,6 @@ module Ctl.Internal.QueryM.Ogmios , releaseMempoolCall , submitTxCall , submitSuccessPartialResp - , slotLengthFactor , parseIpv6String , rationalToSubcoin , showRedeemerPointer @@ -128,7 +127,9 @@ import Cardano.Types.NativeScript import Cardano.Types.PlutusScript (PlutusScript(PlutusScript)) import Cardano.Types.PoolMetadata (PoolMetadata(PoolMetadata)) import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) -import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) as RedeemerTag +import Cardano.Types.RedeemerTag + ( RedeemerTag(Spend, Mint, Cert, Reward, Vote, Propose) + ) as RedeemerTag import Cardano.Types.Relay ( Relay(SingleHostAddr, SingleHostName, MultiHostName) ) @@ -157,6 +158,7 @@ import Ctl.Internal.Types.EraSummaries ( EraSummaries(EraSummaries) , EraSummary(EraSummary) , EraSummaryParameters(EraSummaryParameters) + , EraSummaryTime(EraSummaryTime) ) import Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) @@ -513,15 +515,23 @@ instance DecodeAeson OgmiosEraSummaries where -- in "start" "end" fields and "slotLength". decodeAeson = aesonArray (map (wrap <<< wrap) <<< traverse decodeEraSummary) where + decodeEraSummaryTime :: Aeson -> Either JsonDecodeError EraSummaryTime + decodeEraSummaryTime = aesonObject \obj -> do + time <- flip getField "seconds" =<< getField obj "time" + slot <- getField obj "slot" + epoch <- getField obj "epoch" + pure $ wrap { time, slot, epoch } + decodeEraSummary :: Aeson -> Either JsonDecodeError EraSummary decodeEraSummary = aesonObject \o -> do - start <- getField o "start" + start <- decodeEraSummaryTime =<< getField o "start" -- The field "end" is required by Ogmios API, but it can optionally return -- Null, so we want to fail if the field is absent but make Null value -- acceptable in presence of the field (hence why "end" is wrapped in -- `Maybe`). end' <- getField o "end" - end <- if isNull end' then pure Nothing else Just <$> decodeAeson end' + end <- + if isNull end' then pure Nothing else Just <$> decodeEraSummaryTime end' parameters <- decodeEraSummaryParameters =<< getField o "parameters" pure $ wrap { start, end, parameters } @@ -529,10 +539,7 @@ instance DecodeAeson OgmiosEraSummaries where :: Object Aeson -> Either JsonDecodeError EraSummaryParameters decodeEraSummaryParameters o = do epochLength <- getField o "epochLength" - slotLength <- wrap <$> - ( (*) slotLengthFactor <$> - (flip getField "seconds" =<< getField o "slotLength") - ) + slotLength <- flip getField "milliseconds" =<< getField o "slotLength" safeZone <- fromMaybe zero <$> getField o "safeZone" pure $ wrap { epochLength, slotLength, safeZone } @@ -540,11 +547,15 @@ instance EncodeAeson OgmiosEraSummaries where encodeAeson (OgmiosEraSummaries (EraSummaries eraSummaries)) = fromArray $ map encodeEraSummary eraSummaries where + encodeEraSummaryTime :: EraSummaryTime -> Aeson + encodeEraSummaryTime (EraSummaryTime { time, slot, epoch }) = + encodeAeson { "time": { "seconds": time }, "slot": slot, "epoch": epoch } + encodeEraSummary :: EraSummary -> Aeson encodeEraSummary (EraSummary { start, end, parameters }) = encodeAeson - { "start": start - , "end": end + { "start": encodeEraSummaryTime start + , "end": encodeEraSummaryTime <$> end , "parameters": encodeEraSummaryParameters parameters } @@ -552,15 +563,10 @@ instance EncodeAeson OgmiosEraSummaries where encodeEraSummaryParameters (EraSummaryParameters params) = encodeAeson { "epochLength": params.epochLength - , "slotLength": { "seconds": params.slotLength } + , "slotLength": { "milliseconds": params.slotLength } , "safeZone": params.safeZone } --- Ogmios returns `slotLength` in seconds, and we use milliseconds, --- so we need to convert between them. -slotLengthFactor :: Number -slotLengthFactor = 1000.0 - instance DecodeOgmios OgmiosEraSummaries where decodeOgmios = decodeResult decodeAeson @@ -756,6 +762,8 @@ showRedeemerPointer ptr = show ptr.redeemerTag <> ":" <> show ptr.redeemerIndex type ExecutionUnits = { memory :: BigNum, steps :: BigNum } +type OgmiosRedeemerPtr = { index :: UInt, purpose :: String } + newtype TxEvaluationR = TxEvaluationR (Either TxEvaluationFailure TxEvaluationResult) @@ -789,16 +797,21 @@ instance DecodeAeson TxEvaluationResult where :: Aeson -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits) decodeRdmrPtrExUnitsItem elem = do res - :: { validator :: String + :: { validator :: OgmiosRedeemerPtr , budget :: { memory :: BigNum, cpu :: BigNum } } <- decodeAeson elem - redeemerPtr <- decodeRedeemerPointer res.validator + redeemerPtr <- decodeRedeemerPointer_ res.validator pure $ redeemerPtr /\ { memory: res.budget.memory, steps: res.budget.cpu } redeemerPtrTypeMismatch :: JsonDecodeError redeemerPtrTypeMismatch = TypeMismatch "Expected redeemer pointer to be encoded as: \ - \^(spend|mint|certificate|withdrawal):[0-9]+$" + \^(spend|mint|publish|withdraw|vote|propose):[0-9]+$" + +redeemerTypeMismatch :: JsonDecodeError +redeemerTypeMismatch = TypeMismatch + "Expected redeemer to be one of: \ + \(spend|mint|publish|withdraw|vote|propose)" decodeRedeemerPointer :: String -> Either JsonDecodeError RedeemerPointer decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch @@ -809,12 +822,21 @@ decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch <*> UInt.fromString indexRaw _ -> Nothing +decodeRedeemerPointer_ + :: { index :: UInt, purpose :: String } + -> Either JsonDecodeError RedeemerPointer +decodeRedeemerPointer_ { index: redeemerIndex, purpose } = + note redeemerTypeMismatch $ { redeemerTag: _, redeemerIndex } <$> + redeemerTagFromString purpose + redeemerTagFromString :: String -> Maybe RedeemerTag redeemerTagFromString = case _ of "spend" -> Just RedeemerTag.Spend "mint" -> Just RedeemerTag.Mint - "certificate" -> Just RedeemerTag.Cert - "withdrawal" -> Just RedeemerTag.Reward + "publish" -> Just RedeemerTag.Cert + "withdraw" -> Just RedeemerTag.Reward + "vote" -> Just RedeemerTag.Vote + "propose" -> Just RedeemerTag.Propose _ -> Nothing type OgmiosDatum = String @@ -869,8 +891,9 @@ instance DecodeAeson ScriptFailure where errorData <- maybe (Left (AtKey "data" MissingValue)) pure error.data case error.code of 3011 -> do - res :: { missingScripts :: Array String } <- decodeAeson errorData - missing <- traverse decodeRedeemerPointer res.missingScripts + res :: { missingScripts :: Array OgmiosRedeemerPtr } <- decodeAeson + errorData + missing <- traverse decodeRedeemerPointer_ res.missingScripts pure $ MissingRequiredScripts { missing: missing, resolved: Nothing } 3012 -> do res :: { validationError :: String, traces :: Array String } <- @@ -887,8 +910,9 @@ instance DecodeAeson ScriptFailure where , txId: res.unsuitableOutputReference.transaction.id } 3110 -> do - res :: { extraneousRedeemers :: Array String } <- decodeAeson errorData - ExtraRedeemers <$> traverse decodeRedeemerPointer + res :: { extraneousRedeemers :: Array OgmiosRedeemerPtr } <- decodeAeson + errorData + ExtraRedeemers <$> traverse decodeRedeemerPointer_ res.extraneousRedeemers 3111 -> do res :: { missingDatums :: Array String } <- decodeAeson errorData @@ -938,8 +962,9 @@ instance DecodeAeson TxEvaluationFailure where where parseElem elem = do - res :: { validator :: String, error :: ScriptFailure } <- decodeAeson elem - (_ /\ res.error) <$> decodeRedeemerPointer res.validator + res :: { validator :: OgmiosRedeemerPtr, error :: ScriptFailure } <- + decodeAeson elem + (_ /\ res.error) <$> decodeRedeemerPointer_ res.validator collectIntoMap :: forall k v. Ord k => Array (k /\ v) -> Map k (List v) collectIntoMap = foldl @@ -982,24 +1007,20 @@ rationalToSubcoin (PParamRational rat) = do denominator <- BigNum.fromBigInt $ Rational.denominator rat pure $ UnitInterval { numerator, denominator } +type OgmiosAdaLovelace = { "ada" :: { "lovelace" :: BigNum } } +type OgmiosBytes = { "bytes" :: UInt } + -- | A type that corresponds to Ogmios response. type ProtocolParametersRaw = { "minFeeCoefficient" :: UInt - , "minFeeConstant" :: - { "lovelace" :: UInt } + , "minFeeConstant" :: OgmiosAdaLovelace , "minUtxoDepositCoefficient" :: BigNum - , "maxBlockBodySize" :: - { "bytes" :: UInt } - , "maxBlockHeaderSize" :: - { "bytes" :: UInt } - , "maxTransactionSize" :: - { "bytes" :: UInt } - , "maxValueSize" :: - { "bytes" :: UInt } - , "stakeCredentialDeposit" :: - { "lovelace" :: BigNum } - , "stakePoolDeposit" :: - { "lovelace" :: BigNum } + , "maxBlockBodySize" :: OgmiosBytes + , "maxBlockHeaderSize" :: OgmiosBytes + , "maxTransactionSize" :: OgmiosBytes + , "maxValueSize" :: OgmiosBytes + , "stakeCredentialDeposit" :: OgmiosAdaLovelace + , "stakePoolDeposit" :: OgmiosAdaLovelace , "stakePoolRetirementEpochBound" :: UInt , "desiredNumberOfStakePools" :: UInt , "stakePoolPledgeInfluence" :: PParamRational @@ -1009,11 +1030,11 @@ type ProtocolParametersRaw = { "major" :: UInt , "minor" :: UInt } - , "minStakePoolCost" :: - { "lovelace" :: BigNum } + , "minStakePoolCost" :: OgmiosAdaLovelace , "plutusCostModels" :: { "plutus:v1" :: Array Cardano.Int , "plutus:v2" :: Maybe (Array Cardano.Int) + , "plutus:v3" :: Maybe (Array Cardano.Int) } , "scriptExecutionPrices" :: { "memory" :: PParamRational @@ -1051,11 +1072,11 @@ instance DecodeAeson OgmiosProtocolParameters where , maxBlockHeaderSize: ps.maxBlockHeaderSize.bytes , maxBlockBodySize: ps.maxBlockBodySize.bytes , maxTxSize: ps.maxTransactionSize.bytes - , txFeeFixed: ps.minFeeConstant.lovelace + , txFeeFixed: wrap ps.minFeeConstant.ada.lovelace , txFeePerByte: ps.minFeeCoefficient - , stakeAddressDeposit: wrap ps.stakeCredentialDeposit.lovelace - , stakePoolDeposit: wrap ps.stakePoolDeposit.lovelace - , minPoolCost: wrap ps.minStakePoolCost.lovelace + , stakeAddressDeposit: wrap ps.stakeCredentialDeposit.ada.lovelace + , stakePoolDeposit: wrap ps.stakePoolDeposit.ada.lovelace + , minPoolCost: wrap ps.minStakePoolCost.ada.lovelace , poolRetireMaxEpoch: wrap ps.stakePoolRetirementEpochBound , stakePoolTargetNum: ps.desiredNumberOfStakePools , poolPledgeInfluence: unwrap ps.stakePoolPledgeInfluence @@ -1067,7 +1088,10 @@ instance DecodeAeson OgmiosProtocolParameters where ( PlutusV1 /\ CostModel ps.plutusCostModels."plutus:v1" ) - , (PlutusV2 /\ _) <<< CostModel <$> ps.plutusCostModels."plutus:v2" + , Tuple PlutusV2 <<< CostModel <$> + ps.plutusCostModels."plutus:v2" + , Tuple PlutusV3 <<< CostModel <$> + ps.plutusCostModels."plutus:v3" ] , prices: prices , maxTxExUnits: decodeExUnits ps.maxExecutionUnitsPerTransaction diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index c6511ae68..16642ab8d 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -48,7 +48,7 @@ calculateMinFeeCsl (ProtocolParameters pparams) selfSigners txNoSigs = do let cslLinearFee = linearFee_new (unwrap $ BigNum.fromUInt pparams.txFeePerByte) - (unwrap $ BigNum.fromUInt pparams.txFeeFixed) + (unwrap $ unwrap pparams.txFeeFixed) let fee = minFee cslTx cslLinearFee let exUnitPrices = pparams.prices diff --git a/src/Internal/ServerConfig.purs b/src/Internal/ServerConfig.purs index 76d4a883b..8b42d9109 100644 --- a/src/Internal/ServerConfig.purs +++ b/src/Internal/ServerConfig.purs @@ -4,6 +4,7 @@ module Ctl.Internal.ServerConfig , blockfrostPublicMainnetServerConfig , blockfrostPublicPreprodServerConfig , blockfrostPublicPreviewServerConfig + , blockfrostPublicSanchonetServerConfig , blockfrostSelfHostedServerConfig , defaultKupoServerConfig , defaultOgmiosWsConfig @@ -61,6 +62,14 @@ blockfrostPublicPreprodServerConfig = , path: Just "/api/v0" } +blockfrostPublicSanchonetServerConfig :: ServerConfig +blockfrostPublicSanchonetServerConfig = + { port: UInt.fromInt 443 + , host: "cardano-sanchonet.blockfrost.io" + , secure: true + , path: Just "/api/v0" + } + blockfrostPublicMainnetServerConfig :: ServerConfig blockfrostPublicMainnetServerConfig = { port: UInt.fromInt 443 diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index f8130c5ae..5199fb1f9 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -87,7 +87,7 @@ import Cardano.Types ( AssetClass(AssetClass) , DataHash , GeneralTransactionMetadata(GeneralTransactionMetadata) - , Language(PlutusV2, PlutusV1) + , Language(PlutusV1, PlutusV2, PlutusV3) , PlutusData , PoolPubKeyHash , RawBytes @@ -191,9 +191,11 @@ import Ctl.Internal.Types.EraSummaries import Ctl.Internal.Types.ProtocolParameters ( CostModelV1 , CostModelV2 + , CostModelV3 , ProtocolParameters(ProtocolParameters) , convertPlutusV1CostModel , convertPlutusV2CostModel + , convertPlutusV3CostModel ) import Ctl.Internal.Types.Rational (Rational, reduce) import Ctl.Internal.Types.StakeValidatorHash (StakeValidatorHash) @@ -1433,6 +1435,7 @@ type BlockfrostProtocolParametersRaw = , "cost_models" :: { "PlutusV1" :: { | CostModelV1 } , "PlutusV2" :: { | CostModelV2 } + , "PlutusV3" :: CostModelV3 } , "price_mem" :: FiniteBigNumber , "price_step" :: FiniteBigNumber @@ -1497,6 +1500,9 @@ instance DecodeAeson BlockfrostProtocolParameters where maybe (Left $ AtKey "coins_per_utxo_size" $ MissingValue) pure $ (Coin <<< unwrap <$> raw.coins_per_utxo_size) + plutusV3CostModel <- note (AtKey "PlutusV3" $ TypeMismatch "CostModel") $ + convertPlutusV3CostModel raw.cost_models."PlutusV3" + pure $ BlockfrostProtocolParameters $ ProtocolParameters { protocolVersion: raw.protocol_major_ver /\ raw.protocol_minor_ver -- The following two parameters were removed from Babbage @@ -1504,7 +1510,7 @@ instance DecodeAeson BlockfrostProtocolParameters where , maxBlockHeaderSize: raw.max_block_header_size , maxBlockBodySize: raw.max_block_size , maxTxSize: raw.max_tx_size - , txFeeFixed: raw.min_fee_b + , txFeeFixed: Coin $ BigNum.fromUInt raw.min_fee_b , txFeePerByte: raw.min_fee_a , stakeAddressDeposit: Coin $ unwrap raw.key_deposit , stakePoolDeposit: Coin $ unwrap raw.pool_deposit @@ -1518,6 +1524,7 @@ instance DecodeAeson BlockfrostProtocolParameters where , costModels: Map.fromFoldable [ PlutusV1 /\ convertPlutusV1CostModel raw.cost_models."PlutusV1" , PlutusV2 /\ convertPlutusV2CostModel raw.cost_models."PlutusV2" + , PlutusV3 /\ plutusV3CostModel ] , prices , maxTxExUnits: diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index b3d16214e..3a7e2ded5 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -100,7 +100,7 @@ import Ctl.Internal.Helpers , showWithParens , unsafeFromJust ) -import Ctl.Internal.QueryM.Ogmios (aesonObject, slotLengthFactor) +import Ctl.Internal.QueryM.Ogmios (aesonObject) import Ctl.Internal.Types.EraSummaries ( EraSummaries(EraSummaries) , EraSummary(EraSummary) @@ -832,6 +832,9 @@ absTimeFromRelTime (EraSummary { start, end }) (RelTime relTime) = do wrap <$> (liftM CannotGetBigIntFromNumber $ BigInt.fromNumber absTime) +slotLengthFactor :: Number +slotLengthFactor = 1000.0 + -------------------------------------------------------------------------------- -- POSIXTime (milliseconds) to -- Slot (absolute from System Start - see QueryM.SystemStart.getSystemStart) diff --git a/src/Internal/Types/ProtocolParameters.purs b/src/Internal/Types/ProtocolParameters.purs index 38c5ae418..be35375ea 100644 --- a/src/Internal/Types/ProtocolParameters.purs +++ b/src/Internal/Types/ProtocolParameters.purs @@ -2,8 +2,10 @@ module Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) , CostModelV1 , CostModelV2 + , CostModelV3 , convertPlutusV1CostModel , convertPlutusV2CostModel + , convertPlutusV3CostModel ) where import Prelude @@ -17,14 +19,22 @@ import Cardano.Types.Int as Cardano import Cardano.Types.Language (Language) import Ctl.Internal.Types.Rational (Rational) import Data.Array (reverse) +import Data.Array (sortWith) as Array +import Data.Bitraversable (ltraverse) import Data.Generic.Rep (class Generic) +import Data.Int (fromString) as Int import Data.List (List) import Data.List as List import Data.Map (Map) +import Data.Maybe (Maybe) import Data.Newtype (class Newtype, wrap) import Data.Show.Generic (genericShow) +import Data.Traversable (traverse) +import Data.Tuple (fst, snd) import Data.Tuple.Nested (type (/\)) import Data.UInt (UInt) +import Foreign.Object (Object) +import Foreign.Object (toUnfoldable) as Object import Heterogeneous.Folding (class HFoldl, hfoldl) -- Based on `Cardano.Api.ProtocolParameters.ProtocolParameters` from @@ -35,7 +45,7 @@ newtype ProtocolParameters = ProtocolParameters , maxBlockHeaderSize :: UInt , maxBlockBodySize :: UInt , maxTxSize :: UInt - , txFeeFixed :: UInt + , txFeeFixed :: Coin , txFeePerByte :: UInt , stakeAddressDeposit :: Coin , stakePoolDeposit :: Coin @@ -245,6 +255,8 @@ type CostModelV2 = | CostModelV1 ) +type CostModelV3 = Object Cardano.Int + -- This assumes that cost models are stored in lexicographical order convertCostModel :: forall costModel @@ -268,3 +280,8 @@ convertPlutusV1CostModel = convertCostModel convertPlutusV2CostModel :: Record CostModelV2 -> CostModel convertPlutusV2CostModel = convertCostModel + +convertPlutusV3CostModel :: CostModelV3 -> Maybe CostModel +convertPlutusV3CostModel costModelRaw = + wrap <<< map snd <<< Array.sortWith fst <$> + traverse (ltraverse Int.fromString) (Object.toUnfoldable costModelRaw) diff --git a/test/Blockfrost/GenerateFixtures/Helpers.purs b/test/Blockfrost/GenerateFixtures/Helpers.purs index fd1b849d4..755e3e08a 100644 --- a/test/Blockfrost/GenerateFixtures/Helpers.purs +++ b/test/Blockfrost/GenerateFixtures/Helpers.purs @@ -24,6 +24,7 @@ import Ctl.Internal.Contract.QueryBackend , defaultConfirmTxDelay , mkBlockfrostBackendParams ) +import Ctl.Internal.ServerConfig (blockfrostPublicSanchonetServerConfig) import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.String (take) as String import Effect.Exception (throw) @@ -68,6 +69,8 @@ blockfrostConfigFromApiKey = String.take networkPrefixLength >>> case _ of pure blockfrostPublicPreviewServerConfig "preprod" -> pure blockfrostPublicPreprodServerConfig + "sanchon" -> + pure blockfrostPublicSanchonetServerConfig _ -> throw "Failed to derive server config from Blockfrost API key" where diff --git a/test/Blockfrost/GenerateFixtures/ProtocolParameters.purs b/test/Blockfrost/GenerateFixtures/ProtocolParameters.purs new file mode 100644 index 000000000..097fe784f --- /dev/null +++ b/test/Blockfrost/GenerateFixtures/ProtocolParameters.purs @@ -0,0 +1,43 @@ +module Test.Ctl.Blockfrost.GenerateFixtures.ProtocolParameters (main) where + +import Prelude + +import Ctl.Internal.Service.Blockfrost + ( BlockfrostEndpoint(LatestProtocolParameters) + , BlockfrostRawResponse + , runBlockfrostServiceTestM + ) +import Ctl.Internal.Service.Blockfrost (getProtocolParameters) as Blockfrost +import Data.Either (either) +import Data.Maybe (Maybe(Just, Nothing)) +import Effect (Effect) +import Effect.Aff (Aff, launchAff_) +import Effect.Class (liftEffect) +import Effect.Exception (throw) +import Test.Ctl.Blockfrost.GenerateFixtures.Helpers + ( blockfrostBackend + , storeBlockfrostFixture + ) + +main :: Effect Unit +main = launchAff_ generateFixture + +generateFixture :: Aff Unit +generateFixture = do + backend <- liftEffect blockfrostBackend + pparams <- runBlockfrostServiceTestM (const (pure unit)) backend + (Just onBlockfrostRawResponse) + Nothing + Blockfrost.getProtocolParameters + either (liftEffect <<< throw <<< show) (const (pure unit)) + pparams + where + onBlockfrostRawResponse + :: BlockfrostEndpoint + -> BlockfrostRawResponse + -> Aff Unit + onBlockfrostRawResponse query rawResp = + case query of + LatestProtocolParameters -> + storeBlockfrostFixture zero "getProtocolParameters" rawResp + _ -> pure unit diff --git a/test/Blockfrost/ProtocolParameters.purs b/test/Blockfrost/ProtocolParameters.purs index 23b9c2460..2621c57b8 100644 --- a/test/Blockfrost/ProtocolParameters.purs +++ b/test/Blockfrost/ProtocolParameters.purs @@ -25,11 +25,11 @@ import Test.Spec.Runner (defaultConfig) blockfrostFixture :: String blockfrostFixture = - "blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json" + "blockfrost/getProtocolParameters/getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json" ogmiosFixture :: String ogmiosFixture = - "ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json" + "ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json" loadFixture :: forall (a :: Type). DecodeAeson a => String -> Aff a loadFixture fixture = diff --git a/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json b/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json index ead071bbe..5b2976564 100644 --- a/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json @@ -1 +1,64 @@ -{"jsonrpc":"2.0","method":"evaluateTransaction","error":{"code":3010,"message":"Some scripts of the transactions terminated with error(s).","data":[{"validator":"certificate:11","error":{"code":3117,"message":"The transaction contains unknown UTxO references as inputs. This can happen if the inputs you're trying to spend have already been spent, or if you've simply referred to non-existing UTxO altogether. The field 'data.unknownOutputReferences' indicates all unknown inputs.","data":{"unknownOutputReferences":[{"transaction":{"id":"731392618255aff0cd24712e6bd234db958cc065f8eff4f5e4476d4825cda180"},"index":1}]}}},{"validator":"certificate:15","error":{"code":3011,"message":"An associated script witness is missing. Indeed, any script used in a transaction (when spending, minting, withdrawing or publishing certificates) must be provided in full with the transaction. Scripts must therefore be added either to the witness set or provided as a reference inputs should you use Plutus V2+ and a format from Babbage and beyond.","data":{"missingScripts":["mint:11"]}}},{"validator":"withdrawal:16","error":{"code":3111,"message":"Transaction failed because some Plutus scripts are missing their associated datums. 'data.missingDatums' contains a set of data hashes for the missing datums. Ensure all Plutus scripts have an associated datum in the transaction's witness set or, are provided through inline datums in reference inputs.","data":{"missingDatums":["342ab6aef80f619bb09dfe2e8a24f8937734d4150d00cb1aa93222ce808c290f"]}}}]},"id":"mK9IYY6GandR"} +{ + "jsonrpc": "2.0", + "method": "evaluateTransaction", + "error": { + "code": 3010, + "message": "Some scripts of the transactions terminated with error(s).", + "data": [ + { + "validator": { + "index": 11, + "purpose": "publish" + }, + "error": { + "code": 3117, + "message": "The transaction contains unknown UTxO references as inputs. This can happen if the inputs you're trying to spend have already been spent, or if you've simply referred to non-existing UTxO altogether. The field 'data.unknownOutputReferences' indicates all unknown inputs.", + "data": { + "unknownOutputReferences": [ + { + "transaction": { + "id": "731392618255aff0cd24712e6bd234db958cc065f8eff4f5e4476d4825cda180" + }, + "index": 1 + } + ] + } + } + }, + { + "validator": { + "index": 11, + "purpose": "publish" + }, + "error": { + "code": 3011, + "message": "An associated script witness is missing. Indeed, any script used in a transaction (when spending, minting, withdrawing or publishing certificates) must be provided in full with the transaction. Scripts must therefore be added either to the witness set or provided as a reference inputs should you use Plutus V2+ and a format from Babbage and beyond.", + "data": { + "missingScripts": [ + { + "index": 11, + "purpose": "mint" + } + ] + } + } + }, + { + "validator": { + "index": 16, + "purpose": "withdraw" + }, + "error": { + "code": 3111, + "message": "Transaction failed because some Plutus scripts are missing their associated datums. 'data.missingDatums' contains a set of data hashes for the missing datums. Ensure all Plutus scripts have an associated datum in the transaction's witness set or, are provided through inline datums in reference inputs.", + "data": { + "missingDatums": [ + "342ab6aef80f619bb09dfe2e8a24f8937734d4150d00cb1aa93222ce808c290f" + ] + } + } + } + ] + }, + "id": "mK9IYY6GandR" +} diff --git a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json index 57a1e3507..d4cfab2e6 100644 --- a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json @@ -3,21 +3,30 @@ "method": "evaluateTransaction", "result": [ { - "validator": "spend", + "validator": { + "index": 0, + "purpose": "invalid" + }, "budget": { "memory": 2766916028110716146, "cpu": 6325731070934221229 } }, { - "validator": "certificate:3", + "validator": { + "index": 3, + "purpose": "publish" + }, "budget": { "memory": 4926587050210136942, "cpu": 2982577810151428748 } }, { - "validator": "withdrawal:8", + "validator": { + "index": 8, + "purpose": "withdraw" + }, "budget": { "memory": 3603965291794951667, "cpu": 937555587227912939 diff --git a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json index dd82d93ad..0b2782ecd 100644 --- a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json @@ -3,21 +3,30 @@ "method": "evaluateTransaction", "result": [ { - "validator": "spend:1", + "validator": { + "index": 1, + "purpose": "spend" + }, "budget": { "memory": 2766916028110716146, "cpu": 6325731070934221229 } }, { - "validator": "certificate:3", + "validator": { + "index": 3, + "purpose": "publish" + }, "budget": { "memory": 4926587050210136942, "cpu": 2982577810151428748 } }, { - "validator": "withdrawal:0", + "validator": { + "index": 0, + "purpose": "withdraw" + }, "budget": { "memory": 3603965291794951667, "cpu": 937555587227912939 diff --git a/test/Plutus/Time.purs b/test/Plutus/Time.purs index 2aa8e9ca7..29bda59ab 100644 --- a/test/Plutus/Time.purs +++ b/test/Plutus/Time.purs @@ -43,13 +43,13 @@ import Ctl.Internal.Types.Interval import Ctl.Internal.Types.SystemStart (sysStartFromOgmiosTimestampUnsafe) import Data.Int as Int import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (wrap) import Data.UInt as UInt import Effect.Aff (Aff) import JS.BigInt as BigInt import Mote (group) import Mote.TestPlanM (TestPlanM) -import Test.Ctl.Utils (toFromAesonTest, toFromAesonTestWith) +import Test.Ctl.Utils (toFromAesonTest) slotFixture :: Slot slotFixture = mkSlot 34892625 @@ -217,21 +217,6 @@ eraSummariesFixture = EraSummaries } ] -eraSummaryLengthToSeconds :: EraSummary -> EraSummary -eraSummaryLengthToSeconds old@(EraSummary { parameters }) = - let - newSlotLength :: SlotLength - newSlotLength = wrap $ 1e-3 * unwrap (unwrap parameters).slotLength - - newParameters :: EraSummaryParameters - newParameters = wrap $ (unwrap parameters) { slotLength = newSlotLength } - in - wrap (unwrap old) { parameters = newParameters } - -eraSummariesLengthToSeconds :: OgmiosEraSummaries -> OgmiosEraSummaries -eraSummariesLengthToSeconds (OgmiosEraSummaries values) = - wrap $ wrap (eraSummaryLengthToSeconds <$> unwrap values) - suite :: TestPlanM (Aff Unit) Unit suite = do group "Time-related Aeson representation tests" do @@ -260,7 +245,6 @@ suite = do toFromAesonTest "AbsTime" absTimeFixture toFromAesonTest "RelSlot" relSlotFixture toFromAesonTest "RelTime" relTimeFixture - toFromAesonTestWith "EraSummaries" eraSummariesLengthToSeconds $ - OgmiosEraSummaries eraSummariesFixture + toFromAesonTest "EraSummaries" $ OgmiosEraSummaries eraSummariesFixture toFromAesonTest "SystemStart" systemStartFixture toFromAesonTest "CurrentEpoch" currentEpochFixture diff --git a/test/ProtocolParams.purs b/test/ProtocolParams.purs index c14a66824..1af299e7a 100644 --- a/test/ProtocolParams.purs +++ b/test/ProtocolParams.purs @@ -16,7 +16,7 @@ import Test.Spec.Assertions (shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit suite = do aeson <- Utils.readAeson - "./fixtures/test/ogmios/queryLedgerState-protocolParameters-8b04ffba41e11788bfdb9110af812a8b.json" + "./fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json" group "ProtocolParameters parser" $ do test "is able to parse ogmios response fixture" $ (decodeAeson aeson :: Either _ { result :: OgmiosProtocolParameters }) diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index 4f429e1b2..478be40f0 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -52,7 +52,7 @@ import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (EraSummaries -> SystemStart -> Effect Unit) Unit suite = do group "Interval" do - group "EraSumaries related" do + group "EraSummaries related" do test "Inverse posixTimeToSlot >>> slotToPosixTime " testPosixTimeToSlot test "Inverse slotToPosixTime >>> posixTimeToSlot " testSlotToPosixTime test "PosixTimeToSlot errors" testPosixTimeToSlotError @@ -87,7 +87,7 @@ eraSummariesFixture :: Effect EraSummaries eraSummariesFixture = do { result } :: { result :: OgmiosEraSummaries } <- loadOgmiosFixture "queryLedgerState-eraSummaries" - "98b3bc6427566974984a768fb0a5e2b9" + "8073a8f378e969384ec52010ec6c290c" pure $ unwrap result systemStartFixture :: Effect SystemStart From 0215ff1b16f7ca405c754aaf979537815848169b Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 19 Jun 2024 18:15:54 +0200 Subject: [PATCH 227/373] Bump ogmios to v6.0.3, Switch to cardano.nix --- Makefile | 7 +- ...ers-3457670a74fb5f9895d5cce9b6826c85.json} | 2 +- ...ters-7fe834fd628aa322eedeb3d8c7c1dd61.json | 1 - ...poch-8d7a461f70d4d44d0d8cdd64c5fba15c.json | 1 - ...poch-f91be14635fa026f2a990508f3379064.json | 1 + ...ries-8073a8f378e969384ec52010ec6c290c.json | 1 + ...ries-d8b19110b9580cddfa3895eea34c2139.json | 1 - ...ters-68ba1141d17af9326cad70407ea3d7fb.json | 1 - ...ters-f39db65d5d9dc11e511f061b37349173.json | 1 + ...ools-b83473f5b74f365f842c3ba6968d4e3e.json | 1 + ...ools-e449fe6e00b4f704f6b9b28c7d42047e.json | 1 - ...Time-02fa6f9e7ed04ebfe3294c7648be54d5.json | 1 - ...Time-1a911197c5149cd582be4cbf5a651817.json | 1 + ...-tip-145d4ffd82a9c88c79bdb0f629aa3d3d.json | 1 + ...-tip-fbd01538064b3ef7b5e3a703dddcb32b.json | 1 - flake.lock | 12158 ++++++++++++---- flake.nix | 20 +- nix/runtime.nix | 4 +- src/Internal/QueryM/Ogmios.purs | 108 +- src/Internal/Serialization/MinFee.purs | 2 +- src/Internal/Service/Blockfrost.purs | 2 +- src/Internal/Types/Interval.purs | 5 +- src/Internal/Types/ProtocolParameters.purs | 2 +- .../GenerateFixtures/ProtocolParameters.purs | 43 + test/Blockfrost/ProtocolParameters.purs | 4 +- ...miosEvaluateTxFailScriptErrorsFixture.json | 65 +- ...EvaluateTxInvalidPointerFormatFixture.json | 15 +- .../OgmiosEvaluateTxValidRespFixture.json | 15 +- test/Ogmios/GenerateFixtures.purs | 3 +- test/Plutus/Time.purs | 22 +- test/ProtocolParams.purs | 2 +- test/Types/Interval.purs | 6 +- 32 files changed, 9378 insertions(+), 3120 deletions(-) rename fixtures/test/blockfrost/getProtocolParameters/{getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json => getProtocolParameters-3457670a74fb5f9895d5cce9b6826c85.json} (98%) delete mode 100644 fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-7fe834fd628aa322eedeb3d8c7c1dd61.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json create mode 100644 fixtures/test/ogmios/queryLedgerState-epoch-f91be14635fa026f2a990508f3379064.json create mode 100644 fixtures/test/ogmios/queryLedgerState-eraSummaries-8073a8f378e969384ec52010ec6c290c.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json create mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-f39db65d5d9dc11e511f061b37349173.json create mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-b83473f5b74f365f842c3ba6968d4e3e.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json delete mode 100644 fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json create mode 100644 fixtures/test/ogmios/queryNetwork-startTime-1a911197c5149cd582be4cbf5a651817.json create mode 100644 fixtures/test/ogmios/queryNetwork-tip-145d4ffd82a9c88c79bdb0f629aa3d3d.json delete mode 100644 fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json create mode 100644 test/Blockfrost/GenerateFixtures/ProtocolParameters.purs diff --git a/Makefile b/Makefile index c84457f7e..5b78bb779 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,12 @@ SHELL := bash .ONESHELL: -.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports spago-build create-bundle-entrypoint create-html-entrypoint delete-bundle-entrypoint +.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports build create-bundle-entrypoint create-html-entrypoint delete-bundle-entrypoint .SHELLFLAGS := -eu -o pipefail -c ps-sources := $(shell fd --no-ignore-parent -epurs) nix-sources := $(shell fd --no-ignore-parent -enix --exclude='spago*') js-sources := $(shell fd --no-ignore-parent -ejs -ecjs) +purs-args := "--stash --censor-lib --censor-codes=UserDefinedWarning,ImplicitImport,ImplicitQualifiedImport,ImplicitQualifiedImportReExport" ### Bundler setup @@ -21,8 +22,8 @@ preview-node-ipc = $(shell docker volume inspect store_node-preview-ipc | jq -r preprod-node-ipc = $(shell docker volume inspect store_node-preprod-ipc | jq -r '.[0].Mountpoint') serve-port := 4008 -spago-build: - @spago build +build: + @spago build --purs-args ${purs-args} create-bundle-entrypoint: @mkdir -p dist/ diff --git a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-3457670a74fb5f9895d5cce9b6826c85.json similarity index 98% rename from fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json rename to fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-3457670a74fb5f9895d5cce9b6826c85.json index d137e184a..07359fbce 100644 --- a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json +++ b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-3457670a74fb5f9895d5cce9b6826c85.json @@ -1 +1 @@ -{"epoch":374,"min_fee_a":44,"min_fee_b":155381,"max_block_size":90112,"max_tx_size":16384,"max_block_header_size":1100,"key_deposit":"2000000","pool_deposit":"500000000","e_max":18,"n_opt":500,"a0":0.3,"rho":0.003,"tau":0.2,"decentralisation_param":0,"extra_entropy":null,"protocol_major_ver":8,"protocol_minor_ver":0,"min_utxo":"4310","min_pool_cost":"170000000","nonce":"e35763cef0b1b30b21d7cf61e8572e016fe3b71c0619a80d1d4850643357d047","cost_models":{"PlutusV1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10},"PlutusV2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10}},"price_mem":0.0577,"price_step":0.0000721,"max_tx_ex_mem":"14000000","max_tx_ex_steps":"10000000000","max_block_ex_mem":"62000000","max_block_ex_steps":"20000000000","max_val_size":"5000","collateral_percent":150,"max_collateral_inputs":3,"coins_per_utxo_size":"4310","coins_per_utxo_word":"4310"} \ No newline at end of file +{"epoch":603,"min_fee_a":44,"min_fee_b":155381,"max_block_size":90112,"max_tx_size":16384,"max_block_header_size":1100,"key_deposit":"2000000","pool_deposit":"500000000","e_max":18,"n_opt":500,"a0":0.3,"rho":0.003,"tau":0.2,"decentralisation_param":0,"extra_entropy":null,"protocol_major_ver":8,"protocol_minor_ver":0,"min_utxo":"4310","min_pool_cost":"170000000","nonce":"774afa7884dd30c6bb76b8d4a5667c023c77631cb91de7de153a80bedb59b025","cost_models":{"PlutusV1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10},"PlutusV2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10}},"price_mem":0.0577,"price_step":0.0000721,"max_tx_ex_mem":"14000000","max_tx_ex_steps":"10000000000","max_block_ex_mem":"62000000","max_block_ex_steps":"20000000000","max_val_size":"5000","collateral_percent":150,"max_collateral_inputs":3,"coins_per_utxo_size":"4310","coins_per_utxo_word":"4310"} \ No newline at end of file diff --git a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-7fe834fd628aa322eedeb3d8c7c1dd61.json b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-7fe834fd628aa322eedeb3d8c7c1dd61.json deleted file mode 100644 index 0fed15880..000000000 --- a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-7fe834fd628aa322eedeb3d8c7c1dd61.json +++ /dev/null @@ -1 +0,0 @@ -{"epoch":71,"min_fee_a":44,"min_fee_b":155381,"max_block_size":90112,"max_tx_size":16384,"max_block_header_size":1100,"key_deposit":"2000000","pool_deposit":"500000000","e_max":18,"n_opt":500,"a0":0.3,"rho":0.003,"tau":0.2,"decentralisation_param":0,"extra_entropy":null,"protocol_major_ver":8,"protocol_minor_ver":0,"min_utxo":"4310","min_pool_cost":"340000000","nonce":"e3ba06ef0f6021007739589d435432517a86e4e22723ac11b92b12f817718c77","cost_models":{"PlutusV1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10},"PlutusV2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":9462713,"verifyEd25519Signature-cpu-arguments-slope":1021,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10}},"price_mem":0.0577,"price_step":0.0000721,"max_tx_ex_mem":"14000000","max_tx_ex_steps":"10000000000","max_block_ex_mem":"62000000","max_block_ex_steps":"40000000000","max_val_size":"5000","collateral_percent":150,"max_collateral_inputs":3,"coins_per_utxo_size":"4310","coins_per_utxo_word":"4310"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json b/fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json deleted file mode 100644 index 093568ebd..000000000 --- a/fixtures/test/ogmios/queryLedgerState-epoch-8d7a461f70d4d44d0d8cdd64c5fba15c.json +++ /dev/null @@ -1 +0,0 @@ -{"result":374,"method":"queryLedgerState/epoch","jsonrpc":"2.0","id":"queryLedgerState/epoch-3rvj1ml27d5loixoww7","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-epoch-f91be14635fa026f2a990508f3379064.json b/fixtures/test/ogmios/queryLedgerState-epoch-f91be14635fa026f2a990508f3379064.json new file mode 100644 index 000000000..5ef38782b --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-epoch-f91be14635fa026f2a990508f3379064.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/epoch","result":122,"id":"queryLedgerState/epoch-hfkg8z8vlxlxx1jb"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-8073a8f378e969384ec52010ec6c290c.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-8073a8f378e969384ec52010ec6c290c.json new file mode 100644 index 000000000..d222d802c --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-eraSummaries-8073a8f378e969384ec52010ec6c290c.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/eraSummaries","result":[{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"milliseconds":20000},"safeZone":864}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":0},"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":0},"slot":0,"epoch":0},"end":{"time":{"seconds":172800},"slot":172800,"epoch":2},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":172800},"slot":172800,"epoch":2},"end":{"time":{"seconds":28944000},"slot":28944000,"epoch":335},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}},{"start":{"time":{"seconds":28944000},"slot":28944000,"epoch":335},"end":{"time":{"seconds":31968000},"slot":31968000,"epoch":370},"parameters":{"epochLength":86400,"slotLength":{"milliseconds":1000},"safeZone":25920}}],"id":"queryLedgerState/eraSummaries-hfkgvfollxkiih0o"} diff --git a/fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json b/fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json deleted file mode 100644 index 6a2ce7478..000000000 --- a/fixtures/test/ogmios/queryLedgerState-eraSummaries-d8b19110b9580cddfa3895eea34c2139.json +++ /dev/null @@ -1 +0,0 @@ -{"result":[{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":4320,"slotLength":{"seconds":20},"safeZone":864}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":0,"slot":0,"epoch":0},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":0,"slot":0,"epoch":0},"end":{"time":259200,"slot":259200,"epoch":3},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}},{"start":{"time":259200,"slot":259200,"epoch":3},"end":{"time":32486400,"slot":32486400,"epoch":376},"parameters":{"epochLength":86400,"slotLength":{"seconds":1},"safeZone":25920}}],"method":"queryLedgerState/eraSummaries","jsonrpc":"2.0","id":"queryLedgerState/eraSummaries-3rvj1ml27d5loixoww8","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json deleted file mode 100644 index 154c4a496..000000000 --- a/fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json +++ /dev/null @@ -1 +0,0 @@ -{"result":{"minFeeCoefficient":44,"minFeeConstant":{"lovelace":155381},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"lovelace":2000000},"stakePoolDeposit":{"lovelace":500000000},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"lovelace":170000000},"minUtxoDepositConstant":0,"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,57996947,18975,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,57996947,18975,10,38887044,32947,10]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":20000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":8,"minor":0}},"method":"queryLedgerState/protocolParameters","jsonrpc":"2.0","id":"queryLedgerState/protocolParameters-3rvj1ml27d5loixoww9","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-f39db65d5d9dc11e511f061b37349173.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-f39db65d5d9dc11e511f061b37349173.json new file mode 100644 index 000000000..dba57f04f --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-protocolParameters-f39db65d5d9dc11e511f061b37349173.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/protocolParameters","result":{"minFeeCoefficient":44,"minFeeConstant":{"ada":{"lovelace":155381}},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"ada":{"lovelace":2000000}},"stakePoolDeposit":{"ada":{"lovelace":500000000}},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"ada":{"lovelace":170000000}},"minUtxoDepositConstant":{"ada":{"lovelace":0}},"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,57996947,18975,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,57996947,18975,10,38887044,32947,10]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":20000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":8,"minor":0}},"id":"queryLedgerState/protocolParameters-hfkg1hk4lxm0pfyy"} diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-b83473f5b74f365f842c3ba6968d4e3e.json b/fixtures/test/ogmios/queryLedgerState-stakePools-b83473f5b74f365f842c3ba6968d4e3e.json new file mode 100644 index 000000000..8a1e2286f --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-stakePools-b83473f5b74f365f842c3ba6968d4e3e.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/stakePools","result":{"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k":{"id":"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k","vrfVerificationKeyHash":"00e024fbc63daf0af69eebc5741e7ff183b890ef2628e9bfd4e2bc4d6d1b16b8","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"3/20","rewardAccount":"stake_test1uztsmrxurfw7v3gjz04n8m45kngf4fwhfzxez9wa24rmdxclut9y5","owners":["970d8cdc1a5de6451213eb33eeb4b4d09aa5d7488d9115dd5547b69b"],"relays":[{"type":"ipAddress","ipv4":"83.58.170.227","port":6000}],"metadata":{"url":"https://not.me","hash":"e3568b0190e59d344e0a9803d31ac9fe4ca11c5861b6e3b06527343adbdefae9"}},"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":345000000}},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"ada":{"lovelace":420000000}},"cost":{"ada":{"lovelace":420000000}},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"ada":{"lovelace":1111000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p90428kec03mjdya3k4gv5d20w7lmed7ca0snknef5j977l3y8l":{"id":"pool1p90428kec03mjdya3k4gv5d20w7lmed7ca0snknef5j977l3y8l","vrfVerificationKeyHash":"af790879fc1dc4a8c00147aebc13e95585d641b76986d9a449a1ba4652ba77ad","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/2","rewardAccount":"stake_test1uruf9dc3kf35aqnng5wz38kt03h9jk6y5gdszy69nppkylqdk8agr","owners":["f892b711b2634e8273451c289ecb7c6e595b44a21b0113459843627c"],"relays":[{"type":"hostname","hostname":"water.lbcrypt.com","port":9600}],"metadata":{"url":"https://www.lbcrypt.com/json/LBCPP.json","hash":"6074e009fcb59f6ef28337412168e1b5391b42e6cec8dc01f7291babf6d2771d"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"ada":{"lovelace":100000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"0b15c664cf2883a8d68140f852963f8c7f8adac538ddf1f6cfab60444465ee5e"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"ada":{"lovelace":250000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"da1d45782040dd4862a9f97ac9fa706ca14f8f2f2823a0e2a466932cf530da6e","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"hostname","hostname":"api.monrma.ml","port":6020}],"metadata":{"url":"https://api.monrma.ml/meta/JOSEP.json","hash":"6c133a6ba49006eee1fdd1525662d64de10f4a54566e715246525b3b386f0c02"}},"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0":{"id":"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0","vrfVerificationKeyHash":"e0c09cfd7e6b1766efe46f4297d5ada1a5f8b006c1ed72535e16c6fd2f384174","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/100","rewardAccount":"stake_test1uzzx65ylw8yrkeusmfwa6exesgpzlw74630cxusgq3jn9jqrgsrjc","owners":["846d509f71c83b6790da5ddd64d982022fbbd5d45f837208046532c8"],"relays":[{"type":"ipAddress","ipv4":"129.152.11.126","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/stefanosu-code/stpz/a/s2.j","hash":"0bf71440af0a351555045ae2a59e65c8661748a2781476f9bd560871afb2069f"}},"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3":{"id":"pool1z9nsz7wyyxc5r8zf8pf774p9gry09yxtrlqlg5tsnjndv5xupu3","vrfVerificationKeyHash":"b5971d1f29a9938574aa98cf5a8437a8245239644fe6dcaa8b22b92ed2b00e90","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/9a065d69-ef59-4aff-983d-e34.json","hash":"92bab22abc33ea5fa2be2f515639bec213e782b5f417b3cc0441fd115172d171"}},"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr":{"id":"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr","vrfVerificationKeyHash":"0e0c0f257842b44b19dda1a20d8e406401f7696725f1c00a5b2768a4c684a089","pledge":{"ada":{"lovelace":70000000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"3/25","rewardAccount":"stake_test1upxxj9un9j6xyaxkxnw0n2hajye3ux6qxn53ex7g4xwdh2cq3xsrd","owners":["4c6917932cb46274d634dcf9aafd91331e1b4034e91c9bc8a99cdbab"],"relays":[{"type":"hostname","hostname":"adarelay-t2-1.nanyka.com","port":1856}],"metadata":{"url":"https://nanyka.com/cardanospo/poolmeta_preview.json","hash":"a14630b7010397fc9bf309f59618b613698851bc1ac5772fd43717405b426bf5"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"ada":{"lovelace":100000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d":{"id":"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d","vrfVerificationKeyHash":"d6d05e32b4c2eb2e62cb5659d118061473360c2db23a213c377edb2ead2cf591","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1urty9s8ufz8kydh8wfz6k9cqsj4v2q2k5wdu8wtetvlz4fs7adk6p","owners":["d642c0fc488f6236e77245ab170084aac50156a39bc3b9795b3e2aa6"],"relays":[{"type":"hostname","hostname":"pool.sudosu.cyou","port":30443},{"type":"hostname","hostname":"pool.sudosu.cyou","port":30444}],"metadata":{"url":"https://ado-pool.web.app/poolMetadata.json","hash":"aeaaf5c46c1466f65ff731fc3cc82f006acfd0aaedb4d4f6ff665f04224a1bd1"}},"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge":{"id":"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge","vrfVerificationKeyHash":"83602a44cf3b951a3ef83a4d868852ccfa50cc841e93212b302a67c8d1cd9144","pledge":{"ada":{"lovelace":8000000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"1/10","rewardAccount":"stake_test1urt0mxys755epyacjdacm4e0wyyr7kd603tzxrqzstj7auc5l9456","owners":["d6fd9890f5299093b8937b8dd72f71083f59ba7c56230c0282e5eef3"],"relays":[{"type":"hostname","hostname":"129.213.55.211","port":6000}],"metadata":{"url":"https://cardano-blockhouse.de/preview/poolMetaData.json","hash":"5561fb2b9a8b234a4ae4aee30b87916d5b4dd8b028dcda21a70dfee465d3de8f"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"ada":{"lovelace":400000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"8bcb8efe6973b8b6bd0918cd356735ff3ce0ca41276fac6fb4b50b900fbcebce"}},"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7":{"id":"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7","vrfVerificationKeyHash":"e84a8a24359b57aec037671ec8597f73ca6d231f06174e7b58c1536ad0f28c9e","pledge":{"ada":{"lovelace":1000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1000","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"ada":{"lovelace":1000000}},"cost":{"ada":{"lovelace":1130000000}},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"ada":{"lovelace":65000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"ada":{"lovelace":1659000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce":{"id":"pool18r62tz408lkgfu6pq5svwzkh2vslkeg6mf72qf3h8njgvzhx9ce","vrfVerificationKeyHash":"a1b272e77f8d5cebc04ba482dacba825e8f7f59251d95746e8ff23864e0c89ee","pledge":{"ada":{"lovelace":100000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["788cf0519348fefaf3c721c5f5bd60b195b444fa0d8fb4512dc259be"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"ada":{"lovelace":210000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"ada":{"lovelace":9400000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"ada":{"lovelace":10000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku":{"id":"pool1grvqd4eu354qervmr62uew0nsrjqedx5kglldeqr4c29vv59rku","vrfVerificationKeyHash":"5ad90f4be69faac1c7e216cd50631240db41842b5a43f2ce344670fa7219a6c6","pledge":{"ada":{"lovelace":100000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["f631370cc87882bf5e14ab72534caf2655d0a2a50a9a8a3820bb6f4a"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"4173aad927f4be2a67adf068fcb45871ecac8614864d7af2e079502109e81644","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04":{"id":"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04","vrfVerificationKeyHash":"4b4e8c37e61a53313028a84eef9bcd1d0ddc77c5da6570be8d23ab77e0088318","pledge":{"ada":{"lovelace":100}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/10","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"ada":{"lovelace":1104000000}},"cost":{"ada":{"lovelace":411000000}},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an":{"id":"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an","vrfVerificationKeyHash":"838ca6096cff572b788d840445bf2167345f3d87485133ebcbfc729af016ee14","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzulxfzccykl6xl659glxnfrvkr9jr3dled8g50m4gfe2lg6a5wde","owners":["b9f32458c12dfd1bfaa151f34d236586590e2dfe5a7451fbaa13957d","fcdeb3cb17a93f01b50d1265438fdd18de6b8d6066aebaa8e40d48ea"],"relays":[{"type":"ipAddress","ipv4":"162.55.3.29","port":3003}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"cd1585d8931ff5f3b9397ee7e1b7fe4747209c5cd1a3afbd22600b167eef0b0c"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"ada":{"lovelace":1000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e":{"id":"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e","vrfVerificationKeyHash":"957d1696507a9f88c641db39cc2e34274456efeee9538a2bb4f332f44fb1d25c","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uq9yp8wqvgpnucpe6s6yavnrvqnuykadx8y40sv0c5ur93gapzeka","owners":["0a409dc062033e6039d4344eb2636027c25bad31c957c18fc53832c5"],"relays":[{"type":"hostname","hostname":"mithril-signer-3.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2qvmy5xy","hash":"adaff9f5327ad0a3b9a47ba88a14100235915c80da2806f9bf8d271dbc0a6e13"}},"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43":{"id":"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43","vrfVerificationKeyHash":"dd6686e356e2bec35ee51b17356d801e69917e3b472e2e59d3371e48207fd990","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1urp9rkuj73fqcuc47u3r92huffdmfgnxszkk8nl3dpdmwvqjwpjgz","owners":["c251db92f4520c7315f72232aafc4a5bb4a26680ad63cff1685bb730"],"relays":[{"type":"hostname","hostname":"sator89.ddns.net","port":25369}],"metadata":{"url":"https://capitalstakepool.info/CSP.json","hash":"04028c72c74f04d605fc0d1a04c99357c8563bcf5cc408a6b6e8c7e72176c9d9"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"ada":{"lovelace":250000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201},{"type":"hostname","hostname":"tn-preview2.psilobyte.io","port":4202}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"ada":{"lovelace":30000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"153.127.67.171","port":3001},{"type":"hostname","hostname":"3rd.vps.deroris.net","port":3001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"ada":{"lovelace":9147456725}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa":{"id":"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa","vrfVerificationKeyHash":"9f6e5d16ea05c1905907e8aee60b426c7680c32870c2ebe0be50281d889d5cf0","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uzkxke5d0tjj0utd8tf2v75vytt6wjkx0tp4lr0885slcnqtq2ryf","owners":["ac6b668d7ae527f16d3ad2a67a8c22d7a74ac67ac35f8de73d21fc4c"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.testing-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/263p356z","hash":"276f035319f342a84f7e8abf8ec0befde2434bcb29f20f41afd09132fb083fd1"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"hostname","hostname":"api.monrma.ml","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"ada":{"lovelace":1000000}},"cost":{"ada":{"lovelace":429000000}},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":10000000000}},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"ipAddress","ipv4":"185.164.6.221","port":54326}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5":{"id":"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5","vrfVerificationKeyHash":"6ee546ad0102c3576526fc600b4ab806d5ae3f2cd037110d4cd2505c31c05a18","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"9/500","rewardAccount":"stake_test1uzu2wh3mwjg0pua454hskmehvvte4ut9nn22tqxzuycdclq5kuf7g","owners":["b8a75e3b7490f0f3b5a56f0b6f3763179af1659cd4a580c2e130dc7c"],"relays":[{"type":"ipAddress","ipv4":"139.180.205.134","port":6000}],"metadata":{"url":"https://stakinghouse.com/poolMetaData.json","hash":"021ca91a9f24147bd20c4b7f9a4a1a329998e5fa2ac2a362b40850749ff54b1d"}},"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj":{"id":"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj","vrfVerificationKeyHash":"8a9f2e79f70743bdc43b20da993c90b9512849f939fb5b6c3bdad80b5ff3261e","pledge":{"ada":{"lovelace":25000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uqj0hyhn72p495gntxzt4g9au76ycpcvku693mpexqxdk5s7cwqed","owners":["24fb92f3f28352d1135984baa0bde7b44c070cb73458ec39300cdb52"],"relays":[{"type":"hostname","hostname":"preview.relay.beerpool.io","port":6000}],"metadata":{"url":"https://beerpool.io/poolmeta.json","hash":"3f2d006aa149ac16689d6dd5d0dbbe46d87b41d4b8a282e7621996b6a64cd819"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"ada":{"lovelace":8000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"ada":{"lovelace":50000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l":{"id":"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l","vrfVerificationKeyHash":"1cbfd07a6145d0d2859c4d114f7e71cb5b9fc7e29cbfa37a393db2637241ce92","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":400000000}},"margin":"0/1","rewardAccount":"stake_test1uqza4tpx4698h0w793fjhtnqh4amhyfcftyx78h54q2wh0qgq074z","owners":["05daac26ae8a7bbdde2c532bae60bd7bbb91384ac86f1ef4a814ebbc"],"relays":[{"type":"hostname","hostname":"relay1.dynip.org","port":28000}],"metadata":{"url":"http://panyvino.com","hash":"9ac046260b09e2befc7addb05b469f90279338821285da90f5cc6e8cb4c5ab15"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"ipAddress","ipv4":"144.217.73.208","port":8000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ab249c551e01ea72a5483a45c9f31b2b60bd30c15c865fedf03332ede23439fc"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"ada":{"lovelace":15000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"hostname","hostname":"cardano-preview-relay-1.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-2.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-3.syn.pizza","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"7fdeea9ed970f2e5eb06a7a8c272c84ce2ca2f6a48ab5912b75f25346a0acbf6"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"ada":{"lovelace":1112000000}},"cost":{"ada":{"lovelace":413000000}},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp":{"id":"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp","vrfVerificationKeyHash":"9792680b674d04b392cb637a223d327d7af568ef358080cea4d2e10790040f08","pledge":{"ada":{"lovelace":14000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uq9f3jgmfywhgcmhtd0mv7m3qwp22ah08sd3x8s4ljylpxghkf2yx","owners":["0a98c91b491d7463775b5fb67b710382a576ef3c1b131e15fc89f099"],"relays":[{"type":"hostname","hostname":"preview.blockchainbill.lol","port":3003}],"metadata":{"url":"https://preview.blockchainbill.lol/SNSOB.metadata.json","hash":"4792d9a653baab097047724e97896697c4d1f04accd9e9d126f1786102f1e2d4"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj":{"id":"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj","vrfVerificationKeyHash":"3b18c66658a5d9dd1a2bd876f1e0b076451641c41017017ccc6b448bcf38c529","pledge":{"ada":{"lovelace":70000000000}},"cost":{"ada":{"lovelace":4321000000}},"margin":"1/25","rewardAccount":"stake_test1uqz0vs8vnxqpdcuey0qcvufn95gydj6x5g37wgy975wlfwgdhyuk4","owners":["04f640ec998016e39923c18671332d1046cb46a223e72085f51df4b9"],"relays":[{"type":"ipAddress","ipv4":"184.73.135.122","port":3002}],"metadata":{"url":"bit.ly/3Eh3p7A","hash":"9b9d00fcec79d306e3dffcc6865d4088f35b13c268e32c7a2fabb1845947f9c7"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"ada":{"lovelace":500000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"ada":{"lovelace":2000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"ada":{"lovelace":3000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001},{"type":"hostname","hostname":"testnet-relay2.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14gzp9699juxeku56qc5dsk00vv9kngrz4art5v04fh77wmd37hq":{"id":"pool14gzp9699juxeku56qc5dsk00vv9kngrz4art5v04fh77wmd37hq","vrfVerificationKeyHash":"bb0670c4efe93e9bafc85323da00fef702997d64a0894b6398d8fb72d97eb7c1","pledge":{"ada":{"lovelace":678000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1up6ckzx75pw6h5wdx5gx384anmak5jf3dt9npm4dw58za8sxw5223","owners":["758b08dea05dabd1cd3510689ebd9efb6a49316acb30eead750e2e9e"],"relays":[{"type":"hostname","hostname":"test.everestada.com","port":7002}],"metadata":{"url":"https://raw.githubusercontent.com/everestada/esp/main/Meta.json","hash":"fe93bf08749b0aabb73d7a22c4af69ae15e89a52105df2ebd9a28b03a89a2353"}},"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3":{"id":"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3","vrfVerificationKeyHash":"896bac573601caf048566f3562e99be9c742832ad7e4527b5b1cdc330e9384c1","pledge":{"ada":{"lovelace":20000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uqr9uznkqeuv6e7ez79yf8us678xus3y6ac0su9d253r0eg5l4clt","owners":["065e0a760678cd67d9178a449f90d78e6e4224d770f870ad552237e5"],"relays":[{"type":"ipAddress","ipv4":"81.169.140.47","port":6000}],"metadata":{"url":"https://hamster-stake-pool.de/preview_poolmeta.json","hash":"81813b6eb7904fb8533aa51f9aebc16f14e6ade80576078b83a8b307ace6b987"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"ada":{"lovelace":50000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1uruen30w3mydukztulc8z5xqp2zpezctum9x4j6kctp3csclazf3y","owners":["f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth":{"id":"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth","vrfVerificationKeyHash":"3a238800d748179b955445d9c2488125785f1e271e8d43449e292d5a7c4b7b71","pledge":{"ada":{"lovelace":100}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/2","rewardAccount":"stake_test1upxs40dqlfrh4gkd7djhwr5qlq225c3etv66f8m0mgsahxgk45c6j","owners":["4d0abda0fa477aa2cdf365770e80f814aa62395b35a49f6fda21db99"],"relays":[{"type":"ipAddress","ipv4":"212.24.98.109","port":5002}],"metadata":{"url":"https://adawallet.io/public_files/MDS_ST_meta_v2.json","hash":"ef3aca5a37d0bc4d81c4f85da513e3565be372e9bc3ecdf6fe5cb1a5bb55bff2"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"ada":{"lovelace":6000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea":{"id":"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea","vrfVerificationKeyHash":"b4ea03eb58cbfa9059e0b8478f09762f002e4cebc9aae7bf6de04b9ccebb9d94","pledge":{"ada":{"lovelace":100000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uzx366cdgqv9lg69y7ufw59af3y7yh9jxflnym8z8qz3pfgmef2r8","owners":["8d1d6b0d40185fa34527b89750bd4c49e25cb2327f326ce2380510a5"],"relays":[{"type":"hostname","hostname":"preview.adanorthpool.com","port":9613}],"metadata":{"url":"https://www.adanorthpool.com/ANPPREVIEW.metadata.json","hash":"e4f9a2cf26e72b93955893bbcae4a37c27c061b04ab2a8d79856350e6dc3fb26"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"ada":{"lovelace":45000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"159.138.55.134","port":3001},{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"ada":{"lovelace":8000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"ada":{"lovelace":1000000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"edc82ecfb1cabeb15cb122bd6a65b6de6006e2201617e3c8dfdf8cc652baacfe"}},"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk":{"id":"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk","vrfVerificationKeyHash":"f727fdc0e656c1faea14c812b9cf7648795f5b606f6428f6e8dd68d0f729514d","pledge":{"ada":{"lovelace":4000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/200","rewardAccount":"stake_test1uzpp6e09x70k4wu4ccwujgwfdjwluf4nzyekkaa2l0dlgjq07ax2w","owners":["821d65e5379f6abb95c61dc921c96c9dfe26b311336b77aafbdbf448"],"relays":[{"type":"ipAddress","ipv4":"51.255.82.47","port":6000}],"metadata":{"url":"http://config.ada-staking.fr/metadatas_preview.json","hash":"86fd4e3118fe835008a699f339ec111ac35682de1d449b15255544b1570b601f"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"ada":{"lovelace":9000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6":{"id":"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6","vrfVerificationKeyHash":"30ff40541e2c155acfcdfa844069e705dee1ae8eef9bdcde22de465de6fa8fdd","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1up3pxcv3etz7d8h5e6csly3yggnmnwrgqrvhhjsqak7828ck4ytys","owners":["62136191cac5e69ef4ceb10f92244227b9b86800d97bca00edbc751f"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"ada":{"lovelace":19000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"ada":{"lovelace":9369000000}},"cost":{"ada":{"lovelace":369000000}},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d":{"id":"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d","vrfVerificationKeyHash":"968a613baf8ec8e434b663e0a1fdf1c710a7b760a67dfb15e8ede88b818236e9","pledge":{"ada":{"lovelace":5000000000}},"cost":{"ada":{"lovelace":4321000000}},"margin":"1/25","rewardAccount":"stake_test1uppyxzrrhyfh5ja2tgfm87u8h36xgr3a6d6p2ljztpfew8snugder","owners":["42430863b9137a4baa5a13b3fb87bc74640e3dd374157e425853971e"],"relays":[{"type":"ipAddress","ipv4":"123.121.123.121","port":3000}],"metadata":{"url":"https://git.io/JJWdJ","hash":"c5c38833176e2d575bd8693e206e3af2e1088e556def86cae9f6c2fc45579f36"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932":{"id":"pool16h8ugt8k0a4kxa5g6x062zjrgfjc7cehpw0ze8374axlul76932","vrfVerificationKeyHash":"4331f2905796fd9a028c17896ce5305dc1daf710ad448a3872df75722f2cc41d","pledge":{"ada":{"lovelace":100000000000000}},"cost":{"ada":{"lovelace":500000000}},"margin":"1/1","rewardAccount":"stake_test1uzuklnhnhy634a5rf0v9pcaf0pva002mw2wjf0ekg6h2encat3ykr","owners":["ba149e2e2379097e65f0c03f2733d3103151e7f100d36dfdb01a0b22"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org","port":30002}]},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"ada":{"lovelace":4567000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"117/5000","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1uqthfy3jsrd82q067vu8ml8g0w3xr20qp8kv7z0yzrdhqrawkm2":{"id":"pool1uqthfy3jsrd82q067vu8ml8g0w3xr20qp8kv7z0yzrdhqrawkm2","vrfVerificationKeyHash":"7104302efc01232ce74b1c5c5fd8519e0ac84f07a62d0deb7fb8ebd05454b5ea","pledge":{"ada":{"lovelace":9400000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1upltzjkedla8ukdnj3k58xwy3pgjqwckmnx5s4a07lr0gds7yvh0x","owners":["7eb14ad96ffa7e59b3946d4399c48851203b16dccd4857aff7c6f436"],"relays":[{"type":"ipAddress","ipv4":"14.201.4.90","port":6006},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"139.218.11.14","port":6005}],"metadata":{"url":"https://dpadapools.com/preview3meta.json","hash":"e075ccee5c7172d62b0da89fbe1ee02a2569de5ceb438a6dd22be079c63670c5"}},"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0":{"id":"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0","vrfVerificationKeyHash":"ae3c85580444e5a30cfad07b6a70e004c1875faf87851a06ce756e5ed42ee8f4","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uzds77htp7kk5txdk5e2zntrejgmv5gum445n26ygawv40ghak4zs","owners":["9b0f7aeb0fad6a2ccdb532a14d63cc91b6511cdd6b49ab44475ccabd"],"relays":[{"type":"hostname","hostname":"sp.altzpool.com","port":5001}],"metadata":{"url":"https://altzpool.com/WALTZ/poolmeta.json","hash":"5c8ab40789c4fdc8aeb4684deda3c85aa0202078e0f2d575977f76351da9e771"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"ada":{"lovelace":35000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"ada":{"lovelace":100000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool178q9xf62yr0rkkgrx6lxwk7h0md4ms3jamc8j206q0r5xr3qc8l":{"id":"pool178q9xf62yr0rkkgrx6lxwk7h0md4ms3jamc8j206q0r5xr3qc8l","vrfVerificationKeyHash":"fabe3a1aa31e714e62d4b77cfabe22759ec854565a827e1161cd162edfee9427","pledge":{"ada":{"lovelace":100000000}},"cost":{"ada":{"lovelace":345000000}},"margin":"3/20","rewardAccount":"stake_test1urkd8fd78n9ce886q20wnqjf8dg3v3g5xszhv5hptpvkj5cq3h6fk","owners":["ecd3a5be3ccb8c9cfa029ee982493b5116451434057652e158596953"],"relays":[{"type":"ipAddress","ipv4":"62.11.3.72","port":6000}],"metadata":{"url":"https://tinyurl.com/4by9x85x","hash":"2efe7280d7aca9cc51ab6b810482ecb59b89c7bfdf2215ad6f7c81483d78482c"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"b2cbd9af0915b7f4b170a3dda7487f763e2ff31b9b960511a1a7d754c2d5714e"}},"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r":{"id":"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r","vrfVerificationKeyHash":"392d334b0670323093e6cf60edf36961e4005de35b2c86f01e41ce2f7428837a","pledge":{"ada":{"lovelace":1000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1urmklja3h07ndxxrg6eu950x9glzws3gcu7wpphz2cdgujql0rxpn","owners":["10d1fd3cc499c8651bc9344fabe05739fa3e5777145eb638d39dc449"],"relays":[{"type":"ipAddress","ipv4":"210.54.38.228","port":4020}],"metadata":{"url":"https://bit.ly/3vlDN4w","hash":"ff6cdb1fba6074de46d95e0f878d9683d2ce2cf3acb57e6a4fdb9d97af8fe739"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"ada":{"lovelace":0}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1ltyxtkh37lfuh73ayulf8jdd742kmrqvx8rvt44r65c7q96xh08":{"id":"pool1ltyxtkh37lfuh73ayulf8jdd742kmrqvx8rvt44r65c7q96xh08","vrfVerificationKeyHash":"4a30b9817ba1af57e8a179ab619d8f49d50b7db1016af16741001dcb730b027d","pledge":{"ada":{"lovelace":9400000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"99/100","rewardAccount":"stake_test1uqr86uc2k2kh7rmveddyjyx4q3nwskc8str3k3y3j3est8qd0hz3t","owners":["067d730ab2ad7f0f6ccb5a4910d50466e85b0782c71b44919473059c"],"relays":[{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006},{"type":"ipAddress","ipv4":"139.218.11.14","port":6005}],"metadata":{"url":"https://dpadapools.com/preview2meta.json","hash":"63cfd40cdf080705301829a840accb793d0ad8fa8c42863fcd372b91ae3e1d80"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"ada":{"lovelace":127813888409}},"cost":{"ada":{"lovelace":340000000}},"margin":"1/20","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"ada":{"lovelace":9000000000}},"cost":{"ada":{"lovelace":340000000}},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}}},"id":"queryLedgerState/stakePools-hfkg8z8vlxlxx1je"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json b/fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json deleted file mode 100644 index 0fd254181..000000000 --- a/fixtures/test/ogmios/queryLedgerState-stakePools-e449fe6e00b4f704f6b9b28c7d42047e.json +++ /dev/null @@ -1 +0,0 @@ -{"result":{"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36":{"id":"pool1qzamfq0qzpggch2rk9daqq8skky7rhvs5g38lchnhw67sve4d36","vrfVerificationKeyHash":"5746d095a8a960de6ebb1fed6acac883a194645b523d5006692a3ba1481ea70e","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqrty8jrgjn4cywwzds025d64fz39ke2pkjk5rt5nqyrr9gxljplf","owners":["06b21e4344a75c11ce1360f551baaa4512db2a0da56a0d7498083195"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO5","hash":"9ee2d16fe3a94f0e9ac1fda5b5259ae73612d43ed274504b549e849e863eb992"}},"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9":{"id":"pool1qrjk9dqdaydy207lw4hf3zlxxg2qlxvxp9kvxx9fscccgwmgfv9","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k":{"id":"pool1q95luz38nhsw6h7mxud8tptc6mxvnsczhanw4j5htk8h2ltlf3k","vrfVerificationKeyHash":"00e024fbc63daf0af69eebc5741e7ff183b890ef2628e9bfd4e2bc4d6d1b16b8","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uztsmrxurfw7v3gjz04n8m45kngf4fwhfzxez9wa24rmdxclut9y5","owners":["970d8cdc1a5de6451213eb33eeb4b4d09aa5d7488d9115dd5547b69b"],"relays":[{"type":"ipAddress","ipv4":"83.58.170.227","port":6000}],"metadata":{"url":"https://not.me","hash":"e3568b0190e59d344e0a9803d31ac9fe4ca11c5861b6e3b06527343adbdefae9"}},"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng":{"id":"pool1qxcz3zxnye8g9ejsqslhl0ljevdx895uc80lr89ulf92gcv40ng","vrfVerificationKeyHash":"e8e9921e6e7428b4a53da8874a843f7cf3ad868cea778f0490dee728273644a5","pledge":{"lovelace":9900000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1uqm7ecwn9mydtgpnqwcssnc9cq8nsneshs0q9zchq7zrz7gfzcshd","owners":["37ece1d32ec8d5a03303b1084f05c00f384f30bc1e028b1707843179"],"relays":[{"type":"hostname","hostname":"pn1.powerfulpools.com","port":6030}],"metadata":{"url":"https://powerfulpools.com/previewpool1.json","hash":"782694a7c6c9e679f3370bb5aecae8a8988e4c4e37647b2177be59bd0f704ca7"}},"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d":{"id":"pool1qncwwllw9nwtu7sl7zqw3fpyh4t3q6nhludryfwv0jyqjygd46d","vrfVerificationKeyHash":"9b960c725b707c79a4aade62a362be9f35b5b0d7615b8bdd3bfd72a77b0a32a4","pledge":{"lovelace":0},"cost":{"lovelace":345000000},"margin":"1/20","rewardAccount":"stake_test1ur4n0pv3cagnah7atw58qr8an8vm8f75tq5u2q9h925nwasuxt25m","owners":["eb378591c7513edfdd5ba8700cfd99d9b3a7d45829c500b72aa93776"],"relays":[{"type":"hostname","hostname":"beadapool.ddns.net","port":6001}],"metadata":{"url":"https://beadapool.com/media/poolMetaDatapreview.json","hash":"c760f6e23539c052bff72bbc0d921a0663a0fea445b401871d5f65eb3debfc55"}},"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e":{"id":"pool1q65ag8panwayzaqfs6je7jz2ywt8x2032yaunq5hf25t7t8c26e","vrfVerificationKeyHash":"240b5246bc511fa4d7873d91a627aae4e74a60ecfd1165309774a0a7b1dab952","pledge":{"lovelace":42000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzhzr9qzlcr98rhuek3t623e008rye68grawtx6gc5v7g7q2j5u2z","owners":["ae219402fe06538efccda2bd2a397bce32674740fae59b48c519e478"],"relays":[{"type":"hostname","hostname":"test.smaug.pool.pm","port":3003}],"metadata":{"url":"https://smaug.pool.pm/meta-testnet-6adaf6af.json","hash":"6adaf6af9346cc941c916534118b48bdc0e0d560164333d7ab79b113421f2b3b"}},"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7":{"id":"pool1qal80uhlj949mgv0ecvdkmgqjdn5q27wmpaj4crnr5e9v6qmsv7","vrfVerificationKeyHash":"d498ef12879315f2b3b9bf3d944a42ae4062203db8ebc78236d63f3697f1804c","pledge":{"lovelace":420000000},"cost":{"lovelace":420000000},"margin":"69/1000","rewardAccount":"stake_test1uzpafaxd4q5p7adccdefpnv69dkwlpm7dpkpm3yefxzeluc4z24ec","owners":["83d4f4cda8281f75b8c37290cd9a2b6cef877e686c1dc49949859ff3"],"relays":[{"type":"hostname","hostname":"preview.world.bbhmm.net","port":6200}],"metadata":{"url":"https://pool.bbhmm.net/poolmeta-preview.json","hash":"885cbb02d004f75fad5716c878a6074a9c1bd62b3003d1896b1d27831d67239a"}},"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m":{"id":"pool1p9xu88dzmpp5l8wmjd6f5xfs9z89mky6up86ty2wz4aavmm8f3m","vrfVerificationKeyHash":"2dd02fc85a8ded714d3d56a684f85d741cef553756d760c8c4d5ae325ab6a1a1","pledge":{"lovelace":1111000000},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uzsf4dc8l9r2uxgwk7vpladqf09vvduw43z6cd0p96ru0gcpg49cx","owners":["a09ab707f946ae190eb7981ff5a04bcac6378eac45ac35e12e87c7a3"],"relays":[{"type":"hostname","hostname":"relay-m.fluxpool.cc","port":5001}],"metadata":{"url":"https://cylonyx.github.io/testnet.json","hash":"99e451a46f89b17502196457698bde37d604fe74ef19a8c0cb8518da72b1ecf1"}},"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a":{"id":"pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a","vrfVerificationKeyHash":"e67d6ccc4b3b0ca3e61ad09ccf2094b4fbf4eee929e8995c52fa0f32a43a707c","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upn7ehn9g6e9cqp7jcmuv5a79avzxavxe6g6fmfwttsm6lqa9kp7c","owners":["67ecde6546b25c003e9637c653be2f58237586ce91a4ed2e5ae1bd7c"],"relays":[{"type":"hostname","hostname":"firewall.adamantium.online","port":3000}],"metadata":{"url":"https://testforge.adamantium.online/otg-preview.metadata.json","hash":"5f9824434e7fc57a08ab0fe9d7f09ed59f2601ec138af8be0a3c89305aa2dc9c"}},"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5":{"id":"pool1pf95k36qu4u4c6psd8qwclnzj9cqmxd32q0305dz4fcxg3wyuu5","vrfVerificationKeyHash":"666efbd46910b4a0472219a7e9a198c5b07437329a47a89a9d85ca3b6da806f4","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqedemevyevg5esgdpdpc9awlepc49nhqln75clf5n4n6tsxqzcvz","owners":["32dcef2c26588a6608685a1c17aefe438a967707e7ea63e9a4eb3d2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/CD1","hash":"167b65b63ca316b3d6968ccd60ab59ef18202b7218dd2447170218d0f3c40b77"}},"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t":{"id":"pool1pt39c4va0aljcgn4jqru0jhtws9q5wj8u0xnajtkgk9g7lxlk2t","vrfVerificationKeyHash":"d9f1792aeb20bf814c367e6b3dd5e2c3f4c7f91f45247da2d0de451a2a2c1f85","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzftx5dwygs4k88svkh4gp6hz4l628ydvskx5yzff55wlmskas3cr","owners":["92b351ae22215b1cf065af540757157fa51c8d642c6a10494d28efee"],"relays":[{"type":"hostname","hostname":"preview.bladepool.com","port":3001}],"metadata":{"url":"https://public.bladepool.com/metadata.json","hash":"2738e2233800ab7f82bd2212a9a55f52d4851f9147f161684c63e6655bedb562"}},"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej":{"id":"pool1pw345epmct6cuummleuu5hc7qq2h96zawvf0e9062uw7gnjz9ej","vrfVerificationKeyHash":"420f04838a553e3e959b9b402e36bdd8123888b5f22126491294238150ba385a","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1urmpvvedk8cjnzxp0g89u87ghenhdkyrwn7vl2qg9aly99cp6ypdy","owners":["f616332db1f12988c17a0e5e1fc8be6776d88374fccfa8082f7e4297"],"relays":[{"type":"ipAddress","ipv4":"73.70.8.87","port":6000}],"metadata":{"url":"https://tinyurl.com/yy69a8eh","hash":"52977d65de765d1ec235c59676d4fea81046dc6ef561ab2790d4c359d8611b1d"}},"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf":{"id":"pool1pn9sffcqqzkx70m0gujks4h3wf8p4y706t2f0cjcyreekg83wtf","vrfVerificationKeyHash":"3cfeffec7d5b5dbbc4f0494271fad41952fdb82937189fb3f2581d9de3fad81b","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up8dnh6ywzs96upw6ycmeafzmkvrv096njjkphgqzuts0wgnxsaqg","owners":["4ed9df4470a05d702ed131bcf522dd98363cba9ca560dd00171707b9"],"relays":[{"type":"hostname","hostname":"preview-r1.panl.org","port":3015}],"metadata":{"url":"https://preview-metadata.panl.org","hash":"a2d8a47fc4d3a6e707487b65b3ab790e6fff71c2afd72f0fe17bc5e523024019"}},"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk":{"id":"pool1p4kh4yt0vwh6yexf9ae36qfwnch7vqa7l77akh94pv4u6rq7tuk","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"http://gmbh.roastfrog.com","hash":"62ba8350ad0da97a45cb5cf4940204c702bb5a89c81dff3eab95e35a9657b775"}},"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr":{"id":"pool1phj3kpraf3vgn0zzlugpts8k6eps8d3fgp9ddceu4s43cq00nzr","vrfVerificationKeyHash":"d4d04f919daf4e89a556f5555a2a68ba89ccf03f022ee77954b1bf1c37a7c8ff","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up046thgsc2fg0wcwfzvmpmy6r6c0psanu9wyxg8vcknt9sumrgc7","owners":["5f5d2ee88614943dd87244cd8764d0f587861d9f0ae21907662d3596"],"relays":[{"type":"hostname","hostname":"https://aggregator.dev-preview.api.mithril.network/"}],"metadata":{"url":"https://mithril.network/tbd.json","hash":"5e96bfc37d05582545c91727d73e11a26fa0ebcd4e482a9714d02ab96e83ed19"}},"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92":{"id":"pool1perfzsuh2l59jd5jzqs0a2774uqmelymuflw9nm3q4lmslpmk92","vrfVerificationKeyHash":"2661c5f0a335170cc2342c8dc322c5b47f8e2611df6bcc4d5192adb79cc20257","pledge":{"lovelace":500000000},"cost":{"lovelace":500000000},"margin":"1/20","rewardAccount":"stake_test1uruhhewtul8tkg88vdp4l84ds5t5j4s8tlrdjafr4crh7xckcrc2x","owners":["f97be5cbe7cebb20e763435f9ead85174956075fc6d97523ae077f1b"],"relays":[{"type":"ipAddress","ipv4":"3.72.231.105","port":30002}],"metadata":{"url":"https://cardanofiles.blob.core.windows.net/test/poolMdata.json","hash":"3b29e608eed25bb13c9d0950599634ed6d4f498ec4a748322dff5e5cca5deddb"}},"pool1p79majfcn554nkl88auu5njmprfsx9jdkv29rtltkn44y2h04qy":{"id":"pool1p79majfcn554nkl88auu5njmprfsx9jdkv29rtltkn44y2h04qy","vrfVerificationKeyHash":"b6168f2e63d95d18756328cf2ea0f869c7f227e50e13f55228cf3854dea16475","pledge":{"lovelace":2000000000000},"cost":{"lovelace":170000000},"margin":"99/100","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/c856b8c5-0f0a-42db-8a78-59a.json","hash":"8de3639f2d956664dd0d58903461853572e01355895cbc5932e42e22b0c1b960"}},"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9":{"id":"pool1p73yrd7vzwkkjd2rff4g683smhlm3jkg45f2hwm79cke6uxxwq9","vrfVerificationKeyHash":"92a482dd75c257122c3eb24de9b2f3b029319aa4e1ca0ac1125f62a912ce8c9d","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urnuwkjxcf0erfm53fx9tnkvs6ye0shcwk3lt0wzzy500tcu0xf8f","owners":["e7c75a46c25f91a7748a4c55cecc868997c2f875a3f5bdc21128f7af"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:feb6:d700","port":6000}],"metadata":{"url":"https://api.monrma.fr/meta/JOSEP.json","hash":"6c133a6ba49006eee1fdd1525662d64de10f4a54566e715246525b3b386f0c02"}},"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6":{"id":"pool1zpsskvu5q00lpezkj53xm7a5y9wv0jqt5j0xsvn42jdx2gajwr6","vrfVerificationKeyHash":"7827b526f0599b169c664b0dd8733a38a702d6d9e868e689cd8404e110a96dcb","pledge":{"lovelace":10000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1url5r2tsk5j9sd49exdale4da6vd2ucn44hcqeygqcfdyyc84hjr3","owners":["ff41a970b5245836a5c99bdfe6adee98d57313ad6f8064880612d213"],"relays":[{"type":"ipAddress","ipv4":"90.251.253.249","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/OYSTERPOOL/GIT/main/prev.json","hash":"cd19e8c622a0c35e0384caeeced99552fe989a6ee8bd98018b8236328663132d"}},"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0":{"id":"pool1zyvx690fps6a9m3m89q6fwcfgd8jyupzgv8wrfpvd0fm5cyzxd0","vrfVerificationKeyHash":"e0c09cfd7e6b1766efe46f4297d5ada1a5f8b006c1ed72535e16c6fd2f384174","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzzx65ylw8yrkeusmfwa6exesgpzlw74630cxusgq3jn9jqrgsrjc","owners":["846d509f71c83b6790da5ddd64d982022fbbd5d45f837208046532c8"],"relays":[{"type":"ipAddress","ipv4":"129.152.11.126","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/stefanosu-code/stpz/a/s2.j","hash":"0bf71440af0a351555045ae2a59e65c8661748a2781476f9bd560871afb2069f"}},"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f":{"id":"pool1z2dpsu58adkxtet672s6c46szylvcxs7vk9evq6clj49jcm6s4f","vrfVerificationKeyHash":"cf027ebfbfec5c3f964b05341519180003e2ed092829a402f775efec666d78e1","pledge":{"lovelace":0},"cost":{"lovelace":456789123000000},"margin":"1/10000000","rewardAccount":"stake_test1uzcyml6eacaevjnana8a5pxe3m6rmcateqepztxr0g6azwq30tk38","owners":["b04dff59ee3b964a7d9f4fda04d98ef43de3abc832112cc37a35d138"],"relays":[{"type":"ipAddress","ipv4":"5.161.75.212","port":5003},{"type":"ipAddress","ipv4":"100.100.100.100","port":100},{"type":"ipAddress","ipv4":"200.200.200.200","port":200}],"metadata":{"url":"https://digitalfortress.online/digi7.json","hash":"0dd9984a4a83fd1e15a182fa318787acfea2d9e26fd416bc71f939367a0dc625"}},"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh":{"id":"pool1zt3l0pv74ms3j0uspstj3k26ndq93ej37djcw86gkk487pgpthh","vrfVerificationKeyHash":"17842dce450acb74a96644b90ad38f7713f57f06526b620a4de322506fb67e6e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq8slx8ar3a6srktfrwjrqfsj9qgcapd7rn9xxd4z6dssyg4a57zg","owners":["0f0f98fd1c7ba80ecb48dd21813091408c742df0e65319b5169b0811"],"relays":[{"type":"hostname","hostname":"testrl2.duckdns.org","port":6000},{"type":"hostname","hostname":"bbotest.duckdns.org","port":3000}],"metadata":{"url":"https://ada-bamboo.com/testccb.json","hash":"bd75a5e72fe17426f170ac3a3ec1a82b151ddca9ce2f2ad49e0187edcf736c4a"}},"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf":{"id":"pool1z737pypn7xgvmnwazy6s7z2a8ts37xnpcetnzdn82qth5w6n8sf","vrfVerificationKeyHash":"4eb3784dc978391209b63132e32cdbd180cdb4eb5a08e2d38551d907907dea51","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq4r9wzkug92c2pfhl6l60rpnvtqyklncdezr4p7p668rpgnjtsyx","owners":["2a32b856e20aac2829bff5fd3c619b16025bf3c37221d43e0eb47185"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNA","hash":"f801fa03129fb7fc2dc8478c2fc7fbe5a7711be676ca6fb7f6660b09477ea0a1"}},"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr":{"id":"pool1rzgvf9rytug9p3hz6a9q8zeu3mp6trl70qdyw0g9c7ywzy984yr","vrfVerificationKeyHash":"0e0c0f257842b44b19dda1a20d8e406401f7696725f1c00a5b2768a4c684a089","pledge":{"lovelace":70000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1upxxj9un9j6xyaxkxnw0n2hajye3ux6qxn53ex7g4xwdh2cq3xsrd","owners":["4c6917932cb46274d634dcf9aafd91331e1b4034e91c9bc8a99cdbab"],"relays":[{"type":"hostname","hostname":"adarelay-t2-1.nanyka.com","port":1856}],"metadata":{"url":"https://nanyka.com/cardanospo/poolmeta_preview.json","hash":"a14630b7010397fc9bf309f59618b613698851bc1ac5772fd43717405b426bf5"}},"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7":{"id":"pool1r8t2047f3hj4c070rjns323s5dgyzyrxd2a06v6hkuh7zx7cqp7","vrfVerificationKeyHash":"f3a05875600f9960501f6b4e3a65b345b018da7a4b11ab2cd61638c08c2370d6","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urdxvfs090s0wysk9v5fsy70caswrfksjw0j4nzv5xh7ffq06zrw8","owners":["da66260f2be0f712162b289813cfc760e1a6d0939f2acc4ca1afe4a4"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi-pv.json","hash":"e42ed99f0b9752054081f0176b33b548bdc3db13558389fef7e0455e990edad8"}},"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn":{"id":"pool1rf0xxt0xpq0vwyq5jeqn8t9wags7k0mq8vlt0dygkc7rvc85uhn","vrfVerificationKeyHash":"41dbf753c8cb0c835d3719de7490a64921a66ad81d598981012a2cf2c1f762f8","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzvex98c4tw539cel9rj9u7axrxqvpat3r769tlgrw33t3gjxq666","owners":["999314f8aadd489719f94722f3dd30cc0607ab88fda2afe81ba315c5"],"relays":[{"type":"ipAddress","ipv4":"130.162.169.5","port":6000},{"type":"ipAddress","ipv4":"161.0.154.231","port":6000}],"metadata":{"url":"https://tinyurl.com/3kv77zvd","hash":"52daa526fd9d0b35e57ca376d617d0f99068c5f98afd13745f969cc79ef5928f"}},"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d":{"id":"pool1rwwmnhgsnyzhzpg89lgq4k6uc38qadsdnet9l2xgv34hsjxzj2d","vrfVerificationKeyHash":"a4057bb1feefee1f968888a3596a6ff463b443ef9d9919398c1b4dbe9a493597","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urarrlsypaptr9lrx8c65qr5qjfd4a6j893caw33mwpxsjgqfxdem","owners":["fa31fe040f42b197e331f1aa00740492daf75239638eba31db826849"],"relays":[{"type":"hostname","hostname":"spec1-staging.spirestaking2.com","port":3005}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_0.json","hash":"e11362ceaa7817a979a1f703268a0d63a9e65d48e35e5879e4a7e693f47253ed"}},"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e":{"id":"pool1r0tln8nct3mpyvehgy6uu3cdlmjnmtr2fxjcqnfl6v0qg0we42e","vrfVerificationKeyHash":"0bf04a518f6e9a49fbc3ca8b98bec244874fa9939427156ec2af28fa2bfdab11","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uraat6a6egphv996jz7ncmzncp8689fzum4up72c8xfaf4s04shmw","owners":["fbd5ebbaca037614ba90bd3c6c53c04fa39522e6ebc0f9583993d4d6"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2nx2ty2d","hash":"8cc5e635ed38182d9c4680129dc8815f7c2af1d0d7c34e36781139a26a47d650"}},"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk":{"id":"pool1r5mj0h2e5s2kpe0pckesz0x4g8rhr9e5fzr6k598ckjjun5snvk","vrfVerificationKeyHash":"9406b0490a7683eb52c139db3ff4ed3c8f48e6e3c786b9dc12c1fd2639e74ae8","pledge":{"lovelace":5},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzp8gpkuaz50mqexhfs6tpzqxlznhgdl9ev9q7pv9e9d8dcmva7p6","owners":["827406dce8a8fd8326ba61a5844037c53ba1bf2e5850782c2e4ad3b7","8e901a894907f529925330e4dbb4070e8ee6c45d5a0e85f4102444aa"],"relays":[]},"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035":{"id":"pool1rk2y9gx6vll8lawzdqlky5p2a3ypzsxg07arg8gmhkjj2905035","vrfVerificationKeyHash":"a86606621866917a797374a33b0dbb73afdb27b82abfe1facdf99f527cc7b434","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uz6yw4xj9lfkv8dweq3m64vwnmm8c3hpleufjzqf866ar8qjxc6cs","owners":["b44754d22fd3661daec823bd558e9ef67c46e1fe789908093eb5d19c"],"relays":[{"type":"hostname","hostname":"sully.crabdance.com","port":6004}],"metadata":{"url":"tinyurl.com/4uszu5zt","hash":"62710fed07d182806c647d4a2034eccb14035e57f9bb4899aff9ec1c461ee4ae"}},"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99":{"id":"pool1rutq574pcq30mn9xuytgpqyvn69zq2dnycp2fhnw0hsuyqpnh99","vrfVerificationKeyHash":"11351c5c5dfe74a8adb76e47b1590ab9e0251915548447db027806fe0d64fd64","pledge":{"lovelace":2000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz79lrtfw5w9z6pl2047nn7mxtqvzv9x0senqg6g3upwgeqq9zjj6","owners":["bc5f8d69751c51683f53ebe9cfdb32c0c130a67c333023488f02e464"],"relays":[{"type":"hostname","hostname":"preview-node.world.dev.cardano.org"}],"metadata":{"url":"https://git.io/JJWdJ","hash":"bf3eeabce96f495924dc15000ca067699f38fca78ea36e6d69328dc9c88a5e84"}},"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6":{"id":"pool1r7snhee0af6cykx7vt7ajkdn0cgym9pucpl94m3l9thnw74ggg6","vrfVerificationKeyHash":"7a785758a863bbad51e9fabdeba75009acbe05236f416dacb327c78a5c15a638","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq578ry6j5t3ud23e4q8grrhfygm0cf6200rwpquts203zs62922g","owners":["29e38c9a95171e3551cd40740c774911b7e13a53de37041c5c14f88a"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP0","hash":"62acb9589309a17b39d1fa6115541f0fad74d89c07072a835e11fcce93d5d23c"}},"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d":{"id":"pool1yq5q3unkyr764243l4v3gca6m42jlg04df9k7f5hv00lsjhyj4d","vrfVerificationKeyHash":"d6d05e32b4c2eb2e62cb5659d118061473360c2db23a213c377edb2ead2cf591","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urty9s8ufz8kydh8wfz6k9cqsj4v2q2k5wdu8wtetvlz4fs7adk6p","owners":["d642c0fc488f6236e77245ab170084aac50156a39bc3b9795b3e2aa6"],"relays":[{"type":"hostname","hostname":"pool.sudosu.cyou","port":30443},{"type":"hostname","hostname":"pool.sudosu.cyou","port":30444}],"metadata":{"url":"https://ado-pool.web.app/poolMetadata.json","hash":"aeaaf5c46c1466f65ff731fc3cc82f006acfd0aaedb4d4f6ff665f04224a1bd1"}},"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge":{"id":"pool1yphncqvpc4n49c4ya3mys7uwpwa25892r70gzkpqglenv093qge","vrfVerificationKeyHash":"83602a44cf3b951a3ef83a4d868852ccfa50cc841e93212b302a67c8d1cd9144","pledge":{"lovelace":175000000000},"cost":{"lovelace":345000000},"margin":"1/50","rewardAccount":"stake_test1urt0mxys755epyacjdacm4e0wyyr7kd603tzxrqzstj7auc5l9456","owners":["d6fd9890f5299093b8937b8dd72f71083f59ba7c56230c0282e5eef3"],"relays":[{"type":"hostname","hostname":"129.213.55.211","port":6000}],"metadata":{"url":"https://cardano-blockhouse.de/preview/poolMetaData.json","hash":"b570b17ca6e0b44783f4a18654f14b472460f0f553e2cc29eaa25a7a2f874f09"}},"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse":{"id":"pool1ywazc6h66tamsfxpfncfhhj282y0j420sze45x3s5qdvkaxssse","vrfVerificationKeyHash":"ad310b61f0ae967eccfcc0557661f421389c9bef3cbef6dc22bf877c7f08f9ea","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urjxc8q208jfclu9me2zn36luj70d8qsmrgemcga37vr2hg76ymtw","owners":["e46c1c0a79e49c7f85de5429c75fe4bcf69c10d8d19de11d8f98355d"],"relays":[{"type":"hostname","hostname":"relays.planetstake.com","port":30002}],"metadata":{"url":"https://planetstake.s3.eu-west-2.amazonaws.com/STAKEPreview.json","hash":"87fa8b931cb4641c75039d7b3314e9b0d0efc5d0c496d01a67863e7d25453fac"}},"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7":{"id":"pool1y0uxkqyplyx6ld25e976t0s35va3ysqcscatwvy2sd2cwcareq7","vrfVerificationKeyHash":"b2ff1c4e1aee2de9b5212f4d964b6acb09c67e54a9e2aaefdebda42e08125cc6","pledge":{"lovelace":400000000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1urfvlns8kzw5rl08uns7g35atul8k43unpcyd8we8juwuhclq5pxz","owners":["d2cfce07b09d41fde7e4e1e4469d5f3e7b563c9870469dd93cb8ee5f"],"relays":[{"type":"hostname","hostname":"adaboy-preview-1c.gleeze.com","port":5000},{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt":{"id":"pool1ynfnjspgckgxjf2zeye8s33jz3e3ndk9pcwp0qzaupzvvd8ukwt","vrfVerificationKeyHash":"dbdd412069ed405b8efe1f30d4e7a8ea551a8cbfc949b1a462936e0b55ec632a","pledge":{"lovelace":3000000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1urn5vcltkemnl8nnx3xt4ucsej3v45y0r5s4xgkl9v24jpsxs8v3h","owners":["e74663ebb6773f9e73344cbaf310cca2cad08f1d215322df2b155906"],"relays":[{"type":"hostname","hostname":"node1.cardano.gratis","port":6501},{"type":"hostname","hostname":"node2.cardano.gratis","port":6502}],"metadata":{"url":"https://cardano.gratis/poolMetaDataPreView.json","hash":"8bcb8efe6973b8b6bd0918cd356735ff3ce0ca41276fac6fb4b50b900fbcebce"}},"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7":{"id":"pool1yu60zjc6ykj22ns69e8w5me469r4k4805706vz2mvrnz5qvvfz7","vrfVerificationKeyHash":"e84a8a24359b57aec037671ec8597f73ca6d231f06174e7b58c1536ad0f28c9e","pledge":{"lovelace":1000},"cost":{"lovelace":500000000},"margin":"1/1000","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf":{"id":"pool19p0rndwuhsyzwjt3v3s946yrq3je8usgcqwn32xjfkd52f3znjf","vrfVerificationKeyHash":"18a7b9fa81478d76b1797a5935f1ba4564c06390ecffb208a02283993f179ceb","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1up829zqr979f4svv7daykuk000nwmvtkas8qpy8rld4t7wqyu059y","owners":["4ea288032f8a9ac18cf37a4b72cf7be6edb176ec0e0090e3fb6abf38"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.dev-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/2xn8c23m","hash":"d907a12c9750aa8536fe24bf2e904cef6acc9801d952e851b76530e743244491"}},"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya":{"id":"pool19zfyfkrfueu8gtqm8mq72fts7z5pte54v0upej5kh905v7q3xya","vrfVerificationKeyHash":"444a5509caf8074e6bb5f387b93c802837410f45efb4867f22a0e4e4d1fc9866","pledge":{"lovelace":1200000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqc9rnvul66ud5azgn95678uy5aj8y2cfy734m3caxlyrjc204n8m","owners":["3051cd9cfeb5c6d3a244cb4d78fc253b239158493d1aee38e9be41cb"],"relays":[{"type":"ipAddress","ipv4":"82.208.22.91","port":6003}],"metadata":{"url":"https://www.cardanolink.net/metadata.json","hash":"9e52ad6d3397ef0e196752f5b6c783d159e6e11b012fc426ed10e5e99b44a8af"}},"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8":{"id":"pool19x5z6h63kq9tvwt9yz8emdf3fry06pnm6lu8lcuqpf9dunqwng8","vrfVerificationKeyHash":"8a97230d41bc99a952bbad1382a384fad365521e3e222a1baf227998f6c5fbdd","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz488lprpyycw8h6jelrudnuw9syv55judndgdqyrmwnl0qnx56dn","owners":["aa73fc230909871efa967e3e367c7160465292e366d434041edd3fbc"],"relays":[{"type":"hostname","hostname":"preview.ada.chicando.net","port":3002}],"metadata":{"url":"https://chicando.net/resources/metadata/ccdo.json","hash":"c2d117b0ee365a4717ae5e1c1659f5246db80a4cc12f1fc437eab19076b8c09b"}},"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc":{"id":"pool198jfkrkjf5nk9jxs2nwqh0dpswnw7f8vgea7k07dup5wyr0dtwc","vrfVerificationKeyHash":"002345b996b612fbe645a9e51f0bad41c19570417c92dd16f00785619c3b9691","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"17/100","rewardAccount":"stake_test1urx0wzfjh55njew498usze4jaqu3sjaugu8gdjnxm3faj7cmwkhjg","owners":["ccf70932bd293965d529f90166b2e839184bbc470e86ca66dc53d97b"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":6000}],"metadata":{"url":"https://tinyurl.com/4w5yp728","hash":"af5d091d79115e56fa7b6d0a5d39fe9901141d93a1beed06003b3b44f75b12b1"}},"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt":{"id":"pool19ta77tu28f3y7m6yjgnqlcs98ak6a0vvtlcn7mc52azpwr4l2xt","vrfVerificationKeyHash":"b06775ea69068784c2735f6211c537ffd5fa50aa3e3e2a798eea1f3b0e4ec98c","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9l0p6pr3ctkjaewnwawuykwma9skxjhx9nrdafndhs7jsa0vjgx","owners":["db266813b8285a41aaf806024aa16f4c5a3592e1b012460435224de3"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool19wrj23gqupswxefaks40xncv69ca83mqck2e9gxwncza6vl8h47":{"id":"pool19wrj23gqupswxefaks40xncv69ca83mqck2e9gxwncza6vl8h47","vrfVerificationKeyHash":"48de9f061019deaba5729b48be6db15e7169a18574c995cbb27d5b89f243ab9f","pledge":{"lovelace":3000000000},"cost":{"lovelace":170000000},"margin":"1/50","rewardAccount":"stake_test1uz2r2kjj8ulkp2l9l8474pfe800ad77yl2p2ksqg6keza9c8azv2g","owners":["94355a523f3f60abe5f9ebea85393bdfd6fbc4fa82ab4008d5b22e97"],"relays":[{"type":"ipAddress","ipv4":"78.131.56.145","port":7362}],"metadata":{"url":"https://tinyurl.com/2s3jx2rs","hash":"502b700e1c714a9e51534f1f61731a1ae1ec251199bdeb0d7d7fa65fa53b4626"}},"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l":{"id":"pool190ce9qhpzwzveasvngas7kmwqrn54mfvhk9unqmuesykvtadu8l","vrfVerificationKeyHash":"ecaaf8a89ead238b71ae9054487c229c1c6bc327062c5211dea2ae78c7cb0280","pledge":{"lovelace":1000000},"cost":{"lovelace":805000000},"margin":"1/100","rewardAccount":"stake_test1uz5qfpx4786s0n847grlqcfrg5ja2g980jtnkfal2jxnaccg69qk0","owners":["a80484d5f1f507ccf5f207f061234525d520a77c973b27bf548d3ee3","c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"e9a969b627f3cac9581322dab1f352533d63264fcdbb9e46c11bbd25b8b1c5e3"}},"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv":{"id":"pool19cmwzwk4vetgtutrunar6vkv7z3n8ldq5e7f8javn8m6ynvhuzv","vrfVerificationKeyHash":"61e5b9672e64e846c49cbf305ed1ae7de084c6c5b9b2c202589068337d275295","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqag28j8d0qahxj3q85mzfgzr7k2duckp46t76ju8snrqug9eknpj","owners":["3a851e476bc1db9a5101e9b125021faca6f3160d74bf6a5c3c263071"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSND","hash":"9b41da403200a656749255f4575016eaac46b803656bc96616c89dad89728364"}},"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7":{"id":"pool1xqycqt2kz6ps4r2ggk0jqsln0st5xtw9xgep4xlg2uxgvq6w6h7","vrfVerificationKeyHash":"4664efa0023bf465d8e746a80eefa620ee04c0e9455760779bd484a8dadc1e16","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urr658f2tpkx8jfnmjczdvv2s8zwpug6cnegdxqc4rvuc8cdy3xrz","owners":["c7aa1d2a586c63c933dcb026b18a81c4e0f11ac4f2869818a8d9cc1f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP1","hash":"828d2ec12cdfbd0c989b82e8ceb3ea9ba48491ab6453f2c5d66d503048648d53"}},"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff":{"id":"pool1x9xkvkrfw6htmnflpad0z2aqsxx50f5mwkyzpylw0tlsk9z5uff","vrfVerificationKeyHash":"af51e586a3601de453af80a5d24d88d3e451cc283aff0602d96e2e7f872d983e","pledge":{"lovelace":100000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1upeasuglk6mfjthng6xmua0f7q4tzqpsvn3a6wdjry26z0sscd4la","owners":["73d8711fb6b6992ef3468dbe75e9f02ab1003064e3dd39b21915a13e"],"relays":[{"type":"hostname","hostname":"guavarelay.com","port":6000}],"metadata":{"url":"https://github.com/MontiMarti","hash":"72497a1aa897015a10c30bff37371adde3fedf5da930fbf54c40976856782d46"}},"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v":{"id":"pool1x9tqyeasf0n3zvq6p6dvaeckz828ygcustd3hngs0mmxgpq7n7v","vrfVerificationKeyHash":"066490995d792052c4cf4a1010ca55547035261003fd5d42730b92acb165ce4b","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upd07wdllf3heh5y0c7893gfh04ye5s9r69nq382m4kgtgcd206pr","owners":["5aff39bffa637cde847e3c72c509bbea4cd2051e8b3044eadd6c85a3"],"relays":[{"type":"hostname","hostname":"grokism.com","port":6003}],"metadata":{"url":"https://www.grokism.com/groktnet.json","hash":"b04da3c89fa84062ab55ef8653b00f469f60137afc1d6ff20cd175b00105d888"}},"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se":{"id":"pool1xg80gqxp89sllgk6xs6ajwjxkjntwjc2wzc9mjsnzchkgm4z2se","vrfVerificationKeyHash":"3efd3ace7be87e59adfbf0196c75d16bae4c46b6c2eeba65c0a32a97c3043eda","pledge":{"lovelace":7500000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uppctwdc07j7aeut3kzwkxddtarc8s5znulauvcp8snl6wsx8ttpx","owners":["4385b9b87fa5eee78b8d84eb19ad5f4783c2829f3fde33013c27fd3a"],"relays":[{"type":"ipAddress","ipv4":"95.88.156.175","port":4444}],"metadata":{"url":"https://sharepool-crypto.github.io/share/poolMetaData.json","hash":"396f9b3f3dfaaa606e6459758f580ec461f5e4a416027038ff4565a3891301d8"}},"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq":{"id":"pool1xgmqwh23yc2jp52k7jn249x56v6nyhl9nhxaeg6hq8tmc5t78rq","vrfVerificationKeyHash":"360f9057c01159a44581ccc4ba786d64b80c551bae0163f09fc408b5779b0e55","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1ur3yj9zs0cd9mtx43zssh877qmgp5env3pa0hhytw53fw2se7fthy","owners":["e24914507e1a5dacd588a10b9fde06d01a666c887afbdc8b7522972a"],"relays":[{"type":"ipAddress","ipv4":"73.23.36.140","port":6000}],"metadata":{"url":"https://petloverstake.com/PET_Preview2.json","hash":"87b5fae91c87eb8dbd828c24088dfea6dca290170723092a2575a9d654444a85"}},"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth":{"id":"pool1x2u60w0uupzv6qdn39pvzeapd54q0jqwd6vv4a7wfe76q8lgsth","vrfVerificationKeyHash":"b2f21592a1eeebdfd7a29d997d93d6c73b80f11c5818408836033a4e93aca409","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up22rprkrxxhme8gqfqqntvzjfvw2app3sxn85rgsn2me6gq0r6c2","owners":["54a18476198d7de4e8024009ad829258e574218c0d33d06884d5bce9"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP3","hash":"fd7246127084e052c2a6bf8005ff1a35fe4dcbb4dc32cf97bc110d5470cbe71f"}},"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3":{"id":"pool1xkfew9wzhefz2at44eqdu5d6hk6s6xjdjj8h54tgvmymwea4vk3","vrfVerificationKeyHash":"4967db4150525352a6eaaec789d27795fc7bb17cfd72da8b0815e43bef540a6f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urw67l30v2at04d2uaa6cazpuzl4csa5xmu6k4cvcj9yadccrvm93","owners":["ddaf7e2f62bab7d5aae77bac7441e0bf5c43b436f9ab570cc48a4eb7"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr":{"id":"pool1xe7ey753aw0v79tysaumamkgcugpw9txahxwrrltqjpx25adrkr","vrfVerificationKeyHash":"5837fb2c83c6c2808deb5269be449a4c16cd337a7a27d379e77587f5fce73ce9","pledge":{"lovelace":65000000000},"cost":{"lovelace":170000000},"margin":"1/200","rewardAccount":"stake_test1ur7a6w4l2tkz3p7krp8y6807lnqd6e03awrstq644wfaksczmnpth","owners":["fddd3abf52ec2887d6184e4d1dfefcc0dd65f1eb87058355ab93db43"],"relays":[{"type":"ipAddress","ipv4":"45.32.18.201","ipv6":"2001:19f0:7001:24a6:5400:4ff:fe31:9996","port":4002}],"metadata":{"url":"https://git.io/JI2Zk","hash":"d50f5e2e137f291889af50e054025af04bdc487e747c6cfa2521810157a5dfe6"}},"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye":{"id":"pool1xas798gr6u5kjy2y34ge0jhpp6fwlg88cycrg28swx50z83a9ye","vrfVerificationKeyHash":"342463d308642d685df96501b3727510cd10a690927e80727721c837eaff390f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzcd50ffs5upkujgw2wa88ky099wka33a6yd6y9zexd6cyss0mu6v","owners":["b0da3d2985381b7248729dd39ec4794aeb7631ee88dd10a2c99bac12"],"relays":[{"type":"hostname","hostname":"adaboy-preview-2c.gleeze.com","port":5000}],"metadata":{"url":"https://tinyurl.com/39a7pnv5","hash":"643a016d84fb171855f8b6d9c9a5efa230fb4665de3ee0ee0a1ed0f486d26be2"}},"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h":{"id":"pool18pn6p9ef58u4ga3wagp44qhzm8f6zncl57g6qgh0pk3yytwz54h","vrfVerificationKeyHash":"82419eaa78194ea40711dea37ab068e6ee101dd7785fe9e41e9acd4b98290d49","pledge":{"lovelace":1659000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urpl4kvj3jfn3zxzxud9px6she3suks5fdyygyke7nnpkcslky9um","owners":["c3fad9928c933888c2371a509b50be630e5a144b484412d9f4e61b62"],"relays":[{"type":"ipAddress","ipv4":"51.104.251.142","port":3001}],"metadata":{"url":"https://adacapital.io/adact_preview.json","hash":"e345a478726731a08900d2cbad4b8455815d41b562fe2b862a3d8fd2c3e36d78"}},"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp":{"id":"pool18xr0tmqrqffd7yu5jh4pq7hs4eezkremxmgzkq8ua4y82dmmrxp","vrfVerificationKeyHash":"d9df3f4eee37db91a204ef07d8240e4822d8a1d0c0009d2384e7057dcd9cd7c8","pledge":{"lovelace":220000000000},"cost":{"lovelace":170000000},"margin":"69/10000","rewardAccount":"stake_test1ur9pv4652sv524d5qdy9q5h354er45jc3s562jp6vjykwwqyz0kzj","owners":["ca16575454194555b403485052f1a5723ad2588c29a5483a64896738"],"relays":[{"type":"ipAddress","ipv4":"130.162.231.122","port":6001}],"metadata":{"url":"https://tinyurl.com/2ku8unuf","hash":"f5d13701d87a7a6d2642c194c7517a411ac662bfe63fa1d1c63f7558ed83e7ea"}},"pool18x0rtv0vznym7cczsunqcfs5atrve4dfcavfmpe7wkg8ga4urve":{"id":"pool18x0rtv0vznym7cczsunqcfs5atrve4dfcavfmpe7wkg8ga4urve","vrfVerificationKeyHash":"2288a7b58fe88ea76717ba5dd7741e4274042e6806307c10804c581788098d9b","pledge":{"lovelace":2000000000000},"cost":{"lovelace":170000000},"margin":"9999/10000","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/f60a27ae-11a4-4e87-9707-3d9.json","hash":"32c22289da648abcb85bf98d81ab0cde0959e92bb01dfd2837966d6b6858d3d0"}},"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy":{"id":"pool18x5zg95n59xvysu3rq7ygqn6f842ud29dlcc5jmw97xkv2renhy","vrfVerificationKeyHash":"eb7084adcbbe7c2f29e4ad162969dfc80ec4d53a1598d2b4277340c29fd99b35","pledge":{"lovelace":9400000000},"cost":{"lovelace":340000000},"margin":"99/100","rewardAccount":"stake_test1upa7k9ag7zpst5h63lpxa9syq5l4wqk2p2qjvfc04j4ncygq73sxl","owners":["7beb17a8f08305d2fa8fc26e9604053f5702ca0a8126270facab3c11"],"relays":[{"type":"ipAddress","ipv4":"139.218.11.14","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6005},{"type":"ipAddress","ipv4":"14.201.4.90","port":6006}],"metadata":{"url":"https://dpadapools.com/preview1meta.json","hash":"fafe0366055360d905a2f12da33af561518ae141151fadc9a8a61de850c45664"}},"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a":{"id":"pool18800lgwlelse96swl6e7n0xes7qeqcnlkkgweq0njrxk66zlj9a","vrfVerificationKeyHash":"a21d1f6c4c25e3c81754fb21b73b20a4cf64264978980ee1b42c4cfed4c0217f","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfmqylayt305l5h2lh9xe4h5snu8dqm853fkaj0ex92n4sk3zgy0","owners":["93b013fd22e2fa7e9757ee5366b7a427c3b41b3d229b764fc98aa9d6"],"relays":[{"type":"hostname","hostname":"relay1.preview.metablx.com","port":8092}],"metadata":{"url":"https://bit.ly/8BOOL_01","hash":"b8be919f1da5d19de98673907c00530ccb15eb8f728712cfca433432ffc84f77"}},"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h":{"id":"pool188a03x468k4t908x265knzc29sz7v7wqlvmqaehrk34vkll3e2h","vrfVerificationKeyHash":"dbefdeb6466e8c439d6f2c433677bb4baadd745778ee83480d29cb54dcda0c25","pledge":{"lovelace":7000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upha97flpp5xn22nq0n8k3pg5gk85g6p7fmh9u89q8df5kg9axepw","owners":["6fd2f93f086869a95303e67b4428a22c7a2341f27772f0e501da9a59"],"relays":[{"type":"hostname","hostname":"relay3.preview.metablx.com","port":8093}],"metadata":{"url":"https://bit.ly/8BOOM_01","hash":"843ac18da9b54c0fa8262d6bb99868c29dae4ad9181a1ac1e44ed97ff7e8b2bd"}},"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0":{"id":"pool183nyxe4nwwxs3rmnsxchhlep4guzm8ayhqwr3se0evz7v0jnnd0","vrfVerificationKeyHash":"6dbfd220765e0271d5bc9619238ec289d954e4ac9b435f0444bef87c8a89b2ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzfjqkmx3uatgthyk70uazalp2vrgg3vffjrwgfc2uwksncxh5z6a","owners":["93205b668f3ab42ee4b79fce8bbf0a9834222c4a64372138571d684f"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP5","hash":"0db9041127868af4eb8675f134648d2d3776768b2e658206c840867280579ec3"}},"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y":{"id":"pool18cq0sr4ryw4t63hvgmdp00z7f8h3hgxef0gjldsgk6j75ajza6y","vrfVerificationKeyHash":"18c331fcf6535b1d597c8c661c54eedc36029982c3a3b9779e1525ce73b8d884","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"9999/10000","rewardAccount":"stake_test1uza6lr2dqs8skq7wut7rp77xvn42w67gsqslpca3r6v6kwqxmcuup","owners":["9ca82a28ceafb9b3bbd77faf6ac500519e6fcbd54f49ef387ca507ab"],"relays":[{"type":"hostname","hostname":"relay.preview.cardanostakehouse.com","port":11000}],"metadata":{"url":"https://cardanostakehouse.com/459b8a9e-b96a-43cc-9981-970.json","hash":"e5e31422e1e2bc34d9ddc87aa974ffc841079a0773dc6972b6efbdb17c8d0ffe"}},"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3":{"id":"pool18ccrdt0hyj6vd9qwzfwttp2dsq0yqxk03h8nvswecr8yctuynt3","vrfVerificationKeyHash":"1d77bf5d2db5645ebde81bf496105973c50f780479dffe796772c3fac4382e99","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1urh699v5gws437m5x5qn09mwv68r9jcmmwngltwjeyfpensx3dcvn","owners":["491ed3664c9cb520f39f4d7eb3275dab8e26f0b6b52bb7deeba111f2","7c344ba81cddc582d4683d093fe1cdb152b4ed3809e52cc719e863bd"],"relays":[{"type":"hostname","hostname":"relays.tradingtools.software","port":6000}],"metadata":{"url":"https://tradingtools.software/downloads/pool_description.json","hash":"aff79b84a4543912a5db601af91474b8b4d6077e1c49d3828793f34bacb2219e"}},"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv":{"id":"pool186kkpzde9e5ns0sy0852k9nwfvs4sg6m7zgkd272sms6xxslzqv","vrfVerificationKeyHash":"671132f505c4fa210ac3f8d35c6d390a610b555d9c16452fd8c80aed79f82275","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uznvpusq22cmypf9qefkpersmghzqgk492sju2elhfvmnzcrwrrkn","owners":["a6c0f20052b1b20525065360e470da2e2022d52aa12e2b3fba59b98b"],"relays":[{"type":"ipAddress","ipv4":"172.19.0.3","port":3002}],"metadata":{"url":"https://short.gy/huOsbi","hash":"229136efb689e4c9c4246fd9ba19832a815db1b08f8126b2e3df7132e3b4427a"}},"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0":{"id":"pool18u47gq2ps4hqawl2sfr8uu8rn4yvkue7c68mw45v2ra4wj7pdx0","vrfVerificationKeyHash":"63de13cac6902f7b63a6530ab41297734554bc7932a68496dce10aa187da8bfc","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzmxaaxxnrk7qcmx7mr3dtshc6e4xgfh5t5w8e690msqtyqgnzx08","owners":["b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482","b66ef4c698ede06366f6c716ae17c6b3532137a2e8e3e7457ee00590"],"relays":[{"type":"hostname","hostname":"4728f95d.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://4728f95d.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455":{"id":"pool1gslhruyd8pk4f6am9zjjzgwuvetge6tztswwfrjqpnvdsex3455","vrfVerificationKeyHash":"59fa47761c925ff90e191c5d7d18d62ddd15ff88094575c2b1b139ea231b8485","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur5p8rcnye82hu4ukkt8xru2hqxa3f9z58pe53qkl9wzz0sn83hhf","owners":["e8138f13264eabf2bcb596730f8ab80dd8a4a2a1c39a4416f95c213e"],"relays":[{"type":"hostname","hostname":"spec2-staging.spirestaking2.com","port":3006}],"metadata":{"url":"https://data.spireblockchain.com/ADA-PREVIEW/SPF/pool_1.json","hash":"9f4e03dd87a814ef9407212ca61355edd9ff266d29a14eb43ad8ad312851b2bc"}},"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9":{"id":"pool1ghxsz57l4rhsju328dk0t8j3ycmz80xtf8w8xzpkk7pfwtca9u9","vrfVerificationKeyHash":"5fa64452a0b245bd9778b32ca0b65ecf13d658903419a4978d5ee70dd1eec6b8","pledge":{"lovelace":5000000000},"cost":{"lovelace":341000000},"margin":"1/25","rewardAccount":"stake_test1uznc9768hq2qvkg3f588ps9gssw05jztp8n0s7zc7tldlmcku0gxs","owners":["a782fb47b8140659114d0e70c0a8841cfa484b09e6f87858f2fedfef"],"relays":[{"type":"hostname","hostname":"preview.testnet.cryptobounty.org","port":6161}],"metadata":{"url":"https://bnty.one","hash":"677d4eba97170f5267a84ca9d12e0c2bdd116c87128aaa2aaf6905912841fa63"}},"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04":{"id":"pool1fr8hdmcl5vadqdxrtdks6vzc44ddqmxpzfuxeuezjt965z8hr04","vrfVerificationKeyHash":"4b4e8c37e61a53313028a84eef9bcd1d0ddc77c5da6570be8d23ab77e0088318","pledge":{"lovelace":100},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzp3y24gpe5zjw0nzsc04tteyuhr6yxqpcvl4cg9x6227gcr4s4cs","owners":["83122aa80e682939f31430faad79272e3d10c00e19fae1053694af23"],"relays":[]},"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr":{"id":"pool1fv5dyzcaydlj3gvkxqdjsxvey29cvk5zz8jjxncqhch4xxj3lgr","vrfVerificationKeyHash":"4ab5835f2302ea9d183e1d56143ee82e224657f46403ffc2bc0c4a557f1afeb6","pledge":{"lovelace":1104000000},"cost":{"lovelace":411000000},"margin":"1/100","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"41bbeb6b2f37c5c9195c4c816fb9b641723b92ba14ecf5f4adf210155b08d0e3"}},"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th":{"id":"pool1fvmzpfjatfgg0jx5l56ttuprc8g9p42782rdg4e8a9cwvplk9th","vrfVerificationKeyHash":"02f96e2a0f0e25b1fe59eade571d1389eae47cda456f949de278791ca2f300e7","pledge":{"lovelace":500000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upvea236pch7jvvrdsxczr0t9t4f5n9plnx4u8rrkz4h74gxy80l0","owners":["599eaa3a0e2fe931836c0d810deb2aea9a4ca1fccd5e1c63b0ab7f55"],"relays":[{"type":"ipAddress","ipv4":"142.132.229.15","port":6001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"2afac2a4edec44da0f81ba5bd6c23eb2a895e172c8561c6680819feb4872f667"}},"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py":{"id":"pool1fw9mq9eyrp5yydl3njau2568jal62rx5f8anp2llt0e5s3pl3py","vrfVerificationKeyHash":"171fdc0c6430bddfdc725553a2d84d01042cfb586f1e4b546853da5d96a604db","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq27femrn9wj07uad23waxfnc29f7wk86s9mddtp7qhlepcnk0r4r","owners":["15e4e763995d27fb9d6aa2ee9933c28a9f3ac7d40bb6b561f02ffc87"],"relays":[{"type":"hostname","hostname":"d8bdbfbe.cardano-relay.bison.run","port":1338}],"metadata":{"url":"https://d8bdbfbe.cardano-metadata.bison.run/metadata.json","hash":"64c1813d814e5c2abb5f65864ec26f0b060d49f3d206a31f34aa6428d7b682e3"}},"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an":{"id":"pool1fw7yf4mehfuszpdf2g0u72gu8d948qamwut5c6jm3d3lkj3e4an","vrfVerificationKeyHash":"838ca6096cff572b788d840445bf2167345f3d87485133ebcbfc729af016ee14","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"7/100","rewardAccount":"stake_test1ur7dav7tz75n7qd4p5fx2su0m5vdu6udvpn2aw4gusx536sag3auf","owners":["fcdeb3cb17a93f01b50d1265438fdd18de6b8d6066aebaa8e40d48ea"],"relays":[{"type":"ipAddress","ipv4":"162.55.3.29","port":3003}],"metadata":{"url":"https://test.com","hash":"0ba562271b66ca6929aff5026bb127d05fb7fdab05cb165854f13f57ed87a222"}},"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj":{"id":"pool1fszljutkfl8kvvnm0l585tzqevuuvyxmp7rt6346q0nkxxg33mj","vrfVerificationKeyHash":"10236e06f67a865caf85cb51a7465dba3e35d0afab2ff55a0ae4626502c91793","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upq6yxehs9le5fzav7476zngs4kvmrn5qane0mwe9y8a8tqzmjfcd","owners":["10417a1f689bb4328ca92d6ba5eae93da2eb2d5e25c34acbbe0cdfee","17cf6f438e4eec78e697919fee6a4a2095207cfd96a3aaa1a84b59c4","41a21b37817f9a245d67abed0a68856ccd8e74076797edd9290fd3ac"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"4cd0cdc50f4220f9c134c7370e68a50142c9e272da4eeba45c1bc367792ef224"}},"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf":{"id":"pool1fsxwamyfh5aqwg707m69zpfvwyrj5fz5ep7a8yk92wnavck4pdf","vrfVerificationKeyHash":"e091185050f16c36c140ff83df893a6ee90abc4e4b6c9e6f61feec71fb2af439","pledge":{"lovelace":1000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1up50rxfvpmvh2k0e9ku7vypfk5w8280j3w6nm4nkk76qkfcqpc9wn","owners":["68f1992c0ed97559f92db9e61029b51c751df28bb53dd676b7b40b27"],"relays":[{"type":"ipAddress","ipv4":"154.12.248.114","port":6001}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03":{"id":"pool1f7geezz3s4jlcej03v62wm75wvunu2dzwk4qa6fvkjl9j23yp03","vrfVerificationKeyHash":"bb6a74b787c6c3f59dce9524356655c714d28c18af92dc14007a90cd5cf84851","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uz6wcl67glqj2sfx7e55afxv58g6f0p9rlwq0xyt6cm33hqxczkka","owners":["b4ec7f5e47c1254126f6694ea4cca1d1a4bc251fdc07988bd63718dc"],"relays":[{"type":"ipAddress","ipv4":"194.28.129.203","port":3001}],"metadata":{"url":"https://shorturl.at/hloWY","hash":"3be51e24185ed60ebcc73af79dd1e13167d78093dbbbb4dc61f4e26f1b10e40a"}},"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a":{"id":"pool12q7fskmv767qv8yn7mvcxj5azam9cdg0lpm3cajjqr2rqxc7y6a","vrfVerificationKeyHash":"d1dc9125cf57397889b155799e3e6e89ce70c41b6b3b94d3e6e08a48bc4ea5e3","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1urfrzvw6yyunusyx4creuzysuyly3tqkj353v7fv58jl6hcfyzy5d","owners":["d23131da21393e4086ae079e0890e13e48ac16946916792ca1e5fd5f"],"relays":[{"type":"hostname","hostname":"pv.blockchainlens.org","port":6306}],"metadata":{"url":"https://raw.githubusercontent.com/bclens/cardano/main/pv.json","hash":"82dc82447da80029382fb904948c09431e0848260a504bcf4a75c575a040b05e"}},"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z":{"id":"pool12yqmdst9axjwgav7jgcu2umfa0vdm8cnh6rq9ctvaqhhvtuys5z","vrfVerificationKeyHash":"f39deed0607f101e4d3de99930f0a1532c914a2796651c6e2bef756eaf0636ed","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relay.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"156868305e96086404ebfdbef2b552d266771597a206f1bfa34874e83fe46c4a"}},"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa":{"id":"pool12yrhvezsrqxlafahf02ka28a4a3qxgcgkylku4vqjg385jh60wa","vrfVerificationKeyHash":"9692c9b1540de270cff040ba6df0d680b91c524b2e01673b97b4679a9e2d91eb","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1ur9dz9x9yzn65ys0ms72l6gsmk9w3dfdj26qrvknjvlhmrgnzpcmv","owners":["25d448544726958c9232dab0aa12c63b06b1db494ea133b96e73c836"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx":{"id":"pool123gjej7l8f53906d4xp6f2jxa8zxav8arx3t8af5r3fkvgxx2wx","vrfVerificationKeyHash":"442324fe40068b5c1dca530dab61fdbc273e1ec20aed07b13fbba87f6e45840a","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq8jgpx346l6hwuxa3vdecegtyfcv35wy4hmyfczw39876g0mhcw7","owners":["0f2404d1aebfabbb86ec58dce328591386468e256fb22702744a7f69"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNE","hash":"2424d0726b990ec170fd1f9298bde6cfe1792153ea6ba56387ad098cec30c4ea"}},"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0":{"id":"pool12645cty3fsa7a79vx2nsd8yupl3quyhr6h3vqk6duqn0yy7vkv0","vrfVerificationKeyHash":"c1b125e070bea224be6663ebf5cf748194a70cf6aa8c16885b56e684d12450d5","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/bf2f257f-2776-4c14-aae4-1c1.json","hash":"98db945cdff93d149a30e0d9010927f1417fb1b9796c63a2bcbb85cd551b2fb6"}},"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2":{"id":"pool12l8602apyt7a52l0746te57y4wtl9rv0pxjvsg6w5p7vk2pcwk2","vrfVerificationKeyHash":"254e89d363387a17fecaedaf04ff7cee91be656a25f9d4371416722b078c8c6f","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"6969/10000","rewardAccount":"stake_test1uqjgdtza3mr6k9w76798vs3hpu4dm963rdkpxrlqrcvknmcn38xkh","owners":["2486ac5d8ec7ab15ded78a7642370f2add97511b6c130fe01e1969ef"],"relays":[{"type":"ipAddress","ipv4":"146.235.201.221","port":6000}],"metadata":{"url":"https://tinyurl.com/3rp46mu3","hash":"dc2e0b9de0a745efcfc863dbbb9a69553899c0bdc1daadf2656e9d32ec53cd93"}},"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6":{"id":"pool1tycl9a9cqgffccgsh0867u65qpk0qlm43kjqggepmflajsmcds6","vrfVerificationKeyHash":"e89c87e0d1527f047cdb4254d8139987124e9a06d07538bfb4ceda29f43ee098","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzd5msh6y083l597yacq5pcgs82pzfrm50j3nemmynmqfcsg2m4r0","owners":["9b4dc2fa23cf1fd0be27700a070881d411247ba3e519e77b24f604e2"],"relays":[{"type":"hostname","hostname":"e566964e.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://e566964e.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e":{"id":"pool1t9uuagsat8hlr0n0ga4wzge0jxlyjuhl6mugrm8atc285vzkf2e","vrfVerificationKeyHash":"957d1696507a9f88c641db39cc2e34274456efeee9538a2bb4f332f44fb1d25c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uq9yp8wqvgpnucpe6s6yavnrvqnuykadx8y40sv0c5ur93gapzeka","owners":["0a409dc062033e6039d4344eb2636027c25bad31c957c18fc53832c5"],"relays":[{"type":"hostname","hostname":"mithril-signer-3.testing-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2qvmy5xy","hash":"adaff9f5327ad0a3b9a47ba88a14100235915c80da2806f9bf8d271dbc0a6e13"}},"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj":{"id":"pool1txg39f9mdatrvv3mp7nwfj07he3cqe0y4cach06e2z6ykmysytj","vrfVerificationKeyHash":"64e14353b2cc4050d5fa27c40acbea2556089d57527e595101ef0e1ef2986009","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uqe8qlh2xqneakexw06jgfl9pev9r5vqj743de0a6uqw8ygs0gw82","owners":["32707eea30279edb2673f52427e50e5851d18097ab16e5fdd700e391"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3001}],"metadata":{"url":"https://bit.ly/43u9ybcJ","hash":"c1ef608ac6ba33acba208cdbbb2eaa7eb8fc944103f84646040931b1284478e7"}},"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg":{"id":"pool1tfgdvuc8p8zrmyhxc2g82denxkrxuy9dx5qwzp9lx85xgjedvdg","vrfVerificationKeyHash":"afb03550e8b2974b2ddeb22231132b361ca45d4b3d4fc45435c053c510dc6481","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uqz3lkuqxjh42yujn5l3zegcvc6a82lmyhr8ylc68sq44fcj9dppz","owners":["051fdb8034af5513929d3f1165186635d3abfb25c6727f1a3c015aa7"],"relays":[{"type":"hostname","hostname":"preview.frcan.com","port":6010}],"metadata":{"url":"https://raw.githubusercontent.com/Mikederel/p/main/p.json","hash":"ade52fe0bf2d23ed509ce2fc5b3990f4178ad8768f66ead1955a1f7e04b11c82"}},"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43":{"id":"pool1t3pl903zsy3wqgl4392hmuwx8a3f259f3yzhl2ns4xlhskxkr43","vrfVerificationKeyHash":"dd6686e356e2bec35ee51b17356d801e69917e3b472e2e59d3371e48207fd990","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1urp9rkuj73fqcuc47u3r92huffdmfgnxszkk8nl3dpdmwvqjwpjgz","owners":["c251db92f4520c7315f72232aafc4a5bb4a26680ad63cff1685bb730"],"relays":[{"type":"hostname","hostname":"sator89.ddns.net","port":25369}],"metadata":{"url":"https://capitalstakepool.info/CSP.json","hash":"04028c72c74f04d605fc0d1a04c99357c8563bcf5cc408a6b6e8c7e72176c9d9"}},"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6":{"id":"pool1tmhw3wga9qdvz5enyxkhm7h9j4u7lp60y9lvvsdv3323wa447y6","vrfVerificationKeyHash":"697920a02a8ec26f6b77ad9c0b8744339b26433e80974cfc35f68e4e38fee2f2","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"29/1000","rewardAccount":"stake_test1uzwev96me9lpndczchkgaytxwrjlny97qh0dl4zk5hs3wagw9s0c3","owners":["9d96175bc97e19b702c5ec8e916670e5f990be05dedfd456a5e11775"],"relays":[{"type":"ipAddress","ipv4":"128.140.96.209","port":8000}],"metadata":{"url":"https://cardano24.com/premeta.json","hash":"bf9b1cfe6a7caf8adb5c868f49d6e2414960aa1fefd815694f4525622c73efd7"}},"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec":{"id":"pool1vzqtn3mtfvvuy8ghksy34gs9g97tszj5f8mr3sn7asy5vk577ec","vrfVerificationKeyHash":"cc688f3f4c8152bbc71cd7b2e8da059856ea06e1520cda4a0724c4cd2632acd3","pledge":{"lovelace":250000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzyzlml7sqd9kpdq5xv6y6dzme78xtgllpt3yv62mjmj9cg082gaa","owners":["882feffe801a5b05a0a199a269a2de7c732d1ff85712334adcb722e1"],"relays":[{"type":"hostname","hostname":"tn-preview.psilobyte.io","port":4201},{"type":"hostname","hostname":"tn-preview2.psilobyte.io","port":4202}],"metadata":{"url":"https://psilobyte.io/adatest/psb-meta.json","hash":"18c2dcb8d69024dbe95beebcef4a49a2bdc3f0b1c60e5e669007e5e39edd4a7f"}},"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae":{"id":"pool1vhdl0z496gxlkfpdzxhk80t4363puea6awp6hd0w0qwnw75auae","vrfVerificationKeyHash":"db19e2b96aabf2a9dd42c8d91d88bca9feff8286e77ca6b0873d4de3b06f7d1e","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1upylhjc96sxhmawg0z4vut0c2nku4nhayul28a0w2msnfdcjyehf0","owners":["49fbcb05d40d7df5c878aace2df854edcacefd273ea3f5ee56e134b7"],"relays":[{"type":"ipAddress","ipv4":"204.216.214.226","port":6000}],"metadata":{"url":"https://bit.ly/48BnVgU","hash":"c74260178b12b253edc70b950a9dc9dbbfb94c4e76f74172dbbe2ad4f06d0879"}},"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx":{"id":"pool1vhclwkzyf6ahyt260sh5gsr2udz47074q0slxp20sqn75xjy2xx","vrfVerificationKeyHash":"5cd33abcda61776fa52893373e96b8c63430635f74d2f604faf23ffdd7fe614c","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1upvhfqp8qywsyhe45zflp7ytphwuq8uzxtx0eed4agqsl3cx966vk","owners":["59748027011d025f35a093f0f88b0dddc01f8232ccfce5b5ea010fc7"],"relays":[{"type":"ipAddress","ipv4":"10.0.0.31","port":3000}],"metadata":{"url":"https://tinyurl.com/y2z4cvnt","hash":"91514f535468f45ee8bf8aae5c06e69bae95aeaec8775e2ee7c519ec42525c00"}},"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a":{"id":"pool1vc577hmjzpgz6mlccdv8ddwplfgvjtp639ykqd05anu6jcja69a","vrfVerificationKeyHash":"42d1ab64b06293ddcbf63dcf8466939bbfc470cf858b87be468abf46dca407ce","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1uq2ktannndxkd639acvkf3hnllh04ddvmh8ctu9e6u2mstsu6fv2l","owners":["1565f6739b4d66ea25ee1964c6f3ffeefab5acddcf85f0b9d715b82e"],"relays":[{"type":"hostname","hostname":"0.0.0.0","port":6000}],"metadata":{"url":"shorturl.at/itHOW","hash":"d37a27a9a28ece2c898936eaf431287b5cd7b4cd09247a941289273ca70a06a4"}},"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw":{"id":"pool1vezalga3ge0mt0xf4txz66ctufk6nrmemhhpshwkhedk5jf0stw","vrfVerificationKeyHash":"41762f6a5cf97a405230e278c52b9d711937858c3f7c5d54e5d892ca626798c7","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uz5ah77y8xvnxs6cyp979hg7fhxezjw39jfrpardqymnz7sg7ea8y","owners":["7981e93ea49a82b02369e8b16b3aca1dd0a015ada02cd72f5f23031b","a9dbfbc43999334358204be2dd1e4dcd9149d12c9230f46d0137317a"],"relays":[{"type":"ipAddress","ipv4":"73.222.122.247","port":23001}],"metadata":{"url":"https://bit.ly/3GNLlTI","hash":"251194136caedddada9227adfe30312af6c011a1628d178fa7377051bd385bd2"}},"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek":{"id":"pool1vevw38yxlyaxke29d40ace7jzz7d38qtcmd5kk36chf3shh02ek","vrfVerificationKeyHash":"9b49ae80c094db2bb49ae40e21deb1d7921fde3c8b469e90667c58859836d16c","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur5jhdf8a7lput2qhsa2hndls4h5yh5ukxr7yc7qkdm96jgnrtjmj","owners":["e92bb527efbe1e2d40bc3aabcdbf856f425e9cb187e263c0b3765d49"],"relays":[{"type":"ipAddress","ipv4":"113.43.231.41","port":3001},{"type":"ipAddress","ipv4":"113.43.231.41","port":4001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":3001},{"type":"hostname","hostname":"ada.nodes.mresearch.xyz","port":4001}],"metadata":{"url":"https://git.io/Jo7m7","hash":"a40c9206f1ccb3e6ccfe71a7eaf7f6d4a0d15770d7b097829089468ed9be21ac"}},"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3":{"id":"pool1ve7vhcyde2d342wmqcwcudd906jk749t37y7fmz5e6mvgghrwh3","vrfVerificationKeyHash":"612e0b5b84ff4e48a924b51e511485a4884a31e9f8094d7ff9f1e190bc1af30d","pledge":{"lovelace":9147456725},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urwy6fkeyl4e38mws7f8k34pyltq6qy5gpn86ws3l67cthccls3hd","owners":["dc4d26d927eb989f6e87927b46a127d60d009440667d3a11febd85df"],"relays":[{"type":"ipAddress","ipv4":"192.168.200.132","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tPl.json","hash":"dc4bd67f3b9b6138fcd11b6222a1550d402d367e303cce3e07a683e9c6af8f41"}},"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m":{"id":"pool1vurgy6s6u7yq36shf9yspesh3rrnd36km8xkghpcr4smgfz278m","vrfVerificationKeyHash":"1eec12eccea7cdfe494ac8b980a2c6d6a510d44ad87e3fa6f5092d34d86abae4","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/2","rewardAccount":"stake_test1ur0paqh4t5cwgflh4phdjkhvpwdvv3ps6zd8l7cv9ffk20qxjhqwf","owners":["de1e82f55d30e427f7a86ed95aec0b9ac64430d09a7ffb0c2a53653c"],"relays":[{"type":"ipAddress","ipv4":"185.43.205.110","port":3003},{"type":"hostname","hostname":"cardano.illusion.hu"}],"metadata":{"url":"https://www.illusion.hu/cardano/hunada-test.json","hash":"d93c4c6690186dfa973b6a7ee3203a16e953153616d7165895f4ab7b94de6212"}},"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa":{"id":"pool1vapqexnsx6hvc588yyysxpjecf3k43hcr5mvhmstutuvy085xpa","vrfVerificationKeyHash":"9f6e5d16ea05c1905907e8aee60b426c7680c32870c2ebe0be50281d889d5cf0","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzkxke5d0tjj0utd8tf2v75vytt6wjkx0tp4lr0885slcnqtq2ryf","owners":["ac6b668d7ae527f16d3ad2a67a8c22d7a74ac67ac35f8de73d21fc4c"],"relays":[{"type":"hostname","hostname":"mithril-signer-1.testing-preview.api.mithril.network","port":9091}],"metadata":{"url":"https://tinyurl.com/263p356z","hash":"276f035319f342a84f7e8abf8ec0befde2434bcb29f20f41afd09132fb083fd1"}},"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy":{"id":"pool1drrylt73ln8jcv0sthcenlkhuan2lfyhthkrrv3vhs9vv4eywdy","vrfVerificationKeyHash":"c2d3aa0b9ddf84ad6680c8d4dac3375664290b95a290ab7f27c2ebd52bd537cd","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1up2ldekqxmad8gu89l4dw9r9nde58xvfsh00uhs98x33w4qxeeugs","owners":["55f6e6c036fad3a3872fead714659b7343998985defe5e0539a31754"],"relays":[{"type":"ipAddress","ipv6":"2a01:e0a:3d1:770:216:3eff:fe05:9009","port":6006}],"metadata":{"url":"https://api.monrma.ml/meta/GATOR.json","hash":"66bcc65cac5cb109e0bd4c89696d2dc010902cef15d29f0b73250fc8855af5d3"}},"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps":{"id":"pool1d4nsv4wa0h3cvdkzuj7trx9d3gz93cj4hkslhekhq0wmcdpwmps","vrfVerificationKeyHash":"ca839c83356effe8d232fa8dd1335afcf923bf8d151cda561a6e94e0b9f38ac7","pledge":{"lovelace":1000000},"cost":{"lovelace":429000000},"margin":"2/25","rewardAccount":"stake_test1ur8csttjsny8t783dnfeylwangqh94zrahnps3qaw6rphcsswzsft","owners":["cf882d7284c875f8f16cd3927ddd9a0172d443ede618441d76861be2"],"relays":[{"type":"hostname","hostname":"relay.preview.crimsonpool.com","port":3000}],"metadata":{"url":"https://crimsonpool.com/red.metadata.json","hash":"e3db302e127a7929cd741de7df7744448906110f76fb6d7d793716937b7a49a6"}},"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7":{"id":"pool1dhheyj4y7q8c8nj3z3lkuv9vqfjw75rnt48eet8efcnvczeznr7","vrfVerificationKeyHash":"922ce518a7130d31bf31b4501585e51ccb58db022fb4d6fe429ec56eae5f9db9","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzj0zcvrpkt6lv6c2543vshmxqptnxux0qz5nt744e0gjtgycwrj8","owners":["a4f161830d97afb358552b1642fb3002b99b86780549afd5ae5e892d"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO1","hash":"666f5ac6701133f3b54b43785b2ce4ed4a12432d9a27f3e07583e8714fd8229c"}},"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua":{"id":"pool1da3p2l74sr347ln6gpmmkkqnnupfxhfh2d7fuur2g7twvddm5ua","vrfVerificationKeyHash":"d67f65e8c4fa6346a631b6623b35951e63596920c2ccf1c9d4a836fcea66846c","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzv69q0u5g7zdvepd96ljt0ngex4gdhules9pj9m73s8w3csm5xm5","owners":["99a281fca23c26b3216975f92df3464d5436fcfe6050c8bbf4607747"],"relays":[{"type":"hostname","hostname":"west.piada.io","port":6000}],"metadata":{"url":"https://piada.io/piada_preview.metadata.json","hash":"f4bf83eb38af4c225b5ee264085d5c0bb529e2016e50b731e590019d37c780f0"}},"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2":{"id":"pool1damnajda3jh3tch3zcpk9f5pajuyeud820n0q7qesxyyx62cel2","vrfVerificationKeyHash":"4afa907233b0f44c6d6293e323a986854fcb0bbc2ba818daa48dc5ef7dd8e048","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqnkzt5ju2c6enmg04k63hz9ryc4lgxrjr5ygfq88kfsymczryjw6","owners":["27612e92e2b1accf687d6da8dc4519315fa0c390e84424073d93026f"],"relays":[{"type":"ipAddress","ipv4":"52.166.113.150","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/aleincsharp/a/main/md.json","hash":"49222a06d7b62846b99583b1dcb76d835bb62b1cec8edf5c4744c1d398182a5e"}},"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh":{"id":"pool1wx2daxr2qgh4yhf9mn4se8kyadj4cnyad6zkt7eyufhwvz2ycyh","vrfVerificationKeyHash":"45a81cd08738c9bdb890a312f394a8aabc344f9f5e17dae53a877aa966f3293a","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzgcmw4nr5ytnfpvr7khq5nsgh87qc79yat66wzu7s7kzwcqdzjlz","owners":["918dbab31d08b9a42c1fad70527045cfe063c52757ad385cf43d613b"],"relays":[{"type":"hostname","hostname":"10.0.3.15","port":6000}],"metadata":{"url":"https://gaiastakepool.com/wp-content/uploads/2023/10/md.json","hash":"d123bf56ab892805ea6c215c88af2b73ba9e7eafc156fc19f27e9f6cf5441272"}},"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg":{"id":"pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg","vrfVerificationKeyHash":"5c44de7dcbbf485040edf760fe91855693ea7e2290a6a9f4b25efdc42a37b025","pledge":{"lovelace":0},"cost":{"lovelace":10000000000},"margin":"1/2","rewardAccount":"stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p","owners":["c13582aec9a44fcc6d984be003c5058c660e1d2ff1370fd8b49ba73f"],"relays":[{"type":"hostname","hostname":"test.stakepool.at","port":9001}],"metadata":{"url":"https://my-ip.at/test/previewpool.metadata.json","hash":"069457ca9fdc1bbeac1f7b4602b9d8fe8ee4255f8af724de2f79702c464402fc"}},"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw":{"id":"pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw","vrfVerificationKeyHash":"81fd203455043724337724f64e67ebbb208d3885ac0063c8b14c4b2bea0bec5e","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz3s7gd3rhe9ptechqj7z2r7l6l2gr42rv3lvu4grsdnapg88utxm","owners":["a30f21b11df250af38b825e1287efebea40eaa1b23f672a81c1b3e85"],"relays":[{"type":"ipAddress","ipv4":"51.77.24.220","port":4003}],"metadata":{"url":"https://www.stakecool.io/pools/pvcool-001.metadata.json","hash":"aade4d000f39df2f9ebfc4e23c9a3c49850236fcb924edc1f4da9be844d9691f"}},"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3":{"id":"pool1wjz475nwhq3fnhfvrjesf4pw70k27fnc5mzvsrzqlxfhy60rmu3","vrfVerificationKeyHash":"663f0b5d8bebb6622de18c0121d3d5bbcb1824b749fe4cbd41a0b232ff4b982e","pledge":{"lovelace":0},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uq3n393q95qu7nswzvnx688ukq69e4p3r78euf2kfwsxg2sygp0rv","owners":["233896202d01cf4e0e13266d1cfcb0345cd4311f8f9e25564ba0642a"],"relays":[{"type":"hostname","hostname":"preview-relays.onyxstakepool.com","port":3001}],"metadata":{"url":"https://onyxstakepool.com/PV-ONYX1.json","hash":"c9e5e56c46dd015c183978583e6f9bc71f7abfc4dc4f949ca12a6f5aff8778fa"}},"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd":{"id":"pool1w75ukvh77hhz8c2u6rhfjvqlxyptwg37yrkddzatu99qxwwlqhd","vrfVerificationKeyHash":"dedb7862c992b2fddfc5fe012e573aead78a0b844ca73748c9feb45a0d68666a","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urelmc7gcf4ukdf0lakusaunerkm8h6hqzvfgx8z4sflpjc4xeg7h","owners":["f3fde3c8c26bcb352fff6dc87793c8edb3df5700989418e2ac13f0cb"],"relays":[],"metadata":{"url":"https://your_pool_website.com","hash":"6bf124f217d0e5a0a8adb1dbd8540e1334280d49ab861127868339f43b3948bf"}},"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5":{"id":"pool1w757a30j8cd6nlf5dn9q52lm5ee0fn5permvtlr7mycucpkn6c5","vrfVerificationKeyHash":"6ee546ad0102c3576526fc600b4ab806d5ae3f2cd037110d4cd2505c31c05a18","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"9/500","rewardAccount":"stake_test1uzu2wh3mwjg0pua454hskmehvvte4ut9nn22tqxzuycdclq5kuf7g","owners":["b8a75e3b7490f0f3b5a56f0b6f3763179af1659cd4a580c2e130dc7c"],"relays":[{"type":"ipAddress","ipv4":"139.180.205.134","port":6000}],"metadata":{"url":"https://stakinghouse.com/poolMetaData.json","hash":"021ca91a9f24147bd20c4b7f9a4a1a329998e5fa2ac2a362b40850749ff54b1d"}},"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj":{"id":"pool10gqm62xy7caj6jhhefsl7h59kse3rv2esuh9rvx55eze2n8dlrj","vrfVerificationKeyHash":"8a9f2e79f70743bdc43b20da993c90b9512849f939fb5b6c3bdad80b5ff3261e","pledge":{"lovelace":25000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqj0hyhn72p495gntxzt4g9au76ycpcvku693mpexqxdk5s7cwqed","owners":["24fb92f3f28352d1135984baa0bde7b44c070cb73458ec39300cdb52"],"relays":[{"type":"hostname","hostname":"preview.relay.beerpool.io","port":6000}],"metadata":{"url":"https://beerpool.io/poolmeta.json","hash":"3f2d006aa149ac16689d6dd5d0dbbe46d87b41d4b8a282e7621996b6a64cd819"}},"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666":{"id":"pool10d303wup90j39mmvysf0lhr2xmr3mf38y5vs577nmlq6yy8n666","vrfVerificationKeyHash":"7e076f5dd02cead70dcd2058305392b67f66b8e4e6dc553fa032b918c5ddbce0","pledge":{"lovelace":2090000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqucdhr6kfvgzp2py95cqtqhvmpzswtgh8z6t2klnfr9vdgm7c25a","owners":["3986dc7ab2588105412169802c1766c2283968b9c5a5aadf9a465635"],"relays":[{"type":"hostname","hostname":"scarborough1.ddns.net","port":6000},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6001},{"type":"hostname","hostname":"scarborough1.ddns.net","port":6002}],"metadata":{"url":"https://raw.githubusercontent.com/poonasor/cbcp/main/meta.json","hash":"c23b67ca0d0c470bc2816afa0f0bcf4a46374148be2bcf80a204c03dd1148d09"}},"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x":{"id":"pool105wx68zqse6v4wyx09nkqhxhmf7e0zj349pclyqsjqch7953j0x","vrfVerificationKeyHash":"7b0cb25a2a5abf1a97523355002a173cd9ff4b2108b7ace2b4693ee406b06eef","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz575pc99c8tr8n09u9ek3vhuys7202naetcj83l6fuzrxqpd3ml9","owners":["a9ea07052e0eb19e6f2f0b9b4597e121e53d53ee57891e3fd2782198"],"relays":[{"type":"hostname","hostname":"relay1.doctorstake.network","port":6061}],"metadata":{"url":"https://doctorstake.network/pvpoolmetadata.json","hash":"8ad1a438122bcbab46ab21bb077e818948b2d53d8c9798d0598cad713214663b"}},"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj":{"id":"pool1057njzaaz280688ppewa3df4qshspvh98njh5n4lq4cg7ntcsyj","vrfVerificationKeyHash":"a63ae2342ab8c541978c1f12f0a2338b78b1486c9c6fcdc5d516df4f08bbd93f","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqmeldflttkgjsjelhzxmznfklc2d8awc9g2afs07m55kfcv70208","owners":["379fb53f5aec894259fdc46d8a69b7f0a69faec150aea60ff6e94b27"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO2","hash":"170ccb211dcc6ca0074b6f36077799a40a1d5aa421066feb09a5aa60692e9db0"}},"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk":{"id":"pool10cpz0zepq23hm6lrk8vgnsdwl772lasq9caaemvw9kh9ktxqygk","vrfVerificationKeyHash":"d203f215f4ebd6374ca67745a4d7ca99caff1b1b364cc630d18519e5ddb118ac","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1uzp6ykjc52zfcx5a5xqcxdwv20s66y0pqmzpn4pczuqpzqs83gzya","owners":["83a25a58a2849c1a9da1818335cc53e1ad11e106c419d43817001102"],"relays":[{"type":"hostname","hostname":"esq.ddns.net","port":6010},{"type":"hostname","hostname":"esq.ddns.net","port":6011}],"metadata":{"url":"https://raw.githubusercontent.com/bspdefi/esq/master/meta","hash":"7ae1ee1e5ad1645a9f8ee5bde677cbddafe60bcb1d014e655451ab5777aec7f7"}},"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv":{"id":"pool10c40pnzz3e00kuej05xfcs2ptkekhys48q7qc4jjcsysypj46qv","vrfVerificationKeyHash":"904c35106259f1c80add13381d730f8bf6291499b9df48dd19a930d0ab865093","pledge":{"lovelace":8000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uqk6t7lajwssrzer6xjarc0n78y26d7p3lswnzrnnegng5ggr5lhm","owners":["2da5fbfd93a1018b23d1a5d1e1f3f1c8ad37c18fe0e988739e513451"],"relays":[{"type":"hostname","hostname":"preview.seaside-staking.best","port":18000}],"metadata":{"url":"https://raw.githubusercontent.com/Seaside-Staking/m/main/m.json","hash":"d843ac7c8ab3a17fe28d5a68c975dc846fe87479364bcff7dd3b30e5c442ca07"}},"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat":{"id":"pool106rnmvjt0n27y34py0qytashgm04v4hlqurp3w28z789v8scxat","vrfVerificationKeyHash":"482a895958b40cb9b00aa0069ded71dc7516c203e8b30d3c9993d7a3e50d47f6","pledge":{"lovelace":10000000000},"cost":{"lovelace":345000000},"margin":"3/50","rewardAccount":"stake_test1ur8xh997mc3p7vduu0ufkm3wda6dan9wxv3zz4rhguzglqs3elq2d","owners":["ce6b94bede221f31bce3f89b6e2e6f74deccae332221547747048f82"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.141","port":6000}],"metadata":{"url":"https://t.ly/QCIeZ","hash":"5dba9fe7cd4be8e0aebea2012090d3f0f5dcb6f14f86b2a9aa0596b568763bb1"}},"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0":{"id":"pool10u9jtq8xewg3x80fulh7tuucktckfqzm9h38lz3ldp64y57fku0","vrfVerificationKeyHash":"2c1baf122a9eb546c89b8cd975461cf2a82fc0ef370cb53459e24d39ca852c4e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1upq35kyukearpcp58waywdpxxwc3k8kt75cs05mz3mssm6g7ac95u","owners":["411a589cb67a30e0343bba47342633b11b1ecbf53107d3628ee10de9"],"relays":[{"type":"ipAddress","ipv4":"13.229.226.159","port":3001}],"metadata":{"url":"https://git.io/JJWdJ","hash":"d5688399cc3e9c839a21d4ae577e1e7ac4de2e97f54cc05b228e4b53bc6fd52d"}},"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm":{"id":"pool1srdhn8v6ly36vdvvzthjkv6jjp7wqnzated6unxujrmzkqn40hm","vrfVerificationKeyHash":"8b69b1e8752c05884f3356cf375b648f62110997de4bb5f60f7ee2a75153b115","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1upzd8a7wtfwfumdlnf95shwezqg6hpqcvuah8t372atntas9rpfa6","owners":["44d3f7ce5a5c9e6dbf9a4b485dd91011ab8418673b73ae3e575735f6"],"relays":[{"type":"hostname","hostname":"cbfr.ddns.net","port":6000}],"metadata":{"url":"https://cardanoblockchain.fr/md.json","hash":"b29d5f3120ef7dd8cfbbf7204e5c923a6a21ae821f6870abb374a7adaedb76a4"}},"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5":{"id":"pool1stkzkvxqcd0vx0trg34wjntvs94kykk3260p6lrqsp8fjn8zqf5","vrfVerificationKeyHash":"c068cab82739462b7f5c3c937105e9194e09d6aba368c3ebdef1a235bca1d450","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1upps8qhch0n9a79fms75tgtxrvutt6qzj0lktz0fa7evyssnnpavx","owners":["31888329dde5e0bf984d564311c8d1f409212227301c6e63d9a0c80b","430382f8bbe65ef8a9dc3d45a1661b38b5e80293ff6589e9efb2c242"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"767a3a2606485fd86800173f6878b387ab908523019e2b181b48196b41114db4"}},"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9":{"id":"pool1s337lucxxrhl8tz8c3r6c4crk784xtga225w3uh2tm0w2kqf0l9","vrfVerificationKeyHash":"a34e2815232397c8680656eda7bb0a7f47531715a083e68432fd18c9a03049e8","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urp5muju83v5853rwpe7g7yt7u8la35uqpa08ym07ht7jqqymvhfn","owners":["c34df25c3c5943d2237073e4788bf70ffec69c007af3936ff5d7e900"],"relays":[{"type":"ipAddress","ipv4":"69.244.216.147","port":6000}],"metadata":{"url":"https://arcadiastakepool.com/INDGO.metadata.json","hash":"874b5cffdb3cb0720d82802bfc9b68446d858d852dd7694be43a291000fdadbe"}},"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv":{"id":"pool1sj3gnahsms73uxxu43rgwczdw596en7dtsfcqf6297vzgcedquv","vrfVerificationKeyHash":"e8c4df26e49c8f3c7a033297fffb3732f54563e89e5db9ef812380eb708a1733","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1up5zw8rhwj7ew09ggqtzdrrlg77xq3et7627wegaylgt5fc2lvmw7","owners":["68271c7774bd973ca84016268c7f47bc60472bf695e7651d27d0ba27"],"relays":[{"type":"ipAddress","ipv4":"5.12.45.138","port":1337}],"metadata":{"url":"https://tinyurl.com/mpde34ve","hash":"cb74d28b4cacd5153c146fb2bc5eaf3428d87db172ef4e8efb63575bb8b5e316"}},"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h":{"id":"pool1s5c2wws3s0trn7agdrwfgz3knq37pule65knyxh0s0dhkdvhn3h","vrfVerificationKeyHash":"e57ecb6a02223c6e8ee503c94929947462fdd2acdad2190360478274a95d6bb1","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1urj7dmqqqfd6qsl8638ezh3zu7lh0cjsfc92q2uf2d2calg458h8e","owners":["e5e6ec00025ba043e7d44f915e22e7bf77e2504e0aa02b8953558efd"],"relays":[{"type":"hostname","hostname":"0c563fdf.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://0c563fdf.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l":{"id":"pool1sk8n2v844jgpwzvpd4eze374pfvygzcrqlld2mfzx484yrtq74l","vrfVerificationKeyHash":"1cbfd07a6145d0d2859c4d114f7e71cb5b9fc7e29cbfa37a393db2637241ce92","pledge":{"lovelace":9000000000},"cost":{"lovelace":400000000},"margin":"0/1","rewardAccount":"stake_test1uqza4tpx4698h0w793fjhtnqh4amhyfcftyx78h54q2wh0qgq074z","owners":["05daac26ae8a7bbdde2c532bae60bd7bbb91384ac86f1ef4a814ebbc"],"relays":[{"type":"hostname","hostname":"relay1.dynip.org","port":28000}],"metadata":{"url":"http://panyvino.com","hash":"9ac046260b09e2befc7addb05b469f90279338821285da90f5cc6e8cb4c5ab15"}},"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs":{"id":"pool13q0eh32ptwmns8wyket34dnzal6jwltc6audq4s5ehcdg9e7xvs","vrfVerificationKeyHash":"66cf87b05688c2872b17f57da72550758a8cd23097484f68803b8f250d9f90bc","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq90sudgsaa0wj4z27yeeeggwpjyzh6w2kxvujffcax0llc8aqm32","owners":["0af871a8877af74aa257899ce5087064415f4e558cce4929c74cffff"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":6000}],"metadata":{"url":"https://raw.githubusercontent.com/politikoz/p/master/p.json","hash":"0321dff086209d0f90a1804199e4c296e91b2bbc6fdbb596af11a51c4d1d2c4f"}},"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4":{"id":"pool13zafxlpfgymf474uv52qt557z5k5frn9p83yr55zp267wj5mpu4","vrfVerificationKeyHash":"628980b886a274e43a09810a91f8a1e1d8241a8c67ddf51e78c8efff1236698a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1ur0vznanca5kzcwmjyscudf6f38wal8qxcr4nkefdh089mg2kg7lh","owners":["dec14fb3c7696161db91218e353a4c4eeefce0360759db296dde72ed"],"relays":[{"type":"hostname","hostname":"mithril-signer-2.pre-release-preview.api.mithril.network","port":9092}],"metadata":{"url":"https://tinyurl.com/2fej7w5a","hash":"85212d92b197fa7402e0047ed2f2411cabfab4ad1ee54201f5043c0a0fcbaeca"}},"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6":{"id":"pool13rh3005usjnr7ks76llpn07p0z4dxnxzp8aj33lnncaawfp9vn6","vrfVerificationKeyHash":"9ab23eba9fbe7912061f4e2dbc1a4f98ea684156f2811737452506c70cf54e44","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uq5j484c9yd0v2836knjpyldgpy3havq7252xjlyhd2kt2qfcesug","owners":["292a9eb8291af628f1d5a72093ed40491bf580f2a8a34be4bb5565a8"],"relays":[{"type":"hostname","hostname":"alpha.relays.preview.mochipool.com","port":7777}],"metadata":{"url":"https://preview.mochipool.com/poolmeta.json","hash":"96e877b9c2852f47a31570794f4845c3cf9c5e2a78687129a770d2c7768efd62"}},"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v":{"id":"pool1397kpa7ylzg4lqrmj3xr28xzq2548c8lafw90qyxvucsslap03v","vrfVerificationKeyHash":"9381a0f5511d5f033eb8b707ae620e038e6c8abca7f6d0200331cbe2c7b3cb7e","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1ur2wt3rv5sty3eh6ge9fcxapn0v4ytne06tvdvg8vlv7y8cqvs5eh","owners":["d4e5c46ca41648e6fa464a9c1ba19bd9522e797e96c6b10767d9e21f"],"relays":[{"type":"hostname","hostname":"relay1.preview.stakepool.quebec","port":4000}],"metadata":{"url":"https://qcpol.stakepool.quebec/poolMetaData.json","hash":"ca053fef4b28242ebbdec5bfe99fdcd0ce37927a281dbfd3173f09a59a7a8432"}},"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy":{"id":"pool13gsw9kvuepwhm8dfw7g2a2fwthxrwa088yq5xjaf39hqsekhqsy","vrfVerificationKeyHash":"c1cc951ff3f672f20e31ae5bce743ebef7cf1eed6594c2842cf76d29d6d91f09","pledge":{"lovelace":1},"cost":{"lovelace":341000000},"margin":"9/10","rewardAccount":"stake_test1uqh2r3mmdwgqqzjc3fqtfgx3a02tlx6dvjs6t56aeyqnnds9xydza","owners":["2ea1c77b6b90000a588a40b4a0d1ebd4bf9b4d64a1a5d35dc90139b6","d9cabfbd20d5e0250f063fc138f1c7dc401c1a84cf418059f4b3d5fa"],"relays":[],"metadata":{"url":"https://www.where_metadata_file_is_located.com","hash":"1cc405454be71cd728d3842d30ba187d5ea3287d05056e62df4a90f87b579891"}},"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66":{"id":"pool13vuxg9gw3fftvfg56xwl5rq82nqtjhhkeacxtg0jgqlfup9qz66","vrfVerificationKeyHash":"96fd4b5bbeedf7fb46010d970875c434fc59ceecf566d240dd88489421ae3161","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up6hq4rnpfmykas4p3f6kytpuqzn0s2p3xwcegng9ysn0egzcqrr9","owners":["757054730a764b76150c53ab1161e00537c141899d8ca268292137e5"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://adastakepool.t-dx.com/test.json","hash":"20c5dfe0fc1aa2190ec6e344523adbbce96a03edd47f0009a40dca1fe4f260cd"}},"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s":{"id":"pool1jx2uun9v45gtnlkq83xj6w4chy8rl5g78qqd026e0w89wt4vq9s","vrfVerificationKeyHash":"d9d2fae43a1c6b3efa0ee48142292e4b2a864150e8030f1fedf2115a60bd0442","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1up4l9hjwtqjwgx3n25q76tw757lagm20f6zk3dc9wmmrjeq0c0s3k","owners":["6bf2de4e5824e41a335501ed2ddea7bfd46d4f4e8568b70576f63964"],"relays":[{"type":"hostname","hostname":"koios-preview.themorphium.io","port":6969}],"metadata":{"url":"https://bit.ly/310ytob","hash":"1f71674f2483c9cdc3c65c77a910dd432d0ae9026157584e34380fdad3a6f44b"}},"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m":{"id":"pool1jsa3rv0dqtkv2dv2rcx349yfx6rxqyvrnvdye4ps3wxyws6q95m","vrfVerificationKeyHash":"4c75e85016f939ff51b56b9e676ac7b164f36bc09f68782991c000ad54ef55e5","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1upq49hkcwpayt9dfwe3sfz94t32zqypytdp4lux7fh0uhwclxwzmm","owners":["4152ded8707a4595a976630488b55c542010245b435ff0de4ddfcbbb"],"relays":[{"type":"hostname","hostname":"cardano-preview-relay-1.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-2.syn.pizza","port":30800},{"type":"hostname","hostname":"cardano-preview-relay-3.syn.pizza","port":30800}],"metadata":{"url":"shorturl.at/acKO0","hash":"acba1a147fbce589cf1d556097b19e441fd2506f86417db03e5cdc06395c06ab"}},"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw":{"id":"pool1j3x329u0uxh9s9vjvsad9kx37tzal8gndz6ttxumcz4nw947djw","vrfVerificationKeyHash":"dccaf70188440911259f798f29caec271cb561d250fcdbe56b9eb0e3a73a12f9","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1upvzzxmzr02kw529cna76e9aga4udj7x45crxx83z2zgvqgu754de","owners":["58211b621bd5675145c4fbed64bd476bc6cbc6ad303318f112848601"],"relays":[{"type":"hostname","hostname":"relay01.preview.junglestakepool.com","port":3001}],"metadata":{"url":"https://csouza.me/jp-p.json","hash":"7fdeea9ed970f2e5eb06a7a8c272c84ce2ca2f6a48ab5912b75f25346a0acbf6"}},"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84":{"id":"pool1jnakc0ghqgu0x3ayg3yyut7hmm3f46g8ssrh4hkeaqz7vtylv84","vrfVerificationKeyHash":"5d6cfbf6cb00aef9009058eec7e6a2aaa4f341d8ff0862a6cc2840c308a2f8b5","pledge":{"lovelace":50000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uzd3kkuwvul6ydz869tp8fym6602y24wqww7z5qtc2a9pnst74u6p","owners":["9b1b5b8e673fa23447d15613a49bd69ea22aae039de1500bc2ba50ce"],"relays":[],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"16ccef737d542fcc0ee71f8ed13526c7d7cd76858326cdd7ca417ab93e889bbc"}},"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd":{"id":"pool1n935yzlmu7528fx4qjf2gak0cdv2nune9cku730zg7vh707rnnd","vrfVerificationKeyHash":"829ee2ddb2984b5e23c93a8b67a7b7aa7af02da2340177ae386d54d8c7ad42ee","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1uzflds3zydwqeqk28qy97zwwum7v862vm0uh4ll6uxkxrts92gtm7","owners":["93f6c222235c0c82ca38085f09cee6fcc3e94cdbf97afffae1ac61ae"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi3-pv.json","hash":"6588af1eb497556ea55193a3e0cc15686b95ac38695d42417ccc696063e8b21b"}},"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5":{"id":"pool1ntts25w3wvt7gjrxs58esflkge8ssel9p0l44pa3l83uqvsp5h5","vrfVerificationKeyHash":"891823d960e31bb9f1fbd8c64b28771c917f46fbdc036ed29bbbef5005e780bb","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzklqrm9xmagw0t7r63mf8ce8x26yawrqcr6ux5r3x9ve5crp8sha","owners":["adf00f6536fa873d7e1ea3b49f193995a275c30607ae1a83898accd3"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNF","hash":"8ed31aa584c62fe11967425b6596144ca7822128031d374fcc1a43e662c914f4"}},"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh":{"id":"pool1n5aacu3chuvxkm7p2mwcpdvnmkkkvpsje6mclnwj59c6x3wpghh","vrfVerificationKeyHash":"bad28ede267da0d5dc61af65cfa17285257d81ac106b74bd77f507a5b161498f","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1upx0n32j5cne3p0n4pervdjy43j7222h656vgl2uksrxe6gxujj3l","owners":["4cf9c552a6279885f3a872363644ac65e52957d534c47d5cb4066ce9"],"relays":[{"type":"hostname","hostname":"cardano-relay.int.t-dx.com","port":3000}],"metadata":{"url":"https://bit.ly/3O7yle2","hash":"2ad5e7a64a28105e386ec12ad29c3bb6b8a28d07d69da93f11a0c99cc2f737e2"}},"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y":{"id":"pool1nk3uj4fdd6d42tx26y537xaejd76u6xyrn0ql8sr4r9tullk84y","vrfVerificationKeyHash":"590be0c42cae1fa7e93ab166343a29c83237f297f6c10ea35e5c5e6cd2eb32fa","pledge":{"lovelace":1112000000},"cost":{"lovelace":413000000},"margin":"1/50","rewardAccount":"stake_test1ur9h9qtr739mhuypqmhfxvzux3g9h0tksew8w6ravaj3t8qacq6d9","owners":["c9dc49a676087ba0fb1ab1f28b209e647b4139626d732455bb7d5582","cb728163f44bbbf08106ee93305c34505bbd76865c77687d6765159c","f4cceaa5fff7b592e39519942ea8c3b823f3fee622bb3c81a5f5150f"],"relays":[{"type":"hostname","hostname":"us.netspectrum.com","port":13001}],"metadata":{"url":"http://us.netspectrum.com:13002/pool-meta-data.json","hash":"6e31d534b0d8bdde4ce9bd04ac8d7a6906b680304a3150400304c46f0f393af5"}},"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp":{"id":"pool1n6tcrkjjn7dr70e4vjmtayswl2rne947fue7w2htthaq6men4yp","vrfVerificationKeyHash":"9792680b674d04b392cb637a223d327d7af568ef358080cea4d2e10790040f08","pledge":{"lovelace":14000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uq9f3jgmfywhgcmhtd0mv7m3qwp22ah08sd3x8s4ljylpxghkf2yx","owners":["0a98c91b491d7463775b5fb67b710382a576ef3c1b131e15fc89f099"],"relays":[{"type":"hostname","hostname":"preview.blockchainbill.lol","port":3003}],"metadata":{"url":"https://preview.blockchainbill.lol/SNSOB.metadata.json","hash":"4792d9a653baab097047724e97896697c4d1f04accd9e9d126f1786102f1e2d4"}},"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh":{"id":"pool15qlyejqxu99n2p3980wtwmne4ykzd9vn4mz7ldtncepnuh6rqeh","vrfVerificationKeyHash":"94ac627b9db9da8d083bd83a6e1e902788566b4db5ba691f5c7f12ef717ed1bf","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/be39feb0-5cba-4552-a044-68f.json","hash":"54920331d130d8949bff1fd6b3f01bc693de7d36de32fc9a29ea2ef60a65da71"}},"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj":{"id":"pool15zu40d05gy43gyyxy7svumkxyac9qy6shlpdrgyz5gh8g48qaaj","vrfVerificationKeyHash":"3b18c66658a5d9dd1a2bd876f1e0b076451641c41017017ccc6b448bcf38c529","pledge":{"lovelace":70000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uqz0vs8vnxqpdcuey0qcvufn95gydj6x5g37wgy975wlfwgdhyuk4","owners":["04f640ec998016e39923c18671332d1046cb46a223e72085f51df4b9"],"relays":[{"type":"ipAddress","ipv4":"184.73.135.122","port":3002}],"metadata":{"url":"bit.ly/3Eh3p7A","hash":"9b9d00fcec79d306e3dffcc6865d4088f35b13c268e32c7a2fabb1845947f9c7"}},"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7":{"id":"pool15rneqfpzde87huszzstymzxu6f5u2jqelsaczr99e3z62dywau7","vrfVerificationKeyHash":"74838ee89acb2caf072cd50705f0dd0a958af9cb20ec70500ee3c2c2e800b316","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1urx0fs8j3lqfkjtmuzd64futqtucqkmlj32ufgza2xhhutgmx79n2","owners":["ccf4c0f28fc09b497be09baaa78b02f9805b7f9455c4a05d51af7e2d"],"relays":[{"type":"hostname","hostname":"gateway.adavault.com","port":4061}],"metadata":{"url":"https://adavault.com/advpreview.json","hash":"336a78f742447c0af780583059167eff24a4268dad3947373397f5ccfe6a883e"}},"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22":{"id":"pool1580a362kwnqt7v2lgun5t02u0r7dyl70x9nsy37zj46xkq8mp22","vrfVerificationKeyHash":"69f0a026835764345061abdd6d566ae509c1cdfa630999cdc57b5e43a6d6c6f7","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqnxa67e6jc4dr89kdkr0e6ucvvzucd772p9vnalrr7h0xskjsgeg","owners":["266eebd9d4b1568ce5b36c37e75cc3182e61bef282564fbf18fd779a"],"relays":[{"type":"hostname","hostname":"s2.lost-in.tech","port":3001}],"metadata":{"url":"https://cardano.lost-in.tech/LIT-Pool.metadata.json","hash":"5e30e12a869cf6f5b8c8fd2d74cccd7e0825b37719a978914877b56e50e82bf9"}},"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng":{"id":"pool152x6q0ly050yr7cnatwq0087jzwyxxlkyuch6s4xex8ljaeu0ng","vrfVerificationKeyHash":"c4b14fc6e1e4a632f51e245990b0d9a75096f26ad22930df52ac06ad2dc06149","pledge":{"lovelace":5000000000},"cost":{"lovelace":170000000},"margin":"1/20","rewardAccount":"stake_test1urc970azyxew8lf0s0wdw8z5pckjxcdn63v7575v4upprks6h5yys","owners":["f05f3fa221b2e3fd2f83dcd71c540e2d2361b3d459ea7a8caf0211da"],"relays":[{"type":"hostname","hostname":"testnet-relay.xstakepool.com","port":3001}],"metadata":{"url":"https://xstakepool.com/testnet-xstakepool.json","hash":"25d14c92cd852bbe666858ba040db7d5dd0767838e604e16c12b8fb842cf89ec"}},"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet":{"id":"pool15jqsjphnxg7hcx2rvd0ryhg5xwshg7xktthj3zf70nmxx9ffjet","vrfVerificationKeyHash":"35cf12acb20ade24b4a1b09b8b033299e0551a556519b42ca47f32511e64531e","pledge":{"lovelace":9369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uz7ne2udchys5e3kjfzpjj2f84v63csfhhpluz80kfwegpqawzmqc","owners":["bd3cab8dc5c90a663692441949493d59a8e209bdc3fe08efb25d9404"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3":{"id":"pool15j50kmtrmy3mxm0e5dej5vka9keapqtm3gv2zq96lqgjqc6sdh3","vrfVerificationKeyHash":"e5ae4cca1fc629ef51b88e6224dddc93d9b87eabfeee18cfc90fd7b35e396dc3","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzjqrwex060z6w0f3j87sz6cehvmw2h5hk3szz0kyth9f7sd977ss","owners":["a401bb267e9e2d39e98c8fe80b58cdd9b72af4bda30109f622ee54fa"],"relays":[],"metadata":{"url":"https://pastebin.com/raw/xDxT4v5n","hash":"da9773e26d50eea8283a80ff5b0549c28ff2ec4d64015e7532b5acc22f0c57ee"}},"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk":{"id":"pool15e04rzx0lu7hryn68l5n8n6nd9yum4rn48j64kupadc4qalulgk","vrfVerificationKeyHash":"678c83627cbe1378f39d12b5c7bdd27a2e90358a7b80fa0cece79e39139f08b2","pledge":{"lovelace":1000000000},"cost":{"lovelace":444000000},"margin":"1/100","rewardAccount":"stake_test1up28m49ylffdnc8fwty0d5waau8udzuzv6uh0e6m0n2n5lgactsc7","owners":["547dd4a4fa52d9e0e972c8f6d1ddef0fc68b8266b977e75b7cd53a7d"],"relays":[{"type":"hostname","hostname":"ava1.sytes.net","port":6031}],"metadata":{"url":"https://avacsp.com/metadata/ava-preview-MetaData.json","hash":"c0db5e94c1dbe73a6abd0f837b8165d06709e7c02ef02ca2d7400e04ae972db5"}},"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j":{"id":"pool15ecfwjfqcc35gvpqrmut0g5hr7e0u794ywkxg5tk8rl2q4zqu9j","vrfVerificationKeyHash":"c85155a3402b3d36b205b7657eb1c787f7ea9c5ed02003a39c08ebb2530453bd","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uz5h6parv7gfk7hk3kgna07svwq5qaumrfut437965r0p4gt650jf","owners":["a97d07a367909b7af68d913ebfd0638140779b1a78bac7c5d506f0d5"],"relays":[{"type":"ipAddress","ipv4":"185.2.100.31","port":6000}],"metadata":{"url":"https://me2.do/5QGindar","hash":"13ff652f003ffde0d19c92450f89b19b056f7976f758b3e1e4f95e5ec58f10eb"}},"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp":{"id":"pool14rn9dq87dgj2z8g3lp4n0a78fewxff3gkgjkmz72ew44ym79xpp","vrfVerificationKeyHash":"3e583b72203f1659bb73653baf0e2d7850d238d4c96435eff4331060bf926801","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uz7xx6hy2xnnrmz0av0xl7qn9vdkhage7myf0nd49e7mvcg6z0smn","owners":["bc636ae451a731ec4feb1e6ff8132b1b6bf519f6c897cdb52e7db661"],"relays":[{"type":"hostname","hostname":"f7ca89d1.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://f7ca89d1.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3":{"id":"pool14fdr8cpz0qpgzkrucu2q7hst2pa3u5ssfej7kuepdq4v7lkyxg3","vrfVerificationKeyHash":"896bac573601caf048566f3562e99be9c742832ad7e4527b5b1cdc330e9384c1","pledge":{"lovelace":30000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqr9uznkqeuv6e7ez79yf8us678xus3y6ac0su9d253r0eg5l4clt","owners":["065e0a760678cd67d9178a449f90d78e6e4224d770f870ad552237e5"],"relays":[{"type":"ipAddress","ipv4":"75.119.130.108","port":6000}],"metadata":{"url":"https://hamster-stake-pool.de/preview_poolmeta.json","hash":"81813b6eb7904fb8533aa51f9aebc16f14e6ade80576078b83a8b307ace6b987"}},"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg":{"id":"pool140axp85wjr7qhwtf5y9utlht6eq42n4sl8wjh6fmlu02gel0aqg","vrfVerificationKeyHash":"9b0cdfd880b67152d7b808ee37f33c0e9181ebda8ecab369b239fdbfdf3ecaad","pledge":{"lovelace":45000000000},"cost":{"lovelace":170000000},"margin":"1/1","rewardAccount":"stake_test1uzyvlggps4p4c0aejtr4qqxywwp9gg9xk6f9u49s7tzcdmqstww5s","owners":["88cfa10185435c3fb992c75000c473825420a6b6925e54b0f2c586ec"],"relays":[{"type":"hostname","hostname":"adrelay.hawak.cloud","port":6000}],"metadata":{"url":"https://tinyurl.com/hawakpool","hash":"f06c26e560a1395007149ef13dc7301348a77f43f67ce9f504f0be571cc59e6e"}},"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm":{"id":"pool14cwzrv0mtr68kp44t9fn5wplk9ku20g6rv98sxggd3azg60qukm","vrfVerificationKeyHash":"b8b2e69a0b590af68cbf1411aad7c93c1b48346047551461ec2a2ccf9dc182d6","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test17r76qtu38a29387whc40a5e6da3xqrkkf87sf78kjgggals8xt5hy","owners":["69c9b2655d27e06722905f4ae9e356a18886340964baa472f29d8586"],"relays":[{"type":"hostname","hostname":"preview-node.pool.milkomeda.com","port":3001}],"metadata":{"url":"https://is.gd/Ikn7kl","hash":"8fc709584d2f7d859a902539fc28e8c9a7f6d046b8c8d89a793aad1594fbdfc2"}},"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0":{"id":"pool14u22dyym8k2g2twvgct86njg3m9cc7j2fc74yamy6672s6up7a0","vrfVerificationKeyHash":"600f54b88675a354a87bea473ac776fb2684254d55431585904b89b71ef74620","pledge":{"lovelace":200000000000},"cost":{"lovelace":170000000},"margin":"0/1","rewardAccount":"stake_test1uzpck3ssxf3cw5mxs8umex3stuf4pk5m9qyfp57ymrkc3fg0mmtsj","owners":["838b4610326387536681f9bc9a305f1350da9b280890d3c4d8ed88a5","f999c5ee8ec8de584be7f07150c00a841c8b0be6ca6acb56c2c31c43"],"relays":[{"type":"hostname","hostname":"preview.leadstakepool.com","port":3001},{"type":"hostname","hostname":"preview.leadstakepool.com","port":3002}],"metadata":{"url":"https://raw.githubusercontent.com/lead-pool/l/master/p.json","hash":"91a080cf2aa797c24efe5b26330a634209ec152a0f079ffc0b31157a6f4a6993"}},"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v":{"id":"pool14lfkzjvlp2prlwt0ykxceemhdd4ej9rc0em4xt4cnpvt2fmtg9v","vrfVerificationKeyHash":"71762169bc3dfc516e39854f78e572f24d5a7ab85d42a55c1bfd4e86e0b531a7","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1uperlgjrwsqv0gluun7xk670lnevmlc9v3m0zxjx76p7z3q95gj3k","owners":["723fa2437400c7a3fce4fc6b6bcffcf2cdff056476f11a46f683e144"],"relays":[{"type":"ipAddress","ipv4":"184.174.32.106","port":6002}],"metadata":{"url":"https://mladenlm.github.io/poolMetadata.json","hash":"30c5b5372462def97e466b84ff8179ab80dc4deac67b61981e9db947915c8558"}},"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth":{"id":"pool1krjtqew2jg203nvnec39vt77leqyfsc8e42u4ywx534t62h9fth","vrfVerificationKeyHash":"3a238800d748179b955445d9c2488125785f1e271e8d43449e292d5a7c4b7b71","pledge":{"lovelace":1000000},"cost":{"lovelace":200000000},"margin":"1/2","rewardAccount":"stake_test1upxs40dqlfrh4gkd7djhwr5qlq225c3etv66f8m0mgsahxgk45c6j","owners":["4d0abda0fa477aa2cdf365770e80f814aa62395b35a49f6fda21db99"],"relays":[{"type":"ipAddress","ipv4":"212.24.98.109","port":5333}],"metadata":{"url":"https://adawallet.io/public_files/MDS_ST_meta_v2.json","hash":"ef3aca5a37d0bc4d81c4f85da513e3565be372e9bc3ecdf6fe5cb1a5bb55bff2"}},"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye":{"id":"pool1kfzv75la3rfgrh3uly7dt5syqxf0r2n2khr7s6ylhjmnkkdfwye","vrfVerificationKeyHash":"0b9f2a9f73eb7d35054626b561f9b4d4d4d5040a547c0cc2beffe50829b36c93","pledge":{"lovelace":1000000000},"cost":{"lovelace":345000000},"margin":"3/25","rewardAccount":"stake_test1urgqett9quhpsjm4cygp3uf7u63tz5gzx4czf5t965xejegd67zc0","owners":["d00cad65072e184b75c11018f13ee6a2b15102357024d165d50d9965"],"relays":[{"type":"hostname","hostname":"xsecpreview.infra.getlenses.co.uk","port":3000}],"metadata":{"url":"https://tinyurl.com/bdfmuct6","hash":"afb2956e054911e178c9d5556e560155e2f663022112bc476820348d1006eb32"}},"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg":{"id":"pool1k4rdvvuhy7h927psyew9syupwddy77t4j8lc74hpgzpvv7yklwg","vrfVerificationKeyHash":"ff8d88fd6b39985c9ddbef0363f87ec0ae32016c62a305e2497e4b54cb161d52","pledge":{"lovelace":6000000000},"cost":{"lovelace":340000000},"margin":"3/40","rewardAccount":"stake_test1uqw2h3092ka5mctav6d07cwumxagvcm9zs2aj9g2m4n74cgcf5r9x","owners":["1cabc5e555bb4de17d669aff61dcd9ba8663651415d9150add67eae1"],"relays":[{"type":"hostname","hostname":"preview-test.ahlnet.nu","port":2102}],"metadata":{"url":"https://ahlnet.nu/pool/preview-meta.json","hash":"8f52b4840726c157c50c1b972fadb21b2f0c852e99004a48e649319218960c55"}},"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea":{"id":"pool1kkhr6m0syfgqamr3klzhj2trjd3q4vyg8trzdjxdp64nqzshwea","vrfVerificationKeyHash":"b4ea03eb58cbfa9059e0b8478f09762f002e4cebc9aae7bf6de04b9ccebb9d94","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzx366cdgqv9lg69y7ufw59af3y7yh9jxflnym8z8qz3pfgmef2r8","owners":["8d1d6b0d40185fa34527b89750bd4c49e25cb2327f326ce2380510a5"],"relays":[{"type":"hostname","hostname":"preview.adanorthpool.com","port":9613}],"metadata":{"url":"https://www.adanorthpool.com/ANPPREVIEW.metadata.json","hash":"e4f9a2cf26e72b93955893bbcae4a37c27c061b04ab2a8d79856350e6dc3fb26"}},"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum":{"id":"pool1kewhspt8fsxk9kx6pw2nukcrs940dkwcwh89llj233ahghexeum","vrfVerificationKeyHash":"9d009cac22c72b8200e473c71330cc5907832880a2098c1fea0affb68df5f52f","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uptdhvz442mcem2lqd3y23nlypudpdm7d32aeyn3y72d8tcs7scmy","owners":["56dbb055aab78ced5f036245467f2078d0b77e6c55dc92712794d3af","b0348c669fe3cb7446b5084a669e304dd1cff63762352e8355e14482"],"relays":[{"type":"hostname","hostname":"605691fa.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://605691fa.cardano-metadata.stagebison.net/metadata.json","hash":"c0719d1437e1bf09915b0dbfaae2e384d737e326f17d8f1ae82d6a40111a1035"}},"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy":{"id":"pool1hykgd0kw0n6vx08j8vcyu7q0q6rqkwxr7cql03vf2at9kdmlxpy","vrfVerificationKeyHash":"c636a7c8aa43ee105919d24a62f0d80bdc3981de0951672e7a316cc9a0f57b74","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uz5sce2cv9kkykjqhakrvma65xhlyzt3p7n4aamexkg0jtcf54jnu","owners":["a90c6558616d625a40bf6c366fbaa1aff209710fa75ef7793590f92f"],"relays":[{"type":"hostname","hostname":"node.armadacardano.io","port":6000},{"type":"hostname","hostname":"node2.armadacardano.io","port":6000}],"metadata":{"url":"https://armadacardano.io/metadata.json","hash":"45ce75ec2304fce3afb1a8c11316cedc5a20aea417b58ca59f6ad97ea4518112"}},"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e":{"id":"pool1h2wx7wnf079jfz6vyzs9jnjczme2nlufryyw68e2fhe2x0swk3e","vrfVerificationKeyHash":"d9a1ba9598e9613974ce89526c30d70bc9763af61b86d5e28638ecfc88e837ce","pledge":{"lovelace":45000000000},"cost":{"lovelace":340000000},"margin":"1/500","rewardAccount":"stake_test1upam5e8xunaktc2qwwq3aa6wumkya75x68ce32a0dkfh60qyxhst8","owners":["7bba64e6e4fb65e14073811ef74ee6ec4efa86d1f198abaf6d937d3c"],"relays":[{"type":"ipAddress","ipv4":"159.138.55.134","port":3001},{"type":"ipAddress","ipv4":"192.168.0.105","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/mj83263/test/main/tp2.json","hash":"5ff4cd6df6afda00a70f9480b72acaa0e2271371c2e6daf89e7c53ef6192ec90"}},"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp":{"id":"pool1htdmnme5s6d824trqq33czlm82f473w04h4xghprzaj3cff53mp","vrfVerificationKeyHash":"98a662ae890d7c2d48b8bf5fb55602c20a04d59e499d0446586189680d039a9f","pledge":{"lovelace":8000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1uzsapk9c9x5frdk99wqktd6udusxhe6u0qnaryxmg4cqe9clhncf4","owners":["a1d0d8b829a891b6c52b8165b75c6f206be75c7827d190db45700c97"],"relays":[{"type":"hostname","hostname":"relaynode25t.irfada.co","port":6000},{"type":"hostname","hostname":"relaynode26t.irfada.co","port":6000}],"metadata":{"url":"https://tinyurl.com/munhhxv9","hash":"dfe61ced98cfa2fd81658686ea824910f3e6a5306c89bf1bc362f54e2000927c"}},"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp":{"id":"pool1hs2ah9q0kjy8rx7rf7qdavhmxznnesfctlu8lkqzukfdsp9kfcp","vrfVerificationKeyHash":"9cd4eab04ea0073076b33c6501787d932edd031f49daa0c0fdecc4774a2ef977","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzuahv2t7qhvgshhsnj47xhmh32n6hhpgjk5e296kwyr8lq5fvd5s","owners":["b9dbb14bf02ec442f784e55f1afbbc553d5ee144ad4ca8bab38833fc"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l":{"id":"pool1h7c2jq3pmvn3f8jht4ulhgha3h60k6syu3rw6pmkfrhqs9j7m0l","vrfVerificationKeyHash":"941c6ac6afb53de451e95ec203d6093ce6c8ef0fd58e8a78e406ac3bb668c796","pledge":{"lovelace":1000000000000},"cost":{"lovelace":340000000},"margin":"1/25","rewardAccount":"stake_test1uqkn6dhxl7mg542afm858jxudl7cwd9f0gys3qkuh3al5eq5zzhss","owners":["2d3d36e6ffb68a555d4ecf43c8dc6ffd8734a97a090882dcbc7bfa64"],"relays":[{"type":"hostname","hostname":"relay.test.lidonation.com","port":3010}],"metadata":{"url":"https://test.lidonation.com/metadata.json","hash":"edc82ecfb1cabeb15cb122bd6a65b6de6006e2201617e3c8dfdf8cc652baacfe"}},"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk":{"id":"pool1hlgaznlja8jau6wg3u4curvs7ng6yhxaxa2urp7qylxkc2e4pjk","vrfVerificationKeyHash":"f727fdc0e656c1faea14c812b9cf7648795f5b606f6428f6e8dd68d0f729514d","pledge":{"lovelace":4000000000},"cost":{"lovelace":340000000},"margin":"3/200","rewardAccount":"stake_test1uzpp6e09x70k4wu4ccwujgwfdjwluf4nzyekkaa2l0dlgjq07ax2w","owners":["821d65e5379f6abb95c61dc921c96c9dfe26b311336b77aafbdbf448"],"relays":[{"type":"ipAddress","ipv4":"51.255.82.47","port":6000}],"metadata":{"url":"http://config.ada-staking.fr/metadatas_preview.json","hash":"86fd4e3118fe835008a699f339ec111ac35682de1d449b15255544b1570b601f"}},"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339":{"id":"pool1cyqx4ecp36gkca407ml2hf9pqauz3d3qchkpxndlnvqp60j2339","vrfVerificationKeyHash":"1764a62306c3f165ab2a890709c9b5c17559cfbadf77923948d3dc8fa41bcdf6","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up0me0jesha4wvnnn5j28tdkdqpk0ufdwa8fk9wdl4q9kts8rpqh9","owners":["5fbcbe5985fb5732739d24a3adb6680367f12d774e9b15cdfd405b2e"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNG","hash":"de0fcdf1da51661d27fbf97ce6e78d71a038e5582e90659eb216c19d66738cfa"}},"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas":{"id":"pool1cf88r4wgq4m2pa7phq6hevg798n0gfkteeq52vcvum8hc5czxas","vrfVerificationKeyHash":"fc012f1cd6346ba64f1faed6ad9676769d1cb12c46901c8b2c12f6bb71d90aed","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1up536agqy6nr5u0gpddwjlx5m2r9sevhd4nwp5su8ktg4wqlrp2vc","owners":["691d750026a63a71e80b5ae97cd4da865865976d66e0d21c3d968ab8"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO3","hash":"07945a19eb6413ce7b8523495d7670c3d2b6ce90f75a54c023845a87fdde2fb3"}},"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5":{"id":"pool1cv9fr477zeznqrk8uxa5hh72tsjukkuqtnet7wgyxx3rq700kl5","vrfVerificationKeyHash":"b1ab6692d0af93c5e61e99f4ba39a5a10352b729fe370145e35e5eb39bc53b13","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1upv2favfz6vqs782yg9kc8sxdely9g3dqd4w4v492jw6hvcypj9hu","owners":["58a4f58916980878ea220b6c1e066e7e42a22d036aeab2a5549dabb3"],"relays":[{"type":"hostname","hostname":"previewrelay.stakepoolcentral.com","port":15654}],"metadata":{"url":"https://bi-preview.stakepoolcentral.com/CENT.preview.json","hash":"fb6a7bdf6c6827d16c33b1173cb436897cdad7a3fe399c01813797180fe97db3"}},"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m":{"id":"pool1cwsvslzd5y2rp9qt6ne6hhrwdxuweupdfy243erke3euytp7j5m","vrfVerificationKeyHash":"654ed6220e9cc5fd5ceb71f1bc1b4cf34e1826eea3261ba595cc290e9469a79f","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urk948umhqw2z6c95r0dhdr62898urgf46y2plpzre2fe7qzntp6f","owners":["ec5a9f9bb81ca16b05a0dedbb47a51ca7e0d09ae88a0fc221e549cf8"],"relays":[{"type":"hostname","hostname":"preview.relays.liqwid.finance","port":3001}],"metadata":{"url":"https://lqwdpool.s3.amazonaws.com/metadata","hash":"9af8ffcc01e792191a220e45b1342178ccd65ac6ce721ee3c37c3614ce18c2a4"}},"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6":{"id":"pool1ceact5c2pt4ynn5nwv2rqm04krzsm4jd26r468mdqannv5crxd6","vrfVerificationKeyHash":"c2075042ece1ad9b41000c53598349ec2735c649f456f3836901ade5b31eca10","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uq0r8cvtjnz8y0kw4x09rv3fk8gev98gp5fg28u0zk0kaqgwxl5eq","owners":["1e33e18b94c4723ecea99e51b229b1d19614e80d12851f8f159f6e81"],"relays":[{"type":"hostname","hostname":"9caee114.cardano-relay.stagebison.net","port":1338}],"metadata":{"url":"https://9caee114.cardano-metadata.stagebison.net/metadata.json","hash":"985e4efc3b6a10c375968c1de0a138fc75bd357d3e1ffa581aafbd96a43d37a5"}},"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn":{"id":"pool1cuxthc4lyescly7lq4tgvf72td75l2hrm8zmks2qnmffkqvpsyn","vrfVerificationKeyHash":"46b2dca70839f8515b2d65cb7abe6c251aef8f0221025dc30c4b63af7bf355e3","pledge":{"lovelace":50000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upedrdplfruuaplyaet524e4x6nxus2z3hss8gnwep62eqqsq4mym","owners":["72d1b43f48f9ce87e4ee5745573536a66e41428de103a26ec874ac80"],"relays":[{"type":"hostname","hostname":"172.30.100.12","port":6000},{"type":"hostname","hostname":"172.30.100.10","port":6000}],"metadata":{"url":"https://tinyurl.com/DVJMDG","hash":"56949b92b173ecdc5852d9fe5946411f384a1ef1659a26840f4467ffd1a62fb0"}},"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4":{"id":"pool1epeq86e8vuuar86kk9hgtn6ty3yzcjun5nrm2xyysfl07fsrwc4","vrfVerificationKeyHash":"09f8f0bcd8dba98f8d0d5cf76624610eda099fcfd813df66b43ce23a3be7e35f","pledge":{"lovelace":9000000},"cost":{"lovelace":340000000},"margin":"9/100","rewardAccount":"stake_test1uza6wgdaec5kulpd5ft2xtchcfhgry6te8az8h5r2xzp7kgxc3hvp","owners":["bba721bdce296e7c2da256a32f17c26e81934bc9fa23de8351841f59"],"relays":[{"type":"ipAddress","ipv4":"127.0.0.1","port":80}],"metadata":{"url":"https://foo.bat/poolmeta.json","hash":"47fa1c955765325622a3d1bcff79d78ce719a8823ee3169998348cf585edc469"}},"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6":{"id":"pool1ez9khv2gx82mqrnj0qenr47dy8grecm8qkkrtnn69wzzwkvc9l6","vrfVerificationKeyHash":"30ff40541e2c155acfcdfa844069e705dee1ae8eef9bdcde22de465de6fa8fdd","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1up3pxcv3etz7d8h5e6csly3yggnmnwrgqrvhhjsqak7828ck4ytys","owners":["62136191cac5e69ef4ceb10f92244227b9b86800d97bca00edbc751f"],"relays":[{"type":"hostname","hostname":"c-pv-rn01.liv.io","port":30002},{"type":"hostname","hostname":"c-pv-rn02.liv.io","port":30002}],"metadata":{"url":"https://liv.io/poolMetaData.json","hash":"66309fa9a6726eaf1ede2bd73b1ffe02dcbc0f966730221b0cbc71702bb1742a"}},"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr":{"id":"pool1erufgazt3scqvjvsqv7ehayfscj93llzu3e6lknh2m6d5xcfjdr","vrfVerificationKeyHash":"ee04d2c090ad7cfb572b32776eb694f336b2e26048a0423de1d66241deadeac8","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqevz4f8d5z9pv7jx8rtlvxascwqx7v6ygrmf4kj2vta43q7kjpzk","owners":["32c155276d0450b3d231c6bfb0dd861c03799a2207b4d6d25317dac4"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.cardanistas.io","port":3001}],"metadata":{"url":"https://stakepool.page.link/cards-preview-testnet-metadata","hash":"ce0eb65620e544b8614517f495fd0bd371a6a5ee70c3ddc6b210c3dff0a3f8b3"}},"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl":{"id":"pool1erajsxw8ejry8flz6gwsd885dmx9uv6k9wd8dl5vme7cxrzv9hl","vrfVerificationKeyHash":"b327686ee38df980c15a5c9f9eeefeb5a03f5079531805cfead05a33739d23b4","pledge":{"lovelace":5000000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1upnsszyt4g7wtl4s729kqysjph9mpv9f8hy5tk2srxr5swqnl38cl","owners":["6708088baa3ce5feb0f28b6012120dcbb0b0a93dc945d95019874838"],"relays":[{"type":"hostname","hostname":"g5.datadyne.earth","port":3005}],"metadata":{"url":"http://datadyne.earth/cardano/dataDyneCardanoPool.json","hash":"23f3b6da129943598cc39d57de2569810e5564558f1db8ab0bb80bd85194b3c4"}},"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn":{"id":"pool1e8sfzuvrpqm9t42e4tekfeygs9pk8uwja0qewxxpeyxwg5hvvcn","vrfVerificationKeyHash":"a6b8428cc8ef74f793adb8469e2a36b7ae063186f0b314f837397d71ae6bf974","pledge":{"lovelace":15000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ur6paxqxatgnvwjedszllqn54wd0t0xu9tq7lj8qjx4py2su8z4zw","owners":["f41e9806ead1363a596c05ff8274ab9af5bcdc2ac1efc8e091aa122a"],"relays":[{"type":"hostname","hostname":"75.119.159.254","port":3001}],"metadata":{"url":"https://raw.githubusercontent.com/TurboEgon/ada/master/md.json","hash":"9e02e9270ef85cc9415878d079a9237f2d55a924438b5cbf03850d894130d7b2"}},"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3":{"id":"pool1et694n52r9scvec3n32jej0juh4za6xucaj3zy822wajkegmdh3","vrfVerificationKeyHash":"7d96da7d962d2bf0b372f5626e34b124bd38e8996d1d8880ec902b12b3a6a47d","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1ursgmmafa26uqmacut9k9ewgxrja60gv5gxlevrgevmx28gm8c59h","owners":["e6f0fb6aa711a3ce9f89d3d85d75e9215d990586b899aa80837744ef"],"relays":[{"type":"ipAddress","ipv4":"1.1.1.1","port":11}],"metadata":{"url":"http://baidu.com/","hash":"5418650706007cbfb0f784cb6a4a274c3c00ef4345e76cb053c3046cf481e74b"}},"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c":{"id":"pool1ewxvkzqnvfzaf48092n4t2crdventhxhtmpvydxnsnj322qc47c","vrfVerificationKeyHash":"9842080c08dfce55e9d6758b9c57c51a83003c29920cbb94a828399f2472bc64","pledge":{"lovelace":5000000000},"cost":{"lovelace":500000000},"margin":"392699/12500000","rewardAccount":"stake_test1upp6fr9evvqcprgr57vq0u9mdwxck2whdlyjhve750xl29gu5zexv","owners":["43a48cb96301808d03a79807f0bb6b8d8b29d76fc92bb33ea3cdf515"],"relays":[{"type":"hostname","hostname":"preview.canadastakes.ca","port":5002}],"metadata":{"url":"https://www.canadastakes.ca/metadata/can1-preview-metadata.json","hash":"756e0c7c2640e526c055d0fe4eb453c0c2e2c3af85138a99a8e0d74ef9c0eeb3"}},"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz":{"id":"pool1ewed82f7tdluggkj2qsrajyjakzqewj3e37p25cddurtwejl6tz","vrfVerificationKeyHash":"dca941225e309e0aa7a4ca3a2f49280fa860098a17ab231a5e9b4347a0f2d241","pledge":{"lovelace":167369000000},"cost":{"lovelace":369000000},"margin":"9369/10000","rewardAccount":"stake_test1uzn99jy8eud3f4jp7pg6natdt3mn76mn33fx5na0a9utk7q03ttkv","owners":["a652c887cf1b14d641f051a9f56d5c773f6b738c526a4fafe978bb78"],"relays":[{"type":"hostname","hostname":"testicles.kiwipool.org","port":9720}],"metadata":{"url":"https://bit.ly/3R870ZK","hash":"19dcf5a17af5475da21aae1046a1bdae92ebac5e06e93e8c9a41b7a844fc6af8"}},"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh":{"id":"pool1ekezegcepqmhwppzdj7mm5cm26uz6kzmf4l9r8s3lx4kw6y2veh","vrfVerificationKeyHash":"c6cdbfe1e04a602a85be83b553a44657a8dd69835d14255bc820f754b38d55b3","pledge":{"lovelace":555000000},"cost":{"lovelace":350000000},"margin":"3/20","rewardAccount":"stake_test1uqgvynv9sx5kvlpn5a2zs2y6c9hfwxzuwwlntq0s2uqdahspm9ss4","owners":["10c24d8581a9667c33a75428289ac16e97185c73bf3581f05700dede"],"relays":[{"type":"ipAddress","ipv4":"185.161.193.105","port":6012}],"metadata":{"url":"https://clio.one/metadata/clio1_testnet.json","hash":"47530ba97c12e2ac40462e9c86eeb07ea555877d2a1f9d74b6ff8471839267d8"}},"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm":{"id":"pool1eh39zxmk8z4hxndc2dx6awu6yfpufmckjnyzlpdcsfd7jf2qxtm","vrfVerificationKeyHash":"04c92fa6798809d11f840b1b15bf94f4a1ca9faebc92b82453741b453c700f6c","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uzz4zhcllemvlf6n5yr5nuyxrpws3k06nrs6cn200900m8qtufxcz","owners":["85515f1ffe76cfa753a10749f086185d08d9fa98e1ac4d4f795efd9c"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"https://bit.ly/preview_afica_metadata","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr":{"id":"pool1ecc3gej4jsaskjfq6phxkcklx8l0qtvalyzeefp9shmvj86hchr","vrfVerificationKeyHash":"dc0c2cf51a1033db6cdae7a856d78989ea373d41567b4bd30e850021d84b8843","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uq6pyvmjrxem8gftst2v23adw5trzvxanhz9vv3p4ng9qkqgwyflc","owners":["3412337219b3b3a12b82d4c547ad75163130dd9dc4563221acd05058"],"relays":[{"type":"hostname","hostname":"relay1.cardano.teamplay.studio","port":6000}],"metadata":{"url":"https://tinyurl.com/2p93ec5b","hash":"6bfbe784117723dbd72811f1ac85acfe49d5ca913102320ae012f39533a97a96"}},"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n":{"id":"pool1elet8uart9cuw3lmntqhfn2f44rf52dg6v5ppzkcysxx268s43n","vrfVerificationKeyHash":"e10abc12be25311013a194e97766854c732f0bad09ff6c8bf3554e30f1d21d02","pledge":{"lovelace":9000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upyrg0gn898nnfeal4c8j0536d9hrdlh82cu9kd39s26mgsd90gfn","owners":["48343d13394f39a73dfd70793e91d34b71b7f73ab1c2d9b12c15ada2"],"relays":[{"type":"hostname","hostname":"1.tcp.au.ngrok.io","port":25432}],"metadata":{"url":"https://t.ly/IT5j2","hash":"d79139620ec27edc094bbf79051bb0b97e599d1826f9545718786a4f9ae4eed0"}},"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76":{"id":"pool16z5ej7zasdtuljm8r0s5k8pszdm8r7argy7aq0v4czv05kyez76","vrfVerificationKeyHash":"bf219f9491ead9d95d362259f14e6ac78e68f3e7b06972b631ba8ac80a82b1af","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1up8yrvxz9vvc54jh3xhau9n4hgvp004yj2xgnxrsx665e6qvf8nhl","owners":["4e41b0c22b198a565789afde1675ba1817bea4928c89987036b54ce8"],"relays":[{"type":"hostname","hostname":"beta.stake-cardano-pool.com","port":7002}],"metadata":{"url":"https://bit.ly/prevRCADA","hash":"28b7537b13a8954f80ca50022dce103252a2d64262e62b17847482ff8b474ca0"}},"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d":{"id":"pool16y556gh885fw5nky8f8qmfwjeer7l8d2wjr8cl7f5vd8x7zgh0d","vrfVerificationKeyHash":"968a613baf8ec8e434b663e0a1fdf1c710a7b760a67dfb15e8ede88b818236e9","pledge":{"lovelace":5000000000},"cost":{"lovelace":4321000000},"margin":"1/25","rewardAccount":"stake_test1uppyxzrrhyfh5ja2tgfm87u8h36xgr3a6d6p2ljztpfew8snugder","owners":["42430863b9137a4baa5a13b3fb87bc74640e3dd374157e425853971e"],"relays":[{"type":"ipAddress","ipv4":"123.121.123.121","port":3000}],"metadata":{"url":"https://git.io/JJWdJ","hash":"c5c38833176e2d575bd8693e206e3af2e1088e556def86cae9f6c2fc45579f36"}},"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg":{"id":"pool16dy6cwrdthfmhn85h56se7dmhp2m8vhg928lvg073r7dwkjvtpg","vrfVerificationKeyHash":"a377abb415ee8e8ae9a15a2a68aa9800261c7ffc77ac9380d416703e7fed9ac8","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/b44bf76a-f93d-491d-bffe-ebf.json","hash":"e0f5672cbb37d0564f5ba3f68fad2ea15484b65ece509500b27213a597a7df03"}},"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd":{"id":"pool16sjj3ykqznw2pd2m2ug00k0fujtqsmq4amfeeewqzvk7622xetd","vrfVerificationKeyHash":"0cd296f8c5f1337827cacf997a68fc4e700e79632a72ef341419464cea335f87","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1up6g3hdqewdu96xcsaszvfg2jz422aq604ukkaw8cp686xcjnchlw","owners":["7488dda0cb9bc2e8d8876026250a90aaa5741a7d796b75c7c0747d1b"],"relays":[{"type":"hostname","hostname":"preview.happystaking.io","port":3003}],"metadata":{"url":"https://happystaking.io/poolMetadataPreview.json","hash":"cafacba1d7a1e22665204fd41daf451d767e5bb684856b5f58e70511cf8ac076"}},"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x":{"id":"pool16hphjcfga9jhk5j3rsgmys83kza983utn3zv9jwhjgpe2ah4j8x","vrfVerificationKeyHash":"42b2725232523538f75c49436958209eeec9b0bd081b847816996c3faf1a3ed1","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"3/20","rewardAccount":"stake_test1uzxp3ahlzepch6r7vk43cwjsmyjvp7zvqy6973nw2ejktksa5yrqu","owners":["8c18f6ff16438be87e65ab1c3a50d924c0f84c01345f466e566565da"],"relays":[{"type":"ipAddress","ipv4":"168.138.37.117","port":6000}],"metadata":{"url":"https://tinyurl.com/yc3brjd5","hash":"13538c6980dd25aef3cad66fe9534145168e94e88bdb2db73f469b7b3e2faaeb"}},"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6":{"id":"pool16e3m59evvjmxsnyu2xqf5ns4zgcdc9m4fpm29avrc5y6qdnhzs6","vrfVerificationKeyHash":"d35ac02a0872f631f2eeca690a00578d2522af70ee749c75a696b458dfc74a3b","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/200","rewardAccount":"stake_test1ure4jcjcvf0np3hfen3ngfvgqymmur783tdmjw0hnrf4q8s52ymvc","owners":["f3596258625f30c6e9cce33425880137be0fc78adbb939f798d3501e"],"relays":[{"type":"hostname","hostname":"relay1.afica.io","port":3001}],"metadata":{"url":"http://metadata.afica.io/preview.json","hash":"54467a19dd5d5379e1baf0112ce5c2c478d43b53629ba2440e4ad66a50b5cfa4"}},"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg":{"id":"pool1mykwc7325c2wrur785z22wj6c0fust2ttf6pvt5rh6rtjf2pemg","vrfVerificationKeyHash":"fa730318b97a085aa8722dbb7a2fd59ae35942f880e01c9c8b462d81c84dc4cc","pledge":{"lovelace":9069000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urdcnx276w4g3h8mgdusutj3wc0uhflgt99ucemgfafd2fqmjjw3u","owners":["db89995ed3aa88dcfb43790e2e51761fcba7e8594bcc67684f52d524"],"relays":[{"type":"ipAddress","ipv4":"194.60.201.143","port":6001}],"metadata":{"url":"https://cardanotech.io/sancho/poolMetaData.json","hash":"ccb6217c050e86cc6128b6c40e9daf5650daeb40225c26abade57c22d68ce7b6"}},"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa":{"id":"pool1m80zlt567eqfessn6pvll5puhl049fkce0w55nmgx84mv74mrqa","vrfVerificationKeyHash":"9255fd57d5e228c2228181d99087ab6551eb7d27fc5294813a48c3f1d2327d18","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upzkdmu99wpclw7h9v8hvdd09vwygyj77qsma0gnef2znwqpk8aff","owners":["4566ef852b838fbbd72b0f7635af2b1c44125ef021bebd13ca5429b8"],"relays":[{"type":"hostname","hostname":"5.161.205.147","port":3001}],"metadata":{"url":"https://udknow.github.io/extend.github.io/pool_MetaData.json","hash":"f7f5329cbaf15b781d1a97f0f596697065f7c453aa2baf3ac034a67c2ac6d0be"}},"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da":{"id":"pool1mfwwn7k6h4k0qnrn4q4ck0l6lunra8fyvawalt6cpjvp6a253da","vrfVerificationKeyHash":"c3e92038b50de0e70bd3066f83c067e1726f126a6cc4c9044f3c87582194bee6","pledge":{"lovelace":1000000},"cost":{"lovelace":568800000},"margin":"1/1","rewardAccount":"stake_test1urull23za5j968nez2952k0fpdzk49raz5qvadyer7d8fxqtpzyfh","owners":["f9ffaa22ed245d1e79128b4559e90b456a947d1500ceb4991f9a7498"],"relays":[{"type":"ipAddress","ipv4":"142.132.218.54","port":6001}],"metadata":{"url":"https://www.roastfrog.com/testpoolMetadata.json","hash":"f03b6faa03747b3657b1e5dd6c2f400421a609529654dbd1c1cfe6a774c5bd19"}},"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c":{"id":"pool1mfc42za8tj74zc66ez3slwtq4mumdl7yrylaxajd5xugujmhd0c","vrfVerificationKeyHash":"5261e39dc3a6a2c1107bded7a5cce9f9e5ba273d92b3832d028c24a23b83db48","pledge":{"lovelace":123000000},"cost":{"lovelace":171000000},"margin":"27/625","rewardAccount":"stake_test1uzckcmv9m39sx0jdvjn5snd8pkhtzwjed50tr9ayjcjdvfctmyegm","owners":["b16c6d85dc4b033e4d64a7484da70daeb13a596d1eb197a49624d627"],"relays":[{"type":"ipAddress","ipv4":"95.216.173.194","port":16000}],"metadata":{"url":"https://raw.githubusercontent.com/hodlonaut/a/master/t1.json","hash":"81986b8f246cb39979af55fc01215f193df2dc07107989b886e131633e880e43"}},"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq":{"id":"pool1m3d2flwq8kt6ys0e973xwawd042dnn6vfu82p8efyqsvu4wttaq","vrfVerificationKeyHash":"e40dfd70145e63f2eb76398181f9e2f9b9f24aff6800228aa7ff1beef2a3c30c","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/20","rewardAccount":"stake_test1ups3a2wv5lnrwusv06zxqrjpga4gwzuuw86y8vh23t9uhgsxarnft","owners":["611ea9cca7e637720c7e84600e41476a870b9c71f443b2ea8acbcba2"],"relays":[{"type":"hostname","hostname":"ada01.liv.io","port":30002}],"metadata":{"url":"liv.io/poolMetaData.json","hash":"78409be753a669ae5eb8c81ee7f3f1a48e8a265ebc6814e6247af4440d50b515"}},"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd":{"id":"pool1mndner6ppa2ww3zuahk8zg7tv4m235qtrt8tfne4jfl9k7kt8fd","vrfVerificationKeyHash":"1077d0e618747203a2c133c9c758f9201a6666c8b342571650b441ed79a8b435","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzdz78y403tg3vr4qs5yz24yxdn5mg5knl09wnyta8sn6ds6xq8dv","owners":["9a2f1c957c5688b0750428412aa433674da2969fde574c8be9e13d36"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP2","hash":"8c3c4274796876b709eb9fc24b0ed08cdefd0574a011626c307ec83789dd0f61"}},"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv":{"id":"pool1m4n62kp59efunmu49qfyu38y8g6t9t3mgv4229z0lmpy6fxzdsv","vrfVerificationKeyHash":"78042dd9de14cb768582a928c234c4bda3c58ce993a2fb67e575eb5035a15335","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzmundjjeta9g6lkszul9zqvnnhnfjgqqkra5a6sfykljfq89ydly","owners":["b7c9b652cafa546bf680b9f2880c9cef34c9000587da7750492df924"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNB","hash":"c15f332d03f1660ac02c025bd89bbb03b313d11f3c8e8a3c3f331709e422e56d"}},"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav":{"id":"pool1ufzepz9ugl5f72d3d4lk29x43uxexmae79dxj766s6pgu9axvav","vrfVerificationKeyHash":"8eeabd1fa1f3b29dd9939e75e8ca450f88d77ec6be1f1a038515b0f0460e5312","pledge":{"lovelace":4567},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upznunn78q5v6myxfmmgfe6czuhszmnwwpvszr2w8sf4aggtdp3ck","owners":["3b957bf2d0a2299394ce7dd21dd42ff0cb2ee8d517b0b2d297e31828","453e4e7e3828cd6c864ef684e758172f016e6e7059010d4e3c135ea1","5fe8542e18bde2f7469871e89b39839db8b782df86cf68b036450b73"],"relays":[],"metadata":{"url":"https://www.updated_location.com","hash":"997efa7ae731f7d203d790985f7ddf6ce37fe07944e2633e9acc386dae553dbe"}},"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua":{"id":"pool1u2pl6kx4yc77lnyapnveykkpnj07fmc7pd66fa40fvx3khw7cua","vrfVerificationKeyHash":"b015beeb402d42c1607f69634ed3e53962354246f15e64073697aa03c704955b","pledge":{"lovelace":1000000000000},"cost":{"lovelace":500000000},"margin":"1/1","rewardAccount":"stake_test1urfjhemxd66mhxds7g6w07gsfy6dx2fheh6jv7zyd88l54qxghsqh","owners":["9b4052824b5cd89bb9c74ebe9405fbabf76003c5753e35d3bcc86531"],"relays":[{"type":"hostname","hostname":"preview-node.play.dev.cardano.org","port":3001}]},"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr":{"id":"pool1uk72vv6l3c4l83hw22crx9ytug7ud97grqg8am5p0qv45aa4ymr","vrfVerificationKeyHash":"9003483796788e265a27728db0f83eb9bd41739f821924e286629999e10a88e5","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urmdhhr5qhr5rgrsnw7wa2kernuahyemrr4pqta3lke6jxguxf7n4","owners":["f6dbdc7405c741a0709bbceeaad91cf9db933b18ea102fb1fdb3a919"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO4","hash":"611a69c0d90dbff124db9e3f5b21c846958e340fee72ed00bceb6e5e1f429a66"}},"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e":{"id":"pool1uh5xdjv70q5eyl5z644p23mvhd3dx0gwr8pjnlj9pwd3jgkvd0e","vrfVerificationKeyHash":"335399acf3228243efb0fec0e43f18d61a496d4fd740fd800f9b91b5fa7d0540","pledge":{"lovelace":100000000},"cost":{"lovelace":345000000},"margin":"3/4","rewardAccount":"stake_test1upv6ppwktpx45y3x4msy20fpm0fyyt4g6d9xh4ntlf9tykqyulqzd","owners":["59a085d6584d5a1226aee0453d21dbd2422ea8d34a6bd66bfa4ab258"],"relays":[{"type":"hostname","hostname":"lion474.duckdns.org","port":6000}],"metadata":{"url":"https://tinyurl.com/pkmer3hs","hash":"00ab354051a92cecb843d473c1bce7057e8d922c2f790da4326d1e4daff323e2"}},"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0":{"id":"pool1uh5sc3v77el8egy6rgz59mdgv0097j7nx3usrrkagvmsy6074k0","vrfVerificationKeyHash":"ae3c85580444e5a30cfad07b6a70e004c1875faf87851a06ce756e5ed42ee8f4","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uzds77htp7kk5txdk5e2zntrejgmv5gum445n26ygawv40ghak4zs","owners":["9b0f7aeb0fad6a2ccdb532a14d63cc91b6511cdd6b49ab44475ccabd"],"relays":[{"type":"hostname","hostname":"sp.altzpool.com","port":5001}],"metadata":{"url":"https://altzpool.com/WALTZ/poolmeta.json","hash":"5c8ab40789c4fdc8aeb4684deda3c85aa0202078e0f2d575977f76351da9e771"}},"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c":{"id":"pool1ayc7a29ray6yv4hn7ge72hpjafg9vvpmtscnq9v8r0zh7azas9c","vrfVerificationKeyHash":"4888af16310dc9dd2600001ae7d5fc571cd15d38ffb47c802aac599f916207e0","pledge":{"lovelace":125000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6","owners":["a14198903809494c6543f7691f4fdc2932aa6325b634139b0a5445ee"],"relays":[{"type":"ipAddress","ipv4":"207.180.211.199","port":6007}],"metadata":{"url":"https://git.io/JW7b5","hash":"7296d38d3c67d769c38924679e132e7d9098e70891d7574cc5cf053574305629"}},"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc":{"id":"pool1agzq8htqr80dr0wu6ppvm4azkrmhelg4jy4x4qes9n5cuau7esc","vrfVerificationKeyHash":"fb27957133f79e8e308e0bb47f26a3b8c9c6ada920a4b1121410d55ad4f2f90a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1urdj5j3jtsj9lsf6xdz27dzxfw92ezj34v5d0qhcrx4ztysksexxe","owners":["db2a4a325c245fc13a3344af34464b8aac8a51ab28d782f819aa2592"],"relays":[{"type":"hostname","hostname":"topo-test.topopool.com","port":3010}],"metadata":{"url":"https://cardanostakehouse.com/187d7406-a87e-449e-8849-9a8.json","hash":"68d0f12660b653892627f2c26c5206dd7cec9fe5c28680f30130aee36188cefd"}},"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka":{"id":"pool1ag29qua3amyl7fszngeqxnrxpamu6rychrxjjuju5e0tskdpwka","vrfVerificationKeyHash":"a06673f1adeb90f1c228becf0d7467f750aa2ff22380297b92cba4af98c1f2ac","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/100","rewardAccount":"stake_test1upglkzseasr52vrwa8lyuare8vrlsgj7gd7u7qcapfr4rtcxzny4g","owners":["51fb0a19ec0745306ee9fe4e74793b07f8225e437dcf031d0a4751af"],"relays":[{"type":"ipAddress","ipv4":"144.126.157.40","port":3005}],"metadata":{"url":"https://onecommunityada.com/public/poolmeta-preview-v01.json","hash":"13789ef22250148bba4158df16011318b63a18110d64f2b449bb10df5648f2d6"}},"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w":{"id":"pool1ad2pw6ch9rpktqt4yfr5qlgt4z87g4v2lky067khwfe9khq246w","vrfVerificationKeyHash":"6c3788da12fce689f7e7d6f50814ad1b21a2ec41f2689bd12770b72958d62689","pledge":{"lovelace":2000000000},"cost":{"lovelace":340000000},"margin":"1/50","rewardAccount":"stake_test1uqyjm25xx2jv62fydccgx036ahs7c5fvwl9a2vpempeemgcj594y7","owners":["092daa8632a4cd29246e30833e3aede1ec512c77cbd53039d8739da3"],"relays":[{"type":"ipAddress","ipv4":"159.203.25.174","port":6000}],"metadata":{"url":"https://tinyurl.com/uakazrpv","hash":"afdf5aa90ad33073ed75f0a72bc72b952e774deac00e7f4cb1020bfb7c6e91ef"}},"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8":{"id":"pool1aw4ylpwdt6dll08jzkqtpa00rvxpqj8k04g6kdyumwk9cyrqpk8","vrfVerificationKeyHash":"168dc3fcbe016160b0bb58e60880b2cc422d63937a944e9522bd3c1847f429f0","pledge":{"lovelace":10000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uz2equk92h9kfjj3v80ls23t4hx4r4n3mwr8tcddgpc9ldcn3cvfz","owners":["959072c555cb64ca5161dff82a2badcd51d671db8675e1ad40705fb7"],"relays":[{"type":"ipAddress","ipv4":"190.225.246.140","port":6000}],"metadata":{"url":"https://t.ly/W1Nni","hash":"167d5e2610687507e54ed74f89c5705a09375e89199ed5c8fbd980a26ad84a7d"}},"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f":{"id":"pool1a3pepkeacs59d3lqfmk6hks4qc7k84xqsc4q664lpxfvyq9lf5f","vrfVerificationKeyHash":"1786535ea1a4e6ee4addea9ea255643515698bfe927b7a631402a274172685ae","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqxcefkp07zelmy36y3jdpzajxz2w053h027sknlk4fkklqe96s62","owners":["0d8ca6c17f859fec91d12326845d9184a73e91bbd5e85a7fb5536b7c"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/LXSP4","hash":"2d9ef4dab347f7151dbdb884f61dbeb1d1322655d0835a002cba7072dc2baa41"}},"pool1a6ug5gelydu29djkuvxl869257e7v4d3zwqwt69ygu7dcfts59j":{"id":"pool1a6ug5gelydu29djkuvxl869257e7v4d3zwqwt69ygu7dcfts59j","vrfVerificationKeyHash":"1c3ba4a44d07d779d3b699936ead18a3dd9b20eeaa25281df144c404b611f864","pledge":{"lovelace":1000000000},"cost":{"lovelace":170000000},"margin":"1/100","rewardAccount":"stake_test1uqrw4g3al234sqskw87z6t45k42z2t9qyp9jyeec83wm0csq2u08c","owners":["06eaa23dfaa358021671fc2d2eb4b554252ca0204b2267383c5db7e2"],"relays":[{"type":"hostname","hostname":"testnet.valhallapool.net","port":3000}],"metadata":{"url":"https://raw.githubusercontent.com/t0m3kf/v/main/testnet.json","hash":"1d707d6861b2fdb6b46321270e40ea01ff9a49acc3858b5499b5f33fa4f3bebf"}},"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0":{"id":"pool1a7h89sr6ymj9g2a9tm6e6dddghl64tp39pj78f6cah5ewgd4px0","vrfVerificationKeyHash":"1d8199fd0a82c29b242d62f6aca7d166200e47c0596fab5b1d4cf56399b6eded","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"1/10","rewardAccount":"stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9","owners":["1aa988fc40e7ab3ac9fb36b2df2768cbad36024ef74faf5a0377351c"],"relays":[{"type":"hostname","hostname":"prv-relay1.apexpool.info","port":3001}],"metadata":{"url":"https://apexpool.info/preview/poolmetadata.json","hash":"a207f23a6255eeb0b508945e5170b169eb5c3220109d7fa17a7d88d462c8a199"}},"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj":{"id":"pool1alaz72lzlude9flwewegv530za5pl0uuakxa02kdyddv67wpkwj","vrfVerificationKeyHash":"d2c415e4eb5c7295a10d17b1eecc7791f6217f0dfcf298e83eba53f44a792362","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"19/1000","rewardAccount":"stake_test1ur2pejlgfqa5e4stqg529tqj06k6gamweaawgphvewkdgtqqkuwlr","owners":["d41ccbe8483b4cd60b0228a2ac127eada4776ecf7ae406eccbacd42c"],"relays":[{"type":"ipAddress","ipv4":"194.163.158.69","port":6002}],"metadata":{"url":"https://solidsnakedev.github.io/poolMetadata.json","hash":"66e626854b9d86d419cba818f04e4958247cb7d613d55959cb8df924bdb99c03"}},"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf":{"id":"pool17wdfwsyksx7femcxzx7ycf84maqvdf3fmr7z92h2xguy7eanvdf","vrfVerificationKeyHash":"b5ad4eb8d4d7d07c993670d34e475a0ebd3553b297eaec49f297645365f3319e","pledge":{"lovelace":19000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uzu4m5xsmd0lw2y7n3rrh70feevp5sghqk9nmkr30f0yyjcx0eu53","owners":["b95dd0d0db5ff7289e9c463bf9e9ce581a4117058b3dd8717a5e424b"],"relays":[{"type":"hostname","hostname":"preview-testnet-relay.junostakepool.com","port":4521},{"type":"hostname","hostname":"passive-preview-testnet-relay.junostakepool.com","port":4531}],"metadata":{"url":"https://junostakepool.com/juno-testnet.metadata.json","hash":"3a0d397aa9bf08753197678d93ee2f615daa4727671497bfd69fabd84c63d907"}},"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r":{"id":"pool17njlrn0jgdw626utskz0zmrnduz9ra8d3al6aw5hvszxkx88q2r","vrfVerificationKeyHash":"392d334b0670323093e6cf60edf36961e4005de35b2c86f01e41ce2f7428837a","pledge":{"lovelace":1000000000},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1urmklja3h07ndxxrg6eu950x9glzws3gcu7wpphz2cdgujql0rxpn","owners":["10d1fd3cc499c8651bc9344fabe05739fa3e5777145eb638d39dc449"],"relays":[{"type":"ipAddress","ipv4":"210.54.38.228","port":4020}],"metadata":{"url":"https://bit.ly/3vlDN4w","hash":"ff6cdb1fba6074de46d95e0f878d9683d2ce2cf3acb57e6a4fdb9d97af8fe739"}},"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma":{"id":"pool17navl486tuwjg4t95vwtlqslx9225x5lguwuy6ahc58x5dnm9ma","vrfVerificationKeyHash":"f4c30ed620cf34f18f8a03e87a178fa01dcd21f07aeaab8c69bd1ad168177b1a","pledge":{"lovelace":100000000},"cost":{"lovelace":340000000},"margin":"1/40","rewardAccount":"stake_test1urwheaxgd4llq93s85tlnazqtzqpgrxy3nagtagl97xswug363ct0","owners":["dd7cf4c86d7ff016303d17f9f4405880140cc48cfa85f51f2f8d0771"],"relays":[{"type":"hostname","hostname":"pv-relays.digitalfortress.online","port":8001}],"metadata":{"url":"https://digitalfortress.online/digi2-pv.json","hash":"9b7e689634956d37e264f89a9ff1dc9cc38f3f4feb2984193ba55b75fbbe4edc"}},"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p":{"id":"pool175vq9hqwm9c39uk085xefkr6frtejxcqsf6gh9kh2jaavttrv2p","vrfVerificationKeyHash":"54b1898f88cf3e41f0b2d961132a6d35aee6e6c1cd06b10676d07eaaddb739f2","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1uqy849fm6tqp8vvn69tmvtgnc26kkre9xhu236kxf2mpgcg4lusqv","owners":["087a953bd2c013b193d157b62d13c2b56b0f2535f8a8eac64ab61461"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/RSPO6","hash":"7fd82335e38dff9fcf4d7cbc685bc81120b34a8138a5f63ac49bbe34e52f5adf"}},"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l":{"id":"pool1lqj075ak5u2j9wul3kccll7jg6we27jkeuqwpjctmj9qstcxz2l","vrfVerificationKeyHash":"51e8282e2675e4b384ca03ee2b001d3d430349a80b8c5147215f77a5739a66ba","pledge":{"lovelace":500000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1urvkry4v3ncrhzjhmwg0uluerrr0rx43eh3pafq75ufucpcherj5s","owners":["d96192ac8cf03b8a57db90fe7f9918c6f19ab1cde21ea41ea713cc07"],"relays":[{"type":"ipAddress","ipv4":"0.0.0.0","port":3533}],"metadata":{"url":"https://example.com/SSNC","hash":"ccd9b7349e6a97c5f670f93225c9596bff725a63f7f4f1a42f5ea1367c639a80"}},"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g":{"id":"pool1l9u9ss9xtww8qkt4zqda84z945f6tgq4753jqhtdr4r8yaw7d6g","vrfVerificationKeyHash":"d510044198082bb3852d56c29d0901dfc7f2fe7cc9958fffdb2c0a10ca378495","pledge":{"lovelace":0},"cost":{"lovelace":340000000},"margin":"1/1","rewardAccount":"stake_test1up3pv0r49hevqvc23q7zfwnza6d0vs3qhf4w9lhg9w93c7qegmfv6","owners":["62163c752df2c0330a883c24ba62ee9af64220ba6ae2fee82b8b1c78"],"relays":[{"type":"ipAddress","ipv4":"18.219.254.123","port":3001}],"metadata":{"url":"https://tinyurl.com/ye2zvyf4","hash":"60586988c5245b4eb59aff8110da9ebe57d4c7e37aaf6e6a3587523aa14fdee1"}},"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37":{"id":"pool1l8k45jgjd58jcg84pclvhzwqt2ql9xk65xc5svggdkslswwlh37","vrfVerificationKeyHash":"28c7be4bfae439c34bbd00ee1f38fbdd6da7699348e1a2d8cc8f5a5f37ec0e0e","pledge":{"lovelace":20000000000},"cost":{"lovelace":340000000},"margin":"0/1","rewardAccount":"stake_test1upzyxqc689puxvznynchysv368j4jwjvghzszqsx4fsnsasec99jl","owners":["4443031a3943c3305324f1724191d1e5593a4c45c5010206aa613876"],"relays":[],"metadata":{"url":"http://bit.ly/rabbitholepools","hash":"618d89696eea579b5e4402f220109785e9039181d5a46fc7fff45e035a8cab61"}},"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla":{"id":"pool1l5u4zh84na80xr56d342d32rsdw62qycwaw97hy9wwsc6axdwla","vrfVerificationKeyHash":"39cf4275b0751ee453aee1737c97466543250ec50932dfa0a109a99c9678752b","pledge":{"lovelace":127813888409},"cost":{"lovelace":340000000},"margin":"1/20","rewardAccount":"stake_test1uzwfmyp6jjyupe3pf3h80k5j0p3pzxzn0gf5544p7qzmhmsat2s3z","owners":["9c9d903a9489c0e6214c6e77da9278621118537a134a56a1f005bbee"],"relays":[{"type":"hostname","hostname":"preview.euskalstakepool.win","port":6001}],"metadata":{"url":"https://git.io/JiZgb","hash":"2e421355eb7b4499dd8f0bca206178131f4c9ad90e2bf369ae78aa0c7c4d9472"}},"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q":{"id":"pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q","vrfVerificationKeyHash":"9bce3347843eea739fe6978c347f08dd6de43443f1964369c42778b874c42783","pledge":{"lovelace":65000000000},"cost":{"lovelace":340000000},"margin":"3/100","rewardAccount":"stake_test1urpj2lxml8ml6dqv58l3f7skw4389e0vq7s22sl8zgekmmcy97awy","owners":["c3257cdbf9f7fd340ca1ff14fa16756272e5ec07a0a543e712336def"],"relays":[{"type":"hostname","hostname":"previewrelay1.intertreecryptoconsultants.com","port":6000}],"metadata":{"url":"https://tinyurl.com/intrtpreview","hash":"b9e21ae6844cd61c812c3d5aec7dbe6f8099962fe1e952d51f297258ba89879f"}},"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38":{"id":"pool1lleyxf5xxaxg633c2thh5ttjrf4qxrm3cqaw53kmp7e5q2nlg38","vrfVerificationKeyHash":"3256df2b38272c09c93044fa2702d5ffb1f38c5a2145dc3cb94d5800b28accce","pledge":{"lovelace":100000000000},"cost":{"lovelace":340000000},"margin":"3/10","rewardAccount":"stake_test1uzdgxac7lcan0v7qr4tre4v8aeurwtgk3cszpthf3fra68gc7wnk2","owners":["9a83771efe3b37b3c01d563cd587ee78372d168e2020aee98a47dd1d"],"relays":[{"type":"ipAddress","ipv4":"73.222.0.99","port":3001}],"metadata":{"url":"https://tinyurl.com/6br33xwj","hash":"12b539568a42859dd8a2fe2e9c9ab3095ca4f8dedbb8899f9943ecd54dc16047"}}},"method":"queryLedgerState/stakePools","jsonrpc":"2.0","id":"queryLedgerState/stakePools-3rvj1ml27d5loixowwa","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json b/fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json deleted file mode 100644 index a70856486..000000000 --- a/fixtures/test/ogmios/queryNetwork-startTime-02fa6f9e7ed04ebfe3294c7648be54d5.json +++ /dev/null @@ -1 +0,0 @@ -{"result":"2022-10-25T00:00:00Z","method":"queryNetwork/startTime","jsonrpc":"2.0","id":"queryNetwork/startTime-3rvj1ml27d5loixoww6","error":null} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-startTime-1a911197c5149cd582be4cbf5a651817.json b/fixtures/test/ogmios/queryNetwork-startTime-1a911197c5149cd582be4cbf5a651817.json new file mode 100644 index 000000000..5273a4280 --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-startTime-1a911197c5149cd582be4cbf5a651817.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryNetwork/startTime","result":"2022-10-25T00:00:00Z","id":"queryNetwork/startTime-hfkg1vgolxm0w653"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-145d4ffd82a9c88c79bdb0f629aa3d3d.json b/fixtures/test/ogmios/queryNetwork-tip-145d4ffd82a9c88c79bdb0f629aa3d3d.json new file mode 100644 index 000000000..60b426970 --- /dev/null +++ b/fixtures/test/ogmios/queryNetwork-tip-145d4ffd82a9c88c79bdb0f629aa3d3d.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryNetwork/tip","result":{"slot":10577883,"id":"fdfe97a8576b33f2472d793059f2f4d46b26ae3549d54becdaf28bb1dadf3fb9"},"id":"queryNetwork/tip-hfkg8z8vlxlxx1j9"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json b/fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json deleted file mode 100644 index 9bf66db46..000000000 --- a/fixtures/test/ogmios/queryNetwork-tip-fbd01538064b3ef7b5e3a703dddcb32b.json +++ /dev/null @@ -1 +0,0 @@ -{"result":{"slot":32379177,"id":"5f88efad29d47924ac3c275ad44ec1e1163d04c9e6d98927b1389ae87325a418"},"method":"queryNetwork/tip","jsonrpc":"2.0","id":"queryNetwork/tip-3rvj1ml27d5loixoww4","error":null} \ No newline at end of file diff --git a/flake.lock b/flake.lock index 3a8562dcd..1cb6b4e5d 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1702742788, - "narHash": "sha256-lSU0M27LC0d60cJ2C2Kdo6gBwTCCYRiALbD528CoTtc=", + "lastModified": 1718790880, + "narHash": "sha256-8lIMAxIBYRVs4uQXVnmWT3N5SND5zE2s1t9/chn7DX8=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "4a236a8ad9e3c6d20235de27eacbe3d4de72479c", + "rev": "5ba8c1a3835b87954354757f2aa6611174067165", "type": "github" }, "original": { @@ -18,6 +18,23 @@ } }, "CHaP_2": { + "flake": false, + "locked": { + "lastModified": 1702906471, + "narHash": "sha256-br+hVo3R6nfmiSEPXcLKhIX4Kg5gcK2PjzjmvQsuUp8=", + "owner": "IntersectMBO", + "repo": "cardano-haskell-packages", + "rev": "48a359ac3f1d437ebaa91126b20e15a65201f004", + "type": "github" + }, + "original": { + "owner": "IntersectMBO", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_3": { "flake": false, "locked": { "lastModified": 1686070892, @@ -34,14 +51,14 @@ "type": "github" } }, - "CHaP_3": { + "CHaP_4": { "flake": false, "locked": { - "lastModified": 1695160702, - "narHash": "sha256-+Mfc6eGA1ZwQ/ZjKzMoMWkHzd+sgR1JbxY0i849HjEU=", + "lastModified": 1702593630, + "narHash": "sha256-IWu27+sfPtazjIZiWLUm8G4BKvjXmIL+/1XT/ETnfhg=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "9932690af3713ef034c928850252eb1b88450ee6", + "rev": "9783a177efcea5beb8808aab7513098bdab185ba", "type": "github" }, "original": { @@ -51,7 +68,24 @@ "type": "github" } }, - "CHaP_4": { + "CHaP_5": { + "flake": false, + "locked": { + "lastModified": 1686070892, + "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "596cf203a0a1ba252a083a79d384325000faeb49", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_6": { "flake": false, "locked": { "lastModified": 1694601145, @@ -84,6 +118,38 @@ "type": "github" } }, + "HTTP_10": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_11": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_2": { "flake": false, "locked": { @@ -180,9 +246,41 @@ "type": "github" } }, + "HTTP_8": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_9": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_37" }, "locked": { "lastModified": 1641576265, @@ -200,8 +298,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_10" + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_38" }, "locked": { "lastModified": 1641404293, @@ -219,8 +317,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_12" + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641404293, @@ -238,8 +336,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_41" + "flake-utils": "flake-utils_33", + "nixpkgs": "nixpkgs_69" }, "locked": { "lastModified": 1641404293, @@ -257,7 +355,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_39" }, "locked": { "lastModified": 1641576265, @@ -350,7 +448,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_40" + "nixpkgs": "nixpkgs_68" }, "locked": { "lastModified": 1641576265, @@ -418,7 +516,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_35" + "nixpkgs": "nixpkgs_63" }, "locked": { "lastModified": 1646360966, @@ -434,6 +532,51 @@ "type": "github" } }, + "ameba-src": { + "flake": false, + "locked": { + "lastModified": 1679041484, + "narHash": "sha256-pc9mtVR/PBhM5l1PnDkm+y+McxbrfAmQzxmLi761VF4=", + "owner": "crystal-ameba", + "repo": "ameba", + "rev": "7c74d196d6d9a496a81a0c7b79ef44f39faf41b8", + "type": "github" + }, + "original": { + "owner": "crystal-ameba", + "ref": "v1.4.3", + "repo": "ameba", + "type": "github" + } + }, + "auth-keys-hub": { + "inputs": { + "crystal": "crystal", + "flake-parts": "flake-parts_2", + "inclusive": "inclusive", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ], + "statix": "statix", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1691483346, + "narHash": "sha256-wvn84eGcc+PMbq/qSCWcZ/kV7/bjwuGOVSn/9rGaaKw=", + "owner": "input-output-hk", + "repo": "auth-keys-hub", + "rev": "ab7c79f49886b8f24cfae4b967a59ea62af9156e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "auth-keys-hub", + "type": "github" + } + }, "bats-assert": { "flake": false, "locked": { @@ -482,6 +625,22 @@ "type": "github" } }, + "bats-assert_4": { + "flake": false, + "locked": { + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "type": "github" + }, + "original": { + "owner": "bats-core", + "repo": "bats-assert", + "type": "github" + } + }, "bats-support": { "flake": false, "locked": { @@ -530,28 +689,61 @@ "type": "github" } }, + "bats-support_4": { + "flake": false, + "locked": { + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "type": "github" + }, + "original": { + "owner": "bats-core", + "repo": "bats-support", + "type": "github" + } + }, + "bdwgc-src": { + "flake": false, + "locked": { + "lastModified": 1661523039, + "narHash": "sha256-UYJQGeSykmfydGAmTlNJNyAPBasBkddOSoopBHiY7TI=", + "owner": "ivmai", + "repo": "bdwgc", + "rev": "cd1fbc1dbfd2cc888436944dd2784f39820698d7", + "type": "github" + }, + "original": { + "owner": "ivmai", + "ref": "v8.2.2", + "repo": "bdwgc", + "type": "github" + } + }, "bitte": { "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_2", + "blank": "blank_5", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", - "fenix": "fenix_4", - "hydra": "hydra_3", - "n2c": "n2c_2", - "nix": "nix_5", - "nixpkgs": "nixpkgs_29", + "fenix": "fenix_6", + "hydra": "hydra_7", + "n2c": "n2c_5", + "nix": "nix_10", + "nixpkgs": "nixpkgs_57", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_3", + "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_3", + "ops-lib": "ops-lib_5", "ragenix": "ragenix_3", - "std": "std_2", - "terranix": "terranix_2", - "utils": "utils_12" + "std": "std_5", + "terranix": "terranix_3", + "utils": "utils_17" }, "locked": { "lastModified": 1661790449, @@ -629,20 +821,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_3", + "blank": "blank_6", "deploy": "deploy", - "fenix": "fenix_2", - "hydra": "hydra_2", - "nix": "nix_2", - "nixpkgs": "nixpkgs_15", - "nixpkgs-unstable": "nixpkgs-unstable_2", + "fenix": "fenix_4", + "hydra": "hydra_6", + "nix": "nix_7", + "nixpkgs": "nixpkgs_43", + "nixpkgs-unstable": "nixpkgs-unstable_7", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib_2", + "ops-lib": "ops-lib_4", "ragenix": "ragenix", - "terranix": "terranix", - "utils": "utils_7", + "terranix": "terranix_2", + "utils": "utils_12", "vulnix": "vulnix" }, "locked": { @@ -663,20 +855,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_4", + "blank": "blank_7", "deploy": "deploy_3", - "fenix": "fenix_6", - "hydra": "hydra_4", - "nix": "nix_9", - "nixpkgs": "nixpkgs_44", - "nixpkgs-unstable": "nixpkgs-unstable_4", + "fenix": "fenix_8", + "hydra": "hydra_8", + "nix": "nix_14", + "nixpkgs": "nixpkgs_72", + "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_4", + "ops-lib": "ops-lib_6", "ragenix": "ragenix_4", - "terranix": "terranix_3", - "utils": "utils_21", + "terranix": "terranix_4", + "utils": "utils_26", "vulnix": "vulnix_2" }, "locked": { @@ -768,6 +960,36 @@ "type": "github" } }, + "blank_6": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_7": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -821,32 +1043,151 @@ "type": "github" } }, - "byron-chain": { + "blst_3": { "flake": false, "locked": { - "lastModified": 1557232434, - "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32": { + "blst_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" - }, + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_5": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_6": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_7": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "byron-chain": { + "flake": false, + "locked": { + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "type": "github" + } + }, + "cabal-32": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_10": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_11": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, "original": { "owner": "haskell", "ref": "3.2", @@ -956,6 +1297,40 @@ "type": "github" } }, + "cabal-32_8": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_9": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, "cabal-34": { "flake": false, "locked": { @@ -973,14 +1348,14 @@ "type": "github" } }, - "cabal-34_2": { + "cabal-34_10": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -990,7 +1365,7 @@ "type": "github" } }, - "cabal-34_3": { + "cabal-34_11": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1007,14 +1382,14 @@ "type": "github" } }, - "cabal-34_4": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -1024,14 +1399,14 @@ "type": "github" } }, - "cabal-34_5": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -1041,7 +1416,7 @@ "type": "github" } }, - "cabal-34_6": { + "cabal-34_4": { "flake": false, "locked": { "lastModified": 1645834128, @@ -1058,14 +1433,14 @@ "type": "github" } }, - "cabal-34_7": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -1075,82 +1450,82 @@ "type": "github" } }, - "cabal-36": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-36_2": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-36_3": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-36_4": { + "cabal-34_9": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-36_5": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1160,7 +1535,7 @@ "type": "github" } }, - "cabal-36_6": { + "cabal-36_10": { "flake": false, "locked": { "lastModified": 1669081697, @@ -1177,7 +1552,7 @@ "type": "github" } }, - "cabal-36_7": { + "cabal-36_11": { "flake": false, "locked": { "lastModified": 1641652457, @@ -1194,32 +1569,183 @@ "type": "github" } }, - "capsules": { - "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_23", - "ragenix": "ragenix_2" - }, + "cabal-36_2": { + "flake": false, "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "capsules_2": { - "inputs": { + "cabal-36_3": { + "flake": false, + "locked": { + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_4": { + "flake": false, + "locked": { + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_5": { + "flake": false, + "locked": { + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_6": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_7": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_8": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_9": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "capkgs": { + "locked": { + "lastModified": 1697123727, + "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", + "owner": "input-output-hk", + "repo": "capkgs", + "rev": "b197e225592dfe38afb80c94b628d99968c0541d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "capkgs", + "type": "github" + } + }, + "capsules": { + "inputs": { + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_51", + "ragenix": "ragenix_2" + }, + "locked": { + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "devshell-capsules", + "type": "github" + } + }, + "capsules_2": { + "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_52", + "nixpkgs": "nixpkgs_80", "ragenix": "ragenix_5" }, "locked": { @@ -1238,7 +1764,69 @@ }, "cardano-automation": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_4", + "haskellNix": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "tullia": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia" + ] + }, + "locked": { + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-automation", + "type": "github" + } + }, + "cardano-automation_2": { + "inputs": { + "flake-utils": "flake-utils_9", + "haskellNix": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "tullia": "tullia_2" + }, + "locked": { + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-automation", + "type": "github" + } + }, + "cardano-automation_3": { + "inputs": { + "flake-utils": "flake-utils_16", "haskellNix": [ "cardano-node", "haskellNix" @@ -1283,120 +1871,399 @@ "type": "github" } }, - "cardano-configurations_2": { + "cardano-configurations-8.1.1": { "flake": false, "locked": { - "lastModified": 1694019972, - "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", + "lastModified": 1692193634, + "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" } }, - "cardano-explorer-app": { + "cardano-configurations-8.7.3": { "flake": false, "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "lastModified": 1702085095, + "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" } }, - "cardano-graphql": { + "cardano-db-sync": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-parts": "cardano-parts", + "flake-compat": "flake-compat_4", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "iohkNix": "iohkNix", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils" + }, + "locked": { + "lastModified": 1707925775, + "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", + "owner": "intersectmbo", + "repo": "cardano-db-sync", + "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", + "type": "github" + }, + "original": { + "owner": "intersectmbo", + "ref": "13.2.0.1", + "repo": "cardano-db-sync", + "type": "github" + } + }, + "cardano-db-sync-schema": { "flake": false, "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-graphql", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_2" - }, + "cardano-db-sync-schema-ng": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "lastModified": 1694078776, + "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "repo": "cardano-db-sync", + "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "ref": "sancho-1-1-0", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_2", + "cardano-db-sync-service": { + "flake": false, + "locked": { + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", + "type": "github" + } + }, + "cardano-explorer-app": { + "flake": false, + "locked": { + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", + "type": "github" + } + }, + "cardano-graphql": { + "flake": false, + "locked": { + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-graphql", + "type": "github" + } + }, + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_14" + }, + "locked": { + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", + "type": "github" + } + }, + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_24" + }, + "locked": { + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", + "type": "github" + } + }, + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_30" + }, + "locked": { + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", + "type": "github" + } + }, + "cardano-nix": { + "inputs": { + "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", + "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", + "cardano-db-sync": "cardano-db-sync", + "cardano-node-8.1.1": "cardano-node-8.1.1", + "cardano-node-8.7.3": "cardano-node-8.7.3", + "devour-flake": "devour-flake", + "devshell": "devshell_4", + "flake-parts": "flake-parts_5", + "flake-root": "flake-root", + "hercules-ci-effects": "hercules-ci-effects", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "treefmt-nix": "treefmt-nix_3" + }, + "locked": { + "lastModified": 1717782115, + "narHash": "sha256-RfG3Z7Ph8UDQUsTAfGJ3lbLZK5W9p2i9iyceBJISb5Q=", + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "rev": "f641fb662d17d38a2d7ca543966d36f39c9a6cba", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "type": "github" + } + }, + "cardano-node": { + "inputs": { + "CHaP": "CHaP_5", + "cardano-automation": "cardano-automation_3", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "customConfig": "customConfig_3", + "em": "em_3", + "empty-flake": "empty-flake_4", + "flake-compat": "flake-compat_14", + "hackageNix": "hackageNix_4", + "haskellNix": "haskellNix_4", + "hostNixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_4", + "nix2container": "nix2container_5", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_3", + "std": [ + "cardano-node", + "tullia", + "std" + ], + "tullia": "tullia_3", + "utils": "utils_7" + }, + "locked": { + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "8.1.1", + "repo": "cardano-node", + "type": "github" + } + }, + "cardano-node-8.1.1": { + "inputs": { + "CHaP": "CHaP_3", "cardano-automation": "cardano-automation", "cardano-mainnet-mirror": "cardano-mainnet-mirror", "customConfig": "customConfig", "em": "em", - "empty-flake": "empty-flake", - "flake-compat": "flake-compat", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", + "empty-flake": "empty-flake_2", + "flake-compat": "flake-compat_6", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_2", "hostNixpkgs": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "nixpkgs" ], - "iohkNix": "iohkNix", + "iohkNix": "iohkNix_2", "nix2container": "nix2container", "nixpkgs": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "haskellNix", "nixpkgs-unstable" ], "ops-lib": "ops-lib", "std": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std" ], "tullia": "tullia", - "utils": "utils_2" + "utils": "utils_3" }, "locked": { "lastModified": 1687190129, "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "input-output-hk", + "owner": "intersectmbo", "repo": "cardano-node", "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "intersectmbo", "ref": "8.1.1", "repo": "cardano-node", "type": "github" } }, + "cardano-node-8.7.3": { + "inputs": { + "CHaP": "CHaP_4", + "cardano-automation": "cardano-automation_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "customConfig": "customConfig_2", + "em": "em_2", + "empty-flake": "empty-flake_3", + "flake-compat": "flake-compat_10", + "hackageNix": "hackageNix_3", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nix2container": "nix2container_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_2", + "std": "std_3", + "utils": "utils_5" + }, + "locked": { + "lastModified": 1702654749, + "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", + "type": "github" + }, + "original": { + "owner": "intersectmbo", + "ref": "8.7.3", + "repo": "cardano-node", + "type": "github" + } + }, + "cardano-node-service": { + "flake": false, + "locked": { + "lastModified": 1690209950, + "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "8.1.2", + "repo": "cardano-node", + "type": "github" + } + }, "cardano-node_2": { "flake": false, "locked": { @@ -1414,6 +2281,49 @@ "type": "github" } }, + "cardano-parts": { + "inputs": { + "auth-keys-hub": "auth-keys-hub", + "capkgs": "capkgs", + "cardano-db-sync-schema": "cardano-db-sync-schema", + "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", + "cardano-db-sync-service": "cardano-db-sync-service", + "cardano-node-service": "cardano-node-service", + "cardano-wallet-service": "cardano-wallet-service", + "colmena": "colmena", + "empty-flake": "empty-flake", + "flake-parts": "flake-parts_3", + "haskell-nix": "haskell-nix", + "inputs-check": "inputs-check", + "iohk-nix": "iohk-nix", + "iohk-nix-ng": "iohk-nix-ng", + "nix": "nix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "nixpkgs-unstable": "nixpkgs-unstable_2", + "offchain-metadata-tools-service": "offchain-metadata-tools-service", + "sops-nix": "sops-nix", + "terraform-providers": "terraform-providers", + "terranix": "terranix", + "treefmt-nix": "treefmt-nix_2" + }, + "locked": { + "lastModified": 1697147999, + "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", + "owner": "input-output-hk", + "repo": "cardano-parts", + "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-parts", + "type": "github" + } + }, "cardano-shell": { "flake": false, "locked": { @@ -1430,6 +2340,38 @@ "type": "github" } }, + "cardano-shell_10": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_11": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, "cardano-shell_2": { "flake": false, "locked": { @@ -1526,21 +2468,53 @@ "type": "github" } }, - "cardano-wallet": { - "inputs": { - "customConfig": "customConfig_2", + "cardano-shell_8": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_9": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig_4", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_25", - "haskellNix": "haskellNix_2", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_40", + "haskellNix": "haskellNix_5", "hostNixpkgs": [ "db-sync", "cardano-world", "cardano-wallet", "nixpkgs" ], - "iohkNix": "iohkNix_2", + "iohkNix": "iohkNix_5", "nixpkgs": [ "db-sync", "cardano-world", @@ -1564,6 +2538,23 @@ "type": "github" } }, + "cardano-wallet-service": { + "flake": false, + "locked": { + "lastModified": 1689751896, + "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", + "owner": "cardano-foundation", + "repo": "cardano-wallet", + "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", + "type": "github" + }, + "original": { + "owner": "cardano-foundation", + "ref": "v2023-07-18", + "repo": "cardano-wallet", + "type": "github" + } + }, "cardano-world": { "inputs": { "bitte": "bitte", @@ -1578,13 +2569,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_9", - "hackage": "hackage_3", - "haskell-nix": "haskell-nix_2", - "iohk-nix": "iohk-nix", - "n2c": "n2c_3", + "flake-compat": "flake-compat_22", + "hackage": "hackage_4", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "n2c": "n2c_6", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_91", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -1592,8 +2583,8 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_3", - "tullia": "tullia_2" + "std": "std_6", + "tullia": "tullia_4" }, "locked": { "lastModified": 1662508244, @@ -1613,16 +2604,16 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_8", + "devshell": "devshell_12", "driver": "driver", "follower": "follower", - "haskell-nix": "haskell-nix", - "inclusive": "inclusive_8", - "nix": "nix_8", + "haskell-nix": "haskell-nix_2", + "inclusive": "inclusive_9", + "nix": "nix_13", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_39", + "nixpkgs": "nixpkgs_67", "poetry2nix": "poetry2nix", - "utils": "utils_16" + "utils": "utils_21" }, "locked": { "lastModified": 1647522107, @@ -1638,6 +2629,156 @@ "type": "github" } }, + "colmena": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ], + "stable": "stable" + }, + "locked": { + "lastModified": 1684127108, + "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", + "owner": "zhaofengli", + "repo": "colmena", + "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "v0.4.0", + "repo": "colmena", + "type": "github" + } + }, + "crane": { + "inputs": { + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_14", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "crystal": { + "inputs": { + "ameba-src": "ameba-src", + "bdwgc-src": "bdwgc-src", + "crystal-aarch64-darwin": "crystal-aarch64-darwin", + "crystal-src": "crystal-src", + "crystal-x86_64-darwin": "crystal-x86_64-darwin", + "crystal-x86_64-linux": "crystal-x86_64-linux", + "crystalline-src": "crystalline-src", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1683429373, + "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", + "owner": "manveru", + "repo": "crystal-flake", + "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "crystal-flake", + "type": "github" + } + }, + "crystal-aarch64-darwin": { + "flake": false, + "locked": { + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + } + }, + "crystal-src": { + "flake": false, + "locked": { + "lastModified": 1681995387, + "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", + "owner": "crystal-lang", + "repo": "crystal", + "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", + "type": "github" + }, + "original": { + "owner": "crystal-lang", + "ref": "1.8.1", + "repo": "crystal", + "type": "github" + } + }, + "crystal-x86_64-darwin": { + "flake": false, + "locked": { + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + } + }, + "crystal-x86_64-linux": { + "flake": false, + "locked": { + "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + } + }, + "crystalline-src": { + "flake": false, + "locked": { + "lastModified": 1681549124, + "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", + "owner": "elbywan", + "repo": "crystalline", + "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", + "type": "github" + }, + "original": { + "owner": "elbywan", + "ref": "v0.9.0", + "repo": "crystalline", + "type": "github" + } + }, "customConfig": { "locked": { "lastModified": 1630400035, @@ -1669,6 +2810,36 @@ } }, "customConfig_3": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_4": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_5": { "locked": { "lastModified": 1, "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", @@ -1683,7 +2854,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_2" + "yants": "yants_5" }, "locked": { "lastModified": 1648237091, @@ -1720,7 +2891,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_4" + "yants": "yants_7" }, "locked": { "lastModified": 1655854240, @@ -1739,16 +2910,16 @@ "db-sync": { "inputs": { "cardano-world": "cardano-world", - "customConfig": "customConfig_3", - "flake-compat": "flake-compat_10", - "haskellNix": "haskellNix_3", - "iohkNix": "iohkNix_3", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_23", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "utils": "utils_23" + "utils": "utils_28" }, "locked": { "lastModified": 1670313550, @@ -1767,8 +2938,8 @@ }, "deploy": { "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat_4", + "fenix": "fenix_3", + "flake-compat": "flake-compat_17", "nixpkgs": [ "db-sync", "cardano-world", @@ -1779,7 +2950,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_3" + "utils": "utils_8" }, "locked": { "lastModified": 1638318651, @@ -1797,8 +2968,8 @@ }, "deploy_2": { "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_5", + "fenix": "fenix_5", + "flake-compat": "flake-compat_18", "nixpkgs": [ "db-sync", "cardano-world", @@ -1807,7 +2978,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_9" + "utils": "utils_14" }, "locked": { "lastModified": 1638318651, @@ -1825,8 +2996,8 @@ }, "deploy_3": { "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_6", + "fenix": "fenix_7", + "flake-compat": "flake-compat_19", "nixpkgs": [ "db-sync", "cardano-world", @@ -1836,7 +3007,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_17" + "utils": "utils_22" }, "locked": { "lastModified": 1638318651, @@ -1852,16 +3023,34 @@ "type": "github" } }, + "devour-flake": { + "flake": false, + "locked": { + "lastModified": 1709858306, + "narHash": "sha256-Vey9n9hIlWiSAZ6CCTpkrL6jt4r2JvT2ik9wa2bjeC0=", + "owner": "srid", + "repo": "devour-flake", + "rev": "17b711b9deadbbc5629cb7d2b64cf86ae72af3fa", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "devour-flake", + "type": "github" + } + }, "devshell": { "inputs": { "flake-utils": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "flake-utils" ], "nixpkgs": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "nixpkgs" @@ -1897,12 +3086,28 @@ } }, "devshell_11": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", "owner": "numtide", "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { @@ -1912,6 +3117,25 @@ } }, "devshell_12": { + "inputs": { + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_64" + }, + "locked": { + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_13": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -1926,7 +3150,7 @@ "type": "github" } }, - "devshell_13": { + "devshell_14": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -1941,13 +3165,13 @@ "type": "github" } }, - "devshell_14": { + "devshell_15": { "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", "owner": "numtide", "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { @@ -1956,7 +3180,52 @@ "type": "github" } }, - "devshell_15": { + "devshell_16": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_17": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_18": { + "locked": { + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_19": { "inputs": { "flake-utils": [ "db-sync", @@ -1985,23 +3254,31 @@ "type": "github" } }, - "devshell_16": { + "devshell_2": { "inputs": { - "flake-utils": "flake-utils_31", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], "nixpkgs": [ - "db-sync", - "cardano-world", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", "owner": "numtide", "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { @@ -2010,13 +3287,23 @@ "type": "github" } }, - "devshell_2": { + "devshell_20": { + "inputs": { + "flake-utils": "flake-utils_46", + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", "owner": "numtide", "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { @@ -2026,12 +3313,21 @@ } }, "devshell_3": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "systems": "systems_2" + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", "owner": "numtide", "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", "type": "github" }, "original": { @@ -2041,12 +3337,19 @@ } }, "devshell_4": { + "inputs": { + "flake-utils": "flake-utils_15", + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "lastModified": 1713532798, + "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", "owner": "numtide", "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", "type": "github" }, "original": { @@ -2056,12 +3359,26 @@ } }, "devshell_5": { + "inputs": { + "flake-utils": [ + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", "owner": "numtide", "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { @@ -2072,11 +3389,11 @@ }, "devshell_6": { "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", "owner": "numtide", "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { @@ -2086,28 +3403,12 @@ } }, "devshell_7": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", "owner": "numtide", "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { @@ -2117,16 +3418,12 @@ } }, "devshell_8": { - "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": "nixpkgs_36" - }, "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", "owner": "numtide", "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { @@ -2151,6 +3448,107 @@ } }, "dmerge": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_2": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_3": { + "inputs": { + "haumea": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea" + ], + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "type": "github" + }, + "original": { + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", + "type": "github" + } + }, + "dmerge_4": { "inputs": { "nixlib": [ "cardano-node", @@ -2179,7 +3577,7 @@ "type": "github" } }, - "dmerge_2": { + "dmerge_5": { "inputs": { "nixlib": [ "db-sync", @@ -2210,7 +3608,7 @@ "type": "github" } }, - "dmerge_3": { + "dmerge_6": { "inputs": { "nixlib": [ "db-sync", @@ -2241,9 +3639,9 @@ }, "driver": { "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_6", - "nix": "nix_7", + "devshell": "devshell_13", + "inclusive": "inclusive_7", + "nix": "nix_12", "nixpkgs": [ "db-sync", "cardano-world", @@ -2251,7 +3649,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_13" + "utils": "utils_18" }, "locked": { "lastModified": 1644418487, @@ -2270,11 +3668,11 @@ "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", "owner": "justinwoo", "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { @@ -2299,25 +3697,57 @@ "type": "github" } }, - "ema": { - "inputs": { - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_54", - "pre-commit-hooks": "pre-commit-hooks" - }, + "em_2": { + "flake": false, "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "srid", - "repo": "ema", - "type": "github" + "owner": "deepfire", + "repo": "em", + "type": "github" + } + }, + "em_3": { + "flake": false, + "locked": { + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "type": "github" + }, + "original": { + "owner": "deepfire", + "repo": "em", + "type": "github" + } + }, + "ema": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_82", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "ema", + "type": "github" } }, "ema_2": { @@ -2340,9 +3770,9 @@ "emanote": { "inputs": { "ema": "ema_2", - "flake-parts": "flake-parts", + "flake-parts": "flake-parts_6", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_57", + "nixpkgs": "nixpkgs_85", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -2374,11 +3804,101 @@ "type": "github" } }, + "empty-flake_2": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "empty-flake_3": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "empty-flake_4": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, "fenix": { "inputs": { - "nixpkgs": "nixpkgs_13", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "auth-keys-hub", + "statix", + "nixpkgs" + ], "rust-analyzer-src": "rust-analyzer-src" }, + "locked": { + "lastModified": 1645251813, + "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", + "owner": "nix-community", + "repo": "fenix", + "rev": "9892337b588c38ec59466a1c89befce464aae7f8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_29", + "rust-analyzer-src": "rust-analyzer-src_2" + }, + "locked": { + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_41", + "rust-analyzer-src": "rust-analyzer-src_3" + }, "locked": { "lastModified": 1645165506, "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", @@ -2393,7 +3913,7 @@ "type": "github" } }, - "fenix_2": { + "fenix_4": { "inputs": { "nixpkgs": [ "db-sync", @@ -2403,7 +3923,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_2" + "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { "lastModified": 1649226351, @@ -2419,10 +3939,10 @@ "type": "github" } }, - "fenix_3": { + "fenix_5": { "inputs": { - "nixpkgs": "nixpkgs_26", - "rust-analyzer-src": "rust-analyzer-src_3" + "nixpkgs": "nixpkgs_54", + "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { "lastModified": 1645165506, @@ -2438,7 +3958,7 @@ "type": "github" } }, - "fenix_4": { + "fenix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -2446,7 +3966,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_4" + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { "lastModified": 1660631227, @@ -2462,10 +3982,10 @@ "type": "github" } }, - "fenix_5": { + "fenix_7": { "inputs": { - "nixpkgs": "nixpkgs_42", - "rust-analyzer-src": "rust-analyzer-src_5" + "nixpkgs": "nixpkgs_70", + "rust-analyzer-src": "rust-analyzer-src_7" }, "locked": { "lastModified": 1645165506, @@ -2481,7 +4001,7 @@ "type": "github" } }, - "fenix_6": { + "fenix_8": { "inputs": { "nixpkgs": [ "db-sync", @@ -2490,7 +4010,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_6" + "rust-analyzer-src": "rust-analyzer-src_8" }, "locked": { "lastModified": 1649226351, @@ -2509,16 +4029,15 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -2543,15 +4062,16 @@ "flake-compat_11": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -2559,16 +4079,15 @@ "flake-compat_12": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -2576,11 +4095,11 @@ "flake-compat_13": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -2592,20 +4111,21 @@ "flake-compat_14": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } }, - "flake-compat_2": { + "flake-compat_15": { "flake": false, "locked": { "lastModified": 1672831974, @@ -2622,7 +4142,7 @@ "type": "github" } }, - "flake-compat_3": { + "flake-compat_16": { "flake": false, "locked": { "lastModified": 1650374568, @@ -2638,7 +4158,7 @@ "type": "github" } }, - "flake-compat_4": { + "flake-compat_17": { "flake": false, "locked": { "lastModified": 1627913399, @@ -2654,7 +4174,7 @@ "type": "github" } }, - "flake-compat_5": { + "flake-compat_18": { "flake": false, "locked": { "lastModified": 1627913399, @@ -2670,7 +4190,7 @@ "type": "github" } }, - "flake-compat_6": { + "flake-compat_19": { "flake": false, "locked": { "lastModified": 1627913399, @@ -2686,7 +4206,24 @@ "type": "github" } }, - "flake-compat_7": { + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_20": { "flake": false, "locked": { "lastModified": 1641205782, @@ -2702,7 +4239,7 @@ "type": "github" } }, - "flake-compat_8": { + "flake-compat_21": { "flake": false, "locked": { "lastModified": 1635892615, @@ -2718,7 +4255,7 @@ "type": "github" } }, - "flake-compat_9": { + "flake-compat_22": { "flake": false, "locked": { "lastModified": 1650374568, @@ -2734,308 +4271,338 @@ "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs": "nixpkgs_56" - }, + "flake-compat_23": { + "flake": false, "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "hercules-ci-effects", - "nixpkgs" - ] - }, + "flake-compat_24": { + "flake": false, "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "id": "flake-parts", - "type": "indirect" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "flake-utils": { + "flake-compat_25": { + "flake": false, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_10": { + "flake-compat_26": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_11": { + "flake-compat_3": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_12": { + "flake-compat_4": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_13": { + "flake-compat_5": { + "flake": false, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_14": { + "flake-compat_6": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_15": { + "flake-compat_7": { + "flake": false, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_16": { + "flake-compat_8": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_17": { + "flake-compat_9": { + "flake": false, "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_18": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1672152762, + "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "flake-utils_19": { + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1682984683, + "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "86684881e184f41aa322e653880e497b66429f3e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "flake-utils_2": { + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_3" + }, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "flake-utils_20": { + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_4" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "flake-utils_21": { + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_5" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "flake-utils_22": { + "flake-parts_6": { + "inputs": { + "nixpkgs": "nixpkgs_84" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "flake-utils_23": { + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "hercules-ci-effects", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "flake-parts", + "type": "indirect" } }, - "flake-utils_24": { + "flake-root": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "lastModified": 1713493429, + "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", + "owner": "srid", + "repo": "flake-root", + "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", "type": "github" }, "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", + "owner": "srid", + "repo": "flake-root", "type": "github" } }, - "flake-utils_25": { + "flake-utils": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3044,13 +4611,13 @@ "type": "github" } }, - "flake-utils_26": { + "flake-utils_10": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3059,13 +4626,13 @@ "type": "github" } }, - "flake-utils_27": { + "flake-utils_11": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3074,7 +4641,7 @@ "type": "github" } }, - "flake-utils_28": { + "flake-utils_12": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3089,13 +4656,13 @@ "type": "github" } }, - "flake-utils_29": { + "flake-utils_13": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -3104,13 +4671,13 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_14": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -3119,13 +4686,16 @@ "type": "github" } }, - "flake-utils_30": { + "flake-utils_15": { + "inputs": { + "systems": "systems_3" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -3134,13 +4704,13 @@ "type": "github" } }, - "flake-utils_31": { + "flake-utils_16": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -3149,28 +4719,29 @@ "type": "github" } }, - "flake-utils_32": { + "flake-utils_17": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "numtide", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", "repo": "flake-utils", "type": "github" } }, - "flake-utils_33": { + "flake-utils_18": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -3179,7 +4750,7 @@ "type": "github" } }, - "flake-utils_4": { + "flake-utils_19": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -3194,7 +4765,23 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_2": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_20": { "locked": { "lastModified": 1659877975, "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", @@ -3209,7 +4796,7 @@ "type": "github" } }, - "flake-utils_6": { + "flake-utils_21": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3224,7 +4811,7 @@ "type": "github" } }, - "flake-utils_7": { + "flake-utils_22": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3239,7 +4826,7 @@ "type": "github" } }, - "flake-utils_8": { + "flake-utils_23": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -3254,7 +4841,7 @@ "type": "github" } }, - "flake-utils_9": { + "flake-utils_24": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -3269,3405 +4856,6741 @@ "type": "github" } }, - "flakeCompat": { - "flake": false, + "flake-utils_25": { "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "follower": { - "inputs": { - "devshell": "devshell_10", - "inclusive": "inclusive_7", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_14" - }, + "flake-utils_26": { "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ghc-8.6.5-iohk": { - "flake": false, + "flake-utils_27": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ghc-8.6.5-iohk_2": { - "flake": false, + "flake-utils_28": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ghc-8.6.5-iohk_3": { - "flake": false, + "flake-utils_29": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ghc-8.6.5-iohk_4": { - "flake": false, + "flake-utils_3": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ghc-8.6.5-iohk_5": { - "flake": false, + "flake-utils_30": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ghc-8.6.5-iohk_6": { - "flake": false, + "flake-utils_31": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ghc-8.6.5-iohk_7": { - "flake": false, + "flake-utils_32": { "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ghc98X": { - "flake": false, + "flake-utils_33": { "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" }, "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "ghc99": { - "flake": false, + "flake-utils_34": { "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_5", - "utils": "utils" - }, + "flake-utils_35": { "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hackage": { - "flake": false, + "flake-utils_36": { "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hackage-nix": { - "flake": false, + "flake-utils_37": { "locked": { - "lastModified": 1702772694, - "narHash": "sha256-KL6ZjbhPBCco1ho0lmh0/dfPSNxjF8qtrTlzQcTN3iw=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "20bd4b5f667f892230d4a28ea4607e85ce9bc44e", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hackageNix": { - "flake": false, + "flake-utils_38": { "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hackage_2": { - "flake": false, + "flake-utils_39": { "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", "type": "github" } }, - "hackage_3": { - "flake": false, + "flake-utils_4": { "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hackage_4": { - "flake": false, + "flake-utils_40": { "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hackage_5": { - "flake": false, + "flake-utils_41": { "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "haskell-flake": { + "flake-utils_42": { "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "srid", - "repo": "haskell-flake", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_16", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls_2", - "nix-tools": "nix-tools", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-unstable": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" - }, + "flake-utils_43": { "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_44": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_45": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_46": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_47": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_48": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_8": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flakeCompat": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "follower": { + "inputs": { + "devshell": "devshell_14", + "inclusive": "inclusive_8", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_19" + }, + "locked": { + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "ghc-8.6.5-iohk": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_10": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_11": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_2": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_4": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_5": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_6": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_7": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_8": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_9": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc910X": { + "flake": false, + "locked": { + "lastModified": 1714520650, + "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", + "ref": "ghc-9.10", + "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", + "revCount": 62663, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911": { + "flake": false, + "locked": { + "lastModified": 1714817013, + "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", + "ref": "refs/heads/master", + "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", + "revCount": 62816, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_2": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_2": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_17", + "utils": "utils_2" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_21", + "utils": "utils_4" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_33", + "utils": "utils_6" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "hackage": { + "flake": false, + "locked": { + "lastModified": 1692145451, + "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage-nix": { + "flake": false, + "locked": { + "lastModified": 1718757495, + "narHash": "sha256-xviuxucDjsQ2HbqzfwVyB4ZmDIyzOnf2oDbVtwBHIco=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "0bb764772a383a926e3f945397a0e59ab3c64d6d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix": { + "flake": false, + "locked": { + "lastModified": 1702945378, + "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_2": { + "flake": false, + "locked": { + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_3": { + "flake": false, + "locked": { + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_4": { + "flake": false, + "locked": { + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_2": { + "flake": false, + "locked": { + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_3": { + "flake": false, + "locked": { + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_4": { + "flake": false, + "locked": { + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_5": { + "flake": false, + "locked": { + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_6": { + "flake": false, + "locked": { + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "empty-flake" + ] + }, + "locked": { + "lastModified": 1692147008, + "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_6", + "nix-tools": "nix-tools", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" + }, + "locked": { + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": [ + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_25", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "ghc910X": "ghc910X", + "ghc911": "ghc911", + "hackage": [ + "hackage-nix" + ], + "hls-1.10": "hls-1.10_6", + "hls-2.0": "hls-2.0_4", + "hls-2.2": "hls-2.2_3", + "hls-2.3": "hls-2.3_3", + "hls-2.4": "hls-2.4_3", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", + "hls-2.7": "hls-2.7", + "hls-2.8": "hls-2.8", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2305": "nixpkgs-2305_4", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" + }, + "locked": { + "lastModified": 1718797200, + "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cb139fa956158397aa398186bb32dd26f7318784", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_5": { + "inputs": { + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_11", + "flake-utils": "flake-utils_48", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "hackage": "hackage_6", + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_13", + "nix-tools": "nix-tools_5", + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_10" + }, + "locked": { + "lastModified": 1654219238, + "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "type": "github" + } + }, + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-compat": "flake-compat_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "cardano-nix", + "cardano-db-sync", + "hackageNix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage" + }, + "locked": { + "lastModified": 1701053834, + "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "cardano-nix", + "cardano-node-8.1.1", + "hackageNix" + ], + "hls-1.10": "hls-1.10_3", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "iserv-proxy": "iserv-proxy_3", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_2" + }, + "locked": { + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-compat": "flake-compat_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", + "hackage": [ + "cardano-nix", + "cardano-node-8.7.3", + "hackageNix" + ], + "hls-1.10": "hls-1.10_4", + "hls-2.0": "hls-2.0_3", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_4", + "iserv-proxy": "iserv-proxy_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2211": "nixpkgs-2211_4", + "nixpkgs-2305": "nixpkgs-2305_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-compat": "flake-compat_15", + "flake-utils": "flake-utils_17", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "hackage": [ + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10_5", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_5", + "iserv-proxy": "iserv-proxy_5", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2211": "nixpkgs-2211_5", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_4" + }, + "locked": { + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" + }, + "locked": { + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_47", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" + }, + "locked": { + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_27" + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "cardano-nix", + "flake-parts" + ], + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1714676393, + "narHash": "sha256-OA2LZPTCHyH0PcsNkjeTLvgsn4JmsV2VTvXQacHeUZU=", + "owner": "mlabs-haskell", + "repo": "hercules-ci-effects", + "rev": "5ad8f9613b735cb4f8222f07ae45ca37bfe76a23", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "ref": "push-cache-effect", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hercules-ci-effects_2": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_98" + }, + "locked": { + "lastModified": 1718018037, + "narHash": "sha256-03rLBd/lKecgaKz0j5ESUf9lDn5R0SJatZTKLL5unWE=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "0ab08b23ce3c3f75fe9a5598756b6fb8bcf0b414", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hls-1.10": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_2": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_3": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_4": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_5": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_6": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_2": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_3": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_4": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_3": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_2": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_2": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_3": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.8": { + "flake": false, + "locked": { + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_10": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_11": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_2": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_3": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_4": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_5": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_6": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_7": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_8": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_9": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hydra": { + "inputs": { + "nix": "nix", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_10": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_11": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_12": { + "inputs": { + "nix": "nix_20", + "nixpkgs": [ + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_13": { + "inputs": { + "nix": "nix_21", + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_2": { + "inputs": { + "nix": "nix_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_3": { + "inputs": { + "nix": "nix_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_4": { + "inputs": { + "nix": "nix_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_5": { + "inputs": { + "nix": "nix_6", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_6": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_7": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_8": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "incl": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_2": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_3": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_4": { + "inputs": { + "nixlib": [ + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_11": { + "inputs": { + "stdlib": "stdlib_11" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_12": { + "inputs": { + "stdlib": "stdlib_12" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_2": { + "inputs": { + "stdlib": "stdlib_2" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_3": { + "inputs": { + "stdlib": "stdlib_3" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_4": { + "inputs": { + "stdlib": "stdlib_4" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_5": { + "inputs": { + "stdlib": "stdlib_5" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_6": { + "inputs": { + "stdlib": "stdlib_6" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_7": { + "inputs": { + "stdlib": "stdlib_7" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_9": { + "inputs": { + "stdlib": "stdlib_9" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inputs-check": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1692633913, + "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", + "owner": "input-output-hk", + "repo": "inputs-check", + "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "inputs-check", + "type": "github" + } + }, + "iogo": { + "inputs": { + "devshell": "devshell_8", + "inclusive": "inclusive_4", + "nixpkgs": "nixpkgs_50", + "utils": "utils_13" + }, + "locked": { + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogo_2": { + "inputs": { + "devshell": "devshell_18", + "inclusive": "inclusive_12", + "nixpkgs": "nixpkgs_79", + "utils": "utils_27" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "blst": "blst", + "nixpkgs": "nixpkgs_7", + "secp256k1": "secp256k1", + "sodium": "sodium" + }, + "locked": { + "lastModified": 1691469905, + "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + } + }, + "iohk-nix-ng": { + "inputs": { + "blst": "blst_2", + "nixpkgs": "nixpkgs_8", + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" + }, + "locked": { + "lastModified": 1696471795, + "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "blst": "blst_7", + "nixpkgs": [ + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" + }, + "locked": { + "lastModified": 1715898223, + "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_4": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + } + }, + "iohkNix": { + "inputs": { + "blst": "blst_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "secp256k1": "secp256k1_3", + "sodium": "sodium_3" + }, + "locked": { + "lastModified": 1698999258, + "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { + "blst": "blst_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "secp256k1": "secp256k1_4", + "sodium": "sodium_4" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_3": { + "inputs": { + "blst": "blst_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "secp256k1": "secp256k1_5", + "sodium": "sodium_5" + }, + "locked": { + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_4": { + "inputs": { + "blst": "blst_6", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "secp256k1": "secp256k1_6", + "sodium": "sodium_6" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { + "inputs": { + "nixpkgs": [ + "db-sync", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "ref": "hkm/remote-iserv", + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_3": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_4": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_5": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_6": { + "flake": false, + "locked": { + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "kupo": { + "flake": false, + "locked": { + "lastModified": 1668678914, + "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", + "owner": "CardanoSolutions", + "repo": "kupo", + "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "type": "github" + }, + "original": { + "owner": "CardanoSolutions", + "ref": "v2.2.0", + "repo": "kupo", + "type": "github" + } + }, + "kupo-nixos": { + "inputs": { + "haskell-nix": "haskell-nix_5", + "iohk-nix": "iohk-nix_4", + "kupo": [ + "kupo" + ], + "nixpkgs": [ + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1672905539, + "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_10": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_11": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_12": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_13": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_14": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_15": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_16": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_17": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_18": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_19": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_20": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_21": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_4": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_7": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_8": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_4": { + "inputs": { + "flake-utils": [ + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "haskell-nix_2": { + "n2c_5": { "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "hackage": [ + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_55" + }, + "locked": { + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_6": { + "inputs": { + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_90" + }, + "locked": { + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_5", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_15", + "inclusive": [ "db-sync", "cardano-world", - "hackage" + "bitte-cells", + "cicero", + "inclusive" ], - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_6", - "nix-tools": "nix-tools_3", "nixpkgs": [ "db-sync", "cardano-world", - "haskell-nix", - "nixpkgs-unstable" + "bitte-cells", + "cicero", + "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" + "utils": "utils_20" }, "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nix-cache-proxy", "type": "github" } }, - "haskell-nix_3": { + "nix-inclusive": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_12", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ - "hackage-nix" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_8", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6" + "stdlib": "stdlib_13" }, "locked": { - "lastModified": 1702774226, - "narHash": "sha256-QUQBV05VimFU0pasJlialCcL/jlCumzaTmCM9+6Ncpk=", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6ce1c8ab2a6d4af5721b22bd95968439b8c3c307", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nix-inclusive", "type": "github" } }, - "haskell-nix_4": { + "nix-nomad": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_33", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_5", + "flake-compat": "flake-compat_8", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs-unstable" + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ] }, "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "haskellNix": { + "nix-nomad_2": { "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": [ - "cardano-node", - "hackageNix" + "flake-compat": "flake-compat_9", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" ], - "hls-1.10": "hls-1.10", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", + "gomod2nix": "gomod2nix_2", "nixpkgs": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ] }, "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_5", - "nix-tools": "nix-tools_2", + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_16", + "flake-utils": [ + "cardano-node", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", + "cardano-node", + "tullia", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" + "nixpkgs-lib": [ + "cardano-node", + "tullia", + "nixpkgs" + ] }, "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_7", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" - }, + "nix-tools": { + "flake": false, "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nix-tools", "type": "github" } }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_70" - }, + "nix-tools_2": { + "flake": false, "locked": { - "lastModified": 1701009247, - "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "hls-1.10": { + "nix-tools_3": { "flake": false, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "hls-1.10_2": { + "nix-tools_4": { "flake": false, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "hls-2.0": { + "nix-tools_5": { "flake": false, "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "hls-2.2": { - "flake": false, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_16" + }, "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hls-2.3": { - "flake": false, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_18" + }, "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hls-2.4": { - "flake": false, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_22" + }, "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hpc-coveralls": { - "flake": false, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_26" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hpc-coveralls_2": { - "flake": false, + "nix2container_5": { + "inputs": { + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_32" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hpc-coveralls_3": { - "flake": false, + "nix2container_6": { + "inputs": { + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_34" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hpc-coveralls_4": { - "flake": false, + "nix2container_7": { + "inputs": { + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_93" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", "type": "github" } }, - "hpc-coveralls_5": { - "flake": false, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_56", + "nixpkgs-regression": "nixpkgs-regression_9" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", "type": "github" } }, - "hpc-coveralls_6": { - "flake": false, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_58", + "nixpkgs-regression": "nixpkgs-regression_10" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "hpc-coveralls_7": { - "flake": false, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_65", + "nixpkgs-regression": "nixpkgs-regression_11" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" } }, - "hydra": { + "nix_13": { "inputs": { - "nix": "nix", - "nixpkgs": [ - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_66", + "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" } }, - "hydra_2": { + "nix_14": { "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_71", + "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "hydra_3": { + "nix_15": { "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_73" }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "NixOS", + "repo": "nix", "type": "github" } }, - "hydra_4": { + "nix_16": { "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_75", + "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "hydra_5": { + "nix_17": { "inputs": { - "nix": "nix_12", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_87", + "nixpkgs-regression": "nixpkgs-regression_15" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_89", + "nixpkgs-regression": "nixpkgs-regression_16" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" } }, - "hydra_6": { + "nix_19": { "inputs": { - "nix": "nix_13", - "nixpkgs": [ - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_96", + "nixpkgs-regression": "nixpkgs-regression_17" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" } }, - "hydra_7": { + "nix_2": { "inputs": { - "nix": "nix_14", - "nixpkgs": [ - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "flake-compat": "flake-compat_3", + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_9", + "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1693573010, + "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", + "owner": "nixos", + "repo": "nix", + "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nixos", + "ref": "2.17-maintenance", + "repo": "nix", + "type": "github" } }, - "hydra_8": { + "nix_20": { "inputs": { - "nix": "nix_15", - "nixpkgs": [ - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_20", + "nixpkgs": "nixpkgs_97", + "nixpkgs-regression": "nixpkgs-regression_18" }, "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "hydra_9": { + "nix_21": { "inputs": { - "nix": "nix_16", - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_21", + "nixpkgs": "nixpkgs_99", + "nixpkgs-regression": "nixpkgs-regression_19" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" } }, - "incl": { + "nix_3": { "inputs": { - "nixlib": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_13", + "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "inclusive": { + "nix_4": { "inputs": { - "stdlib": "stdlib" + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_15", + "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "inclusive_10": { + "nix_5": { "inputs": { - "stdlib": "stdlib_10" + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_25", + "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "inclusive_11": { + "nix_6": { "inputs": { - "stdlib": "stdlib_11" + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_31", + "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "inclusive_2": { + "nix_7": { "inputs": { - "stdlib": "stdlib_2" + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_42", + "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "inclusive_3": { + "nix_8": { "inputs": { - "stdlib": "stdlib_3" + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_44" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nix", "type": "github" } }, - "inclusive_4": { + "nix_9": { "inputs": { - "stdlib": "stdlib_4" + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_46", + "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "inclusive_5": { + "nixago": { "inputs": { - "stdlib": "stdlib_5" + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_6": { - "inputs": { - "stdlib": "stdlib_6" - }, + "nixago-exts": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "inclusive_7": { - "inputs": { - "stdlib": "stdlib_7" - }, + "nixago-exts_2": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "inclusive_8": { + "nixago_2": { "inputs": { - "stdlib": "stdlib_8" + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_9": { + "nixago_3": { "inputs": { - "stdlib": "stdlib_9" + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "iogo": { + "nixago_4": { "inputs": { - "devshell": "devshell_4", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_22", - "utils": "utils_8" + "flake-utils": [ + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "iogo_2": { + "nixago_5": { "inputs": { - "devshell": "devshell_14", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_51", - "utils": "utils_22" + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "iohk-nix": { + "nixago_6": { "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", "nixpkgs": [ "db-sync", "cardano-world", + "std", "nixpkgs" ] }, "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "iohk-nix_2": { - "inputs": { - "blst": "blst_2", - "nixpkgs": [ - "nixpkgs" - ], - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" - }, + "nixlib": { "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "iohk-nix_3": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixlib_2": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_3": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "iohkNix": { - "inputs": { - "blst": "blst", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1", - "sodium": "sodium" - }, + "nixpkgs": { "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, + "nixpkgs-2003": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "db-sync", - "nixpkgs" - ] - }, + "nixpkgs-2003_10": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iserv-proxy": { - "flake": false, + "nixpkgs-2003_11": { "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "iserv-proxy_2": { - "flake": false, + "nixpkgs-2003_2": { "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "kupo": { - "flake": false, + "nixpkgs-2003_3": { "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "kupo-nixos": { - "inputs": { - "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_3", - "kupo": [ - "kupo" - ], - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs-2003_4": { "locked": { - "lastModified": 1672905539, - "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src": { - "flake": false, + "nixpkgs-2003_5": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_10": { - "flake": false, + "nixpkgs-2003_6": { "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_11": { - "flake": false, + "nixpkgs-2003_7": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_12": { - "flake": false, + "nixpkgs-2003_8": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_13": { - "flake": false, + "nixpkgs-2003_9": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_14": { - "flake": false, + "nixpkgs-2105": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_15": { - "flake": false, + "nixpkgs-2105_10": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_16": { - "flake": false, + "nixpkgs-2105_11": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_2": { - "flake": false, + "nixpkgs-2105_2": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_3": { - "flake": false, + "nixpkgs-2105_3": { "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_4": { - "flake": false, + "nixpkgs-2105_4": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_5": { - "flake": false, + "nixpkgs-2105_5": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_6": { - "flake": false, + "nixpkgs-2105_6": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_7": { - "flake": false, + "nixpkgs-2105_7": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_8": { - "flake": false, + "nixpkgs-2105_8": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_9": { - "flake": false, + "nixpkgs-2105_9": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor": { - "flake": false, + "nixpkgs-2111": { "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { - "flake": false, + "nixpkgs-2111_10": { "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "n2c": { - "inputs": { - "flake-utils": [ - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs-2111_11": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_2": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": "flake-utils_11", - "nixpkgs": "nixpkgs_27" - }, + "nixpkgs-2111_3": { "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_62" - }, + "nixpkgs-2111_4": { "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_3", - "nixpkgs-regression": "nixpkgs-regression" - }, + "nixpkgs-2111_5": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-cache-proxy": { - "inputs": { - "devshell": "devshell_11", - "inclusive": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_15" - }, + "nixpkgs-2111_6": { "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_12" - }, + "nixpkgs-2111_7": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_3", - "flake-utils": [ - "cardano-node", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "cardano-node", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-node", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs-2111_8": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools": { - "flake": false, + "nixpkgs-2111_9": { "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_2": { - "flake": false, + "nixpkgs-2205": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_3": { - "flake": false, + "nixpkgs-2205_2": { "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_4": { - "flake": false, + "nixpkgs-2205_3": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_5": { - "flake": false, + "nixpkgs-2205_4": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_4" - }, + "nixpkgs-2205_5": { "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_6" - }, + "nixpkgs-2205_6": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_65" - }, + "nixpkgs-2205_7": { "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_10": { - "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_45" - }, + "nixpkgs-2211": { "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "repo": "nix", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_47", - "nixpkgs-regression": "nixpkgs-regression_9" - }, + "nixpkgs-2211_2": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_12": { - "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_59", - "nixpkgs-regression": "nixpkgs-regression_10" - }, + "nixpkgs-2211_3": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_13": { - "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_61", - "nixpkgs-regression": "nixpkgs-regression_11" - }, + "nixpkgs-2211_4": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_14": { - "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_68", - "nixpkgs-regression": "nixpkgs-regression_12" - }, + "nixpkgs-2211_5": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_15": { - "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_69", - "nixpkgs-regression": "nixpkgs-regression_13" - }, + "nixpkgs-2211_6": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_16": { - "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_71", - "nixpkgs-regression": "nixpkgs-regression_14" - }, + "nixpkgs-2305": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_2": { - "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_14", - "nixpkgs-regression": "nixpkgs-regression_2" - }, + "nixpkgs-2305_2": { "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_16" - }, + "nixpkgs-2305_3": { "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { "owner": "NixOS", - "repo": "nix", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_18", - "nixpkgs-regression": "nixpkgs-regression_3" - }, + "nixpkgs-2305_4": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_28", - "nixpkgs-regression": "nixpkgs-regression_4" - }, - "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "nixpkgs-2311": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", - "nixpkgs-regression": "nixpkgs-regression_5" - }, + "nixpkgs-docker": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" }, "original": { "owner": "nixos", - "repo": "nix", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "nix_7": { - "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_37", - "nixpkgs-regression": "nixpkgs-regression_6" - }, + "nixpkgs-lib": { "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "dir": "lib", + "lastModified": 1671359686, + "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_8": { - "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_38", - "nixpkgs-regression": "nixpkgs-regression_7" - }, + "nixpkgs-lib_2": { "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", "type": "github" }, "original": { + "dir": "lib", "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_9": { - "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_43", - "nixpkgs-regression": "nixpkgs-regression_8" - }, + "nixpkgs-lib_3": { "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixago": { - "inputs": { - "flake-utils": [ - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs-lib_4": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixago-exts": { + "nixpkgs-lib_5": { "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" + "lastModified": 1714640452, + "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" } }, - "nixago-exts_2": { + "nixpkgs-regression": { "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, + "nixpkgs-regression_10": { "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "nixpkgs-regression_11": { "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixlib": { + "nixpkgs-regression_12": { "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixlib_2": { + "nixpkgs-regression_13": { "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixlib_3": { + "nixpkgs-regression_14": { "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs": { + "nixpkgs-regression_15": { "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-2003": { + "nixpkgs-regression_16": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-2003_2": { + "nixpkgs-regression_17": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-2003_3": { + "nixpkgs-regression_18": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-2003_4": { + "nixpkgs-regression_19": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-2003_5": { + "nixpkgs-regression_2": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-2003_6": { + "nixpkgs-regression_3": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-2003_7": { + "nixpkgs-regression_4": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-2105": { + "nixpkgs-regression_5": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-2105_2": { + "nixpkgs-regression_6": { "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-2105_3": { + "nixpkgs-regression_7": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-2105_4": { + "nixpkgs-regression_8": { "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_9": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-2105_5": { + "nixpkgs-stable": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1690066826, + "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_6": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_7": { + "nixpkgs-unstable_10": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111": { + "nixpkgs-unstable_11": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_2": { + "nixpkgs-unstable_12": { "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_3": { + "nixpkgs-unstable_13": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "nixpkgs-2111_4": { + "nixpkgs-unstable_14": { "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_5": { + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", + "lastModified": 1696577711, + "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_6": { + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_7": { + "nixpkgs-unstable_4": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205": { + "nixpkgs-unstable_5": { "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_2": { + "nixpkgs-unstable_6": { "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_3": { + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211": { + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", - "owner": "NixOS", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211_2": { + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2305": { + "nixpkgs_10": { "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "lastModified": 1690026219, + "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2311": { + "nixpkgs_11": { "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-docker": { + "nixpkgs_12": { "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", "type": "github" }, "original": { "owner": "nixos", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "nixpkgs-regression": { + "nixpkgs_13": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-regression_10": { + "nixpkgs_14": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "indirect" } }, - "nixpkgs-regression_11": { + "nixpkgs_15": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_12": { + "nixpkgs_16": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_13": { + "nixpkgs_17": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-regression_14": { + "nixpkgs_18": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_2": { + "nixpkgs_19": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_3": { + "nixpkgs_2": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1677543769, + "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_4": { + "nixpkgs_20": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_5": { + "nixpkgs_21": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_6": { + "nixpkgs_22": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_7": { + "nixpkgs_23": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_24": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "indirect" } }, - "nixpkgs-regression_8": { + "nixpkgs_25": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_9": { + "nixpkgs_26": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs_27": { "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs-unstable_2": { + "nixpkgs_28": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { @@ -6677,29 +11600,29 @@ "type": "github" } }, - "nixpkgs-unstable_3": { + "nixpkgs_29": { "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_4": { + "nixpkgs_3": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1645013224, + "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", "type": "github" }, "original": { @@ -6709,87 +11632,129 @@ "type": "github" } }, - "nixpkgs-unstable_5": { + "nixpkgs_30": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_31": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_6": { + "nixpkgs_32": { "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_7": { + "nixpkgs_33": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_8": { + "nixpkgs_34": { "locked": { - "lastModified": 1701336116, - "narHash": "sha256-kEmpezCR/FpITc6yMbAh4WrOCiT2zg5pSjnKrq51h5Y=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f5c27c6136db4d76c30e533c20517df6864c46ee", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_9": { + "nixpkgs_35": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_36": { + "locked": { + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "type": "github" + }, + "original": { + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_10": { + "nixpkgs_37": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_38": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6805,7 +11770,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_39": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -6819,7 +11784,23 @@ "type": "indirect" } }, - "nixpkgs_12": { + "nixpkgs_4": { + "locked": { + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6835,7 +11816,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_41": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6851,7 +11832,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_42": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6866,7 +11847,7 @@ "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs_43": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -6882,7 +11863,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_44": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -6897,7 +11878,7 @@ "type": "indirect" } }, - "nixpkgs_17": { + "nixpkgs_45": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -6913,7 +11894,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_46": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -6928,7 +11909,7 @@ "type": "indirect" } }, - "nixpkgs_19": { + "nixpkgs_47": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -6944,21 +11925,7 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_20": { + "nixpkgs_48": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -6974,7 +11941,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_49": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6990,7 +11957,23 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_5": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_50": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7006,7 +11989,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_51": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7022,7 +12005,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_52": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7038,7 +12021,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_53": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -7053,7 +12036,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_54": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7069,7 +12052,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_55": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7084,7 +12067,7 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_56": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7099,7 +12082,7 @@ "type": "indirect" } }, - "nixpkgs_29": { + "nixpkgs_57": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -7115,23 +12098,7 @@ "type": "github" } }, - "nixpkgs_3": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { + "nixpkgs_58": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7146,7 +12113,7 @@ "type": "indirect" } }, - "nixpkgs_31": { + "nixpkgs_59": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7162,7 +12129,23 @@ "type": "github" } }, - "nixpkgs_32": { + "nixpkgs_6": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7178,7 +12161,7 @@ "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_61": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7194,7 +12177,7 @@ "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_62": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7210,7 +12193,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_63": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -7226,7 +12209,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_64": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -7242,7 +12225,7 @@ "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_65": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7257,7 +12240,7 @@ "type": "indirect" } }, - "nixpkgs_38": { + "nixpkgs_66": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7272,7 +12255,7 @@ "type": "indirect" } }, - "nixpkgs_39": { + "nixpkgs_67": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -7288,22 +12271,7 @@ "type": "github" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { + "nixpkgs_68": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7317,7 +12285,7 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_69": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7333,7 +12301,23 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_7": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7349,7 +12333,7 @@ "type": "github" } }, - "nixpkgs_43": { + "nixpkgs_71": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7364,7 +12348,7 @@ "type": "indirect" } }, - "nixpkgs_44": { + "nixpkgs_72": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7380,7 +12364,7 @@ "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_73": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7395,7 +12379,7 @@ "type": "indirect" } }, - "nixpkgs_46": { + "nixpkgs_74": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7411,7 +12395,7 @@ "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_75": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7426,7 +12410,7 @@ "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_76": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7442,7 +12426,7 @@ "type": "github" } }, - "nixpkgs_49": { + "nixpkgs_77": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7458,23 +12442,7 @@ "type": "github" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_50": { + "nixpkgs_78": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7490,7 +12458,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_79": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7506,7 +12474,23 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_8": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_80": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7522,7 +12506,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_81": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7538,7 +12522,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_82": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -7554,7 +12538,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_83": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -7568,7 +12552,7 @@ "type": "indirect" } }, - "nixpkgs_56": { + "nixpkgs_84": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -7584,7 +12568,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_85": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -7598,7 +12582,7 @@ "type": "indirect" } }, - "nixpkgs_58": { + "nixpkgs_86": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -7612,7 +12596,7 @@ "type": "indirect" } }, - "nixpkgs_59": { + "nixpkgs_87": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7627,22 +12611,7 @@ "type": "indirect" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_88": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -7657,7 +12626,7 @@ "type": "github" } }, - "nixpkgs_61": { + "nixpkgs_89": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7672,7 +12641,23 @@ "type": "indirect" } }, - "nixpkgs_62": { + "nixpkgs_9": { + "locked": { + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_90": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -7687,7 +12672,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_91": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -7703,7 +12688,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_92": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7719,7 +12704,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_93": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7734,7 +12719,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_94": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -7750,7 +12735,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_95": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -7766,7 +12751,7 @@ "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_96": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7781,7 +12766,7 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_97": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -7797,29 +12782,13 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_98": { "locked": { - "lastModified": 1697723726, - "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7c9cc5a6e5d38010801741ac830a3f8fd667a7a0", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { @@ -7829,7 +12798,7 @@ "type": "github" } }, - "nixpkgs_71": { + "nixpkgs_99": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7844,41 +12813,11 @@ "type": "indirect" } }, - "nixpkgs_8": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, "nomad": { "inputs": { - "nix": "nix_3", - "nixpkgs": "nixpkgs_17", - "utils": "utils_4" + "nix": "nix_8", + "nixpkgs": "nixpkgs_45", + "utils": "utils_9" }, "locked": { "lastModified": 1648128770, @@ -7897,11 +12836,11 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_2", - "inclusive": "inclusive", - "nix": "nix_4", - "nixpkgs": "nixpkgs_19", - "utils": "utils_5" + "devshell": "devshell_6", + "inclusive": "inclusive_2", + "nix": "nix_9", + "nixpkgs": "nixpkgs_47", + "utils": "utils_10" }, "locked": { "lastModified": 1648029666, @@ -7919,11 +12858,11 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_5", - "inclusive": "inclusive_4", - "nix": "nix_6", - "nixpkgs": "nixpkgs_31", - "utils": "utils_10" + "devshell": "devshell_9", + "inclusive": "inclusive_5", + "nix": "nix_11", + "nixpkgs": "nixpkgs_59", + "utils": "utils_15" }, "locked": { "lastModified": 1648029666, @@ -7941,11 +12880,11 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_12", - "inclusive": "inclusive_9", - "nix": "nix_11", - "nixpkgs": "nixpkgs_48", - "utils": "utils_19" + "devshell": "devshell_16", + "inclusive": "inclusive_10", + "nix": "nix_16", + "nixpkgs": "nixpkgs_76", + "utils": "utils_24" }, "locked": { "lastModified": 1648029666, @@ -7963,10 +12902,10 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_3", - "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_20", - "utils": "utils_6" + "devshell": "devshell_7", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_48", + "utils": "utils_11" }, "locked": { "lastModified": 1649836589, @@ -7984,10 +12923,10 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_6", - "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_32", - "utils": "utils_11" + "devshell": "devshell_10", + "inclusive": "inclusive_6", + "nixpkgs": "nixpkgs_60", + "utils": "utils_16" }, "locked": { "lastModified": 1658244176, @@ -8005,10 +12944,10 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_49", - "utils": "utils_20" + "devshell": "devshell_17", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_77", + "utils": "utils_25" }, "locked": { "lastModified": 1649836589, @@ -8019,33 +12958,78 @@ "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "nomad_2": { + "inputs": { + "nix": "nix_15", + "nixpkgs": "nixpkgs_74", + "utils": "utils_23" + }, + "locked": { + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", + "type": "github" + } + }, + "nosys": { + "locked": { + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "nomad_2": { - "inputs": { - "nix": "nix_10", - "nixpkgs": "nixpkgs_46", - "utils": "utils_18" + "nosys_2": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_3": { "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "nosys": { + "nosys_4": { "locked": { "lastModified": 1667881534, "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", @@ -8060,6 +13044,23 @@ "type": "github" } }, + "offchain-metadata-tools-service": { + "flake": false, + "locked": { + "lastModified": 1684160858, + "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", + "owner": "input-output-hk", + "repo": "offchain-metadata-tools", + "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "feat-add-password-to-db-conn-string", + "repo": "offchain-metadata-tools", + "type": "github" + } + }, "ogmios": { "flake": false, "locked": { @@ -8077,61 +13078,58 @@ "type": "github" } }, - "ogmios-nixos": { - "inputs": { - "CHaP": "CHaP_3", - "blank": "blank_5", - "cardano-configurations": "cardano-configurations_2", - "cardano-node": [ - "cardano-node" - ], - "flake-compat": "flake-compat_13", - "haskell-nix": [ - "haskell-nix" - ], - "iohk-nix": [ - "iohk-nix" - ], - "nixpkgs": [ - "nixpkgs" - ], - "ogmios-src": [ - "ogmios" - ] + "ogmios_2": { + "flake": false, + "locked": { + "lastModified": 1706884055, + "narHash": "sha256-GL3MYr9+VK7aTwfKK/ZtLVAS3ZTWJ4mZUJ10e+MR2U0=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "523f1cdcaf8451c4ee6ecb8cd2cd14e61f93e4be", + "type": "github" }, + "original": { + "owner": "CardanoSolutions", + "ref": "v6.0.3", + "repo": "ogmios", + "type": "github" + } + }, + "old-ghc-nix": { + "flake": false, "locked": { - "lastModified": 1695289922, - "narHash": "sha256-WeZkYCyvOqnVx9zYgyO2rh0rd3O2DmxH0HZ4OJnf/aw=", - "owner": "mlabs-haskell", - "repo": "ogmios-nixos", - "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios-nixos", - "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "ogmios_2": { + "old-ghc-nix_10": { "flake": false, "locked": { - "lastModified": 1691769233, - "narHash": "sha256-7CLprKq3RwJfvy31LAPux+DYFLjEmbRBFgvtYDpJA8Q=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "3d3f359b0987c009ef66fb4d4b4bddce92b9aeb3", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v6.0.0", - "repo": "ogmios", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "old-ghc-nix": { + "old-ghc-nix_11": { "flake": false, "locked": { "lastModified": 1631092763, @@ -8250,6 +13248,40 @@ "type": "github" } }, + "old-ghc-nix_8": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_9": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, "ops-lib": { "flake": false, "locked": { @@ -8266,61 +13298,274 @@ "type": "github" } }, - "ops-lib_2": { - "flake": false, + "ops-lib_2": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_3": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_4": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_5": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_6": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "paisano": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys_2", + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "core", + "type": "github" + } + }, + "paisano-actions": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "actions", + "type": "github" + } + }, + "paisano-mdbook-preprocessor": { + "inputs": { + "crane": "crane", + "fenix": "fenix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, + "locked": { + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "type": "github" + } + }, + "paisano-tui": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "ops-lib_3": { - "flake": false, + "paisano-tui_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "paisano_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "nosys": "nosys_3", + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, "plutip": { "inputs": { - "CHaP": "CHaP_4", + "CHaP": "CHaP_6", "cardano-node": [ "cardano-node" ], - "flake-compat": "flake-compat_14", + "flake-compat": "flake-compat_26", "hackage-nix": [ "hackage-nix" ], @@ -8351,7 +13596,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_17", + "flake-utils": "flake-utils_32", "nixpkgs": [ "db-sync", "cardano-world", @@ -8377,8 +13622,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_83" }, "locked": { "lastModified": 1639823344, @@ -8394,12 +13639,39 @@ "type": "github" } }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat_13", + "gitignore": "gitignore", + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1716213921, + "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_21", - "rust-overlay": "rust-overlay" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_49", + "rust-overlay": "rust-overlay_2" }, "locked": { "lastModified": 1641119695, @@ -8418,9 +13690,9 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_24", - "rust-overlay": "rust-overlay_2" + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_52", + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1645147603, @@ -8439,9 +13711,9 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_33", - "rust-overlay": "rust-overlay_3" + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_61", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1641119695, @@ -8460,9 +13732,9 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_50", - "rust-overlay": "rust-overlay_4" + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_78", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1641119695, @@ -8481,9 +13753,9 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_53", - "rust-overlay": "rust-overlay_5" + "flake-utils": "flake-utils_36", + "nixpkgs": "nixpkgs_81", + "rust-overlay": "rust-overlay_6" }, "locked": { "lastModified": 1645147603, @@ -8504,14 +13776,15 @@ "CHaP": "CHaP", "blockfrost": "blockfrost", "cardano-configurations": "cardano-configurations", + "cardano-nix": "cardano-nix", "cardano-node": "cardano-node", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_11", + "flake-compat": "flake-compat_24", "hackage-nix": "hackage-nix", - "haskell-nix": "haskell-nix_3", - "hercules-ci-effects": "hercules-ci-effects", - "iohk-nix": "iohk-nix_2", + "haskell-nix": "haskell-nix_4", + "hercules-ci-effects": "hercules-ci-effects_2", + "iohk-nix": "iohk-nix_3", "kupo": "kupo", "kupo-nixos": "kupo-nixos", "nixpkgs": [ @@ -8519,11 +13792,44 @@ "nixpkgs-unstable" ], "ogmios": "ogmios_2", - "ogmios-nixos": "ogmios-nixos", "plutip": "plutip" } }, "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1645205556, + "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_2": { + "flake": false, + "locked": { + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_3": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8540,7 +13846,7 @@ "type": "github" } }, - "rust-analyzer-src_2": { + "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8557,7 +13863,7 @@ "type": "github" } }, - "rust-analyzer-src_3": { + "rust-analyzer-src_5": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8574,7 +13880,7 @@ "type": "github" } }, - "rust-analyzer-src_4": { + "rust-analyzer-src_6": { "flake": false, "locked": { "lastModified": 1660579619, @@ -8591,7 +13897,7 @@ "type": "github" } }, - "rust-analyzer-src_5": { + "rust-analyzer-src_7": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8608,7 +13914,7 @@ "type": "github" } }, - "rust-analyzer-src_6": { + "rust-analyzer-src_8": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8626,6 +13932,39 @@ } }, "rust-overlay": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { "inputs": { "flake-utils": [ "db-sync", @@ -8660,7 +13999,7 @@ "type": "github" } }, - "rust-overlay_2": { + "rust-overlay_3": { "inputs": { "flake-utils": [ "db-sync", @@ -8693,7 +14032,7 @@ "type": "github" } }, - "rust-overlay_3": { + "rust-overlay_4": { "inputs": { "flake-utils": [ "db-sync", @@ -8724,7 +14063,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_5": { "inputs": { "flake-utils": [ "db-sync", @@ -8757,7 +14096,7 @@ "type": "github" } }, - "rust-overlay_5": { + "rust-overlay_6": { "inputs": { "flake-utils": [ "db-sync", @@ -8788,7 +14127,92 @@ "type": "github" } }, - "secp256k1": { + "secp256k1": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_2": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_3": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_4": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_5": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_6": { "flake": false, "locked": { "lastModified": 1683999695, @@ -8805,7 +14229,7 @@ "type": "github" } }, - "secp256k1_2": { + "secp256k1_7": { "flake": false, "locked": { "lastModified": 1683999695, @@ -8856,7 +14280,159 @@ "type": "github" } }, + "sodium_3": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_4": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_5": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_6": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_7": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_10", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1690199016, + "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "stable": { + "locked": { + "lastModified": 1669735802, + "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "731cc710aeebecbf45a258e977e8b68350549522", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, "stackage": { + "flake": false, + "locked": { + "lastModified": 1701043780, + "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_10": { + "flake": false, + "locked": { + "lastModified": 1654219171, + "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_2": { "flake": false, "locked": { "lastModified": 1685491814, @@ -8872,7 +14448,39 @@ "type": "github" } }, - "stackage_2": { + "stackage_3": { + "flake": false, + "locked": { + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_4": { + "flake": false, + "locked": { + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_5": { "flake": false, "locked": { "lastModified": 1646010978, @@ -8888,7 +14496,7 @@ "type": "github" } }, - "stackage_3": { + "stackage_6": { "flake": false, "locked": { "lastModified": 1655255731, @@ -8904,7 +14512,7 @@ "type": "github" } }, - "stackage_4": { + "stackage_7": { "flake": false, "locked": { "lastModified": 1659402917, @@ -8920,7 +14528,7 @@ "type": "github" } }, - "stackage_5": { + "stackage_8": { "flake": false, "locked": { "lastModified": 1650936094, @@ -8936,14 +14544,14 @@ "type": "github" } }, - "stackage_6": { + "stackage_9": { "flake": false, "locked": { - "lastModified": 1702771826, - "narHash": "sha256-4jFlIYY/hzkRrt4mXpUV81wC9ge4VpC5zcmQANl8GQg=", + "lastModified": 1718756571, + "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "4aab61a73de63a828ac33eb588e1e65411020a0c", + "rev": "027672fb6fd45828b0e623c8152572d4058429ad", "type": "github" }, "original": { @@ -8952,23 +14560,174 @@ "type": "github" } }, - "stackage_7": { - "flake": false, + "statix": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1676888642, + "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", + "owner": "nerdypepper", + "repo": "statix", + "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", + "type": "github" + }, + "original": { + "owner": "nerdypepper", + "repo": "statix", + "type": "github" + } + }, + "std": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_8", + "incl": "incl", + "makes": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_20", + "nosys": "nosys", + "yants": "yants" + }, + "locked": { + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_2": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_11", + "incl": "incl_2", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_23", + "paisano": "paisano", + "paisano-tui": "paisano-tui", + "yants": "yants_2" + }, + "locked": { + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_3": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "blank": "blank_3", + "devshell": "devshell_3", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_13", + "haumea": "haumea", + "incl": "incl_3", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_28", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", + "yants": "yants_3" + }, "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "std": { + "std_4": { "inputs": { "arion": [ "cardano-node", @@ -8976,11 +14735,11 @@ "std", "blank" ], - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_5", - "incl": "incl", + "blank": "blank_4", + "devshell": "devshell_5", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_20", + "incl": "incl_4", "makes": [ "cardano-node", "tullia", @@ -8993,11 +14752,11 @@ "std", "blank" ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_8", - "nosys": "nosys", - "yants": "yants" + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_36", + "nosys": "nosys_4", + "yants": "yants_4" }, "locked": { "lastModified": 1674526466, @@ -9013,15 +14772,15 @@ "type": "github" } }, - "std_2": { + "std_5": { "inputs": { - "devshell": "devshell_7", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_13", + "devshell": "devshell_11", + "dmerge": "dmerge_5", + "flake-utils": "flake-utils_28", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_34", - "yants": "yants_3" + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_62", + "yants": "yants_6" }, "locked": { "lastModified": 1661370377, @@ -9037,15 +14796,15 @@ "type": "github" } }, - "std_3": { + "std_6": { "inputs": { - "devshell": "devshell_15", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_29", + "devshell": "devshell_19", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_44", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_64", - "yants": "yants_5" + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_92", + "yants": "yants_8" }, "locked": { "lastModified": 1661367957, @@ -9061,11 +14820,11 @@ "type": "github" } }, - "std_4": { + "std_7": { "inputs": { - "devshell": "devshell_16", - "nixpkgs": "nixpkgs_67", - "yants": "yants_6" + "devshell": "devshell_20", + "nixpkgs": "nixpkgs_95", + "yants": "yants_9" }, "locked": { "lastModified": 1652784712, @@ -9141,6 +14900,21 @@ "type": "github" } }, + "stdlib_13": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, "stdlib_2": { "locked": { "lastModified": 1590026685, @@ -9261,10 +15035,55 @@ "type": "github" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_58" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_86" }, "locked": { "lastModified": 1654211622, @@ -9281,27 +15100,38 @@ "type": "github" } }, + "terraform-providers": { + "inputs": { + "nixpkgs": "nixpkgs_11" + }, + "locked": { + "lastModified": 1695893013, + "narHash": "sha256-+5EuXNXwxpTiOEGCbZWtZCU75WcVwnS89heLa5xJ2K0=", + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "rev": "6c6865ae6f9bff7aaa4e86c875f520f2aca65c0d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "type": "github" + } + }, "terranix": { "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_9", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "blank" - ], + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_12", "terranix-examples": "terranix-examples" }, "locked": { - "lastModified": 1637158331, - "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "lastModified": 1684906298, + "narHash": "sha256-pNuJxmVMGbBHw7pa+Bx0HY0orXIXoyyAXOKuQ1zpfus=", "owner": "terranix", "repo": "terranix", - "rev": "34198bb154af86d2a559446f10d7339e53126abe", + "rev": "c0dd15076856c6cb425795b8c7d5d37d3a1e922a", "type": "github" }, "original": { @@ -9355,15 +15185,32 @@ "type": "github" } }, + "terranix-examples_4": { + "locked": { + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", + "type": "github" + }, + "original": { + "owner": "terranix", + "repo": "terranix-examples", + "type": "github" + } + }, "terranix_2": { "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_14", + "flake-utils": "flake-utils_24", "nixpkgs": [ "db-sync", "cardano-world", "bitte", + "capsules", + "bitte", "blank" ], "terranix-examples": "terranix-examples_2" @@ -9386,11 +15233,10 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_20", + "flake-utils": "flake-utils_29", "nixpkgs": [ "db-sync", "cardano-world", - "capsules", "bitte", "blank" ], @@ -9410,12 +15256,149 @@ "type": "github" } }, - "tullia": { + "terranix_4": { + "inputs": { + "bats-assert": "bats-assert_4", + "bats-support": "bats-support_4", + "flake-utils": "flake-utils_35", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_4" + }, + "locked": { + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", + "type": "github" + }, + "original": { + "owner": "terranix", + "repo": "terranix", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1683117219, + "narHash": "sha256-IyNRNRxw0slA3VQySVA7QPXHMOxlbx0ePWvj9oln+Wk=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "c8c3731dc404f837f38f89c2c5ffc2afc02e249d", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1691440708, + "narHash": "sha256-c7Cc08vJ0IPFgIERpTdO2xvDHQNL7Uf5iXT0GlYO6vo=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "2a535809ac5c9a32288f4d3b938296e056d948cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_3": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715940852, + "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "tullia": { + "inputs": { + "nix-nomad": "nix-nomad", + "nix2container": "nix2container_2", + "nixpkgs": "nixpkgs_19", + "std": "std" + }, + "locked": { + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_2": { + "inputs": { + "nix-nomad": "nix-nomad_2", + "nix2container": "nix2container_3", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "nixpkgs" + ], + "std": "std_2" + }, + "locked": { + "lastModified": 1684859161, + "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_3": { "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_7", - "std": "std" + "nix-nomad": "nix-nomad_3", + "nix2container": "nix2container_6", + "nixpkgs": "nixpkgs_35", + "std": "std_4" }, "locked": { "lastModified": 1675695930, @@ -9431,11 +15414,11 @@ "type": "github" } }, - "tullia_2": { + "tullia_4": { "inputs": { - "nix2container": "nix2container_3", - "nixpkgs": "nixpkgs_66", - "std": "std_4" + "nix2container": "nix2container_7", + "nixpkgs": "nixpkgs_94", + "std": "std_7" }, "locked": { "lastModified": 1657811465, @@ -9452,12 +15435,15 @@ } }, "utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -9528,15 +15514,15 @@ }, "utils_14": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } @@ -9558,26 +15544,26 @@ }, "utils_16": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, "utils_17": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -9588,15 +15574,15 @@ }, "utils_18": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } @@ -9618,11 +15604,11 @@ }, "utils_2": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -9647,6 +15633,81 @@ } }, "utils_21": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_22": { + "locked": { + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_23": { + "locked": { + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_24": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_25": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_26": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9661,7 +15722,7 @@ "type": "github" } }, - "utils_22": { + "utils_27": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9676,7 +15737,7 @@ "type": "github" } }, - "utils_23": { + "utils_28": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9693,11 +15754,11 @@ }, "utils_3": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -9708,11 +15769,11 @@ }, "utils_4": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -9723,41 +15784,41 @@ }, "utils_5": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_6": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_7": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -9768,26 +15829,26 @@ }, "utils_8": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_9": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -9833,7 +15894,8 @@ "yants": { "inputs": { "nixpkgs": [ - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "nixpkgs" @@ -9855,7 +15917,79 @@ }, "yants_2": { "inputs": { - "nixpkgs": "nixpkgs_25" + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "owner": "divnix", + "repo": "yants", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_3": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", + "owner": "divnix", + "repo": "yants", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_4": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "owner": "divnix", + "repo": "yants", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_5": { + "inputs": { + "nixpkgs": "nixpkgs_53" }, "locked": { "lastModified": 1645126146, @@ -9871,7 +16005,7 @@ "type": "github" } }, - "yants_3": { + "yants_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -9895,9 +16029,9 @@ "type": "github" } }, - "yants_4": { + "yants_7": { "inputs": { - "nixpkgs": "nixpkgs_60" + "nixpkgs": "nixpkgs_88" }, "locked": { "lastModified": 1645126146, @@ -9913,7 +16047,7 @@ "type": "github" } }, - "yants_5": { + "yants_8": { "inputs": { "nixpkgs": [ "db-sync", @@ -9936,7 +16070,7 @@ "type": "github" } }, - "yants_6": { + "yants_9": { "inputs": { "nixpkgs": [ "db-sync", diff --git a/flake.nix b/flake.nix index 8869b614c..334482a6b 100644 --- a/flake.nix +++ b/flake.nix @@ -34,19 +34,15 @@ cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; - ogmios-nixos = { - url = "github:mlabs-haskell/ogmios-nixos/78e829e9ebd50c5891024dcd1004c2ac51facd80"; - inputs = { - nixpkgs.follows = "nixpkgs"; - iohk-nix.follows = "iohk-nix"; - haskell-nix.follows = "haskell-nix"; - cardano-node.follows = "cardano-node"; - ogmios-src.follows = "ogmios"; - }; + # Get Ogmios from cardano-nix + cardano-nix = { + url = "github:mlabs-haskell/cardano.nix"; + inputs.nixpkgs.follows = "nixpkgs"; }; + # Get Ogmios test fixtures ogmios = { - url = "github:CardanoSolutions/ogmios/v6.0.0"; + url = "github:CardanoSolutions/ogmios/v6.0.3"; flake = false; }; @@ -105,6 +101,8 @@ "aarch64-darwin" ]; + ogmiosVersion = "6.0.3"; + perSystem = nixpkgs.lib.genAttrs supportedSystems; mkNixpkgsFor = system: import nixpkgs { @@ -315,7 +313,7 @@ { plutip-server = (plutipServerFor system).hsPkgs.plutip-server.components.exes.plutip-server; - ogmios = ogmios-nixos.packages.${system}."ogmios:exe:ogmios"; + ogmios = cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; kupo = inputs.kupo-nixos.packages.${system}.kupo; cardano-db-sync = inputs.db-sync.packages.${system}.cardano-db-sync; blockfrost-backend-ryo = inputs.blockfrost.packages.${system}.blockfrost-backend-ryo; diff --git a/nix/runtime.nix b/nix/runtime.nix index c03e5bc57..4fef41131 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -7,8 +7,8 @@ rec { # See `doc/development.md` and `doc/runtime.md#changing-network-configurations` # for info on how to switch networks. network = { - name = "preview"; - magic = 2; # use `null` for mainnet + name = "preprod"; + magic = 1; # use `null` for mainnet }; # *All* of these values are optional, and shown with their default # values. If you need even more customization, you can use `overideAttrs` diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 8d1cb2eb8..a8d40ceb5 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -65,7 +65,6 @@ module Ctl.Internal.QueryM.Ogmios , releaseMempoolCall , submitTxCall , submitSuccessPartialResp - , slotLengthFactor , parseIpv6String , rationalToSubcoin , showRedeemerPointer @@ -158,6 +157,7 @@ import Ctl.Internal.Types.EraSummaries ( EraSummaries(EraSummaries) , EraSummary(EraSummary) , EraSummaryParameters(EraSummaryParameters) + , EraSummaryTime(EraSummaryTime) ) import Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) @@ -514,15 +514,23 @@ instance DecodeAeson OgmiosEraSummaries where -- in "start" "end" fields and "slotLength". decodeAeson = aesonArray (map (wrap <<< wrap) <<< traverse decodeEraSummary) where + decodeEraSummaryTime :: Aeson -> Either JsonDecodeError EraSummaryTime + decodeEraSummaryTime = aesonObject \obj -> do + time <- flip getField "seconds" =<< getField obj "time" + slot <- getField obj "slot" + epoch <- getField obj "epoch" + pure $ wrap { time, slot, epoch } + decodeEraSummary :: Aeson -> Either JsonDecodeError EraSummary decodeEraSummary = aesonObject \o -> do - start <- getField o "start" + start <- decodeEraSummaryTime =<< getField o "start" -- The field "end" is required by Ogmios API, but it can optionally return -- Null, so we want to fail if the field is absent but make Null value -- acceptable in presence of the field (hence why "end" is wrapped in -- `Maybe`). end' <- getField o "end" - end <- if isNull end' then pure Nothing else Just <$> decodeAeson end' + end <- + if isNull end' then pure Nothing else Just <$> decodeEraSummaryTime end' parameters <- decodeEraSummaryParameters =<< getField o "parameters" pure $ wrap { start, end, parameters } @@ -530,10 +538,7 @@ instance DecodeAeson OgmiosEraSummaries where :: Object Aeson -> Either JsonDecodeError EraSummaryParameters decodeEraSummaryParameters o = do epochLength <- getField o "epochLength" - slotLength <- wrap <$> - ( (*) slotLengthFactor <$> - (flip getField "seconds" =<< getField o "slotLength") - ) + slotLength <- flip getField "milliseconds" =<< getField o "slotLength" safeZone <- fromMaybe zero <$> getField o "safeZone" pure $ wrap { epochLength, slotLength, safeZone } @@ -541,11 +546,15 @@ instance EncodeAeson OgmiosEraSummaries where encodeAeson (OgmiosEraSummaries (EraSummaries eraSummaries)) = fromArray $ map encodeEraSummary eraSummaries where + encodeEraSummaryTime :: EraSummaryTime -> Aeson + encodeEraSummaryTime (EraSummaryTime { time, slot, epoch }) = + encodeAeson { "time": { "seconds": time }, "slot": slot, "epoch": epoch } + encodeEraSummary :: EraSummary -> Aeson encodeEraSummary (EraSummary { start, end, parameters }) = encodeAeson - { "start": start - , "end": end + { "start": encodeEraSummaryTime start + , "end": encodeEraSummaryTime <$> end , "parameters": encodeEraSummaryParameters parameters } @@ -553,15 +562,10 @@ instance EncodeAeson OgmiosEraSummaries where encodeEraSummaryParameters (EraSummaryParameters params) = encodeAeson { "epochLength": params.epochLength - , "slotLength": { "seconds": params.slotLength } + , "slotLength": { "milliseconds": params.slotLength } , "safeZone": params.safeZone } --- Ogmios returns `slotLength` in seconds, and we use milliseconds, --- so we need to convert between them. -slotLengthFactor :: Number -slotLengthFactor = 1000.0 - instance DecodeOgmios OgmiosEraSummaries where decodeOgmios = decodeResult decodeAeson @@ -757,6 +761,8 @@ showRedeemerPointer ptr = show ptr.redeemerTag <> ":" <> show ptr.redeemerIndex type ExecutionUnits = { memory :: BigNum, steps :: BigNum } +type OgmiosRedeemerPtr = { index :: UInt, purpose :: String } + newtype TxEvaluationR = TxEvaluationR (Either TxEvaluationFailure TxEvaluationResult) @@ -790,16 +796,21 @@ instance DecodeAeson TxEvaluationResult where :: Aeson -> Either JsonDecodeError (RedeemerPointer /\ ExecutionUnits) decodeRdmrPtrExUnitsItem elem = do res - :: { validator :: String + :: { validator :: OgmiosRedeemerPtr , budget :: { memory :: BigNum, cpu :: BigNum } } <- decodeAeson elem - redeemerPtr <- decodeRedeemerPointer res.validator + redeemerPtr <- decodeRedeemerPointer_ res.validator pure $ redeemerPtr /\ { memory: res.budget.memory, steps: res.budget.cpu } redeemerPtrTypeMismatch :: JsonDecodeError redeemerPtrTypeMismatch = TypeMismatch "Expected redeemer pointer to be encoded as: \ - \^(spend|mint|certificate|withdrawal):[0-9]+$" + \^(spend|mint|publish|withdraw):[0-9]+$" + +redeemerTypeMismatch :: JsonDecodeError +redeemerTypeMismatch = TypeMismatch + "Expected redeemer pointer to be encoded as: \ + \^(spend|mint|publish|withdraw)" decodeRedeemerPointer :: String -> Either JsonDecodeError RedeemerPointer decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch @@ -810,12 +821,19 @@ decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch <*> UInt.fromString indexRaw _ -> Nothing +decodeRedeemerPointer_ + :: { index :: UInt, purpose :: String } + -> Either JsonDecodeError RedeemerPointer +decodeRedeemerPointer_ { index: redeemerIndex, purpose } = + note redeemerTypeMismatch $ { redeemerTag: _, redeemerIndex } <$> + redeemerTagFromString purpose + redeemerTagFromString :: String -> Maybe RedeemerTag redeemerTagFromString = case _ of "spend" -> Just RedeemerTag.Spend "mint" -> Just RedeemerTag.Mint - "certificate" -> Just RedeemerTag.Cert - "withdrawal" -> Just RedeemerTag.Reward + "publish" -> Just RedeemerTag.Cert + "withdraw" -> Just RedeemerTag.Reward _ -> Nothing type OgmiosDatum = String @@ -870,8 +888,9 @@ instance DecodeAeson ScriptFailure where errorData <- maybe (Left (AtKey "data" MissingValue)) pure error.data case error.code of 3011 -> do - res :: { missingScripts :: Array String } <- decodeAeson errorData - missing <- traverse decodeRedeemerPointer res.missingScripts + res :: { missingScripts :: Array OgmiosRedeemerPtr } <- decodeAeson + errorData + missing <- traverse decodeRedeemerPointer_ res.missingScripts pure $ MissingRequiredScripts { missing: missing, resolved: Nothing } 3012 -> do res :: { validationError :: String, traces :: Array String } <- @@ -888,8 +907,9 @@ instance DecodeAeson ScriptFailure where , txId: res.unsuitableOutputReference.transaction.id } 3110 -> do - res :: { extraneousRedeemers :: Array String } <- decodeAeson errorData - ExtraRedeemers <$> traverse decodeRedeemerPointer + res :: { extraneousRedeemers :: Array OgmiosRedeemerPtr } <- decodeAeson + errorData + ExtraRedeemers <$> traverse decodeRedeemerPointer_ res.extraneousRedeemers 3111 -> do res :: { missingDatums :: Array String } <- decodeAeson errorData @@ -939,8 +959,9 @@ instance DecodeAeson TxEvaluationFailure where where parseElem elem = do - res :: { validator :: String, error :: ScriptFailure } <- decodeAeson elem - (_ /\ res.error) <$> decodeRedeemerPointer res.validator + res :: { validator :: OgmiosRedeemerPtr, error :: ScriptFailure } <- + decodeAeson elem + (_ /\ res.error) <$> decodeRedeemerPointer_ res.validator collectIntoMap :: forall k v. Ord k => Array (k /\ v) -> Map k (List v) collectIntoMap = foldl @@ -983,24 +1004,20 @@ rationalToSubcoin (PParamRational rat) = do denominator <- BigNum.fromBigInt $ Rational.denominator rat pure $ UnitInterval { numerator, denominator } +type OgmiosAdaLovelace = { "ada" :: { "lovelace" :: BigNum } } +type OgmiosBytes = { "bytes" :: UInt } + -- | A type that corresponds to Ogmios response. type ProtocolParametersRaw = { "minFeeCoefficient" :: UInt - , "minFeeConstant" :: - { "lovelace" :: UInt } + , "minFeeConstant" :: OgmiosAdaLovelace , "minUtxoDepositCoefficient" :: BigNum - , "maxBlockBodySize" :: - { "bytes" :: UInt } - , "maxBlockHeaderSize" :: - { "bytes" :: UInt } - , "maxTransactionSize" :: - { "bytes" :: UInt } - , "maxValueSize" :: - { "bytes" :: UInt } - , "stakeCredentialDeposit" :: - { "lovelace" :: BigNum } - , "stakePoolDeposit" :: - { "lovelace" :: BigNum } + , "maxBlockBodySize" :: OgmiosBytes + , "maxBlockHeaderSize" :: OgmiosBytes + , "maxTransactionSize" :: OgmiosBytes + , "maxValueSize" :: OgmiosBytes + , "stakeCredentialDeposit" :: OgmiosAdaLovelace + , "stakePoolDeposit" :: OgmiosAdaLovelace , "stakePoolRetirementEpochBound" :: UInt , "desiredNumberOfStakePools" :: UInt , "stakePoolPledgeInfluence" :: PParamRational @@ -1010,8 +1027,7 @@ type ProtocolParametersRaw = { "major" :: UInt , "minor" :: UInt } - , "minStakePoolCost" :: - { "lovelace" :: BigNum } + , "minStakePoolCost" :: OgmiosAdaLovelace , "plutusCostModels" :: { "plutus:v1" :: Array Cardano.Int , "plutus:v2" :: Maybe (Array Cardano.Int) @@ -1052,11 +1068,11 @@ instance DecodeAeson OgmiosProtocolParameters where , maxBlockHeaderSize: ps.maxBlockHeaderSize.bytes , maxBlockBodySize: ps.maxBlockBodySize.bytes , maxTxSize: ps.maxTransactionSize.bytes - , txFeeFixed: ps.minFeeConstant.lovelace + , txFeeFixed: wrap ps.minFeeConstant.ada.lovelace , txFeePerByte: ps.minFeeCoefficient - , stakeAddressDeposit: wrap ps.stakeCredentialDeposit.lovelace - , stakePoolDeposit: wrap ps.stakePoolDeposit.lovelace - , minPoolCost: wrap ps.minStakePoolCost.lovelace + , stakeAddressDeposit: wrap ps.stakeCredentialDeposit.ada.lovelace + , stakePoolDeposit: wrap ps.stakePoolDeposit.ada.lovelace + , minPoolCost: wrap ps.minStakePoolCost.ada.lovelace , poolRetireMaxEpoch: wrap ps.stakePoolRetirementEpochBound , stakePoolTargetNum: ps.desiredNumberOfStakePools , poolPledgeInfluence: unwrap ps.stakePoolPledgeInfluence diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index c6511ae68..16642ab8d 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -48,7 +48,7 @@ calculateMinFeeCsl (ProtocolParameters pparams) selfSigners txNoSigs = do let cslLinearFee = linearFee_new (unwrap $ BigNum.fromUInt pparams.txFeePerByte) - (unwrap $ BigNum.fromUInt pparams.txFeeFixed) + (unwrap $ unwrap pparams.txFeeFixed) let fee = minFee cslTx cslLinearFee let exUnitPrices = pparams.prices diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index f8130c5ae..16aa04c1e 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -1504,7 +1504,7 @@ instance DecodeAeson BlockfrostProtocolParameters where , maxBlockHeaderSize: raw.max_block_header_size , maxBlockBodySize: raw.max_block_size , maxTxSize: raw.max_tx_size - , txFeeFixed: raw.min_fee_b + , txFeeFixed: Coin $ BigNum.fromUInt raw.min_fee_b , txFeePerByte: raw.min_fee_a , stakeAddressDeposit: Coin $ unwrap raw.key_deposit , stakePoolDeposit: Coin $ unwrap raw.pool_deposit diff --git a/src/Internal/Types/Interval.purs b/src/Internal/Types/Interval.purs index b3d16214e..3a7e2ded5 100644 --- a/src/Internal/Types/Interval.purs +++ b/src/Internal/Types/Interval.purs @@ -100,7 +100,7 @@ import Ctl.Internal.Helpers , showWithParens , unsafeFromJust ) -import Ctl.Internal.QueryM.Ogmios (aesonObject, slotLengthFactor) +import Ctl.Internal.QueryM.Ogmios (aesonObject) import Ctl.Internal.Types.EraSummaries ( EraSummaries(EraSummaries) , EraSummary(EraSummary) @@ -832,6 +832,9 @@ absTimeFromRelTime (EraSummary { start, end }) (RelTime relTime) = do wrap <$> (liftM CannotGetBigIntFromNumber $ BigInt.fromNumber absTime) +slotLengthFactor :: Number +slotLengthFactor = 1000.0 + -------------------------------------------------------------------------------- -- POSIXTime (milliseconds) to -- Slot (absolute from System Start - see QueryM.SystemStart.getSystemStart) diff --git a/src/Internal/Types/ProtocolParameters.purs b/src/Internal/Types/ProtocolParameters.purs index 38c5ae418..45548b612 100644 --- a/src/Internal/Types/ProtocolParameters.purs +++ b/src/Internal/Types/ProtocolParameters.purs @@ -35,7 +35,7 @@ newtype ProtocolParameters = ProtocolParameters , maxBlockHeaderSize :: UInt , maxBlockBodySize :: UInt , maxTxSize :: UInt - , txFeeFixed :: UInt + , txFeeFixed :: Coin , txFeePerByte :: UInt , stakeAddressDeposit :: Coin , stakePoolDeposit :: Coin diff --git a/test/Blockfrost/GenerateFixtures/ProtocolParameters.purs b/test/Blockfrost/GenerateFixtures/ProtocolParameters.purs new file mode 100644 index 000000000..097fe784f --- /dev/null +++ b/test/Blockfrost/GenerateFixtures/ProtocolParameters.purs @@ -0,0 +1,43 @@ +module Test.Ctl.Blockfrost.GenerateFixtures.ProtocolParameters (main) where + +import Prelude + +import Ctl.Internal.Service.Blockfrost + ( BlockfrostEndpoint(LatestProtocolParameters) + , BlockfrostRawResponse + , runBlockfrostServiceTestM + ) +import Ctl.Internal.Service.Blockfrost (getProtocolParameters) as Blockfrost +import Data.Either (either) +import Data.Maybe (Maybe(Just, Nothing)) +import Effect (Effect) +import Effect.Aff (Aff, launchAff_) +import Effect.Class (liftEffect) +import Effect.Exception (throw) +import Test.Ctl.Blockfrost.GenerateFixtures.Helpers + ( blockfrostBackend + , storeBlockfrostFixture + ) + +main :: Effect Unit +main = launchAff_ generateFixture + +generateFixture :: Aff Unit +generateFixture = do + backend <- liftEffect blockfrostBackend + pparams <- runBlockfrostServiceTestM (const (pure unit)) backend + (Just onBlockfrostRawResponse) + Nothing + Blockfrost.getProtocolParameters + either (liftEffect <<< throw <<< show) (const (pure unit)) + pparams + where + onBlockfrostRawResponse + :: BlockfrostEndpoint + -> BlockfrostRawResponse + -> Aff Unit + onBlockfrostRawResponse query rawResp = + case query of + LatestProtocolParameters -> + storeBlockfrostFixture zero "getProtocolParameters" rawResp + _ -> pure unit diff --git a/test/Blockfrost/ProtocolParameters.purs b/test/Blockfrost/ProtocolParameters.purs index ec9e596c8..35172d793 100644 --- a/test/Blockfrost/ProtocolParameters.purs +++ b/test/Blockfrost/ProtocolParameters.purs @@ -25,11 +25,11 @@ import Test.Spec.Runner (defaultConfig) blockfrostFixture :: String blockfrostFixture = - "blockfrost/getProtocolParameters/getProtocolParameters-2d2ce3159a465c84058d7eab67b1b345.json" + "blockfrost/getProtocolParameters/getProtocolParameters-3457670a74fb5f9895d5cce9b6826c85.json" ogmiosFixture :: String ogmiosFixture = - "ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json" + "ogmios/queryLedgerState-protocolParameters-f39db65d5d9dc11e511f061b37349173.json" loadFixture :: forall (a :: Type). DecodeAeson a => String -> Aff a loadFixture fixture = diff --git a/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json b/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json index ead071bbe..5b2976564 100644 --- a/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxFailScriptErrorsFixture.json @@ -1 +1,64 @@ -{"jsonrpc":"2.0","method":"evaluateTransaction","error":{"code":3010,"message":"Some scripts of the transactions terminated with error(s).","data":[{"validator":"certificate:11","error":{"code":3117,"message":"The transaction contains unknown UTxO references as inputs. This can happen if the inputs you're trying to spend have already been spent, or if you've simply referred to non-existing UTxO altogether. The field 'data.unknownOutputReferences' indicates all unknown inputs.","data":{"unknownOutputReferences":[{"transaction":{"id":"731392618255aff0cd24712e6bd234db958cc065f8eff4f5e4476d4825cda180"},"index":1}]}}},{"validator":"certificate:15","error":{"code":3011,"message":"An associated script witness is missing. Indeed, any script used in a transaction (when spending, minting, withdrawing or publishing certificates) must be provided in full with the transaction. Scripts must therefore be added either to the witness set or provided as a reference inputs should you use Plutus V2+ and a format from Babbage and beyond.","data":{"missingScripts":["mint:11"]}}},{"validator":"withdrawal:16","error":{"code":3111,"message":"Transaction failed because some Plutus scripts are missing their associated datums. 'data.missingDatums' contains a set of data hashes for the missing datums. Ensure all Plutus scripts have an associated datum in the transaction's witness set or, are provided through inline datums in reference inputs.","data":{"missingDatums":["342ab6aef80f619bb09dfe2e8a24f8937734d4150d00cb1aa93222ce808c290f"]}}}]},"id":"mK9IYY6GandR"} +{ + "jsonrpc": "2.0", + "method": "evaluateTransaction", + "error": { + "code": 3010, + "message": "Some scripts of the transactions terminated with error(s).", + "data": [ + { + "validator": { + "index": 11, + "purpose": "publish" + }, + "error": { + "code": 3117, + "message": "The transaction contains unknown UTxO references as inputs. This can happen if the inputs you're trying to spend have already been spent, or if you've simply referred to non-existing UTxO altogether. The field 'data.unknownOutputReferences' indicates all unknown inputs.", + "data": { + "unknownOutputReferences": [ + { + "transaction": { + "id": "731392618255aff0cd24712e6bd234db958cc065f8eff4f5e4476d4825cda180" + }, + "index": 1 + } + ] + } + } + }, + { + "validator": { + "index": 11, + "purpose": "publish" + }, + "error": { + "code": 3011, + "message": "An associated script witness is missing. Indeed, any script used in a transaction (when spending, minting, withdrawing or publishing certificates) must be provided in full with the transaction. Scripts must therefore be added either to the witness set or provided as a reference inputs should you use Plutus V2+ and a format from Babbage and beyond.", + "data": { + "missingScripts": [ + { + "index": 11, + "purpose": "mint" + } + ] + } + } + }, + { + "validator": { + "index": 16, + "purpose": "withdraw" + }, + "error": { + "code": 3111, + "message": "Transaction failed because some Plutus scripts are missing their associated datums. 'data.missingDatums' contains a set of data hashes for the missing datums. Ensure all Plutus scripts have an associated datum in the transaction's witness set or, are provided through inline datums in reference inputs.", + "data": { + "missingDatums": [ + "342ab6aef80f619bb09dfe2e8a24f8937734d4150d00cb1aa93222ce808c290f" + ] + } + } + } + ] + }, + "id": "mK9IYY6GandR" +} diff --git a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json index 57a1e3507..d4cfab2e6 100644 --- a/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxInvalidPointerFormatFixture.json @@ -3,21 +3,30 @@ "method": "evaluateTransaction", "result": [ { - "validator": "spend", + "validator": { + "index": 0, + "purpose": "invalid" + }, "budget": { "memory": 2766916028110716146, "cpu": 6325731070934221229 } }, { - "validator": "certificate:3", + "validator": { + "index": 3, + "purpose": "publish" + }, "budget": { "memory": 4926587050210136942, "cpu": 2982577810151428748 } }, { - "validator": "withdrawal:8", + "validator": { + "index": 8, + "purpose": "withdraw" + }, "budget": { "memory": 3603965291794951667, "cpu": 937555587227912939 diff --git a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json index dd82d93ad..0b2782ecd 100644 --- a/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json +++ b/test/Fixtures/OgmiosEvaluateTxValidRespFixture.json @@ -3,21 +3,30 @@ "method": "evaluateTransaction", "result": [ { - "validator": "spend:1", + "validator": { + "index": 1, + "purpose": "spend" + }, "budget": { "memory": 2766916028110716146, "cpu": 6325731070934221229 } }, { - "validator": "certificate:3", + "validator": { + "index": 3, + "purpose": "publish" + }, "budget": { "memory": 4926587050210136942, "cpu": 2982577810151428748 } }, { - "validator": "withdrawal:0", + "validator": { + "index": 0, + "purpose": "withdraw" + }, "budget": { "memory": 3603965291794951667, "cpu": 937555587227912939 diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index a09f95977..7f3feaddf 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -119,7 +119,7 @@ main = WebSocket ws listeners <- mkWebSocketAff logLevel defaultOgmiosWsConfig let - queries = + queries = [ mkQuery' "queryNetwork/tip" , mkQuery' "queryNetwork/startTime" , mkQuery' "queryLedgerState/epoch" @@ -127,7 +127,6 @@ main = , mkQuery' "queryLedgerState/protocolParameters" , mkQuery' "queryLedgerState/stakePools" ] - resps <- flip parTraverse queries \(Query qc method args) -> do resp <- mkRequestAff listeners ws (\_ _ -> pure unit) qc identity args pure { resp, method } diff --git a/test/Plutus/Time.purs b/test/Plutus/Time.purs index 2aa8e9ca7..29bda59ab 100644 --- a/test/Plutus/Time.purs +++ b/test/Plutus/Time.purs @@ -43,13 +43,13 @@ import Ctl.Internal.Types.Interval import Ctl.Internal.Types.SystemStart (sysStartFromOgmiosTimestampUnsafe) import Data.Int as Int import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (wrap) import Data.UInt as UInt import Effect.Aff (Aff) import JS.BigInt as BigInt import Mote (group) import Mote.TestPlanM (TestPlanM) -import Test.Ctl.Utils (toFromAesonTest, toFromAesonTestWith) +import Test.Ctl.Utils (toFromAesonTest) slotFixture :: Slot slotFixture = mkSlot 34892625 @@ -217,21 +217,6 @@ eraSummariesFixture = EraSummaries } ] -eraSummaryLengthToSeconds :: EraSummary -> EraSummary -eraSummaryLengthToSeconds old@(EraSummary { parameters }) = - let - newSlotLength :: SlotLength - newSlotLength = wrap $ 1e-3 * unwrap (unwrap parameters).slotLength - - newParameters :: EraSummaryParameters - newParameters = wrap $ (unwrap parameters) { slotLength = newSlotLength } - in - wrap (unwrap old) { parameters = newParameters } - -eraSummariesLengthToSeconds :: OgmiosEraSummaries -> OgmiosEraSummaries -eraSummariesLengthToSeconds (OgmiosEraSummaries values) = - wrap $ wrap (eraSummaryLengthToSeconds <$> unwrap values) - suite :: TestPlanM (Aff Unit) Unit suite = do group "Time-related Aeson representation tests" do @@ -260,7 +245,6 @@ suite = do toFromAesonTest "AbsTime" absTimeFixture toFromAesonTest "RelSlot" relSlotFixture toFromAesonTest "RelTime" relTimeFixture - toFromAesonTestWith "EraSummaries" eraSummariesLengthToSeconds $ - OgmiosEraSummaries eraSummariesFixture + toFromAesonTest "EraSummaries" $ OgmiosEraSummaries eraSummariesFixture toFromAesonTest "SystemStart" systemStartFixture toFromAesonTest "CurrentEpoch" currentEpochFixture diff --git a/test/ProtocolParams.purs b/test/ProtocolParams.purs index fa065c52e..32ac08402 100644 --- a/test/ProtocolParams.purs +++ b/test/ProtocolParams.purs @@ -16,7 +16,7 @@ import Test.Spec.Assertions (shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit suite = do aeson <- Utils.readAeson - "./fixtures/test/ogmios/queryLedgerState-protocolParameters-68ba1141d17af9326cad70407ea3d7fb.json" + "./fixtures/test/ogmios/queryLedgerState-protocolParameters-f39db65d5d9dc11e511f061b37349173.json" group "ProtocolParameters parser" $ do test "is able to parse ogmios response fixture" $ (decodeAeson aeson :: Either _ { result :: OgmiosProtocolParameters }) diff --git a/test/Types/Interval.purs b/test/Types/Interval.purs index abfcaddcf..45a427a8a 100644 --- a/test/Types/Interval.purs +++ b/test/Types/Interval.purs @@ -52,7 +52,7 @@ import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (EraSummaries -> SystemStart -> Effect Unit) Unit suite = do group "Interval" do - group "EraSumaries related" do + group "EraSummaries related" do test "Inverse posixTimeToSlot >>> slotToPosixTime " testPosixTimeToSlot test "Inverse slotToPosixTime >>> posixTimeToSlot " testSlotToPosixTime test "PosixTimeToSlot errors" testPosixTimeToSlotError @@ -87,14 +87,14 @@ eraSummariesFixture :: Effect EraSummaries eraSummariesFixture = do { result } :: { result :: OgmiosEraSummaries } <- loadOgmiosFixture "queryLedgerState-eraSummaries" - "d8b19110b9580cddfa3895eea34c2139" + "8073a8f378e969384ec52010ec6c290c" pure $ unwrap result systemStartFixture :: Effect SystemStart systemStartFixture = do { result } :: { result :: OgmiosSystemStart } <- loadOgmiosFixture "queryNetwork-startTime" - "02fa6f9e7ed04ebfe3294c7648be54d5" + "1a911197c5149cd582be4cbf5a651817" pure $ unwrap result testPosixTimeToSlot :: EraSummaries -> SystemStart -> Effect Unit From 7c6dbe2585080e39313bab4b856cf55fc6712ec5 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 19 Jun 2024 18:25:47 +0200 Subject: [PATCH 228/373] Use ogmios nixos module from cardano.nix --- flake.nix | 2 +- nix/test-nixos-configuration.nix | 4 ++-- test/Ogmios/GenerateFixtures.purs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index 334482a6b..2b81cae8c 100644 --- a/flake.nix +++ b/flake.nix @@ -510,7 +510,7 @@ system = "x86_64-linux"; modules = [ inputs.cardano-node.nixosModules.cardano-node - inputs.ogmios-nixos.nixosModules.ogmios + inputs.cardano-nix.nixosModules.ogmios inputs.kupo-nixos.nixosModules.kupo ./nix/test-nixos-configuration.nix ]; diff --git a/nix/test-nixos-configuration.nix b/nix/test-nixos-configuration.nix index bbfe022e9..5889b3212 100644 --- a/nix/test-nixos-configuration.nix +++ b/nix/test-nixos-configuration.nix @@ -34,8 +34,8 @@ services.ogmios = { enable = true; - host = "0.0.0.0"; - nodeSocket = "/var/run/cardano-node/node.socket"; + nodeSocketPath = "/var/run/cardano-node/node.socket"; + nodeConfigPath = "${cardano-configurations}/network/mainnet/cardano-node/config.json"; }; services.kupo = { diff --git a/test/Ogmios/GenerateFixtures.purs b/test/Ogmios/GenerateFixtures.purs index 7f3feaddf..f1ae3eca6 100644 --- a/test/Ogmios/GenerateFixtures.purs +++ b/test/Ogmios/GenerateFixtures.purs @@ -119,7 +119,7 @@ main = WebSocket ws listeners <- mkWebSocketAff logLevel defaultOgmiosWsConfig let - queries = + queries = [ mkQuery' "queryNetwork/tip" , mkQuery' "queryNetwork/startTime" , mkQuery' "queryLedgerState/epoch" From 5a1452210e272b367faf383fb316ffad1c2a4188 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 19 Jun 2024 18:29:32 +0200 Subject: [PATCH 229/373] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b5ae290e..3fa31a775 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,6 +75,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed +- Bumped Ogmios to version 6.0.3 ([#1626](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1626)) + ### Fixed ## [v8.0.0] From acc3afa57791d0a7f78c3947232a9a53cab8fdda Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 19 Jun 2024 18:49:21 +0200 Subject: [PATCH 230/373] Attempt to fix nixos config --- flake.nix | 3 ++- nix/test-nixos-configuration.nix | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 2b81cae8c..2e2d20113 100644 --- a/flake.nix +++ b/flake.nix @@ -506,7 +506,7 @@ }; }; - nixosConfigurations.test = nixpkgs.lib.nixosSystem { + nixosConfigurations.test = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = [ inputs.cardano-node.nixosModules.cardano-node @@ -516,6 +516,7 @@ ]; specialArgs = { inherit (inputs) cardano-configurations; + ogmios = inputs.cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; }; }; diff --git a/nix/test-nixos-configuration.nix b/nix/test-nixos-configuration.nix index 5889b3212..1062204ea 100644 --- a/nix/test-nixos-configuration.nix +++ b/nix/test-nixos-configuration.nix @@ -1,4 +1,4 @@ -{ config, modulesPath, pkgs, cardano-configurations, ... }: +{ config, modulesPath, pkgs, cardano-configurations, ogmios, ... }: { imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ]; @@ -34,6 +34,8 @@ services.ogmios = { enable = true; + package = ogmios; + host = "0.0.0.0"; nodeSocketPath = "/var/run/cardano-node/node.socket"; nodeConfigPath = "${cardano-configurations}/network/mainnet/cardano-node/config.json"; }; From 8fd25097ac68d2f95cfb4c8efb5e4f80e0709611 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 19 Jun 2024 18:55:07 +0200 Subject: [PATCH 231/373] Fix staking tests --- src/Internal/QueryM/Ogmios.purs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index a8d40ceb5..6da66aea4 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -648,8 +648,10 @@ instance DecodeOgmios PoolParametersR where decodePoolParameters :: Object Aeson -> Either JsonDecodeError PoolParameters decodePoolParameters objParams = do vrfKeyhash <- decodeVRFKeyHash =<< objParams .: "vrfVerificationKeyHash" - pledge <- objParams .: "pledge" >>= aesonObject (\obj -> obj .: "lovelace") - cost <- objParams .: "cost" >>= aesonObject (\obj -> obj .: "lovelace") + pledge <- objParams .: "pledge" >>= aesonObject \obj -> + obj .: "ada" >>= flip getField "lovelace" + cost <- objParams .: "cost" >>= aesonObject \obj -> + obj .: "ada" >>= flip getField "lovelace" margin <- decodeUnitInterval =<< objParams .: "margin" rewardAccount <- objParams .: "rewardAccount" >>= RewardAddress.fromBech32 >>> note (TypeMismatch "RewardAddress") From 3279526b028c26a6ccb871b7bba4a0cc4a1f2299 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 19 Jun 2024 19:00:57 +0200 Subject: [PATCH 232/373] Fix Makefile --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 5b78bb779..775ba5657 100644 --- a/Makefile +++ b/Makefile @@ -41,20 +41,20 @@ create-html-entrypoint: EOF -esbuild-bundle: spago-build create-bundle-entrypoint +esbuild-bundle: build create-bundle-entrypoint @mkdir -p dist/ BROWSER_RUNTIME=${browser-runtime} node esbuild/bundle.js ./dist/entrypoint.js dist/index.js @make delete-bundle-entrypoint -esbuild-serve: spago-build create-bundle-entrypoint create-html-entrypoint +esbuild-serve: build create-bundle-entrypoint create-html-entrypoint BROWSER_RUNTIME=1 node esbuild/serve.js ./dist/entrypoint.js dist/index.js dist/ ${serve-port} -webpack-bundle: spago-build create-bundle-entrypoint +webpack-bundle: build create-bundle-entrypoint BROWSER_RUNTIME=${browser-runtime} webpack --mode=production \ -o dist/ --env entry=./dist/entrypoint.js @make delete-bundle-entrypoint -webpack-serve: spago-build create-bundle-entrypoint create-html-entrypoint +webpack-serve: build create-bundle-entrypoint create-html-entrypoint BROWSER_RUNTIME=1 webpack-dev-server --progress \ --port ${serve-port} \ -o dist/ --env entry=./dist/entrypoint.js From 2fd380b2bcde77b829e9e2fa9c2092d76e46c280 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 20 Jun 2024 15:08:58 +0200 Subject: [PATCH 233/373] Fix Blockfrost RedeemerPointer decoding --- src/Internal/QueryM/Ogmios.purs | 23 +++++++--------------- src/Internal/Service/Blockfrost.purs | 29 ++++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 6da66aea4..3ce36ac8c 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -185,7 +185,7 @@ import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) -import Data.String (Pattern(Pattern), Replacement(Replacement), split) +import Data.String (Pattern(Pattern), Replacement(Replacement)) import Data.String (replaceAll) as String import Data.String.Common (split) as String import Data.String.Utils as StringUtils @@ -801,7 +801,7 @@ instance DecodeAeson TxEvaluationResult where :: { validator :: OgmiosRedeemerPtr , budget :: { memory :: BigNum, cpu :: BigNum } } <- decodeAeson elem - redeemerPtr <- decodeRedeemerPointer_ res.validator + redeemerPtr <- decodeRedeemerPointer res.validator pure $ redeemerPtr /\ { memory: res.budget.memory, steps: res.budget.cpu } redeemerPtrTypeMismatch :: JsonDecodeError @@ -814,19 +814,10 @@ redeemerTypeMismatch = TypeMismatch "Expected redeemer pointer to be encoded as: \ \^(spend|mint|publish|withdraw)" -decodeRedeemerPointer :: String -> Either JsonDecodeError RedeemerPointer -decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch - case split (Pattern ":") redeemerPtrRaw of - [ tagRaw, indexRaw ] -> - { redeemerTag: _, redeemerIndex: _ } - <$> redeemerTagFromString tagRaw - <*> UInt.fromString indexRaw - _ -> Nothing - -decodeRedeemerPointer_ +decodeRedeemerPointer :: { index :: UInt, purpose :: String } -> Either JsonDecodeError RedeemerPointer -decodeRedeemerPointer_ { index: redeemerIndex, purpose } = +decodeRedeemerPointer { index: redeemerIndex, purpose } = note redeemerTypeMismatch $ { redeemerTag: _, redeemerIndex } <$> redeemerTagFromString purpose @@ -892,7 +883,7 @@ instance DecodeAeson ScriptFailure where 3011 -> do res :: { missingScripts :: Array OgmiosRedeemerPtr } <- decodeAeson errorData - missing <- traverse decodeRedeemerPointer_ res.missingScripts + missing <- traverse decodeRedeemerPointer res.missingScripts pure $ MissingRequiredScripts { missing: missing, resolved: Nothing } 3012 -> do res :: { validationError :: String, traces :: Array String } <- @@ -911,7 +902,7 @@ instance DecodeAeson ScriptFailure where 3110 -> do res :: { extraneousRedeemers :: Array OgmiosRedeemerPtr } <- decodeAeson errorData - ExtraRedeemers <$> traverse decodeRedeemerPointer_ + ExtraRedeemers <$> traverse decodeRedeemerPointer res.extraneousRedeemers 3111 -> do res :: { missingDatums :: Array String } <- decodeAeson errorData @@ -963,7 +954,7 @@ instance DecodeAeson TxEvaluationFailure where parseElem elem = do res :: { validator :: OgmiosRedeemerPtr, error :: ScriptFailure } <- decodeAeson elem - (_ /\ res.error) <$> decodeRedeemerPointer_ res.validator + (_ /\ res.error) <$> decodeRedeemerPointer res.validator collectIntoMap :: forall k v. Ord k => Array (k /\ v) -> Map k (List v) collectIntoMap = foldl diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 16aa04c1e..c15b87dd6 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -91,6 +91,7 @@ import Cardano.Types , PlutusData , PoolPubKeyHash , RawBytes + , RedeemerTag , ScriptHash , StakePubKeyHash , Transaction @@ -129,6 +130,7 @@ import Cardano.Types.NetworkId (NetworkId) import Cardano.Types.OutputDatum (OutputDatum(OutputDatum, OutputDatumHash)) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.PoolPubKeyHash as PoolPubKeyHash +import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) as RedeemerTag import Cardano.Types.RewardAddress as RewardAddress import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) import Cardano.Types.Value (assetToValue, lovelaceValueOf, sum) as Value @@ -162,7 +164,6 @@ import Ctl.Internal.QueryM.Ogmios , TxEvaluationFailure(ScriptFailures, UnparsedError) , TxEvaluationR , TxEvaluationResult(TxEvaluationResult) - , decodeRedeemerPointer ) import Ctl.Internal.QueryM.Ogmios as Ogmios import Ctl.Internal.ServerConfig (ServerConfig, mkHttpUrl) @@ -218,12 +219,14 @@ import Data.MediaType.Common (applicationJSON) as MediaType import Data.Newtype (class Newtype, unwrap, wrap) import Data.Number (infinity) import Data.Show.Generic (genericShow) -import Data.String (splitAt) as String +import Data.String (Pattern(Pattern)) +import Data.String (split, splitAt) as String import Data.Time.Duration (Seconds(Seconds), convertDuration) import Data.Traversable (for, for_, traverse) import Data.Tuple (Tuple(Tuple), fst, snd) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) +import Data.UInt (fromString) as UInt import Effect.Aff (Aff) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) @@ -913,6 +916,28 @@ decodeBlockfrostTxEvaluationResult = aesonObject $ \obj -> do steps <- getField exUnitsObj "steps" pure $ redeemerPtr /\ { memory, steps } +decodeRedeemerPointer :: String -> Either JsonDecodeError RedeemerPointer +decodeRedeemerPointer redeemerPtrRaw = note redeemerPtrTypeMismatch + case String.split (Pattern ":") redeemerPtrRaw of + [ tagRaw, indexRaw ] -> + { redeemerTag: _, redeemerIndex: _ } + <$> redeemerTagFromString tagRaw + <*> UInt.fromString indexRaw + _ -> Nothing + +redeemerTagFromString :: String -> Maybe RedeemerTag +redeemerTagFromString = case _ of + "spend" -> Just RedeemerTag.Spend + "mint" -> Just RedeemerTag.Mint + "certificate" -> Just RedeemerTag.Cert + "withdrawal" -> Just RedeemerTag.Reward + _ -> Nothing + +redeemerPtrTypeMismatch :: JsonDecodeError +redeemerPtrTypeMismatch = TypeMismatch + "Expected redeemer pointer to be encoded as: \ + \^(spend|mint|certificate|withdrawal):[0-9]+$" + data OldScriptFailure = ExtraRedeemers (Array RedeemerPointer) | MissingRequiredDatums From aff8e301e3fc88f9d1eccd1e0dcc6eb9bba235d2 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 20 Jun 2024 15:42:07 +0200 Subject: [PATCH 234/373] Fix nixos config (wip) fixme: vm starts, but cardano-node fails to read conway genesis --- flake.nix | 3 ++- nix/test-nixos-configuration.nix | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index bc0b72a93..673cb1c3b 100644 --- a/flake.nix +++ b/flake.nix @@ -503,12 +503,13 @@ modules = [ inputs.cardano-node.nixosModules.cardano-node inputs.cardano-nix.nixosModules.ogmios - inputs.kupo-nixos.nixosModules.kupo + inputs.cardano-nix.nixosModules.kupo ./nix/test-nixos-configuration.nix ]; specialArgs = { inherit (inputs) cardano-configurations; ogmios = inputs.cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; + kupo = inputs.cardano-nix.packages.${system}."kupo-${kupoVersion}"; }; }; diff --git a/nix/test-nixos-configuration.nix b/nix/test-nixos-configuration.nix index 1062204ea..67f1b59d7 100644 --- a/nix/test-nixos-configuration.nix +++ b/nix/test-nixos-configuration.nix @@ -1,4 +1,4 @@ -{ config, modulesPath, pkgs, cardano-configurations, ogmios, ... }: +{ config, modulesPath, pkgs, cardano-configurations, ogmios, kupo, ... }: { imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ]; @@ -42,10 +42,11 @@ services.kupo = { enable = true; - host = "0.0.0.0"; + package = kupo; user = "kupo"; group = "kupo"; - nodeConfig = "${cardano-configurations}/network/mainnet/cardano-node/config.json"; - nodeSocket = "/var/run/cardano-node/node.socket"; + host = "0.0.0.0"; + nodeSocketPath = "/var/run/cardano-node/node.socket"; + nodeConfigPath = "${cardano-configurations}/network/mainnet/cardano-node/config.json"; }; } From 9e55bb9e9cfabade66afd7235186f4bbe678d72d Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 20 Jun 2024 16:20:52 +0200 Subject: [PATCH 235/373] Attempt to re-enable plutip tests using older cardano-node --- flake.lock | 3233 ++++++++++++++++++++++++++++++++++++---------------- flake.nix | 8 +- 2 files changed, 2266 insertions(+), 975 deletions(-) diff --git a/flake.lock b/flake.lock index bd6bec67d..515c6fc75 100644 --- a/flake.lock +++ b/flake.lock @@ -86,6 +86,23 @@ } }, "CHaP_6": { + "flake": false, + "locked": { + "lastModified": 1686070892, + "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "596cf203a0a1ba252a083a79d384325000faeb49", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_7": { "flake": false, "locked": { "lastModified": 1694601145, @@ -134,6 +151,22 @@ "type": "github" } }, + "HTTP_11": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_2": { "flake": false, "locked": { @@ -264,7 +297,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_39" + "nixpkgs": "nixpkgs_46" }, "locked": { "lastModified": 1641576265, @@ -282,8 +315,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_40" + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_47" }, "locked": { "lastModified": 1641404293, @@ -301,8 +334,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_42" + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_49" }, "locked": { "lastModified": 1641404293, @@ -320,8 +353,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_71" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_78" }, "locked": { "lastModified": 1641404293, @@ -339,7 +372,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_41" + "nixpkgs": "nixpkgs_48" }, "locked": { "lastModified": 1641576265, @@ -432,7 +465,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_70" + "nixpkgs": "nixpkgs_77" }, "locked": { "lastModified": 1641576265, @@ -500,7 +533,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_65" + "nixpkgs": "nixpkgs_72" }, "locked": { "lastModified": 1646360966, @@ -710,24 +743,24 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_6", + "blank": "blank_7", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", "fenix": "fenix_7", - "hydra": "hydra_7", - "n2c": "n2c_6", - "nix": "nix_10", - "nixpkgs": "nixpkgs_59", + "hydra": "hydra_8", + "n2c": "n2c_7", + "nix": "nix_11", + "nixpkgs": "nixpkgs_66", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_8", + "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_5", + "ops-lib": "ops-lib_6", "ragenix": "ragenix_3", - "std": "std_6", + "std": "std_7", "terranix": "terranix_3", - "utils": "utils_17" + "utils": "utils_19" }, "locked": { "lastModified": 1661790449, @@ -805,20 +838,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_7", + "blank": "blank_8", "deploy": "deploy", "fenix": "fenix_5", - "hydra": "hydra_6", - "nix": "nix_7", - "nixpkgs": "nixpkgs_45", - "nixpkgs-unstable": "nixpkgs-unstable_7", + "hydra": "hydra_7", + "nix": "nix_8", + "nixpkgs": "nixpkgs_52", + "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib_4", + "ops-lib": "ops-lib_5", "ragenix": "ragenix", "terranix": "terranix_2", - "utils": "utils_12", + "utils": "utils_14", "vulnix": "vulnix" }, "locked": { @@ -839,20 +872,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_8", + "blank": "blank_9", "deploy": "deploy_3", "fenix": "fenix_9", - "hydra": "hydra_8", - "nix": "nix_14", - "nixpkgs": "nixpkgs_74", - "nixpkgs-unstable": "nixpkgs-unstable_9", + "hydra": "hydra_9", + "nix": "nix_15", + "nixpkgs": "nixpkgs_81", + "nixpkgs-unstable": "nixpkgs-unstable_10", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_6", + "ops-lib": "ops-lib_7", "ragenix": "ragenix_4", "terranix": "terranix_4", - "utils": "utils_26", + "utils": "utils_28", "vulnix": "vulnix_2" }, "locked": { @@ -989,6 +1022,21 @@ "type": "github" } }, + "blank_9": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1111,6 +1159,23 @@ } }, "blst_7": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_8": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1177,6 +1242,23 @@ "type": "github" } }, + "cabal-32_11": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, "cabal-32_2": { "flake": false, "locked": { @@ -1331,6 +1413,23 @@ } }, "cabal-34_10": { + "flake": false, + "locked": { + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34_11": { "flake": false, "locked": { "lastModified": 1645834128, @@ -1418,11 +1517,11 @@ "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -1501,6 +1600,23 @@ } }, "cabal-36_10": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_11": { "flake": false, "locked": { "lastModified": 1669081697, @@ -1588,11 +1704,11 @@ "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1672,7 +1788,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_53", + "nixpkgs": "nixpkgs_60", "ragenix": "ragenix_2" }, "locked": { @@ -1693,7 +1809,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_82", + "nixpkgs": "nixpkgs_89", "ragenix": "ragenix_5" }, "locked": { @@ -1799,6 +1915,36 @@ "type": "github" } }, + "cardano-automation_4": { + "inputs": { + "flake-utils": "flake-utils_22", + "haskellNix": [ + "cardano-node-plutip", + "haskellNix" + ], + "nixpkgs": [ + "cardano-node-plutip", + "nixpkgs" + ], + "tullia": [ + "cardano-node-plutip", + "tullia" + ] + }, + "locked": { + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-automation", + "type": "github" + } + }, "cardano-configurations": { "flake": false, "locked": { @@ -2022,6 +2168,25 @@ "type": "github" } }, + "cardano-mainnet-mirror_4": { + "inputs": { + "nixpkgs": "nixpkgs_39" + }, + "locked": { + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", + "type": "github" + } + }, "cardano-nix": { "inputs": { "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", @@ -2188,6 +2353,52 @@ "type": "github" } }, + "cardano-node-plutip": { + "inputs": { + "CHaP": "CHaP_6", + "cardano-automation": "cardano-automation_4", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", + "customConfig": "customConfig_4", + "em": "em_4", + "empty-flake": "empty-flake_5", + "flake-compat": "flake-compat_18", + "hackageNix": "hackageNix_5", + "haskellNix": "haskellNix_5", + "hostNixpkgs": [ + "cardano-node-plutip", + "nixpkgs" + ], + "iohkNix": "iohkNix_5", + "nix2container": "nix2container_7", + "nixpkgs": [ + "cardano-node-plutip", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_4", + "std": [ + "cardano-node-plutip", + "tullia", + "std" + ], + "tullia": "tullia_4", + "utils": "utils_9" + }, + "locked": { + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "IntersectMBO", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "type": "github" + }, + "original": { + "owner": "IntersectMBO", + "ref": "8.1.1", + "repo": "cardano-node", + "type": "github" + } + }, "cardano-node-service": { "flake": false, "locked": { @@ -2297,7 +2508,7 @@ "type": "github" } }, - "cardano-shell_2": { + "cardano-shell_11": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2313,7 +2524,7 @@ "type": "github" } }, - "cardano-shell_3": { + "cardano-shell_2": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2329,7 +2540,7 @@ "type": "github" } }, - "cardano-shell_4": { + "cardano-shell_3": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2345,7 +2556,23 @@ "type": "github" } }, - "cardano-shell_5": { + "cardano-shell_4": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_5": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2427,19 +2654,19 @@ }, "cardano-wallet": { "inputs": { - "customConfig": "customConfig_4", + "customConfig": "customConfig_5", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_22", - "flake-utils": "flake-utils_41", - "haskellNix": "haskellNix_5", + "flake-compat": "flake-compat_25", + "flake-utils": "flake-utils_46", + "haskellNix": "haskellNix_6", "hostNixpkgs": [ "db-sync", "cardano-world", "cardano-wallet", "nixpkgs" ], - "iohkNix": "iohkNix_5", + "iohkNix": "iohkNix_6", "nixpkgs": [ "db-sync", "cardano-world", @@ -2494,13 +2721,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_23", + "flake-compat": "flake-compat_26", "hackage": "hackage_4", "haskell-nix": "haskell-nix_3", "iohk-nix": "iohk-nix_2", - "n2c": "n2c_7", + "n2c": "n2c_8", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_93", + "nixpkgs": "nixpkgs_100", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -2508,8 +2735,8 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_7", - "tullia": "tullia_4" + "std": "std_8", + "tullia": "tullia_5" }, "locked": { "lastModified": 1662508244, @@ -2529,16 +2756,16 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_13", + "devshell": "devshell_14", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix_2", "inclusive": "inclusive_9", - "nix": "nix_13", + "nix": "nix_14", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_69", + "nixpkgs": "nixpkgs_76", "poetry2nix": "poetry2nix", - "utils": "utils_21" + "utils": "utils_23" }, "locked": { "lastModified": 1647522107, @@ -2791,6 +3018,21 @@ } }, "customConfig_5": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_6": { "locked": { "lastModified": 1, "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", @@ -2805,7 +3047,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_6" + "yants": "yants_7" }, "locked": { "lastModified": 1648237091, @@ -2842,7 +3084,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_8" + "yants": "yants_9" }, "locked": { "lastModified": 1655854240, @@ -2861,16 +3103,16 @@ "db-sync": { "inputs": { "cardano-world": "cardano-world", - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_24", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", + "customConfig": "customConfig_6", + "flake-compat": "flake-compat_27", + "haskellNix": "haskellNix_7", + "iohkNix": "iohkNix_7", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "utils": "utils_28" + "utils": "utils_30" }, "locked": { "lastModified": 1670313550, @@ -2890,7 +3132,7 @@ "deploy": { "inputs": { "fenix": "fenix_4", - "flake-compat": "flake-compat_18", + "flake-compat": "flake-compat_21", "nixpkgs": [ "db-sync", "cardano-world", @@ -2901,7 +3143,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_8" + "utils": "utils_10" }, "locked": { "lastModified": 1638318651, @@ -2920,7 +3162,7 @@ "deploy_2": { "inputs": { "fenix": "fenix_6", - "flake-compat": "flake-compat_19", + "flake-compat": "flake-compat_22", "nixpkgs": [ "db-sync", "cardano-world", @@ -2929,7 +3171,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_14" + "utils": "utils_16" }, "locked": { "lastModified": 1638318651, @@ -2948,7 +3190,7 @@ "deploy_3": { "inputs": { "fenix": "fenix_8", - "flake-compat": "flake-compat_20", + "flake-compat": "flake-compat_23", "nixpkgs": [ "db-sync", "cardano-world", @@ -2958,7 +3200,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_22" + "utils": "utils_24" }, "locked": { "lastModified": 1638318651, @@ -3022,6 +3264,21 @@ } }, "devshell_10": { + "locked": { + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_11": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -3036,7 +3293,7 @@ "type": "github" } }, - "devshell_11": { + "devshell_12": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3051,7 +3308,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_13": { "inputs": { "flake-utils": [ "db-sync", @@ -3082,10 +3339,10 @@ "type": "github" } }, - "devshell_13": { + "devshell_14": { "inputs": { - "flake-utils": "flake-utils_31", - "nixpkgs": "nixpkgs_66" + "flake-utils": "flake-utils_36", + "nixpkgs": "nixpkgs_73" }, "locked": { "lastModified": 1644227066, @@ -3101,7 +3358,7 @@ "type": "github" } }, - "devshell_14": { + "devshell_15": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -3116,7 +3373,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_16": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3131,7 +3388,7 @@ "type": "github" } }, - "devshell_16": { + "devshell_17": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3146,7 +3403,7 @@ "type": "github" } }, - "devshell_17": { + "devshell_18": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -3161,7 +3418,7 @@ "type": "github" } }, - "devshell_18": { + "devshell_19": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3176,21 +3433,6 @@ "type": "github" } }, - "devshell_19": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "devshell_2": { "inputs": { "flake-utils": [ @@ -3225,6 +3467,21 @@ } }, "devshell_20": { + "locked": { + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_21": { "inputs": { "flake-utils": [ "db-sync", @@ -3253,9 +3510,9 @@ "type": "github" } }, - "devshell_21": { + "devshell_22": { "inputs": { - "flake-utils": "flake-utils_47", + "flake-utils": "flake-utils_52", "nixpkgs": [ "db-sync", "cardano-world", @@ -3379,12 +3636,26 @@ } }, "devshell_7": { + "inputs": { + "flake-utils": [ + "cardano-node-plutip", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", "owner": "numtide", "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { @@ -3395,11 +3666,11 @@ }, "devshell_8": { "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", "owner": "numtide", "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { @@ -3410,11 +3681,11 @@ }, "devshell_9": { "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", "owner": "numtide", "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { @@ -3590,6 +3861,35 @@ } }, "dmerge_6": { + "inputs": { + "nixlib": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-node-plutip", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_7": { "inputs": { "nixlib": [ "db-sync", @@ -3620,7 +3920,7 @@ "type": "github" } }, - "dmerge_7": { + "dmerge_8": { "inputs": { "nixlib": [ "db-sync", @@ -3651,9 +3951,9 @@ }, "driver": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_15", "inclusive": "inclusive_7", - "nix": "nix_12", + "nix": "nix_13", "nixpkgs": [ "db-sync", "cardano-world", @@ -3661,7 +3961,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_18" + "utils": "utils_20" }, "locked": { "lastModified": 1644418487, @@ -3741,11 +4041,27 @@ "type": "github" } }, + "em_4": { + "flake": false, + "locked": { + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "type": "github" + }, + "original": { + "owner": "deepfire", + "repo": "em", + "type": "github" + } + }, "ema": { "inputs": { - "flake-compat": "flake-compat_21", - "flake-utils": "flake-utils_38", - "nixpkgs": "nixpkgs_84", + "flake-compat": "flake-compat_24", + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_91", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -3784,7 +4100,7 @@ "ema": "ema_2", "flake-parts": "flake-parts_6", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_87", + "nixpkgs": "nixpkgs_94", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -3861,6 +4177,21 @@ "type": "github" } }, + "empty-flake_5": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, "fenix": { "inputs": { "nixpkgs": [ @@ -3927,7 +4258,7 @@ }, "fenix_4": { "inputs": { - "nixpkgs": "nixpkgs_43", + "nixpkgs": "nixpkgs_50", "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { @@ -3972,7 +4303,7 @@ }, "fenix_6": { "inputs": { - "nixpkgs": "nixpkgs_56", + "nixpkgs": "nixpkgs_63", "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { @@ -4015,7 +4346,7 @@ }, "fenix_8": { "inputs": { - "nixpkgs": "nixpkgs_72", + "nixpkgs": "nixpkgs_79", "rust-analyzer-src": "rust-analyzer-src_8" }, "locked": { @@ -4208,15 +4539,16 @@ "flake-compat_18": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -4224,15 +4556,16 @@ "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -4255,6 +4588,22 @@ } }, "flake-compat_20": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_21": { "flake": false, "locked": { "lastModified": 1627913399, @@ -4270,7 +4619,39 @@ "type": "github" } }, - "flake-compat_21": { + "flake-compat_22": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_23": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_24": { "flake": false, "locked": { "lastModified": 1641205782, @@ -4286,7 +4667,7 @@ "type": "github" } }, - "flake-compat_22": { + "flake-compat_25": { "flake": false, "locked": { "lastModified": 1635892615, @@ -4302,7 +4683,7 @@ "type": "github" } }, - "flake-compat_23": { + "flake-compat_26": { "flake": false, "locked": { "lastModified": 1650374568, @@ -4318,7 +4699,7 @@ "type": "github" } }, - "flake-compat_24": { + "flake-compat_27": { "flake": false, "locked": { "lastModified": 1647532380, @@ -4335,7 +4716,7 @@ "type": "github" } }, - "flake-compat_25": { + "flake-compat_28": { "flake": false, "locked": { "lastModified": 1696426674, @@ -4351,7 +4732,7 @@ "type": "github" } }, - "flake-compat_26": { + "flake-compat_29": { "flake": false, "locked": { "lastModified": 1672831974, @@ -4368,7 +4749,7 @@ "type": "github" } }, - "flake-compat_27": { + "flake-compat_3": { "flake": false, "locked": { "lastModified": 1673956053, @@ -4384,7 +4765,7 @@ "type": "github" } }, - "flake-compat_3": { + "flake-compat_30": { "flake": false, "locked": { "lastModified": 1673956053, @@ -4592,7 +4973,7 @@ }, "flake-parts_6": { "inputs": { - "nixpkgs": "nixpkgs_86" + "nixpkgs": "nixpkgs_93" }, "locked": { "lastModified": 1655570068, @@ -4859,11 +5240,11 @@ }, "flake-utils_22": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -4874,26 +5255,27 @@ }, "flake-utils_23": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "numtide", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", "repo": "flake-utils", "type": "github" } }, "flake-utils_24": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4904,11 +5286,11 @@ }, "flake-utils_25": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -4919,11 +5301,11 @@ }, "flake-utils_26": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -4964,11 +5346,11 @@ }, "flake-utils_29": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5009,11 +5391,11 @@ }, "flake-utils_31": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -5024,11 +5406,11 @@ }, "flake-utils_32": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5039,11 +5421,11 @@ }, "flake-utils_33": { "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5054,11 +5436,11 @@ }, "flake-utils_34": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -5069,11 +5451,11 @@ }, "flake-utils_35": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -5084,11 +5466,11 @@ }, "flake-utils_36": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -5114,11 +5496,11 @@ }, "flake-utils_38": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { @@ -5129,11 +5511,11 @@ }, "flake-utils_39": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5159,27 +5541,26 @@ }, "flake-utils_40": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { "owner": "numtide", - "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_41": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -5205,11 +5586,11 @@ }, "flake-utils_43": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -5220,11 +5601,11 @@ }, "flake-utils_44": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { @@ -5235,26 +5616,27 @@ }, "flake-utils_45": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { "owner": "numtide", + "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_46": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -5265,11 +5647,11 @@ }, "flake-utils_47": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -5293,6 +5675,21 @@ "type": "github" } }, + "flake-utils_49": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "flake-utils_5": { "locked": { "lastModified": 1679360468, @@ -5309,13 +5706,13 @@ "type": "github" } }, - "flake-utils_6": { + "flake-utils_50": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -5324,13 +5721,13 @@ "type": "github" } }, - "flake-utils_7": { + "flake-utils_51": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5339,13 +5736,13 @@ "type": "github" } }, - "flake-utils_8": { + "flake-utils_52": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -5354,13 +5751,13 @@ "type": "github" } }, - "flake-utils_9": { + "flake-utils_53": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -5369,17 +5766,77 @@ "type": "github" } }, - "flakeCompat": { - "flake": false, + "flake-utils_6": { "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" - }, - "original": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_8": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flakeCompat": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { "owner": "edolstra", "repo": "flake-compat", "type": "github" @@ -5387,7 +5844,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_15", + "devshell": "devshell_16", "inclusive": "inclusive_8", "nixpkgs": [ "db-sync", @@ -5396,7 +5853,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_19" + "utils": "utils_21" }, "locked": { "lastModified": 1642008295, @@ -5446,6 +5903,23 @@ "type": "github" } }, + "ghc-8.6.5-iohk_11": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, "ghc-8.6.5-iohk_2": { "flake": false, "locked": { @@ -5809,6 +6283,25 @@ "type": "github" } }, + "gomod2nix_4": { + "inputs": { + "nixpkgs": "nixpkgs_42", + "utils": "utils_8" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, "hackage": { "flake": false, "locked": { @@ -5905,6 +6398,22 @@ "type": "github" } }, + "hackageNix_5": { + "flake": false, + "locked": { + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, "hackage_2": { "flake": false, "locked": { @@ -6038,15 +6547,15 @@ }, "haskell-nix_2": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_37", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_6", + "hpc-coveralls": "hpc-coveralls_7", "nix-tools": "nix-tools", "nixpkgs": [ "db-sync", @@ -6056,9 +6565,9 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", "nixpkgs-unstable": [ "db-sync", "cardano-world", @@ -6066,8 +6575,8 @@ "cicero", "nixpkgs" ], - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_5" + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" }, "locked": { "lastModified": 1646097976, @@ -6085,20 +6594,20 @@ }, "haskell-nix_3": { "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_43", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_48", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", "hackage": [ "db-sync", "cardano-world", "hackage" ], - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", "nix-tools": "nix-tools_3", "nixpkgs": [ "db-sync", @@ -6106,13 +6615,13 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_7" + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" }, "locked": { "lastModified": 1659439444, @@ -6130,19 +6639,19 @@ }, "haskell-nix_4": { "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-compat": "flake-compat_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_11", + "flake-compat": "flake-compat_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", "ghc910X": "ghc910X_2", "ghc911": "ghc911_2", "hackage": [ "hackage-nix" ], - "hls-1.10": "hls-1.10_6", + "hls-1.10": "hls-1.10_7", "hls-2.0": "hls-2.0_5", "hls-2.2": "hls-2.2_4", "hls-2.3": "hls-2.3_4", @@ -6151,22 +6660,22 @@ "hls-2.6": "hls-2.6_2", "hls-2.7": "hls-2.7", "hls-2.8": "hls-2.8", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_12", - "iserv-proxy": "iserv-proxy_6", + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_13", + "iserv-proxy": "iserv-proxy_7", "nixpkgs": [ "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-2205": "nixpkgs-2205_7", - "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-2205": "nixpkgs-2205_8", + "nixpkgs-2211": "nixpkgs-2211_7", "nixpkgs-2305": "nixpkgs-2305_5", "nixpkgs-2311": "nixpkgs-2311_2", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_9" + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_10" }, "locked": { "lastModified": 1718844631, @@ -6392,36 +6901,41 @@ }, "haskellNix_5": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_2", + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-compat": "flake-compat_19", + "flake-utils": "flake-utils_23", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": [ + "cardano-node-plutip", + "hackageNix" + ], + "hls-1.10": "hls-1.10_6", + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_6", + "iserv-proxy": "iserv-proxy_6", "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", + "cardano-node-plutip", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_6" + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" }, "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { @@ -6432,28 +6946,68 @@ }, "haskellNix_6": { "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_48", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_9", - "hydra": "hydra_11", + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_47", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_7": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-utils": "flake-utils_53", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", "nix-tools": "nix-tools_4", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_8" + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" }, "locked": { "lastModified": 1650936156, @@ -6536,7 +7090,7 @@ "hercules-ci-effects_2": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_100" + "nixpkgs": "nixpkgs_107" }, "locked": { "lastModified": 1718018037, @@ -6654,6 +7208,23 @@ "type": "github" } }, + "hls-1.10_7": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.0": { "flake": false, "locked": { @@ -7077,6 +7648,22 @@ "type": "github" } }, + "hpc-coveralls_11": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, "hpc-coveralls_2": { "flake": false, "locked": { @@ -7237,7 +7824,8 @@ "nixpkgs": [ "db-sync", "cardano-world", - "haskell-nix", + "cardano-wallet", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -7261,7 +7849,8 @@ "nix": "nix_19", "nixpkgs": [ "db-sync", - "haskellNix", + "cardano-world", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -7283,6 +7872,30 @@ "hydra_12": { "inputs": { "nix": "nix_20", + "nixpkgs": [ + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_13": { + "inputs": { + "nix": "nix_21", "nixpkgs": [ "haskell-nix", "hydra", @@ -7403,6 +8016,30 @@ } }, "hydra_6": { + "inputs": { + "nix": "nix_7", + "nixpkgs": [ + "cardano-node-plutip", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_7": { "inputs": { "nix": [ "db-sync", @@ -7436,7 +8073,7 @@ "type": "github" } }, - "hydra_7": { + "hydra_8": { "inputs": { "nix": [ "db-sync", @@ -7466,7 +8103,7 @@ "type": "github" } }, - "hydra_8": { + "hydra_9": { "inputs": { "nix": [ "db-sync", @@ -7498,32 +8135,6 @@ "type": "github" } }, - "hydra_9": { - "inputs": { - "nix": "nix_17", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, "incl": { "inputs": { "nixlib": [ @@ -7644,6 +8255,29 @@ "type": "github" } }, + "incl_6": { + "inputs": { + "nixlib": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, "inclusive": { "inputs": { "stdlib": "stdlib" @@ -7881,10 +8515,10 @@ }, "iogo": { "inputs": { - "devshell": "devshell_9", + "devshell": "devshell_10", "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_52", - "utils": "utils_13" + "nixpkgs": "nixpkgs_59", + "utils": "utils_15" }, "locked": { "lastModified": 1652212694, @@ -7902,10 +8536,10 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_19", + "devshell": "devshell_20", "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_81", - "utils": "utils_27" + "nixpkgs": "nixpkgs_88", + "utils": "utils_29" }, "locked": { "lastModified": 1658302707, @@ -7988,12 +8622,12 @@ }, "iohk-nix_3": { "inputs": { - "blst": "blst_7", + "blst": "blst_8", "nixpkgs": [ "nixpkgs" ], - "secp256k1": "secp256k1_7", - "sodium": "sodium_7" + "secp256k1": "secp256k1_8", + "sodium": "sodium_8" }, "locked": { "lastModified": 1715898223, @@ -8109,6 +8743,30 @@ } }, "iohkNix_5": { + "inputs": { + "blst": "blst_7", + "nixpkgs": [ + "cardano-node-plutip", + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -8131,7 +8789,7 @@ "type": "github" } }, - "iohkNix_6": { + "iohkNix_7": { "inputs": { "nixpkgs": [ "db-sync", @@ -8238,6 +8896,23 @@ } }, "iserv-proxy_6": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_7": { "flake": false, "locked": { "lastModified": 1717479972, @@ -8353,11 +9028,11 @@ "lowdown-src_15": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { @@ -8369,11 +9044,11 @@ "lowdown-src_16": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { @@ -8462,6 +9137,22 @@ "type": "github" } }, + "lowdown-src_21": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, "lowdown-src_3": { "flake": false, "locked": { @@ -8545,11 +9236,11 @@ "lowdown-src_8": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { @@ -8561,11 +9252,11 @@ "lowdown-src_9": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { @@ -8759,8 +9450,37 @@ }, "n2c_6": { "inputs": { - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_57" + "flake-utils": [ + "cardano-node-plutip", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_7": { + "inputs": { + "flake-utils": "flake-utils_32", + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1650568002, @@ -8776,10 +9496,10 @@ "type": "github" } }, - "n2c_7": { + "n2c_8": { "inputs": { - "flake-utils": "flake-utils_44", - "nixpkgs": "nixpkgs_92" + "flake-utils": "flake-utils_49", + "nixpkgs": "nixpkgs_99" }, "locked": { "lastModified": 1655533513, @@ -8818,7 +9538,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_16", + "devshell": "devshell_17", "inclusive": [ "db-sync", "cardano-world", @@ -8833,7 +9553,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_20" + "utils": "utils_22" }, "locked": { "lastModified": 1644317729, @@ -8984,6 +9704,41 @@ "type": "github" } }, + "nix-nomad_4": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": [ + "cardano-node-plutip", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_4", + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-node-plutip", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, "nix-tools": { "flake": false, "locked": { @@ -9164,8 +9919,46 @@ }, "nix2container_7": { "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": "nixpkgs_95" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_41" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_8": { + "inputs": { + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_43" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_9": { + "inputs": { + "flake-utils": "flake-utils_51", + "nixpkgs": "nixpkgs_102" }, "locked": { "lastModified": 1653427219, @@ -9185,20 +9978,19 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_58", + "nixpkgs": "nixpkgs_55", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", "owner": "nixos", "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { "owner": "nixos", - "ref": "2.8.1", "repo": "nix", "type": "github" } @@ -9206,19 +9998,20 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_60", + "nixpkgs": "nixpkgs_65", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", "owner": "nixos", "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", "type": "github" }, "original": { "owner": "nixos", + "ref": "2.8.1", "repo": "nix", "type": "github" } @@ -9229,6 +10022,26 @@ "nixpkgs": "nixpkgs_67", "nixpkgs-regression": "nixpkgs-regression_11" }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_74", + "nixpkgs-regression": "nixpkgs-regression_12" + }, "locked": { "lastModified": 1644413094, "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", @@ -9244,11 +10057,11 @@ "type": "github" } }, - "nix_13": { + "nix_14": { "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_68", - "nixpkgs-regression": "nixpkgs-regression_12" + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_75", + "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { "lastModified": 1645437800, @@ -9265,11 +10078,11 @@ "type": "github" } }, - "nix_14": { + "nix_15": { "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_73", - "nixpkgs-regression": "nixpkgs-regression_13" + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_80", + "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { "lastModified": 1646164353, @@ -9286,10 +10099,10 @@ "type": "github" } }, - "nix_15": { + "nix_16": { "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_75" + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_82" }, "locked": { "lastModified": 1604400356, @@ -9305,11 +10118,11 @@ "type": "github" } }, - "nix_16": { + "nix_17": { "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_77", - "nixpkgs-regression": "nixpkgs-regression_14" + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_84", + "nixpkgs-regression": "nixpkgs-regression_15" }, "locked": { "lastModified": 1645189081, @@ -9325,31 +10138,10 @@ "type": "github" } }, - "nix_17": { - "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_89", - "nixpkgs-regression": "nixpkgs-regression_15" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, "nix_18": { "inputs": { "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_91", + "nixpkgs": "nixpkgs_96", "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { @@ -9413,9 +10205,30 @@ "nix_20": { "inputs": { "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_99", + "nixpkgs": "nixpkgs_105", "nixpkgs-regression": "nixpkgs-regression_18" }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_21": { + "inputs": { + "lowdown-src": "lowdown-src_21", + "nixpkgs": "nixpkgs_106", + "nixpkgs-regression": "nixpkgs-regression_19" + }, "locked": { "lastModified": 1661606874, "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", @@ -9518,20 +10331,20 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_44", + "nixpkgs": "nixpkgs_40", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", + "owner": "NixOS", + "ref": "2.11.0", "repo": "nix", "type": "github" } @@ -9539,18 +10352,20 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_46" + "nixpkgs": "nixpkgs_51", + "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", "repo": "nix", "type": "github" } @@ -9558,19 +10373,18 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_48", - "nixpkgs-regression": "nixpkgs-regression_8" + "nixpkgs": "nixpkgs_53" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "repo": "nix", "type": "github" } @@ -9790,6 +10604,41 @@ } }, "nixago_6": { + "inputs": { + "flake-utils": [ + "cardano-node-plutip", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node-plutip", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_7": { "inputs": { "flake-utils": [ "db-sync", @@ -9821,7 +10670,7 @@ "type": "github" } }, - "nixago_7": { + "nixago_8": { "inputs": { "flake-utils": [ "db-sync", @@ -9944,6 +10793,22 @@ "type": "github" } }, + "nixpkgs-2003_11": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-2003_2": { "locked": { "lastModified": 1620055814, @@ -10089,6 +10954,22 @@ } }, "nixpkgs-2105_10": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_11": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -10170,11 +11051,11 @@ }, "nixpkgs-2105_6": { "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { @@ -10186,11 +11067,11 @@ }, "nixpkgs-2105_7": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { @@ -10202,11 +11083,11 @@ }, "nixpkgs-2105_8": { "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -10218,11 +11099,11 @@ }, "nixpkgs-2105_9": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { @@ -10249,6 +11130,22 @@ } }, "nixpkgs-2111_10": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_11": { "locked": { "lastModified": 1659446231, "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", @@ -10330,11 +11227,11 @@ }, "nixpkgs-2111_6": { "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -10346,11 +11243,11 @@ }, "nixpkgs-2111_7": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { @@ -10362,11 +11259,11 @@ }, "nixpkgs-2111_8": { "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -10378,11 +11275,11 @@ }, "nixpkgs-2111_9": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { @@ -10473,6 +11370,22 @@ } }, "nixpkgs-2205_6": { + "locked": { + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_7": { "locked": { "lastModified": 1657876628, "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", @@ -10488,7 +11401,7 @@ "type": "github" } }, - "nixpkgs-2205_7": { + "nixpkgs-2205_8": { "locked": { "lastModified": 1685573264, "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", @@ -10585,6 +11498,22 @@ } }, "nixpkgs-2211_6": { + "locked": { + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_7": { "locked": { "lastModified": 1688392541, "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", @@ -10949,6 +11878,21 @@ } }, "nixpkgs-regression_18": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_19": { "locked": { "lastModified": 1643052045, "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", @@ -11054,9 +11998,10 @@ "type": "github" }, "original": { - "id": "nixpkgs", + "owner": "NixOS", + "repo": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "type": "github" } }, "nixpkgs-regression_8": { @@ -11122,6 +12067,22 @@ } }, "nixpkgs-unstable_10": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_11": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -11137,7 +12098,7 @@ "type": "github" } }, - "nixpkgs-unstable_11": { + "nixpkgs-unstable_12": { "locked": { "lastModified": 1657888067, "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", @@ -11153,7 +12114,7 @@ "type": "github" } }, - "nixpkgs-unstable_12": { + "nixpkgs-unstable_13": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -11169,7 +12130,7 @@ "type": "github" } }, - "nixpkgs-unstable_13": { + "nixpkgs-unstable_14": { "locked": { "lastModified": 1694822471, "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", @@ -11267,15 +12228,15 @@ }, "nixpkgs-unstable_7": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -11283,11 +12244,11 @@ }, "nixpkgs-unstable_8": { "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { @@ -11299,11 +12260,11 @@ }, "nixpkgs-unstable_9": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { @@ -11331,27 +12292,137 @@ }, "nixpkgs_100": { "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-22.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_101": { "locked": { - "lastModified": 1675249806, - "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", - "owner": "NixOS", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_102": { + "locked": { + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_103": { + "locked": { + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_104": { + "locked": { + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_105": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_106": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_107": { + "locked": { + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { @@ -11812,11 +12883,11 @@ }, "nixpkgs_39": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { @@ -11842,154 +12913,153 @@ }, "nixpkgs_40": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_41": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_42": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_43": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_44": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_45": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, "nixpkgs_46": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-20.09-small", "type": "indirect" } }, "nixpkgs_47": { "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-21.11", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_48": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", "type": "indirect" } }, "nixpkgs_49": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -12012,22 +13082,6 @@ } }, "nixpkgs_50": { - "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_51": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -12043,55 +13097,196 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_51": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs_53": { + "nixpkgs_52": { "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_53": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "nixpkgs_54": { + "locked": { + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_55": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_56": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_57": { + "locked": { + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_58": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_59": { + "locked": { + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { + "locked": { + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_61": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_62": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -12106,7 +13301,7 @@ "type": "github" } }, - "nixpkgs_56": { + "nixpkgs_63": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -12122,7 +13317,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_64": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -12137,7 +13332,7 @@ "type": "github" } }, - "nixpkgs_58": { + "nixpkgs_65": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -12152,7 +13347,7 @@ "type": "indirect" } }, - "nixpkgs_59": { + "nixpkgs_66": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -12168,23 +13363,7 @@ "type": "github" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_67": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -12199,7 +13378,7 @@ "type": "indirect" } }, - "nixpkgs_61": { + "nixpkgs_68": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -12215,7 +13394,7 @@ "type": "github" } }, - "nixpkgs_62": { + "nixpkgs_69": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -12231,7 +13410,23 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_7": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -12247,7 +13442,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_71": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -12263,7 +13458,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_72": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -12279,7 +13474,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_73": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -12295,7 +13490,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_74": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -12310,7 +13505,7 @@ "type": "indirect" } }, - "nixpkgs_68": { + "nixpkgs_75": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -12325,7 +13520,7 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_76": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -12341,23 +13536,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_77": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -12371,7 +13550,7 @@ "type": "indirect" } }, - "nixpkgs_71": { + "nixpkgs_78": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -12387,7 +13566,7 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_79": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -12403,7 +13582,23 @@ "type": "github" } }, - "nixpkgs_73": { + "nixpkgs_8": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_80": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -12418,7 +13613,7 @@ "type": "indirect" } }, - "nixpkgs_74": { + "nixpkgs_81": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -12434,7 +13629,7 @@ "type": "github" } }, - "nixpkgs_75": { + "nixpkgs_82": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -12449,7 +13644,7 @@ "type": "indirect" } }, - "nixpkgs_76": { + "nixpkgs_83": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -12465,7 +13660,7 @@ "type": "github" } }, - "nixpkgs_77": { + "nixpkgs_84": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -12480,7 +13675,7 @@ "type": "indirect" } }, - "nixpkgs_78": { + "nixpkgs_85": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -12496,7 +13691,7 @@ "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_86": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -12512,23 +13707,7 @@ "type": "github" } }, - "nixpkgs_8": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_80": { + "nixpkgs_87": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -12544,7 +13723,7 @@ "type": "github" } }, - "nixpkgs_81": { + "nixpkgs_88": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -12560,7 +13739,7 @@ "type": "github" } }, - "nixpkgs_82": { + "nixpkgs_89": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -12576,7 +13755,23 @@ "type": "github" } }, - "nixpkgs_83": { + "nixpkgs_9": { + "locked": { + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_90": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -12592,7 +13787,7 @@ "type": "github" } }, - "nixpkgs_84": { + "nixpkgs_91": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -12608,7 +13803,7 @@ "type": "github" } }, - "nixpkgs_85": { + "nixpkgs_92": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -12622,7 +13817,7 @@ "type": "indirect" } }, - "nixpkgs_86": { + "nixpkgs_93": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -12632,192 +13827,67 @@ "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_87": { - "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_88": { - "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_89": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_90": { - "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs_91": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_92": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_93": { - "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_94": { - "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_95": { + "nixpkgs_94": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_95": { + "locked": { + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", "owner": "NixOS", "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" } }, "nixpkgs_96": { "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, "nixpkgs_97": { "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, @@ -12838,25 +13908,24 @@ }, "nixpkgs_99": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nomad": { "inputs": { - "nix": "nix_8", - "nixpkgs": "nixpkgs_47", - "utils": "utils_9" + "nix": "nix_9", + "nixpkgs": "nixpkgs_54", + "utils": "utils_11" }, "locked": { "lastModified": 1648128770, @@ -12875,11 +13944,11 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_7", + "devshell": "devshell_8", "inclusive": "inclusive_2", - "nix": "nix_9", - "nixpkgs": "nixpkgs_49", - "utils": "utils_10" + "nix": "nix_10", + "nixpkgs": "nixpkgs_56", + "utils": "utils_12" }, "locked": { "lastModified": 1648029666, @@ -12897,11 +13966,11 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_11", "inclusive": "inclusive_5", - "nix": "nix_11", - "nixpkgs": "nixpkgs_61", - "utils": "utils_15" + "nix": "nix_12", + "nixpkgs": "nixpkgs_68", + "utils": "utils_17" }, "locked": { "lastModified": 1648029666, @@ -12919,11 +13988,11 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_17", + "devshell": "devshell_18", "inclusive": "inclusive_10", - "nix": "nix_16", - "nixpkgs": "nixpkgs_78", - "utils": "utils_24" + "nix": "nix_17", + "nixpkgs": "nixpkgs_85", + "utils": "utils_26" }, "locked": { "lastModified": 1648029666, @@ -12941,10 +14010,10 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_8", + "devshell": "devshell_9", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_50", - "utils": "utils_11" + "nixpkgs": "nixpkgs_57", + "utils": "utils_13" }, "locked": { "lastModified": 1649836589, @@ -12962,10 +14031,10 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_12", "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_62", - "utils": "utils_16" + "nixpkgs": "nixpkgs_69", + "utils": "utils_18" }, "locked": { "lastModified": 1658244176, @@ -12983,10 +14052,10 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_18", + "devshell": "devshell_19", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_79", - "utils": "utils_25" + "nixpkgs": "nixpkgs_86", + "utils": "utils_27" }, "locked": { "lastModified": 1649836589, @@ -13004,9 +14073,9 @@ }, "nomad_2": { "inputs": { - "nix": "nix_15", - "nixpkgs": "nixpkgs_76", - "utils": "utils_23" + "nix": "nix_16", + "nixpkgs": "nixpkgs_83", + "utils": "utils_25" }, "locked": { "lastModified": 1648128770, @@ -13098,6 +14167,21 @@ "type": "github" } }, + "nosys_6": { + "locked": { + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, "offchain-metadata-tools-service": { "flake": false, "locked": { @@ -13183,6 +14267,23 @@ "type": "github" } }, + "old-ghc-nix_11": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, "old-ghc-nix_2": { "flake": false, "locked": { @@ -13368,6 +14469,22 @@ } }, "ops-lib_4": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_5": { "flake": false, "locked": { "lastModified": 1649848729, @@ -13383,7 +14500,7 @@ "type": "github" } }, - "ops-lib_5": { + "ops-lib_6": { "flake": false, "locked": { "lastModified": 1649848729, @@ -13399,7 +14516,7 @@ "type": "github" } }, - "ops-lib_6": { + "ops-lib_7": { "flake": false, "locked": { "lastModified": 1649848729, @@ -13768,11 +14885,11 @@ }, "plutip": { "inputs": { - "CHaP": "CHaP_6", + "CHaP": "CHaP_7", "cardano-node": [ - "cardano-node" + "cardano-node-plutip" ], - "flake-compat": "flake-compat_27", + "flake-compat": "flake-compat_30", "hackage-nix": [ "hackage-nix" ], @@ -13803,7 +14920,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_38", "nixpkgs": [ "db-sync", "cardano-world", @@ -13829,8 +14946,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_85" + "flake-utils": "flake-utils_44", + "nixpkgs": "nixpkgs_92" }, "locked": { "lastModified": 1639823344, @@ -13876,8 +14993,8 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_51", + "flake-utils": "flake-utils_29", + "nixpkgs": "nixpkgs_58", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -13897,8 +15014,8 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_54", + "flake-utils": "flake-utils_31", + "nixpkgs": "nixpkgs_61", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -13918,8 +15035,8 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_63", + "flake-utils": "flake-utils_33", + "nixpkgs": "nixpkgs_70", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -13939,8 +15056,8 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_35", - "nixpkgs": "nixpkgs_80", + "flake-utils": "flake-utils_40", + "nixpkgs": "nixpkgs_87", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -13960,8 +15077,8 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_37", - "nixpkgs": "nixpkgs_83", + "flake-utils": "flake-utils_42", + "nixpkgs": "nixpkgs_90", "rust-overlay": "rust-overlay_7" }, "locked": { @@ -13985,9 +15102,10 @@ "cardano-configurations": "cardano-configurations", "cardano-nix": "cardano-nix", "cardano-node": "cardano-node", + "cardano-node-plutip": "cardano-node-plutip", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_25", + "flake-compat": "flake-compat_28", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_4", "hercules-ci-effects": "hercules-ci-effects_2", @@ -14499,6 +15617,23 @@ "type": "github" } }, + "secp256k1_8": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, "sodium": { "flake": false, "locked": { @@ -14618,6 +15753,23 @@ "type": "github" } }, + "sodium_8": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, "sops-nix": { "inputs": { "nixpkgs": "nixpkgs_10", @@ -14669,6 +15821,22 @@ "type": "github" } }, + "stackage_10": { + "flake": false, + "locked": { + "lastModified": 1718842995, + "narHash": "sha256-z1ETU1nJoTUpK7BcdSYuYph6njhJJR8hTZ197lzXX3E=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "b224b7d7461de53fcf700bb14bde43d6efa2ee3b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, "stackage_2": { "flake": false, "locked": { @@ -14720,11 +15888,11 @@ "stackage_5": { "flake": false, "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -14736,11 +15904,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { @@ -14752,11 +15920,11 @@ "stackage_7": { "flake": false, "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { @@ -14768,11 +15936,11 @@ "stackage_8": { "flake": false, "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { @@ -14784,11 +15952,11 @@ "stackage_9": { "flake": false, "locked": { - "lastModified": 1718842995, - "narHash": "sha256-z1ETU1nJoTUpK7BcdSYuYph6njhJJR8hTZ197lzXX3E=", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "b224b7d7461de53fcf700bb14bde43d6efa2ee3b", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { @@ -15060,13 +16228,58 @@ }, "std_6": { "inputs": { - "devshell": "devshell_12", + "arion": [ + "cardano-node-plutip", + "tullia", + "std", + "blank" + ], + "blank": "blank_6", + "devshell": "devshell_7", "dmerge": "dmerge_6", - "flake-utils": "flake-utils_29", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "flake-utils": "flake-utils_26", + "incl": "incl_6", + "makes": [ + "cardano-node-plutip", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-node-plutip", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_6", "nixago": "nixago_6", - "nixpkgs": "nixpkgs_64", - "yants": "yants_7" + "nixpkgs": "nixpkgs_45", + "nosys": "nosys_6", + "yants": "yants_6" + }, + "locked": { + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_7": { + "inputs": { + "devshell": "devshell_13", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_34", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago_7", + "nixpkgs": "nixpkgs_71", + "yants": "yants_8" }, "locked": { "lastModified": 1661370377, @@ -15082,15 +16295,15 @@ "type": "github" } }, - "std_7": { + "std_8": { "inputs": { - "devshell": "devshell_20", - "dmerge": "dmerge_7", - "flake-utils": "flake-utils_45", + "devshell": "devshell_21", + "dmerge": "dmerge_8", + "flake-utils": "flake-utils_50", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_7", - "nixpkgs": "nixpkgs_94", - "yants": "yants_9" + "nixago": "nixago_8", + "nixpkgs": "nixpkgs_101", + "yants": "yants_10" }, "locked": { "lastModified": 1661367957, @@ -15106,11 +16319,11 @@ "type": "github" } }, - "std_8": { + "std_9": { "inputs": { - "devshell": "devshell_21", - "nixpkgs": "nixpkgs_97", - "yants": "yants_10" + "devshell": "devshell_22", + "nixpkgs": "nixpkgs_104", + "yants": "yants_11" }, "locked": { "lastModified": 1652784712, @@ -15383,8 +16596,8 @@ }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_40", - "nixpkgs": "nixpkgs_88" + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_95" }, "locked": { "lastModified": 1654211622, @@ -15505,7 +16718,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_25", + "flake-utils": "flake-utils_30", "nixpkgs": [ "db-sync", "cardano-world", @@ -15534,7 +16747,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_30", + "flake-utils": "flake-utils_35", "nixpkgs": [ "db-sync", "cardano-world", @@ -15561,7 +16774,7 @@ "inputs": { "bats-assert": "bats-assert_4", "bats-support": "bats-support_4", - "flake-utils": "flake-utils_36", + "flake-utils": "flake-utils_41", "nixpkgs": [ "db-sync", "cardano-world", @@ -15721,9 +16934,30 @@ }, "tullia_4": { "inputs": { - "nix2container": "nix2container_7", - "nixpkgs": "nixpkgs_96", - "std": "std_8" + "nix-nomad": "nix-nomad_4", + "nix2container": "nix2container_8", + "nixpkgs": "nixpkgs_44", + "std": "std_6" + }, + "locked": { + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_5": { + "inputs": { + "nix2container": "nix2container_9", + "nixpkgs": "nixpkgs_103", + "std": "std_9" }, "locked": { "lastModified": 1657811465, @@ -15758,6 +16992,36 @@ } }, "utils_10": { + "locked": { + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_11": { + "locked": { + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_12": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -15772,7 +17036,7 @@ "type": "github" } }, - "utils_11": { + "utils_13": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -15787,7 +17051,7 @@ "type": "github" } }, - "utils_12": { + "utils_14": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -15802,7 +17066,7 @@ "type": "github" } }, - "utils_13": { + "utils_15": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -15817,7 +17081,7 @@ "type": "github" } }, - "utils_14": { + "utils_16": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -15832,7 +17096,7 @@ "type": "github" } }, - "utils_15": { + "utils_17": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -15847,7 +17111,7 @@ "type": "github" } }, - "utils_16": { + "utils_18": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -15862,7 +17126,7 @@ "type": "github" } }, - "utils_17": { + "utils_19": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -15877,22 +17141,22 @@ "type": "github" } }, - "utils_18": { + "utils_2": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, - "utils_19": { + "utils_20": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -15907,22 +17171,22 @@ "type": "github" } }, - "utils_2": { + "utils_21": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_20": { + "utils_22": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -15937,7 +17201,7 @@ "type": "github" } }, - "utils_21": { + "utils_23": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -15952,7 +17216,7 @@ "type": "github" } }, - "utils_22": { + "utils_24": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -15967,7 +17231,7 @@ "type": "github" } }, - "utils_23": { + "utils_25": { "locked": { "lastModified": 1601282935, "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", @@ -15982,7 +17246,7 @@ "type": "github" } }, - "utils_24": { + "utils_26": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -15997,7 +17261,7 @@ "type": "github" } }, - "utils_25": { + "utils_27": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -16012,7 +17276,7 @@ "type": "github" } }, - "utils_26": { + "utils_28": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -16027,7 +17291,7 @@ "type": "github" } }, - "utils_27": { + "utils_29": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -16042,13 +17306,13 @@ "type": "github" } }, - "utils_28": { + "utils_3": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -16057,13 +17321,13 @@ "type": "github" } }, - "utils_3": { + "utils_30": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -16134,11 +17398,11 @@ }, "utils_8": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -16149,11 +17413,11 @@ }, "utils_9": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -16221,6 +17485,29 @@ } }, "yants_10": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_11": { "inputs": { "nixpkgs": [ "db-sync", @@ -16342,14 +17629,19 @@ }, "yants_6": { "inputs": { - "nixpkgs": "nixpkgs_55" + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", "owner": "divnix", "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", "type": "github" }, "original": { @@ -16360,13 +17652,7 @@ }, "yants_7": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_62" }, "locked": { "lastModified": 1645126146, @@ -16384,7 +17670,13 @@ }, "yants_8": { "inputs": { - "nixpkgs": "nixpkgs_90" + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, @@ -16402,12 +17694,7 @@ }, "yants_9": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_97" }, "locked": { "lastModified": 1645126146, diff --git a/flake.nix b/flake.nix index 673cb1c3b..cd6631c44 100644 --- a/flake.nix +++ b/flake.nix @@ -34,6 +34,9 @@ cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-sancho"; + # TODO: Replace Plutip with cardano-testnet and remove this input + cardano-node-plutip.url = "github:IntersectMBO/cardano-node/8.1.1"; + # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { @@ -71,7 +74,7 @@ iohk-nix.follows = "iohk-nix"; haskell-nix.follows = "haskell-nix"; hackage-nix.follows = "hackage-nix"; - cardano-node.follows = "cardano-node"; + cardano-node.follows = "cardano-node-plutip"; }; }; @@ -255,8 +258,9 @@ in import ./plutip-server { inherit pkgs; - inherit (inputs) plutip CHaP cardano-node; + inherit (inputs) plutip CHaP; inherit (pkgs) system; + cardano-node = inputs.cardano-node-plutip; src = ./plutip-server; }; in From 5c3c6eee2d4dcc484c15d206a163fbba752bcb14 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 20 Jun 2024 16:51:52 +0200 Subject: [PATCH 236/373] Revert "Attempt to re-enable plutip tests using older cardano-node" This reverts commit 9e55bb9e9cfabade66afd7235186f4bbe678d72d. --- flake.lock | 3195 ++++++++++++++++------------------------------------ flake.nix | 8 +- 2 files changed, 956 insertions(+), 2247 deletions(-) diff --git a/flake.lock b/flake.lock index 515c6fc75..bd6bec67d 100644 --- a/flake.lock +++ b/flake.lock @@ -86,23 +86,6 @@ } }, "CHaP_6": { - "flake": false, - "locked": { - "lastModified": 1686070892, - "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "596cf203a0a1ba252a083a79d384325000faeb49", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_7": { "flake": false, "locked": { "lastModified": 1694601145, @@ -151,22 +134,6 @@ "type": "github" } }, - "HTTP_11": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "HTTP_2": { "flake": false, "locked": { @@ -297,7 +264,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_46" + "nixpkgs": "nixpkgs_39" }, "locked": { "lastModified": 1641576265, @@ -315,8 +282,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_47" + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641404293, @@ -334,8 +301,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_49" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_42" }, "locked": { "lastModified": 1641404293, @@ -353,8 +320,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_78" + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_71" }, "locked": { "lastModified": 1641404293, @@ -372,7 +339,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_48" + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641576265, @@ -465,7 +432,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_77" + "nixpkgs": "nixpkgs_70" }, "locked": { "lastModified": 1641576265, @@ -533,7 +500,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_72" + "nixpkgs": "nixpkgs_65" }, "locked": { "lastModified": 1646360966, @@ -743,24 +710,24 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_7", + "blank": "blank_6", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", "fenix": "fenix_7", - "hydra": "hydra_8", - "n2c": "n2c_7", - "nix": "nix_11", - "nixpkgs": "nixpkgs_66", + "hydra": "hydra_7", + "n2c": "n2c_6", + "nix": "nix_10", + "nixpkgs": "nixpkgs_59", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_9", + "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_6", + "ops-lib": "ops-lib_5", "ragenix": "ragenix_3", - "std": "std_7", + "std": "std_6", "terranix": "terranix_3", - "utils": "utils_19" + "utils": "utils_17" }, "locked": { "lastModified": 1661790449, @@ -838,20 +805,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_8", + "blank": "blank_7", "deploy": "deploy", "fenix": "fenix_5", - "hydra": "hydra_7", - "nix": "nix_8", - "nixpkgs": "nixpkgs_52", - "nixpkgs-unstable": "nixpkgs-unstable_8", + "hydra": "hydra_6", + "nix": "nix_7", + "nixpkgs": "nixpkgs_45", + "nixpkgs-unstable": "nixpkgs-unstable_7", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib_5", + "ops-lib": "ops-lib_4", "ragenix": "ragenix", "terranix": "terranix_2", - "utils": "utils_14", + "utils": "utils_12", "vulnix": "vulnix" }, "locked": { @@ -872,20 +839,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_9", + "blank": "blank_8", "deploy": "deploy_3", "fenix": "fenix_9", - "hydra": "hydra_9", - "nix": "nix_15", - "nixpkgs": "nixpkgs_81", - "nixpkgs-unstable": "nixpkgs-unstable_10", + "hydra": "hydra_8", + "nix": "nix_14", + "nixpkgs": "nixpkgs_74", + "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_7", + "ops-lib": "ops-lib_6", "ragenix": "ragenix_4", "terranix": "terranix_4", - "utils": "utils_28", + "utils": "utils_26", "vulnix": "vulnix_2" }, "locked": { @@ -1022,21 +989,6 @@ "type": "github" } }, - "blank_9": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1159,23 +1111,6 @@ } }, "blst_7": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_8": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1242,23 +1177,6 @@ "type": "github" } }, - "cabal-32_11": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" - } - }, "cabal-32_2": { "flake": false, "locked": { @@ -1413,23 +1331,6 @@ } }, "cabal-34_10": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_11": { "flake": false, "locked": { "lastModified": 1645834128, @@ -1517,11 +1418,11 @@ "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -1600,23 +1501,6 @@ } }, "cabal-36_10": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_11": { "flake": false, "locked": { "lastModified": 1669081697, @@ -1704,11 +1588,11 @@ "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -1788,7 +1672,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_60", + "nixpkgs": "nixpkgs_53", "ragenix": "ragenix_2" }, "locked": { @@ -1809,7 +1693,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_89", + "nixpkgs": "nixpkgs_82", "ragenix": "ragenix_5" }, "locked": { @@ -1915,36 +1799,6 @@ "type": "github" } }, - "cardano-automation_4": { - "inputs": { - "flake-utils": "flake-utils_22", - "haskellNix": [ - "cardano-node-plutip", - "haskellNix" - ], - "nixpkgs": [ - "cardano-node-plutip", - "nixpkgs" - ], - "tullia": [ - "cardano-node-plutip", - "tullia" - ] - }, - "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", - "type": "github" - } - }, "cardano-configurations": { "flake": false, "locked": { @@ -2168,25 +2022,6 @@ "type": "github" } }, - "cardano-mainnet-mirror_4": { - "inputs": { - "nixpkgs": "nixpkgs_39" - }, - "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", - "type": "github" - } - }, "cardano-nix": { "inputs": { "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", @@ -2353,52 +2188,6 @@ "type": "github" } }, - "cardano-node-plutip": { - "inputs": { - "CHaP": "CHaP_6", - "cardano-automation": "cardano-automation_4", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", - "customConfig": "customConfig_4", - "em": "em_4", - "empty-flake": "empty-flake_5", - "flake-compat": "flake-compat_18", - "hackageNix": "hackageNix_5", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "cardano-node-plutip", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nix2container": "nix2container_7", - "nixpkgs": [ - "cardano-node-plutip", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_4", - "std": [ - "cardano-node-plutip", - "tullia", - "std" - ], - "tullia": "tullia_4", - "utils": "utils_9" - }, - "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "IntersectMBO", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", - "type": "github" - }, - "original": { - "owner": "IntersectMBO", - "ref": "8.1.1", - "repo": "cardano-node", - "type": "github" - } - }, "cardano-node-service": { "flake": false, "locked": { @@ -2508,7 +2297,7 @@ "type": "github" } }, - "cardano-shell_11": { + "cardano-shell_2": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2524,7 +2313,7 @@ "type": "github" } }, - "cardano-shell_2": { + "cardano-shell_3": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2540,23 +2329,7 @@ "type": "github" } }, - "cardano-shell_3": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_4": { + "cardano-shell_4": { "flake": false, "locked": { "lastModified": 1608537748, @@ -2654,19 +2427,19 @@ }, "cardano-wallet": { "inputs": { - "customConfig": "customConfig_5", + "customConfig": "customConfig_4", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_25", - "flake-utils": "flake-utils_46", - "haskellNix": "haskellNix_6", + "flake-compat": "flake-compat_22", + "flake-utils": "flake-utils_41", + "haskellNix": "haskellNix_5", "hostNixpkgs": [ "db-sync", "cardano-world", "cardano-wallet", "nixpkgs" ], - "iohkNix": "iohkNix_6", + "iohkNix": "iohkNix_5", "nixpkgs": [ "db-sync", "cardano-world", @@ -2721,13 +2494,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_26", + "flake-compat": "flake-compat_23", "hackage": "hackage_4", "haskell-nix": "haskell-nix_3", "iohk-nix": "iohk-nix_2", - "n2c": "n2c_8", + "n2c": "n2c_7", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_100", + "nixpkgs": "nixpkgs_93", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -2735,8 +2508,8 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_8", - "tullia": "tullia_5" + "std": "std_7", + "tullia": "tullia_4" }, "locked": { "lastModified": 1662508244, @@ -2756,16 +2529,16 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_14", + "devshell": "devshell_13", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix_2", "inclusive": "inclusive_9", - "nix": "nix_14", + "nix": "nix_13", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_76", + "nixpkgs": "nixpkgs_69", "poetry2nix": "poetry2nix", - "utils": "utils_23" + "utils": "utils_21" }, "locked": { "lastModified": 1647522107, @@ -3018,21 +2791,6 @@ } }, "customConfig_5": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_6": { "locked": { "lastModified": 1, "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", @@ -3047,7 +2805,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_7" + "yants": "yants_6" }, "locked": { "lastModified": 1648237091, @@ -3084,7 +2842,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_9" + "yants": "yants_8" }, "locked": { "lastModified": 1655854240, @@ -3103,16 +2861,16 @@ "db-sync": { "inputs": { "cardano-world": "cardano-world", - "customConfig": "customConfig_6", - "flake-compat": "flake-compat_27", - "haskellNix": "haskellNix_7", - "iohkNix": "iohkNix_7", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_24", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "utils": "utils_30" + "utils": "utils_28" }, "locked": { "lastModified": 1670313550, @@ -3132,7 +2890,7 @@ "deploy": { "inputs": { "fenix": "fenix_4", - "flake-compat": "flake-compat_21", + "flake-compat": "flake-compat_18", "nixpkgs": [ "db-sync", "cardano-world", @@ -3143,7 +2901,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_10" + "utils": "utils_8" }, "locked": { "lastModified": 1638318651, @@ -3162,7 +2920,7 @@ "deploy_2": { "inputs": { "fenix": "fenix_6", - "flake-compat": "flake-compat_22", + "flake-compat": "flake-compat_19", "nixpkgs": [ "db-sync", "cardano-world", @@ -3171,7 +2929,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_16" + "utils": "utils_14" }, "locked": { "lastModified": 1638318651, @@ -3190,7 +2948,7 @@ "deploy_3": { "inputs": { "fenix": "fenix_8", - "flake-compat": "flake-compat_23", + "flake-compat": "flake-compat_20", "nixpkgs": [ "db-sync", "cardano-world", @@ -3200,7 +2958,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_24" + "utils": "utils_22" }, "locked": { "lastModified": 1638318651, @@ -3264,21 +3022,6 @@ } }, "devshell_10": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_11": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -3293,7 +3036,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3308,7 +3051,7 @@ "type": "github" } }, - "devshell_13": { + "devshell_12": { "inputs": { "flake-utils": [ "db-sync", @@ -3339,10 +3082,10 @@ "type": "github" } }, - "devshell_14": { + "devshell_13": { "inputs": { - "flake-utils": "flake-utils_36", - "nixpkgs": "nixpkgs_73" + "flake-utils": "flake-utils_31", + "nixpkgs": "nixpkgs_66" }, "locked": { "lastModified": 1644227066, @@ -3358,7 +3101,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_14": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -3373,7 +3116,7 @@ "type": "github" } }, - "devshell_16": { + "devshell_15": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3388,7 +3131,7 @@ "type": "github" } }, - "devshell_17": { + "devshell_16": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3403,7 +3146,7 @@ "type": "github" } }, - "devshell_18": { + "devshell_17": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -3418,7 +3161,7 @@ "type": "github" } }, - "devshell_19": { + "devshell_18": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -3433,6 +3176,21 @@ "type": "github" } }, + "devshell_19": { + "locked": { + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "devshell_2": { "inputs": { "flake-utils": [ @@ -3467,21 +3225,6 @@ } }, "devshell_20": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_21": { "inputs": { "flake-utils": [ "db-sync", @@ -3510,9 +3253,9 @@ "type": "github" } }, - "devshell_22": { + "devshell_21": { "inputs": { - "flake-utils": "flake-utils_52", + "flake-utils": "flake-utils_47", "nixpkgs": [ "db-sync", "cardano-world", @@ -3636,26 +3379,12 @@ } }, "devshell_7": { - "inputs": { - "flake-utils": [ - "cardano-node-plutip", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] - }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", "owner": "numtide", "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { @@ -3666,11 +3395,11 @@ }, "devshell_8": { "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", "owner": "numtide", "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { @@ -3681,11 +3410,11 @@ }, "devshell_9": { "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", "owner": "numtide", "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { @@ -3861,35 +3590,6 @@ } }, "dmerge_6": { - "inputs": { - "nixlib": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-node-plutip", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_7": { "inputs": { "nixlib": [ "db-sync", @@ -3920,7 +3620,7 @@ "type": "github" } }, - "dmerge_8": { + "dmerge_7": { "inputs": { "nixlib": [ "db-sync", @@ -3951,9 +3651,9 @@ }, "driver": { "inputs": { - "devshell": "devshell_15", + "devshell": "devshell_14", "inclusive": "inclusive_7", - "nix": "nix_13", + "nix": "nix_12", "nixpkgs": [ "db-sync", "cardano-world", @@ -3961,7 +3661,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_20" + "utils": "utils_18" }, "locked": { "lastModified": 1644418487, @@ -4041,27 +3741,11 @@ "type": "github" } }, - "em_4": { - "flake": false, - "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", - "type": "github" - }, - "original": { - "owner": "deepfire", - "repo": "em", - "type": "github" - } - }, "ema": { "inputs": { - "flake-compat": "flake-compat_24", - "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_91", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_84", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -4100,7 +3784,7 @@ "ema": "ema_2", "flake-parts": "flake-parts_6", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_94", + "nixpkgs": "nixpkgs_87", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -4177,21 +3861,6 @@ "type": "github" } }, - "empty-flake_5": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, "fenix": { "inputs": { "nixpkgs": [ @@ -4258,7 +3927,7 @@ }, "fenix_4": { "inputs": { - "nixpkgs": "nixpkgs_50", + "nixpkgs": "nixpkgs_43", "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { @@ -4303,7 +3972,7 @@ }, "fenix_6": { "inputs": { - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_56", "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { @@ -4346,7 +4015,7 @@ }, "fenix_8": { "inputs": { - "nixpkgs": "nixpkgs_79", + "nixpkgs": "nixpkgs_72", "rust-analyzer-src": "rust-analyzer-src_8" }, "locked": { @@ -4539,16 +4208,15 @@ "flake-compat_18": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -4556,16 +4224,15 @@ "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -4588,54 +4255,6 @@ } }, "flake-compat_20": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_21": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_22": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_23": { "flake": false, "locked": { "lastModified": 1627913399, @@ -4651,7 +4270,7 @@ "type": "github" } }, - "flake-compat_24": { + "flake-compat_21": { "flake": false, "locked": { "lastModified": 1641205782, @@ -4667,7 +4286,7 @@ "type": "github" } }, - "flake-compat_25": { + "flake-compat_22": { "flake": false, "locked": { "lastModified": 1635892615, @@ -4683,7 +4302,7 @@ "type": "github" } }, - "flake-compat_26": { + "flake-compat_23": { "flake": false, "locked": { "lastModified": 1650374568, @@ -4699,7 +4318,7 @@ "type": "github" } }, - "flake-compat_27": { + "flake-compat_24": { "flake": false, "locked": { "lastModified": 1647532380, @@ -4716,7 +4335,7 @@ "type": "github" } }, - "flake-compat_28": { + "flake-compat_25": { "flake": false, "locked": { "lastModified": 1696426674, @@ -4732,7 +4351,7 @@ "type": "github" } }, - "flake-compat_29": { + "flake-compat_26": { "flake": false, "locked": { "lastModified": 1672831974, @@ -4749,7 +4368,7 @@ "type": "github" } }, - "flake-compat_3": { + "flake-compat_27": { "flake": false, "locked": { "lastModified": 1673956053, @@ -4765,7 +4384,7 @@ "type": "github" } }, - "flake-compat_30": { + "flake-compat_3": { "flake": false, "locked": { "lastModified": 1673956053, @@ -4973,7 +4592,7 @@ }, "flake-parts_6": { "inputs": { - "nixpkgs": "nixpkgs_93" + "nixpkgs": "nixpkgs_86" }, "locked": { "lastModified": 1655570068, @@ -5240,11 +4859,11 @@ }, "flake-utils_22": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5255,27 +4874,26 @@ }, "flake-utils_23": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "flake-utils_24": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5286,11 +4904,11 @@ }, "flake-utils_25": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -5301,11 +4919,11 @@ }, "flake-utils_26": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -5346,11 +4964,11 @@ }, "flake-utils_29": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -5391,11 +5009,11 @@ }, "flake-utils_31": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -5406,11 +5024,11 @@ }, "flake-utils_32": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -5421,11 +5039,11 @@ }, "flake-utils_33": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { @@ -5436,11 +5054,11 @@ }, "flake-utils_34": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5451,11 +5069,11 @@ }, "flake-utils_35": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5466,11 +5084,11 @@ }, "flake-utils_36": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -5496,11 +5114,11 @@ }, "flake-utils_38": { "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -5511,11 +5129,11 @@ }, "flake-utils_39": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { @@ -5541,26 +5159,27 @@ }, "flake-utils_40": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { "owner": "numtide", + "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_41": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -5586,11 +5205,11 @@ }, "flake-utils_43": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -5601,11 +5220,11 @@ }, "flake-utils_44": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -5616,27 +5235,26 @@ }, "flake-utils_45": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { "owner": "numtide", - "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_46": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -5647,11 +5265,11 @@ }, "flake-utils_47": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -5675,21 +5293,6 @@ "type": "github" } }, - "flake-utils_49": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "flake-utils_5": { "locked": { "lastModified": 1679360468, @@ -5706,13 +5309,13 @@ "type": "github" } }, - "flake-utils_50": { + "flake-utils_6": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -5721,13 +5324,13 @@ "type": "github" } }, - "flake-utils_51": { + "flake-utils_7": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -5736,13 +5339,13 @@ "type": "github" } }, - "flake-utils_52": { + "flake-utils_8": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -5751,13 +5354,13 @@ "type": "github" } }, - "flake-utils_53": { + "flake-utils_9": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -5766,68 +5369,8 @@ "type": "github" } }, - "flake-utils_6": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_7": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_8": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_9": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flakeCompat": { - "flake": false, + "flakeCompat": { + "flake": false, "locked": { "lastModified": 1641205782, "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", @@ -5844,7 +5387,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_16", + "devshell": "devshell_15", "inclusive": "inclusive_8", "nixpkgs": [ "db-sync", @@ -5853,7 +5396,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_21" + "utils": "utils_19" }, "locked": { "lastModified": 1642008295, @@ -5903,23 +5446,6 @@ "type": "github" } }, - "ghc-8.6.5-iohk_11": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, "ghc-8.6.5-iohk_2": { "flake": false, "locked": { @@ -6283,25 +5809,6 @@ "type": "github" } }, - "gomod2nix_4": { - "inputs": { - "nixpkgs": "nixpkgs_42", - "utils": "utils_8" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, "hackage": { "flake": false, "locked": { @@ -6398,22 +5905,6 @@ "type": "github" } }, - "hackageNix_5": { - "flake": false, - "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, "hackage_2": { "flake": false, "locked": { @@ -6547,15 +6038,15 @@ }, "haskell-nix_2": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_37", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_7", + "hpc-coveralls": "hpc-coveralls_6", "nix-tools": "nix-tools", "nixpkgs": [ "db-sync", @@ -6565,9 +6056,9 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", "nixpkgs-unstable": [ "db-sync", "cardano-world", @@ -6575,8 +6066,8 @@ "cicero", "nixpkgs" ], - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_6" + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" }, "locked": { "lastModified": 1646097976, @@ -6594,20 +6085,20 @@ }, "haskell-nix_3": { "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_48", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_43", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", "hackage": [ "db-sync", "cardano-world", "hackage" ], - "hpc-coveralls": "hpc-coveralls_9", - "hydra": "hydra_11", + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", "nix-tools": "nix-tools_3", "nixpkgs": [ "db-sync", @@ -6615,13 +6106,13 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-2205": "nixpkgs-2205_7", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_8" + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" }, "locked": { "lastModified": 1659439444, @@ -6639,19 +6130,19 @@ }, "haskell-nix_4": { "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_29", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", "ghc910X": "ghc910X_2", "ghc911": "ghc911_2", "hackage": [ "hackage-nix" ], - "hls-1.10": "hls-1.10_7", + "hls-1.10": "hls-1.10_6", "hls-2.0": "hls-2.0_5", "hls-2.2": "hls-2.2_4", "hls-2.3": "hls-2.3_4", @@ -6660,22 +6151,22 @@ "hls-2.6": "hls-2.6_2", "hls-2.7": "hls-2.7", "hls-2.8": "hls-2.8", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_13", - "iserv-proxy": "iserv-proxy_7", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", "nixpkgs": [ "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_8", - "nixpkgs-2211": "nixpkgs-2211_7", + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", "nixpkgs-2305": "nixpkgs-2305_5", "nixpkgs-2311": "nixpkgs-2311_2", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_10" + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" }, "locked": { "lastModified": 1718844631, @@ -6901,61 +6392,16 @@ }, "haskellNix_5": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_19", - "flake-utils": "flake-utils_23", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": [ - "cardano-node-plutip", - "hackageNix" - ], - "hls-1.10": "hls-1.10_6", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_6", - "iserv-proxy": "iserv-proxy_6", - "nixpkgs": [ - "cardano-node-plutip", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-2211": "nixpkgs-2211_6", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_5" - }, - "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_47", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", "nix-tools": "nix-tools_2", "nixpkgs": [ "db-sync", @@ -6963,12 +6409,12 @@ "cardano-wallet", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_7" + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" }, "locked": { "lastModified": 1655369909, @@ -6984,30 +6430,30 @@ "type": "github" } }, - "haskellNix_7": { + "haskellNix_6": { "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-utils": "flake-utils_53", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_48", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_12", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", "nix-tools": "nix-tools_4", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_9" + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" }, "locked": { "lastModified": 1650936156, @@ -7090,7 +6536,7 @@ "hercules-ci-effects_2": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_107" + "nixpkgs": "nixpkgs_100" }, "locked": { "lastModified": 1718018037, @@ -7208,23 +6654,6 @@ "type": "github" } }, - "hls-1.10_7": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, "hls-2.0": { "flake": false, "locked": { @@ -7648,22 +7077,6 @@ "type": "github" } }, - "hpc-coveralls_11": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, "hpc-coveralls_2": { "flake": false, "locked": { @@ -7824,8 +7237,7 @@ "nixpkgs": [ "db-sync", "cardano-world", - "cardano-wallet", - "haskellNix", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -7849,8 +7261,7 @@ "nix": "nix_19", "nixpkgs": [ "db-sync", - "cardano-world", - "haskell-nix", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -7872,30 +7283,6 @@ "hydra_12": { "inputs": { "nix": "nix_20", - "nixpkgs": [ - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_13": { - "inputs": { - "nix": "nix_21", "nixpkgs": [ "haskell-nix", "hydra", @@ -8016,30 +7403,6 @@ } }, "hydra_6": { - "inputs": { - "nix": "nix_7", - "nixpkgs": [ - "cardano-node-plutip", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_7": { "inputs": { "nix": [ "db-sync", @@ -8073,7 +7436,7 @@ "type": "github" } }, - "hydra_8": { + "hydra_7": { "inputs": { "nix": [ "db-sync", @@ -8103,7 +7466,7 @@ "type": "github" } }, - "hydra_9": { + "hydra_8": { "inputs": { "nix": [ "db-sync", @@ -8135,6 +7498,32 @@ "type": "github" } }, + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, "incl": { "inputs": { "nixlib": [ @@ -8255,29 +7644,6 @@ "type": "github" } }, - "incl_6": { - "inputs": { - "nixlib": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, "inclusive": { "inputs": { "stdlib": "stdlib" @@ -8515,10 +7881,10 @@ }, "iogo": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_9", "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_59", - "utils": "utils_15" + "nixpkgs": "nixpkgs_52", + "utils": "utils_13" }, "locked": { "lastModified": 1652212694, @@ -8536,10 +7902,10 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_20", + "devshell": "devshell_19", "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_88", - "utils": "utils_29" + "nixpkgs": "nixpkgs_81", + "utils": "utils_27" }, "locked": { "lastModified": 1658302707, @@ -8622,12 +7988,12 @@ }, "iohk-nix_3": { "inputs": { - "blst": "blst_8", + "blst": "blst_7", "nixpkgs": [ "nixpkgs" ], - "secp256k1": "secp256k1_8", - "sodium": "sodium_8" + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" }, "locked": { "lastModified": 1715898223, @@ -8743,30 +8109,6 @@ } }, "iohkNix_5": { - "inputs": { - "blst": "blst_7", - "nixpkgs": [ - "cardano-node-plutip", - "nixpkgs" - ], - "secp256k1": "secp256k1_7", - "sodium": "sodium_7" - }, - "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -8789,7 +8131,7 @@ "type": "github" } }, - "iohkNix_7": { + "iohkNix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -8896,23 +8238,6 @@ } }, "iserv-proxy_6": { - "flake": false, - "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_7": { "flake": false, "locked": { "lastModified": 1717479972, @@ -9026,22 +8351,6 @@ } }, "lowdown-src_15": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_16": { "flake": false, "locked": { "lastModified": 1598695561, @@ -9057,7 +8366,7 @@ "type": "github" } }, - "lowdown-src_17": { + "lowdown-src_16": { "flake": false, "locked": { "lastModified": 1633514407, @@ -9073,7 +8382,7 @@ "type": "github" } }, - "lowdown-src_18": { + "lowdown-src_17": { "flake": false, "locked": { "lastModified": 1633514407, @@ -9089,7 +8398,7 @@ "type": "github" } }, - "lowdown-src_19": { + "lowdown-src_18": { "flake": false, "locked": { "lastModified": 1633514407, @@ -9105,7 +8414,7 @@ "type": "github" } }, - "lowdown-src_2": { + "lowdown-src_19": { "flake": false, "locked": { "lastModified": 1633514407, @@ -9121,7 +8430,7 @@ "type": "github" } }, - "lowdown-src_20": { + "lowdown-src_2": { "flake": false, "locked": { "lastModified": 1633514407, @@ -9137,7 +8446,7 @@ "type": "github" } }, - "lowdown-src_21": { + "lowdown-src_20": { "flake": false, "locked": { "lastModified": 1633514407, @@ -9236,11 +8545,11 @@ "lowdown-src_8": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { @@ -9252,11 +8561,11 @@ "lowdown-src_9": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { @@ -9450,37 +8759,8 @@ }, "n2c_6": { "inputs": { - "flake-utils": [ - "cardano-node-plutip", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_7": { - "inputs": { - "flake-utils": "flake-utils_32", - "nixpkgs": "nixpkgs_64" + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_57" }, "locked": { "lastModified": 1650568002, @@ -9496,10 +8776,10 @@ "type": "github" } }, - "n2c_8": { + "n2c_7": { "inputs": { - "flake-utils": "flake-utils_49", - "nixpkgs": "nixpkgs_99" + "flake-utils": "flake-utils_44", + "nixpkgs": "nixpkgs_92" }, "locked": { "lastModified": 1655533513, @@ -9538,7 +8818,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_17", + "devshell": "devshell_16", "inclusive": [ "db-sync", "cardano-world", @@ -9553,7 +8833,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_22" + "utils": "utils_20" }, "locked": { "lastModified": 1644317729, @@ -9704,41 +8984,6 @@ "type": "github" } }, - "nix-nomad_4": { - "inputs": { - "flake-compat": "flake-compat_20", - "flake-utils": [ - "cardano-node-plutip", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_4", - "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-node-plutip", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, "nix-tools": { "flake": false, "locked": { @@ -9919,46 +9164,8 @@ }, "nix2container_7": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_41" - }, - "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_8": { - "inputs": { - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_43" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_9": { - "inputs": { - "flake-utils": "flake-utils_51", - "nixpkgs": "nixpkgs_102" + "flake-utils": "flake-utils_46", + "nixpkgs": "nixpkgs_95" }, "locked": { "lastModified": 1653427219, @@ -9978,29 +9185,9 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_55", + "nixpkgs": "nixpkgs_58", "nixpkgs-regression": "nixpkgs-regression_9" }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_65", - "nixpkgs-regression": "nixpkgs-regression_10" - }, "locked": { "lastModified": 1652510778, "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", @@ -10016,11 +9203,11 @@ "type": "github" } }, - "nix_12": { + "nix_11": { "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_67", - "nixpkgs-regression": "nixpkgs-regression_11" + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_60", + "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { "lastModified": 1645189081, @@ -10036,11 +9223,11 @@ "type": "github" } }, - "nix_13": { + "nix_12": { "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_74", - "nixpkgs-regression": "nixpkgs-regression_12" + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_67", + "nixpkgs-regression": "nixpkgs-regression_11" }, "locked": { "lastModified": 1644413094, @@ -10057,11 +9244,11 @@ "type": "github" } }, - "nix_14": { + "nix_13": { "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_75", - "nixpkgs-regression": "nixpkgs-regression_13" + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { "lastModified": 1645437800, @@ -10078,11 +9265,11 @@ "type": "github" } }, - "nix_15": { + "nix_14": { "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_80", - "nixpkgs-regression": "nixpkgs-regression_14" + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_73", + "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { "lastModified": 1646164353, @@ -10099,10 +9286,10 @@ "type": "github" } }, - "nix_16": { + "nix_15": { "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_82" + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_75" }, "locked": { "lastModified": 1604400356, @@ -10118,11 +9305,11 @@ "type": "github" } }, - "nix_17": { + "nix_16": { "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_84", - "nixpkgs-regression": "nixpkgs-regression_15" + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_77", + "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { "lastModified": 1645189081, @@ -10138,10 +9325,31 @@ "type": "github" } }, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_89", + "nixpkgs-regression": "nixpkgs-regression_15" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, "nix_18": { "inputs": { "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_96", + "nixpkgs": "nixpkgs_91", "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { @@ -10205,30 +9413,9 @@ "nix_20": { "inputs": { "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_105", + "nixpkgs": "nixpkgs_99", "nixpkgs-regression": "nixpkgs-regression_18" }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_21": { - "inputs": { - "lowdown-src": "lowdown-src_21", - "nixpkgs": "nixpkgs_106", - "nixpkgs-regression": "nixpkgs-regression_19" - }, "locked": { "lastModified": 1661606874, "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", @@ -10331,20 +9518,20 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_40", + "nixpkgs": "nixpkgs_44", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", "repo": "nix", "type": "github" } @@ -10352,20 +9539,18 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_51", - "nixpkgs-regression": "nixpkgs-regression_8" + "nixpkgs": "nixpkgs_46" }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", + "owner": "NixOS", "repo": "nix", "type": "github" } @@ -10373,18 +9558,19 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_53" + "nixpkgs": "nixpkgs_48", + "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "repo": "nix", "type": "github" } @@ -10606,52 +9792,17 @@ "nixago_6": { "inputs": { "flake-utils": [ - "cardano-node-plutip", - "tullia", + "db-sync", + "cardano-world", + "bitte", "std", "flake-utils" ], - "nixago-exts": [ - "cardano-node-plutip", - "tullia", - "std", - "blank" - ], + "nixago-exts": "nixago-exts", "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_7": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", + "db-sync", + "cardano-world", + "bitte", "std", "nixpkgs" ] @@ -10670,7 +9821,7 @@ "type": "github" } }, - "nixago_8": { + "nixago_7": { "inputs": { "flake-utils": [ "db-sync", @@ -10793,22 +9944,6 @@ "type": "github" } }, - "nixpkgs-2003_11": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2003_2": { "locked": { "lastModified": 1620055814, @@ -10954,22 +10089,6 @@ } }, "nixpkgs-2105_10": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_11": { "locked": { "lastModified": 1659914493, "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", @@ -11050,22 +10169,6 @@ } }, "nixpkgs-2105_6": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_7": { "locked": { "lastModified": 1642244250, "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", @@ -11081,7 +10184,7 @@ "type": "github" } }, - "nixpkgs-2105_8": { + "nixpkgs-2105_7": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -11097,7 +10200,7 @@ "type": "github" } }, - "nixpkgs-2105_9": { + "nixpkgs-2105_8": { "locked": { "lastModified": 1655034179, "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", @@ -11113,29 +10216,29 @@ "type": "github" } }, - "nixpkgs-2111": { + "nixpkgs-2105_9": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_10": { + "nixpkgs-2111": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -11145,7 +10248,7 @@ "type": "github" } }, - "nixpkgs-2111_11": { + "nixpkgs-2111_10": { "locked": { "lastModified": 1659446231, "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", @@ -11227,11 +10330,11 @@ }, "nixpkgs-2111_6": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { @@ -11243,11 +10346,11 @@ }, "nixpkgs-2111_7": { "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -11259,11 +10362,11 @@ }, "nixpkgs-2111_8": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { @@ -11275,11 +10378,11 @@ }, "nixpkgs-2111_9": { "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -11370,22 +10473,6 @@ } }, "nixpkgs-2205_6": { - "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_7": { "locked": { "lastModified": 1657876628, "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", @@ -11401,7 +10488,7 @@ "type": "github" } }, - "nixpkgs-2205_8": { + "nixpkgs-2205_7": { "locked": { "lastModified": 1685573264, "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", @@ -11498,22 +10585,6 @@ } }, "nixpkgs-2211_6": { - "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_7": { "locked": { "lastModified": 1688392541, "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", @@ -11878,21 +10949,6 @@ } }, "nixpkgs-regression_18": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_19": { "locked": { "lastModified": 1643052045, "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", @@ -11998,10 +11054,9 @@ "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "id": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" + "type": "indirect" } }, "nixpkgs-regression_8": { @@ -12067,22 +11122,6 @@ } }, "nixpkgs-unstable_10": { - "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_11": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -12098,7 +11137,7 @@ "type": "github" } }, - "nixpkgs-unstable_12": { + "nixpkgs-unstable_11": { "locked": { "lastModified": 1657888067, "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", @@ -12114,7 +11153,7 @@ "type": "github" } }, - "nixpkgs-unstable_13": { + "nixpkgs-unstable_12": { "locked": { "lastModified": 1648219316, "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", @@ -12130,7 +11169,7 @@ "type": "github" } }, - "nixpkgs-unstable_14": { + "nixpkgs-unstable_13": { "locked": { "lastModified": 1694822471, "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", @@ -12228,15 +11267,15 @@ }, "nixpkgs-unstable_7": { "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -12244,11 +11283,11 @@ }, "nixpkgs-unstable_8": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { @@ -12260,11 +11299,11 @@ }, "nixpkgs-unstable_9": { "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { @@ -12292,166 +11331,56 @@ }, "nixpkgs_100": { "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_101": { + "nixpkgs_11": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_102": { + "nixpkgs_12": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_103": { + "nixpkgs_13": { "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_104": { - "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_105": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_106": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_107": { - "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1675249806, - "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_12": { - "locked": { - "lastModified": 1636823747, - "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", "repo": "nixpkgs", "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" @@ -12883,11 +11812,11 @@ }, "nixpkgs_39": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { @@ -12913,153 +11842,154 @@ }, "nixpkgs_40": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_41": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nixpkgs_42": { "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_43": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_44": { "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, "nixpkgs_45": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, "nixpkgs_46": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-20.09-small", "type": "indirect" } }, "nixpkgs_47": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_48": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, "nixpkgs_49": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -13083,194 +12013,69 @@ }, "nixpkgs_50": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", "owner": "nixos", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_51": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_52": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, "nixpkgs_53": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_54": { - "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_55": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_56": { - "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_57": { - "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_58": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_59": { - "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { - "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_61": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -13286,7 +12091,7 @@ "type": "github" } }, - "nixpkgs_62": { + "nixpkgs_55": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -13301,7 +12106,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_56": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -13317,7 +12122,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_57": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -13332,7 +12137,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_58": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -13347,7 +12152,7 @@ "type": "indirect" } }, - "nixpkgs_66": { + "nixpkgs_59": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -13363,7 +12168,23 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_6": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -13378,7 +12199,7 @@ "type": "indirect" } }, - "nixpkgs_68": { + "nixpkgs_61": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -13394,7 +12215,7 @@ "type": "github" } }, - "nixpkgs_69": { + "nixpkgs_62": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -13410,23 +12231,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_63": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -13442,7 +12247,7 @@ "type": "github" } }, - "nixpkgs_71": { + "nixpkgs_64": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -13458,7 +12263,7 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_65": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -13474,7 +12279,7 @@ "type": "github" } }, - "nixpkgs_73": { + "nixpkgs_66": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -13490,7 +12295,7 @@ "type": "github" } }, - "nixpkgs_74": { + "nixpkgs_67": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -13505,7 +12310,7 @@ "type": "indirect" } }, - "nixpkgs_75": { + "nixpkgs_68": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -13520,7 +12325,7 @@ "type": "indirect" } }, - "nixpkgs_76": { + "nixpkgs_69": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -13536,7 +12341,23 @@ "type": "github" } }, - "nixpkgs_77": { + "nixpkgs_7": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -13550,7 +12371,7 @@ "type": "indirect" } }, - "nixpkgs_78": { + "nixpkgs_71": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -13566,7 +12387,7 @@ "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_72": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -13582,23 +12403,7 @@ "type": "github" } }, - "nixpkgs_8": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_80": { + "nixpkgs_73": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -13613,7 +12418,7 @@ "type": "indirect" } }, - "nixpkgs_81": { + "nixpkgs_74": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -13629,7 +12434,7 @@ "type": "github" } }, - "nixpkgs_82": { + "nixpkgs_75": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -13644,7 +12449,7 @@ "type": "indirect" } }, - "nixpkgs_83": { + "nixpkgs_76": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -13660,7 +12465,7 @@ "type": "github" } }, - "nixpkgs_84": { + "nixpkgs_77": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -13675,7 +12480,7 @@ "type": "indirect" } }, - "nixpkgs_85": { + "nixpkgs_78": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -13691,7 +12496,7 @@ "type": "github" } }, - "nixpkgs_86": { + "nixpkgs_79": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -13707,7 +12512,23 @@ "type": "github" } }, - "nixpkgs_87": { + "nixpkgs_8": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_80": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -13723,7 +12544,7 @@ "type": "github" } }, - "nixpkgs_88": { + "nixpkgs_81": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -13739,7 +12560,7 @@ "type": "github" } }, - "nixpkgs_89": { + "nixpkgs_82": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -13755,23 +12576,7 @@ "type": "github" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_90": { + "nixpkgs_83": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -13787,7 +12592,7 @@ "type": "github" } }, - "nixpkgs_91": { + "nixpkgs_84": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -13803,7 +12608,7 @@ "type": "github" } }, - "nixpkgs_92": { + "nixpkgs_85": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -13817,7 +12622,7 @@ "type": "indirect" } }, - "nixpkgs_93": { + "nixpkgs_86": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -13833,61 +12638,186 @@ "type": "github" } }, - "nixpkgs_94": { + "nixpkgs_87": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_88": { + "locked": { + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_89": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_90": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_91": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_92": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_93": { + "locked": { + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_94": { + "locked": { + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_95": { "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_96": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_97": { "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, @@ -13908,24 +12838,25 @@ }, "nixpkgs_99": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nomad": { "inputs": { - "nix": "nix_9", - "nixpkgs": "nixpkgs_54", - "utils": "utils_11" + "nix": "nix_8", + "nixpkgs": "nixpkgs_47", + "utils": "utils_9" }, "locked": { "lastModified": 1648128770, @@ -13944,11 +12875,11 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_8", + "devshell": "devshell_7", "inclusive": "inclusive_2", - "nix": "nix_10", - "nixpkgs": "nixpkgs_56", - "utils": "utils_12" + "nix": "nix_9", + "nixpkgs": "nixpkgs_49", + "utils": "utils_10" }, "locked": { "lastModified": 1648029666, @@ -13966,11 +12897,11 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_10", "inclusive": "inclusive_5", - "nix": "nix_12", - "nixpkgs": "nixpkgs_68", - "utils": "utils_17" + "nix": "nix_11", + "nixpkgs": "nixpkgs_61", + "utils": "utils_15" }, "locked": { "lastModified": 1648029666, @@ -13988,11 +12919,11 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_18", + "devshell": "devshell_17", "inclusive": "inclusive_10", - "nix": "nix_17", - "nixpkgs": "nixpkgs_85", - "utils": "utils_26" + "nix": "nix_16", + "nixpkgs": "nixpkgs_78", + "utils": "utils_24" }, "locked": { "lastModified": 1648029666, @@ -14010,10 +12941,10 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_9", + "devshell": "devshell_8", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_57", - "utils": "utils_13" + "nixpkgs": "nixpkgs_50", + "utils": "utils_11" }, "locked": { "lastModified": 1649836589, @@ -14031,10 +12962,10 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_11", "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_69", - "utils": "utils_18" + "nixpkgs": "nixpkgs_62", + "utils": "utils_16" }, "locked": { "lastModified": 1658244176, @@ -14052,10 +12983,10 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_19", + "devshell": "devshell_18", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_86", - "utils": "utils_27" + "nixpkgs": "nixpkgs_79", + "utils": "utils_25" }, "locked": { "lastModified": 1649836589, @@ -14073,9 +13004,9 @@ }, "nomad_2": { "inputs": { - "nix": "nix_16", - "nixpkgs": "nixpkgs_83", - "utils": "utils_25" + "nix": "nix_15", + "nixpkgs": "nixpkgs_76", + "utils": "utils_23" }, "locked": { "lastModified": 1648128770, @@ -14167,21 +13098,6 @@ "type": "github" } }, - "nosys_6": { - "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, "offchain-metadata-tools-service": { "flake": false, "locked": { @@ -14267,23 +13183,6 @@ "type": "github" } }, - "old-ghc-nix_11": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, "old-ghc-nix_2": { "flake": false, "locked": { @@ -14469,22 +13368,6 @@ } }, "ops-lib_4": { - "flake": false, - "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_5": { "flake": false, "locked": { "lastModified": 1649848729, @@ -14500,7 +13383,7 @@ "type": "github" } }, - "ops-lib_6": { + "ops-lib_5": { "flake": false, "locked": { "lastModified": 1649848729, @@ -14516,7 +13399,7 @@ "type": "github" } }, - "ops-lib_7": { + "ops-lib_6": { "flake": false, "locked": { "lastModified": 1649848729, @@ -14885,11 +13768,11 @@ }, "plutip": { "inputs": { - "CHaP": "CHaP_7", + "CHaP": "CHaP_6", "cardano-node": [ - "cardano-node-plutip" + "cardano-node" ], - "flake-compat": "flake-compat_30", + "flake-compat": "flake-compat_27", "hackage-nix": [ "hackage-nix" ], @@ -14920,7 +13803,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_38", + "flake-utils": "flake-utils_33", "nixpkgs": [ "db-sync", "cardano-world", @@ -14946,8 +13829,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_44", - "nixpkgs": "nixpkgs_92" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_85" }, "locked": { "lastModified": 1639823344, @@ -14993,8 +13876,8 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_29", - "nixpkgs": "nixpkgs_58", + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_51", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -15014,8 +13897,8 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_31", - "nixpkgs": "nixpkgs_61", + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_54", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -15035,8 +13918,8 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_33", - "nixpkgs": "nixpkgs_70", + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_63", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -15056,8 +13939,8 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_40", - "nixpkgs": "nixpkgs_87", + "flake-utils": "flake-utils_35", + "nixpkgs": "nixpkgs_80", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -15077,8 +13960,8 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_42", - "nixpkgs": "nixpkgs_90", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_83", "rust-overlay": "rust-overlay_7" }, "locked": { @@ -15102,10 +13985,9 @@ "cardano-configurations": "cardano-configurations", "cardano-nix": "cardano-nix", "cardano-node": "cardano-node", - "cardano-node-plutip": "cardano-node-plutip", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_28", + "flake-compat": "flake-compat_25", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_4", "hercules-ci-effects": "hercules-ci-effects_2", @@ -15617,23 +14499,6 @@ "type": "github" } }, - "secp256k1_8": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, "sodium": { "flake": false, "locked": { @@ -15753,23 +14618,6 @@ "type": "github" } }, - "sodium_8": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, "sops-nix": { "inputs": { "nixpkgs": "nixpkgs_10", @@ -15821,22 +14669,6 @@ "type": "github" } }, - "stackage_10": { - "flake": false, - "locked": { - "lastModified": 1718842995, - "narHash": "sha256-z1ETU1nJoTUpK7BcdSYuYph6njhJJR8hTZ197lzXX3E=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "b224b7d7461de53fcf700bb14bde43d6efa2ee3b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, "stackage_2": { "flake": false, "locked": { @@ -15888,11 +14720,11 @@ "stackage_5": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { @@ -15904,11 +14736,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { @@ -15920,11 +14752,11 @@ "stackage_7": { "flake": false, "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { @@ -15936,11 +14768,11 @@ "stackage_8": { "flake": false, "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { @@ -15952,11 +14784,11 @@ "stackage_9": { "flake": false, "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "lastModified": 1718842995, + "narHash": "sha256-z1ETU1nJoTUpK7BcdSYuYph6njhJJR8hTZ197lzXX3E=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "rev": "b224b7d7461de53fcf700bb14bde43d6efa2ee3b", "type": "github" }, "original": { @@ -16228,58 +15060,13 @@ }, "std_6": { "inputs": { - "arion": [ - "cardano-node-plutip", - "tullia", - "std", - "blank" - ], - "blank": "blank_6", - "devshell": "devshell_7", + "devshell": "devshell_12", "dmerge": "dmerge_6", - "flake-utils": "flake-utils_26", - "incl": "incl_6", - "makes": [ - "cardano-node-plutip", - "tullia", - "std", - "blank" - ], - "microvm": [ - "cardano-node-plutip", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_6", - "nixago": "nixago_6", - "nixpkgs": "nixpkgs_45", - "nosys": "nosys_6", - "yants": "yants_6" - }, - "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", - "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_7": { - "inputs": { - "devshell": "devshell_13", - "dmerge": "dmerge_7", - "flake-utils": "flake-utils_34", + "flake-utils": "flake-utils_29", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago_7", - "nixpkgs": "nixpkgs_71", - "yants": "yants_8" + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_64", + "yants": "yants_7" }, "locked": { "lastModified": 1661370377, @@ -16295,15 +15082,15 @@ "type": "github" } }, - "std_8": { + "std_7": { "inputs": { - "devshell": "devshell_21", - "dmerge": "dmerge_8", - "flake-utils": "flake-utils_50", + "devshell": "devshell_20", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_45", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_8", - "nixpkgs": "nixpkgs_101", - "yants": "yants_10" + "nixago": "nixago_7", + "nixpkgs": "nixpkgs_94", + "yants": "yants_9" }, "locked": { "lastModified": 1661367957, @@ -16319,11 +15106,11 @@ "type": "github" } }, - "std_9": { + "std_8": { "inputs": { - "devshell": "devshell_22", - "nixpkgs": "nixpkgs_104", - "yants": "yants_11" + "devshell": "devshell_21", + "nixpkgs": "nixpkgs_97", + "yants": "yants_10" }, "locked": { "lastModified": 1652784712, @@ -16596,8 +15383,8 @@ }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_45", - "nixpkgs": "nixpkgs_95" + "flake-utils": "flake-utils_40", + "nixpkgs": "nixpkgs_88" }, "locked": { "lastModified": 1654211622, @@ -16718,7 +15505,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_30", + "flake-utils": "flake-utils_25", "nixpkgs": [ "db-sync", "cardano-world", @@ -16747,7 +15534,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_35", + "flake-utils": "flake-utils_30", "nixpkgs": [ "db-sync", "cardano-world", @@ -16774,7 +15561,7 @@ "inputs": { "bats-assert": "bats-assert_4", "bats-support": "bats-support_4", - "flake-utils": "flake-utils_41", + "flake-utils": "flake-utils_36", "nixpkgs": [ "db-sync", "cardano-world", @@ -16934,30 +15721,9 @@ }, "tullia_4": { "inputs": { - "nix-nomad": "nix-nomad_4", - "nix2container": "nix2container_8", - "nixpkgs": "nixpkgs_44", - "std": "std_6" - }, - "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_5": { - "inputs": { - "nix2container": "nix2container_9", - "nixpkgs": "nixpkgs_103", - "std": "std_9" + "nix2container": "nix2container_7", + "nixpkgs": "nixpkgs_96", + "std": "std_8" }, "locked": { "lastModified": 1657811465, @@ -16992,36 +15758,6 @@ } }, "utils_10": { - "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_11": { - "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_12": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17036,7 +15772,7 @@ "type": "github" } }, - "utils_13": { + "utils_11": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17051,7 +15787,7 @@ "type": "github" } }, - "utils_14": { + "utils_12": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -17066,7 +15802,7 @@ "type": "github" } }, - "utils_15": { + "utils_13": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17081,7 +15817,7 @@ "type": "github" } }, - "utils_16": { + "utils_14": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -17096,7 +15832,7 @@ "type": "github" } }, - "utils_17": { + "utils_15": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17111,7 +15847,7 @@ "type": "github" } }, - "utils_18": { + "utils_16": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17126,7 +15862,7 @@ "type": "github" } }, - "utils_19": { + "utils_17": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -17141,22 +15877,22 @@ "type": "github" } }, - "utils_2": { + "utils_18": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_20": { + "utils_19": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17171,22 +15907,22 @@ "type": "github" } }, - "utils_21": { + "utils_2": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, - "utils_22": { + "utils_20": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17201,7 +15937,7 @@ "type": "github" } }, - "utils_23": { + "utils_21": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -17216,7 +15952,7 @@ "type": "github" } }, - "utils_24": { + "utils_22": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -17231,7 +15967,7 @@ "type": "github" } }, - "utils_25": { + "utils_23": { "locked": { "lastModified": 1601282935, "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", @@ -17246,7 +15982,7 @@ "type": "github" } }, - "utils_26": { + "utils_24": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17261,7 +15997,7 @@ "type": "github" } }, - "utils_27": { + "utils_25": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17276,7 +16012,7 @@ "type": "github" } }, - "utils_28": { + "utils_26": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -17291,7 +16027,7 @@ "type": "github" } }, - "utils_29": { + "utils_27": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -17306,13 +16042,13 @@ "type": "github" } }, - "utils_3": { + "utils_28": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -17321,13 +16057,13 @@ "type": "github" } }, - "utils_30": { + "utils_3": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -17398,11 +16134,11 @@ }, "utils_8": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -17413,11 +16149,11 @@ }, "utils_9": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -17485,29 +16221,6 @@ } }, "yants_10": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", - "owner": "divnix", - "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_11": { "inputs": { "nixpkgs": [ "db-sync", @@ -17629,19 +16342,14 @@ }, "yants_6": { "inputs": { - "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_55" }, "locked": { - "lastModified": 1667096281, - "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", "owner": "divnix", "repo": "yants", - "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", "type": "github" }, "original": { @@ -17652,7 +16360,13 @@ }, "yants_7": { "inputs": { - "nixpkgs": "nixpkgs_62" + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, @@ -17670,13 +16384,7 @@ }, "yants_8": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_90" }, "locked": { "lastModified": 1645126146, @@ -17694,7 +16402,12 @@ }, "yants_9": { "inputs": { - "nixpkgs": "nixpkgs_97" + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, diff --git a/flake.nix b/flake.nix index cd6631c44..673cb1c3b 100644 --- a/flake.nix +++ b/flake.nix @@ -34,9 +34,6 @@ cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-sancho"; - # TODO: Replace Plutip with cardano-testnet and remove this input - cardano-node-plutip.url = "github:IntersectMBO/cardano-node/8.1.1"; - # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { @@ -74,7 +71,7 @@ iohk-nix.follows = "iohk-nix"; haskell-nix.follows = "haskell-nix"; hackage-nix.follows = "hackage-nix"; - cardano-node.follows = "cardano-node-plutip"; + cardano-node.follows = "cardano-node"; }; }; @@ -258,9 +255,8 @@ in import ./plutip-server { inherit pkgs; - inherit (inputs) plutip CHaP; + inherit (inputs) plutip CHaP cardano-node; inherit (pkgs) system; - cardano-node = inputs.cardano-node-plutip; src = ./plutip-server; }; in From dca2e47fe3fbea1685223190d0d60632c142c752 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 20 Jun 2024 17:54:31 +0200 Subject: [PATCH 237/373] Fix unit tests --- packages.dhall | 2 +- spago-packages.nix | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages.dhall b/packages.dhall index 73c1f6223..951ca7a0e 100644 --- a/packages.dhall +++ b/packages.dhall @@ -372,7 +372,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v2.0.0" + , version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d" } , cardano-message-signing = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 2d53c79c4..62adad6e6 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -259,11 +259,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v2.0.0"; + version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "780c28ee27d0ba7e76884a565ad60dea0a414842"; - sha256 = "1my7fgk218h6yllw09zf1m55hpn787mjq79whxxm9lqgarrdp66z"; + rev = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; + sha256 = "04h78kivkm9nnz5pxjqvgsf7g9gfzzjn6crwj3lh1m7kxgb1yxds"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 4563ef9abc02dea7cc054d436f10b822e8541d7a Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 21 Jun 2024 14:49:32 +0200 Subject: [PATCH 238/373] Use nightly version of Kupo compatible with sancho node --- flake.lock | 34306 +++++++++++++++++++++-------- flake.nix | 20 +- nix/test-nixos-configuration.nix | 21 +- 3 files changed, 25486 insertions(+), 8861 deletions(-) diff --git a/flake.lock b/flake.lock index bd6bec67d..9fb3653d0 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,181 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1718835244, - "narHash": "sha256-HMjhDRE4H4ae+/I/ZLiRwG4+ceMQAmZLYmkS04AJrQ4=", + "lastModified": 1718896150, + "narHash": "sha256-tLldSak3ilawlFiAENbuTos0W+oZQGVc1sbkUfv1hko=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "e3afe42f8c3a0be8e8fb53602afd57f7839e040a", + "rev": "81a484da765cc302d10956134f455f9493c80d14", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_10": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_11": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_12": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_13": { + "flake": false, + "locked": { + "lastModified": 1714517469, + "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_14": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_15": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_16": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_17": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_18": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_19": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -34,6 +204,23 @@ "type": "github" } }, + "CHaP_20": { + "flake": false, + "locked": { + "lastModified": 1694601145, + "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "e8298604717dbaa311c1e42e021b571670f4b039", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, "CHaP_3": { "flake": false, "locked": { @@ -88,11 +275,62 @@ "CHaP_6": { "flake": false, "locked": { - "lastModified": 1694601145, - "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", + "lastModified": 1714517469, + "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "e8298604717dbaa311c1e42e021b571670f4b039", + "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_7": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_8": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_9": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -134,7 +372,7 @@ "type": "github" } }, - "HTTP_2": { + "HTTP_11": { "flake": false, "locked": { "lastModified": 1451647621, @@ -150,7 +388,7 @@ "type": "github" } }, - "HTTP_3": { + "HTTP_12": { "flake": false, "locked": { "lastModified": 1451647621, @@ -166,7 +404,7 @@ "type": "github" } }, - "HTTP_4": { + "HTTP_13": { "flake": false, "locked": { "lastModified": 1451647621, @@ -182,7 +420,7 @@ "type": "github" } }, - "HTTP_5": { + "HTTP_14": { "flake": false, "locked": { "lastModified": 1451647621, @@ -198,7 +436,7 @@ "type": "github" } }, - "HTTP_6": { + "HTTP_15": { "flake": false, "locked": { "lastModified": 1451647621, @@ -214,7 +452,7 @@ "type": "github" } }, - "HTTP_7": { + "HTTP_16": { "flake": false, "locked": { "lastModified": 1451647621, @@ -230,7 +468,7 @@ "type": "github" } }, - "HTTP_8": { + "HTTP_17": { "flake": false, "locked": { "lastModified": 1451647621, @@ -246,7 +484,7 @@ "type": "github" } }, - "HTTP_9": { + "HTTP_18": { "flake": false, "locked": { "lastModified": 1451647621, @@ -262,59 +500,299 @@ "type": "github" } }, - "agenix": { - "inputs": { - "nixpkgs": "nixpkgs_39" - }, + "HTTP_19": { + "flake": false, "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix-cli": { - "inputs": { - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_40" - }, + "HTTP_2": { + "flake": false, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "cole-h", - "repo": "agenix-cli", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix-cli_2": { - "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_42" - }, + "HTTP_20": { + "flake": false, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "cole-h", - "repo": "agenix-cli", + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_21": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_22": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_23": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_24": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_25": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_3": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_4": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_5": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_6": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_7": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_8": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_9": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "agenix": { + "inputs": { + "nixpkgs": "nixpkgs_39" + }, + "locked": { + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "type": "github" + }, + "original": { + "owner": "ryantm", + "repo": "agenix", + "type": "github" + } + }, + "agenix-cli": { + "inputs": { + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_40" + }, + "locked": { + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "type": "github" + }, + "original": { + "owner": "cole-h", + "repo": "agenix-cli", + "type": "github" + } + }, + "agenix-cli_2": { + "inputs": { + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_42" + }, + "locked": { + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "type": "github" + }, + "original": { + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, @@ -1025,24 +1503,24 @@ "type": "github" } }, - "blst_2": { + "blst_10": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", "owner": "supranational", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { "owner": "supranational", + "ref": "v0.3.11", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "blst_3": { + "blst_11": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1059,7 +1537,7 @@ "type": "github" } }, - "blst_4": { + "blst_12": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1076,10 +1554,231 @@ "type": "github" } }, - "blst_5": { + "blst_13": { "flake": false, "locked": { - "lastModified": 1656163412, + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_14": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_15": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_16": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_17": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_18": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_19": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_2": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_20": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_21": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_22": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_3": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_4": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_5": { + "flake": false, + "locked": { + "lastModified": 1656163412, "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", "owner": "supranational", "repo": "blst", @@ -1127,6 +1826,40 @@ "type": "github" } }, + "blst_8": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_9": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, "byron-chain": { "flake": false, "locked": { @@ -1177,7 +1910,7 @@ "type": "github" } }, - "cabal-32_2": { + "cabal-32_11": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1194,7 +1927,7 @@ "type": "github" } }, - "cabal-32_3": { + "cabal-32_12": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1211,7 +1944,7 @@ "type": "github" } }, - "cabal-32_4": { + "cabal-32_13": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1228,7 +1961,7 @@ "type": "github" } }, - "cabal-32_5": { + "cabal-32_14": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1245,7 +1978,7 @@ "type": "github" } }, - "cabal-32_6": { + "cabal-32_15": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1262,7 +1995,7 @@ "type": "github" } }, - "cabal-32_7": { + "cabal-32_16": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1279,7 +2012,7 @@ "type": "github" } }, - "cabal-32_8": { + "cabal-32_17": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1296,7 +2029,7 @@ "type": "github" } }, - "cabal-32_9": { + "cabal-32_18": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1313,4070 +2046,4033 @@ "type": "github" } }, - "cabal-34": { + "cabal-32_19": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_10": { + "cabal-32_2": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_2": { + "cabal-32_20": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_3": { + "cabal-32_21": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_4": { + "cabal-32_22": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_5": { + "cabal-32_23": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_6": { + "cabal-32_24": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_7": { + "cabal-32_25": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_8": { + "cabal-32_3": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_9": { + "cabal-32_4": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36": { + "cabal-32_5": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_10": { + "cabal-32_6": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_2": { + "cabal-32_7": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_3": { + "cabal-32_8": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_4": { + "cabal-32_9": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_5": { + "cabal-34": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-36_6": { + "cabal-34_10": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-36_7": { + "cabal-34_11": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-36_8": { + "cabal-34_12": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-36_9": { + "cabal-34_13": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "capkgs": { + "cabal-34_14": { + "flake": false, "locked": { - "lastModified": 1697123727, - "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", - "owner": "input-output-hk", - "repo": "capkgs", - "rev": "b197e225592dfe38afb80c94b628d99968c0541d", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "capkgs", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "capsules": { - "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_53", - "ragenix": "ragenix_2" - }, + "cabal-34_15": { + "flake": false, "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "capsules_2": { - "inputs": { - "bitte": "bitte_3", - "iogo": "iogo_2", - "nixpkgs": "nixpkgs_82", - "ragenix": "ragenix_5" - }, + "cabal-34_16": { + "flake": false, "locked": { - "lastModified": 1659466315, - "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-automation": { - "inputs": { - "flake-utils": "flake-utils_4", - "haskellNix": [ - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "tullia": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia" - ] - }, + "cabal-34_17": { + "flake": false, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-automation_2": { - "inputs": { - "flake-utils": "flake-utils_9", - "haskellNix": [ - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "tullia": "tullia_2" - }, + "cabal-34_18": { + "flake": false, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-automation_3": { - "inputs": { - "flake-utils": "flake-utils_16", - "haskellNix": [ - "cardano-node", - "haskellNix" - ], - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "tullia": "tullia_3" - }, + "cabal-34_19": { + "flake": false, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-configurations": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1715909148, - "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-configurations-8.1.1": { + "cabal-34_20": { "flake": false, "locked": { - "lastModified": 1692193634, - "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-configurations-8.7.3": { + "cabal-34_21": { "flake": false, "locked": { - "lastModified": 1702085095, - "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-db-sync": { - "inputs": { - "CHaP": "CHaP_2", - "cardano-parts": "cardano-parts", - "flake-compat": "flake-compat_4", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "iohkNix": "iohkNix", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils" - }, + "cabal-34_22": { + "flake": false, "locked": { - "lastModified": 1707925775, - "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", - "owner": "intersectmbo", - "repo": "cardano-db-sync", - "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "13.2.0.1", - "repo": "cardano-db-sync", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-db-sync-schema": { + "cabal-34_23": { "flake": false, "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.1.3", - "repo": "cardano-db-sync", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-db-sync-schema-ng": { + "cabal-34_24": { "flake": false, "locked": { - "lastModified": 1694078776, - "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "sancho-1-1-0", - "repo": "cardano-db-sync", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-db-sync-service": { + "cabal-34_25": { "flake": false, "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.1.3", - "repo": "cardano-db-sync", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-explorer-app": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", - "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-graphql": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", - "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-graphql", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_14" - }, + "cabal-34_5": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_24" - }, + "cabal-34_6": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_33" - }, + "cabal-34_7": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-nix": { - "inputs": { - "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", - "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", - "cardano-db-sync": "cardano-db-sync", - "cardano-node-8.1.1": "cardano-node-8.1.1", - "cardano-node-8.7.3": "cardano-node-8.7.3", - "devour-flake": "devour-flake", - "devshell": "devshell_4", - "flake-parts": "flake-parts_5", - "flake-root": "flake-root", - "hercules-ci-effects": "hercules-ci-effects", - "nixpkgs": [ - "nixpkgs" - ], - "pre-commit-hooks-nix": "pre-commit-hooks-nix", - "treefmt-nix": "treefmt-nix_3" - }, + "cabal-34_8": { + "flake": false, "locked": { - "lastModified": 1718715819, - "narHash": "sha256-scs7lMJQ4kLSIh9nahzoxk9L6BRyt2hYFbr5nIaqCWY=", - "owner": "mlabs-haskell", - "repo": "cardano.nix", - "rev": "197582b8517873dc11085ac191201a467f45a493", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "ref": "dshuiski/ogmios", - "repo": "cardano.nix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_5", - "cardano-automation": "cardano-automation_3", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "customConfig": "customConfig_3", - "em": "em_3", - "empty-flake": "empty-flake_4", - "flake-compat": "flake-compat_15", - "hackageNix": "hackageNix_4", - "haskellNix": "haskellNix_4", - "hostNixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_4", - "nix2container": "nix2container_6", - "nixpkgs": [ - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_3", - "std": "std_5", - "utils": "utils_7" - }, + "cabal-34_9": { + "flake": false, "locked": { - "lastModified": 1715901350, - "narHash": "sha256-teLUo4cQ9H52EkmJ9uXOIuyI78DtrKWxflJm+BnBqlM=", - "owner": "IntersectMBO", - "repo": "cardano-node", - "rev": "235e34f6df9a1490190f6247b610b4e114ca3b96", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "IntersectMBO", - "ref": "8.11.0-sancho", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-8.1.1": { - "inputs": { - "CHaP": "CHaP_3", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake_2", - "flake-compat": "flake-compat_6", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_2", - "hostNixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "iohkNix": "iohkNix_2", - "nix2container": "nix2container", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib", - "std": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std" - ], - "tullia": "tullia", - "utils": "utils_3" - }, + "cabal-36": { + "flake": false, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.1.1", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-node-8.7.3": { - "inputs": { - "CHaP": "CHaP_4", - "cardano-automation": "cardano-automation_2", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "customConfig": "customConfig_2", - "em": "em_2", - "empty-flake": "empty-flake_3", - "flake-compat": "flake-compat_10", - "hackageNix": "hackageNix_3", - "haskellNix": "haskellNix_3", - "hostNixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "iohkNix": "iohkNix_3", - "nix2container": "nix2container_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_2", - "std": "std_3", - "utils": "utils_5" - }, + "cabal-36_10": { + "flake": false, "locked": { - "lastModified": 1702654749, - "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.7.3", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-node-service": { + "cabal-36_11": { "flake": false, "locked": { - "lastModified": 1690209950, - "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", - "type": "github" - }, + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" + }, "original": { - "owner": "input-output-hk", - "ref": "8.1.2", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-node_2": { + "cabal-36_12": { "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-parts": { - "inputs": { - "auth-keys-hub": "auth-keys-hub", - "capkgs": "capkgs", - "cardano-db-sync-schema": "cardano-db-sync-schema", - "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", - "cardano-db-sync-service": "cardano-db-sync-service", - "cardano-node-service": "cardano-node-service", - "cardano-wallet-service": "cardano-wallet-service", - "colmena": "colmena", - "empty-flake": "empty-flake", - "flake-parts": "flake-parts_3", - "haskell-nix": "haskell-nix", - "inputs-check": "inputs-check", - "iohk-nix": "iohk-nix", - "iohk-nix-ng": "iohk-nix-ng", - "nix": "nix_2", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "nixpkgs-unstable": "nixpkgs-unstable_2", - "offchain-metadata-tools-service": "offchain-metadata-tools-service", - "sops-nix": "sops-nix", - "terraform-providers": "terraform-providers", - "terranix": "terranix", - "treefmt-nix": "treefmt-nix_2" + "cabal-36_13": { + "flake": false, + "locked": { + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_14": { + "flake": false, "locked": { - "lastModified": 1697147999, - "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", - "owner": "input-output-hk", - "repo": "cardano-parts", - "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-parts", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell": { + "cabal-36_15": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_10": { + "cabal-36_16": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_2": { + "cabal-36_17": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_3": { + "cabal-36_18": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_4": { + "cabal-36_19": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_5": { + "cabal-36_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_6": { + "cabal-36_20": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_7": { + "cabal-36_21": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_8": { + "cabal-36_22": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_9": { + "cabal-36_23": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-wallet": { - "inputs": { - "customConfig": "customConfig_4", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_22", - "flake-utils": "flake-utils_41", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "nixpkgs-unstable" - ] - }, + "cabal-36_24": { + "flake": false, "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-wallet-service": { + "cabal-36_25": { "flake": false, "locked": { - "lastModified": 1689751896, - "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", - "owner": "cardano-foundation", - "repo": "cardano-wallet", - "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "cardano-foundation", - "ref": "v2023-07-18", - "repo": "cardano-wallet", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-world": { - "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ - "db-sync" - ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node_2", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_23", - "hackage": "hackage_4", - "haskell-nix": "haskell-nix_3", - "iohk-nix": "iohk-nix_2", - "n2c": "n2c_7", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_93", - "nixpkgs-haskell": [ - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios", - "std": "std_7", - "tullia": "tullia_4" - }, + "cabal-36_3": { + "flake": false, "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", - "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-world", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cicero": { - "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_13", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix_2", - "inclusive": "inclusive_9", - "nix": "nix_13", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_69", - "poetry2nix": "poetry2nix", - "utils": "utils_21" - }, + "cabal-36_4": { + "flake": false, "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", - "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cicero", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "colmena": { - "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "nixpkgs" - ], - "stable": "stable" - }, + "cabal-36_5": { + "flake": false, "locked": { - "lastModified": 1684127108, - "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", - "owner": "zhaofengli", - "repo": "colmena", - "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "zhaofengli", - "ref": "v0.4.0", - "repo": "colmena", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "crane": { - "inputs": { - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_14", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ], - "rust-overlay": "rust-overlay" - }, + "cabal-36_6": { + "flake": false, "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "ipetkov", - "repo": "crane", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "crane_2": { - "inputs": { - "flake-compat": "flake-compat_17", - "flake-utils": "flake-utils_21", - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ], - "rust-overlay": "rust-overlay_2" - }, + "cabal-36_7": { + "flake": false, "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "ipetkov", - "repo": "crane", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "crystal": { - "inputs": { - "ameba-src": "ameba-src", - "bdwgc-src": "bdwgc-src", - "crystal-aarch64-darwin": "crystal-aarch64-darwin", - "crystal-src": "crystal-src", - "crystal-x86_64-darwin": "crystal-x86_64-darwin", - "crystal-x86_64-linux": "crystal-x86_64-linux", - "crystalline-src": "crystalline-src", - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_2" - }, + "cabal-36_8": { + "flake": false, "locked": { - "lastModified": 1683429373, - "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", - "owner": "manveru", - "repo": "crystal-flake", - "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "manveru", - "repo": "crystal-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "crystal-aarch64-darwin": { + "cabal-36_9": { "flake": false, "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" - } - }, - "crystal-src": { - "flake": false, - "locked": { - "lastModified": 1681995387, - "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", - "owner": "crystal-lang", - "repo": "crystal", - "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "crystal-lang", - "ref": "1.8.1", - "repo": "crystal", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "crystal-x86_64-darwin": { - "flake": false, + "capkgs": { "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "lastModified": 1697123727, + "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", + "owner": "input-output-hk", + "repo": "capkgs", + "rev": "b197e225592dfe38afb80c94b628d99968c0541d", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "owner": "input-output-hk", + "repo": "capkgs", + "type": "github" } }, - "crystal-x86_64-linux": { - "flake": false, + "capsules": { + "inputs": { + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_53", + "ragenix": "ragenix_2" + }, "locked": { - "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "owner": "input-output-hk", + "repo": "devshell-capsules", + "type": "github" } }, - "crystalline-src": { - "flake": false, + "capsules_2": { + "inputs": { + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_82", + "ragenix": "ragenix_5" + }, "locked": { - "lastModified": 1681549124, - "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", - "owner": "elbywan", - "repo": "crystalline", - "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "elbywan", - "ref": "v0.9.0", - "repo": "crystalline", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "customConfig": { + "cardano-automation": { + "inputs": { + "flake-utils": "flake-utils_4", + "haskellNix": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "tullia": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia" + ] + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-automation", "type": "github" } }, - "customConfig_2": { + "cardano-automation_2": { + "inputs": { + "flake-utils": "flake-utils_9", + "haskellNix": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "tullia": "tullia_2" + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-automation", "type": "github" } }, - "customConfig_3": { + "cardano-automation_3": { + "inputs": { + "flake-utils": "flake-utils_16", + "haskellNix": [ + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "tullia": "tullia_3" + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-automation", "type": "github" } }, - "customConfig_4": { + "cardano-configurations": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1715909148, + "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-configurations", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-configurations", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" } }, - "customConfig_5": { + "cardano-configurations-8.1.1": { + "flake": false, "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" + "lastModified": 1692193634, + "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "type": "github" }, "original": { - "path": "./custom-config", - "type": "path" + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "type": "github" } }, - "data-merge": { - "inputs": { - "nixlib": "nixlib", - "yants": "yants_6" - }, + "cardano-configurations-8.7.3": { + "flake": false, "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", - "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", + "lastModified": 1702085095, + "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" } }, - "data-merge_2": { + "cardano-db-sync": { "inputs": { - "nixlib": "nixlib_2" + "CHaP": "CHaP_2", + "cardano-parts": "cardano-parts", + "flake-compat": "flake-compat_4", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "iohkNix": "iohkNix", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils" }, "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", + "lastModified": 1707925775, + "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", + "owner": "intersectmbo", + "repo": "cardano-db-sync", + "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "intersectmbo", + "ref": "13.2.0.1", + "repo": "cardano-db-sync", "type": "github" } }, - "data-merge_3": { - "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_8" - }, - "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "db-sync": { - "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_24", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "nixpkgs": [ - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_28" - }, + "cardano-db-sync-schema": { + "flake": false, "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", "owner": "input-output-hk", "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "13.1.0.0", + "ref": "13.1.1.3", "repo": "cardano-db-sync", "type": "github" } }, - "deploy": { - "inputs": { - "fenix": "fenix_4", - "flake-compat": "flake-compat_18", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_8" - }, + "cardano-db-sync-schema-ng": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1694078776, + "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-db-sync", + "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "ref": "sancho-1-1-0", + "repo": "cardano-db-sync", "type": "github" } }, - "deploy_2": { - "inputs": { - "fenix": "fenix_6", - "flake-compat": "flake-compat_19", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_14" - }, + "cardano-db-sync-service": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "deploy_3": { - "inputs": { - "fenix": "fenix_8", - "flake-compat": "flake-compat_20", - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_22" - }, + "cardano-explorer-app": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "devour-flake": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1709858306, - "narHash": "sha256-Vey9n9hIlWiSAZ6CCTpkrL6jt4r2JvT2ik9wa2bjeC0=", - "owner": "srid", - "repo": "devour-flake", - "rev": "17b711b9deadbbc5629cb7d2b64cf86ae72af3fa", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { - "owner": "srid", - "repo": "devour-flake", + "owner": "input-output-hk", + "repo": "cardano-graphql", "type": "github" } }, - "devshell": { + "cardano-mainnet-mirror": { "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_14" }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "devshell_10": { + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_24" + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "devshell_11": { + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_33" + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "devshell_12": { + "cardano-nix": { "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], + "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", + "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", + "cardano-db-sync": "cardano-db-sync", + "cardano-node-8.1.1": "cardano-node-8.1.1", + "cardano-node-8.7.3": "cardano-node-8.7.3", + "devour-flake": "devour-flake", + "devshell": "devshell_4", + "flake-parts": "flake-parts_5", + "flake-root": "flake-root", + "hercules-ci-effects": "hercules-ci-effects", "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", "nixpkgs" - ] + ], + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1718715819, + "narHash": "sha256-scs7lMJQ4kLSIh9nahzoxk9L6BRyt2hYFbr5nIaqCWY=", + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "rev": "197582b8517873dc11085ac191201a467f45a493", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "mlabs-haskell", + "ref": "dshuiski/ogmios", + "repo": "cardano.nix", "type": "github" } }, - "devshell_13": { + "cardano-node": { "inputs": { - "flake-utils": "flake-utils_31", - "nixpkgs": "nixpkgs_66" + "CHaP": "CHaP_5", + "cardano-automation": "cardano-automation_3", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "customConfig": "customConfig_3", + "em": "em_3", + "empty-flake": "empty-flake_4", + "flake-compat": "flake-compat_15", + "hackageNix": "hackageNix_4", + "haskellNix": "haskellNix_4", + "hostNixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_4", + "nix2container": "nix2container_6", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_3", + "std": "std_5", + "utils": "utils_7" }, "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "lastModified": 1715901350, + "narHash": "sha256-teLUo4cQ9H52EkmJ9uXOIuyI78DtrKWxflJm+BnBqlM=", + "owner": "IntersectMBO", + "repo": "cardano-node", + "rev": "235e34f6df9a1490190f6247b610b4e114ca3b96", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "IntersectMBO", + "ref": "8.11.0-sancho", + "repo": "cardano-node", "type": "github" } }, - "devshell_14": { + "cardano-node-8.1.1": { + "inputs": { + "CHaP": "CHaP_3", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake_2", + "flake-compat": "flake-compat_6", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "iohkNix": "iohkNix_2", + "nix2container": "nix2container", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_3" + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "intersectmbo", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "devshell_15": { + "cardano-node-8.7.3": { + "inputs": { + "CHaP": "CHaP_4", + "cardano-automation": "cardano-automation_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "customConfig": "customConfig_2", + "em": "em_2", + "empty-flake": "empty-flake_3", + "flake-compat": "flake-compat_10", + "hackageNix": "hackageNix_3", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nix2container": "nix2container_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_2", + "std": "std_3", + "utils": "utils_5" + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1702654749, + "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "intersectmbo", + "ref": "8.7.3", + "repo": "cardano-node", "type": "github" } }, - "devshell_16": { + "cardano-node-service": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1690209950, + "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "8.1.2", + "repo": "cardano-node", "type": "github" } }, - "devshell_17": { + "cardano-node_2": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "devshell_18": { + "cardano-parts": { + "inputs": { + "auth-keys-hub": "auth-keys-hub", + "capkgs": "capkgs", + "cardano-db-sync-schema": "cardano-db-sync-schema", + "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", + "cardano-db-sync-service": "cardano-db-sync-service", + "cardano-node-service": "cardano-node-service", + "cardano-wallet-service": "cardano-wallet-service", + "colmena": "colmena", + "empty-flake": "empty-flake", + "flake-parts": "flake-parts_3", + "haskell-nix": "haskell-nix", + "inputs-check": "inputs-check", + "iohk-nix": "iohk-nix", + "iohk-nix-ng": "iohk-nix-ng", + "nix": "nix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "nixpkgs-unstable": "nixpkgs-unstable_2", + "offchain-metadata-tools-service": "offchain-metadata-tools-service", + "sops-nix": "sops-nix", + "terraform-providers": "terraform-providers", + "terranix": "terranix", + "treefmt-nix": "treefmt-nix_2" + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1697147999, + "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", + "owner": "input-output-hk", + "repo": "cardano-parts", + "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-parts", "type": "github" } }, - "devshell_19": { + "cardano-shell": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_2": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "cardano-shell_10": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_20": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "cardano-shell_11": { + "flake": false, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_21": { - "inputs": { - "flake-utils": "flake-utils_47", - "nixpkgs": [ - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] - }, + "cardano-shell_12": { + "flake": false, "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_3": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "systems": "systems_2" - }, + "cardano-shell_13": { + "flake": false, "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", - "owner": "numtide", - "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_4": { - "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": [ - "cardano-nix", - "nixpkgs" - ] - }, + "cardano-shell_14": { + "flake": false, "locked": { - "lastModified": 1713532798, - "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", - "owner": "numtide", - "repo": "devshell", - "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_5": { - "inputs": { - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "cardano-shell_15": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_6": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "systems": "systems_4" - }, + "cardano-shell_16": { + "flake": false, "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", - "owner": "numtide", - "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_7": { + "cardano-shell_17": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_8": { + "cardano-shell_18": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_9": { + "cardano-shell_19": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "yants" - ] - }, + "cardano-shell_2": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_2": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "cardano-shell_20": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_3": { - "inputs": { - "haumea": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea" - ], - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ], - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, + "cardano-shell_21": { + "flake": false, "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_4": { - "inputs": { - "nixlib": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "cardano-shell_22": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_5": { - "inputs": { - "haumea": [ - "cardano-node", - "std", - "haumea" - ], - "nixlib": [ - "cardano-node", - "std", - "haumea", - "nixpkgs" - ], - "yants": [ - "cardano-node", - "std", - "yants" - ] - }, + "cardano-shell_23": { + "flake": false, "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_6": { - "inputs": { - "nixlib": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] - }, + "cardano-shell_24": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_7": { - "inputs": { - "nixlib": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "db-sync", - "cardano-world", - "std", - "yants" - ] - }, + "cardano-shell_25": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "driver": { - "inputs": { - "devshell": "devshell_14", - "inclusive": "inclusive_7", - "nix": "nix_12", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_18" - }, + "cardano-shell_3": { + "flake": false, "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "repo": "cardano-shell", "type": "github" } }, - "easy-purescript-nix": { + "cardano-shell_4": { "flake": false, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "em": { + "cardano-shell_5": { "flake": false, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "em_2": { + "cardano-shell_6": { "flake": false, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "em_3": { + "cardano-shell_7": { "flake": false, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "ema": { - "inputs": { - "flake-compat": "flake-compat_21", - "flake-utils": "flake-utils_38", - "nixpkgs": "nixpkgs_84", - "pre-commit-hooks": "pre-commit-hooks" - }, + "cardano-shell_8": { + "flake": false, "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "srid", - "repo": "ema", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "ema_2": { + "cardano-shell_9": { "flake": false, "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", - "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "srid", - "ref": "multisite", - "repo": "ema", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "emanote": { + "cardano-wallet": { "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts_6", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_87", - "tailwind-haskell": "tailwind-haskell" - }, - "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", - "type": "github" + "customConfig": "customConfig_4", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_22", + "flake-utils": "flake-utils_41", + "haskellNix": "haskellNix_5", + "hostNixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix_5", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] }, - "original": { - "owner": "srid", - "repo": "emanote", - "type": "github" - } - }, - "empty-flake": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "empty-flake_2": { + "cardano-wallet-service": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1689751896, + "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", + "owner": "cardano-foundation", + "repo": "cardano-wallet", + "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "cardano-foundation", + "ref": "v2023-07-18", + "repo": "cardano-wallet", "type": "github" } }, - "empty-flake_3": { + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_23", + "hackage": "hackage_4", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "n2c": "n2c_7", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_93", + "nixpkgs-haskell": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_7", + "tullia": "tullia_4" + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-world", "type": "github" } }, - "empty-flake_4": { + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_13", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix_2", + "inclusive": "inclusive_9", + "nix": "nix_13", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_69", + "poetry2nix": "poetry2nix", + "utils": "utils_21" + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cicero", "type": "github" } }, - "fenix": { + "colmena": { "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", "nixpkgs": [ "cardano-nix", "cardano-db-sync", "cardano-parts", - "auth-keys-hub", - "statix", "nixpkgs" ], - "rust-analyzer-src": "rust-analyzer-src" + "stable": "stable" }, "locked": { - "lastModified": 1645251813, - "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", - "owner": "nix-community", - "repo": "fenix", - "rev": "9892337b588c38ec59466a1c89befce464aae7f8", + "lastModified": 1684127108, + "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", + "owner": "zhaofengli", + "repo": "colmena", + "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "zhaofengli", + "ref": "v0.4.0", + "repo": "colmena", "type": "github" } }, - "fenix_2": { + "crane": { "inputs": { - "nixpkgs": "nixpkgs_29", - "rust-analyzer-src": "rust-analyzer-src_2" + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_14", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "ipetkov", + "repo": "crane", "type": "github" } }, - "fenix_3": { + "crane_2": { "inputs": { - "nixpkgs": "nixpkgs_38", - "rust-analyzer-src": "rust-analyzer-src_3" + "flake-compat": "flake-compat_17", + "flake-utils": "flake-utils_21", + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "ipetkov", + "repo": "crane", "type": "github" } }, - "fenix_4": { + "crystal": { "inputs": { - "nixpkgs": "nixpkgs_43", - "rust-analyzer-src": "rust-analyzer-src_4" + "ameba-src": "ameba-src", + "bdwgc-src": "bdwgc-src", + "crystal-aarch64-darwin": "crystal-aarch64-darwin", + "crystal-src": "crystal-src", + "crystal-x86_64-darwin": "crystal-x86_64-darwin", + "crystal-x86_64-linux": "crystal-x86_64-linux", + "crystalline-src": "crystalline-src", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1683429373, + "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", + "owner": "manveru", + "repo": "crystal-flake", + "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "manveru", + "repo": "crystal-flake", "type": "github" } }, - "fenix_5": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_5" - }, + "crystal-aarch64-darwin": { + "flake": false, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "fenix_6": { - "inputs": { - "nixpkgs": "nixpkgs_56", - "rust-analyzer-src": "rust-analyzer-src_6" - }, + "crystal-src": { + "flake": false, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1681995387, + "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", + "owner": "crystal-lang", + "repo": "crystal", + "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "crystal-lang", + "ref": "1.8.1", + "repo": "crystal", "type": "github" } }, - "fenix_7": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_7" - }, + "crystal-x86_64-darwin": { + "flake": false, "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "fenix_8": { - "inputs": { - "nixpkgs": "nixpkgs_72", - "rust-analyzer-src": "rust-analyzer-src_8" - }, + "crystal-x86_64-linux": { + "flake": false, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", - "type": "github" + "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" }, "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" } }, - "fenix_9": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_9" - }, + "crystalline-src": { + "flake": false, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1681549124, + "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", + "owner": "elbywan", + "repo": "crystalline", + "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "elbywan", + "ref": "v0.9.0", + "repo": "crystalline", "type": "github" } }, - "flake-compat": { - "flake": false, + "customConfig": { "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-compat_10": { - "flake": false, + "customConfig_2": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "repo": "empty-flake", "type": "github" } }, - "flake-compat_11": { - "flake": false, + "customConfig_3": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "empty-flake", "type": "github" } }, - "flake-compat_12": { - "flake": false, + "customConfig_4": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-compat_13": { - "flake": false, + "customConfig_5": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" + }, + "original": { + "path": "./custom-config", + "type": "path" } }, - "flake-compat_14": { - "flake": false, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants_6" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-compat_15": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-compat_16": { - "flake": false, + "data-merge_3": { + "inputs": { + "nixlib": "nixlib_3", + "yants": "yants_8" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-compat_17": { - "flake": false, + "db-sync": { + "inputs": { + "cardano-world": "cardano-world", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_24", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_28" + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "13.1.0.0", + "repo": "cardano-db-sync", "type": "github" } }, - "flake-compat_18": { - "flake": false, + "deploy": { + "inputs": { + "fenix": "fenix_4", + "flake-compat": "flake-compat_18", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_8" + }, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "flake-compat_19": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_6", + "flake-compat": "flake-compat_19", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_14" + }, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "flake-compat_2": { - "flake": false, + "deploy_3": { + "inputs": { + "fenix": "fenix_8", + "flake-compat": "flake-compat_20", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_22" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "deploy-rs", "type": "github" } }, - "flake-compat_20": { + "devour-flake": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1709858306, + "narHash": "sha256-Vey9n9hIlWiSAZ6CCTpkrL6jt4r2JvT2ik9wa2bjeC0=", + "owner": "srid", + "repo": "devour-flake", + "rev": "17b711b9deadbbc5629cb7d2b64cf86ae72af3fa", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "srid", + "repo": "devour-flake", "type": "github" } }, - "flake-compat_21": { - "flake": false, + "devshell": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_22": { - "flake": false, + "devshell_10": { "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_23": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_24": { - "flake": false, + "devshell_11": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_25": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" + "devshell_12": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_26": { - "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_27": { - "flake": false, + "devshell_13": { + "inputs": { + "flake-utils": "flake-utils_31", + "nixpkgs": "nixpkgs_66" + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_3": { - "flake": false, + "devshell_14": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_4": { - "flake": false, + "devshell_15": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_5": { - "flake": false, + "devshell_16": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_6": { - "flake": false, + "devshell_17": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_7": { - "flake": false, + "devshell_18": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_8": { - "flake": false, + "devshell_19": { "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_9": { - "flake": false, + "devshell_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts": { + "devshell_20": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, - "locked": { - "lastModified": 1672152762, - "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_2" + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1682984683, - "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "86684881e184f41aa322e653880e497b66429f3e", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_3": { + "devshell_21": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib_3" + "flake-utils": "flake-utils_47", + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_4": { + "devshell_3": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib_4" + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "systems": "systems_2" }, "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_5": { + "devshell_4": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib_5" + "flake-utils": "flake-utils_15", + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "lastModified": 1713532798, + "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", + "owner": "numtide", + "repo": "devshell", + "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_6": { + "devshell_5": { "inputs": { - "nixpkgs": "nixpkgs_86" + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_7": { + "devshell_6": { "inputs": { - "nixpkgs-lib": [ - "hercules-ci-effects", + "nixpkgs": [ + "cardano-node", + "std", "nixpkgs" - ] - }, - "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", - "type": "github" + ], + "systems": "systems_4" }, - "original": { - "id": "flake-parts", - "type": "indirect" - } - }, - "flake-root": { "locked": { - "lastModified": 1713493429, - "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", - "owner": "srid", - "repo": "flake-root", - "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", "type": "github" }, "original": { - "owner": "srid", - "repo": "flake-root", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-utils": { + "devshell_7": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_10": { + "devshell_8": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_11": { + "devshell_9": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_12": { + "dmerge": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_13": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "dmerge_2": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_14": { + "dmerge_3": { + "inputs": { + "haumea": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea" + ], + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "flake-utils_15": { + "dmerge_4": { "inputs": { - "systems": "systems_3" + "nixlib": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_16": { + "dmerge_5": { + "inputs": { + "haumea": [ + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "cardano-node", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "flake-utils_17": { + "dmerge_6": { + "inputs": { + "nixlib": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ], + "yants": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_18": { + "dmerge_7": { + "inputs": { + "nixlib": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ], + "yants": [ + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_19": { + "driver": { + "inputs": { + "devshell": "devshell_14", + "inclusive": "inclusive_7", + "nix": "nix_12", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_18" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "flake-utils_2": { + "easy-purescript-nix": { + "flake": false, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_20": { + "easy-purescript-nix_10": { + "inputs": { + "flake-utils": "flake-utils_79" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_21": { + "easy-purescript-nix_11": { + "inputs": { + "flake-utils": "flake-utils_81" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_22": { + "easy-purescript-nix_12": { + "inputs": { + "flake-utils": "flake-utils_83" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_23": { + "easy-purescript-nix_13": { + "inputs": { + "flake-utils": "flake-utils_87" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_24": { + "easy-purescript-nix_14": { + "inputs": { + "flake-utils": "flake-utils_93" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_25": { + "easy-purescript-nix_15": { + "inputs": { + "flake-utils": "flake-utils_95" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_26": { + "easy-purescript-nix_16": { + "inputs": { + "flake-utils": "flake-utils_99" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_27": { + "easy-purescript-nix_2": { + "inputs": { + "flake-utils": "flake-utils_49" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_28": { + "easy-purescript-nix_3": { + "inputs": { + "flake-utils": "flake-utils_51" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_29": { + "easy-purescript-nix_4": { + "inputs": { + "flake-utils": "flake-utils_53" + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_3": { + "easy-purescript-nix_5": { + "inputs": { + "flake-utils": "flake-utils_55" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_30": { + "easy-purescript-nix_6": { + "inputs": { + "flake-utils": "flake-utils_59" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_31": { + "easy-purescript-nix_7": { + "inputs": { + "flake-utils": "flake-utils_65" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_32": { + "easy-purescript-nix_8": { + "inputs": { + "flake-utils": "flake-utils_67" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_33": { + "easy-purescript-nix_9": { + "inputs": { + "flake-utils": "flake-utils_71" + }, "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_34": { + "em": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_35": { + "em_2": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_36": { + "em_3": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_37": { + "ema": { + "inputs": { + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_84", + "pre-commit-hooks": "pre-commit-hooks" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "repo": "ema", "type": "github" } }, - "flake-utils_38": { + "ema_2": { + "flake": false, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "ref": "multisite", + "repo": "ema", "type": "github" } }, - "flake-utils_39": { + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts_6", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_87", + "tailwind-haskell": "tailwind-haskell" + }, "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "repo": "emanote", "type": "github" } }, - "flake-utils_4": { + "empty-flake": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_40": { + "empty-flake_2": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_41": { + "empty-flake_3": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_42": { + "empty-flake_4": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_43": { + "fenix": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "auth-keys-hub", + "statix", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1645251813, + "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", + "owner": "nix-community", + "repo": "fenix", + "rev": "9892337b588c38ec59466a1c89befce464aae7f8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_44": { + "fenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_29", + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_45": { + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_38", + "rust-analyzer-src": "rust-analyzer-src_3" + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_46": { + "fenix_4": { + "inputs": { + "nixpkgs": "nixpkgs_43", + "rust-analyzer-src": "rust-analyzer-src_4" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_47": { + "fenix_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_5" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_48": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" + "fenix_6": { + "inputs": { + "nixpkgs": "nixpkgs_56", + "rust-analyzer-src": "rust-analyzer-src_6" }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_6": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" + "fenix_7": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_7" }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_7": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_8": { + "fenix_8": { + "inputs": { + "nixpkgs": "nixpkgs_72", + "rust-analyzer-src": "rust-analyzer-src_8" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_9": { + "fenix_9": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_9" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flakeCompat": { + "flake-compat": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { @@ -5385,9943 +6081,25849 @@ "type": "github" } }, - "follower": { - "inputs": { - "devshell": "devshell_15", - "inclusive": "inclusive_8", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_19" - }, + "flake-compat_10": { + "flake": false, "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-follower", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk": { + "flake-compat_11": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_10": { + "flake-compat_12": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_2": { + "flake-compat_13": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_3": { + "flake-compat_14": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_4": { + "flake-compat_15": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_5": { + "flake-compat_16": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_6": { + "flake-compat_17": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_7": { + "flake-compat_18": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_8": { + "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_9": { + "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "ghc910X": { + "flake-compat_20": { "flake": false, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "ghc910X_2": { + "flake-compat_21": { "flake": false, "locked": { - "lastModified": 1714520650, - "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", - "ref": "ghc-9.10", - "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", - "revCount": 62663, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "ghc911": { + "flake-compat_22": { "flake": false, "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" } }, - "ghc911_2": { + "flake-compat_23": { "flake": false, "locked": { - "lastModified": 1714817013, - "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", - "ref": "refs/heads/master", - "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", - "revCount": 62816, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "ghc98X": { + "flake-compat_24": { "flake": false, "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" }, "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" } }, - "ghc98X_2": { + "flake-compat_25": { "flake": false, "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" }, "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "ghc99": { + "flake-compat_26": { "flake": false, "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" } }, - "ghc99_2": { + "flake-compat_27": { "flake": false, "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" } }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, + "flake-compat_28": { + "flake": false, "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_17", - "utils": "utils_2" - }, + "flake-compat_29": { + "flake": false, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "gomod2nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_21", - "utils": "utils_4" - }, + "flake-compat_3": { + "flake": false, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "gomod2nix_3": { - "inputs": { - "nixpkgs": "nixpkgs_30", - "utils": "utils_6" + "flake-compat_30": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_31": { + "flake": false, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage": { + "flake-compat_32": { "flake": false, "locked": { - "lastModified": 1692145451, - "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackage-nix": { + "flake-compat_33": { "flake": false, "locked": { - "lastModified": 1718843827, - "narHash": "sha256-FrzH96+EaI7O6ZfCi7Ifya3KS82kLTb4cmqmM+eRhbE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "18a2a34abd64aad840134c2fa04e57e0826848b8", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackageNix": { + "flake-compat_34": { "flake": false, "locked": { - "lastModified": 1702945378, - "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackageNix_2": { + "flake-compat_35": { "flake": false, "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackageNix_3": { + "flake-compat_36": { "flake": false, "locked": { - "lastModified": 1701303758, - "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackageNix_4": { + "flake-compat_37": { "flake": false, "locked": { - "lastModified": 1711412520, - "narHash": "sha256-48Aw1X7IuXZR6Wi2WOlvj9HpoUHty/JW1MqAehgnoHo=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc84d1170ccc83d50db7b71a6edd090b2cef7657", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage_2": { + "flake-compat_38": { "flake": false, "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackage_3": { + "flake-compat_39": { "flake": false, "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage_4": { + "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "hackage_5": { + "flake-compat_40": { "flake": false, "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "haskell-flake": { + "flake-compat_41": { + "flake": false, "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "srid", - "repo": "haskell-flake", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "empty-flake" - ] - }, + "flake-compat_42": { + "flake": false, "locked": { - "lastModified": 1692147008, - "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_6", - "nix-tools": "nix-tools", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-unstable": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_5" - }, + "flake-compat_43": { + "flake": false, "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_43", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": [ - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_7" - }, + "flake-compat_44": { + "flake": false, "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-compat": "flake-compat_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "ghc910X": "ghc910X_2", - "ghc911": "ghc911_2", - "hackage": [ - "hackage-nix" - ], - "hls-1.10": "hls-1.10_6", - "hls-2.0": "hls-2.0_5", - "hls-2.2": "hls-2.2_4", - "hls-2.3": "hls-2.3_4", - "hls-2.4": "hls-2.4_4", - "hls-2.5": "hls-2.5_2", - "hls-2.6": "hls-2.6_2", - "hls-2.7": "hls-2.7", - "hls-2.8": "hls-2.8", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_12", - "iserv-proxy": "iserv-proxy_6", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-2205": "nixpkgs-2205_7", - "nixpkgs-2211": "nixpkgs-2211_6", - "nixpkgs-2305": "nixpkgs-2305_5", - "nixpkgs-2311": "nixpkgs-2311_2", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_9" + "flake-compat_45": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_46": { + "flake": false, "locked": { - "lastModified": 1718844631, - "narHash": "sha256-7r7Yo5sHrsNVfr52xDokSWkCes3XAwLmpRCNt/psyY4=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "476f3dbe4e4129ef092852f9f7d2cd9d93437529", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ - "cardano-nix", - "cardano-db-sync", - "hackageNix" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0_2", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305_2", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage" + "flake-compat_47": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_48": { + "flake": false, "locked": { - "lastModified": 1701053834, - "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": [ - "cardano-nix", - "cardano-node-8.1.1", - "hackageNix" - ], - "hls-1.10": "hls-1.10_3", - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_3", - "iserv-proxy": "iserv-proxy_3", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211_3", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_2" - }, + "flake-compat_49": { + "flake": false, "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-compat": "flake-compat_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "ghc98X": "ghc98X_2", - "ghc99": "ghc99_2", - "hackage": [ - "cardano-nix", - "cardano-node-8.7.3", - "hackageNix" - ], - "hls-1.10": "hls-1.10_4", - "hls-2.0": "hls-2.0_3", - "hls-2.2": "hls-2.2_2", - "hls-2.3": "hls-2.3_2", - "hls-2.4": "hls-2.4_2", - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_4", - "iserv-proxy": "iserv-proxy_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-2211": "nixpkgs-2211_4", - "nixpkgs-2305": "nixpkgs-2305_3", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_3" - }, + "flake-compat_5": { + "flake": false, "locked": { - "lastModified": 1700441391, - "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskellNix_4": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-compat": "flake-compat_16", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "ghc910X": "ghc910X", - "ghc911": "ghc911", - "hackage": [ - "cardano-node", - "hackageNix" - ], - "hls-1.10": "hls-1.10_5", - "hls-2.0": "hls-2.0_4", - "hls-2.2": "hls-2.2_3", - "hls-2.3": "hls-2.3_3", - "hls-2.4": "hls-2.4_3", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_5", - "iserv-proxy": "iserv-proxy_5", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-2205": "nixpkgs-2205_5", - "nixpkgs-2211": "nixpkgs-2211_5", - "nixpkgs-2305": "nixpkgs-2305_4", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_4" - }, + "flake-compat_50": { + "flake": false, "locked": { - "lastModified": 1712278203, - "narHash": "sha256-L4eFUxnID2EYYtONE3fmZxPQdgPlB6XbAfIjlZi4c+U=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "57938c23a4d40e5a746f05f2b71af11a7273a133", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskellNix_5": { - "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_6" - }, + "flake-compat_51": { + "flake": false, "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_48", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_9", - "hydra": "hydra_11", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_8" - }, + "flake-compat_52": { + "flake": false, "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haumea": { - "inputs": { - "nixpkgs": "nixpkgs_27" - }, + "flake-compat_53": { + "flake": false, "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "haumea_2": { - "inputs": { - "nixpkgs": "nixpkgs_36" - }, + "flake-compat_54": { + "flake": false, "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": [ - "cardano-nix", - "flake-parts" - ], - "nixpkgs": [ - "cardano-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1714676393, - "narHash": "sha256-OA2LZPTCHyH0PcsNkjeTLvgsn4JmsV2VTvXQacHeUZU=", - "owner": "mlabs-haskell", - "repo": "hercules-ci-effects", - "rev": "5ad8f9613b735cb4f8222f07ae45ca37bfe76a23", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "ref": "push-cache-effect", - "repo": "hercules-ci-effects", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hercules-ci-effects_2": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_100" - }, + "flake-compat_55": { + "flake": false, "locked": { - "lastModified": 1718018037, - "narHash": "sha256-03rLBd/lKecgaKz0j5ESUf9lDn5R0SJatZTKLL5unWE=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "0ab08b23ce3c3f75fe9a5598756b6fb8bcf0b414", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hls-1.10": { + "flake-compat_56": { "flake": false, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hls-1.10_2": { + "flake-compat_57": { "flake": false, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hls-1.10_3": { + "flake-compat_6": { "flake": false, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "hls-1.10_4": { + "flake-compat_7": { "flake": false, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hls-1.10_5": { + "flake-compat_8": { "flake": false, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hls-1.10_6": { + "flake-compat_9": { "flake": false, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hls-2.0": { - "flake": false, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1672152762, + "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "hls-2.0_2": { - "flake": false, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1682984683, + "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "86684881e184f41aa322e653880e497b66429f3e", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "hls-2.0_3": { - "flake": false, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_3" + }, "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "hls-2.0_4": { - "flake": false, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_4" + }, "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "hls-2.0_5": { - "flake": false, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_5" + }, "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "hls-2.2": { - "flake": false, + "flake-parts_6": { + "inputs": { + "nixpkgs": "nixpkgs_86" + }, "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "hls-2.2_2": { - "flake": false, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "hercules-ci-effects", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" + "id": "flake-parts", + "type": "indirect" } }, - "hls-2.2_3": { - "flake": false, + "flake-root": { "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1713493429, + "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", + "owner": "srid", + "repo": "flake-root", + "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "srid", + "repo": "flake-root", "type": "github" } }, - "hls-2.2_4": { - "flake": false, + "flake-utils": { "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.3": { - "flake": false, + "flake-utils_10": { "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.3_2": { - "flake": false, + "flake-utils_100": { + "inputs": { + "systems": "systems_56" + }, "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.3_3": { - "flake": false, + "flake-utils_101": { + "inputs": { + "systems": "systems_57" + }, "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.3_4": { - "flake": false, + "flake-utils_102": { + "inputs": { + "systems": "systems_58" + }, "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.4": { - "flake": false, + "flake-utils_103": { + "inputs": { + "systems": "systems_59" + }, "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.4_2": { - "flake": false, + "flake-utils_104": { + "inputs": { + "systems": "systems_60" + }, "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.4_3": { - "flake": false, + "flake-utils_105": { + "inputs": { + "systems": "systems_61" + }, "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.4_4": { - "flake": false, + "flake-utils_106": { + "inputs": { + "systems": "systems_62" + }, "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.5": { - "flake": false, + "flake-utils_107": { + "inputs": { + "systems": "systems_63" + }, "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.5_2": { - "flake": false, + "flake-utils_108": { + "inputs": { + "systems": "systems_64" + }, "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.6": { - "flake": false, + "flake-utils_11": { "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.6_2": { - "flake": false, + "flake-utils_12": { "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.7": { - "flake": false, + "flake-utils_13": { "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hls-2.8": { - "flake": false, + "flake-utils_14": { "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls": { - "flake": false, + "flake-utils_15": { + "inputs": { + "systems": "systems_3" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_10": { - "flake": false, + "flake-utils_16": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_2": { - "flake": false, + "flake-utils_17": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_3": { - "flake": false, + "flake-utils_18": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_4": { - "flake": false, + "flake-utils_19": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_5": { - "flake": false, + "flake-utils_2": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_6": { - "flake": false, + "flake-utils_20": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_7": { - "flake": false, + "flake-utils_21": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_8": { - "flake": false, + "flake-utils_22": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hpc-coveralls_9": { - "flake": false, + "flake-utils_23": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_24": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "hydra_10": { - "inputs": { - "nix": "nix_18", - "nixpkgs": [ - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_25": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "hydra_11": { - "inputs": { - "nix": "nix_19", - "nixpkgs": [ - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_26": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "hydra_12": { - "inputs": { - "nix": "nix_20", - "nixpkgs": [ - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_27": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "hydra_2": { - "inputs": { - "nix": "nix_3", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_28": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "hydra_3": { - "inputs": { - "nix": "nix_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_29": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "hydra_4": { - "inputs": { - "nix": "nix_5", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_3": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "hydra_5": { - "inputs": { - "nix": "nix_6", - "nixpkgs": [ - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_30": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "hydra_6": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] - }, + "flake-utils_31": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hydra_7": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] - }, + "flake-utils_32": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hydra_8": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] - }, + "flake-utils_33": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "hydra_9": { - "inputs": { - "nix": "nix_17", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "flake-utils_34": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "incl": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, + "flake-utils_35": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "incl_2": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "flake-utils_36": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "incl_3": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ] - }, + "flake-utils_37": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "incl_4": { - "inputs": { - "nixlib": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "flake-utils_38": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "incl_5": { - "inputs": { - "nixlib": [ - "cardano-node", - "std", - "haumea", - "nixpkgs" - ] - }, + "flake-utils_39": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive": { - "inputs": { - "stdlib": "stdlib" - }, + "flake-utils_4": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive_10": { - "inputs": { - "stdlib": "stdlib_10" - }, + "flake-utils_40": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", "type": "github" } }, - "inclusive_11": { - "inputs": { - "stdlib": "stdlib_11" - }, + "flake-utils_41": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive_12": { - "inputs": { - "stdlib": "stdlib_12" - }, + "flake-utils_42": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive_2": { - "inputs": { - "stdlib": "stdlib_2" - }, + "flake-utils_43": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive_3": { - "inputs": { - "stdlib": "stdlib_3" - }, + "flake-utils_44": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive_4": { - "inputs": { - "stdlib": "stdlib_4" - }, + "flake-utils_45": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive_5": { - "inputs": { - "stdlib": "stdlib_5" - }, + "flake-utils_46": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive_6": { - "inputs": { - "stdlib": "stdlib_6" + "flake-utils_47": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_48": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive_7": { + "flake-utils_49": { "inputs": { - "stdlib": "stdlib_7" + "systems": "systems_5" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inclusive_8": { - "inputs": { - "stdlib": "stdlib_8" - }, + "flake-utils_5": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "inclusive_9": { + "flake-utils_50": { "inputs": { - "stdlib": "stdlib_9" + "systems": "systems_6" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "inputs-check": { + "flake-utils_51": { "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_6" + "systems": "systems_7" }, "locked": { - "lastModified": 1692633913, - "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", - "owner": "input-output-hk", - "repo": "inputs-check", - "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "inputs-check", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iogo": { + "flake-utils_52": { "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_52", - "utils": "utils_13" + "systems": "systems_8" }, "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iogo_2": { + "flake-utils_53": { "inputs": { - "devshell": "devshell_19", - "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_81", - "utils": "utils_27" + "systems": "systems_9" }, "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix": { + "flake-utils_54": { "inputs": { - "blst": "blst", - "nixpkgs": "nixpkgs_7", - "secp256k1": "secp256k1", - "sodium": "sodium" + "systems": "systems_10" }, "locked": { - "lastModified": 1691469905, - "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix-ng": { + "flake-utils_55": { "inputs": { - "blst": "blst_2", - "nixpkgs": "nixpkgs_8", - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" + "systems": "systems_11" }, "locked": { - "lastModified": 1696471795, - "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_2": { + "flake-utils_56": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "nixpkgs" - ] + "systems": "systems_12" }, "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohk-nix_3": { + "flake-utils_57": { "inputs": { - "blst": "blst_7", - "nixpkgs": [ - "nixpkgs" - ], - "secp256k1": "secp256k1_7", - "sodium": "sodium_7" + "systems": "systems_13" }, "locked": { - "lastModified": 1715898223, - "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix": { + "flake-utils_58": { "inputs": { - "blst": "blst_3", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "secp256k1": "secp256k1_3", - "sodium": "sodium_3" + "systems": "systems_14" }, "locked": { - "lastModified": 1698999258, - "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_2": { + "flake-utils_59": { "inputs": { - "blst": "blst_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "secp256k1": "secp256k1_4", - "sodium": "sodium_4" + "systems": "systems_15" }, "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "blst": "blst_5", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "secp256k1": "secp256k1_5", - "sodium": "sodium_5" - }, + "flake-utils_6": { "locked": { - "lastModified": 1698746924, - "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_4": { + "flake-utils_60": { "inputs": { - "blst": "blst_6", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1_6", - "sodium": "sodium_6" + "systems": "systems_16" }, "locked": { - "lastModified": 1715898223, - "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_5": { + "flake-utils_61": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] + "systems": "systems_17" }, "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iohkNix_6": { + "flake-utils_62": { "inputs": { - "nixpkgs": [ - "db-sync", - "nixpkgs" - ] + "systems": "systems_18" }, "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iserv-proxy": { - "flake": false, + "flake-utils_63": { + "inputs": { + "systems": "systems_19" + }, "locked": { - "lastModified": 1688517130, - "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", - "ref": "hkm/remote-iserv", - "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", - "revCount": 13, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "iserv-proxy_2": { - "flake": false, + "flake-utils_64": { + "inputs": { + "systems": "systems_20" + }, "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "iserv-proxy_3": { - "flake": false, + "flake-utils_65": { + "inputs": { + "systems": "systems_21" + }, "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "iserv-proxy_4": { - "flake": false, + "flake-utils_66": { + "inputs": { + "systems": "systems_22" + }, "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "numtide", + "repo": "flake-utils", + "type": "github" } }, - "iserv-proxy_5": { - "flake": false, + "flake-utils_67": { + "inputs": { + "systems": "systems_23" + }, "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "iserv-proxy_6": { - "flake": false, + "flake-utils_68": { + "inputs": { + "systems": "systems_24" + }, "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src": { - "flake": false, + "flake-utils_69": { + "inputs": { + "systems": "systems_25" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_10": { - "flake": false, + "flake-utils_7": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_11": { - "flake": false, + "flake-utils_70": { + "inputs": { + "systems": "systems_26" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_12": { - "flake": false, + "flake-utils_71": { + "inputs": { + "systems": "systems_27" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_13": { - "flake": false, + "flake-utils_72": { + "inputs": { + "systems": "systems_28" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_14": { - "flake": false, + "flake-utils_73": { + "inputs": { + "systems": "systems_29" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_15": { - "flake": false, + "flake-utils_74": { + "inputs": { + "systems": "systems_30" + }, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_16": { - "flake": false, + "flake-utils_75": { + "inputs": { + "systems": "systems_31" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_17": { - "flake": false, + "flake-utils_76": { + "inputs": { + "systems": "systems_32" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_18": { - "flake": false, + "flake-utils_77": { + "inputs": { + "systems": "systems_33" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_19": { - "flake": false, + "flake-utils_78": { + "inputs": { + "systems": "systems_34" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_2": { - "flake": false, + "flake-utils_79": { + "inputs": { + "systems": "systems_35" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_20": { - "flake": false, + "flake-utils_8": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_3": { - "flake": false, + "flake-utils_80": { + "inputs": { + "systems": "systems_36" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_4": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" + "flake-utils_81": { + "inputs": { + "systems": "systems_37" }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_5": { - "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_6": { - "flake": false, + "flake-utils_82": { + "inputs": { + "systems": "systems_38" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_7": { - "flake": false, + "flake-utils_83": { + "inputs": { + "systems": "systems_39" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_8": { - "flake": false, + "flake-utils_84": { + "inputs": { + "systems": "systems_40" + }, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "lowdown-src_9": { - "flake": false, + "flake-utils_85": { + "inputs": { + "systems": "systems_41" + }, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "mdbook-kroki-preprocessor": { - "flake": false, + "flake-utils_86": { + "inputs": { + "systems": "systems_42" + }, "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { - "flake": false, + "flake-utils_87": { + "inputs": { + "systems": "systems_43" + }, "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "n2c": { + "flake-utils_88": { "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] + "systems": "systems_44" }, "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "n2c_2": { + "flake-utils_89": { "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] + "systems": "systems_45" }, "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, + "flake-utils_9": { "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "n2c_4": { + "flake-utils_90": { "inputs": { - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] + "systems": "systems_46" }, "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "n2c_5": { + "flake-utils_91": { "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] + "systems": "systems_47" }, "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "n2c_6": { + "flake-utils_92": { "inputs": { - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_57" + "systems": "systems_48" }, "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "n2c_7": { + "flake-utils_93": { "inputs": { - "flake-utils": "flake-utils_44", - "nixpkgs": "nixpkgs_92" + "systems": "systems_49" }, "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "nix": { + "flake-utils_94": { "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_5", - "nixpkgs-regression": "nixpkgs-regression" + "systems": "systems_50" }, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "nix-cache-proxy": { + "flake-utils_95": { "inputs": { - "devshell": "devshell_16", - "inclusive": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_20" + "systems": "systems_51" }, "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "nix-inclusive": { + "flake-utils_96": { "inputs": { - "stdlib": "stdlib_13" + "systems": "systems_52" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "nix-nomad": { + "flake-utils_97": { "inputs": { - "flake-compat": "flake-compat_8", - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ] + "systems": "systems_53" }, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "nix-nomad_2": { + "flake-utils_98": { "inputs": { - "flake-compat": "flake-compat_9", - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ] + "systems": "systems_54" }, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "nix-nomad_3": { + "flake-utils_99": { "inputs": { - "flake-compat": "flake-compat_14", - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_3", - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ] + "systems": "systems_55" }, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "nix-tools": { + "flakeCompat": { "flake": false, "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "nix-tools_2": { - "flake": false, + "follower": { + "inputs": { + "devshell": "devshell_15", + "inclusive": "inclusive_8", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_19" + }, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "nomad-follower", "type": "github" } }, - "nix-tools_3": { + "ghc-8.6.5-iohk": { "flake": false, "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix-tools_4": { + "ghc-8.6.5-iohk_10": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_16" - }, + "ghc-8.6.5-iohk_11": { + "flake": false, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_18" - }, + "ghc-8.6.5-iohk_12": { + "flake": false, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_22" - }, + "ghc-8.6.5-iohk_13": { + "flake": false, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix2container_4": { - "inputs": { - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_26" - }, + "ghc-8.6.5-iohk_14": { + "flake": false, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix2container_5": { - "inputs": { - "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_31" - }, + "ghc-8.6.5-iohk_15": { + "flake": false, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix2container_6": { - "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_35" - }, + "ghc-8.6.5-iohk_16": { + "flake": false, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix2container_7": { - "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": "nixpkgs_95" - }, + "ghc-8.6.5-iohk_17": { + "flake": false, "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_10": { - "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_58", - "nixpkgs-regression": "nixpkgs-regression_9" - }, + "ghc-8.6.5-iohk_18": { + "flake": false, "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_60", - "nixpkgs-regression": "nixpkgs-regression_10" - }, + "ghc-8.6.5-iohk_19": { + "flake": false, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_12": { - "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_67", - "nixpkgs-regression": "nixpkgs-regression_11" - }, + "ghc-8.6.5-iohk_2": { + "flake": false, "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_13": { - "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_68", - "nixpkgs-regression": "nixpkgs-regression_12" - }, + "ghc-8.6.5-iohk_20": { + "flake": false, "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_14": { - "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_73", - "nixpkgs-regression": "nixpkgs-regression_13" - }, + "ghc-8.6.5-iohk_21": { + "flake": false, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", - "type": "github" + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_15": { - "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_75" - }, + "ghc-8.6.5-iohk_22": { + "flake": false, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_16": { - "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_77", - "nixpkgs-regression": "nixpkgs-regression_14" - }, + "ghc-8.6.5-iohk_23": { + "flake": false, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_17": { - "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_89", - "nixpkgs-regression": "nixpkgs-regression_15" - }, + "ghc-8.6.5-iohk_24": { + "flake": false, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_18": { - "inputs": { - "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_91", - "nixpkgs-regression": "nixpkgs-regression_16" - }, + "ghc-8.6.5-iohk_25": { + "flake": false, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_19": { - "inputs": { - "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_98", - "nixpkgs-regression": "nixpkgs-regression_17" - }, + "ghc-8.6.5-iohk_3": { + "flake": false, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_2": { - "inputs": { - "flake-compat": "flake-compat_3", - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_9", - "nixpkgs-regression": "nixpkgs-regression_2" - }, + "ghc-8.6.5-iohk_4": { + "flake": false, "locked": { - "lastModified": 1693573010, - "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", - "owner": "nixos", - "repo": "nix", - "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "nixos", - "ref": "2.17-maintenance", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_20": { - "inputs": { - "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_99", - "nixpkgs-regression": "nixpkgs-regression_18" - }, + "ghc-8.6.5-iohk_5": { + "flake": false, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_13", - "nixpkgs-regression": "nixpkgs-regression_3" - }, + "ghc-8.6.5-iohk_6": { + "flake": false, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_15", - "nixpkgs-regression": "nixpkgs-regression_4" - }, + "ghc-8.6.5-iohk_7": { + "flake": false, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_25", - "nixpkgs-regression": "nixpkgs-regression_5" - }, + "ghc-8.6.5-iohk_8": { + "flake": false, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_34", - "nixpkgs-regression": "nixpkgs-regression_6" - }, + "ghc-8.6.5-iohk_9": { + "flake": false, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "nix_7": { - "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_44", - "nixpkgs-regression": "nixpkgs-regression_7" - }, + "ghc910X": { + "flake": false, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", - "type": "github" + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nix_8": { - "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_46" - }, + "ghc910X_2": { + "flake": false, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", - "type": "github" + "lastModified": 1714520650, + "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", + "ref": "ghc-9.10", + "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", + "revCount": 62663, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "repo": "nix", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nix_9": { - "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_48", - "nixpkgs-regression": "nixpkgs-regression_8" - }, + "ghc910X_3": { + "flake": false, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "ref": "ghc-9.10", + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixago": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, + "ghc910X_4": { + "flake": false, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "ref": "ghc-9.10", + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixago-exts": { + "ghc910X_5": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixago-exts_2": { + "ghc910X_6": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "ghc910X_7": { + "flake": false, "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", - "owner": "nix-community", - "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", - "type": "github" + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "ref": "ghc-9.10", + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, + "ghc910X_8": { + "flake": false, "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", - "type": "github" + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixago_4": { - "inputs": { - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "ghc910X_9": { + "flake": false, "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", - "owner": "nix-community", - "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", - "type": "github" + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixago_5": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] - }, + "ghc911": { + "flake": false, "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", - "type": "github" + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixago_6": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, + "ghc911_2": { + "flake": false, "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", - "type": "github" + "lastModified": 1714817013, + "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", + "ref": "refs/heads/master", + "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", + "revCount": 62816, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixago_7": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "ghc911_3": { + "flake": false, "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", - "type": "github" + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "ref": "refs/heads/master", + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixlib": { + "ghc911_4": { + "flake": false, "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", - "type": "github" + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "ref": "refs/heads/master", + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixlib_2": { + "ghc911_5": { + "flake": false, "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", - "type": "github" + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixlib_3": { + "ghc911_6": { + "flake": false, "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", - "type": "github" + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs": { + "ghc911_7": { + "flake": false, "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", - "type": "github" + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "ref": "refs/heads/master", + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003": { + "ghc911_8": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003_10": { + "ghc911_9": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003_2": { + "ghc98X": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003_3": { + "ghc98X_10": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003_4": { + "ghc98X_2": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003_5": { + "ghc98X_3": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003_6": { + "ghc98X_4": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003_7": { + "ghc98X_5": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003_8": { + "ghc98X_6": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2003_9": { + "ghc98X_7": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105": { + "ghc98X_8": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105_10": { + "ghc98X_9": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105_2": { + "ghc99": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105_3": { + "ghc99_10": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105_4": { + "ghc99_2": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105_5": { + "ghc99_3": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105_6": { + "ghc99_4": { + "flake": false, "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105_7": { + "ghc99_5": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105_8": { + "ghc99_6": { + "flake": false, "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2105_9": { + "ghc99_7": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2111": { + "ghc99_8": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2111_10": { + "ghc99_9": { + "flake": false, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "nixpkgs-2111_2": { + "gitignore": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2111_3": { + "gitignore_10": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2111_4": { + "gitignore_11": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2111_5": { + "gitignore_12": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2111_6": { + "gitignore_13": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2111_7": { + "gitignore_14": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2111_8": { + "gitignore_15": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2111_9": { + "gitignore_16": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2205": { + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2205_2": { + "gitignore_3": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2205_3": { + "gitignore_4": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2205_4": { + "gitignore_5": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2205_5": { + "gitignore_6": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2205_6": { - "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", - "type": "github" + "gitignore_7": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2205_7": { + "gitignore_8": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2211": { + "gitignore_9": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "nixpkgs-2211_2": { + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_17", + "utils": "utils_2" + }, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "nixpkgs-2211_3": { + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_21", + "utils": "utils_4" + }, "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "nixpkgs-2211_4": { + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_30", + "utils": "utils_6" + }, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "nixpkgs-2211_5": { + "hackage": { + "flake": false, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1692145451, + "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-2211_6": { + "hackage-nix": { + "flake": false, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1718843827, + "narHash": "sha256-FrzH96+EaI7O6ZfCi7Ifya3KS82kLTb4cmqmM+eRhbE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "18a2a34abd64aad840134c2fa04e57e0826848b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-2305": { + "hackageNix": { + "flake": false, "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "lastModified": 1702945378, + "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-2305_2": { + "hackageNix_2": { + "flake": false, "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-2305_3": { + "hackageNix_3": { + "flake": false, "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-2305_4": { + "hackageNix_4": { + "flake": false, "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "lastModified": 1711412520, + "narHash": "sha256-48Aw1X7IuXZR6Wi2WOlvj9HpoUHty/JW1MqAehgnoHo=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "fc84d1170ccc83d50db7b71a6edd090b2cef7657", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-2305_5": { + "hackage_10": { + "flake": false, "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-2311": { + "hackage_11": { + "flake": false, "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-2311_2": { + "hackage_12": { + "flake": false, "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-docker": { + "hackage_13": { + "flake": false, "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-lib": { + "hackage_14": { + "flake": false, "locked": { - "dir": "lib", - "lastModified": 1671359686, - "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", + "lastModified": 1714610224, + "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", "type": "github" }, "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-lib_2": { + "hackage_15": { + "flake": false, "locked": { - "dir": "lib", - "lastModified": 1682879489, - "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", "type": "github" }, "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-lib_3": { + "hackage_16": { + "flake": false, "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-lib_4": { + "hackage_17": { + "flake": false, "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-lib_5": { + "hackage_18": { + "flake": false, "locked": { - "lastModified": 1714640452, - "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" } }, - "nixpkgs-regression": { + "hackage_19": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-regression_10": { + "hackage_2": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" } }, - "nixpkgs-regression_11": { + "hackage_20": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" } }, - "nixpkgs-regression_12": { + "hackage_3": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" } }, - "nixpkgs-regression_13": { + "hackage_4": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" } }, - "nixpkgs-regression_14": { + "hackage_5": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" } }, - "nixpkgs-regression_15": { + "hackage_6": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1714955666, + "narHash": "sha256-2FHDnM7dK2FH7xGQmcoHbMMP1PGHgKkBmfXC5/LLNVc=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "69a0fce63963cf4299cb24c2a0d2ee0428d227dd", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" } }, - "nixpkgs-regression_16": { + "hackage_7": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1714610224, + "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" } }, - "nixpkgs-regression_17": { + "hackage_8": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" } }, - "nixpkgs-regression_18": { + "hackage_9": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "nixpkgs-regression_2": { + "haskell-flake": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "srid", + "repo": "haskell-flake", "type": "github" } }, - "nixpkgs-regression_3": { + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "empty-flake" + ] + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1692147008, + "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-regression_4": { + "haskell-nix_10": { + "inputs": { + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cabal-36": "cabal-36_16", + "cardano-shell": "cardano-shell_16", + "flake-compat": "flake-compat_35", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "ghc910X": "ghc910X_6", + "ghc911": "ghc911_6", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_12", + "hls-2.0": "hls-2.0_11", + "hls-2.2": "hls-2.2_10", + "hls-2.3": "hls-2.3_10", + "hls-2.4": "hls-2.4_10", + "hls-2.5": "hls-2.5_6", + "hls-2.6": "hls-2.6_6", + "hls-2.7": "hls-2.7_5", + "hpc-coveralls": "hpc-coveralls_16", + "hydra": "hydra_18", + "iserv-proxy": "iserv-proxy_12", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-2205": "nixpkgs-2205_13", + "nixpkgs-2211": "nixpkgs-2211_12", + "nixpkgs-2305": "nixpkgs-2305_11", + "nixpkgs-2311": "nixpkgs-2311_8", + "nixpkgs-unstable": "nixpkgs-unstable_19", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_15" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-regression_5": { + "haskell-nix_11": { + "inputs": { + "HTTP": "HTTP_17", + "cabal-32": "cabal-32_17", + "cabal-34": "cabal-34_17", + "cabal-36": "cabal-36_17", + "cardano-shell": "cardano-shell_17", + "flake-compat": "flake-compat_36", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", + "ghc98X": "ghc98X_5", + "ghc99": "ghc99_5", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_13", + "hls-2.0": "hls-2.0_12", + "hls-2.2": "hls-2.2_11", + "hls-2.3": "hls-2.3_11", + "hls-2.4": "hls-2.4_11", + "hpc-coveralls": "hpc-coveralls_17", + "hydra": "hydra_19", + "iserv-proxy": "iserv-proxy_13", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_17", + "nixpkgs-2105": "nixpkgs-2105_17", + "nixpkgs-2111": "nixpkgs-2111_17", + "nixpkgs-2205": "nixpkgs-2205_14", + "nixpkgs-2211": "nixpkgs-2211_13", + "nixpkgs-2305": "nixpkgs-2305_12", + "nixpkgs-2311": "nixpkgs-2311_9", + "nixpkgs-unstable": "nixpkgs-unstable_20", + "old-ghc-nix": "old-ghc-nix_17", + "stackage": "stackage_16" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-regression_6": { + "haskell-nix_12": { + "inputs": { + "HTTP": "HTTP_18", + "cabal-32": "cabal-32_18", + "cabal-34": "cabal-34_18", + "cabal-36": "cabal-36_18", + "cardano-shell": "cardano-shell_18", + "flake-compat": "flake-compat_38", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", + "ghc98X": "ghc98X_6", + "ghc99": "ghc99_6", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_14", + "hls-2.0": "hls-2.0_13", + "hls-2.2": "hls-2.2_12", + "hls-2.3": "hls-2.3_12", + "hls-2.4": "hls-2.4_12", + "hpc-coveralls": "hpc-coveralls_18", + "hydra": "hydra_20", + "iserv-proxy": "iserv-proxy_14", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_18", + "nixpkgs-2105": "nixpkgs-2105_18", + "nixpkgs-2111": "nixpkgs-2111_18", + "nixpkgs-2205": "nixpkgs-2205_15", + "nixpkgs-2211": "nixpkgs-2211_14", + "nixpkgs-2305": "nixpkgs-2305_13", + "nixpkgs-2311": "nixpkgs-2311_10", + "nixpkgs-unstable": "nixpkgs-unstable_21", + "old-ghc-nix": "old-ghc-nix_18", + "stackage": "stackage_17" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-regression_7": { + "haskell-nix_13": { + "inputs": { + "HTTP": "HTTP_19", + "cabal-32": "cabal-32_19", + "cabal-34": "cabal-34_19", + "cabal-36": "cabal-36_19", + "cardano-shell": "cardano-shell_19", + "flake-compat": "flake-compat_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", + "ghc910X": "ghc910X_7", + "ghc911": "ghc911_7", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_15", + "hls-2.0": "hls-2.0_14", + "hls-2.2": "hls-2.2_13", + "hls-2.3": "hls-2.3_13", + "hls-2.4": "hls-2.4_13", + "hls-2.5": "hls-2.5_7", + "hls-2.6": "hls-2.6_7", + "hls-2.7": "hls-2.7_6", + "hpc-coveralls": "hpc-coveralls_19", + "hydra": "hydra_21", + "iserv-proxy": "iserv-proxy_15", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_19", + "nixpkgs-2105": "nixpkgs-2105_19", + "nixpkgs-2111": "nixpkgs-2111_19", + "nixpkgs-2205": "nixpkgs-2205_16", + "nixpkgs-2211": "nixpkgs-2211_15", + "nixpkgs-2305": "nixpkgs-2305_14", + "nixpkgs-2311": "nixpkgs-2311_11", + "nixpkgs-unstable": "nixpkgs-unstable_22", + "old-ghc-nix": "old-ghc-nix_19", + "stackage": "stackage_18" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1714611016, + "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" } }, - "nixpkgs-regression_8": { + "haskell-nix_14": { + "inputs": { + "HTTP": "HTTP_20", + "cabal-32": "cabal-32_20", + "cabal-34": "cabal-34_20", + "cabal-36": "cabal-36_20", + "cardano-shell": "cardano-shell_20", + "flake-compat": "flake-compat_43", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", + "ghc910X": "ghc910X_8", + "ghc911": "ghc911_8", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_16", + "hls-2.0": "hls-2.0_15", + "hls-2.2": "hls-2.2_14", + "hls-2.3": "hls-2.3_14", + "hls-2.4": "hls-2.4_14", + "hls-2.5": "hls-2.5_8", + "hls-2.6": "hls-2.6_8", + "hls-2.7": "hls-2.7_7", + "hpc-coveralls": "hpc-coveralls_20", + "hydra": "hydra_22", + "iserv-proxy": "iserv-proxy_16", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_20", + "nixpkgs-2105": "nixpkgs-2105_20", + "nixpkgs-2111": "nixpkgs-2111_20", + "nixpkgs-2205": "nixpkgs-2205_17", + "nixpkgs-2211": "nixpkgs-2211_16", + "nixpkgs-2305": "nixpkgs-2305_15", + "nixpkgs-2311": "nixpkgs-2311_12", + "nixpkgs-unstable": "nixpkgs-unstable_23", + "old-ghc-nix": "old-ghc-nix_20", + "stackage": "stackage_19" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" } }, - "nixpkgs-regression_9": { + "haskell-nix_15": { + "inputs": { + "HTTP": "HTTP_21", + "cabal-32": "cabal-32_21", + "cabal-34": "cabal-34_21", + "cabal-36": "cabal-36_21", + "cardano-shell": "cardano-shell_21", + "flake-compat": "flake-compat_44", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", + "ghc98X": "ghc98X_7", + "ghc99": "ghc99_7", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_17", + "hls-2.0": "hls-2.0_16", + "hls-2.2": "hls-2.2_15", + "hls-2.3": "hls-2.3_15", + "hls-2.4": "hls-2.4_15", + "hpc-coveralls": "hpc-coveralls_21", + "hydra": "hydra_23", + "iserv-proxy": "iserv-proxy_17", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_21", + "nixpkgs-2105": "nixpkgs-2105_21", + "nixpkgs-2111": "nixpkgs-2111_21", + "nixpkgs-2205": "nixpkgs-2205_18", + "nixpkgs-2211": "nixpkgs-2211_17", + "nixpkgs-2305": "nixpkgs-2305_16", + "nixpkgs-2311": "nixpkgs-2311_13", + "nixpkgs-unstable": "nixpkgs-unstable_24", + "old-ghc-nix": "old-ghc-nix_21", + "stackage": "stackage_20" + }, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" } }, - "nixpkgs-stable": { + "haskell-nix_16": { + "inputs": { + "HTTP": "HTTP_22", + "cabal-32": "cabal-32_22", + "cabal-34": "cabal-34_22", + "cabal-36": "cabal-36_22", + "cardano-shell": "cardano-shell_22", + "flake-compat": "flake-compat_46", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", + "ghc98X": "ghc98X_8", + "ghc99": "ghc99_8", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_18", + "hls-2.0": "hls-2.0_17", + "hls-2.2": "hls-2.2_16", + "hls-2.3": "hls-2.3_16", + "hls-2.4": "hls-2.4_16", + "hpc-coveralls": "hpc-coveralls_22", + "hydra": "hydra_24", + "iserv-proxy": "iserv-proxy_18", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_22", + "nixpkgs-2105": "nixpkgs-2105_22", + "nixpkgs-2111": "nixpkgs-2111_22", + "nixpkgs-2205": "nixpkgs-2205_19", + "nixpkgs-2211": "nixpkgs-2211_18", + "nixpkgs-2305": "nixpkgs-2305_17", + "nixpkgs-2311": "nixpkgs-2311_14", + "nixpkgs-unstable": "nixpkgs-unstable_25", + "old-ghc-nix": "old-ghc-nix_22", + "stackage": "stackage_21" + }, "locked": { - "lastModified": 1690066826, - "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable": { + "haskell-nix_17": { + "inputs": { + "HTTP": "HTTP_23", + "cabal-32": "cabal-32_23", + "cabal-34": "cabal-34_23", + "cabal-36": "cabal-36_23", + "cardano-shell": "cardano-shell_23", + "flake-compat": "flake-compat_49", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", + "ghc910X": "ghc910X_9", + "ghc911": "ghc911_9", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_19", + "hls-2.0": "hls-2.0_18", + "hls-2.2": "hls-2.2_17", + "hls-2.3": "hls-2.3_17", + "hls-2.4": "hls-2.4_17", + "hls-2.5": "hls-2.5_9", + "hls-2.6": "hls-2.6_9", + "hls-2.7": "hls-2.7_8", + "hpc-coveralls": "hpc-coveralls_23", + "hydra": "hydra_25", + "iserv-proxy": "iserv-proxy_19", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_23", + "nixpkgs-2105": "nixpkgs-2105_23", + "nixpkgs-2111": "nixpkgs-2111_23", + "nixpkgs-2205": "nixpkgs-2205_20", + "nixpkgs-2211": "nixpkgs-2211_19", + "nixpkgs-2305": "nixpkgs-2305_18", + "nixpkgs-2311": "nixpkgs-2311_15", + "nixpkgs-unstable": "nixpkgs-unstable_26", + "old-ghc-nix": "old-ghc-nix_23", + "stackage": "stackage_22" + }, "locked": { - "lastModified": 1690720142, - "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_10": { + "haskell-nix_18": { + "inputs": { + "HTTP": "HTTP_24", + "cabal-32": "cabal-32_24", + "cabal-34": "cabal-34_24", + "cabal-36": "cabal-36_24", + "cardano-shell": "cardano-shell_24", + "flake-compat": "flake-compat_50", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", + "ghc98X": "ghc98X_9", + "ghc99": "ghc99_9", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_20", + "hls-2.0": "hls-2.0_19", + "hls-2.2": "hls-2.2_18", + "hls-2.3": "hls-2.3_18", + "hls-2.4": "hls-2.4_18", + "hpc-coveralls": "hpc-coveralls_24", + "hydra": "hydra_26", + "iserv-proxy": "iserv-proxy_20", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_24", + "nixpkgs-2105": "nixpkgs-2105_24", + "nixpkgs-2111": "nixpkgs-2111_24", + "nixpkgs-2205": "nixpkgs-2205_21", + "nixpkgs-2211": "nixpkgs-2211_20", + "nixpkgs-2305": "nixpkgs-2305_19", + "nixpkgs-2311": "nixpkgs-2311_16", + "nixpkgs-unstable": "nixpkgs-unstable_27", + "old-ghc-nix": "old-ghc-nix_24", + "stackage": "stackage_23" + }, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_11": { + "haskell-nix_19": { + "inputs": { + "HTTP": "HTTP_25", + "cabal-32": "cabal-32_25", + "cabal-34": "cabal-34_25", + "cabal-36": "cabal-36_25", + "cardano-shell": "cardano-shell_25", + "flake-compat": "flake-compat_52", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", + "ghc98X": "ghc98X_10", + "ghc99": "ghc99_10", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_21", + "hls-2.0": "hls-2.0_20", + "hls-2.2": "hls-2.2_19", + "hls-2.3": "hls-2.3_19", + "hls-2.4": "hls-2.4_19", + "hpc-coveralls": "hpc-coveralls_25", + "hydra": "hydra_27", + "iserv-proxy": "iserv-proxy_21", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_25", + "nixpkgs-2105": "nixpkgs-2105_25", + "nixpkgs-2111": "nixpkgs-2111_25", + "nixpkgs-2205": "nixpkgs-2205_22", + "nixpkgs-2211": "nixpkgs-2211_21", + "nixpkgs-2305": "nixpkgs-2305_20", + "nixpkgs-2311": "nixpkgs-2311_17", + "nixpkgs-unstable": "nixpkgs-unstable_28", + "old-ghc-nix": "old-ghc-nix_25", + "stackage": "stackage_24" + }, "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_12": { + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_6", + "nix-tools": "nix-tools", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" + }, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_13": { + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_43", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": [ + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" + }, "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_2": { + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "ghc910X": "ghc910X_2", + "ghc911": "ghc911_2", + "hackage": [ + "hackage-nix" + ], + "hls-1.10": "hls-1.10_6", + "hls-2.0": "hls-2.0_5", + "hls-2.2": "hls-2.2_4", + "hls-2.3": "hls-2.3_4", + "hls-2.4": "hls-2.4_4", + "hls-2.5": "hls-2.5_2", + "hls-2.6": "hls-2.6_2", + "hls-2.7": "hls-2.7", + "hls-2.8": "hls-2.8", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2305": "nixpkgs-2305_5", + "nixpkgs-2311": "nixpkgs-2311_2", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" + }, "locked": { - "lastModified": 1696577711, - "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", + "lastModified": 1718844631, + "narHash": "sha256-7r7Yo5sHrsNVfr52xDokSWkCes3XAwLmpRCNt/psyY4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "476f3dbe4e4129ef092852f9f7d2cd9d93437529", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_3": { + "haskell-nix_5": { + "inputs": { + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_11", + "flake-compat": "flake-compat_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "ghc910X": "ghc910X_3", + "ghc911": "ghc911_3", + "hackage": [ + "kupo-nixos", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_7", + "hls-2.0": "hls-2.0_6", + "hls-2.2": "hls-2.2_5", + "hls-2.3": "hls-2.3_5", + "hls-2.4": "hls-2.4_5", + "hls-2.5": "hls-2.5_3", + "hls-2.6": "hls-2.6_3", + "hls-2.7": "hls-2.7_2", + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_13", + "iserv-proxy": "iserv-proxy_7", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-2205": "nixpkgs-2205_8", + "nixpkgs-2211": "nixpkgs-2211_7", + "nixpkgs-2305": "nixpkgs-2305_6", + "nixpkgs-2311": "nixpkgs-2311_3", + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_10" + }, "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "lastModified": 1714956613, + "narHash": "sha256-h2n+7SsDHFE9SfStJjHxludjmhV5iupstehh6EGLUGU=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "6a9b5d11bdd09bcf739c5e837fa4a776b4c48646", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_4": { + "haskell-nix_6": { + "inputs": { + "HTTP": "HTTP_12", + "cabal-32": "cabal-32_12", + "cabal-34": "cabal-34_12", + "cabal-36": "cabal-36_12", + "cardano-shell": "cardano-shell_12", + "flake-compat": "flake-compat_28", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "ghc910X": "ghc910X_4", + "ghc911": "ghc911_4", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_8", + "hls-2.0": "hls-2.0_7", + "hls-2.2": "hls-2.2_6", + "hls-2.3": "hls-2.3_6", + "hls-2.4": "hls-2.4_6", + "hls-2.5": "hls-2.5_4", + "hls-2.6": "hls-2.6_4", + "hls-2.7": "hls-2.7_3", + "hpc-coveralls": "hpc-coveralls_12", + "hydra": "hydra_14", + "iserv-proxy": "iserv-proxy_8", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_12", + "nixpkgs-2105": "nixpkgs-2105_12", + "nixpkgs-2111": "nixpkgs-2111_12", + "nixpkgs-2205": "nixpkgs-2205_9", + "nixpkgs-2211": "nixpkgs-2211_8", + "nixpkgs-2305": "nixpkgs-2305_7", + "nixpkgs-2311": "nixpkgs-2311_4", + "nixpkgs-unstable": "nixpkgs-unstable_15", + "old-ghc-nix": "old-ghc-nix_12", + "stackage": "stackage_11" + }, "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "lastModified": 1714611016, + "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_5": { + "haskell-nix_7": { + "inputs": { + "HTTP": "HTTP_13", + "cabal-32": "cabal-32_13", + "cabal-34": "cabal-34_13", + "cabal-36": "cabal-36_13", + "cardano-shell": "cardano-shell_13", + "flake-compat": "flake-compat_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", + "ghc910X": "ghc910X_5", + "ghc911": "ghc911_5", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_9", + "hls-2.0": "hls-2.0_8", + "hls-2.2": "hls-2.2_7", + "hls-2.3": "hls-2.3_7", + "hls-2.4": "hls-2.4_7", + "hls-2.5": "hls-2.5_5", + "hls-2.6": "hls-2.6_5", + "hls-2.7": "hls-2.7_4", + "hpc-coveralls": "hpc-coveralls_13", + "hydra": "hydra_15", + "iserv-proxy": "iserv-proxy_9", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_13", + "nixpkgs-2105": "nixpkgs-2105_13", + "nixpkgs-2111": "nixpkgs-2111_13", + "nixpkgs-2205": "nixpkgs-2205_10", + "nixpkgs-2211": "nixpkgs-2211_9", + "nixpkgs-2305": "nixpkgs-2305_8", + "nixpkgs-2311": "nixpkgs-2311_5", + "nixpkgs-unstable": "nixpkgs-unstable_16", + "old-ghc-nix": "old-ghc-nix_13", + "stackage": "stackage_12" + }, "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_6": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" + "haskell-nix_8": { + "inputs": { + "HTTP": "HTTP_14", + "cabal-32": "cabal-32_14", + "cabal-34": "cabal-34_14", + "cabal-36": "cabal-36_14", + "cardano-shell": "cardano-shell_14", + "flake-compat": "flake-compat_30", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", + "ghc98X": "ghc98X_3", + "ghc99": "ghc99_3", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_10", + "hls-2.0": "hls-2.0_9", + "hls-2.2": "hls-2.2_8", + "hls-2.3": "hls-2.3_8", + "hls-2.4": "hls-2.4_8", + "hpc-coveralls": "hpc-coveralls_14", + "hydra": "hydra_16", + "iserv-proxy": "iserv-proxy_10", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_14", + "nixpkgs-2105": "nixpkgs-2105_14", + "nixpkgs-2111": "nixpkgs-2111_14", + "nixpkgs-2205": "nixpkgs-2205_11", + "nixpkgs-2211": "nixpkgs-2211_10", + "nixpkgs-2305": "nixpkgs-2305_9", + "nixpkgs-2311": "nixpkgs-2311_6", + "nixpkgs-unstable": "nixpkgs-unstable_17", + "old-ghc-nix": "old-ghc-nix_14", + "stackage": "stackage_13" }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_7": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs-unstable_8": { - "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", - "type": "github" + "haskell-nix_9": { + "inputs": { + "HTTP": "HTTP_15", + "cabal-32": "cabal-32_15", + "cabal-34": "cabal-34_15", + "cabal-36": "cabal-36_15", + "cardano-shell": "cardano-shell_15", + "flake-compat": "flake-compat_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", + "ghc98X": "ghc98X_4", + "ghc99": "ghc99_4", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_11", + "hls-2.0": "hls-2.0_10", + "hls-2.2": "hls-2.2_9", + "hls-2.3": "hls-2.3_9", + "hls-2.4": "hls-2.4_9", + "hpc-coveralls": "hpc-coveralls_15", + "hydra": "hydra_17", + "iserv-proxy": "iserv-proxy_11", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_15", + "nixpkgs-2105": "nixpkgs-2105_15", + "nixpkgs-2111": "nixpkgs-2111_15", + "nixpkgs-2205": "nixpkgs-2205_12", + "nixpkgs-2211": "nixpkgs-2211_11", + "nixpkgs-2305": "nixpkgs-2305_10", + "nixpkgs-2311": "nixpkgs-2311_7", + "nixpkgs-unstable": "nixpkgs-unstable_18", + "old-ghc-nix": "old-ghc-nix_15", + "stackage": "stackage_14" }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_9": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs_10": { + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-compat": "flake-compat_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "cardano-nix", + "cardano-db-sync", + "hackageNix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage" + }, "locked": { - "lastModified": 1690026219, - "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", + "lastModified": 1701053834, + "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs_100": { + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "cardano-nix", + "cardano-node-8.1.1", + "hackageNix" + ], + "hls-1.10": "hls-1.10_3", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "iserv-proxy": "iserv-proxy_3", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_2" + }, "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs_11": { + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-compat": "flake-compat_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", + "hackage": [ + "cardano-nix", + "cardano-node-8.7.3", + "hackageNix" + ], + "hls-1.10": "hls-1.10_4", + "hls-2.0": "hls-2.0_3", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_4", + "iserv-proxy": "iserv-proxy_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2211": "nixpkgs-2211_4", + "nixpkgs-2305": "nixpkgs-2305_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_3" + }, "locked": { - "lastModified": 1675249806, - "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs_12": { - "locked": { - "lastModified": 1636823747, - "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-compat": "flake-compat_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "ghc910X": "ghc910X", + "ghc911": "ghc911", + "hackage": [ + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10_5", + "hls-2.0": "hls-2.0_4", + "hls-2.2": "hls-2.2_3", + "hls-2.3": "hls-2.3_3", + "hls-2.4": "hls-2.4_3", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_5", + "iserv-proxy": "iserv-proxy_5", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2211": "nixpkgs-2211_5", + "nixpkgs-2305": "nixpkgs-2305_4", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_4" + }, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1712278203, + "narHash": "sha256-L4eFUxnID2EYYtONE3fmZxPQdgPlB6XbAfIjlZi4c+U=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "57938c23a4d40e5a746f05f2b71af11a7273a133", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs_14": { + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" } }, - "nixpkgs_15": { + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_48", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" + }, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "nixpkgs_16": { + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_27" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", "type": "github" } }, - "nixpkgs_17": { + "haumea_2": { + "inputs": { + "nixpkgs": "nixpkgs_36" + }, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", "type": "github" } }, - "nixpkgs_18": { + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "cardano-nix", + "flake-parts" + ], + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1714676393, + "narHash": "sha256-OA2LZPTCHyH0PcsNkjeTLvgsn4JmsV2VTvXQacHeUZU=", + "owner": "mlabs-haskell", + "repo": "hercules-ci-effects", + "rev": "5ad8f9613b735cb4f8222f07ae45ca37bfe76a23", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "ref": "push-cache-effect", + "repo": "hercules-ci-effects", "type": "github" } }, - "nixpkgs_19": { + "hercules-ci-effects_2": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_100" + }, "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "lastModified": 1718018037, + "narHash": "sha256-03rLBd/lKecgaKz0j5ESUf9lDn5R0SJatZTKLL5unWE=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "0ab08b23ce3c3f75fe9a5598756b6fb8bcf0b414", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", "type": "github" } }, - "nixpkgs_2": { + "hls-1.10": { + "flake": false, "locked": { - "lastModified": 1677543769, - "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_20": { + "hls-1.10_10": { + "flake": false, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_21": { + "hls-1.10_11": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_22": { + "hls-1.10_12": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_23": { + "hls-1.10_13": { + "flake": false, "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_24": { + "hls-1.10_14": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_25": { + "hls-1.10_15": { + "flake": false, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_26": { + "hls-1.10_16": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_27": { + "hls-1.10_17": { + "flake": false, "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_28": { + "hls-1.10_18": { + "flake": false, "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_29": { + "hls-1.10_19": { + "flake": false, "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_3": { + "hls-1.10_2": { + "flake": false, "locked": { - "lastModified": 1645013224, - "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_30": { + "hls-1.10_20": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_31": { + "hls-1.10_21": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_32": { + "hls-1.10_3": { + "flake": false, "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_33": { + "hls-1.10_4": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_34": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_35": { + "hls-1.10_5": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_36": { + "hls-1.10_6": { + "flake": false, "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_37": { + "hls-1.10_7": { + "flake": false, "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_38": { + "hls-1.10_8": { + "flake": false, "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_39": { + "hls-1.10_9": { + "flake": false, "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_4": { + "hls-2.0": { + "flake": false, "locked": { - "lastModified": 1680945546, - "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_40": { + "hls-2.0_10": { + "flake": false, "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_41": { + "hls-2.0_11": { + "flake": false, "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_42": { + "hls-2.0_12": { + "flake": false, "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_43": { + "hls-2.0_13": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_44": { + "hls-2.0_14": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_45": { + "hls-2.0_15": { + "flake": false, "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_46": { + "hls-2.0_16": { + "flake": false, "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" - } - }, - "nixpkgs_47": { - "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_48": { + "hls-2.0_17": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_49": { + "hls-2.0_18": { + "flake": false, "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_5": { + "hls-2.0_19": { + "flake": false, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_50": { + "hls-2.0_2": { + "flake": false, "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_51": { + "hls-2.0_20": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_52": { + "hls-2.0_3": { + "flake": false, "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_53": { + "hls-2.0_4": { + "flake": false, "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_54": { + "hls-2.0_5": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_55": { + "hls-2.0_6": { + "flake": false, "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_56": { + "hls-2.0_7": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_57": { + "hls-2.0_8": { + "flake": false, "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_58": { + "hls-2.0_9": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_59": { + "hls-2.2": { + "flake": false, "locked": { - "lastModified": 1652559422, - "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_6": { + "hls-2.2_10": { + "flake": false, "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-23.05", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_60": { + "hls-2.2_11": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_61": { + "hls-2.2_12": { + "flake": false, "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_62": { + "hls-2.2_13": { + "flake": false, "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_63": { + "hls-2.2_14": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_64": { + "hls-2.2_15": { + "flake": false, "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_65": { + "hls-2.2_16": { + "flake": false, "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_66": { + "hls-2.2_17": { + "flake": false, "locked": { - "lastModified": 1643381941, - "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_67": { + "hls-2.2_18": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_68": { + "hls-2.2_19": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_69": { + "hls-2.2_2": { + "flake": false, "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_7": { + "hls-2.2_3": { + "flake": false, "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_70": { + "hls-2.2_4": { + "flake": false, "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_71": { + "hls-2.2_5": { + "flake": false, "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } }, - "nixpkgs_72": { + "hls-2.2_6": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_73": { + "hls-2.2_7": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_74": { + "hls-2.2_8": { + "flake": false, "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_75": { + "hls-2.2_9": { + "flake": false, "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_76": { + "hls-2.3": { + "flake": false, "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_77": { + "hls-2.3_10": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_78": { + "hls-2.3_11": { + "flake": false, "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_79": { + "hls-2.3_12": { + "flake": false, "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_8": { + "hls-2.3_13": { + "flake": false, "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_80": { + "hls-2.3_14": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_81": { + "hls-2.3_15": { + "flake": false, "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_82": { + "hls-2.3_16": { + "flake": false, "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_83": { + "hls-2.3_17": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_84": { + "hls-2.3_18": { + "flake": false, "locked": { - "lastModified": 1646470760, - "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_85": { + "hls-2.3_19": { + "flake": false, "locked": { - "lastModified": 1619531122, - "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_86": { + "hls-2.3_2": { + "flake": false, "locked": { - "lastModified": 1656461576, - "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_87": { + "hls-2.3_3": { + "flake": false, "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_88": { + "hls-2.3_4": { + "flake": false, "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_89": { + "hls-2.3_5": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_9": { + "hls-2.3_6": { + "flake": false, "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_90": { + "hls-2.3_7": { + "flake": false, "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_91": { + "hls-2.3_8": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_92": { + "hls-2.3_9": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_93": { + "hls-2.4": { + "flake": false, "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_94": { + "hls-2.4_10": { + "flake": false, "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_95": { + "hls-2.4_11": { + "flake": false, "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_96": { + "hls-2.4_12": { + "flake": false, "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_97": { + "hls-2.4_13": { + "flake": false, "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nixpkgs_98": { + "hls-2.4_14": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" } }, - "nixpkgs_99": { + "hls-2.4_15": { + "flake": false, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nomad": { - "inputs": { - "nix": "nix_8", - "nixpkgs": "nixpkgs_47", - "utils": "utils_9" - }, + "hls-2.4_16": { + "flake": false, "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nomad-driver-nix": { - "inputs": { - "devshell": "devshell_7", - "inclusive": "inclusive_2", - "nix": "nix_9", - "nixpkgs": "nixpkgs_49", - "utils": "utils_10" - }, + "hls-2.4_17": { + "flake": false, "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nomad-driver-nix_2": { - "inputs": { - "devshell": "devshell_10", - "inclusive": "inclusive_5", - "nix": "nix_11", - "nixpkgs": "nixpkgs_61", - "utils": "utils_15" - }, + "hls-2.4_18": { + "flake": false, "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nomad-driver-nix_3": { - "inputs": { - "devshell": "devshell_17", - "inclusive": "inclusive_10", - "nix": "nix_16", - "nixpkgs": "nixpkgs_78", - "utils": "utils_24" - }, + "hls-2.4_19": { + "flake": false, "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nomad-follower": { - "inputs": { - "devshell": "devshell_8", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_50", - "utils": "utils_11" - }, + "hls-2.4_2": { + "flake": false, "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "nomad-follower_2": { - "inputs": { - "devshell": "devshell_11", - "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_62", - "utils": "utils_16" - }, + "hls-2.4_3": { + "flake": false, "locked": { - "lastModified": 1658244176, - "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nomad-follower_3": { - "inputs": { - "devshell": "devshell_18", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_79", - "utils": "utils_25" - }, + "hls-2.4_4": { + "flake": false, "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nomad_2": { - "inputs": { - "nix": "nix_15", - "nixpkgs": "nixpkgs_76", - "utils": "utils_23" - }, + "hls-2.4_5": { + "flake": false, "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nosys": { + "hls-2.4_6": { + "flake": false, "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nosys_2": { + "hls-2.4_7": { + "flake": false, "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nosys_3": { + "hls-2.4_8": { + "flake": false, "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nosys_4": { + "hls-2.4_9": { + "flake": false, "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "nosys_5": { + "hls-2.5": { + "flake": false, "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "offchain-metadata-tools-service": { + "hls-2.5_2": { "flake": false, "locked": { - "lastModified": 1684160858, - "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", - "owner": "input-output-hk", - "repo": "offchain-metadata-tools", - "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "feat-add-password-to-db-conn-string", - "repo": "offchain-metadata-tools", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "ogmios": { + "hls-2.5_3": { "flake": false, "locked": { - "lastModified": 1657544501, - "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v5.5.2", - "repo": "ogmios", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "ogmios_2": { + "hls-2.5_4": { "flake": false, "locked": { - "lastModified": 1717661787, - "narHash": "sha256-AnIxPug+DnPHn69z+Vz+Us2a+Z3LnkI+LJaIyUm4c5w=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "4dbf1f34d9ea046dda50bf0c58bd276f80f41784", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v6.4.0", - "repo": "ogmios", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix": { + "hls-2.5_5": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix_10": { + "hls-2.5_6": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix_2": { + "hls-2.5_7": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix_3": { + "hls-2.5_8": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix_4": { + "hls-2.5_9": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix_5": { + "hls-2.6": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix_6": { + "hls-2.6_2": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix_7": { + "hls-2.6_3": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix_8": { + "hls-2.6_4": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "old-ghc-nix_9": { + "hls-2.6_5": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "ops-lib": { + "hls-2.6_6": { "flake": false, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "ops-lib_2": { + "hls-2.6_7": { "flake": false, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "ops-lib_3": { + "hls-2.6_8": { "flake": false, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "ops-lib_4": { + "hls-2.6_9": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "ops-lib_5": { + "hls-2.7": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "ops-lib_6": { + "hls-2.7_2": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "paisano": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "nosys": "nosys_2", - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "hls-2.7_3": { + "flake": false, "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "core", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "paisano-actions": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] - }, + "hls-2.7_4": { + "flake": false, "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "actions", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "paisano-actions_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] - }, + "hls-2.7_5": { + "flake": false, "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "actions", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "paisano-mdbook-preprocessor": { - "inputs": { - "crane": "crane", - "fenix": "fenix_2", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions", - "std": [ - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] - }, + "hls-2.7_6": { + "flake": false, "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "paisano-mdbook-preprocessor_2": { - "inputs": { - "crane": "crane_2", - "fenix": "fenix_3", - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions_2", - "std": [ - "cardano-node", - "std" - ] - }, + "hls-2.7_7": { + "flake": false, "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "paisano-tui": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std" - ] - }, + "hls-2.7_8": { + "flake": false, "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "tui", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "paisano-tui_2": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "std": [ - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] - }, + "hls-2.8": { + "flake": false, "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "tui", + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "paisano-tui_3": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "cardano-node", - "cardano-automation", - "tullia", - "std" - ] - }, + "hpc-coveralls": { + "flake": false, "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "tui", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "paisano-tui_4": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "blank" - ], - "std": [ - "cardano-node", - "std" - ] - }, + "hpc-coveralls_10": { + "flake": false, "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "tui", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "paisano_2": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "nosys": "nosys_3", - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, + "hpc-coveralls_11": { + "flake": false, "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", - "owner": "paisano-nix", - "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "core", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "paisano_3": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "nosys": "nosys_4", - "yants": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "hpc-coveralls_12": { + "flake": false, "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "core", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "paisano_4": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "nosys": "nosys_5", - "yants": [ - "cardano-node", - "std", - "yants" - ] - }, + "hpc-coveralls_13": { + "flake": false, "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", - "owner": "paisano-nix", - "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "core", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "plutip": { - "inputs": { - "CHaP": "CHaP_6", - "cardano-node": [ - "cardano-node" - ], - "flake-compat": "flake-compat_27", - "hackage-nix": [ - "hackage-nix" - ], - "haskell-nix": [ - "haskell-nix" - ], - "iohk-nix": [ - "iohk-nix" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, + "hpc-coveralls_14": { + "flake": false, "locked": { - "lastModified": 1695131439, - "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "ref": "gergely/version-bump", - "repo": "plutip", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "poetry2nix": { - "inputs": { - "flake-utils": "flake-utils_33", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ] - }, + "hpc-coveralls_15": { + "flake": false, "locked": { - "lastModified": 1641849362, - "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", - "owner": "nix-community", - "repo": "poetry2nix", - "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "nix-community", - "ref": "fetched-projectdir-test", - "repo": "poetry2nix", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "pre-commit-hooks": { - "inputs": { - "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_85" - }, + "hpc-coveralls_16": { + "flake": false, "locked": { - "lastModified": 1639823344, - "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "pre-commit-hooks-nix": { - "inputs": { - "flake-compat": "flake-compat_13", - "gitignore": "gitignore", - "nixpkgs": [ - "cardano-nix", - "nixpkgs" - ], - "nixpkgs-stable": [ - "cardano-nix", - "nixpkgs" - ] - }, + "hpc-coveralls_17": { + "flake": false, "locked": { - "lastModified": 1716213921, - "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "ragenix": { - "inputs": { - "agenix": "agenix_3", - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_51", - "rust-overlay": "rust-overlay_3" - }, + "hpc-coveralls_18": { + "flake": false, "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "ragenix_2": { - "inputs": { - "agenix": "agenix_4", - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_54", - "rust-overlay": "rust-overlay_4" - }, + "hpc-coveralls_19": { + "flake": false, "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "ragenix_3": { - "inputs": { - "agenix": "agenix_5", - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_63", - "rust-overlay": "rust-overlay_5" - }, + "hpc-coveralls_2": { + "flake": false, "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "ragenix_4": { - "inputs": { - "agenix": "agenix_7", - "flake-utils": "flake-utils_35", - "nixpkgs": "nixpkgs_80", - "rust-overlay": "rust-overlay_6" - }, + "hpc-coveralls_20": { + "flake": false, "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "ragenix_5": { - "inputs": { - "agenix": "agenix_8", - "flake-utils": "flake-utils_37", - "nixpkgs": "nixpkgs_83", - "rust-overlay": "rust-overlay_7" - }, + "hpc-coveralls_21": { + "flake": false, "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "root": { - "inputs": { - "CHaP": "CHaP", - "blockfrost": "blockfrost", - "cardano-configurations": "cardano-configurations", - "cardano-nix": "cardano-nix", - "cardano-node": "cardano-node", - "db-sync": "db-sync", - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_25", - "hackage-nix": "hackage-nix", - "haskell-nix": "haskell-nix_4", - "hercules-ci-effects": "hercules-ci-effects_2", - "iohk-nix": "iohk-nix_3", - "nixpkgs": [ - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios_2", - "plutip": "plutip" - } - }, - "rust-analyzer-src": { + "hpc-coveralls_22": { "flake": false, "locked": { - "lastModified": 1645205556, - "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-analyzer-src_2": { + "hpc-coveralls_23": { "flake": false, "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", - "type": "github" + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-analyzer-src_3": { + "hpc-coveralls_24": { "flake": false, "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-analyzer-src_4": { + "hpc-coveralls_25": { "flake": false, "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-analyzer-src_5": { + "hpc-coveralls_3": { "flake": false, "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-analyzer-src_6": { + "hpc-coveralls_4": { "flake": false, "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-analyzer-src_7": { + "hpc-coveralls_5": { "flake": false, "locked": { - "lastModified": 1660579619, - "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-analyzer-src_8": { + "hpc-coveralls_6": { "flake": false, "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-analyzer-src_9": { + "hpc-coveralls_7": { "flake": false, "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-overlay": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "nixpkgs" - ] + "hpc-coveralls_8": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_9": { + "flake": false, "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "rust-overlay_2": { + "hydra": { "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], + "nix": "nix", "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "hydra", + "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "rust-overlay_3": { + "hydra_10": { "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], + "nix": "nix_18", "nixpkgs": [ "db-sync", "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", + "haskell-nix", + "hydra", + "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "rust-overlay_4": { + "hydra_11": { "inputs": { - "flake-utils": [ + "nix": "nix_19", + "nixpkgs": [ "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", + "haskellNix", + "hydra", + "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "rust-overlay_5": { + "hydra_12": { "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "flake-utils" - ], + "nix": "nix_20", "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "ragenix", + "haskell-nix", + "hydra", + "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "rust-overlay_6": { + "hydra_13": { "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], + "nix": "nix_21", "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", + "kupo-nixos", + "iogx", + "haskell-nix", + "hydra", + "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "rust-overlay_7": { + "hydra_14": { "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "flake-utils" - ], + "nix": "nix_22", "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "ragenix", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "secp256k1": { - "flake": false, + "hydra_15": { + "inputs": { + "nix": "nix_23", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "secp256k1_2": { - "flake": false, + "hydra_16": { + "inputs": { + "nix": "nix_24", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "secp256k1_3": { - "flake": false, + "hydra_17": { + "inputs": { + "nix": "nix_25", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "secp256k1_4": { - "flake": false, + "hydra_18": { + "inputs": { + "nix": "nix_26", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "secp256k1_5": { - "flake": false, + "hydra_19": { + "inputs": { + "nix": "nix_27", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "secp256k1_6": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" + "hydra_2": { + "inputs": { + "nix": "nix_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_7": { - "flake": false, "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "sodium": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "hydra_20": { + "inputs": { + "nix": "nix_28", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_2": { - "flake": false, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "sodium_3": { - "flake": false, + "hydra_21": { + "inputs": { + "nix": "nix_29", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "sodium_4": { - "flake": false, + "hydra_22": { + "inputs": { + "nix": "nix_30", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "sodium_5": { - "flake": false, + "hydra_23": { + "inputs": { + "nix": "nix_31", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "sodium_6": { - "flake": false, + "hydra_24": { + "inputs": { + "nix": "nix_32", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "sodium_7": { - "flake": false, + "hydra_25": { + "inputs": { + "nix": "nix_33", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "sops-nix": { + "hydra_26": { "inputs": { - "nixpkgs": "nixpkgs_10", - "nixpkgs-stable": "nixpkgs-stable" + "nix": "nix_34", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1690199016, - "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "stable": { + "hydra_27": { + "inputs": { + "nix": "nix_35", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1669735802, - "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "731cc710aeebecbf45a258e977e8b68350549522", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "stackage": { - "flake": false, + "hydra_3": { + "inputs": { + "nix": "nix_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1701043780, - "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "stackage_2": { - "flake": false, + "hydra_4": { + "inputs": { + "nix": "nix_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "stackage_3": { - "flake": false, + "hydra_5": { + "inputs": { + "nix": "nix_6", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1700438989, - "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "stackage_4": { - "flake": false, + "hydra_6": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1712276009, - "narHash": "sha256-KlRJ+CGXRueyz2VRLDwra5JBNaI2GkltNJAjHa7fowE=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "758035379a5ac4390879e4cd5164abe0c96fcea7", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "stackage_5": { - "flake": false, + "hydra_7": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "stackage_6": { - "flake": false, + "hydra_8": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "stackage_7": { - "flake": false, + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "stackage_8": { - "flake": false, + "incl": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "stackage_9": { - "flake": false, - "locked": { - "lastModified": 1718842995, - "narHash": "sha256-z1ETU1nJoTUpK7BcdSYuYph6njhJJR8hTZ197lzXX3E=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "b224b7d7461de53fcf700bb14bde43d6efa2ee3b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "statix": { - "inputs": { - "fenix": "fenix", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1676888642, - "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", - "owner": "nerdypepper", - "repo": "statix", - "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", - "type": "github" - }, - "original": { - "owner": "nerdypepper", - "repo": "statix", - "type": "github" - } - }, - "std": { + "incl_2": { "inputs": { - "arion": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_8", - "incl": "incl", - "makes": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "microvm": [ + "nixlib": [ "cardano-nix", - "cardano-node-8.1.1", + "cardano-node-8.7.3", + "cardano-automation", "tullia", "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_20", - "nosys": "nosys", - "yants": "yants" + "nixpkgs" + ] }, "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { "owner": "divnix", - "repo": "std", + "repo": "incl", "type": "github" } }, - "std_2": { + "incl_3": { "inputs": { - "arion": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "blank": "blank_2", - "devshell": "devshell_2", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_11", - "incl": "incl_2", - "makes": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "microvm": [ + "nixlib": [ "cardano-nix", "cardano-node-8.7.3", - "cardano-automation", - "tullia", "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_23", - "paisano": "paisano", - "paisano-tui": "paisano-tui", - "yants": "yants_2" + "haumea", + "nixpkgs" + ] }, "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", "owner": "divnix", - "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { "owner": "divnix", - "repo": "std", + "repo": "incl", "type": "github" } }, - "std_3": { + "incl_4": { "inputs": { - "arion": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "blank": "blank_3", - "devshell": "devshell_3", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_13", - "haumea": "haumea", - "incl": "incl_3", - "makes": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "microvm": [ - "cardano-nix", - "cardano-node-8.7.3", + "nixlib": [ + "cardano-node", + "cardano-automation", + "tullia", "std", - "blank" - ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_28", - "paisano": "paisano_2", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", - "paisano-tui": "paisano-tui_2", - "yants": "yants_3" + "nixpkgs" + ] }, "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", "owner": "divnix", - "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { "owner": "divnix", - "repo": "std", + "repo": "incl", "type": "github" } }, - "std_4": { + "incl_5": { "inputs": { - "arion": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "blank": "blank_4", - "devshell": "devshell_5", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_18", - "incl": "incl_4", - "makes": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "microvm": [ + "nixlib": [ "cardano-node", - "cardano-automation", - "tullia", "std", - "blank" - ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_32", - "paisano": "paisano_3", - "paisano-tui": "paisano-tui_3", - "yants": "yants_4" + "haumea", + "nixpkgs" + ] }, "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", "owner": "divnix", - "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { "owner": "divnix", - "repo": "std", + "repo": "incl", "type": "github" } }, - "std_5": { + "inclusive": { "inputs": { - "arion": [ - "cardano-node", - "std", - "blank" - ], - "blank": "blank_5", - "devshell": "devshell_6", - "dmerge": "dmerge_5", - "flake-utils": "flake-utils_20", - "haumea": "haumea_2", - "incl": "incl_5", - "makes": [ - "cardano-node", - "std", - "blank" - ], - "microvm": [ - "cardano-node", - "std", - "blank" - ], - "n2c": "n2c_5", - "nixago": "nixago_5", - "nixpkgs": "nixpkgs_37", - "paisano": "paisano_4", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor_2", - "paisano-tui": "paisano-tui_4", - "yants": "yants_5" + "stdlib": "stdlib" }, "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", - "owner": "divnix", - "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "std_6": { + "inclusive_10": { "inputs": { - "devshell": "devshell_12", - "dmerge": "dmerge_6", - "flake-utils": "flake-utils_29", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago_6", - "nixpkgs": "nixpkgs_64", - "yants": "yants_7" + "stdlib": "stdlib_10" }, "locked": { - "lastModified": 1661370377, - "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", - "owner": "divnix", - "repo": "std", - "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_11": { + "inputs": { + "stdlib": "stdlib_11" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_12": { + "inputs": { + "stdlib": "stdlib_12" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_2": { + "inputs": { + "stdlib": "stdlib_2" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_3": { + "inputs": { + "stdlib": "stdlib_3" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_4": { + "inputs": { + "stdlib": "stdlib_4" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_5": { + "inputs": { + "stdlib": "stdlib_5" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_6": { + "inputs": { + "stdlib": "stdlib_6" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_7": { + "inputs": { + "stdlib": "stdlib_7" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_9": { + "inputs": { + "stdlib": "stdlib_9" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inputs-check": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1692633913, + "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", + "owner": "input-output-hk", + "repo": "inputs-check", + "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "inputs-check", + "type": "github" + } + }, + "iogo": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_4", + "nixpkgs": "nixpkgs_52", + "utils": "utils_13" + }, + "locked": { + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogo_2": { + "inputs": { + "devshell": "devshell_19", + "inclusive": "inclusive_12", + "nixpkgs": "nixpkgs_81", + "utils": "utils_27" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogx": { + "inputs": { + "CHaP": [ + "kupo-nixos", + "CHaP" + ], + "easy-purescript-nix": "easy-purescript-nix_2", + "flake-utils": "flake-utils_50", + "hackage": "hackage_6", + "haskell-nix": "haskell-nix_5", + "iogx-template-haskell": "iogx-template-haskell", + "iogx-template-vanilla": "iogx-template-vanilla_4", + "iohk-nix": "iohk-nix_18", + "nix2container": "nix2container_22", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_30", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_16", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_15" + }, + "locked": { + "lastModified": 1714993151, + "narHash": "sha256-qnhgqo24celzlf+KjZ+oqypsCezgVZRueHbfiq73bDE=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "819ae1510a5ebdeb999c723033a2a641aa9bfd23", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell": { + "inputs": { + "iogx": "iogx_2" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1714715538, + "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_2": { + "inputs": { + "iogx": "iogx_3" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_3": { + "inputs": { + "iogx": "iogx_4" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_4": { + "inputs": { + "iogx": "iogx_7" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_5": { + "inputs": { + "iogx": "iogx_10" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_6": { + "inputs": { + "iogx": "iogx_11" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_7": { + "inputs": { + "iogx": "iogx_14" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla": { + "inputs": { + "iogx": "iogx_5" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_2": { + "inputs": { + "iogx": "iogx_6" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_3": { + "inputs": { + "iogx": "iogx_8" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_4": { + "inputs": { + "iogx": "iogx_9" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1714715538, + "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_5": { + "inputs": { + "iogx": "iogx_12" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_6": { + "inputs": { + "iogx": "iogx_13" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_7": { + "inputs": { + "iogx": "iogx_15" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_10": { + "inputs": { + "CHaP": "CHaP_14", + "easy-purescript-nix": "easy-purescript-nix_11", + "flake-utils": "flake-utils_82", + "hackage": "hackage_15", + "haskell-nix": "haskell-nix_14", + "iogx-template-haskell": "iogx-template-haskell_6", + "iogx-template-vanilla": "iogx-template-vanilla_5", + "iohk-nix": "iohk-nix_13", + "nix2container": "nix2container_17", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_20", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_11", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_10" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_11": { + "inputs": { + "CHaP": "CHaP_15", + "easy-purescript-nix": "easy-purescript-nix_12", + "flake-utils": "flake-utils_84", + "hackage": "hackage_16", + "haskell-nix": "haskell-nix_15", + "iohk-nix": "iohk-nix_11", + "nix2container": "nix2container_15", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_16", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_9", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_8" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_12": { + "inputs": { + "CHaP": "CHaP_16", + "easy-purescript-nix": "easy-purescript-nix_13", + "flake-utils": "flake-utils_88", + "hackage": "hackage_17", + "haskell-nix": "haskell-nix_16", + "iohk-nix": "iohk-nix_12", + "nix2container": "nix2container_16", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_18", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_10", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_9" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_13": { + "inputs": { + "CHaP": "CHaP_17", + "easy-purescript-nix": "easy-purescript-nix_14", + "flake-utils": "flake-utils_94", + "hackage": "hackage_18", + "haskell-nix": "haskell-nix_17", + "iogx-template-haskell": "iogx-template-haskell_7", + "iogx-template-vanilla": "iogx-template-vanilla_7", + "iohk-nix": "iohk-nix_16", + "nix2container": "nix2container_20", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_26", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_14", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_13" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_14": { + "inputs": { + "CHaP": "CHaP_18", + "easy-purescript-nix": "easy-purescript-nix_15", + "flake-utils": "flake-utils_96", + "hackage": "hackage_19", + "haskell-nix": "haskell-nix_18", + "iohk-nix": "iohk-nix_14", + "nix2container": "nix2container_18", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_22", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_12", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_11" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_15": { + "inputs": { + "CHaP": "CHaP_19", + "easy-purescript-nix": "easy-purescript-nix_16", + "flake-utils": "flake-utils_100", + "hackage": "hackage_20", + "haskell-nix": "haskell-nix_19", + "iohk-nix": "iohk-nix_15", + "nix2container": "nix2container_19", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_24", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_13", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_12" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_2": { + "inputs": { + "CHaP": "CHaP_6", + "easy-purescript-nix": "easy-purescript-nix_3", + "flake-utils": "flake-utils_52", + "hackage": "hackage_7", + "haskell-nix": "haskell-nix_6", + "iogx-template-haskell": "iogx-template-haskell_2", + "iogx-template-vanilla": "iogx-template-vanilla_2", + "iohk-nix": "iohk-nix_10", + "nix2container": "nix2container_14", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_14", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_8", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_7" + }, + "locked": { + "lastModified": 1714680367, + "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_3": { + "inputs": { + "CHaP": "CHaP_7", + "easy-purescript-nix": "easy-purescript-nix_4", + "flake-utils": "flake-utils_54", + "hackage": "hackage_8", + "haskell-nix": "haskell-nix_7", + "iogx-template-haskell": "iogx-template-haskell_3", + "iogx-template-vanilla": "iogx-template-vanilla", + "iohk-nix": "iohk-nix_6", + "nix2container": "nix2container_10", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_6", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_4", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_3" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_4": { + "inputs": { + "CHaP": "CHaP_8", + "easy-purescript-nix": "easy-purescript-nix_5", + "flake-utils": "flake-utils_56", + "hackage": "hackage_9", + "haskell-nix": "haskell-nix_8", + "iohk-nix": "iohk-nix_4", + "nix2container": "nix2container_8", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_2", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_2", + "sphinxcontrib-haddock": "sphinxcontrib-haddock" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_5": { + "inputs": { + "CHaP": "CHaP_9", + "easy-purescript-nix": "easy-purescript-nix_6", + "flake-utils": "flake-utils_60", + "hackage": "hackage_10", + "haskell-nix": "haskell-nix_9", + "iohk-nix": "iohk-nix_5", + "nix2container": "nix2container_9", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_4", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_3", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_2" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_6": { + "inputs": { + "CHaP": "CHaP_10", + "easy-purescript-nix": "easy-purescript-nix_7", + "flake-utils": "flake-utils_66", + "hackage": "hackage_11", + "haskell-nix": "haskell-nix_10", + "iogx-template-haskell": "iogx-template-haskell_4", + "iogx-template-vanilla": "iogx-template-vanilla_3", + "iohk-nix": "iohk-nix_9", + "nix2container": "nix2container_13", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_12", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_7", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_6" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_7": { + "inputs": { + "CHaP": "CHaP_11", + "easy-purescript-nix": "easy-purescript-nix_8", + "flake-utils": "flake-utils_68", + "hackage": "hackage_12", + "haskell-nix": "haskell-nix_11", + "iohk-nix": "iohk-nix_7", + "nix2container": "nix2container_11", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_8", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_5", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_4" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_8": { + "inputs": { + "CHaP": "CHaP_12", + "easy-purescript-nix": "easy-purescript-nix_9", + "flake-utils": "flake-utils_72", + "hackage": "hackage_13", + "haskell-nix": "haskell-nix_12", + "iohk-nix": "iohk-nix_8", + "nix2container": "nix2container_12", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_10", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_6", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_5" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_9": { + "inputs": { + "CHaP": "CHaP_13", + "easy-purescript-nix": "easy-purescript-nix_10", + "flake-utils": "flake-utils_80", + "hackage": "hackage_14", + "haskell-nix": "haskell-nix_13", + "iogx-template-haskell": "iogx-template-haskell_5", + "iogx-template-vanilla": "iogx-template-vanilla_6", + "iohk-nix": "iohk-nix_17", + "nix2container": "nix2container_21", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_28", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_15", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_14" + }, + "locked": { + "lastModified": 1714680367, + "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "blst": "blst", + "nixpkgs": "nixpkgs_7", + "secp256k1": "secp256k1", + "sodium": "sodium" + }, + "locked": { + "lastModified": 1691469905, + "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + } + }, + "iohk-nix-ng": { + "inputs": { + "blst": "blst_2", + "nixpkgs": "nixpkgs_8", + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" + }, + "locked": { + "lastModified": 1696471795, + "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_10": { + "inputs": { + "blst": "blst_14", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_14", + "sodium": "sodium_14" + }, + "locked": { + "lastModified": 1714467508, + "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "89387f07016fe416c16f7824715238b3d1a4390a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_11": { + "inputs": { + "blst": "blst_15", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_15", + "sodium": "sodium_15" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_12": { + "inputs": { + "blst": "blst_16", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_16", + "sodium": "sodium_16" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_13": { + "inputs": { + "blst": "blst_17", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_17", + "sodium": "sodium_17" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_14": { + "inputs": { + "blst": "blst_18", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_18", + "sodium": "sodium_18" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_15": { + "inputs": { + "blst": "blst_19", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_19", + "sodium": "sodium_19" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_16": { + "inputs": { + "blst": "blst_20", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_20", + "sodium": "sodium_20" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_17": { + "inputs": { + "blst": "blst_21", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_21", + "sodium": "sodium_21" + }, + "locked": { + "lastModified": 1714467508, + "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "89387f07016fe416c16f7824715238b3d1a4390a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_18": { + "inputs": { + "blst": "blst_22", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_22", + "sodium": "sodium_22" + }, + "locked": { + "lastModified": 1714467508, + "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "89387f07016fe416c16f7824715238b3d1a4390a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "blst": "blst_7", + "nixpkgs": [ + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" + }, + "locked": { + "lastModified": 1715898223, + "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_4": { + "inputs": { + "blst": "blst_8", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_8", + "sodium": "sodium_8" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_5": { + "inputs": { + "blst": "blst_9", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_9", + "sodium": "sodium_9" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_6": { + "inputs": { + "blst": "blst_10", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_10", + "sodium": "sodium_10" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_7": { + "inputs": { + "blst": "blst_11", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_11", + "sodium": "sodium_11" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_8": { + "inputs": { + "blst": "blst_12", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_12", + "sodium": "sodium_12" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_9": { + "inputs": { + "blst": "blst_13", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_13", + "sodium": "sodium_13" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix": { + "inputs": { + "blst": "blst_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "secp256k1": "secp256k1_3", + "sodium": "sodium_3" + }, + "locked": { + "lastModified": 1698999258, + "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { + "blst": "blst_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "secp256k1": "secp256k1_4", + "sodium": "sodium_4" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_3": { + "inputs": { + "blst": "blst_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "secp256k1": "secp256k1_5", + "sodium": "sodium_5" + }, + "locked": { + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_4": { + "inputs": { + "blst": "blst_6", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "secp256k1": "secp256k1_6", + "sodium": "sodium_6" + }, + "locked": { + "lastModified": 1715898223, + "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { + "inputs": { + "nixpkgs": [ + "db-sync", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "ref": "hkm/remote-iserv", + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_10": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_11": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_12": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_13": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_14": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_15": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_16": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_17": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_18": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_19": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_20": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_21": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_3": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_4": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_5": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_6": { + "flake": false, + "locked": { + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_7": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_8": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_9": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "kupo": { + "flake": false, + "locked": { + "lastModified": 1718734761, + "narHash": "sha256-J5eys+/VjeYqfBlcS+XW+Gzafq0/qkbOfY6b05JmFYI=", + "owner": "klarkc", + "repo": "kupo", + "rev": "d95a324f6a94a963cd91cb5d5f88ef50640e7b8d", + "type": "github" + }, + "original": { + "owner": "klarkc", + "ref": "patch-1", + "repo": "kupo", + "type": "github" + } + }, + "kupo-nixos": { + "inputs": { + "CHaP": [ + "CHaP" + ], + "iogx": "iogx", + "kupo": "kupo" + }, + "locked": { + "lastModified": 1718735503, + "narHash": "sha256-Dwpl5BUeGGvhH7+RcF3as7e9rzUFeHRwVGxjfj0fMAM=", + "owner": "Fourierlabs", + "repo": "kupo-nixos", + "rev": "4ab9be5d524bf2c003874aa225f20d00cb6defcf", + "type": "github" + }, + "original": { + "owner": "Fourierlabs", + "ref": "add-conway", + "repo": "kupo-nixos", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_10": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_11": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_12": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_13": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_14": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_15": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_16": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_17": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_18": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_19": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_20": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_21": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_22": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_23": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_24": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_25": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_26": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_27": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_28": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_29": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_30": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_31": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_32": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_33": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_34": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_35": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_4": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_7": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_8": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_4": { + "inputs": { + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_5": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_6": { + "inputs": { + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_57" + }, + "locked": { + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_7": { + "inputs": { + "flake-utils": "flake-utils_44", + "nixpkgs": "nixpkgs_92" + }, + "locked": { + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_5", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_16", + "inclusive": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_20" + }, + "locked": { + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "type": "github" + } + }, + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_13" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_8", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_9", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_14", + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_3": { + "flake": false, + "locked": { + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_4": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_16" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_10": { + "inputs": { + "flake-utils": "flake-utils_63", + "nixpkgs": "nixpkgs_110" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_11": { + "inputs": { + "flake-utils": "flake-utils_69", + "nixpkgs": "nixpkgs_114" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_12": { + "inputs": { + "flake-utils": "flake-utils_73", + "nixpkgs": "nixpkgs_117" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_13": { + "inputs": { + "flake-utils": "flake-utils_75", + "nixpkgs": "nixpkgs_119" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_14": { + "inputs": { + "flake-utils": "flake-utils_77", + "nixpkgs": "nixpkgs_121" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_15": { + "inputs": { + "flake-utils": "flake-utils_85", + "nixpkgs": "nixpkgs_126" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_16": { + "inputs": { + "flake-utils": "flake-utils_89", + "nixpkgs": "nixpkgs_129" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_17": { + "inputs": { + "flake-utils": "flake-utils_91", + "nixpkgs": "nixpkgs_131" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_18": { + "inputs": { + "flake-utils": "flake-utils_97", + "nixpkgs": "nixpkgs_135" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_19": { + "inputs": { + "flake-utils": "flake-utils_101", + "nixpkgs": "nixpkgs_138" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_18" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_20": { + "inputs": { + "flake-utils": "flake-utils_103", + "nixpkgs": "nixpkgs_140" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_21": { + "inputs": { + "flake-utils": "flake-utils_105", + "nixpkgs": "nixpkgs_142" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_22": { + "inputs": { + "flake-utils": "flake-utils_107", + "nixpkgs": "nixpkgs_144" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_22" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_26" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_5": { + "inputs": { + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_31" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_6": { + "inputs": { + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_35" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_7": { + "inputs": { + "flake-utils": "flake-utils_46", + "nixpkgs": "nixpkgs_95" + }, + "locked": { + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "type": "github" + }, + "original": { + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_8": { + "inputs": { + "flake-utils": "flake-utils_57", + "nixpkgs": "nixpkgs_105" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_9": { + "inputs": { + "flake-utils": "flake-utils_61", + "nixpkgs": "nixpkgs_108" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_58", + "nixpkgs-regression": "nixpkgs-regression_9" + }, + "locked": { + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", + "type": "github" + } + }, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_60", + "nixpkgs-regression": "nixpkgs-regression_10" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_67", + "nixpkgs-regression": "nixpkgs-regression_11" + }, + "locked": { + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + } + }, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_12" + }, + "locked": { + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + } + }, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_73", + "nixpkgs-regression": "nixpkgs-regression_13" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_75" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_77", + "nixpkgs-regression": "nixpkgs-regression_14" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_89", + "nixpkgs-regression": "nixpkgs-regression_15" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_91", + "nixpkgs-regression": "nixpkgs-regression_16" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_19": { + "inputs": { + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_98", + "nixpkgs-regression": "nixpkgs-regression_17" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_2": { + "inputs": { + "flake-compat": "flake-compat_3", + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_9", + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1693573010, + "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", + "owner": "nixos", + "repo": "nix", + "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.17-maintenance", + "repo": "nix", + "type": "github" + } + }, + "nix_20": { + "inputs": { + "lowdown-src": "lowdown-src_20", + "nixpkgs": "nixpkgs_99", + "nixpkgs-regression": "nixpkgs-regression_18" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_21": { + "inputs": { + "lowdown-src": "lowdown-src_21", + "nixpkgs": "nixpkgs_101", + "nixpkgs-regression": "nixpkgs-regression_19" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_22": { + "inputs": { + "lowdown-src": "lowdown-src_22", + "nixpkgs": "nixpkgs_102", + "nixpkgs-regression": "nixpkgs-regression_20" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_23": { + "inputs": { + "lowdown-src": "lowdown-src_23", + "nixpkgs": "nixpkgs_103", + "nixpkgs-regression": "nixpkgs-regression_21" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_24": { + "inputs": { + "lowdown-src": "lowdown-src_24", + "nixpkgs": "nixpkgs_104", + "nixpkgs-regression": "nixpkgs-regression_22" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_25": { + "inputs": { + "lowdown-src": "lowdown-src_25", + "nixpkgs": "nixpkgs_107", + "nixpkgs-regression": "nixpkgs-regression_23" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_26": { + "inputs": { + "lowdown-src": "lowdown-src_26", + "nixpkgs": "nixpkgs_112", + "nixpkgs-regression": "nixpkgs-regression_24" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_27": { + "inputs": { + "lowdown-src": "lowdown-src_27", + "nixpkgs": "nixpkgs_113", + "nixpkgs-regression": "nixpkgs-regression_25" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_28": { + "inputs": { + "lowdown-src": "lowdown-src_28", + "nixpkgs": "nixpkgs_116", + "nixpkgs-regression": "nixpkgs-regression_26" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_29": { + "inputs": { + "lowdown-src": "lowdown-src_29", + "nixpkgs": "nixpkgs_123", + "nixpkgs-regression": "nixpkgs-regression_27" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_13", + "nixpkgs-regression": "nixpkgs-regression_3" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_30": { + "inputs": { + "lowdown-src": "lowdown-src_30", + "nixpkgs": "nixpkgs_124", + "nixpkgs-regression": "nixpkgs-regression_28" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_31": { + "inputs": { + "lowdown-src": "lowdown-src_31", + "nixpkgs": "nixpkgs_125", + "nixpkgs-regression": "nixpkgs-regression_29" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_32": { + "inputs": { + "lowdown-src": "lowdown-src_32", + "nixpkgs": "nixpkgs_128", + "nixpkgs-regression": "nixpkgs-regression_30" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_33": { + "inputs": { + "lowdown-src": "lowdown-src_33", + "nixpkgs": "nixpkgs_133", + "nixpkgs-regression": "nixpkgs-regression_31" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_34": { + "inputs": { + "lowdown-src": "lowdown-src_34", + "nixpkgs": "nixpkgs_134", + "nixpkgs-regression": "nixpkgs-regression_32" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_35": { + "inputs": { + "lowdown-src": "lowdown-src_35", + "nixpkgs": "nixpkgs_137", + "nixpkgs-regression": "nixpkgs-regression_33" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_15", + "nixpkgs-regression": "nixpkgs-regression_4" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_25", + "nixpkgs-regression": "nixpkgs-regression_5" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_34", + "nixpkgs-regression": "nixpkgs-regression_6" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_44", + "nixpkgs-regression": "nixpkgs-regression_7" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_46" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_48", + "nixpkgs-regression": "nixpkgs-regression_8" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nixago": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago-exts": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago-exts_2": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_3": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_4": { + "inputs": { + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_5": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_6": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_7": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixlib": { + "locked": { + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_2": { + "locked": { + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_3": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_10": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_11": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_12": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_13": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_14": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_15": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_16": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_17": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_18": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_19": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_2": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_20": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_21": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_22": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_23": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_24": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_25": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_3": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_4": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_5": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_6": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_7": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_8": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_9": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_10": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_11": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_12": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_13": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_14": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_15": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_16": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_17": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_18": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_19": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_2": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_20": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_21": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_22": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_23": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_24": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_25": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_3": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_4": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_5": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_6": { + "locked": { + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_7": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_8": { + "locked": { + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_9": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_10": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_11": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_12": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_13": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_14": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_15": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_16": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_17": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_18": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_19": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_2": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_20": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_21": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_22": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_23": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_24": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_25": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_3": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_4": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_5": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_6": { + "locked": { + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_7": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_8": { + "locked": { + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_9": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_10": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_11": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_12": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_13": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_14": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_15": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_16": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_17": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_18": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_19": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_2": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_20": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_21": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_22": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_3": { + "locked": { + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_4": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_5": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_6": { + "locked": { + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_7": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_8": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_9": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_10": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_11": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_12": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_13": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_14": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_15": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_16": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_17": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_18": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_19": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_2": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_20": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_21": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_3": { + "locked": { + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_4": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_5": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_6": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_7": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_8": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_9": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_10": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_11": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_12": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_13": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_14": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_15": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_16": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_17": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_18": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_19": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_2": { + "locked": { + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_20": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_3": { + "locked": { + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_4": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_5": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_6": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_7": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_8": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_9": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_10": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_11": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_12": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_13": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_14": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_15": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_16": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_17": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_2": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_3": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_4": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_5": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_6": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_7": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_8": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_9": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-docker": { + "locked": { + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1671359686, + "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_3": { + "locked": { + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_4": { + "locked": { + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_5": { + "locked": { + "lastModified": 1714640452, + "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_10": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_11": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_12": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_13": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_14": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_15": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_16": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_17": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_18": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_19": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_2": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_20": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_21": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_22": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_23": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_24": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_25": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_26": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_27": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_28": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_29": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_3": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_30": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_31": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_32": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_33": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_4": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_5": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_6": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_7": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_8": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_9": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1690066826, + "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_10": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_11": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_12": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_13": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_14": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_15": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_16": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_17": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_18": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_19": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_20": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_21": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_22": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_23": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_24": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_25": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_26": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_27": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_28": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_29": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_3": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_30": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_31": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_4": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_5": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_6": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_7": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_8": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_9": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_10": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_11": { + "locked": { + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_12": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_13": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_14": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_15": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_16": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_17": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_18": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_19": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_2": { + "locked": { + "lastModified": 1696577711, + "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_20": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_21": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_22": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_23": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_24": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_25": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_26": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_27": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_28": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_3": { + "locked": { + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_4": { + "locked": { + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_5": { + "locked": { + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_6": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_7": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_8": { + "locked": { + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_9": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1690026219, + "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_100": { + "locked": { + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_101": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_102": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_103": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_104": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_105": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_106": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_107": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_108": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_109": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_110": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_111": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_112": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_113": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_114": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_115": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_116": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_117": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_118": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_119": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_120": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_121": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_122": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_123": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_124": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_125": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_126": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_127": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_128": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_129": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_13": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_130": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_131": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_132": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_133": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_134": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_135": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_136": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_137": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_138": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_139": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_140": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_141": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_142": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_143": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_144": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_145": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_19": { + "locked": { + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1677543769, + "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { + "locked": { + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_21": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_22": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_23": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_24": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_25": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_26": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_27": { + "locked": { + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_28": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_29": { + "locked": { + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1645013224, + "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_30": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_31": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_32": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_33": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_34": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_35": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_36": { + "locked": { + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_37": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_38": { + "locked": { + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_39": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { + "locked": { + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_41": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_42": { + "locked": { + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_43": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_44": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_45": { + "locked": { + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + } + }, + "nixpkgs_46": { + "locked": { + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "nixpkgs_47": { + "locked": { + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_48": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_49": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_50": { + "locked": { + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_51": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_52": { + "locked": { + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_53": { + "locked": { + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_54": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_55": { + "locked": { + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_56": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_57": { + "locked": { + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_58": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_59": { + "locked": { + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_61": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_62": { + "locked": { + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_63": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_64": { + "locked": { + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_65": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_66": { + "locked": { + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_67": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_68": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_69": { + "locked": { + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_7": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_71": { + "locked": { + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_72": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_73": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_74": { + "locked": { + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + } + }, + "nixpkgs_75": { + "locked": { + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "nixpkgs_76": { + "locked": { + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_77": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_78": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_79": { + "locked": { + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_80": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_81": { + "locked": { + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_82": { + "locked": { + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_83": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_84": { + "locked": { + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "type": "github" + } + }, + "nixpkgs_85": { + "locked": { + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_86": { + "locked": { + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_87": { + "locked": { + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_88": { + "locked": { + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_89": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_90": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_91": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_92": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_93": { + "locked": { + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_94": { + "locked": { + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_95": { + "locked": { + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_96": { + "locked": { + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_97": { + "locked": { + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_98": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_99": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nomad": { + "inputs": { + "nix": "nix_8", + "nixpkgs": "nixpkgs_47", + "utils": "utils_9" + }, + "locked": { + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", + "type": "github" + } + }, + "nomad-driver-nix": { + "inputs": { + "devshell": "devshell_7", + "inclusive": "inclusive_2", + "nix": "nix_9", + "nixpkgs": "nixpkgs_49", + "utils": "utils_10" + }, + "locked": { + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "type": "github" + } + }, + "nomad-driver-nix_2": { + "inputs": { + "devshell": "devshell_10", + "inclusive": "inclusive_5", + "nix": "nix_11", + "nixpkgs": "nixpkgs_61", + "utils": "utils_15" + }, + "locked": { + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "type": "github" + } + }, + "nomad-driver-nix_3": { + "inputs": { + "devshell": "devshell_17", + "inclusive": "inclusive_10", + "nix": "nix_16", + "nixpkgs": "nixpkgs_78", + "utils": "utils_24" + }, + "locked": { + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "type": "github" + } + }, + "nomad-follower": { + "inputs": { + "devshell": "devshell_8", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_50", + "utils": "utils_11" + }, + "locked": { + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "nomad-follower_2": { + "inputs": { + "devshell": "devshell_11", + "inclusive": "inclusive_6", + "nixpkgs": "nixpkgs_62", + "utils": "utils_16" + }, + "locked": { + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "nomad-follower_3": { + "inputs": { + "devshell": "devshell_18", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_79", + "utils": "utils_25" + }, + "locked": { + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "nomad_2": { + "inputs": { + "nix": "nix_15", + "nixpkgs": "nixpkgs_76", + "utils": "utils_23" + }, + "locked": { + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", + "type": "github" + } + }, + "nosys": { + "locked": { + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_2": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_3": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_4": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_5": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "offchain-metadata-tools-service": { + "flake": false, + "locked": { + "lastModified": 1684160858, + "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", + "owner": "input-output-hk", + "repo": "offchain-metadata-tools", + "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "feat-add-password-to-db-conn-string", + "repo": "offchain-metadata-tools", + "type": "github" + } + }, + "ogmios": { + "flake": false, + "locked": { + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", + "type": "github" + }, + "original": { + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", + "type": "github" + } + }, + "ogmios_2": { + "flake": false, + "locked": { + "lastModified": 1717661787, + "narHash": "sha256-AnIxPug+DnPHn69z+Vz+Us2a+Z3LnkI+LJaIyUm4c5w=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "4dbf1f34d9ea046dda50bf0c58bd276f80f41784", + "type": "github" + }, + "original": { + "owner": "CardanoSolutions", + "ref": "v6.4.0", + "repo": "ogmios", + "type": "github" + } + }, + "old-ghc-nix": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_10": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_11": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_12": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_13": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_14": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_15": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_16": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_17": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_18": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_19": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_2": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_20": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_21": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_22": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_23": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_24": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_25": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_3": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_4": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_5": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_6": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_7": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_8": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_9": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "ops-lib": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_2": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_3": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_4": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_5": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_6": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "paisano": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys_2", + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "core", + "type": "github" + } + }, + "paisano-actions": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "actions", + "type": "github" + } + }, + "paisano-actions_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "actions", + "type": "github" + } + }, + "paisano-mdbook-preprocessor": { + "inputs": { + "crane": "crane", + "fenix": "fenix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, + "locked": { + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "type": "github" + } + }, + "paisano-mdbook-preprocessor_2": { + "inputs": { + "crane": "crane_2", + "fenix": "fenix_3", + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions_2", + "std": [ + "cardano-node", + "std" + ] + }, + "locked": { + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "type": "github" + } + }, + "paisano-tui": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std" + ] + }, + "locked": { + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "tui", + "type": "github" + } + }, + "paisano-tui_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, + "locked": { + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", + "type": "github" + } + }, + "paisano-tui_3": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "cardano-node", + "cardano-automation", + "tullia", + "std" + ] + }, + "locked": { + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "tui", + "type": "github" + } + }, + "paisano-tui_4": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "blank" + ], + "std": [ + "cardano-node", + "std" + ] + }, + "locked": { + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", + "type": "github" + } + }, + "paisano_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "nosys": "nosys_3", + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", + "type": "github" + } + }, + "paisano_3": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys_4", + "yants": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "core", + "type": "github" + } + }, + "paisano_4": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "nosys": "nosys_5", + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", + "type": "github" + } + }, + "plutip": { + "inputs": { + "CHaP": "CHaP_20", + "cardano-node": [ + "cardano-node" + ], + "flake-compat": "flake-compat_57", + "hackage-nix": [ + "hackage-nix" + ], + "haskell-nix": [ + "haskell-nix" + ], + "iohk-nix": [ + "iohk-nix" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1695131439, + "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", + "owner": "mlabs-haskell", + "repo": "plutip", + "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "ref": "gergely/version-bump", + "repo": "plutip", + "type": "github" + } + }, + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils_33", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1641849362, + "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "fetched-projectdir-test", + "repo": "poetry2nix", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_85" + }, + "locked": { + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat_13", + "gitignore": "gitignore", + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1716213921, + "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_10": { + "inputs": { + "flake-compat": "flake-compat_47", + "flake-utils": "flake-utils_90", + "gitignore": "gitignore_10", + "nixpkgs": "nixpkgs_130", + "nixpkgs-stable": "nixpkgs-stable_19" + }, + "locked": { + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_11": { + "inputs": { + "flake-compat": "flake-compat_48", + "flake-utils": "flake-utils_92", + "gitignore": "gitignore_11", + "nixpkgs": "nixpkgs_132", + "nixpkgs-stable": "nixpkgs-stable_21" + }, + "locked": { + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_12": { + "inputs": { + "flake-compat": "flake-compat_51", + "flake-utils": "flake-utils_98", + "gitignore": "gitignore_12", + "nixpkgs": "nixpkgs_136", + "nixpkgs-stable": "nixpkgs-stable_23" + }, + "locked": { + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_13": { + "inputs": { + "flake-compat": "flake-compat_53", + "flake-utils": "flake-utils_102", + "gitignore": "gitignore_13", + "nixpkgs": "nixpkgs_139", + "nixpkgs-stable": "nixpkgs-stable_25" + }, + "locked": { + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_14": { + "inputs": { + "flake-compat": "flake-compat_54", + "flake-utils": "flake-utils_104", + "gitignore": "gitignore_14", + "nixpkgs": "nixpkgs_141", + "nixpkgs-stable": "nixpkgs-stable_27" + }, + "locked": { + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_15": { + "inputs": { + "flake-compat": "flake-compat_55", + "flake-utils": "flake-utils_106", + "gitignore": "gitignore_15", + "nixpkgs": "nixpkgs_143", + "nixpkgs-stable": "nixpkgs-stable_29" + }, + "locked": { + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_16": { + "inputs": { + "flake-compat": "flake-compat_56", + "flake-utils": "flake-utils_108", + "gitignore": "gitignore_16", + "nixpkgs": "nixpkgs_145", + "nixpkgs-stable": "nixpkgs-stable_31" + }, + "locked": { + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_2": { + "inputs": { + "flake-compat": "flake-compat_31", + "flake-utils": "flake-utils_58", + "gitignore": "gitignore_2", + "nixpkgs": "nixpkgs_106", + "nixpkgs-stable": "nixpkgs-stable_3" + }, + "locked": { + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_3": { + "inputs": { + "flake-compat": "flake-compat_33", + "flake-utils": "flake-utils_62", + "gitignore": "gitignore_3", + "nixpkgs": "nixpkgs_109", + "nixpkgs-stable": "nixpkgs-stable_5" + }, + "locked": { + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_4": { + "inputs": { + "flake-compat": "flake-compat_34", + "flake-utils": "flake-utils_64", + "gitignore": "gitignore_4", + "nixpkgs": "nixpkgs_111", + "nixpkgs-stable": "nixpkgs-stable_7" + }, + "locked": { + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_5": { + "inputs": { + "flake-compat": "flake-compat_37", + "flake-utils": "flake-utils_70", + "gitignore": "gitignore_5", + "nixpkgs": "nixpkgs_115", + "nixpkgs-stable": "nixpkgs-stable_9" + }, + "locked": { + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_6": { + "inputs": { + "flake-compat": "flake-compat_39", + "flake-utils": "flake-utils_74", + "gitignore": "gitignore_6", + "nixpkgs": "nixpkgs_118", + "nixpkgs-stable": "nixpkgs-stable_11" + }, + "locked": { + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_7": { + "inputs": { + "flake-compat": "flake-compat_40", + "flake-utils": "flake-utils_76", + "gitignore": "gitignore_7", + "nixpkgs": "nixpkgs_120", + "nixpkgs-stable": "nixpkgs-stable_13" + }, + "locked": { + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_8": { + "inputs": { + "flake-compat": "flake-compat_41", + "flake-utils": "flake-utils_78", + "gitignore": "gitignore_8", + "nixpkgs": "nixpkgs_122", + "nixpkgs-stable": "nixpkgs-stable_15" + }, + "locked": { + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks-nix_9": { + "inputs": { + "flake-compat": "flake-compat_45", + "flake-utils": "flake-utils_86", + "gitignore": "gitignore_9", + "nixpkgs": "nixpkgs_127", + "nixpkgs-stable": "nixpkgs-stable_17" + }, + "locked": { + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "ragenix": { + "inputs": { + "agenix": "agenix_3", + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_51", + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "type": "github" + }, + "original": { + "owner": "yaxitech", + "repo": "ragenix", + "type": "github" + } + }, + "ragenix_2": { + "inputs": { + "agenix": "agenix_4", + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_54", + "rust-overlay": "rust-overlay_4" + }, + "locked": { + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ragenix", + "type": "github" + } + }, + "ragenix_3": { + "inputs": { + "agenix": "agenix_5", + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_63", + "rust-overlay": "rust-overlay_5" + }, + "locked": { + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "type": "github" + }, + "original": { + "owner": "yaxitech", + "repo": "ragenix", + "type": "github" + } + }, + "ragenix_4": { + "inputs": { + "agenix": "agenix_7", + "flake-utils": "flake-utils_35", + "nixpkgs": "nixpkgs_80", + "rust-overlay": "rust-overlay_6" + }, + "locked": { + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "type": "github" + }, + "original": { + "owner": "yaxitech", + "repo": "ragenix", + "type": "github" + } + }, + "ragenix_5": { + "inputs": { + "agenix": "agenix_8", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_83", + "rust-overlay": "rust-overlay_7" + }, + "locked": { + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ragenix", + "type": "github" + } + }, + "root": { + "inputs": { + "CHaP": "CHaP", + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-nix": "cardano-nix", + "cardano-node": "cardano-node", + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_25", + "hackage-nix": "hackage-nix", + "haskell-nix": "haskell-nix_4", + "hercules-ci-effects": "hercules-ci-effects_2", + "iohk-nix": "iohk-nix_3", + "kupo-nixos": "kupo-nixos", + "nixpkgs": [ + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios_2", + "plutip": "plutip" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1645205556, + "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_2": { + "flake": false, + "locked": { + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_3": { + "flake": false, + "locked": { + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_4": { + "flake": false, + "locked": { + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_5": { + "flake": false, + "locked": { + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_6": { + "flake": false, + "locked": { + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_7": { + "flake": false, + "locked": { + "lastModified": 1660579619, + "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_8": { + "flake": false, + "locked": { + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_9": { + "flake": false, + "locked": { + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_3": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_4": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_5": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_6": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_7": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "secp256k1": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_10": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_11": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_12": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_13": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_14": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_15": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_16": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_17": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_18": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_19": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_2": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_20": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_21": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_22": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_3": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_4": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_5": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_6": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_7": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_8": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_9": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "sodium": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_10": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_11": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_12": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_13": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_14": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_15": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_16": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_17": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_18": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_19": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_2": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_20": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_21": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_22": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_3": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_4": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_5": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_6": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_7": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_8": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_9": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_10", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1690199016, + "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "sphinxcontrib-haddock": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_10": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_11": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_12": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_13": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_14": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_15": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_2": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_3": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_4": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_5": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_6": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_7": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_8": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "sphinxcontrib-haddock_9": { + "flake": false, + "locked": { + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" + } + }, + "stable": { + "locked": { + "lastModified": 1669735802, + "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "731cc710aeebecbf45a258e977e8b68350549522", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "stackage": { + "flake": false, + "locked": { + "lastModified": 1701043780, + "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_10": { + "flake": false, + "locked": { + "lastModified": 1714954836, + "narHash": "sha256-ksReW99DOMNsNdRYDp/GIC2np/PVoqIIeuGbCB5YoFQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "991de0dd2e48574c7aff96ea0b2315973c4d3458", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_11": { + "flake": false, + "locked": { + "lastModified": 1714608979, + "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_12": { + "flake": false, + "locked": { + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_13": { + "flake": false, + "locked": { + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_14": { + "flake": false, + "locked": { + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_15": { + "flake": false, + "locked": { + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_16": { + "flake": false, + "locked": { + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_17": { + "flake": false, + "locked": { + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_18": { + "flake": false, + "locked": { + "lastModified": 1714608979, + "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_19": { + "flake": false, + "locked": { + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_2": { + "flake": false, + "locked": { + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_20": { + "flake": false, + "locked": { + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_21": { + "flake": false, + "locked": { + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_22": { + "flake": false, + "locked": { + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_23": { + "flake": false, + "locked": { + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_24": { + "flake": false, + "locked": { + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_3": { + "flake": false, + "locked": { + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_4": { + "flake": false, + "locked": { + "lastModified": 1712276009, + "narHash": "sha256-KlRJ+CGXRueyz2VRLDwra5JBNaI2GkltNJAjHa7fowE=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "758035379a5ac4390879e4cd5164abe0c96fcea7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_5": { + "flake": false, + "locked": { + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_6": { + "flake": false, + "locked": { + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_7": { + "flake": false, + "locked": { + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_8": { + "flake": false, + "locked": { + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_9": { + "flake": false, + "locked": { + "lastModified": 1718842995, + "narHash": "sha256-z1ETU1nJoTUpK7BcdSYuYph6njhJJR8hTZ197lzXX3E=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "b224b7d7461de53fcf700bb14bde43d6efa2ee3b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "statix": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1676888642, + "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", + "owner": "nerdypepper", + "repo": "statix", + "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", + "type": "github" + }, + "original": { + "owner": "nerdypepper", + "repo": "statix", + "type": "github" + } + }, + "std": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_8", + "incl": "incl", + "makes": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_20", + "nosys": "nosys", + "yants": "yants" + }, + "locked": { + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_2": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_11", + "incl": "incl_2", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_23", + "paisano": "paisano", + "paisano-tui": "paisano-tui", + "yants": "yants_2" + }, + "locked": { + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_3": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "blank": "blank_3", + "devshell": "devshell_3", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_13", + "haumea": "haumea", + "incl": "incl_3", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_28", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", + "yants": "yants_3" + }, + "locked": { + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_4": { + "inputs": { + "arion": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_4", + "devshell": "devshell_5", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_18", + "incl": "incl_4", + "makes": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_32", + "paisano": "paisano_3", + "paisano-tui": "paisano-tui_3", + "yants": "yants_4" + }, + "locked": { + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_5": { + "inputs": { + "arion": [ + "cardano-node", + "std", + "blank" + ], + "blank": "blank_5", + "devshell": "devshell_6", + "dmerge": "dmerge_5", + "flake-utils": "flake-utils_20", + "haumea": "haumea_2", + "incl": "incl_5", + "makes": [ + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "std", + "blank" + ], + "n2c": "n2c_5", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_37", + "paisano": "paisano_4", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor_2", + "paisano-tui": "paisano-tui_4", + "yants": "yants_5" + }, + "locked": { + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_6": { + "inputs": { + "devshell": "devshell_12", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_29", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_64", + "yants": "yants_7" + }, + "locked": { + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "owner": "divnix", + "repo": "std", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_7": { + "inputs": { + "devshell": "devshell_20", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_45", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_7", + "nixpkgs": "nixpkgs_94", + "yants": "yants_9" + }, + "locked": { + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "owner": "divnix", + "repo": "std", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_8": { + "inputs": { + "devshell": "devshell_21", + "nixpkgs": "nixpkgs_97", + "yants": "yants_10" + }, + "locked": { + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "owner": "divnix", + "repo": "std", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "stdlib": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_10": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_11": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_12": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_13": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_2": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_3": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_4": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_5": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_6": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_7": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_8": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_9": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_10": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_11": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_12": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_13": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_14": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_15": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_16": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_17": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_18": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_19": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_20": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_21": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_22": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_23": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_24": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_25": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_26": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_27": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_28": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_29": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_30": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_31": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_32": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_33": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_34": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_35": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_36": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_37": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_38": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_39": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_40": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_41": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_42": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_43": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_44": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_45": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_46": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_47": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_48": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_49": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_7": { - "inputs": { - "devshell": "devshell_20", - "dmerge": "dmerge_7", - "flake-utils": "flake-utils_45", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_7", - "nixpkgs": "nixpkgs_94", - "yants": "yants_9" - }, + "systems_50": { "locked": { - "lastModified": 1661367957, - "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", - "owner": "divnix", - "repo": "std", - "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_8": { - "inputs": { - "devshell": "devshell_21", - "nixpkgs": "nixpkgs_97", - "yants": "yants_10" - }, + "systems_51": { "locked": { - "lastModified": 1652784712, - "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", - "owner": "divnix", - "repo": "std", - "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib": { + "systems_52": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_10": { + "systems_53": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_11": { + "systems_54": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_12": { + "systems_55": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_13": { + "systems_56": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_2": { + "systems_57": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_3": { + "systems_58": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_4": { + "systems_59": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_5": { + "systems_6": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_6": { + "systems_60": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_7": { + "systems_61": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_8": { + "systems_62": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_9": { + "systems_63": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "systems": { + "systems_64": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -15336,7 +31938,7 @@ "type": "github" } }, - "systems_2": { + "systems_7": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -15351,7 +31953,7 @@ "type": "github" } }, - "systems_3": { + "systems_8": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -15366,7 +31968,7 @@ "type": "github" } }, - "systems_4": { + "systems_9": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", diff --git a/flake.nix b/flake.nix index 673cb1c3b..f8e7cd05a 100644 --- a/flake.nix +++ b/flake.nix @@ -48,6 +48,15 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + # TODO: Remove this input as soon as a new version compatible with + # the latest node is released. Use Kupo from cardano-nix. + kupo-nixos = { + url = "github:Fourierlabs/kupo-nixos/add-conway"; + inputs = { + CHaP.follows = "CHaP"; + }; + }; + # Get Ogmios test fixtures ogmios = { url = "github:CardanoSolutions/ogmios/v6.4.0"; @@ -215,7 +224,8 @@ name = "ctl-e2e-test"; runnerMain = "Test.Ctl.E2E"; testMain = "Ctl.Examples.ByUrl"; - buildInputs = [ inputs.cardano-nix.packages.${pkgs.system}."kupo-${kupoVersion}" ]; + buildInputs = [ inputs.kupo-nixos.packages.${pkgs.system}.kupo ]; + # buildInputs = [ inputs.cardano-nix.packages.${pkgs.system}."kupo-${kupoVersion}" ]; }; ctl-plutip-test = project.runPlutipTest { name = "ctl-plutip-test"; @@ -306,7 +316,8 @@ plutip-server = (plutipServerFor system).hsPkgs.plutip-server.components.exes.plutip-server; ogmios = cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; - kupo = cardano-nix.packages.${system}."kupo-${kupoVersion}"; + kupo = inputs.kupo-nixos.packages.${system}.kupo; + # kupo = cardano-nix.packages.${system}."kupo-${kupoVersion}"; cardano-db-sync = inputs.db-sync.packages.${system}.cardano-db-sync; blockfrost-backend-ryo = inputs.blockfrost.packages.${system}.blockfrost-backend-ryo; buildCtlRuntime = buildCtlRuntime final; @@ -503,13 +514,14 @@ modules = [ inputs.cardano-node.nixosModules.cardano-node inputs.cardano-nix.nixosModules.ogmios - inputs.cardano-nix.nixosModules.kupo + inputs.kupo-nixos.nixosModules.kupo + # inputs.cardano-nix.nixosModules.kupo ./nix/test-nixos-configuration.nix ]; specialArgs = { inherit (inputs) cardano-configurations; ogmios = inputs.cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; - kupo = inputs.cardano-nix.packages.${system}."kupo-${kupoVersion}"; + # kupo = inputs.cardano-nix.packages.${system}."kupo-${kupoVersion}"; }; }; diff --git a/nix/test-nixos-configuration.nix b/nix/test-nixos-configuration.nix index 67f1b59d7..9349c240b 100644 --- a/nix/test-nixos-configuration.nix +++ b/nix/test-nixos-configuration.nix @@ -1,4 +1,4 @@ -{ config, modulesPath, pkgs, cardano-configurations, ogmios, kupo, ... }: +{ config, modulesPath, pkgs, cardano-configurations, ogmios, ... }: { imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ]; @@ -28,8 +28,8 @@ services.cardano-node = { enable = true; systemdSocketActivation = true; - nodeConfigFile = "${cardano-configurations}/network/mainnet/cardano-node/config.json"; - topology = "${cardano-configurations}/network/mainnet/cardano-node/topology.json"; + nodeConfigFile = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; + topology = "${cardano-configurations}/network/sanchonet/cardano-node/topology.json"; }; services.ogmios = { @@ -37,10 +37,20 @@ package = ogmios; host = "0.0.0.0"; nodeSocketPath = "/var/run/cardano-node/node.socket"; - nodeConfigPath = "${cardano-configurations}/network/mainnet/cardano-node/config.json"; + nodeConfigPath = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; }; services.kupo = { + enable = true; + host = "0.0.0.0"; + user = "kupo"; + group = "kupo"; + nodeConfig = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; + nodeSocket = "/var/run/cardano-node/node.socket"; + }; + + /* + services.kupo = { enable = true; package = kupo; user = "kupo"; @@ -48,5 +58,6 @@ host = "0.0.0.0"; nodeSocketPath = "/var/run/cardano-node/node.socket"; nodeConfigPath = "${cardano-configurations}/network/mainnet/cardano-node/config.json"; - }; + }; + */ } From 497131aefad6e787c2db07dd71db8d1b8cce98c0 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 21 Jun 2024 16:02:30 +0200 Subject: [PATCH 239/373] Re-enable plutip and staking tests --- flake.lock | 5341 +++++++++++++++++++++++++++++------------------ flake.nix | 9 +- nix/default.nix | 2 +- package.json | 4 +- 4 files changed, 3324 insertions(+), 2032 deletions(-) diff --git a/flake.lock b/flake.lock index 9fb3653d0..214aabdba 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ "CHaP_10": { "flake": false, "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -37,11 +37,11 @@ "CHaP_11": { "flake": false, "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", "type": "github" }, "original": { @@ -71,11 +71,11 @@ "CHaP_13": { "flake": false, "locked": { - "lastModified": 1714517469, - "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -88,11 +88,11 @@ "CHaP_14": { "flake": false, "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "lastModified": 1714517469, + "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", "type": "github" }, "original": { @@ -105,11 +105,11 @@ "CHaP_15": { "flake": false, "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", "type": "github" }, "original": { @@ -139,11 +139,11 @@ "CHaP_17": { "flake": false, "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -156,11 +156,11 @@ "CHaP_18": { "flake": false, "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", "type": "github" }, "original": { @@ -205,6 +205,23 @@ } }, "CHaP_20": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_21": { "flake": false, "locked": { "lastModified": 1694601145, @@ -275,11 +292,11 @@ "CHaP_6": { "flake": false, "locked": { - "lastModified": 1714517469, - "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", + "lastModified": 1686070892, + "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", + "rev": "596cf203a0a1ba252a083a79d384325000faeb49", "type": "github" }, "original": { @@ -292,11 +309,11 @@ "CHaP_7": { "flake": false, "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "lastModified": 1714517469, + "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", "type": "github" }, "original": { @@ -309,11 +326,11 @@ "CHaP_8": { "flake": false, "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", "type": "github" }, "original": { @@ -628,6 +645,22 @@ "type": "github" } }, + "HTTP_26": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_3": { "flake": false, "locked": { @@ -742,7 +775,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_39" + "nixpkgs": "nixpkgs_46" }, "locked": { "lastModified": 1641576265, @@ -760,8 +793,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_40" + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_47" }, "locked": { "lastModified": 1641404293, @@ -779,8 +812,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_42" + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_49" }, "locked": { "lastModified": 1641404293, @@ -798,8 +831,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_71" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_78" }, "locked": { "lastModified": 1641404293, @@ -817,7 +850,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_41" + "nixpkgs": "nixpkgs_48" }, "locked": { "lastModified": 1641576265, @@ -910,7 +943,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_70" + "nixpkgs": "nixpkgs_77" }, "locked": { "lastModified": 1641576265, @@ -978,7 +1011,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_65" + "nixpkgs": "nixpkgs_72" }, "locked": { "lastModified": 1646360966, @@ -1188,24 +1221,24 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_6", + "blank": "blank_7", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", "fenix": "fenix_7", - "hydra": "hydra_7", - "n2c": "n2c_6", - "nix": "nix_10", - "nixpkgs": "nixpkgs_59", + "hydra": "hydra_8", + "n2c": "n2c_7", + "nix": "nix_11", + "nixpkgs": "nixpkgs_66", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_8", + "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_5", + "ops-lib": "ops-lib_6", "ragenix": "ragenix_3", - "std": "std_6", + "std": "std_7", "terranix": "terranix_3", - "utils": "utils_17" + "utils": "utils_19" }, "locked": { "lastModified": 1661790449, @@ -1283,20 +1316,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_7", + "blank": "blank_8", "deploy": "deploy", "fenix": "fenix_5", - "hydra": "hydra_6", - "nix": "nix_7", - "nixpkgs": "nixpkgs_45", - "nixpkgs-unstable": "nixpkgs-unstable_7", + "hydra": "hydra_7", + "nix": "nix_8", + "nixpkgs": "nixpkgs_52", + "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib_4", + "ops-lib": "ops-lib_5", "ragenix": "ragenix", "terranix": "terranix_2", - "utils": "utils_12", + "utils": "utils_14", "vulnix": "vulnix" }, "locked": { @@ -1317,20 +1350,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_8", + "blank": "blank_9", "deploy": "deploy_3", "fenix": "fenix_9", - "hydra": "hydra_8", - "nix": "nix_14", - "nixpkgs": "nixpkgs_74", - "nixpkgs-unstable": "nixpkgs-unstable_9", + "hydra": "hydra_9", + "nix": "nix_15", + "nixpkgs": "nixpkgs_81", + "nixpkgs-unstable": "nixpkgs-unstable_10", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_6", + "ops-lib": "ops-lib_7", "ragenix": "ragenix_4", "terranix": "terranix_4", - "utils": "utils_26", + "utils": "utils_28", "vulnix": "vulnix_2" }, "locked": { @@ -1467,6 +1500,21 @@ "type": "github" } }, + "blank_9": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1504,6 +1552,23 @@ } }, "blst_10": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_11": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1520,7 +1585,7 @@ "type": "github" } }, - "blst_11": { + "blst_12": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1537,7 +1602,7 @@ "type": "github" } }, - "blst_12": { + "blst_13": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1554,7 +1619,7 @@ "type": "github" } }, - "blst_13": { + "blst_14": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1571,7 +1636,7 @@ "type": "github" } }, - "blst_14": { + "blst_15": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1588,7 +1653,7 @@ "type": "github" } }, - "blst_15": { + "blst_16": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1605,7 +1670,7 @@ "type": "github" } }, - "blst_16": { + "blst_17": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1622,7 +1687,7 @@ "type": "github" } }, - "blst_17": { + "blst_18": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1639,7 +1704,7 @@ "type": "github" } }, - "blst_18": { + "blst_19": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1656,7 +1721,7 @@ "type": "github" } }, - "blst_19": { + "blst_2": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1673,7 +1738,7 @@ "type": "github" } }, - "blst_2": { + "blst_20": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1690,7 +1755,7 @@ "type": "github" } }, - "blst_20": { + "blst_21": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1707,7 +1772,7 @@ "type": "github" } }, - "blst_21": { + "blst_22": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1724,7 +1789,7 @@ "type": "github" } }, - "blst_22": { + "blst_23": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1812,34 +1877,34 @@ "blst_7": { "flake": false, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", "owner": "supranational", "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { "owner": "supranational", - "ref": "v0.3.11", "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, "blst_8": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", "owner": "supranational", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { "owner": "supranational", + "ref": "v0.3.11", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, @@ -2182,6 +2247,23 @@ "type": "github" } }, + "cabal-32_26": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, "cabal-32_3": { "flake": false, "locked": { @@ -2321,11 +2403,11 @@ "cabal-34_10": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -2607,6 +2689,23 @@ "type": "github" } }, + "cabal-34_26": { + "flake": false, + "locked": { + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, "cabal-34_3": { "flake": false, "locked": { @@ -2661,11 +2760,11 @@ "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -2746,11 +2845,11 @@ "cabal-36_10": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -3032,6 +3131,23 @@ "type": "github" } }, + "cabal-36_26": { + "flake": false, + "locked": { + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, "cabal-36_3": { "flake": false, "locked": { @@ -3086,11 +3202,11 @@ "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -3170,7 +3286,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_53", + "nixpkgs": "nixpkgs_60", "ragenix": "ragenix_2" }, "locked": { @@ -3191,7 +3307,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_82", + "nixpkgs": "nixpkgs_89", "ragenix": "ragenix_5" }, "locked": { @@ -3297,6 +3413,36 @@ "type": "github" } }, + "cardano-automation_4": { + "inputs": { + "flake-utils": "flake-utils_22", + "haskellNix": [ + "cardano-node-plutip", + "haskellNix" + ], + "nixpkgs": [ + "cardano-node-plutip", + "nixpkgs" + ], + "tullia": [ + "cardano-node-plutip", + "tullia" + ] + }, + "locked": { + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-automation", + "type": "github" + } + }, "cardano-configurations": { "flake": false, "locked": { @@ -3520,6 +3666,25 @@ "type": "github" } }, + "cardano-mainnet-mirror_4": { + "inputs": { + "nixpkgs": "nixpkgs_39" + }, + "locked": { + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", + "type": "github" + } + }, "cardano-nix": { "inputs": { "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", @@ -3686,6 +3851,52 @@ "type": "github" } }, + "cardano-node-plutip": { + "inputs": { + "CHaP": "CHaP_6", + "cardano-automation": "cardano-automation_4", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", + "customConfig": "customConfig_4", + "em": "em_4", + "empty-flake": "empty-flake_5", + "flake-compat": "flake-compat_18", + "hackageNix": "hackageNix_5", + "haskellNix": "haskellNix_5", + "hostNixpkgs": [ + "cardano-node-plutip", + "nixpkgs" + ], + "iohkNix": "iohkNix_5", + "nix2container": "nix2container_7", + "nixpkgs": [ + "cardano-node-plutip", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_4", + "std": [ + "cardano-node-plutip", + "tullia", + "std" + ], + "tullia": "tullia_4", + "utils": "utils_9" + }, + "locked": { + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "IntersectMBO", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "type": "github" + }, + "original": { + "owner": "IntersectMBO", + "ref": "8.1.1", + "repo": "cardano-node", + "type": "github" + } + }, "cardano-node-service": { "flake": false, "locked": { @@ -4051,6 +4262,22 @@ "type": "github" } }, + "cardano-shell_26": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, "cardano-shell_3": { "flake": false, "locked": { @@ -4165,19 +4392,19 @@ }, "cardano-wallet": { "inputs": { - "customConfig": "customConfig_4", + "customConfig": "customConfig_5", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_22", - "flake-utils": "flake-utils_41", - "haskellNix": "haskellNix_5", + "flake-compat": "flake-compat_25", + "flake-utils": "flake-utils_46", + "haskellNix": "haskellNix_6", "hostNixpkgs": [ "db-sync", "cardano-world", "cardano-wallet", "nixpkgs" ], - "iohkNix": "iohkNix_5", + "iohkNix": "iohkNix_6", "nixpkgs": [ "db-sync", "cardano-world", @@ -4232,13 +4459,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_23", + "flake-compat": "flake-compat_26", "hackage": "hackage_4", "haskell-nix": "haskell-nix_3", "iohk-nix": "iohk-nix_2", - "n2c": "n2c_7", + "n2c": "n2c_8", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_93", + "nixpkgs": "nixpkgs_100", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -4246,8 +4473,8 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_7", - "tullia": "tullia_4" + "std": "std_8", + "tullia": "tullia_5" }, "locked": { "lastModified": 1662508244, @@ -4267,16 +4494,16 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_13", + "devshell": "devshell_14", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix_2", "inclusive": "inclusive_9", - "nix": "nix_13", + "nix": "nix_14", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_69", + "nixpkgs": "nixpkgs_76", "poetry2nix": "poetry2nix", - "utils": "utils_21" + "utils": "utils_23" }, "locked": { "lastModified": 1647522107, @@ -4529,6 +4756,21 @@ } }, "customConfig_5": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_6": { "locked": { "lastModified": 1, "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", @@ -4543,7 +4785,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_6" + "yants": "yants_7" }, "locked": { "lastModified": 1648237091, @@ -4580,7 +4822,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_8" + "yants": "yants_9" }, "locked": { "lastModified": 1655854240, @@ -4599,16 +4841,16 @@ "db-sync": { "inputs": { "cardano-world": "cardano-world", - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_24", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", + "customConfig": "customConfig_6", + "flake-compat": "flake-compat_27", + "haskellNix": "haskellNix_7", + "iohkNix": "iohkNix_7", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "utils": "utils_28" + "utils": "utils_30" }, "locked": { "lastModified": 1670313550, @@ -4628,7 +4870,7 @@ "deploy": { "inputs": { "fenix": "fenix_4", - "flake-compat": "flake-compat_18", + "flake-compat": "flake-compat_21", "nixpkgs": [ "db-sync", "cardano-world", @@ -4639,7 +4881,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_8" + "utils": "utils_10" }, "locked": { "lastModified": 1638318651, @@ -4658,7 +4900,7 @@ "deploy_2": { "inputs": { "fenix": "fenix_6", - "flake-compat": "flake-compat_19", + "flake-compat": "flake-compat_22", "nixpkgs": [ "db-sync", "cardano-world", @@ -4667,7 +4909,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_14" + "utils": "utils_16" }, "locked": { "lastModified": 1638318651, @@ -4686,7 +4928,7 @@ "deploy_3": { "inputs": { "fenix": "fenix_8", - "flake-compat": "flake-compat_20", + "flake-compat": "flake-compat_23", "nixpkgs": [ "db-sync", "cardano-world", @@ -4696,7 +4938,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_22" + "utils": "utils_24" }, "locked": { "lastModified": 1638318651, @@ -4760,6 +5002,21 @@ } }, "devshell_10": { + "locked": { + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_11": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -4774,7 +5031,7 @@ "type": "github" } }, - "devshell_11": { + "devshell_12": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -4789,7 +5046,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_13": { "inputs": { "flake-utils": [ "db-sync", @@ -4820,10 +5077,10 @@ "type": "github" } }, - "devshell_13": { + "devshell_14": { "inputs": { - "flake-utils": "flake-utils_31", - "nixpkgs": "nixpkgs_66" + "flake-utils": "flake-utils_36", + "nixpkgs": "nixpkgs_73" }, "locked": { "lastModified": 1644227066, @@ -4839,7 +5096,7 @@ "type": "github" } }, - "devshell_14": { + "devshell_15": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -4854,7 +5111,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_16": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -4869,7 +5126,7 @@ "type": "github" } }, - "devshell_16": { + "devshell_17": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -4884,7 +5141,7 @@ "type": "github" } }, - "devshell_17": { + "devshell_18": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -4899,7 +5156,7 @@ "type": "github" } }, - "devshell_18": { + "devshell_19": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -4914,21 +5171,6 @@ "type": "github" } }, - "devshell_19": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "devshell_2": { "inputs": { "flake-utils": [ @@ -4963,6 +5205,21 @@ } }, "devshell_20": { + "locked": { + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_21": { "inputs": { "flake-utils": [ "db-sync", @@ -4991,9 +5248,9 @@ "type": "github" } }, - "devshell_21": { + "devshell_22": { "inputs": { - "flake-utils": "flake-utils_47", + "flake-utils": "flake-utils_52", "nixpkgs": [ "db-sync", "cardano-world", @@ -5117,12 +5374,26 @@ } }, "devshell_7": { + "inputs": { + "flake-utils": [ + "cardano-node-plutip", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", "owner": "numtide", "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { @@ -5133,11 +5404,11 @@ }, "devshell_8": { "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", "owner": "numtide", "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { @@ -5148,11 +5419,11 @@ }, "devshell_9": { "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", "owner": "numtide", "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { @@ -5328,6 +5599,35 @@ } }, "dmerge_6": { + "inputs": { + "nixlib": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-node-plutip", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_7": { "inputs": { "nixlib": [ "db-sync", @@ -5358,7 +5658,7 @@ "type": "github" } }, - "dmerge_7": { + "dmerge_8": { "inputs": { "nixlib": [ "db-sync", @@ -5389,9 +5689,9 @@ }, "driver": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_15", "inclusive": "inclusive_7", - "nix": "nix_12", + "nix": "nix_13", "nixpkgs": [ "db-sync", "cardano-world", @@ -5399,7 +5699,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_18" + "utils": "utils_20" }, "locked": { "lastModified": 1644418487, @@ -5433,7 +5733,7 @@ }, "easy-purescript-nix_10": { "inputs": { - "flake-utils": "flake-utils_79" + "flake-utils": "flake-utils_84" }, "locked": { "lastModified": 1710161569, @@ -5451,7 +5751,7 @@ }, "easy-purescript-nix_11": { "inputs": { - "flake-utils": "flake-utils_81" + "flake-utils": "flake-utils_86" }, "locked": { "lastModified": 1710161569, @@ -5469,7 +5769,7 @@ }, "easy-purescript-nix_12": { "inputs": { - "flake-utils": "flake-utils_83" + "flake-utils": "flake-utils_88" }, "locked": { "lastModified": 1696584097, @@ -5487,7 +5787,7 @@ }, "easy-purescript-nix_13": { "inputs": { - "flake-utils": "flake-utils_87" + "flake-utils": "flake-utils_92" }, "locked": { "lastModified": 1696584097, @@ -5505,7 +5805,7 @@ }, "easy-purescript-nix_14": { "inputs": { - "flake-utils": "flake-utils_93" + "flake-utils": "flake-utils_98" }, "locked": { "lastModified": 1710161569, @@ -5523,7 +5823,7 @@ }, "easy-purescript-nix_15": { "inputs": { - "flake-utils": "flake-utils_95" + "flake-utils": "flake-utils_100" }, "locked": { "lastModified": 1696584097, @@ -5541,7 +5841,7 @@ }, "easy-purescript-nix_16": { "inputs": { - "flake-utils": "flake-utils_99" + "flake-utils": "flake-utils_104" }, "locked": { "lastModified": 1696584097, @@ -5559,7 +5859,7 @@ }, "easy-purescript-nix_2": { "inputs": { - "flake-utils": "flake-utils_49" + "flake-utils": "flake-utils_54" }, "locked": { "lastModified": 1710161569, @@ -5577,7 +5877,7 @@ }, "easy-purescript-nix_3": { "inputs": { - "flake-utils": "flake-utils_51" + "flake-utils": "flake-utils_56" }, "locked": { "lastModified": 1710161569, @@ -5595,7 +5895,7 @@ }, "easy-purescript-nix_4": { "inputs": { - "flake-utils": "flake-utils_53" + "flake-utils": "flake-utils_58" }, "locked": { "lastModified": 1710161569, @@ -5613,7 +5913,7 @@ }, "easy-purescript-nix_5": { "inputs": { - "flake-utils": "flake-utils_55" + "flake-utils": "flake-utils_60" }, "locked": { "lastModified": 1696584097, @@ -5631,7 +5931,7 @@ }, "easy-purescript-nix_6": { "inputs": { - "flake-utils": "flake-utils_59" + "flake-utils": "flake-utils_64" }, "locked": { "lastModified": 1696584097, @@ -5649,7 +5949,7 @@ }, "easy-purescript-nix_7": { "inputs": { - "flake-utils": "flake-utils_65" + "flake-utils": "flake-utils_70" }, "locked": { "lastModified": 1710161569, @@ -5667,7 +5967,7 @@ }, "easy-purescript-nix_8": { "inputs": { - "flake-utils": "flake-utils_67" + "flake-utils": "flake-utils_72" }, "locked": { "lastModified": 1696584097, @@ -5685,7 +5985,7 @@ }, "easy-purescript-nix_9": { "inputs": { - "flake-utils": "flake-utils_71" + "flake-utils": "flake-utils_76" }, "locked": { "lastModified": 1696584097, @@ -5749,11 +6049,27 @@ "type": "github" } }, + "em_4": { + "flake": false, + "locked": { + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "type": "github" + }, + "original": { + "owner": "deepfire", + "repo": "em", + "type": "github" + } + }, "ema": { "inputs": { - "flake-compat": "flake-compat_21", - "flake-utils": "flake-utils_38", - "nixpkgs": "nixpkgs_84", + "flake-compat": "flake-compat_24", + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_91", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -5792,7 +6108,7 @@ "ema": "ema_2", "flake-parts": "flake-parts_6", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_87", + "nixpkgs": "nixpkgs_94", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -5869,6 +6185,21 @@ "type": "github" } }, + "empty-flake_5": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, "fenix": { "inputs": { "nixpkgs": [ @@ -5935,7 +6266,7 @@ }, "fenix_4": { "inputs": { - "nixpkgs": "nixpkgs_43", + "nixpkgs": "nixpkgs_50", "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { @@ -5980,7 +6311,7 @@ }, "fenix_6": { "inputs": { - "nixpkgs": "nixpkgs_56", + "nixpkgs": "nixpkgs_63", "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { @@ -6023,7 +6354,7 @@ }, "fenix_8": { "inputs": { - "nixpkgs": "nixpkgs_72", + "nixpkgs": "nixpkgs_79", "rust-analyzer-src": "rust-analyzer-src_8" }, "locked": { @@ -6216,15 +6547,16 @@ "flake-compat_18": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -6232,15 +6564,16 @@ "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6265,11 +6598,11 @@ "flake-compat_20": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { @@ -6281,11 +6614,11 @@ "flake-compat_21": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -6297,15 +6630,15 @@ "flake-compat_22": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6313,11 +6646,11 @@ "flake-compat_23": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -6329,16 +6662,15 @@ "flake-compat_24": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6346,15 +6678,15 @@ "flake-compat_25": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", "repo": "flake-compat", "type": "github" } @@ -6362,16 +6694,15 @@ "flake-compat_26": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6379,16 +6710,16 @@ "flake-compat_27": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -6396,16 +6727,15 @@ "flake-compat_28": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6463,15 +6793,16 @@ "flake-compat_31": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6496,15 +6827,16 @@ "flake-compat_33": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6512,11 +6844,11 @@ "flake-compat_34": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -6545,16 +6877,15 @@ "flake-compat_36": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6562,11 +6893,11 @@ "flake-compat_37": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -6595,15 +6926,16 @@ "flake-compat_39": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6628,11 +6960,11 @@ "flake-compat_40": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -6644,15 +6976,16 @@ "flake-compat_41": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6660,16 +6993,15 @@ "flake-compat_42": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6677,16 +7009,15 @@ "flake-compat_43": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6694,16 +7025,15 @@ "flake-compat_44": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6711,15 +7041,16 @@ "flake-compat_45": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6744,15 +7075,16 @@ "flake-compat_47": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6760,11 +7092,11 @@ "flake-compat_48": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -6810,16 +7142,15 @@ "flake-compat_50": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6827,11 +7158,11 @@ "flake-compat_51": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -6858,6 +7189,23 @@ } }, "flake-compat_53": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_54": { "flake": false, "locked": { "lastModified": 1673956053, @@ -6873,14 +7221,31 @@ "type": "github" } }, - "flake-compat_54": { + "flake-compat_55": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_56": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -6889,7 +7254,7 @@ "type": "github" } }, - "flake-compat_55": { + "flake-compat_57": { "flake": false, "locked": { "lastModified": 1696426674, @@ -6905,7 +7270,7 @@ "type": "github" } }, - "flake-compat_56": { + "flake-compat_58": { "flake": false, "locked": { "lastModified": 1696426674, @@ -6921,14 +7286,14 @@ "type": "github" } }, - "flake-compat_57": { + "flake-compat_59": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -6954,6 +7319,22 @@ "type": "github" } }, + "flake-compat_60": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-compat_7": { "flake": false, "locked": { @@ -7095,7 +7476,7 @@ }, "flake-parts_6": { "inputs": { - "nixpkgs": "nixpkgs_86" + "nixpkgs": "nixpkgs_93" }, "locked": { "lastModified": 1655570068, @@ -7177,6 +7558,96 @@ } }, "flake-utils_100": { + "inputs": { + "systems": "systems_51" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_101": { + "inputs": { + "systems": "systems_52" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_102": { + "inputs": { + "systems": "systems_53" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_103": { + "inputs": { + "systems": "systems_54" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_104": { + "inputs": { + "systems": "systems_55" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_105": { "inputs": { "systems": "systems_56" }, @@ -7194,7 +7665,7 @@ "type": "github" } }, - "flake-utils_101": { + "flake-utils_106": { "inputs": { "systems": "systems_57" }, @@ -7212,7 +7683,7 @@ "type": "github" } }, - "flake-utils_102": { + "flake-utils_107": { "inputs": { "systems": "systems_58" }, @@ -7230,7 +7701,7 @@ "type": "github" } }, - "flake-utils_103": { + "flake-utils_108": { "inputs": { "systems": "systems_59" }, @@ -7248,7 +7719,7 @@ "type": "github" } }, - "flake-utils_104": { + "flake-utils_109": { "inputs": { "systems": "systems_60" }, @@ -7266,16 +7737,13 @@ "type": "github" } }, - "flake-utils_105": { - "inputs": { - "systems": "systems_61" - }, + "flake-utils_11": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -7284,9 +7752,9 @@ "type": "github" } }, - "flake-utils_106": { + "flake-utils_110": { "inputs": { - "systems": "systems_62" + "systems": "systems_61" }, "locked": { "lastModified": 1710146030, @@ -7302,9 +7770,9 @@ "type": "github" } }, - "flake-utils_107": { + "flake-utils_111": { "inputs": { - "systems": "systems_63" + "systems": "systems_62" }, "locked": { "lastModified": 1710146030, @@ -7320,9 +7788,9 @@ "type": "github" } }, - "flake-utils_108": { + "flake-utils_112": { "inputs": { - "systems": "systems_64" + "systems": "systems_63" }, "locked": { "lastModified": 1710146030, @@ -7338,13 +7806,16 @@ "type": "github" } }, - "flake-utils_11": { + "flake-utils_113": { + "inputs": { + "systems": "systems_64" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -7524,11 +7995,11 @@ }, "flake-utils_22": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -7539,26 +8010,27 @@ }, "flake-utils_23": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "numtide", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", "repo": "flake-utils", "type": "github" } }, "flake-utils_24": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7569,11 +8041,11 @@ }, "flake-utils_25": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7584,11 +8056,11 @@ }, "flake-utils_26": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -7629,11 +8101,11 @@ }, "flake-utils_29": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -7674,11 +8146,11 @@ }, "flake-utils_31": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -7689,11 +8161,11 @@ }, "flake-utils_32": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -7704,11 +8176,11 @@ }, "flake-utils_33": { "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -7719,11 +8191,11 @@ }, "flake-utils_34": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -7734,11 +8206,11 @@ }, "flake-utils_35": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -7749,11 +8221,11 @@ }, "flake-utils_36": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -7779,11 +8251,11 @@ }, "flake-utils_38": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { @@ -7794,11 +8266,11 @@ }, "flake-utils_39": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -7824,27 +8296,26 @@ }, "flake-utils_40": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { "owner": "numtide", - "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_41": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -7870,11 +8341,11 @@ }, "flake-utils_43": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -7885,11 +8356,11 @@ }, "flake-utils_44": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { @@ -7900,26 +8371,27 @@ }, "flake-utils_45": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { "owner": "numtide", + "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_46": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7930,11 +8402,11 @@ }, "flake-utils_47": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -7959,15 +8431,12 @@ } }, "flake-utils_49": { - "inputs": { - "systems": "systems_5" - }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -7993,15 +8462,12 @@ } }, "flake-utils_50": { - "inputs": { - "systems": "systems_6" - }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -8011,15 +8477,12 @@ } }, "flake-utils_51": { - "inputs": { - "systems": "systems_7" - }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -8029,15 +8492,12 @@ } }, "flake-utils_52": { - "inputs": { - "systems": "systems_8" - }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -8047,15 +8507,12 @@ } }, "flake-utils_53": { - "inputs": { - "systems": "systems_9" - }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -8066,14 +8523,14 @@ }, "flake-utils_54": { "inputs": { - "systems": "systems_10" + "systems": "systems_5" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8084,14 +8541,14 @@ }, "flake-utils_55": { "inputs": { - "systems": "systems_11" + "systems": "systems_6" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8102,14 +8559,14 @@ }, "flake-utils_56": { "inputs": { - "systems": "systems_12" + "systems": "systems_7" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8120,14 +8577,14 @@ }, "flake-utils_57": { "inputs": { - "systems": "systems_13" + "systems": "systems_8" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8138,7 +8595,7 @@ }, "flake-utils_58": { "inputs": { - "systems": "systems_14" + "systems": "systems_9" }, "locked": { "lastModified": 1685518550, @@ -8156,14 +8613,14 @@ }, "flake-utils_59": { "inputs": { - "systems": "systems_15" + "systems": "systems_10" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8189,14 +8646,14 @@ }, "flake-utils_60": { "inputs": { - "systems": "systems_16" + "systems": "systems_11" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8207,14 +8664,14 @@ }, "flake-utils_61": { "inputs": { - "systems": "systems_17" + "systems": "systems_12" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8225,14 +8682,14 @@ }, "flake-utils_62": { "inputs": { - "systems": "systems_18" + "systems": "systems_13" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8243,14 +8700,14 @@ }, "flake-utils_63": { "inputs": { - "systems": "systems_19" + "systems": "systems_14" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8261,14 +8718,14 @@ }, "flake-utils_64": { "inputs": { - "systems": "systems_20" + "systems": "systems_15" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8279,14 +8736,14 @@ }, "flake-utils_65": { "inputs": { - "systems": "systems_21" + "systems": "systems_16" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8297,14 +8754,14 @@ }, "flake-utils_66": { "inputs": { - "systems": "systems_22" + "systems": "systems_17" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8315,7 +8772,7 @@ }, "flake-utils_67": { "inputs": { - "systems": "systems_23" + "systems": "systems_18" }, "locked": { "lastModified": 1685518550, @@ -8333,14 +8790,14 @@ }, "flake-utils_68": { "inputs": { - "systems": "systems_24" + "systems": "systems_19" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8351,14 +8808,14 @@ }, "flake-utils_69": { "inputs": { - "systems": "systems_25" + "systems": "systems_20" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8384,7 +8841,7 @@ }, "flake-utils_70": { "inputs": { - "systems": "systems_26" + "systems": "systems_21" }, "locked": { "lastModified": 1685518550, @@ -8402,14 +8859,14 @@ }, "flake-utils_71": { "inputs": { - "systems": "systems_27" + "systems": "systems_22" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8420,14 +8877,14 @@ }, "flake-utils_72": { "inputs": { - "systems": "systems_28" + "systems": "systems_23" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8438,14 +8895,14 @@ }, "flake-utils_73": { "inputs": { - "systems": "systems_29" + "systems": "systems_24" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8456,14 +8913,14 @@ }, "flake-utils_74": { "inputs": { - "systems": "systems_30" + "systems": "systems_25" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8474,14 +8931,14 @@ }, "flake-utils_75": { "inputs": { - "systems": "systems_31" + "systems": "systems_26" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8492,14 +8949,14 @@ }, "flake-utils_76": { "inputs": { - "systems": "systems_32" + "systems": "systems_27" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8510,14 +8967,14 @@ }, "flake-utils_77": { "inputs": { - "systems": "systems_33" + "systems": "systems_28" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8528,14 +8985,14 @@ }, "flake-utils_78": { "inputs": { - "systems": "systems_34" + "systems": "systems_29" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8546,7 +9003,7 @@ }, "flake-utils_79": { "inputs": { - "systems": "systems_35" + "systems": "systems_30" }, "locked": { "lastModified": 1685518550, @@ -8579,7 +9036,7 @@ }, "flake-utils_80": { "inputs": { - "systems": "systems_36" + "systems": "systems_31" }, "locked": { "lastModified": 1710146030, @@ -8597,14 +9054,14 @@ }, "flake-utils_81": { "inputs": { - "systems": "systems_37" + "systems": "systems_32" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8615,7 +9072,7 @@ }, "flake-utils_82": { "inputs": { - "systems": "systems_38" + "systems": "systems_33" }, "locked": { "lastModified": 1710146030, @@ -8633,14 +9090,14 @@ }, "flake-utils_83": { "inputs": { - "systems": "systems_39" + "systems": "systems_34" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8651,14 +9108,14 @@ }, "flake-utils_84": { "inputs": { - "systems": "systems_40" + "systems": "systems_35" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8669,14 +9126,14 @@ }, "flake-utils_85": { "inputs": { - "systems": "systems_41" + "systems": "systems_36" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8687,7 +9144,7 @@ }, "flake-utils_86": { "inputs": { - "systems": "systems_42" + "systems": "systems_37" }, "locked": { "lastModified": 1685518550, @@ -8705,14 +9162,14 @@ }, "flake-utils_87": { "inputs": { - "systems": "systems_43" + "systems": "systems_38" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8723,14 +9180,14 @@ }, "flake-utils_88": { "inputs": { - "systems": "systems_44" + "systems": "systems_39" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8741,14 +9198,14 @@ }, "flake-utils_89": { "inputs": { - "systems": "systems_45" + "systems": "systems_40" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8774,14 +9231,14 @@ }, "flake-utils_90": { "inputs": { - "systems": "systems_46" + "systems": "systems_41" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8792,14 +9249,14 @@ }, "flake-utils_91": { "inputs": { - "systems": "systems_47" + "systems": "systems_42" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8810,14 +9267,14 @@ }, "flake-utils_92": { "inputs": { - "systems": "systems_48" + "systems": "systems_43" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8828,14 +9285,14 @@ }, "flake-utils_93": { "inputs": { - "systems": "systems_49" + "systems": "systems_44" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8846,14 +9303,14 @@ }, "flake-utils_94": { "inputs": { - "systems": "systems_50" + "systems": "systems_45" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8864,7 +9321,7 @@ }, "flake-utils_95": { "inputs": { - "systems": "systems_51" + "systems": "systems_46" }, "locked": { "lastModified": 1685518550, @@ -8882,14 +9339,14 @@ }, "flake-utils_96": { "inputs": { - "systems": "systems_52" + "systems": "systems_47" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8900,14 +9357,14 @@ }, "flake-utils_97": { "inputs": { - "systems": "systems_53" + "systems": "systems_48" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8918,7 +9375,7 @@ }, "flake-utils_98": { "inputs": { - "systems": "systems_54" + "systems": "systems_49" }, "locked": { "lastModified": 1685518550, @@ -8936,14 +9393,14 @@ }, "flake-utils_99": { "inputs": { - "systems": "systems_55" + "systems": "systems_50" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8970,7 +9427,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_15", + "devshell": "devshell_16", "inclusive": "inclusive_8", "nixpkgs": [ "db-sync", @@ -8979,7 +9436,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_19" + "utils": "utils_21" }, "locked": { "lastModified": 1642008295, @@ -9301,6 +9758,23 @@ "type": "github" } }, + "ghc-8.6.5-iohk_26": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, "ghc-8.6.5-iohk_3": { "flake": false, "locked": { @@ -10615,6 +11089,25 @@ "type": "github" } }, + "gomod2nix_4": { + "inputs": { + "nixpkgs": "nixpkgs_42", + "utils": "utils_8" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, "hackage": { "flake": false, "locked": { @@ -10711,6 +11204,22 @@ "type": "github" } }, + "hackageNix_5": { + "flake": false, + "locked": { + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, "hackage_10": { "flake": false, "locked": { @@ -11084,13 +11593,13 @@ }, "haskell-nix_10": { "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_16", - "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_35", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "HTTP": "HTTP_17", + "cabal-32": "cabal-32_17", + "cabal-34": "cabal-34_17", + "cabal-36": "cabal-36_17", + "cardano-shell": "cardano-shell_17", + "flake-compat": "flake-compat_38", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", "ghc910X": "ghc910X_6", "ghc911": "ghc911_6", "hackage": [ @@ -11102,7 +11611,7 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_12", + "hls-1.10": "hls-1.10_13", "hls-2.0": "hls-2.0_11", "hls-2.2": "hls-2.2_10", "hls-2.3": "hls-2.3_10", @@ -11110,9 +11619,9 @@ "hls-2.5": "hls-2.5_6", "hls-2.6": "hls-2.6_6", "hls-2.7": "hls-2.7_5", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_18", - "iserv-proxy": "iserv-proxy_12", + "hpc-coveralls": "hpc-coveralls_17", + "hydra": "hydra_19", + "iserv-proxy": "iserv-proxy_13", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11123,16 +11632,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_13", - "nixpkgs-2211": "nixpkgs-2211_12", + "nixpkgs-2003": "nixpkgs-2003_17", + "nixpkgs-2105": "nixpkgs-2105_17", + "nixpkgs-2111": "nixpkgs-2111_17", + "nixpkgs-2205": "nixpkgs-2205_14", + "nixpkgs-2211": "nixpkgs-2211_13", "nixpkgs-2305": "nixpkgs-2305_11", "nixpkgs-2311": "nixpkgs-2311_8", - "nixpkgs-unstable": "nixpkgs-unstable_19", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_15" + "nixpkgs-unstable": "nixpkgs-unstable_20", + "old-ghc-nix": "old-ghc-nix_17", + "stackage": "stackage_16" }, "locked": { "lastModified": 1713833402, @@ -11150,13 +11659,13 @@ }, "haskell-nix_11": { "inputs": { - "HTTP": "HTTP_17", - "cabal-32": "cabal-32_17", - "cabal-34": "cabal-34_17", - "cabal-36": "cabal-36_17", - "cardano-shell": "cardano-shell_17", - "flake-compat": "flake-compat_36", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", + "HTTP": "HTTP_18", + "cabal-32": "cabal-32_18", + "cabal-34": "cabal-34_18", + "cabal-36": "cabal-36_18", + "cardano-shell": "cardano-shell_18", + "flake-compat": "flake-compat_39", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", "ghc98X": "ghc98X_5", "ghc99": "ghc99_5", "hackage": [ @@ -11170,14 +11679,14 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_13", + "hls-1.10": "hls-1.10_14", "hls-2.0": "hls-2.0_12", "hls-2.2": "hls-2.2_11", "hls-2.3": "hls-2.3_11", "hls-2.4": "hls-2.4_11", - "hpc-coveralls": "hpc-coveralls_17", - "hydra": "hydra_19", - "iserv-proxy": "iserv-proxy_13", + "hpc-coveralls": "hpc-coveralls_18", + "hydra": "hydra_20", + "iserv-proxy": "iserv-proxy_14", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11190,16 +11699,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_17", - "nixpkgs-2105": "nixpkgs-2105_17", - "nixpkgs-2111": "nixpkgs-2111_17", - "nixpkgs-2205": "nixpkgs-2205_14", - "nixpkgs-2211": "nixpkgs-2211_13", + "nixpkgs-2003": "nixpkgs-2003_18", + "nixpkgs-2105": "nixpkgs-2105_18", + "nixpkgs-2111": "nixpkgs-2111_18", + "nixpkgs-2205": "nixpkgs-2205_15", + "nixpkgs-2211": "nixpkgs-2211_14", "nixpkgs-2305": "nixpkgs-2305_12", "nixpkgs-2311": "nixpkgs-2311_9", - "nixpkgs-unstable": "nixpkgs-unstable_20", - "old-ghc-nix": "old-ghc-nix_17", - "stackage": "stackage_16" + "nixpkgs-unstable": "nixpkgs-unstable_21", + "old-ghc-nix": "old-ghc-nix_18", + "stackage": "stackage_17" }, "locked": { "lastModified": 1703638209, @@ -11217,13 +11726,13 @@ }, "haskell-nix_12": { "inputs": { - "HTTP": "HTTP_18", - "cabal-32": "cabal-32_18", - "cabal-34": "cabal-34_18", - "cabal-36": "cabal-36_18", - "cardano-shell": "cardano-shell_18", - "flake-compat": "flake-compat_38", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", + "HTTP": "HTTP_19", + "cabal-32": "cabal-32_19", + "cabal-34": "cabal-34_19", + "cabal-36": "cabal-36_19", + "cardano-shell": "cardano-shell_19", + "flake-compat": "flake-compat_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", "ghc98X": "ghc98X_6", "ghc99": "ghc99_6", "hackage": [ @@ -11237,14 +11746,14 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_14", + "hls-1.10": "hls-1.10_15", "hls-2.0": "hls-2.0_13", "hls-2.2": "hls-2.2_12", "hls-2.3": "hls-2.3_12", "hls-2.4": "hls-2.4_12", - "hpc-coveralls": "hpc-coveralls_18", - "hydra": "hydra_20", - "iserv-proxy": "iserv-proxy_14", + "hpc-coveralls": "hpc-coveralls_19", + "hydra": "hydra_21", + "iserv-proxy": "iserv-proxy_15", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11257,16 +11766,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_18", - "nixpkgs-2105": "nixpkgs-2105_18", - "nixpkgs-2111": "nixpkgs-2111_18", - "nixpkgs-2205": "nixpkgs-2205_15", - "nixpkgs-2211": "nixpkgs-2211_14", + "nixpkgs-2003": "nixpkgs-2003_19", + "nixpkgs-2105": "nixpkgs-2105_19", + "nixpkgs-2111": "nixpkgs-2111_19", + "nixpkgs-2205": "nixpkgs-2205_16", + "nixpkgs-2211": "nixpkgs-2211_15", "nixpkgs-2305": "nixpkgs-2305_13", "nixpkgs-2311": "nixpkgs-2311_10", - "nixpkgs-unstable": "nixpkgs-unstable_21", - "old-ghc-nix": "old-ghc-nix_18", - "stackage": "stackage_17" + "nixpkgs-unstable": "nixpkgs-unstable_22", + "old-ghc-nix": "old-ghc-nix_19", + "stackage": "stackage_18" }, "locked": { "lastModified": 1703638209, @@ -11284,13 +11793,13 @@ }, "haskell-nix_13": { "inputs": { - "HTTP": "HTTP_19", - "cabal-32": "cabal-32_19", - "cabal-34": "cabal-34_19", - "cabal-36": "cabal-36_19", - "cardano-shell": "cardano-shell_19", - "flake-compat": "flake-compat_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", + "HTTP": "HTTP_20", + "cabal-32": "cabal-32_20", + "cabal-34": "cabal-34_20", + "cabal-36": "cabal-36_20", + "cardano-shell": "cardano-shell_20", + "flake-compat": "flake-compat_45", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", "ghc910X": "ghc910X_7", "ghc911": "ghc911_7", "hackage": [ @@ -11300,7 +11809,7 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_15", + "hls-1.10": "hls-1.10_16", "hls-2.0": "hls-2.0_14", "hls-2.2": "hls-2.2_13", "hls-2.3": "hls-2.3_13", @@ -11308,9 +11817,9 @@ "hls-2.5": "hls-2.5_7", "hls-2.6": "hls-2.6_7", "hls-2.7": "hls-2.7_6", - "hpc-coveralls": "hpc-coveralls_19", - "hydra": "hydra_21", - "iserv-proxy": "iserv-proxy_15", + "hpc-coveralls": "hpc-coveralls_20", + "hydra": "hydra_22", + "iserv-proxy": "iserv-proxy_16", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11319,16 +11828,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_19", - "nixpkgs-2105": "nixpkgs-2105_19", - "nixpkgs-2111": "nixpkgs-2111_19", - "nixpkgs-2205": "nixpkgs-2205_16", - "nixpkgs-2211": "nixpkgs-2211_15", + "nixpkgs-2003": "nixpkgs-2003_20", + "nixpkgs-2105": "nixpkgs-2105_20", + "nixpkgs-2111": "nixpkgs-2111_20", + "nixpkgs-2205": "nixpkgs-2205_17", + "nixpkgs-2211": "nixpkgs-2211_16", "nixpkgs-2305": "nixpkgs-2305_14", "nixpkgs-2311": "nixpkgs-2311_11", - "nixpkgs-unstable": "nixpkgs-unstable_22", - "old-ghc-nix": "old-ghc-nix_19", - "stackage": "stackage_18" + "nixpkgs-unstable": "nixpkgs-unstable_23", + "old-ghc-nix": "old-ghc-nix_20", + "stackage": "stackage_19" }, "locked": { "lastModified": 1714611016, @@ -11346,13 +11855,13 @@ }, "haskell-nix_14": { "inputs": { - "HTTP": "HTTP_20", - "cabal-32": "cabal-32_20", - "cabal-34": "cabal-34_20", - "cabal-36": "cabal-36_20", - "cardano-shell": "cardano-shell_20", - "flake-compat": "flake-compat_43", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", + "HTTP": "HTTP_21", + "cabal-32": "cabal-32_21", + "cabal-34": "cabal-34_21", + "cabal-36": "cabal-36_21", + "cardano-shell": "cardano-shell_21", + "flake-compat": "flake-compat_46", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", "ghc910X": "ghc910X_8", "ghc911": "ghc911_8", "hackage": [ @@ -11364,7 +11873,7 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_16", + "hls-1.10": "hls-1.10_17", "hls-2.0": "hls-2.0_15", "hls-2.2": "hls-2.2_14", "hls-2.3": "hls-2.3_14", @@ -11372,9 +11881,9 @@ "hls-2.5": "hls-2.5_8", "hls-2.6": "hls-2.6_8", "hls-2.7": "hls-2.7_7", - "hpc-coveralls": "hpc-coveralls_20", - "hydra": "hydra_22", - "iserv-proxy": "iserv-proxy_16", + "hpc-coveralls": "hpc-coveralls_21", + "hydra": "hydra_23", + "iserv-proxy": "iserv-proxy_17", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11385,16 +11894,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_20", - "nixpkgs-2105": "nixpkgs-2105_20", - "nixpkgs-2111": "nixpkgs-2111_20", - "nixpkgs-2205": "nixpkgs-2205_17", - "nixpkgs-2211": "nixpkgs-2211_16", + "nixpkgs-2003": "nixpkgs-2003_21", + "nixpkgs-2105": "nixpkgs-2105_21", + "nixpkgs-2111": "nixpkgs-2111_21", + "nixpkgs-2205": "nixpkgs-2205_18", + "nixpkgs-2211": "nixpkgs-2211_17", "nixpkgs-2305": "nixpkgs-2305_15", "nixpkgs-2311": "nixpkgs-2311_12", - "nixpkgs-unstable": "nixpkgs-unstable_23", - "old-ghc-nix": "old-ghc-nix_20", - "stackage": "stackage_19" + "nixpkgs-unstable": "nixpkgs-unstable_24", + "old-ghc-nix": "old-ghc-nix_21", + "stackage": "stackage_20" }, "locked": { "lastModified": 1713833402, @@ -11412,13 +11921,13 @@ }, "haskell-nix_15": { "inputs": { - "HTTP": "HTTP_21", - "cabal-32": "cabal-32_21", - "cabal-34": "cabal-34_21", - "cabal-36": "cabal-36_21", - "cardano-shell": "cardano-shell_21", - "flake-compat": "flake-compat_44", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", + "HTTP": "HTTP_22", + "cabal-32": "cabal-32_22", + "cabal-34": "cabal-34_22", + "cabal-36": "cabal-36_22", + "cardano-shell": "cardano-shell_22", + "flake-compat": "flake-compat_47", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", "ghc98X": "ghc98X_7", "ghc99": "ghc99_7", "hackage": [ @@ -11432,14 +11941,14 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_17", + "hls-1.10": "hls-1.10_18", "hls-2.0": "hls-2.0_16", "hls-2.2": "hls-2.2_15", "hls-2.3": "hls-2.3_15", "hls-2.4": "hls-2.4_15", - "hpc-coveralls": "hpc-coveralls_21", - "hydra": "hydra_23", - "iserv-proxy": "iserv-proxy_17", + "hpc-coveralls": "hpc-coveralls_22", + "hydra": "hydra_24", + "iserv-proxy": "iserv-proxy_18", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11452,16 +11961,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_21", - "nixpkgs-2105": "nixpkgs-2105_21", - "nixpkgs-2111": "nixpkgs-2111_21", - "nixpkgs-2205": "nixpkgs-2205_18", - "nixpkgs-2211": "nixpkgs-2211_17", + "nixpkgs-2003": "nixpkgs-2003_22", + "nixpkgs-2105": "nixpkgs-2105_22", + "nixpkgs-2111": "nixpkgs-2111_22", + "nixpkgs-2205": "nixpkgs-2205_19", + "nixpkgs-2211": "nixpkgs-2211_18", "nixpkgs-2305": "nixpkgs-2305_16", "nixpkgs-2311": "nixpkgs-2311_13", - "nixpkgs-unstable": "nixpkgs-unstable_24", - "old-ghc-nix": "old-ghc-nix_21", - "stackage": "stackage_20" + "nixpkgs-unstable": "nixpkgs-unstable_25", + "old-ghc-nix": "old-ghc-nix_22", + "stackage": "stackage_21" }, "locked": { "lastModified": 1703638209, @@ -11479,13 +11988,13 @@ }, "haskell-nix_16": { "inputs": { - "HTTP": "HTTP_22", - "cabal-32": "cabal-32_22", - "cabal-34": "cabal-34_22", - "cabal-36": "cabal-36_22", - "cardano-shell": "cardano-shell_22", - "flake-compat": "flake-compat_46", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", + "HTTP": "HTTP_23", + "cabal-32": "cabal-32_23", + "cabal-34": "cabal-34_23", + "cabal-36": "cabal-36_23", + "cardano-shell": "cardano-shell_23", + "flake-compat": "flake-compat_49", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", "ghc98X": "ghc98X_8", "ghc99": "ghc99_8", "hackage": [ @@ -11499,14 +12008,14 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_18", + "hls-1.10": "hls-1.10_19", "hls-2.0": "hls-2.0_17", "hls-2.2": "hls-2.2_16", "hls-2.3": "hls-2.3_16", "hls-2.4": "hls-2.4_16", - "hpc-coveralls": "hpc-coveralls_22", - "hydra": "hydra_24", - "iserv-proxy": "iserv-proxy_18", + "hpc-coveralls": "hpc-coveralls_23", + "hydra": "hydra_25", + "iserv-proxy": "iserv-proxy_19", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11519,16 +12028,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_22", - "nixpkgs-2105": "nixpkgs-2105_22", - "nixpkgs-2111": "nixpkgs-2111_22", - "nixpkgs-2205": "nixpkgs-2205_19", - "nixpkgs-2211": "nixpkgs-2211_18", + "nixpkgs-2003": "nixpkgs-2003_23", + "nixpkgs-2105": "nixpkgs-2105_23", + "nixpkgs-2111": "nixpkgs-2111_23", + "nixpkgs-2205": "nixpkgs-2205_20", + "nixpkgs-2211": "nixpkgs-2211_19", "nixpkgs-2305": "nixpkgs-2305_17", "nixpkgs-2311": "nixpkgs-2311_14", - "nixpkgs-unstable": "nixpkgs-unstable_25", - "old-ghc-nix": "old-ghc-nix_22", - "stackage": "stackage_21" + "nixpkgs-unstable": "nixpkgs-unstable_26", + "old-ghc-nix": "old-ghc-nix_23", + "stackage": "stackage_22" }, "locked": { "lastModified": 1703638209, @@ -11546,13 +12055,13 @@ }, "haskell-nix_17": { "inputs": { - "HTTP": "HTTP_23", - "cabal-32": "cabal-32_23", - "cabal-34": "cabal-34_23", - "cabal-36": "cabal-36_23", - "cardano-shell": "cardano-shell_23", - "flake-compat": "flake-compat_49", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", + "HTTP": "HTTP_24", + "cabal-32": "cabal-32_24", + "cabal-34": "cabal-34_24", + "cabal-36": "cabal-36_24", + "cardano-shell": "cardano-shell_24", + "flake-compat": "flake-compat_52", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", "ghc910X": "ghc910X_9", "ghc911": "ghc911_9", "hackage": [ @@ -11564,7 +12073,7 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_19", + "hls-1.10": "hls-1.10_20", "hls-2.0": "hls-2.0_18", "hls-2.2": "hls-2.2_17", "hls-2.3": "hls-2.3_17", @@ -11572,9 +12081,9 @@ "hls-2.5": "hls-2.5_9", "hls-2.6": "hls-2.6_9", "hls-2.7": "hls-2.7_8", - "hpc-coveralls": "hpc-coveralls_23", - "hydra": "hydra_25", - "iserv-proxy": "iserv-proxy_19", + "hpc-coveralls": "hpc-coveralls_24", + "hydra": "hydra_26", + "iserv-proxy": "iserv-proxy_20", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11585,16 +12094,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_23", - "nixpkgs-2105": "nixpkgs-2105_23", - "nixpkgs-2111": "nixpkgs-2111_23", - "nixpkgs-2205": "nixpkgs-2205_20", - "nixpkgs-2211": "nixpkgs-2211_19", + "nixpkgs-2003": "nixpkgs-2003_24", + "nixpkgs-2105": "nixpkgs-2105_24", + "nixpkgs-2111": "nixpkgs-2111_24", + "nixpkgs-2205": "nixpkgs-2205_21", + "nixpkgs-2211": "nixpkgs-2211_20", "nixpkgs-2305": "nixpkgs-2305_18", "nixpkgs-2311": "nixpkgs-2311_15", - "nixpkgs-unstable": "nixpkgs-unstable_26", - "old-ghc-nix": "old-ghc-nix_23", - "stackage": "stackage_22" + "nixpkgs-unstable": "nixpkgs-unstable_27", + "old-ghc-nix": "old-ghc-nix_24", + "stackage": "stackage_23" }, "locked": { "lastModified": 1713833402, @@ -11612,13 +12121,13 @@ }, "haskell-nix_18": { "inputs": { - "HTTP": "HTTP_24", - "cabal-32": "cabal-32_24", - "cabal-34": "cabal-34_24", - "cabal-36": "cabal-36_24", - "cardano-shell": "cardano-shell_24", - "flake-compat": "flake-compat_50", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", + "HTTP": "HTTP_25", + "cabal-32": "cabal-32_25", + "cabal-34": "cabal-34_25", + "cabal-36": "cabal-36_25", + "cardano-shell": "cardano-shell_25", + "flake-compat": "flake-compat_53", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", "ghc98X": "ghc98X_9", "ghc99": "ghc99_9", "hackage": [ @@ -11632,14 +12141,14 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_20", + "hls-1.10": "hls-1.10_21", "hls-2.0": "hls-2.0_19", "hls-2.2": "hls-2.2_18", "hls-2.3": "hls-2.3_18", "hls-2.4": "hls-2.4_18", - "hpc-coveralls": "hpc-coveralls_24", - "hydra": "hydra_26", - "iserv-proxy": "iserv-proxy_20", + "hpc-coveralls": "hpc-coveralls_25", + "hydra": "hydra_27", + "iserv-proxy": "iserv-proxy_21", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11652,16 +12161,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_24", - "nixpkgs-2105": "nixpkgs-2105_24", - "nixpkgs-2111": "nixpkgs-2111_24", - "nixpkgs-2205": "nixpkgs-2205_21", - "nixpkgs-2211": "nixpkgs-2211_20", + "nixpkgs-2003": "nixpkgs-2003_25", + "nixpkgs-2105": "nixpkgs-2105_25", + "nixpkgs-2111": "nixpkgs-2111_25", + "nixpkgs-2205": "nixpkgs-2205_22", + "nixpkgs-2211": "nixpkgs-2211_21", "nixpkgs-2305": "nixpkgs-2305_19", "nixpkgs-2311": "nixpkgs-2311_16", - "nixpkgs-unstable": "nixpkgs-unstable_27", - "old-ghc-nix": "old-ghc-nix_24", - "stackage": "stackage_23" + "nixpkgs-unstable": "nixpkgs-unstable_28", + "old-ghc-nix": "old-ghc-nix_25", + "stackage": "stackage_24" }, "locked": { "lastModified": 1703638209, @@ -11679,13 +12188,13 @@ }, "haskell-nix_19": { "inputs": { - "HTTP": "HTTP_25", - "cabal-32": "cabal-32_25", - "cabal-34": "cabal-34_25", - "cabal-36": "cabal-36_25", - "cardano-shell": "cardano-shell_25", - "flake-compat": "flake-compat_52", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", + "HTTP": "HTTP_26", + "cabal-32": "cabal-32_26", + "cabal-34": "cabal-34_26", + "cabal-36": "cabal-36_26", + "cardano-shell": "cardano-shell_26", + "flake-compat": "flake-compat_55", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_26", "ghc98X": "ghc98X_10", "ghc99": "ghc99_10", "hackage": [ @@ -11699,14 +12208,14 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_21", + "hls-1.10": "hls-1.10_22", "hls-2.0": "hls-2.0_20", "hls-2.2": "hls-2.2_19", "hls-2.3": "hls-2.3_19", "hls-2.4": "hls-2.4_19", - "hpc-coveralls": "hpc-coveralls_25", - "hydra": "hydra_27", - "iserv-proxy": "iserv-proxy_21", + "hpc-coveralls": "hpc-coveralls_26", + "hydra": "hydra_28", + "iserv-proxy": "iserv-proxy_22", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11719,16 +12228,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_25", - "nixpkgs-2105": "nixpkgs-2105_25", - "nixpkgs-2111": "nixpkgs-2111_25", - "nixpkgs-2205": "nixpkgs-2205_22", - "nixpkgs-2211": "nixpkgs-2211_21", + "nixpkgs-2003": "nixpkgs-2003_26", + "nixpkgs-2105": "nixpkgs-2105_26", + "nixpkgs-2111": "nixpkgs-2111_26", + "nixpkgs-2205": "nixpkgs-2205_23", + "nixpkgs-2211": "nixpkgs-2211_22", "nixpkgs-2305": "nixpkgs-2305_20", "nixpkgs-2311": "nixpkgs-2311_17", - "nixpkgs-unstable": "nixpkgs-unstable_28", - "old-ghc-nix": "old-ghc-nix_25", - "stackage": "stackage_24" + "nixpkgs-unstable": "nixpkgs-unstable_29", + "old-ghc-nix": "old-ghc-nix_26", + "stackage": "stackage_25" }, "locked": { "lastModified": 1703638209, @@ -11746,15 +12255,15 @@ }, "haskell-nix_2": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_37", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_6", + "hpc-coveralls": "hpc-coveralls_7", "nix-tools": "nix-tools", "nixpkgs": [ "db-sync", @@ -11764,9 +12273,9 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", "nixpkgs-unstable": [ "db-sync", "cardano-world", @@ -11774,8 +12283,8 @@ "cicero", "nixpkgs" ], - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_5" + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" }, "locked": { "lastModified": 1646097976, @@ -11793,20 +12302,20 @@ }, "haskell-nix_3": { "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_43", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_48", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", "hackage": [ "db-sync", "cardano-world", "hackage" ], - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", "nix-tools": "nix-tools_3", "nixpkgs": [ "db-sync", @@ -11814,13 +12323,13 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_7" + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" }, "locked": { "lastModified": 1659439444, @@ -11838,19 +12347,19 @@ }, "haskell-nix_4": { "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-compat": "flake-compat_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_11", + "flake-compat": "flake-compat_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", "ghc910X": "ghc910X_2", "ghc911": "ghc911_2", "hackage": [ "hackage-nix" ], - "hls-1.10": "hls-1.10_6", + "hls-1.10": "hls-1.10_7", "hls-2.0": "hls-2.0_5", "hls-2.2": "hls-2.2_4", "hls-2.3": "hls-2.3_4", @@ -11859,22 +12368,22 @@ "hls-2.6": "hls-2.6_2", "hls-2.7": "hls-2.7", "hls-2.8": "hls-2.8", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_12", - "iserv-proxy": "iserv-proxy_6", + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_13", + "iserv-proxy": "iserv-proxy_7", "nixpkgs": [ "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-2205": "nixpkgs-2205_7", - "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-2205": "nixpkgs-2205_8", + "nixpkgs-2211": "nixpkgs-2211_7", "nixpkgs-2305": "nixpkgs-2305_5", "nixpkgs-2311": "nixpkgs-2311_2", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_9" + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_10" }, "locked": { "lastModified": 1718844631, @@ -11892,13 +12401,13 @@ }, "haskell-nix_5": { "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "HTTP": "HTTP_12", + "cabal-32": "cabal-32_12", + "cabal-34": "cabal-34_12", + "cabal-36": "cabal-36_12", + "cardano-shell": "cardano-shell_12", + "flake-compat": "flake-compat_30", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", "ghc910X": "ghc910X_3", "ghc911": "ghc911_3", "hackage": [ @@ -11906,7 +12415,7 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_7", + "hls-1.10": "hls-1.10_8", "hls-2.0": "hls-2.0_6", "hls-2.2": "hls-2.2_5", "hls-2.3": "hls-2.3_5", @@ -11914,25 +12423,25 @@ "hls-2.5": "hls-2.5_3", "hls-2.6": "hls-2.6_3", "hls-2.7": "hls-2.7_2", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_13", - "iserv-proxy": "iserv-proxy_7", + "hpc-coveralls": "hpc-coveralls_12", + "hydra": "hydra_14", + "iserv-proxy": "iserv-proxy_8", "nixpkgs": [ "kupo-nixos", "iogx", "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_8", - "nixpkgs-2211": "nixpkgs-2211_7", + "nixpkgs-2003": "nixpkgs-2003_12", + "nixpkgs-2105": "nixpkgs-2105_12", + "nixpkgs-2111": "nixpkgs-2111_12", + "nixpkgs-2205": "nixpkgs-2205_9", + "nixpkgs-2211": "nixpkgs-2211_8", "nixpkgs-2305": "nixpkgs-2305_6", "nixpkgs-2311": "nixpkgs-2311_3", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_10" + "nixpkgs-unstable": "nixpkgs-unstable_15", + "old-ghc-nix": "old-ghc-nix_12", + "stackage": "stackage_11" }, "locked": { "lastModified": 1714956613, @@ -11950,13 +12459,13 @@ }, "haskell-nix_6": { "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_12", - "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_28", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "HTTP": "HTTP_13", + "cabal-32": "cabal-32_13", + "cabal-34": "cabal-34_13", + "cabal-36": "cabal-36_13", + "cardano-shell": "cardano-shell_13", + "flake-compat": "flake-compat_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", "ghc910X": "ghc910X_4", "ghc911": "ghc911_4", "hackage": [ @@ -11966,7 +12475,7 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_8", + "hls-1.10": "hls-1.10_9", "hls-2.0": "hls-2.0_7", "hls-2.2": "hls-2.2_6", "hls-2.3": "hls-2.3_6", @@ -11974,9 +12483,9 @@ "hls-2.5": "hls-2.5_4", "hls-2.6": "hls-2.6_4", "hls-2.7": "hls-2.7_3", - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_14", - "iserv-proxy": "iserv-proxy_8", + "hpc-coveralls": "hpc-coveralls_13", + "hydra": "hydra_15", + "iserv-proxy": "iserv-proxy_9", "nixpkgs": [ "kupo-nixos", "iogx", @@ -11985,16 +12494,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-2205": "nixpkgs-2205_9", - "nixpkgs-2211": "nixpkgs-2211_8", + "nixpkgs-2003": "nixpkgs-2003_13", + "nixpkgs-2105": "nixpkgs-2105_13", + "nixpkgs-2111": "nixpkgs-2111_13", + "nixpkgs-2205": "nixpkgs-2205_10", + "nixpkgs-2211": "nixpkgs-2211_9", "nixpkgs-2305": "nixpkgs-2305_7", "nixpkgs-2311": "nixpkgs-2311_4", - "nixpkgs-unstable": "nixpkgs-unstable_15", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_11" + "nixpkgs-unstable": "nixpkgs-unstable_16", + "old-ghc-nix": "old-ghc-nix_13", + "stackage": "stackage_12" }, "locked": { "lastModified": 1714611016, @@ -12012,13 +12521,13 @@ }, "haskell-nix_7": { "inputs": { - "HTTP": "HTTP_13", - "cabal-32": "cabal-32_13", - "cabal-34": "cabal-34_13", - "cabal-36": "cabal-36_13", - "cardano-shell": "cardano-shell_13", - "flake-compat": "flake-compat_29", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", + "HTTP": "HTTP_14", + "cabal-32": "cabal-32_14", + "cabal-34": "cabal-34_14", + "cabal-36": "cabal-36_14", + "cardano-shell": "cardano-shell_14", + "flake-compat": "flake-compat_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", "ghc910X": "ghc910X_5", "ghc911": "ghc911_5", "hackage": [ @@ -12030,7 +12539,7 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_9", + "hls-1.10": "hls-1.10_10", "hls-2.0": "hls-2.0_8", "hls-2.2": "hls-2.2_7", "hls-2.3": "hls-2.3_7", @@ -12038,9 +12547,9 @@ "hls-2.5": "hls-2.5_5", "hls-2.6": "hls-2.6_5", "hls-2.7": "hls-2.7_4", - "hpc-coveralls": "hpc-coveralls_13", - "hydra": "hydra_15", - "iserv-proxy": "iserv-proxy_9", + "hpc-coveralls": "hpc-coveralls_14", + "hydra": "hydra_16", + "iserv-proxy": "iserv-proxy_10", "nixpkgs": [ "kupo-nixos", "iogx", @@ -12051,16 +12560,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_13", - "nixpkgs-2105": "nixpkgs-2105_13", - "nixpkgs-2111": "nixpkgs-2111_13", - "nixpkgs-2205": "nixpkgs-2205_10", - "nixpkgs-2211": "nixpkgs-2211_9", + "nixpkgs-2003": "nixpkgs-2003_14", + "nixpkgs-2105": "nixpkgs-2105_14", + "nixpkgs-2111": "nixpkgs-2111_14", + "nixpkgs-2205": "nixpkgs-2205_11", + "nixpkgs-2211": "nixpkgs-2211_10", "nixpkgs-2305": "nixpkgs-2305_8", "nixpkgs-2311": "nixpkgs-2311_5", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_13", - "stackage": "stackage_12" + "nixpkgs-unstable": "nixpkgs-unstable_17", + "old-ghc-nix": "old-ghc-nix_14", + "stackage": "stackage_13" }, "locked": { "lastModified": 1713833402, @@ -12078,13 +12587,13 @@ }, "haskell-nix_8": { "inputs": { - "HTTP": "HTTP_14", - "cabal-32": "cabal-32_14", - "cabal-34": "cabal-34_14", - "cabal-36": "cabal-36_14", - "cardano-shell": "cardano-shell_14", - "flake-compat": "flake-compat_30", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", + "HTTP": "HTTP_15", + "cabal-32": "cabal-32_15", + "cabal-34": "cabal-34_15", + "cabal-36": "cabal-36_15", + "cardano-shell": "cardano-shell_15", + "flake-compat": "flake-compat_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", "ghc98X": "ghc98X_3", "ghc99": "ghc99_3", "hackage": [ @@ -12098,14 +12607,14 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_10", + "hls-1.10": "hls-1.10_11", "hls-2.0": "hls-2.0_9", "hls-2.2": "hls-2.2_8", "hls-2.3": "hls-2.3_8", "hls-2.4": "hls-2.4_8", - "hpc-coveralls": "hpc-coveralls_14", - "hydra": "hydra_16", - "iserv-proxy": "iserv-proxy_10", + "hpc-coveralls": "hpc-coveralls_15", + "hydra": "hydra_17", + "iserv-proxy": "iserv-proxy_11", "nixpkgs": [ "kupo-nixos", "iogx", @@ -12118,16 +12627,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_14", - "nixpkgs-2105": "nixpkgs-2105_14", - "nixpkgs-2111": "nixpkgs-2111_14", - "nixpkgs-2205": "nixpkgs-2205_11", - "nixpkgs-2211": "nixpkgs-2211_10", + "nixpkgs-2003": "nixpkgs-2003_15", + "nixpkgs-2105": "nixpkgs-2105_15", + "nixpkgs-2111": "nixpkgs-2111_15", + "nixpkgs-2205": "nixpkgs-2205_12", + "nixpkgs-2211": "nixpkgs-2211_11", "nixpkgs-2305": "nixpkgs-2305_9", "nixpkgs-2311": "nixpkgs-2311_6", - "nixpkgs-unstable": "nixpkgs-unstable_17", - "old-ghc-nix": "old-ghc-nix_14", - "stackage": "stackage_13" + "nixpkgs-unstable": "nixpkgs-unstable_18", + "old-ghc-nix": "old-ghc-nix_15", + "stackage": "stackage_14" }, "locked": { "lastModified": 1703638209, @@ -12145,13 +12654,13 @@ }, "haskell-nix_9": { "inputs": { - "HTTP": "HTTP_15", - "cabal-32": "cabal-32_15", - "cabal-34": "cabal-34_15", - "cabal-36": "cabal-36_15", - "cardano-shell": "cardano-shell_15", - "flake-compat": "flake-compat_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cabal-36": "cabal-36_16", + "cardano-shell": "cardano-shell_16", + "flake-compat": "flake-compat_35", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", "ghc98X": "ghc98X_4", "ghc99": "ghc99_4", "hackage": [ @@ -12165,14 +12674,14 @@ "iogx", "hackage" ], - "hls-1.10": "hls-1.10_11", + "hls-1.10": "hls-1.10_12", "hls-2.0": "hls-2.0_10", "hls-2.2": "hls-2.2_9", "hls-2.3": "hls-2.3_9", "hls-2.4": "hls-2.4_9", - "hpc-coveralls": "hpc-coveralls_15", - "hydra": "hydra_17", - "iserv-proxy": "iserv-proxy_11", + "hpc-coveralls": "hpc-coveralls_16", + "hydra": "hydra_18", + "iserv-proxy": "iserv-proxy_12", "nixpkgs": [ "kupo-nixos", "iogx", @@ -12185,16 +12694,16 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_15", - "nixpkgs-2105": "nixpkgs-2105_15", - "nixpkgs-2111": "nixpkgs-2111_15", - "nixpkgs-2205": "nixpkgs-2205_12", - "nixpkgs-2211": "nixpkgs-2211_11", + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-2205": "nixpkgs-2205_13", + "nixpkgs-2211": "nixpkgs-2211_12", "nixpkgs-2305": "nixpkgs-2305_10", "nixpkgs-2311": "nixpkgs-2311_7", - "nixpkgs-unstable": "nixpkgs-unstable_18", - "old-ghc-nix": "old-ghc-nix_15", - "stackage": "stackage_14" + "nixpkgs-unstable": "nixpkgs-unstable_19", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_15" }, "locked": { "lastModified": 1703638209, @@ -12420,16 +12929,61 @@ }, "haskellNix_5": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-compat": "flake-compat_19", + "flake-utils": "flake-utils_23", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": [ + "cardano-node-plutip", + "hackageNix" + ], + "hls-1.10": "hls-1.10_6", + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_6", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "cardano-node-plutip", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" + }, + "locked": { + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_47", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", "nix-tools": "nix-tools_2", "nixpkgs": [ "db-sync", @@ -12437,12 +12991,12 @@ "cardano-wallet", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_6" + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" }, "locked": { "lastModified": 1655369909, @@ -12458,30 +13012,30 @@ "type": "github" } }, - "haskellNix_6": { + "haskellNix_7": { "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_48", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-utils": "flake-utils_53", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_9", - "hydra": "hydra_11", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", "nix-tools": "nix-tools_4", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_8" + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" }, "locked": { "lastModified": 1650936156, @@ -12564,7 +13118,7 @@ "hercules-ci-effects_2": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_100" + "nixpkgs": "nixpkgs_107" }, "locked": { "lastModified": 1718018037, @@ -12818,6 +13372,23 @@ "type": "github" } }, + "hls-1.10_22": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-1.10_3": { "flake": false, "locked": { @@ -14993,6 +15564,22 @@ "type": "github" } }, + "hpc-coveralls_26": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, "hpc-coveralls_3": { "flake": false, "locked": { @@ -15137,7 +15724,8 @@ "nixpkgs": [ "db-sync", "cardano-world", - "haskell-nix", + "cardano-wallet", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -15161,7 +15749,8 @@ "nix": "nix_19", "nixpkgs": [ "db-sync", - "haskellNix", + "cardano-world", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -15184,18 +15773,19 @@ "inputs": { "nix": "nix_20", "nixpkgs": [ - "haskell-nix", + "db-sync", + "haskellNix", "hydra", "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", "owner": "NixOS", "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { @@ -15207,8 +15797,6 @@ "inputs": { "nix": "nix_21", "nixpkgs": [ - "kupo-nixos", - "iogx", "haskell-nix", "hydra", "nix", @@ -15234,8 +15822,6 @@ "nixpkgs": [ "kupo-nixos", "iogx", - "iogx-template-haskell", - "iogx", "haskell-nix", "hydra", "nix", @@ -15263,8 +15849,6 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", - "iogx", "haskell-nix", "hydra", "nix", @@ -15294,8 +15878,6 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", - "iogx", "haskell-nix", "hydra", "nix", @@ -15325,7 +15907,7 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-vanilla", + "iogx-template-haskell", "iogx", "haskell-nix", "hydra", @@ -15354,6 +15936,8 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "iogx-template-vanilla", "iogx", "haskell-nix", @@ -15385,8 +15969,6 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", - "iogx", "haskell-nix", "hydra", "nix", @@ -15441,7 +16023,7 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-vanilla", + "iogx-template-haskell", "iogx", "haskell-nix", "hydra", @@ -15468,6 +16050,10 @@ "nixpkgs": [ "kupo-nixos", "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", "iogx-template-vanilla", "iogx", "haskell-nix", @@ -15497,8 +16083,6 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", - "iogx", "haskell-nix", "hydra", "nix", @@ -15528,8 +16112,6 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", - "iogx", "haskell-nix", "hydra", "nix", @@ -15559,7 +16141,7 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-vanilla", + "iogx-template-haskell", "iogx", "haskell-nix", "hydra", @@ -15588,6 +16170,8 @@ "iogx", "iogx-template-vanilla", "iogx", + "iogx-template-haskell", + "iogx", "iogx-template-vanilla", "iogx", "haskell-nix", @@ -15619,8 +16203,6 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", - "iogx", "haskell-nix", "hydra", "nix", @@ -15643,6 +16225,37 @@ "hydra_27": { "inputs": { "nix": "nix_35", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_28": { + "inputs": { + "nix": "nix_36", "nixpkgs": [ "kupo-nixos", "iogx", @@ -15746,6 +16359,30 @@ } }, "hydra_6": { + "inputs": { + "nix": "nix_7", + "nixpkgs": [ + "cardano-node-plutip", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_7": { "inputs": { "nix": [ "db-sync", @@ -15779,7 +16416,7 @@ "type": "github" } }, - "hydra_7": { + "hydra_8": { "inputs": { "nix": [ "db-sync", @@ -15809,7 +16446,7 @@ "type": "github" } }, - "hydra_8": { + "hydra_9": { "inputs": { "nix": [ "db-sync", @@ -15841,32 +16478,6 @@ "type": "github" } }, - "hydra_9": { - "inputs": { - "nix": "nix_17", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, "incl": { "inputs": { "nixlib": [ @@ -15987,6 +16598,29 @@ "type": "github" } }, + "incl_6": { + "inputs": { + "nixlib": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, "inclusive": { "inputs": { "stdlib": "stdlib" @@ -16224,10 +16858,10 @@ }, "iogo": { "inputs": { - "devshell": "devshell_9", + "devshell": "devshell_10", "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_52", - "utils": "utils_13" + "nixpkgs": "nixpkgs_59", + "utils": "utils_15" }, "locked": { "lastModified": 1652212694, @@ -16245,10 +16879,10 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_19", + "devshell": "devshell_20", "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_81", - "utils": "utils_27" + "nixpkgs": "nixpkgs_88", + "utils": "utils_29" }, "locked": { "lastModified": 1658302707, @@ -16271,13 +16905,13 @@ "CHaP" ], "easy-purescript-nix": "easy-purescript-nix_2", - "flake-utils": "flake-utils_50", + "flake-utils": "flake-utils_55", "hackage": "hackage_6", "haskell-nix": "haskell-nix_5", "iogx-template-haskell": "iogx-template-haskell", "iogx-template-vanilla": "iogx-template-vanilla_4", "iohk-nix": "iohk-nix_18", - "nix2container": "nix2container_22", + "nix2container": "nix2container_24", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16584,15 +17218,15 @@ }, "iogx_10": { "inputs": { - "CHaP": "CHaP_14", + "CHaP": "CHaP_15", "easy-purescript-nix": "easy-purescript-nix_11", - "flake-utils": "flake-utils_82", + "flake-utils": "flake-utils_87", "hackage": "hackage_15", "haskell-nix": "haskell-nix_14", "iogx-template-haskell": "iogx-template-haskell_6", "iogx-template-vanilla": "iogx-template-vanilla_5", "iohk-nix": "iohk-nix_13", - "nix2container": "nix2container_17", + "nix2container": "nix2container_19", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16623,13 +17257,13 @@ }, "iogx_11": { "inputs": { - "CHaP": "CHaP_15", + "CHaP": "CHaP_16", "easy-purescript-nix": "easy-purescript-nix_12", - "flake-utils": "flake-utils_84", + "flake-utils": "flake-utils_89", "hackage": "hackage_16", "haskell-nix": "haskell-nix_15", "iohk-nix": "iohk-nix_11", - "nix2container": "nix2container_15", + "nix2container": "nix2container_17", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16662,13 +17296,13 @@ }, "iogx_12": { "inputs": { - "CHaP": "CHaP_16", + "CHaP": "CHaP_17", "easy-purescript-nix": "easy-purescript-nix_13", - "flake-utils": "flake-utils_88", + "flake-utils": "flake-utils_93", "hackage": "hackage_17", "haskell-nix": "haskell-nix_16", "iohk-nix": "iohk-nix_12", - "nix2container": "nix2container_16", + "nix2container": "nix2container_18", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16701,15 +17335,15 @@ }, "iogx_13": { "inputs": { - "CHaP": "CHaP_17", + "CHaP": "CHaP_18", "easy-purescript-nix": "easy-purescript-nix_14", - "flake-utils": "flake-utils_94", + "flake-utils": "flake-utils_99", "hackage": "hackage_18", "haskell-nix": "haskell-nix_17", "iogx-template-haskell": "iogx-template-haskell_7", "iogx-template-vanilla": "iogx-template-vanilla_7", "iohk-nix": "iohk-nix_16", - "nix2container": "nix2container_20", + "nix2container": "nix2container_22", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16740,13 +17374,13 @@ }, "iogx_14": { "inputs": { - "CHaP": "CHaP_18", + "CHaP": "CHaP_19", "easy-purescript-nix": "easy-purescript-nix_15", - "flake-utils": "flake-utils_96", + "flake-utils": "flake-utils_101", "hackage": "hackage_19", "haskell-nix": "haskell-nix_18", "iohk-nix": "iohk-nix_14", - "nix2container": "nix2container_18", + "nix2container": "nix2container_20", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16779,13 +17413,13 @@ }, "iogx_15": { "inputs": { - "CHaP": "CHaP_19", + "CHaP": "CHaP_20", "easy-purescript-nix": "easy-purescript-nix_16", - "flake-utils": "flake-utils_100", + "flake-utils": "flake-utils_105", "hackage": "hackage_20", "haskell-nix": "haskell-nix_19", "iohk-nix": "iohk-nix_15", - "nix2container": "nix2container_19", + "nix2container": "nix2container_21", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16818,15 +17452,15 @@ }, "iogx_2": { "inputs": { - "CHaP": "CHaP_6", + "CHaP": "CHaP_7", "easy-purescript-nix": "easy-purescript-nix_3", - "flake-utils": "flake-utils_52", + "flake-utils": "flake-utils_57", "hackage": "hackage_7", "haskell-nix": "haskell-nix_6", "iogx-template-haskell": "iogx-template-haskell_2", "iogx-template-vanilla": "iogx-template-vanilla_2", "iohk-nix": "iohk-nix_10", - "nix2container": "nix2container_14", + "nix2container": "nix2container_16", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16855,15 +17489,15 @@ }, "iogx_3": { "inputs": { - "CHaP": "CHaP_7", + "CHaP": "CHaP_8", "easy-purescript-nix": "easy-purescript-nix_4", - "flake-utils": "flake-utils_54", + "flake-utils": "flake-utils_59", "hackage": "hackage_8", "haskell-nix": "haskell-nix_7", "iogx-template-haskell": "iogx-template-haskell_3", "iogx-template-vanilla": "iogx-template-vanilla", "iohk-nix": "iohk-nix_6", - "nix2container": "nix2container_10", + "nix2container": "nix2container_12", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16894,13 +17528,13 @@ }, "iogx_4": { "inputs": { - "CHaP": "CHaP_8", + "CHaP": "CHaP_9", "easy-purescript-nix": "easy-purescript-nix_5", - "flake-utils": "flake-utils_56", + "flake-utils": "flake-utils_61", "hackage": "hackage_9", "haskell-nix": "haskell-nix_8", "iohk-nix": "iohk-nix_4", - "nix2container": "nix2container_8", + "nix2container": "nix2container_10", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16933,13 +17567,13 @@ }, "iogx_5": { "inputs": { - "CHaP": "CHaP_9", + "CHaP": "CHaP_10", "easy-purescript-nix": "easy-purescript-nix_6", - "flake-utils": "flake-utils_60", + "flake-utils": "flake-utils_65", "hackage": "hackage_10", "haskell-nix": "haskell-nix_9", "iohk-nix": "iohk-nix_5", - "nix2container": "nix2container_9", + "nix2container": "nix2container_11", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16972,15 +17606,15 @@ }, "iogx_6": { "inputs": { - "CHaP": "CHaP_10", + "CHaP": "CHaP_11", "easy-purescript-nix": "easy-purescript-nix_7", - "flake-utils": "flake-utils_66", + "flake-utils": "flake-utils_71", "hackage": "hackage_11", "haskell-nix": "haskell-nix_10", "iogx-template-haskell": "iogx-template-haskell_4", "iogx-template-vanilla": "iogx-template-vanilla_3", "iohk-nix": "iohk-nix_9", - "nix2container": "nix2container_13", + "nix2container": "nix2container_15", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17011,13 +17645,13 @@ }, "iogx_7": { "inputs": { - "CHaP": "CHaP_11", + "CHaP": "CHaP_12", "easy-purescript-nix": "easy-purescript-nix_8", - "flake-utils": "flake-utils_68", + "flake-utils": "flake-utils_73", "hackage": "hackage_12", "haskell-nix": "haskell-nix_11", "iohk-nix": "iohk-nix_7", - "nix2container": "nix2container_11", + "nix2container": "nix2container_13", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17050,13 +17684,13 @@ }, "iogx_8": { "inputs": { - "CHaP": "CHaP_12", + "CHaP": "CHaP_13", "easy-purescript-nix": "easy-purescript-nix_9", - "flake-utils": "flake-utils_72", + "flake-utils": "flake-utils_77", "hackage": "hackage_13", "haskell-nix": "haskell-nix_12", "iohk-nix": "iohk-nix_8", - "nix2container": "nix2container_12", + "nix2container": "nix2container_14", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17089,15 +17723,15 @@ }, "iogx_9": { "inputs": { - "CHaP": "CHaP_13", + "CHaP": "CHaP_14", "easy-purescript-nix": "easy-purescript-nix_10", - "flake-utils": "flake-utils_80", + "flake-utils": "flake-utils_85", "hackage": "hackage_14", "haskell-nix": "haskell-nix_13", "iogx-template-haskell": "iogx-template-haskell_5", "iogx-template-vanilla": "iogx-template-vanilla_6", "iohk-nix": "iohk-nix_17", - "nix2container": "nix2container_21", + "nix2container": "nix2container_23", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17169,7 +17803,7 @@ }, "iohk-nix_10": { "inputs": { - "blst": "blst_14", + "blst": "blst_15", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17177,8 +17811,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_14", - "sodium": "sodium_14" + "secp256k1": "secp256k1_15", + "sodium": "sodium_15" }, "locked": { "lastModified": 1714467508, @@ -17196,7 +17830,7 @@ }, "iohk-nix_11": { "inputs": { - "blst": "blst_15", + "blst": "blst_16", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17208,8 +17842,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_15", - "sodium": "sodium_15" + "secp256k1": "secp256k1_16", + "sodium": "sodium_16" }, "locked": { "lastModified": 1702362799, @@ -17227,7 +17861,7 @@ }, "iohk-nix_12": { "inputs": { - "blst": "blst_16", + "blst": "blst_17", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17239,8 +17873,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_16", - "sodium": "sodium_16" + "secp256k1": "secp256k1_17", + "sodium": "sodium_17" }, "locked": { "lastModified": 1702362799, @@ -17258,7 +17892,7 @@ }, "iohk-nix_13": { "inputs": { - "blst": "blst_17", + "blst": "blst_18", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17268,8 +17902,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_17", - "sodium": "sodium_17" + "secp256k1": "secp256k1_18", + "sodium": "sodium_18" }, "locked": { "lastModified": 1713468256, @@ -17287,7 +17921,7 @@ }, "iohk-nix_14": { "inputs": { - "blst": "blst_18", + "blst": "blst_19", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17299,8 +17933,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_18", - "sodium": "sodium_18" + "secp256k1": "secp256k1_19", + "sodium": "sodium_19" }, "locked": { "lastModified": 1702362799, @@ -17318,7 +17952,7 @@ }, "iohk-nix_15": { "inputs": { - "blst": "blst_19", + "blst": "blst_20", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17330,8 +17964,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_19", - "sodium": "sodium_19" + "secp256k1": "secp256k1_20", + "sodium": "sodium_20" }, "locked": { "lastModified": 1702362799, @@ -17349,7 +17983,7 @@ }, "iohk-nix_16": { "inputs": { - "blst": "blst_20", + "blst": "blst_21", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17359,8 +17993,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_20", - "sodium": "sodium_20" + "secp256k1": "secp256k1_21", + "sodium": "sodium_21" }, "locked": { "lastModified": 1713468256, @@ -17378,7 +18012,7 @@ }, "iohk-nix_17": { "inputs": { - "blst": "blst_21", + "blst": "blst_22", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17386,8 +18020,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_21", - "sodium": "sodium_21" + "secp256k1": "secp256k1_22", + "sodium": "sodium_22" }, "locked": { "lastModified": 1714467508, @@ -17405,14 +18039,14 @@ }, "iohk-nix_18": { "inputs": { - "blst": "blst_22", + "blst": "blst_23", "nixpkgs": [ "kupo-nixos", "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_22", - "sodium": "sodium_22" + "secp256k1": "secp256k1_23", + "sodium": "sodium_23" }, "locked": { "lastModified": 1714467508, @@ -17452,12 +18086,12 @@ }, "iohk-nix_3": { "inputs": { - "blst": "blst_7", + "blst": "blst_8", "nixpkgs": [ "nixpkgs" ], - "secp256k1": "secp256k1_7", - "sodium": "sodium_7" + "secp256k1": "secp256k1_8", + "sodium": "sodium_8" }, "locked": { "lastModified": 1715898223, @@ -17475,7 +18109,7 @@ }, "iohk-nix_4": { "inputs": { - "blst": "blst_8", + "blst": "blst_9", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17487,8 +18121,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_8", - "sodium": "sodium_8" + "secp256k1": "secp256k1_9", + "sodium": "sodium_9" }, "locked": { "lastModified": 1702362799, @@ -17506,7 +18140,7 @@ }, "iohk-nix_5": { "inputs": { - "blst": "blst_9", + "blst": "blst_10", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17518,8 +18152,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_9", - "sodium": "sodium_9" + "secp256k1": "secp256k1_10", + "sodium": "sodium_10" }, "locked": { "lastModified": 1702362799, @@ -17537,7 +18171,7 @@ }, "iohk-nix_6": { "inputs": { - "blst": "blst_10", + "blst": "blst_11", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17547,8 +18181,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_10", - "sodium": "sodium_10" + "secp256k1": "secp256k1_11", + "sodium": "sodium_11" }, "locked": { "lastModified": 1713468256, @@ -17566,7 +18200,7 @@ }, "iohk-nix_7": { "inputs": { - "blst": "blst_11", + "blst": "blst_12", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17578,8 +18212,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_11", - "sodium": "sodium_11" + "secp256k1": "secp256k1_12", + "sodium": "sodium_12" }, "locked": { "lastModified": 1702362799, @@ -17597,7 +18231,7 @@ }, "iohk-nix_8": { "inputs": { - "blst": "blst_12", + "blst": "blst_13", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17609,8 +18243,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_12", - "sodium": "sodium_12" + "secp256k1": "secp256k1_13", + "sodium": "sodium_13" }, "locked": { "lastModified": 1702362799, @@ -17628,7 +18262,7 @@ }, "iohk-nix_9": { "inputs": { - "blst": "blst_13", + "blst": "blst_14", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17638,8 +18272,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_13", - "sodium": "sodium_13" + "secp256k1": "secp256k1_14", + "sodium": "sodium_14" }, "locked": { "lastModified": 1713468256, @@ -17755,6 +18389,30 @@ } }, "iohkNix_5": { + "inputs": { + "blst": "blst_7", + "nixpkgs": [ + "cardano-node-plutip", + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -17777,7 +18435,7 @@ "type": "github" } }, - "iohkNix_6": { + "iohkNix_7": { "inputs": { "nixpkgs": [ "db-sync", @@ -17816,6 +18474,23 @@ } }, "iserv-proxy_10": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_11": { "flake": false, "locked": { "lastModified": 1691634696, @@ -17832,7 +18507,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_11": { + "iserv-proxy_12": { "flake": false, "locked": { "lastModified": 1691634696, @@ -17849,7 +18524,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_12": { + "iserv-proxy_13": { "flake": false, "locked": { "lastModified": 1708894040, @@ -17866,7 +18541,7 @@ "type": "github" } }, - "iserv-proxy_13": { + "iserv-proxy_14": { "flake": false, "locked": { "lastModified": 1691634696, @@ -17883,7 +18558,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_14": { + "iserv-proxy_15": { "flake": false, "locked": { "lastModified": 1691634696, @@ -17900,7 +18575,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_15": { + "iserv-proxy_16": { "flake": false, "locked": { "lastModified": 1708894040, @@ -17917,7 +18592,7 @@ "type": "github" } }, - "iserv-proxy_16": { + "iserv-proxy_17": { "flake": false, "locked": { "lastModified": 1708894040, @@ -17934,7 +18609,7 @@ "type": "github" } }, - "iserv-proxy_17": { + "iserv-proxy_18": { "flake": false, "locked": { "lastModified": 1691634696, @@ -17951,7 +18626,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_18": { + "iserv-proxy_19": { "flake": false, "locked": { "lastModified": 1691634696, @@ -17968,23 +18643,6 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_19": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, "iserv-proxy_2": { "flake": false, "locked": { @@ -18003,6 +18661,23 @@ } }, "iserv-proxy_20": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_21": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18019,7 +18694,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_21": { + "iserv-proxy_22": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18090,28 +18765,28 @@ "iserv-proxy_6": { "flake": false, "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", - "type": "github" + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, "iserv-proxy_7": { "flake": false, "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", "owner": "stable-haskell", "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "rev": "2ed34002247213fc435d0062350b91bab920626e", "type": "github" }, "original": { @@ -18294,11 +18969,11 @@ "lowdown-src_15": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { @@ -18310,11 +18985,11 @@ "lowdown-src_16": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { @@ -18659,6 +19334,22 @@ "type": "github" } }, + "lowdown-src_36": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, "lowdown-src_4": { "flake": false, "locked": { @@ -18726,11 +19417,11 @@ "lowdown-src_8": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { @@ -18742,11 +19433,11 @@ "lowdown-src_9": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { @@ -18940,8 +19631,37 @@ }, "n2c_6": { "inputs": { - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_57" + "flake-utils": [ + "cardano-node-plutip", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_7": { + "inputs": { + "flake-utils": "flake-utils_32", + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1650568002, @@ -18957,10 +19677,10 @@ "type": "github" } }, - "n2c_7": { + "n2c_8": { "inputs": { - "flake-utils": "flake-utils_44", - "nixpkgs": "nixpkgs_92" + "flake-utils": "flake-utils_49", + "nixpkgs": "nixpkgs_99" }, "locked": { "lastModified": 1655533513, @@ -18999,7 +19719,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_16", + "devshell": "devshell_17", "inclusive": [ "db-sync", "cardano-world", @@ -19014,7 +19734,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_20" + "utils": "utils_22" }, "locked": { "lastModified": 1644317729, @@ -19165,6 +19885,41 @@ "type": "github" } }, + "nix-nomad_4": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": [ + "cardano-node-plutip", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_4", + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-node-plutip", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, "nix-tools": { "flake": false, "locked": { @@ -19250,15 +20005,15 @@ }, "nix2container_10": { "inputs": { - "flake-utils": "flake-utils_63", - "nixpkgs": "nixpkgs_110" + "flake-utils": "flake-utils_62", + "nixpkgs": "nixpkgs_112" }, "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", "owner": "nlewo", "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", "type": "github" }, "original": { @@ -19269,8 +20024,8 @@ }, "nix2container_11": { "inputs": { - "flake-utils": "flake-utils_69", - "nixpkgs": "nixpkgs_114" + "flake-utils": "flake-utils_66", + "nixpkgs": "nixpkgs_115" }, "locked": { "lastModified": 1703410130, @@ -19288,9 +20043,28 @@ }, "nix2container_12": { "inputs": { - "flake-utils": "flake-utils_73", + "flake-utils": "flake-utils_68", "nixpkgs": "nixpkgs_117" }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_13": { + "inputs": { + "flake-utils": "flake-utils_74", + "nixpkgs": "nixpkgs_121" + }, "locked": { "lastModified": 1703410130, "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", @@ -19305,10 +20079,29 @@ "type": "github" } }, - "nix2container_13": { + "nix2container_14": { "inputs": { - "flake-utils": "flake-utils_75", - "nixpkgs": "nixpkgs_119" + "flake-utils": "flake-utils_78", + "nixpkgs": "nixpkgs_124" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_15": { + "inputs": { + "flake-utils": "flake-utils_80", + "nixpkgs": "nixpkgs_126" }, "locked": { "lastModified": 1712990762, @@ -19324,10 +20117,10 @@ "type": "github" } }, - "nix2container_14": { + "nix2container_16": { "inputs": { - "flake-utils": "flake-utils_77", - "nixpkgs": "nixpkgs_121" + "flake-utils": "flake-utils_82", + "nixpkgs": "nixpkgs_128" }, "locked": { "lastModified": 1712990762, @@ -19343,10 +20136,10 @@ "type": "github" } }, - "nix2container_15": { + "nix2container_17": { "inputs": { - "flake-utils": "flake-utils_85", - "nixpkgs": "nixpkgs_126" + "flake-utils": "flake-utils_90", + "nixpkgs": "nixpkgs_133" }, "locked": { "lastModified": 1703410130, @@ -19362,10 +20155,10 @@ "type": "github" } }, - "nix2container_16": { + "nix2container_18": { "inputs": { - "flake-utils": "flake-utils_89", - "nixpkgs": "nixpkgs_129" + "flake-utils": "flake-utils_94", + "nixpkgs": "nixpkgs_136" }, "locked": { "lastModified": 1703410130, @@ -19381,10 +20174,10 @@ "type": "github" } }, - "nix2container_17": { + "nix2container_19": { "inputs": { - "flake-utils": "flake-utils_91", - "nixpkgs": "nixpkgs_131" + "flake-utils": "flake-utils_96", + "nixpkgs": "nixpkgs_138" }, "locked": { "lastModified": 1712990762, @@ -19400,17 +20193,17 @@ "type": "github" } }, - "nix2container_18": { + "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_97", - "nixpkgs": "nixpkgs_135" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_18" }, "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", "owner": "nlewo", "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { @@ -19419,10 +20212,10 @@ "type": "github" } }, - "nix2container_19": { + "nix2container_20": { "inputs": { - "flake-utils": "flake-utils_101", - "nixpkgs": "nixpkgs_138" + "flake-utils": "flake-utils_102", + "nixpkgs": "nixpkgs_142" }, "locked": { "lastModified": 1703410130, @@ -19438,17 +20231,17 @@ "type": "github" } }, - "nix2container_2": { + "nix2container_21": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_18" + "flake-utils": "flake-utils_106", + "nixpkgs": "nixpkgs_145" }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", "owner": "nlewo", "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", "type": "github" }, "original": { @@ -19457,10 +20250,10 @@ "type": "github" } }, - "nix2container_20": { + "nix2container_22": { "inputs": { - "flake-utils": "flake-utils_103", - "nixpkgs": "nixpkgs_140" + "flake-utils": "flake-utils_108", + "nixpkgs": "nixpkgs_147" }, "locked": { "lastModified": 1712990762, @@ -19476,10 +20269,10 @@ "type": "github" } }, - "nix2container_21": { + "nix2container_23": { "inputs": { - "flake-utils": "flake-utils_105", - "nixpkgs": "nixpkgs_142" + "flake-utils": "flake-utils_110", + "nixpkgs": "nixpkgs_149" }, "locked": { "lastModified": 1712990762, @@ -19495,10 +20288,10 @@ "type": "github" } }, - "nix2container_22": { + "nix2container_24": { "inputs": { - "flake-utils": "flake-utils_107", - "nixpkgs": "nixpkgs_144" + "flake-utils": "flake-utils_112", + "nixpkgs": "nixpkgs_151" }, "locked": { "lastModified": 1712990762, @@ -19592,35 +20385,34 @@ }, "nix2container_7": { "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": "nixpkgs_95" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_41" }, "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", "owner": "nlewo", "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { "owner": "nlewo", - "ref": "init-nix-db", "repo": "nix2container", "type": "github" } }, "nix2container_8": { "inputs": { - "flake-utils": "flake-utils_57", - "nixpkgs": "nixpkgs_105" + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_43" }, "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", "owner": "nlewo", "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { @@ -19631,19 +20423,20 @@ }, "nix2container_9": { "inputs": { - "flake-utils": "flake-utils_61", - "nixpkgs": "nixpkgs_108" + "flake-utils": "flake-utils_51", + "nixpkgs": "nixpkgs_102" }, "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", "owner": "nlewo", "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", "type": "github" }, "original": { "owner": "nlewo", + "ref": "init-nix-db", "repo": "nix2container", "type": "github" } @@ -19651,20 +20444,19 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_58", + "nixpkgs": "nixpkgs_55", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", "owner": "nixos", "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { "owner": "nixos", - "ref": "2.8.1", "repo": "nix", "type": "github" } @@ -19672,19 +20464,20 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_60", + "nixpkgs": "nixpkgs_65", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", "owner": "nixos", "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", "type": "github" }, "original": { "owner": "nixos", + "ref": "2.8.1", "repo": "nix", "type": "github" } @@ -19695,6 +20488,26 @@ "nixpkgs": "nixpkgs_67", "nixpkgs-regression": "nixpkgs-regression_11" }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_74", + "nixpkgs-regression": "nixpkgs-regression_12" + }, "locked": { "lastModified": 1644413094, "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", @@ -19710,11 +20523,11 @@ "type": "github" } }, - "nix_13": { + "nix_14": { "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_68", - "nixpkgs-regression": "nixpkgs-regression_12" + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_75", + "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { "lastModified": 1645437800, @@ -19731,11 +20544,11 @@ "type": "github" } }, - "nix_14": { + "nix_15": { "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_73", - "nixpkgs-regression": "nixpkgs-regression_13" + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_80", + "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { "lastModified": 1646164353, @@ -19752,10 +20565,10 @@ "type": "github" } }, - "nix_15": { + "nix_16": { "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_75" + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_82" }, "locked": { "lastModified": 1604400356, @@ -19771,11 +20584,11 @@ "type": "github" } }, - "nix_16": { + "nix_17": { "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_77", - "nixpkgs-regression": "nixpkgs-regression_14" + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_84", + "nixpkgs-regression": "nixpkgs-regression_15" }, "locked": { "lastModified": 1645189081, @@ -19791,31 +20604,10 @@ "type": "github" } }, - "nix_17": { - "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_89", - "nixpkgs-regression": "nixpkgs-regression_15" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, "nix_18": { "inputs": { "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_91", + "nixpkgs": "nixpkgs_96", "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { @@ -19879,20 +20671,20 @@ "nix_20": { "inputs": { "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_99", + "nixpkgs": "nixpkgs_105", "nixpkgs-regression": "nixpkgs-regression_18" }, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", "owner": "NixOS", "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.11.0", + "ref": "2.6.0", "repo": "nix", "type": "github" } @@ -19900,7 +20692,7 @@ "nix_21": { "inputs": { "lowdown-src": "lowdown-src_21", - "nixpkgs": "nixpkgs_101", + "nixpkgs": "nixpkgs_106", "nixpkgs-regression": "nixpkgs-regression_19" }, "locked": { @@ -19921,7 +20713,7 @@ "nix_22": { "inputs": { "lowdown-src": "lowdown-src_22", - "nixpkgs": "nixpkgs_102", + "nixpkgs": "nixpkgs_108", "nixpkgs-regression": "nixpkgs-regression_20" }, "locked": { @@ -19942,7 +20734,7 @@ "nix_23": { "inputs": { "lowdown-src": "lowdown-src_23", - "nixpkgs": "nixpkgs_103", + "nixpkgs": "nixpkgs_109", "nixpkgs-regression": "nixpkgs-regression_21" }, "locked": { @@ -19963,7 +20755,7 @@ "nix_24": { "inputs": { "lowdown-src": "lowdown-src_24", - "nixpkgs": "nixpkgs_104", + "nixpkgs": "nixpkgs_110", "nixpkgs-regression": "nixpkgs-regression_22" }, "locked": { @@ -19984,7 +20776,7 @@ "nix_25": { "inputs": { "lowdown-src": "lowdown-src_25", - "nixpkgs": "nixpkgs_107", + "nixpkgs": "nixpkgs_111", "nixpkgs-regression": "nixpkgs-regression_23" }, "locked": { @@ -20005,7 +20797,7 @@ "nix_26": { "inputs": { "lowdown-src": "lowdown-src_26", - "nixpkgs": "nixpkgs_112", + "nixpkgs": "nixpkgs_114", "nixpkgs-regression": "nixpkgs-regression_24" }, "locked": { @@ -20026,7 +20818,7 @@ "nix_27": { "inputs": { "lowdown-src": "lowdown-src_27", - "nixpkgs": "nixpkgs_113", + "nixpkgs": "nixpkgs_119", "nixpkgs-regression": "nixpkgs-regression_25" }, "locked": { @@ -20047,7 +20839,7 @@ "nix_28": { "inputs": { "lowdown-src": "lowdown-src_28", - "nixpkgs": "nixpkgs_116", + "nixpkgs": "nixpkgs_120", "nixpkgs-regression": "nixpkgs-regression_26" }, "locked": { @@ -20110,7 +20902,7 @@ "nix_30": { "inputs": { "lowdown-src": "lowdown-src_30", - "nixpkgs": "nixpkgs_124", + "nixpkgs": "nixpkgs_130", "nixpkgs-regression": "nixpkgs-regression_28" }, "locked": { @@ -20131,7 +20923,7 @@ "nix_31": { "inputs": { "lowdown-src": "lowdown-src_31", - "nixpkgs": "nixpkgs_125", + "nixpkgs": "nixpkgs_131", "nixpkgs-regression": "nixpkgs-regression_29" }, "locked": { @@ -20152,7 +20944,7 @@ "nix_32": { "inputs": { "lowdown-src": "lowdown-src_32", - "nixpkgs": "nixpkgs_128", + "nixpkgs": "nixpkgs_132", "nixpkgs-regression": "nixpkgs-regression_30" }, "locked": { @@ -20173,7 +20965,7 @@ "nix_33": { "inputs": { "lowdown-src": "lowdown-src_33", - "nixpkgs": "nixpkgs_133", + "nixpkgs": "nixpkgs_135", "nixpkgs-regression": "nixpkgs-regression_31" }, "locked": { @@ -20194,7 +20986,7 @@ "nix_34": { "inputs": { "lowdown-src": "lowdown-src_34", - "nixpkgs": "nixpkgs_134", + "nixpkgs": "nixpkgs_140", "nixpkgs-regression": "nixpkgs-regression_32" }, "locked": { @@ -20215,7 +21007,7 @@ "nix_35": { "inputs": { "lowdown-src": "lowdown-src_35", - "nixpkgs": "nixpkgs_137", + "nixpkgs": "nixpkgs_141", "nixpkgs-regression": "nixpkgs-regression_33" }, "locked": { @@ -20233,6 +21025,27 @@ "type": "github" } }, + "nix_36": { + "inputs": { + "lowdown-src": "lowdown-src_36", + "nixpkgs": "nixpkgs_144", + "nixpkgs-regression": "nixpkgs-regression_34" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, "nix_4": { "inputs": { "lowdown-src": "lowdown-src_4", @@ -20299,20 +21112,20 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_44", + "nixpkgs": "nixpkgs_40", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", + "owner": "NixOS", + "ref": "2.11.0", "repo": "nix", "type": "github" } @@ -20320,18 +21133,20 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_46" + "nixpkgs": "nixpkgs_51", + "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", "repo": "nix", "type": "github" } @@ -20339,19 +21154,18 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_48", - "nixpkgs-regression": "nixpkgs-regression_8" + "nixpkgs": "nixpkgs_53" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "repo": "nix", "type": "github" } @@ -20571,6 +21385,41 @@ } }, "nixago_6": { + "inputs": { + "flake-utils": [ + "cardano-node-plutip", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node-plutip", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_7": { "inputs": { "flake-utils": [ "db-sync", @@ -20602,7 +21451,7 @@ "type": "github" } }, - "nixago_7": { + "nixago_8": { "inputs": { "flake-utils": [ "db-sync", @@ -20981,6 +21830,22 @@ "type": "github" } }, + "nixpkgs-2003_26": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-2003_3": { "locked": { "lastModified": 1620055814, @@ -21111,11 +21976,11 @@ }, "nixpkgs-2105_10": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -21381,6 +22246,22 @@ "type": "github" } }, + "nixpkgs-2105_26": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-2105_3": { "locked": { "lastModified": 1659914493, @@ -21431,11 +22312,11 @@ }, "nixpkgs-2105_6": { "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { @@ -21447,11 +22328,11 @@ }, "nixpkgs-2105_7": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { @@ -21463,11 +22344,11 @@ }, "nixpkgs-2105_8": { "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -21479,11 +22360,11 @@ }, "nixpkgs-2105_9": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { @@ -21511,11 +22392,11 @@ }, "nixpkgs-2111_10": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -21781,6 +22662,22 @@ "type": "github" } }, + "nixpkgs-2111_26": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-2111_3": { "locked": { "lastModified": 1659446231, @@ -21831,11 +22728,11 @@ }, "nixpkgs-2111_6": { "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -21847,11 +22744,11 @@ }, "nixpkgs-2111_7": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { @@ -21863,11 +22760,11 @@ }, "nixpkgs-2111_8": { "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -21879,11 +22776,11 @@ }, "nixpkgs-2111_9": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { @@ -22133,6 +23030,22 @@ "type": "github" } }, + "nixpkgs-2205_23": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-2205_3": { "locked": { "lastModified": 1682600000, @@ -22183,11 +23096,11 @@ }, "nixpkgs-2205_6": { "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { @@ -22199,11 +23112,11 @@ }, "nixpkgs-2205_7": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { @@ -22469,6 +23382,22 @@ "type": "github" } }, + "nixpkgs-2211_22": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-2211_3": { "locked": { "lastModified": 1682682915, @@ -22519,11 +23448,11 @@ }, "nixpkgs-2211_6": { "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { @@ -23419,10 +24348,9 @@ "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "id": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" + "type": "indirect" } }, "nixpkgs-regression_19": { @@ -23697,6 +24625,22 @@ "type": "github" } }, + "nixpkgs-regression_34": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, "nixpkgs-regression_4": { "locked": { "lastModified": 1643052045, @@ -23755,9 +24699,10 @@ "type": "github" }, "original": { - "id": "nixpkgs", + "owner": "NixOS", + "repo": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "type": "github" } }, "nixpkgs-regression_8": { @@ -24304,15 +25249,15 @@ }, "nixpkgs-unstable_10": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -24320,11 +25265,11 @@ }, "nixpkgs-unstable_11": { "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { @@ -24336,11 +25281,11 @@ }, "nixpkgs-unstable_12": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { @@ -24352,17 +25297,17 @@ }, "nixpkgs-unstable_13": { "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, @@ -24622,6 +25567,22 @@ "type": "github" } }, + "nixpkgs-unstable_29": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, "nixpkgs-unstable_3": { "locked": { "lastModified": 1695318763, @@ -24688,15 +25649,15 @@ }, "nixpkgs-unstable_7": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -24704,11 +25665,11 @@ }, "nixpkgs-unstable_8": { "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { @@ -24720,11 +25681,11 @@ }, "nixpkgs-unstable_9": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { @@ -24752,158 +25713,158 @@ }, "nixpkgs_100": { "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-22.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_101": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_102": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_103": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", + "owner": "nixos", + "ref": "nixos-22.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_104": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_105": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, "nixpkgs_106": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_107": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_108": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_109": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } @@ -24926,121 +25887,121 @@ }, "nixpkgs_110": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_111": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_112": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_113": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_114": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_115": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_116": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_117": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { @@ -25051,11 +26012,11 @@ }, "nixpkgs_118": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { @@ -25067,15 +26028,16 @@ }, "nixpkgs_119": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } @@ -25097,27 +26059,27 @@ }, "nixpkgs_120": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_121": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { @@ -25128,11 +26090,11 @@ }, "nixpkgs_122": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { @@ -25160,43 +26122,42 @@ }, "nixpkgs_124": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_125": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_126": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { @@ -25207,11 +26168,11 @@ }, "nixpkgs_127": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { @@ -25223,31 +26184,31 @@ }, "nixpkgs_128": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_129": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -25270,68 +26231,84 @@ }, "nixpkgs_130": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_131": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_132": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_133": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_134": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_135": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25347,7 +26324,7 @@ "type": "github" } }, - "nixpkgs_135": { + "nixpkgs_136": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25362,7 +26339,7 @@ "type": "github" } }, - "nixpkgs_136": { + "nixpkgs_137": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -25378,7 +26355,52 @@ "type": "github" } }, - "nixpkgs_137": { + "nixpkgs_138": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_139": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_140": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25394,7 +26416,23 @@ "type": "github" } }, - "nixpkgs_138": { + "nixpkgs_141": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_142": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25409,7 +26447,7 @@ "type": "github" } }, - "nixpkgs_139": { + "nixpkgs_143": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -25425,27 +26463,29 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_144": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_140": { + "nixpkgs_145": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { @@ -25454,13 +26494,13 @@ "type": "github" } }, - "nixpkgs_141": { + "nixpkgs_146": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { @@ -25470,7 +26510,7 @@ "type": "github" } }, - "nixpkgs_142": { + "nixpkgs_147": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25485,7 +26525,7 @@ "type": "github" } }, - "nixpkgs_143": { + "nixpkgs_148": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25501,7 +26541,7 @@ "type": "github" } }, - "nixpkgs_144": { + "nixpkgs_149": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25516,7 +26556,23 @@ "type": "github" } }, - "nixpkgs_145": { + "nixpkgs_15": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_150": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25532,18 +26588,33 @@ "type": "github" } }, - "nixpkgs_15": { + "nixpkgs_151": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_152": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -25938,11 +27009,11 @@ }, "nixpkgs_39": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { @@ -25968,154 +27039,153 @@ }, "nixpkgs_40": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_41": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_42": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_43": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_44": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_45": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, "nixpkgs_46": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-20.09-small", "type": "indirect" } }, "nixpkgs_47": { "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-21.11", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_48": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", "type": "indirect" } }, "nixpkgs_49": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -26138,6 +27208,115 @@ } }, "nixpkgs_50": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_51": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_52": { + "locked": { + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + } + }, + "nixpkgs_53": { + "locked": { + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "nixpkgs_54": { + "locked": { + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_55": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_56": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_57": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -26153,7 +27332,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_58": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26169,7 +27348,7 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_59": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -26185,7 +27364,23 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_6": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -26201,7 +27396,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_61": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26217,7 +27412,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_62": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -26232,7 +27427,7 @@ "type": "github" } }, - "nixpkgs_56": { + "nixpkgs_63": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26248,7 +27443,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_64": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -26263,7 +27458,7 @@ "type": "github" } }, - "nixpkgs_58": { + "nixpkgs_65": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -26278,7 +27473,7 @@ "type": "indirect" } }, - "nixpkgs_59": { + "nixpkgs_66": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -26294,23 +27489,7 @@ "type": "github" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_67": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26325,7 +27504,7 @@ "type": "indirect" } }, - "nixpkgs_61": { + "nixpkgs_68": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -26341,7 +27520,7 @@ "type": "github" } }, - "nixpkgs_62": { + "nixpkgs_69": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -26357,7 +27536,23 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_7": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26373,7 +27568,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_71": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -26389,7 +27584,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_72": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -26405,7 +27600,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_73": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -26421,7 +27616,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_74": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26436,7 +27631,7 @@ "type": "indirect" } }, - "nixpkgs_68": { + "nixpkgs_75": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26451,7 +27646,7 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_76": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -26467,23 +27662,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_77": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -26497,7 +27676,7 @@ "type": "indirect" } }, - "nixpkgs_71": { + "nixpkgs_78": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -26513,7 +27692,7 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_79": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26529,7 +27708,23 @@ "type": "github" } }, - "nixpkgs_73": { + "nixpkgs_8": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_80": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26544,7 +27739,7 @@ "type": "indirect" } }, - "nixpkgs_74": { + "nixpkgs_81": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -26560,7 +27755,7 @@ "type": "github" } }, - "nixpkgs_75": { + "nixpkgs_82": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -26575,7 +27770,7 @@ "type": "indirect" } }, - "nixpkgs_76": { + "nixpkgs_83": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -26591,7 +27786,7 @@ "type": "github" } }, - "nixpkgs_77": { + "nixpkgs_84": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26606,7 +27801,7 @@ "type": "indirect" } }, - "nixpkgs_78": { + "nixpkgs_85": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -26622,7 +27817,7 @@ "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_86": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -26638,23 +27833,7 @@ "type": "github" } }, - "nixpkgs_8": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_80": { + "nixpkgs_87": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26670,7 +27849,7 @@ "type": "github" } }, - "nixpkgs_81": { + "nixpkgs_88": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -26686,7 +27865,7 @@ "type": "github" } }, - "nixpkgs_82": { + "nixpkgs_89": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -26702,7 +27881,23 @@ "type": "github" } }, - "nixpkgs_83": { + "nixpkgs_9": { + "locked": { + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_90": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26718,7 +27913,7 @@ "type": "github" } }, - "nixpkgs_84": { + "nixpkgs_91": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -26734,7 +27929,7 @@ "type": "github" } }, - "nixpkgs_85": { + "nixpkgs_92": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -26748,7 +27943,7 @@ "type": "indirect" } }, - "nixpkgs_86": { + "nixpkgs_93": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -26764,7 +27959,7 @@ "type": "github" } }, - "nixpkgs_87": { + "nixpkgs_94": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -26778,7 +27973,7 @@ "type": "indirect" } }, - "nixpkgs_88": { + "nixpkgs_95": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -26792,7 +27987,7 @@ "type": "indirect" } }, - "nixpkgs_89": { + "nixpkgs_96": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26807,23 +28002,7 @@ "type": "indirect" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_90": { + "nixpkgs_97": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -26838,7 +28017,7 @@ "type": "github" } }, - "nixpkgs_91": { + "nixpkgs_98": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26853,7 +28032,7 @@ "type": "indirect" } }, - "nixpkgs_92": { + "nixpkgs_99": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -26868,121 +28047,11 @@ "type": "github" } }, - "nixpkgs_93": { - "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_94": { - "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_95": { - "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_96": { - "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_97": { - "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_98": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_99": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, "nomad": { "inputs": { - "nix": "nix_8", - "nixpkgs": "nixpkgs_47", - "utils": "utils_9" + "nix": "nix_9", + "nixpkgs": "nixpkgs_54", + "utils": "utils_11" }, "locked": { "lastModified": 1648128770, @@ -27001,11 +28070,11 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_7", + "devshell": "devshell_8", "inclusive": "inclusive_2", - "nix": "nix_9", - "nixpkgs": "nixpkgs_49", - "utils": "utils_10" + "nix": "nix_10", + "nixpkgs": "nixpkgs_56", + "utils": "utils_12" }, "locked": { "lastModified": 1648029666, @@ -27023,11 +28092,11 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_11", "inclusive": "inclusive_5", - "nix": "nix_11", - "nixpkgs": "nixpkgs_61", - "utils": "utils_15" + "nix": "nix_12", + "nixpkgs": "nixpkgs_68", + "utils": "utils_17" }, "locked": { "lastModified": 1648029666, @@ -27045,11 +28114,11 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_17", + "devshell": "devshell_18", "inclusive": "inclusive_10", - "nix": "nix_16", - "nixpkgs": "nixpkgs_78", - "utils": "utils_24" + "nix": "nix_17", + "nixpkgs": "nixpkgs_85", + "utils": "utils_26" }, "locked": { "lastModified": 1648029666, @@ -27067,10 +28136,10 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_8", + "devshell": "devshell_9", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_50", - "utils": "utils_11" + "nixpkgs": "nixpkgs_57", + "utils": "utils_13" }, "locked": { "lastModified": 1649836589, @@ -27088,10 +28157,10 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_12", "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_62", - "utils": "utils_16" + "nixpkgs": "nixpkgs_69", + "utils": "utils_18" }, "locked": { "lastModified": 1658244176, @@ -27109,10 +28178,10 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_18", + "devshell": "devshell_19", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_79", - "utils": "utils_25" + "nixpkgs": "nixpkgs_86", + "utils": "utils_27" }, "locked": { "lastModified": 1649836589, @@ -27130,9 +28199,9 @@ }, "nomad_2": { "inputs": { - "nix": "nix_15", - "nixpkgs": "nixpkgs_76", - "utils": "utils_23" + "nix": "nix_16", + "nixpkgs": "nixpkgs_83", + "utils": "utils_25" }, "locked": { "lastModified": 1648128770, @@ -27224,6 +28293,21 @@ "type": "github" } }, + "nosys_6": { + "locked": { + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, "offchain-metadata-tools-service": { "flake": false, "locked": { @@ -27581,6 +28665,23 @@ "type": "github" } }, + "old-ghc-nix_26": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, "old-ghc-nix_3": { "flake": false, "locked": { @@ -27749,6 +28850,22 @@ } }, "ops-lib_4": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_5": { "flake": false, "locked": { "lastModified": 1649848729, @@ -27764,7 +28881,7 @@ "type": "github" } }, - "ops-lib_5": { + "ops-lib_6": { "flake": false, "locked": { "lastModified": 1649848729, @@ -27780,7 +28897,7 @@ "type": "github" } }, - "ops-lib_6": { + "ops-lib_7": { "flake": false, "locked": { "lastModified": 1649848729, @@ -28149,11 +29266,11 @@ }, "plutip": { "inputs": { - "CHaP": "CHaP_20", + "CHaP": "CHaP_21", "cardano-node": [ - "cardano-node" + "cardano-node-plutip" ], - "flake-compat": "flake-compat_57", + "flake-compat": "flake-compat_60", "hackage-nix": [ "hackage-nix" ], @@ -28184,7 +29301,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_38", "nixpkgs": [ "db-sync", "cardano-world", @@ -28210,8 +29327,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_85" + "flake-utils": "flake-utils_44", + "nixpkgs": "nixpkgs_92" }, "locked": { "lastModified": 1639823344, @@ -28256,10 +29373,10 @@ }, "pre-commit-hooks-nix_10": { "inputs": { - "flake-compat": "flake-compat_47", - "flake-utils": "flake-utils_90", + "flake-compat": "flake-compat_50", + "flake-utils": "flake-utils_95", "gitignore": "gitignore_10", - "nixpkgs": "nixpkgs_130", + "nixpkgs": "nixpkgs_137", "nixpkgs-stable": "nixpkgs-stable_19" }, "locked": { @@ -28278,10 +29395,10 @@ }, "pre-commit-hooks-nix_11": { "inputs": { - "flake-compat": "flake-compat_48", - "flake-utils": "flake-utils_92", + "flake-compat": "flake-compat_51", + "flake-utils": "flake-utils_97", "gitignore": "gitignore_11", - "nixpkgs": "nixpkgs_132", + "nixpkgs": "nixpkgs_139", "nixpkgs-stable": "nixpkgs-stable_21" }, "locked": { @@ -28300,10 +29417,10 @@ }, "pre-commit-hooks-nix_12": { "inputs": { - "flake-compat": "flake-compat_51", - "flake-utils": "flake-utils_98", + "flake-compat": "flake-compat_54", + "flake-utils": "flake-utils_103", "gitignore": "gitignore_12", - "nixpkgs": "nixpkgs_136", + "nixpkgs": "nixpkgs_143", "nixpkgs-stable": "nixpkgs-stable_23" }, "locked": { @@ -28322,10 +29439,10 @@ }, "pre-commit-hooks-nix_13": { "inputs": { - "flake-compat": "flake-compat_53", - "flake-utils": "flake-utils_102", + "flake-compat": "flake-compat_56", + "flake-utils": "flake-utils_107", "gitignore": "gitignore_13", - "nixpkgs": "nixpkgs_139", + "nixpkgs": "nixpkgs_146", "nixpkgs-stable": "nixpkgs-stable_25" }, "locked": { @@ -28344,10 +29461,10 @@ }, "pre-commit-hooks-nix_14": { "inputs": { - "flake-compat": "flake-compat_54", - "flake-utils": "flake-utils_104", + "flake-compat": "flake-compat_57", + "flake-utils": "flake-utils_109", "gitignore": "gitignore_14", - "nixpkgs": "nixpkgs_141", + "nixpkgs": "nixpkgs_148", "nixpkgs-stable": "nixpkgs-stable_27" }, "locked": { @@ -28366,10 +29483,10 @@ }, "pre-commit-hooks-nix_15": { "inputs": { - "flake-compat": "flake-compat_55", - "flake-utils": "flake-utils_106", + "flake-compat": "flake-compat_58", + "flake-utils": "flake-utils_111", "gitignore": "gitignore_15", - "nixpkgs": "nixpkgs_143", + "nixpkgs": "nixpkgs_150", "nixpkgs-stable": "nixpkgs-stable_29" }, "locked": { @@ -28388,10 +29505,10 @@ }, "pre-commit-hooks-nix_16": { "inputs": { - "flake-compat": "flake-compat_56", - "flake-utils": "flake-utils_108", + "flake-compat": "flake-compat_59", + "flake-utils": "flake-utils_113", "gitignore": "gitignore_16", - "nixpkgs": "nixpkgs_145", + "nixpkgs": "nixpkgs_152", "nixpkgs-stable": "nixpkgs-stable_31" }, "locked": { @@ -28410,10 +29527,10 @@ }, "pre-commit-hooks-nix_2": { "inputs": { - "flake-compat": "flake-compat_31", - "flake-utils": "flake-utils_58", + "flake-compat": "flake-compat_34", + "flake-utils": "flake-utils_63", "gitignore": "gitignore_2", - "nixpkgs": "nixpkgs_106", + "nixpkgs": "nixpkgs_113", "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { @@ -28432,10 +29549,10 @@ }, "pre-commit-hooks-nix_3": { "inputs": { - "flake-compat": "flake-compat_33", - "flake-utils": "flake-utils_62", + "flake-compat": "flake-compat_36", + "flake-utils": "flake-utils_67", "gitignore": "gitignore_3", - "nixpkgs": "nixpkgs_109", + "nixpkgs": "nixpkgs_116", "nixpkgs-stable": "nixpkgs-stable_5" }, "locked": { @@ -28454,10 +29571,10 @@ }, "pre-commit-hooks-nix_4": { "inputs": { - "flake-compat": "flake-compat_34", - "flake-utils": "flake-utils_64", + "flake-compat": "flake-compat_37", + "flake-utils": "flake-utils_69", "gitignore": "gitignore_4", - "nixpkgs": "nixpkgs_111", + "nixpkgs": "nixpkgs_118", "nixpkgs-stable": "nixpkgs-stable_7" }, "locked": { @@ -28476,10 +29593,10 @@ }, "pre-commit-hooks-nix_5": { "inputs": { - "flake-compat": "flake-compat_37", - "flake-utils": "flake-utils_70", + "flake-compat": "flake-compat_40", + "flake-utils": "flake-utils_75", "gitignore": "gitignore_5", - "nixpkgs": "nixpkgs_115", + "nixpkgs": "nixpkgs_122", "nixpkgs-stable": "nixpkgs-stable_9" }, "locked": { @@ -28498,10 +29615,10 @@ }, "pre-commit-hooks-nix_6": { "inputs": { - "flake-compat": "flake-compat_39", - "flake-utils": "flake-utils_74", + "flake-compat": "flake-compat_42", + "flake-utils": "flake-utils_79", "gitignore": "gitignore_6", - "nixpkgs": "nixpkgs_118", + "nixpkgs": "nixpkgs_125", "nixpkgs-stable": "nixpkgs-stable_11" }, "locked": { @@ -28520,10 +29637,10 @@ }, "pre-commit-hooks-nix_7": { "inputs": { - "flake-compat": "flake-compat_40", - "flake-utils": "flake-utils_76", + "flake-compat": "flake-compat_43", + "flake-utils": "flake-utils_81", "gitignore": "gitignore_7", - "nixpkgs": "nixpkgs_120", + "nixpkgs": "nixpkgs_127", "nixpkgs-stable": "nixpkgs-stable_13" }, "locked": { @@ -28542,10 +29659,10 @@ }, "pre-commit-hooks-nix_8": { "inputs": { - "flake-compat": "flake-compat_41", - "flake-utils": "flake-utils_78", + "flake-compat": "flake-compat_44", + "flake-utils": "flake-utils_83", "gitignore": "gitignore_8", - "nixpkgs": "nixpkgs_122", + "nixpkgs": "nixpkgs_129", "nixpkgs-stable": "nixpkgs-stable_15" }, "locked": { @@ -28564,10 +29681,10 @@ }, "pre-commit-hooks-nix_9": { "inputs": { - "flake-compat": "flake-compat_45", - "flake-utils": "flake-utils_86", + "flake-compat": "flake-compat_48", + "flake-utils": "flake-utils_91", "gitignore": "gitignore_9", - "nixpkgs": "nixpkgs_127", + "nixpkgs": "nixpkgs_134", "nixpkgs-stable": "nixpkgs-stable_17" }, "locked": { @@ -28587,8 +29704,8 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_51", + "flake-utils": "flake-utils_29", + "nixpkgs": "nixpkgs_58", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -28608,8 +29725,8 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_54", + "flake-utils": "flake-utils_31", + "nixpkgs": "nixpkgs_61", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -28629,8 +29746,8 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_63", + "flake-utils": "flake-utils_33", + "nixpkgs": "nixpkgs_70", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -28650,8 +29767,8 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_35", - "nixpkgs": "nixpkgs_80", + "flake-utils": "flake-utils_40", + "nixpkgs": "nixpkgs_87", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -28671,8 +29788,8 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_37", - "nixpkgs": "nixpkgs_83", + "flake-utils": "flake-utils_42", + "nixpkgs": "nixpkgs_90", "rust-overlay": "rust-overlay_7" }, "locked": { @@ -28696,9 +29813,10 @@ "cardano-configurations": "cardano-configurations", "cardano-nix": "cardano-nix", "cardano-node": "cardano-node", + "cardano-node-plutip": "cardano-node-plutip", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_25", + "flake-compat": "flake-compat_28", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_4", "hercules-ci-effects": "hercules-ci-effects_2", @@ -29347,6 +30465,23 @@ "type": "github" } }, + "secp256k1_23": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, "secp256k1_3": { "flake": false, "locked": { @@ -29721,6 +30856,23 @@ "type": "github" } }, + "sodium_23": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, "sodium_3": { "flake": false, "locked": { @@ -30132,6 +31284,22 @@ } }, "stackage_10": { + "flake": false, + "locked": { + "lastModified": 1718842995, + "narHash": "sha256-z1ETU1nJoTUpK7BcdSYuYph6njhJJR8hTZ197lzXX3E=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "b224b7d7461de53fcf700bb14bde43d6efa2ee3b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" + } + }, + "stackage_11": { "flake": false, "locked": { "lastModified": 1714954836, @@ -30147,7 +31315,7 @@ "type": "github" } }, - "stackage_11": { + "stackage_12": { "flake": false, "locked": { "lastModified": 1714608979, @@ -30163,7 +31331,7 @@ "type": "github" } }, - "stackage_12": { + "stackage_13": { "flake": false, "locked": { "lastModified": 1713831135, @@ -30179,7 +31347,7 @@ "type": "github" } }, - "stackage_13": { + "stackage_14": { "flake": false, "locked": { "lastModified": 1703635755, @@ -30195,7 +31363,7 @@ "type": "github" } }, - "stackage_14": { + "stackage_15": { "flake": false, "locked": { "lastModified": 1703635755, @@ -30211,7 +31379,7 @@ "type": "github" } }, - "stackage_15": { + "stackage_16": { "flake": false, "locked": { "lastModified": 1713831135, @@ -30227,7 +31395,7 @@ "type": "github" } }, - "stackage_16": { + "stackage_17": { "flake": false, "locked": { "lastModified": 1703635755, @@ -30243,7 +31411,7 @@ "type": "github" } }, - "stackage_17": { + "stackage_18": { "flake": false, "locked": { "lastModified": 1703635755, @@ -30259,7 +31427,7 @@ "type": "github" } }, - "stackage_18": { + "stackage_19": { "flake": false, "locked": { "lastModified": 1714608979, @@ -30275,14 +31443,14 @@ "type": "github" } }, - "stackage_19": { + "stackage_2": { "flake": false, "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -30291,14 +31459,14 @@ "type": "github" } }, - "stackage_2": { + "stackage_20": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { @@ -30307,7 +31475,7 @@ "type": "github" } }, - "stackage_20": { + "stackage_21": { "flake": false, "locked": { "lastModified": 1703635755, @@ -30323,7 +31491,7 @@ "type": "github" } }, - "stackage_21": { + "stackage_22": { "flake": false, "locked": { "lastModified": 1703635755, @@ -30339,7 +31507,7 @@ "type": "github" } }, - "stackage_22": { + "stackage_23": { "flake": false, "locked": { "lastModified": 1713831135, @@ -30355,7 +31523,7 @@ "type": "github" } }, - "stackage_23": { + "stackage_24": { "flake": false, "locked": { "lastModified": 1703635755, @@ -30371,7 +31539,7 @@ "type": "github" } }, - "stackage_24": { + "stackage_25": { "flake": false, "locked": { "lastModified": 1703635755, @@ -30422,11 +31590,11 @@ "stackage_5": { "flake": false, "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -30438,11 +31606,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { @@ -30454,11 +31622,11 @@ "stackage_7": { "flake": false, "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { @@ -30470,11 +31638,11 @@ "stackage_8": { "flake": false, "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { @@ -30486,11 +31654,11 @@ "stackage_9": { "flake": false, "locked": { - "lastModified": 1718842995, - "narHash": "sha256-z1ETU1nJoTUpK7BcdSYuYph6njhJJR8hTZ197lzXX3E=", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "b224b7d7461de53fcf700bb14bde43d6efa2ee3b", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { @@ -30762,13 +31930,58 @@ }, "std_6": { "inputs": { - "devshell": "devshell_12", + "arion": [ + "cardano-node-plutip", + "tullia", + "std", + "blank" + ], + "blank": "blank_6", + "devshell": "devshell_7", "dmerge": "dmerge_6", - "flake-utils": "flake-utils_29", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "flake-utils": "flake-utils_26", + "incl": "incl_6", + "makes": [ + "cardano-node-plutip", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-node-plutip", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_6", "nixago": "nixago_6", - "nixpkgs": "nixpkgs_64", - "yants": "yants_7" + "nixpkgs": "nixpkgs_45", + "nosys": "nosys_6", + "yants": "yants_6" + }, + "locked": { + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_7": { + "inputs": { + "devshell": "devshell_13", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_34", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago_7", + "nixpkgs": "nixpkgs_71", + "yants": "yants_8" }, "locked": { "lastModified": 1661370377, @@ -30784,15 +31997,15 @@ "type": "github" } }, - "std_7": { + "std_8": { "inputs": { - "devshell": "devshell_20", - "dmerge": "dmerge_7", - "flake-utils": "flake-utils_45", + "devshell": "devshell_21", + "dmerge": "dmerge_8", + "flake-utils": "flake-utils_50", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_7", - "nixpkgs": "nixpkgs_94", - "yants": "yants_9" + "nixago": "nixago_8", + "nixpkgs": "nixpkgs_101", + "yants": "yants_10" }, "locked": { "lastModified": 1661367957, @@ -30808,11 +32021,11 @@ "type": "github" } }, - "std_8": { + "std_9": { "inputs": { - "devshell": "devshell_21", - "nixpkgs": "nixpkgs_97", - "yants": "yants_10" + "devshell": "devshell_22", + "nixpkgs": "nixpkgs_104", + "yants": "yants_11" }, "locked": { "lastModified": 1652784712, @@ -31985,8 +33198,8 @@ }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_40", - "nixpkgs": "nixpkgs_88" + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_95" }, "locked": { "lastModified": 1654211622, @@ -32107,7 +33320,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_25", + "flake-utils": "flake-utils_30", "nixpkgs": [ "db-sync", "cardano-world", @@ -32136,7 +33349,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_30", + "flake-utils": "flake-utils_35", "nixpkgs": [ "db-sync", "cardano-world", @@ -32163,7 +33376,7 @@ "inputs": { "bats-assert": "bats-assert_4", "bats-support": "bats-support_4", - "flake-utils": "flake-utils_36", + "flake-utils": "flake-utils_41", "nixpkgs": [ "db-sync", "cardano-world", @@ -32323,9 +33536,30 @@ }, "tullia_4": { "inputs": { - "nix2container": "nix2container_7", - "nixpkgs": "nixpkgs_96", - "std": "std_8" + "nix-nomad": "nix-nomad_4", + "nix2container": "nix2container_8", + "nixpkgs": "nixpkgs_44", + "std": "std_6" + }, + "locked": { + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_5": { + "inputs": { + "nix2container": "nix2container_9", + "nixpkgs": "nixpkgs_103", + "std": "std_9" }, "locked": { "lastModified": 1657811465, @@ -32360,6 +33594,36 @@ } }, "utils_10": { + "locked": { + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_11": { + "locked": { + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_12": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32374,7 +33638,7 @@ "type": "github" } }, - "utils_11": { + "utils_13": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32389,7 +33653,7 @@ "type": "github" } }, - "utils_12": { + "utils_14": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -32404,7 +33668,7 @@ "type": "github" } }, - "utils_13": { + "utils_15": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32419,7 +33683,7 @@ "type": "github" } }, - "utils_14": { + "utils_16": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -32434,7 +33698,7 @@ "type": "github" } }, - "utils_15": { + "utils_17": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32449,7 +33713,7 @@ "type": "github" } }, - "utils_16": { + "utils_18": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32464,7 +33728,7 @@ "type": "github" } }, - "utils_17": { + "utils_19": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -32479,22 +33743,22 @@ "type": "github" } }, - "utils_18": { + "utils_2": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, - "utils_19": { + "utils_20": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32509,22 +33773,22 @@ "type": "github" } }, - "utils_2": { + "utils_21": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_20": { + "utils_22": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32539,7 +33803,7 @@ "type": "github" } }, - "utils_21": { + "utils_23": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -32554,7 +33818,7 @@ "type": "github" } }, - "utils_22": { + "utils_24": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -32569,7 +33833,7 @@ "type": "github" } }, - "utils_23": { + "utils_25": { "locked": { "lastModified": 1601282935, "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", @@ -32584,7 +33848,7 @@ "type": "github" } }, - "utils_24": { + "utils_26": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32599,7 +33863,7 @@ "type": "github" } }, - "utils_25": { + "utils_27": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32614,7 +33878,7 @@ "type": "github" } }, - "utils_26": { + "utils_28": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -32629,7 +33893,7 @@ "type": "github" } }, - "utils_27": { + "utils_29": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32644,13 +33908,13 @@ "type": "github" } }, - "utils_28": { + "utils_3": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -32659,13 +33923,13 @@ "type": "github" } }, - "utils_3": { + "utils_30": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -32736,11 +34000,11 @@ }, "utils_8": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -32751,11 +34015,11 @@ }, "utils_9": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -32823,6 +34087,29 @@ } }, "yants_10": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_11": { "inputs": { "nixpkgs": [ "db-sync", @@ -32944,14 +34231,19 @@ }, "yants_6": { "inputs": { - "nixpkgs": "nixpkgs_55" + "nixpkgs": [ + "cardano-node-plutip", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", "owner": "divnix", "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", "type": "github" }, "original": { @@ -32962,13 +34254,7 @@ }, "yants_7": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_62" }, "locked": { "lastModified": 1645126146, @@ -32986,7 +34272,13 @@ }, "yants_8": { "inputs": { - "nixpkgs": "nixpkgs_90" + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, @@ -33004,12 +34296,7 @@ }, "yants_9": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_97" }, "locked": { "lastModified": 1645126146, diff --git a/flake.nix b/flake.nix index f8e7cd05a..e9d6adca3 100644 --- a/flake.nix +++ b/flake.nix @@ -34,6 +34,9 @@ cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-sancho"; + # TODO: Replace Plutip with cardano-testnet and remove this input + cardano-node-plutip.url = "github:IntersectMBO/cardano-node/8.1.1"; + # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { @@ -80,7 +83,7 @@ iohk-nix.follows = "iohk-nix"; haskell-nix.follows = "haskell-nix"; hackage-nix.follows = "hackage-nix"; - cardano-node.follows = "cardano-node"; + cardano-node.follows = "cardano-node-plutip"; }; }; @@ -265,8 +268,9 @@ in import ./plutip-server { inherit pkgs; - inherit (inputs) plutip CHaP cardano-node; + inherit (inputs) plutip CHaP; inherit (pkgs) system; + cardano-node = inputs.cardano-node-plutip; src = ./plutip-server; }; in @@ -315,6 +319,7 @@ { plutip-server = (plutipServerFor system).hsPkgs.plutip-server.components.exes.plutip-server; + ogmios-plutip = cardano-nix.packages.${system}."ogmios-6.0.3"; ogmios = cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; kupo = inputs.kupo-nixos.packages.${system}.kupo; # kupo = cardano-nix.packages.${system}."kupo-${kupoVersion}"; diff --git a/nix/default.nix b/nix/default.nix index 9821b1e6b..ccc861281 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -340,7 +340,7 @@ let runPursTest ( args // { buildInputs = with pkgs; [ - ogmios + ogmios-plutip plutip-server kupo ] diff --git a/package.json b/package.json index f146609fa..a21257dff 100755 --- a/package.json +++ b/package.json @@ -16,8 +16,8 @@ "blockfrost-test": "source ./test/blockfrost.env && spago run --main Test.Ctl.Blockfrost.Contract", "blockfrost-local-test": "source ./test/blockfrost-local.env && spago run --main Test.Ctl.Blockfrost.Contract", "unit-test": "spago run --main Test.Ctl.Unit", - "plutip-test": "spago run --main Test.Ctl.Plutip", - "staking-test": "spago run --main Test.Ctl.Plutip.Staking", + "plutip-test": "nix build .#checks.x86_64-linux.ctl-plutip-test", + "staking-test": "nix build .#checks.x86_64-linux.ctl-staking-test", "e2e-serve": "make esbuild-serve", "e2e-test": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run'", "e2e-test-debug": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run --no-headless'", From 5bf278436b46d910ae4339add6942bf362ef4a82 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 21 Jun 2024 18:03:12 +0300 Subject: [PATCH 240/373] Update comparisons.md --- doc/comparisons.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/comparisons.md b/doc/comparisons.md index 25311bd30..504ad2ca1 100644 --- a/doc/comparisons.md +++ b/doc/comparisons.md @@ -79,5 +79,6 @@ Additionally, CTL supports [testing with real wallets](./e2e-testing.md) via hea Lucid aims for simplicity, while CTL allows more fine-grained control over transaction building process without losing the benefits of declarativeness. -- CTL uses [`cardano-serialization-lib`](https://github.com/Emurgo/cardano-serialization-lib/), while Lucid uses a fork of [`cardano-multiplatform-lib`](https://github.com/berry-pool/cardano-multiplatform-lib). Lucid allows to use CML's `TxBuilder` or [call CML directly](https://lucid.spacebudz.io/docs/advanced/cml/), while CTL allows to alter the transaction arbitrarily as PureScript data type either before or after balancing. In CTL, CSL types and method wrappers are a part of the internal interface, but technically they can be used as well. +- CTL uses [`cardano-serialization-lib`](https://github.com/Emurgo/cardano-serialization-lib/), while Lucid uses a fork of [`cardano-multiplatform-lib`](https://github.com/berry-pool/cardano-multiplatform-lib). Lucid allows to use CML's `TxBuilder` or [call CML directly](https://lucid.spacebudz.io/docs/advanced/cml/), while CTL allows to alter the transaction arbitrarily as PureScript data type either before or after balancing. +- In CTL, CSL types and method wrappers are used via [`purescript-cardano-serialization-lib`](https://github.com/mlabs-haskell/purescript-cardano-serialization-lib) and [`purescript-cardano-types`](https://github.com/mlabs-haskell/purescript-cardano-types). However, `TxBuilder` APIs from CSL are not provided by these packages. - Plutus Data conversion is handled via a [schema-enabled API](https://lucid.spacebudz.io/docs/advanced/type-casting/) in Lucid. CTL allows for automatic `ToData` / `FromData` deriving for some types, via `HasPlutusSchema`. From cec2adaab048aa8b37f2e713fd39922f75f53092 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 25 Jun 2024 17:25:48 +0200 Subject: [PATCH 241/373] Merge branch 'alexey/cardano-testnet-8.7.2' into dshuiski/conway --- flake.lock | 5668 ++++++++------------- flake.nix | 20 +- package.json | 2 +- spago-packages.nix | 12 + spago.dhall | 2 + src/Contract/Test/Plutip.purs | 2 +- src/Internal/CardanoCli.purs | 230 + src/Internal/CardanoCli/QueryHandler.purs | 91 + src/Internal/Contract/MinFee.purs | 5 +- src/Internal/Plutip/Server.purs | 312 +- src/Internal/Plutip/Spawn.js | 4 + src/Internal/Plutip/Spawn.purs | 110 +- src/Internal/Plutip/Utils.js | 51 + src/Internal/Plutip/Utils.purs | 417 +- src/Internal/Testnet/Contract.purs | 262 + src/Internal/Testnet/DistributeFunds.purs | 252 + src/Internal/Testnet/Server.purs | 462 ++ src/Internal/Testnet/Types.purs | 153 + src/Internal/Testnet/Utils.purs | 268 + test/Plutip.purs | 283 +- test/Testnet/DistributeFunds.purs | 274 + test/Unit.purs | 2 + 22 files changed, 5143 insertions(+), 3739 deletions(-) create mode 100644 src/Internal/CardanoCli.purs create mode 100644 src/Internal/CardanoCli/QueryHandler.purs create mode 100644 src/Internal/Testnet/Contract.purs create mode 100644 src/Internal/Testnet/DistributeFunds.purs create mode 100644 src/Internal/Testnet/Server.purs create mode 100644 src/Internal/Testnet/Types.purs create mode 100644 src/Internal/Testnet/Utils.purs create mode 100644 test/Testnet/DistributeFunds.purs diff --git a/flake.lock b/flake.lock index 214aabdba..f14427420 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1718896150, - "narHash": "sha256-tLldSak3ilawlFiAENbuTos0W+oZQGVc1sbkUfv1hko=", + "lastModified": 1719233847, + "narHash": "sha256-569bi4WS+xZek1JitRhDDUovdiGMRIXS65yicgg+i9I=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "81a484da765cc302d10956134f455f9493c80d14", + "rev": "faab2780b99436e9b4bc953cc7c653d524dfd71d", "type": "github" }, "original": { @@ -18,23 +18,6 @@ } }, "CHaP_10": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_11": { "flake": false, "locked": { "lastModified": 1713778255, @@ -51,7 +34,7 @@ "type": "github" } }, - "CHaP_12": { + "CHaP_11": { "flake": false, "locked": { "lastModified": 1703398734, @@ -68,7 +51,7 @@ "type": "github" } }, - "CHaP_13": { + "CHaP_12": { "flake": false, "locked": { "lastModified": 1703398734, @@ -85,7 +68,7 @@ "type": "github" } }, - "CHaP_14": { + "CHaP_13": { "flake": false, "locked": { "lastModified": 1714517469, @@ -102,7 +85,7 @@ "type": "github" } }, - "CHaP_15": { + "CHaP_14": { "flake": false, "locked": { "lastModified": 1713778255, @@ -119,7 +102,7 @@ "type": "github" } }, - "CHaP_16": { + "CHaP_15": { "flake": false, "locked": { "lastModified": 1703398734, @@ -136,7 +119,7 @@ "type": "github" } }, - "CHaP_17": { + "CHaP_16": { "flake": false, "locked": { "lastModified": 1703398734, @@ -153,7 +136,7 @@ "type": "github" } }, - "CHaP_18": { + "CHaP_17": { "flake": false, "locked": { "lastModified": 1713778255, @@ -170,7 +153,7 @@ "type": "github" } }, - "CHaP_19": { + "CHaP_18": { "flake": false, "locked": { "lastModified": 1703398734, @@ -187,41 +170,41 @@ "type": "github" } }, - "CHaP_2": { + "CHaP_19": { "flake": false, "locked": { - "lastModified": 1702906471, - "narHash": "sha256-br+hVo3R6nfmiSEPXcLKhIX4Kg5gcK2PjzjmvQsuUp8=", - "owner": "IntersectMBO", + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "48a359ac3f1d437ebaa91126b20e15a65201f004", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { - "owner": "IntersectMBO", + "owner": "input-output-hk", "ref": "repo", "repo": "cardano-haskell-packages", "type": "github" } }, - "CHaP_20": { + "CHaP_2": { "flake": false, "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", + "lastModified": 1702906471, + "narHash": "sha256-br+hVo3R6nfmiSEPXcLKhIX4Kg5gcK2PjzjmvQsuUp8=", + "owner": "IntersectMBO", "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "rev": "48a359ac3f1d437ebaa91126b20e15a65201f004", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "IntersectMBO", "ref": "repo", "repo": "cardano-haskell-packages", "type": "github" } }, - "CHaP_21": { + "CHaP_20": { "flake": false, "locked": { "lastModified": 1694601145, @@ -275,15 +258,15 @@ "CHaP_5": { "flake": false, "locked": { - "lastModified": 1715690409, - "narHash": "sha256-+PWaq7ngq5d601d+GBNggNuzT+jXSV7Dl2IrMNCY1KQ=", - "owner": "intersectmbo", + "lastModified": 1701964264, + "narHash": "sha256-sOs8bLbMvtIBQLywB3AM6wcpHr5JUmHJyDhtBmRkHBI=", + "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "0ce6797192cbbab051cd8fe5b7516b55273229f1", + "rev": "b3ccccc588891d765bd68cd2fc1110844a3bef35", "type": "github" }, "original": { - "owner": "intersectmbo", + "owner": "input-output-hk", "ref": "repo", "repo": "cardano-haskell-packages", "type": "github" @@ -292,11 +275,11 @@ "CHaP_6": { "flake": false, "locked": { - "lastModified": 1686070892, - "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", + "lastModified": 1714517469, + "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "596cf203a0a1ba252a083a79d384325000faeb49", + "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", "type": "github" }, "original": { @@ -309,11 +292,11 @@ "CHaP_7": { "flake": false, "locked": { - "lastModified": 1714517469, - "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", "type": "github" }, "original": { @@ -326,11 +309,11 @@ "CHaP_8": { "flake": false, "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -645,22 +628,6 @@ "type": "github" } }, - "HTTP_26": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, "HTTP_3": { "flake": false, "locked": { @@ -775,7 +742,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_46" + "nixpkgs": "nixpkgs_39" }, "locked": { "lastModified": 1641576265, @@ -793,8 +760,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_47" + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641404293, @@ -812,8 +779,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_49" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_42" }, "locked": { "lastModified": 1641404293, @@ -831,8 +798,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_78" + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_71" }, "locked": { "lastModified": 1641404293, @@ -850,7 +817,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_48" + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641576265, @@ -943,7 +910,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_77" + "nixpkgs": "nixpkgs_70" }, "locked": { "lastModified": 1641576265, @@ -1011,7 +978,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_72" + "nixpkgs": "nixpkgs_65" }, "locked": { "lastModified": 1646360966, @@ -1221,24 +1188,24 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_7", + "blank": "blank_6", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", "fenix": "fenix_7", - "hydra": "hydra_8", - "n2c": "n2c_7", - "nix": "nix_11", - "nixpkgs": "nixpkgs_66", + "hydra": "hydra_7", + "n2c": "n2c_6", + "nix": "nix_10", + "nixpkgs": "nixpkgs_59", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_9", + "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_6", + "ops-lib": "ops-lib_5", "ragenix": "ragenix_3", - "std": "std_7", + "std": "std_6", "terranix": "terranix_3", - "utils": "utils_19" + "utils": "utils_17" }, "locked": { "lastModified": 1661790449, @@ -1316,20 +1283,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_8", + "blank": "blank_7", "deploy": "deploy", "fenix": "fenix_5", - "hydra": "hydra_7", - "nix": "nix_8", - "nixpkgs": "nixpkgs_52", - "nixpkgs-unstable": "nixpkgs-unstable_8", + "hydra": "hydra_6", + "nix": "nix_7", + "nixpkgs": "nixpkgs_45", + "nixpkgs-unstable": "nixpkgs-unstable_7", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib_5", + "ops-lib": "ops-lib_4", "ragenix": "ragenix", "terranix": "terranix_2", - "utils": "utils_14", + "utils": "utils_12", "vulnix": "vulnix" }, "locked": { @@ -1350,20 +1317,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_9", + "blank": "blank_8", "deploy": "deploy_3", "fenix": "fenix_9", - "hydra": "hydra_9", - "nix": "nix_15", - "nixpkgs": "nixpkgs_81", - "nixpkgs-unstable": "nixpkgs-unstable_10", + "hydra": "hydra_8", + "nix": "nix_14", + "nixpkgs": "nixpkgs_74", + "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_7", + "ops-lib": "ops-lib_6", "ragenix": "ragenix_4", "terranix": "terranix_4", - "utils": "utils_28", + "utils": "utils_26", "vulnix": "vulnix_2" }, "locked": { @@ -1500,21 +1467,6 @@ "type": "github" } }, - "blank_9": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -1552,23 +1504,6 @@ } }, "blst_10": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_11": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1585,7 +1520,7 @@ "type": "github" } }, - "blst_12": { + "blst_11": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1602,7 +1537,7 @@ "type": "github" } }, - "blst_13": { + "blst_12": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1619,7 +1554,7 @@ "type": "github" } }, - "blst_14": { + "blst_13": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1636,7 +1571,7 @@ "type": "github" } }, - "blst_15": { + "blst_14": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1653,7 +1588,7 @@ "type": "github" } }, - "blst_16": { + "blst_15": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1670,7 +1605,7 @@ "type": "github" } }, - "blst_17": { + "blst_16": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1687,7 +1622,7 @@ "type": "github" } }, - "blst_18": { + "blst_17": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1704,7 +1639,7 @@ "type": "github" } }, - "blst_19": { + "blst_18": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1721,7 +1656,7 @@ "type": "github" } }, - "blst_2": { + "blst_19": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1738,7 +1673,7 @@ "type": "github" } }, - "blst_20": { + "blst_2": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1755,7 +1690,7 @@ "type": "github" } }, - "blst_21": { + "blst_20": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1772,7 +1707,7 @@ "type": "github" } }, - "blst_22": { + "blst_21": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1789,7 +1724,7 @@ "type": "github" } }, - "blst_23": { + "blst_22": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1860,51 +1795,51 @@ "blst_6": { "flake": false, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", "owner": "supranational", "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { "owner": "supranational", - "ref": "v0.3.11", "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, "blst_7": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", "owner": "supranational", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { "owner": "supranational", + "ref": "v0.3.11", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, "blst_8": { "flake": false, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", "owner": "supranational", "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { "owner": "supranational", - "ref": "v0.3.11", "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, @@ -2247,23 +2182,6 @@ "type": "github" } }, - "cabal-32_26": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" - } - }, "cabal-32_3": { "flake": false, "locked": { @@ -2403,11 +2321,11 @@ "cabal-34_10": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -2689,23 +2607,6 @@ "type": "github" } }, - "cabal-34_26": { - "flake": false, - "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, "cabal-34_3": { "flake": false, "locked": { @@ -2760,11 +2661,11 @@ "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -2845,11 +2746,11 @@ "cabal-36_10": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -3131,23 +3032,6 @@ "type": "github" } }, - "cabal-36_26": { - "flake": false, - "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, "cabal-36_3": { "flake": false, "locked": { @@ -3202,11 +3086,11 @@ "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -3286,7 +3170,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_60", + "nixpkgs": "nixpkgs_53", "ragenix": "ragenix_2" }, "locked": { @@ -3307,7 +3191,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_89", + "nixpkgs": "nixpkgs_82", "ragenix": "ragenix_5" }, "locked": { @@ -3413,50 +3297,20 @@ "type": "github" } }, - "cardano-automation_4": { - "inputs": { - "flake-utils": "flake-utils_22", - "haskellNix": [ - "cardano-node-plutip", - "haskellNix" - ], - "nixpkgs": [ - "cardano-node-plutip", - "nixpkgs" - ], - "tullia": [ - "cardano-node-plutip", - "tullia" - ] - }, - "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", - "type": "github" - } - }, "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1715909148, - "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", + "lastModified": 1699561895, + "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" } }, @@ -3666,25 +3520,6 @@ "type": "github" } }, - "cardano-mainnet-mirror_4": { - "inputs": { - "nixpkgs": "nixpkgs_39" - }, - "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", - "type": "github" - } - }, "cardano-nix": { "inputs": { "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", @@ -3745,16 +3580,16 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1715901350, - "narHash": "sha256-teLUo4cQ9H52EkmJ9uXOIuyI78DtrKWxflJm+BnBqlM=", - "owner": "IntersectMBO", + "lastModified": 1702024268, + "narHash": "sha256-DSvhXbm75rXMLgRCg/CLLeDFa6JbcCLTLJZoH/VY0MY=", + "owner": "input-output-hk", "repo": "cardano-node", - "rev": "235e34f6df9a1490190f6247b610b4e114ca3b96", + "rev": "30b6e447c7e4586f43e30a68fe47c8481b0ba205", "type": "github" }, "original": { - "owner": "IntersectMBO", - "ref": "8.11.0-sancho", + "owner": "input-output-hk", + "ref": "8.7.2", "repo": "cardano-node", "type": "github" } @@ -3851,52 +3686,6 @@ "type": "github" } }, - "cardano-node-plutip": { - "inputs": { - "CHaP": "CHaP_6", - "cardano-automation": "cardano-automation_4", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_4", - "customConfig": "customConfig_4", - "em": "em_4", - "empty-flake": "empty-flake_5", - "flake-compat": "flake-compat_18", - "hackageNix": "hackageNix_5", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "cardano-node-plutip", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nix2container": "nix2container_7", - "nixpkgs": [ - "cardano-node-plutip", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_4", - "std": [ - "cardano-node-plutip", - "tullia", - "std" - ], - "tullia": "tullia_4", - "utils": "utils_9" - }, - "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "IntersectMBO", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", - "type": "github" - }, - "original": { - "owner": "IntersectMBO", - "ref": "8.1.1", - "repo": "cardano-node", - "type": "github" - } - }, "cardano-node-service": { "flake": false, "locked": { @@ -4262,22 +4051,6 @@ "type": "github" } }, - "cardano-shell_26": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, "cardano-shell_3": { "flake": false, "locked": { @@ -4392,19 +4165,19 @@ }, "cardano-wallet": { "inputs": { - "customConfig": "customConfig_5", + "customConfig": "customConfig_4", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_25", - "flake-utils": "flake-utils_46", - "haskellNix": "haskellNix_6", + "flake-compat": "flake-compat_22", + "flake-utils": "flake-utils_41", + "haskellNix": "haskellNix_5", "hostNixpkgs": [ "db-sync", "cardano-world", "cardano-wallet", "nixpkgs" ], - "iohkNix": "iohkNix_6", + "iohkNix": "iohkNix_5", "nixpkgs": [ "db-sync", "cardano-world", @@ -4459,13 +4232,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_26", + "flake-compat": "flake-compat_23", "hackage": "hackage_4", "haskell-nix": "haskell-nix_3", "iohk-nix": "iohk-nix_2", - "n2c": "n2c_8", + "n2c": "n2c_7", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_100", + "nixpkgs": "nixpkgs_93", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -4473,8 +4246,8 @@ "nixpkgs-unstable" ], "ogmios": "ogmios", - "std": "std_8", - "tullia": "tullia_5" + "std": "std_7", + "tullia": "tullia_4" }, "locked": { "lastModified": 1662508244, @@ -4494,16 +4267,16 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_14", + "devshell": "devshell_13", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix_2", "inclusive": "inclusive_9", - "nix": "nix_14", + "nix": "nix_13", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_76", + "nixpkgs": "nixpkgs_69", "poetry2nix": "poetry2nix", - "utils": "utils_23" + "utils": "utils_21" }, "locked": { "lastModified": 1647522107, @@ -4756,21 +4529,6 @@ } }, "customConfig_5": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "customConfig_6": { "locked": { "lastModified": 1, "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", @@ -4785,7 +4543,7 @@ "data-merge": { "inputs": { "nixlib": "nixlib", - "yants": "yants_7" + "yants": "yants_6" }, "locked": { "lastModified": 1648237091, @@ -4822,7 +4580,7 @@ "data-merge_3": { "inputs": { "nixlib": "nixlib_3", - "yants": "yants_9" + "yants": "yants_8" }, "locked": { "lastModified": 1655854240, @@ -4841,16 +4599,16 @@ "db-sync": { "inputs": { "cardano-world": "cardano-world", - "customConfig": "customConfig_6", - "flake-compat": "flake-compat_27", - "haskellNix": "haskellNix_7", - "iohkNix": "iohkNix_7", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_24", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "utils": "utils_30" + "utils": "utils_28" }, "locked": { "lastModified": 1670313550, @@ -4870,7 +4628,7 @@ "deploy": { "inputs": { "fenix": "fenix_4", - "flake-compat": "flake-compat_21", + "flake-compat": "flake-compat_18", "nixpkgs": [ "db-sync", "cardano-world", @@ -4881,7 +4639,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_10" + "utils": "utils_8" }, "locked": { "lastModified": 1638318651, @@ -4900,7 +4658,7 @@ "deploy_2": { "inputs": { "fenix": "fenix_6", - "flake-compat": "flake-compat_22", + "flake-compat": "flake-compat_19", "nixpkgs": [ "db-sync", "cardano-world", @@ -4909,7 +4667,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_16" + "utils": "utils_14" }, "locked": { "lastModified": 1638318651, @@ -4928,7 +4686,7 @@ "deploy_3": { "inputs": { "fenix": "fenix_8", - "flake-compat": "flake-compat_23", + "flake-compat": "flake-compat_20", "nixpkgs": [ "db-sync", "cardano-world", @@ -4938,7 +4696,7 @@ "fenix", "nixpkgs" ], - "utils": "utils_24" + "utils": "utils_22" }, "locked": { "lastModified": 1638318651, @@ -5002,21 +4760,6 @@ } }, "devshell_10": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_11": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -5031,7 +4774,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -5046,7 +4789,7 @@ "type": "github" } }, - "devshell_13": { + "devshell_12": { "inputs": { "flake-utils": [ "db-sync", @@ -5077,10 +4820,10 @@ "type": "github" } }, - "devshell_14": { + "devshell_13": { "inputs": { - "flake-utils": "flake-utils_36", - "nixpkgs": "nixpkgs_73" + "flake-utils": "flake-utils_31", + "nixpkgs": "nixpkgs_66" }, "locked": { "lastModified": 1644227066, @@ -5096,7 +4839,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_14": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -5111,7 +4854,7 @@ "type": "github" } }, - "devshell_16": { + "devshell_15": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -5126,7 +4869,7 @@ "type": "github" } }, - "devshell_17": { + "devshell_16": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -5141,7 +4884,7 @@ "type": "github" } }, - "devshell_18": { + "devshell_17": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -5156,7 +4899,7 @@ "type": "github" } }, - "devshell_19": { + "devshell_18": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -5171,6 +4914,21 @@ "type": "github" } }, + "devshell_19": { + "locked": { + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "devshell_2": { "inputs": { "flake-utils": [ @@ -5205,21 +4963,6 @@ } }, "devshell_20": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_21": { "inputs": { "flake-utils": [ "db-sync", @@ -5248,9 +4991,9 @@ "type": "github" } }, - "devshell_22": { + "devshell_21": { "inputs": { - "flake-utils": "flake-utils_52", + "flake-utils": "flake-utils_47", "nixpkgs": [ "db-sync", "cardano-world", @@ -5374,26 +5117,12 @@ } }, "devshell_7": { - "inputs": { - "flake-utils": [ - "cardano-node-plutip", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] - }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", "owner": "numtide", "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { @@ -5404,11 +5133,11 @@ }, "devshell_8": { "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", "owner": "numtide", "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { @@ -5419,11 +5148,11 @@ }, "devshell_9": { "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", "owner": "numtide", "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { @@ -5599,35 +5328,6 @@ } }, "dmerge_6": { - "inputs": { - "nixlib": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-node-plutip", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "data-merge", - "type": "github" - } - }, - "dmerge_7": { "inputs": { "nixlib": [ "db-sync", @@ -5658,7 +5358,7 @@ "type": "github" } }, - "dmerge_8": { + "dmerge_7": { "inputs": { "nixlib": [ "db-sync", @@ -5689,9 +5389,9 @@ }, "driver": { "inputs": { - "devshell": "devshell_15", + "devshell": "devshell_14", "inclusive": "inclusive_7", - "nix": "nix_13", + "nix": "nix_12", "nixpkgs": [ "db-sync", "cardano-world", @@ -5699,7 +5399,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_20" + "utils": "utils_18" }, "locked": { "lastModified": 1644418487, @@ -5733,7 +5433,7 @@ }, "easy-purescript-nix_10": { "inputs": { - "flake-utils": "flake-utils_84" + "flake-utils": "flake-utils_79" }, "locked": { "lastModified": 1710161569, @@ -5751,7 +5451,7 @@ }, "easy-purescript-nix_11": { "inputs": { - "flake-utils": "flake-utils_86" + "flake-utils": "flake-utils_81" }, "locked": { "lastModified": 1710161569, @@ -5769,7 +5469,7 @@ }, "easy-purescript-nix_12": { "inputs": { - "flake-utils": "flake-utils_88" + "flake-utils": "flake-utils_83" }, "locked": { "lastModified": 1696584097, @@ -5787,7 +5487,7 @@ }, "easy-purescript-nix_13": { "inputs": { - "flake-utils": "flake-utils_92" + "flake-utils": "flake-utils_87" }, "locked": { "lastModified": 1696584097, @@ -5805,7 +5505,7 @@ }, "easy-purescript-nix_14": { "inputs": { - "flake-utils": "flake-utils_98" + "flake-utils": "flake-utils_93" }, "locked": { "lastModified": 1710161569, @@ -5823,7 +5523,7 @@ }, "easy-purescript-nix_15": { "inputs": { - "flake-utils": "flake-utils_100" + "flake-utils": "flake-utils_95" }, "locked": { "lastModified": 1696584097, @@ -5841,7 +5541,7 @@ }, "easy-purescript-nix_16": { "inputs": { - "flake-utils": "flake-utils_104" + "flake-utils": "flake-utils_99" }, "locked": { "lastModified": 1696584097, @@ -5859,7 +5559,7 @@ }, "easy-purescript-nix_2": { "inputs": { - "flake-utils": "flake-utils_54" + "flake-utils": "flake-utils_49" }, "locked": { "lastModified": 1710161569, @@ -5877,7 +5577,7 @@ }, "easy-purescript-nix_3": { "inputs": { - "flake-utils": "flake-utils_56" + "flake-utils": "flake-utils_51" }, "locked": { "lastModified": 1710161569, @@ -5895,7 +5595,7 @@ }, "easy-purescript-nix_4": { "inputs": { - "flake-utils": "flake-utils_58" + "flake-utils": "flake-utils_53" }, "locked": { "lastModified": 1710161569, @@ -5913,7 +5613,7 @@ }, "easy-purescript-nix_5": { "inputs": { - "flake-utils": "flake-utils_60" + "flake-utils": "flake-utils_55" }, "locked": { "lastModified": 1696584097, @@ -5931,7 +5631,7 @@ }, "easy-purescript-nix_6": { "inputs": { - "flake-utils": "flake-utils_64" + "flake-utils": "flake-utils_59" }, "locked": { "lastModified": 1696584097, @@ -5949,7 +5649,7 @@ }, "easy-purescript-nix_7": { "inputs": { - "flake-utils": "flake-utils_70" + "flake-utils": "flake-utils_65" }, "locked": { "lastModified": 1710161569, @@ -5967,7 +5667,7 @@ }, "easy-purescript-nix_8": { "inputs": { - "flake-utils": "flake-utils_72" + "flake-utils": "flake-utils_67" }, "locked": { "lastModified": 1696584097, @@ -5985,7 +5685,7 @@ }, "easy-purescript-nix_9": { "inputs": { - "flake-utils": "flake-utils_76" + "flake-utils": "flake-utils_71" }, "locked": { "lastModified": 1696584097, @@ -6049,27 +5749,11 @@ "type": "github" } }, - "em_4": { - "flake": false, - "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", - "type": "github" - }, - "original": { - "owner": "deepfire", - "repo": "em", - "type": "github" - } - }, "ema": { "inputs": { - "flake-compat": "flake-compat_24", - "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_91", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_84", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -6108,7 +5792,7 @@ "ema": "ema_2", "flake-parts": "flake-parts_6", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_94", + "nixpkgs": "nixpkgs_87", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -6185,21 +5869,6 @@ "type": "github" } }, - "empty-flake_5": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, "fenix": { "inputs": { "nixpkgs": [ @@ -6266,7 +5935,7 @@ }, "fenix_4": { "inputs": { - "nixpkgs": "nixpkgs_50", + "nixpkgs": "nixpkgs_43", "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { @@ -6311,7 +5980,7 @@ }, "fenix_6": { "inputs": { - "nixpkgs": "nixpkgs_63", + "nixpkgs": "nixpkgs_56", "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { @@ -6354,7 +6023,7 @@ }, "fenix_8": { "inputs": { - "nixpkgs": "nixpkgs_79", + "nixpkgs": "nixpkgs_72", "rust-analyzer-src": "rust-analyzer-src_8" }, "locked": { @@ -6547,16 +6216,15 @@ "flake-compat_18": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6564,16 +6232,15 @@ "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6598,11 +6265,11 @@ "flake-compat_20": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -6614,11 +6281,11 @@ "flake-compat_21": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { @@ -6630,15 +6297,15 @@ "flake-compat_22": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", "repo": "flake-compat", "type": "github" } @@ -6646,11 +6313,11 @@ "flake-compat_23": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "owner": "edolstra", "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { @@ -6662,15 +6329,16 @@ "flake-compat_24": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -6678,15 +6346,15 @@ "flake-compat_25": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6694,15 +6362,16 @@ "flake-compat_26": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6710,16 +6379,16 @@ "flake-compat_27": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6727,15 +6396,16 @@ "flake-compat_28": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6793,16 +6463,15 @@ "flake-compat_31": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6827,16 +6496,15 @@ "flake-compat_33": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6844,11 +6512,11 @@ "flake-compat_34": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -6877,15 +6545,16 @@ "flake-compat_36": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } @@ -6893,11 +6562,11 @@ "flake-compat_37": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -6926,16 +6595,15 @@ "flake-compat_39": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } @@ -6958,55 +6626,6 @@ } }, "flake-compat_40": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_41": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_42": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_43": { "flake": false, "locked": { "lastModified": 1696426674, @@ -7022,7 +6641,7 @@ "type": "github" } }, - "flake-compat_44": { + "flake-compat_41": { "flake": false, "locked": { "lastModified": 1696426674, @@ -7038,7 +6657,7 @@ "type": "github" } }, - "flake-compat_45": { + "flake-compat_42": { "flake": false, "locked": { "lastModified": 1672831974, @@ -7055,7 +6674,7 @@ "type": "github" } }, - "flake-compat_46": { + "flake-compat_43": { "flake": false, "locked": { "lastModified": 1672831974, @@ -7072,7 +6691,7 @@ "type": "github" } }, - "flake-compat_47": { + "flake-compat_44": { "flake": false, "locked": { "lastModified": 1672831974, @@ -7089,7 +6708,7 @@ "type": "github" } }, - "flake-compat_48": { + "flake-compat_45": { "flake": false, "locked": { "lastModified": 1673956053, @@ -7105,7 +6724,7 @@ "type": "github" } }, - "flake-compat_49": { + "flake-compat_46": { "flake": false, "locked": { "lastModified": 1672831974, @@ -7122,31 +6741,30 @@ "type": "github" } }, - "flake-compat_5": { + "flake-compat_47": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, - "flake-compat_50": { + "flake-compat_48": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -7155,23 +6773,24 @@ "type": "github" } }, - "flake-compat_51": { + "flake-compat_49": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", "repo": "flake-compat", "type": "github" } }, - "flake-compat_52": { + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1672831974, @@ -7188,7 +6807,7 @@ "type": "github" } }, - "flake-compat_53": { + "flake-compat_50": { "flake": false, "locked": { "lastModified": 1672831974, @@ -7205,7 +6824,7 @@ "type": "github" } }, - "flake-compat_54": { + "flake-compat_51": { "flake": false, "locked": { "lastModified": 1673956053, @@ -7221,7 +6840,7 @@ "type": "github" } }, - "flake-compat_55": { + "flake-compat_52": { "flake": false, "locked": { "lastModified": 1672831974, @@ -7238,7 +6857,7 @@ "type": "github" } }, - "flake-compat_56": { + "flake-compat_53": { "flake": false, "locked": { "lastModified": 1673956053, @@ -7254,7 +6873,7 @@ "type": "github" } }, - "flake-compat_57": { + "flake-compat_54": { "flake": false, "locked": { "lastModified": 1696426674, @@ -7270,7 +6889,7 @@ "type": "github" } }, - "flake-compat_58": { + "flake-compat_55": { "flake": false, "locked": { "lastModified": 1696426674, @@ -7286,7 +6905,7 @@ "type": "github" } }, - "flake-compat_59": { + "flake-compat_56": { "flake": false, "locked": { "lastModified": 1696426674, @@ -7302,35 +6921,35 @@ "type": "github" } }, - "flake-compat_6": { + "flake-compat_57": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, - "flake-compat_60": { + "flake-compat_6": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } @@ -7476,7 +7095,7 @@ }, "flake-parts_6": { "inputs": { - "nixpkgs": "nixpkgs_93" + "nixpkgs": "nixpkgs_86" }, "locked": { "lastModified": 1655570068, @@ -7558,96 +7177,6 @@ } }, "flake-utils_100": { - "inputs": { - "systems": "systems_51" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_101": { - "inputs": { - "systems": "systems_52" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_102": { - "inputs": { - "systems": "systems_53" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_103": { - "inputs": { - "systems": "systems_54" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_104": { - "inputs": { - "systems": "systems_55" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_105": { "inputs": { "systems": "systems_56" }, @@ -7665,7 +7194,7 @@ "type": "github" } }, - "flake-utils_106": { + "flake-utils_101": { "inputs": { "systems": "systems_57" }, @@ -7683,7 +7212,7 @@ "type": "github" } }, - "flake-utils_107": { + "flake-utils_102": { "inputs": { "systems": "systems_58" }, @@ -7701,7 +7230,7 @@ "type": "github" } }, - "flake-utils_108": { + "flake-utils_103": { "inputs": { "systems": "systems_59" }, @@ -7719,7 +7248,7 @@ "type": "github" } }, - "flake-utils_109": { + "flake-utils_104": { "inputs": { "systems": "systems_60" }, @@ -7737,13 +7266,16 @@ "type": "github" } }, - "flake-utils_11": { + "flake-utils_105": { + "inputs": { + "systems": "systems_61" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -7752,9 +7284,9 @@ "type": "github" } }, - "flake-utils_110": { + "flake-utils_106": { "inputs": { - "systems": "systems_61" + "systems": "systems_62" }, "locked": { "lastModified": 1710146030, @@ -7770,9 +7302,9 @@ "type": "github" } }, - "flake-utils_111": { + "flake-utils_107": { "inputs": { - "systems": "systems_62" + "systems": "systems_63" }, "locked": { "lastModified": 1710146030, @@ -7788,9 +7320,9 @@ "type": "github" } }, - "flake-utils_112": { + "flake-utils_108": { "inputs": { - "systems": "systems_63" + "systems": "systems_64" }, "locked": { "lastModified": 1710146030, @@ -7806,16 +7338,13 @@ "type": "github" } }, - "flake-utils_113": { - "inputs": { - "systems": "systems_64" - }, + "flake-utils_11": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -7995,11 +7524,11 @@ }, "flake-utils_22": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -8010,27 +7539,26 @@ }, "flake-utils_23": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "flake-utils_24": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -8041,11 +7569,11 @@ }, "flake-utils_25": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -8056,11 +7584,11 @@ }, "flake-utils_26": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -8101,11 +7629,11 @@ }, "flake-utils_29": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -8146,11 +7674,11 @@ }, "flake-utils_31": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -8161,11 +7689,11 @@ }, "flake-utils_32": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -8176,11 +7704,11 @@ }, "flake-utils_33": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { @@ -8191,11 +7719,11 @@ }, "flake-utils_34": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -8206,11 +7734,11 @@ }, "flake-utils_35": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -8221,11 +7749,11 @@ }, "flake-utils_36": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -8251,11 +7779,11 @@ }, "flake-utils_38": { "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -8266,11 +7794,11 @@ }, "flake-utils_39": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { @@ -8296,26 +7824,27 @@ }, "flake-utils_40": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { "owner": "numtide", + "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_41": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -8341,11 +7870,11 @@ }, "flake-utils_43": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -8356,11 +7885,11 @@ }, "flake-utils_44": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -8371,27 +7900,26 @@ }, "flake-utils_45": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { "owner": "numtide", - "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, "flake-utils_46": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -8402,11 +7930,11 @@ }, "flake-utils_47": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -8431,12 +7959,15 @@ } }, "flake-utils_49": { + "inputs": { + "systems": "systems_5" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8462,12 +7993,15 @@ } }, "flake-utils_50": { + "inputs": { + "systems": "systems_6" + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8477,12 +8011,15 @@ } }, "flake-utils_51": { + "inputs": { + "systems": "systems_7" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8492,12 +8029,15 @@ } }, "flake-utils_52": { + "inputs": { + "systems": "systems_8" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8507,12 +8047,15 @@ } }, "flake-utils_53": { + "inputs": { + "systems": "systems_9" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8523,14 +8066,14 @@ }, "flake-utils_54": { "inputs": { - "systems": "systems_5" + "systems": "systems_10" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8541,14 +8084,14 @@ }, "flake-utils_55": { "inputs": { - "systems": "systems_6" + "systems": "systems_11" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8559,14 +8102,14 @@ }, "flake-utils_56": { "inputs": { - "systems": "systems_7" + "systems": "systems_12" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8577,14 +8120,14 @@ }, "flake-utils_57": { "inputs": { - "systems": "systems_8" + "systems": "systems_13" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8595,7 +8138,7 @@ }, "flake-utils_58": { "inputs": { - "systems": "systems_9" + "systems": "systems_14" }, "locked": { "lastModified": 1685518550, @@ -8613,14 +8156,14 @@ }, "flake-utils_59": { "inputs": { - "systems": "systems_10" + "systems": "systems_15" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8646,14 +8189,14 @@ }, "flake-utils_60": { "inputs": { - "systems": "systems_11" + "systems": "systems_16" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8664,14 +8207,14 @@ }, "flake-utils_61": { "inputs": { - "systems": "systems_12" + "systems": "systems_17" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8682,14 +8225,14 @@ }, "flake-utils_62": { "inputs": { - "systems": "systems_13" + "systems": "systems_18" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8700,14 +8243,14 @@ }, "flake-utils_63": { "inputs": { - "systems": "systems_14" + "systems": "systems_19" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8718,14 +8261,14 @@ }, "flake-utils_64": { "inputs": { - "systems": "systems_15" + "systems": "systems_20" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8736,14 +8279,14 @@ }, "flake-utils_65": { "inputs": { - "systems": "systems_16" + "systems": "systems_21" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8754,14 +8297,14 @@ }, "flake-utils_66": { "inputs": { - "systems": "systems_17" + "systems": "systems_22" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8772,7 +8315,7 @@ }, "flake-utils_67": { "inputs": { - "systems": "systems_18" + "systems": "systems_23" }, "locked": { "lastModified": 1685518550, @@ -8790,14 +8333,14 @@ }, "flake-utils_68": { "inputs": { - "systems": "systems_19" + "systems": "systems_24" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8808,14 +8351,14 @@ }, "flake-utils_69": { "inputs": { - "systems": "systems_20" + "systems": "systems_25" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8841,7 +8384,7 @@ }, "flake-utils_70": { "inputs": { - "systems": "systems_21" + "systems": "systems_26" }, "locked": { "lastModified": 1685518550, @@ -8859,14 +8402,14 @@ }, "flake-utils_71": { "inputs": { - "systems": "systems_22" + "systems": "systems_27" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8877,14 +8420,14 @@ }, "flake-utils_72": { "inputs": { - "systems": "systems_23" + "systems": "systems_28" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8895,14 +8438,14 @@ }, "flake-utils_73": { "inputs": { - "systems": "systems_24" + "systems": "systems_29" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -8913,14 +8456,14 @@ }, "flake-utils_74": { "inputs": { - "systems": "systems_25" + "systems": "systems_30" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8931,14 +8474,14 @@ }, "flake-utils_75": { "inputs": { - "systems": "systems_26" + "systems": "systems_31" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8949,14 +8492,14 @@ }, "flake-utils_76": { "inputs": { - "systems": "systems_27" + "systems": "systems_32" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8967,14 +8510,14 @@ }, "flake-utils_77": { "inputs": { - "systems": "systems_28" + "systems": "systems_33" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8985,14 +8528,14 @@ }, "flake-utils_78": { "inputs": { - "systems": "systems_29" + "systems": "systems_34" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -9003,7 +8546,7 @@ }, "flake-utils_79": { "inputs": { - "systems": "systems_30" + "systems": "systems_35" }, "locked": { "lastModified": 1685518550, @@ -9036,7 +8579,7 @@ }, "flake-utils_80": { "inputs": { - "systems": "systems_31" + "systems": "systems_36" }, "locked": { "lastModified": 1710146030, @@ -9054,14 +8597,14 @@ }, "flake-utils_81": { "inputs": { - "systems": "systems_32" + "systems": "systems_37" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -9072,7 +8615,7 @@ }, "flake-utils_82": { "inputs": { - "systems": "systems_33" + "systems": "systems_38" }, "locked": { "lastModified": 1710146030, @@ -9090,14 +8633,14 @@ }, "flake-utils_83": { "inputs": { - "systems": "systems_34" + "systems": "systems_39" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -9108,14 +8651,14 @@ }, "flake-utils_84": { "inputs": { - "systems": "systems_35" + "systems": "systems_40" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -9126,14 +8669,14 @@ }, "flake-utils_85": { "inputs": { - "systems": "systems_36" + "systems": "systems_41" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -9144,7 +8687,7 @@ }, "flake-utils_86": { "inputs": { - "systems": "systems_37" + "systems": "systems_42" }, "locked": { "lastModified": 1685518550, @@ -9162,14 +8705,14 @@ }, "flake-utils_87": { "inputs": { - "systems": "systems_38" + "systems": "systems_43" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -9180,14 +8723,14 @@ }, "flake-utils_88": { "inputs": { - "systems": "systems_39" + "systems": "systems_44" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -9198,14 +8741,14 @@ }, "flake-utils_89": { "inputs": { - "systems": "systems_40" + "systems": "systems_45" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -9231,14 +8774,14 @@ }, "flake-utils_90": { "inputs": { - "systems": "systems_41" + "systems": "systems_46" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -9249,14 +8792,14 @@ }, "flake-utils_91": { "inputs": { - "systems": "systems_42" + "systems": "systems_47" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -9267,14 +8810,14 @@ }, "flake-utils_92": { "inputs": { - "systems": "systems_43" + "systems": "systems_48" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -9285,14 +8828,14 @@ }, "flake-utils_93": { "inputs": { - "systems": "systems_44" + "systems": "systems_49" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -9303,14 +8846,14 @@ }, "flake-utils_94": { "inputs": { - "systems": "systems_45" + "systems": "systems_50" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -9321,7 +8864,7 @@ }, "flake-utils_95": { "inputs": { - "systems": "systems_46" + "systems": "systems_51" }, "locked": { "lastModified": 1685518550, @@ -9339,14 +8882,14 @@ }, "flake-utils_96": { "inputs": { - "systems": "systems_47" + "systems": "systems_52" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -9357,14 +8900,14 @@ }, "flake-utils_97": { "inputs": { - "systems": "systems_48" + "systems": "systems_53" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -9375,7 +8918,7 @@ }, "flake-utils_98": { "inputs": { - "systems": "systems_49" + "systems": "systems_54" }, "locked": { "lastModified": 1685518550, @@ -9393,14 +8936,14 @@ }, "flake-utils_99": { "inputs": { - "systems": "systems_50" + "systems": "systems_55" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -9427,7 +8970,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_16", + "devshell": "devshell_15", "inclusive": "inclusive_8", "nixpkgs": [ "db-sync", @@ -9436,7 +8979,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_21" + "utils": "utils_19" }, "locked": { "lastModified": 1642008295, @@ -9758,23 +9301,6 @@ "type": "github" } }, - "ghc-8.6.5-iohk_26": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, "ghc-8.6.5-iohk_3": { "flake": false, "locked": { @@ -9897,11 +9423,11 @@ "ghc910X": { "flake": false, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "lastModified": 1714520650, + "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, + "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", + "revCount": 62663, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -9916,11 +9442,11 @@ "ghc910X_2": { "flake": false, "locked": { - "lastModified": 1714520650, - "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", "ref": "ghc-9.10", - "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", - "revCount": 62663, + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -9954,11 +9480,11 @@ "ghc910X_4": { "flake": false, "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -9992,11 +9518,11 @@ "ghc910X_6": { "flake": false, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -10011,11 +9537,11 @@ "ghc910X_7": { "flake": false, "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -10046,44 +9572,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_9": { - "flake": false, - "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, "ghc911": { - "flake": false, - "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_2": { "flake": false, "locked": { "lastModified": 1714817013, @@ -10101,7 +9590,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_3": { + "ghc911_2": { "flake": false, "locked": { "lastModified": 1713898958, @@ -10119,7 +9608,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_4": { + "ghc911_3": { "flake": false, "locked": { "lastModified": 1713898958, @@ -10137,7 +9626,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_5": { + "ghc911_4": { "flake": false, "locked": { "lastModified": 1711538967, @@ -10155,7 +9644,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_6": { + "ghc911_5": { "flake": false, "locked": { "lastModified": 1711538967, @@ -10173,7 +9662,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_7": { + "ghc911_6": { "flake": false, "locked": { "lastModified": 1713898958, @@ -10191,7 +9680,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_8": { + "ghc911_7": { "flake": false, "locked": { "lastModified": 1711538967, @@ -10209,7 +9698,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_9": { + "ghc911_8": { "flake": false, "locked": { "lastModified": 1711538967, @@ -10265,6 +9754,25 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, + "ghc98X_11": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, "ghc98X_2": { "flake": false, "locked": { @@ -10453,6 +9961,24 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, + "ghc99_11": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, "ghc99_2": { "flake": false, "locked": { @@ -10474,11 +10000,11 @@ "ghc99_3": { "flake": false, "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -11089,25 +10615,6 @@ "type": "github" } }, - "gomod2nix_4": { - "inputs": { - "nixpkgs": "nixpkgs_42", - "utils": "utils_8" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, "hackage": { "flake": false, "locked": { @@ -11127,11 +10634,11 @@ "hackage-nix": { "flake": false, "locked": { - "lastModified": 1718843827, - "narHash": "sha256-FrzH96+EaI7O6ZfCi7Ifya3KS82kLTb4cmqmM+eRhbE=", + "lastModified": 1719189574, + "narHash": "sha256-/Dyn3dVaQpj+WDg84x9sWdqBfrE9z6BYx+JYohmiy1M=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "18a2a34abd64aad840134c2fa04e57e0826848b8", + "rev": "1df2ba71243b5ccb7ddcabd3ca6263ebd326b6a2", "type": "github" }, "original": { @@ -11191,27 +10698,11 @@ "hackageNix_4": { "flake": false, "locked": { - "lastModified": 1711412520, - "narHash": "sha256-48Aw1X7IuXZR6Wi2WOlvj9HpoUHty/JW1MqAehgnoHo=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc84d1170ccc83d50db7b71a6edd090b2cef7657", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_5": { - "flake": false, - "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", "type": "github" }, "original": { @@ -11592,16 +11083,82 @@ } }, "haskell-nix_10": { + "inputs": { + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cabal-36": "cabal-36_16", + "cardano-shell": "cardano-shell_16", + "flake-compat": "flake-compat_35", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "ghc910X": "ghc910X_5", + "ghc911": "ghc911_5", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_12", + "hls-2.0": "hls-2.0_11", + "hls-2.2": "hls-2.2_10", + "hls-2.3": "hls-2.3_10", + "hls-2.4": "hls-2.4_10", + "hls-2.5": "hls-2.5_5", + "hls-2.6": "hls-2.6_5", + "hls-2.7": "hls-2.7_5", + "hpc-coveralls": "hpc-coveralls_16", + "hydra": "hydra_18", + "iserv-proxy": "iserv-proxy_12", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-2205": "nixpkgs-2205_13", + "nixpkgs-2211": "nixpkgs-2211_12", + "nixpkgs-2305": "nixpkgs-2305_11", + "nixpkgs-2311": "nixpkgs-2311_7", + "nixpkgs-unstable": "nixpkgs-unstable_19", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_15" + }, + "locked": { + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_11": { "inputs": { "HTTP": "HTTP_17", "cabal-32": "cabal-32_17", "cabal-34": "cabal-34_17", "cabal-36": "cabal-36_17", "cardano-shell": "cardano-shell_17", - "flake-compat": "flake-compat_38", + "flake-compat": "flake-compat_36", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", - "ghc910X": "ghc910X_6", - "ghc911": "ghc911_6", + "ghc98X": "ghc98X_6", + "ghc99": "ghc99_6", "hackage": [ "kupo-nixos", "iogx", @@ -11609,16 +11166,15 @@ "iogx", "iogx-template-vanilla", "iogx", + "iogx-template-haskell", + "iogx", "hackage" ], "hls-1.10": "hls-1.10_13", - "hls-2.0": "hls-2.0_11", - "hls-2.2": "hls-2.2_10", - "hls-2.3": "hls-2.3_10", - "hls-2.4": "hls-2.4_10", - "hls-2.5": "hls-2.5_6", - "hls-2.6": "hls-2.6_6", - "hls-2.7": "hls-2.7_5", + "hls-2.0": "hls-2.0_12", + "hls-2.2": "hls-2.2_11", + "hls-2.3": "hls-2.3_11", + "hls-2.4": "hls-2.4_11", "hpc-coveralls": "hpc-coveralls_17", "hydra": "hydra_19", "iserv-proxy": "iserv-proxy_13", @@ -11629,6 +11185,8 @@ "iogx", "iogx-template-vanilla", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "nixpkgs-unstable" ], @@ -11637,18 +11195,18 @@ "nixpkgs-2111": "nixpkgs-2111_17", "nixpkgs-2205": "nixpkgs-2205_14", "nixpkgs-2211": "nixpkgs-2211_13", - "nixpkgs-2305": "nixpkgs-2305_11", + "nixpkgs-2305": "nixpkgs-2305_12", "nixpkgs-2311": "nixpkgs-2311_8", "nixpkgs-unstable": "nixpkgs-unstable_20", "old-ghc-nix": "old-ghc-nix_17", "stackage": "stackage_16" }, "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { @@ -11657,17 +11215,17 @@ "type": "github" } }, - "haskell-nix_11": { + "haskell-nix_12": { "inputs": { "HTTP": "HTTP_18", "cabal-32": "cabal-32_18", "cabal-34": "cabal-34_18", "cabal-36": "cabal-36_18", "cardano-shell": "cardano-shell_18", - "flake-compat": "flake-compat_39", + "flake-compat": "flake-compat_38", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", - "ghc98X": "ghc98X_5", - "ghc99": "ghc99_5", + "ghc98X": "ghc98X_7", + "ghc99": "ghc99_7", "hackage": [ "kupo-nixos", "iogx", @@ -11675,15 +11233,15 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "hackage" ], "hls-1.10": "hls-1.10_14", - "hls-2.0": "hls-2.0_12", - "hls-2.2": "hls-2.2_11", - "hls-2.3": "hls-2.3_11", - "hls-2.4": "hls-2.4_11", + "hls-2.0": "hls-2.0_13", + "hls-2.2": "hls-2.2_12", + "hls-2.3": "hls-2.3_12", + "hls-2.4": "hls-2.4_12", "hpc-coveralls": "hpc-coveralls_18", "hydra": "hydra_20", "iserv-proxy": "iserv-proxy_14", @@ -11694,7 +11252,7 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "haskell-nix", "nixpkgs-unstable" @@ -11704,7 +11262,7 @@ "nixpkgs-2111": "nixpkgs-2111_18", "nixpkgs-2205": "nixpkgs-2205_15", "nixpkgs-2211": "nixpkgs-2211_14", - "nixpkgs-2305": "nixpkgs-2305_12", + "nixpkgs-2305": "nixpkgs-2305_13", "nixpkgs-2311": "nixpkgs-2311_9", "nixpkgs-unstable": "nixpkgs-unstable_21", "old-ghc-nix": "old-ghc-nix_18", @@ -11724,43 +11282,38 @@ "type": "github" } }, - "haskell-nix_12": { + "haskell-nix_13": { "inputs": { "HTTP": "HTTP_19", "cabal-32": "cabal-32_19", "cabal-34": "cabal-34_19", "cabal-36": "cabal-36_19", "cardano-shell": "cardano-shell_19", - "flake-compat": "flake-compat_41", + "flake-compat": "flake-compat_42", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", - "ghc98X": "ghc98X_6", - "ghc99": "ghc99_6", + "ghc910X": "ghc910X_6", + "ghc911": "ghc911_6", "hackage": [ "kupo-nixos", "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", "iogx-template-vanilla", "iogx", "hackage" ], "hls-1.10": "hls-1.10_15", - "hls-2.0": "hls-2.0_13", - "hls-2.2": "hls-2.2_12", - "hls-2.3": "hls-2.3_12", - "hls-2.4": "hls-2.4_12", + "hls-2.0": "hls-2.0_14", + "hls-2.2": "hls-2.2_13", + "hls-2.3": "hls-2.3_13", + "hls-2.4": "hls-2.4_13", + "hls-2.5": "hls-2.5_6", + "hls-2.6": "hls-2.6_6", + "hls-2.7": "hls-2.7_6", "hpc-coveralls": "hpc-coveralls_19", "hydra": "hydra_21", "iserv-proxy": "iserv-proxy_15", "nixpkgs": [ "kupo-nixos", "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", "iogx-template-vanilla", "iogx", "haskell-nix", @@ -11771,18 +11324,18 @@ "nixpkgs-2111": "nixpkgs-2111_19", "nixpkgs-2205": "nixpkgs-2205_16", "nixpkgs-2211": "nixpkgs-2211_15", - "nixpkgs-2305": "nixpkgs-2305_13", + "nixpkgs-2305": "nixpkgs-2305_14", "nixpkgs-2311": "nixpkgs-2311_10", "nixpkgs-unstable": "nixpkgs-unstable_22", "old-ghc-nix": "old-ghc-nix_19", "stackage": "stackage_18" }, "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "lastModified": 1714611016, + "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", "type": "github" }, "original": { @@ -11791,14 +11344,14 @@ "type": "github" } }, - "haskell-nix_13": { + "haskell-nix_14": { "inputs": { "HTTP": "HTTP_20", "cabal-32": "cabal-32_20", "cabal-34": "cabal-34_20", "cabal-36": "cabal-36_20", "cardano-shell": "cardano-shell_20", - "flake-compat": "flake-compat_45", + "flake-compat": "flake-compat_43", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", "ghc910X": "ghc910X_7", "ghc911": "ghc911_7", @@ -11807,16 +11360,18 @@ "iogx", "iogx-template-vanilla", "iogx", + "iogx-template-haskell", + "iogx", "hackage" ], "hls-1.10": "hls-1.10_16", - "hls-2.0": "hls-2.0_14", - "hls-2.2": "hls-2.2_13", - "hls-2.3": "hls-2.3_13", - "hls-2.4": "hls-2.4_13", + "hls-2.0": "hls-2.0_15", + "hls-2.2": "hls-2.2_14", + "hls-2.3": "hls-2.3_14", + "hls-2.4": "hls-2.4_14", "hls-2.5": "hls-2.5_7", "hls-2.6": "hls-2.6_7", - "hls-2.7": "hls-2.7_6", + "hls-2.7": "hls-2.7_7", "hpc-coveralls": "hpc-coveralls_20", "hydra": "hydra_22", "iserv-proxy": "iserv-proxy_16", @@ -11825,6 +11380,8 @@ "iogx", "iogx-template-vanilla", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "nixpkgs-unstable" ], @@ -11833,18 +11390,18 @@ "nixpkgs-2111": "nixpkgs-2111_20", "nixpkgs-2205": "nixpkgs-2205_17", "nixpkgs-2211": "nixpkgs-2211_16", - "nixpkgs-2305": "nixpkgs-2305_14", + "nixpkgs-2305": "nixpkgs-2305_15", "nixpkgs-2311": "nixpkgs-2311_11", "nixpkgs-unstable": "nixpkgs-unstable_23", "old-ghc-nix": "old-ghc-nix_20", "stackage": "stackage_19" }, "locked": { - "lastModified": 1714611016, - "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", "type": "github" }, "original": { @@ -11853,17 +11410,17 @@ "type": "github" } }, - "haskell-nix_14": { + "haskell-nix_15": { "inputs": { "HTTP": "HTTP_21", "cabal-32": "cabal-32_21", "cabal-34": "cabal-34_21", "cabal-36": "cabal-36_21", "cardano-shell": "cardano-shell_21", - "flake-compat": "flake-compat_46", + "flake-compat": "flake-compat_44", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", - "ghc910X": "ghc910X_8", - "ghc911": "ghc911_8", + "ghc98X": "ghc98X_8", + "ghc99": "ghc99_8", "hackage": [ "kupo-nixos", "iogx", @@ -11871,16 +11428,15 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "hackage" ], "hls-1.10": "hls-1.10_17", - "hls-2.0": "hls-2.0_15", - "hls-2.2": "hls-2.2_14", - "hls-2.3": "hls-2.3_14", - "hls-2.4": "hls-2.4_14", - "hls-2.5": "hls-2.5_8", - "hls-2.6": "hls-2.6_8", - "hls-2.7": "hls-2.7_7", + "hls-2.0": "hls-2.0_16", + "hls-2.2": "hls-2.2_15", + "hls-2.3": "hls-2.3_15", + "hls-2.4": "hls-2.4_15", "hpc-coveralls": "hpc-coveralls_21", "hydra": "hydra_23", "iserv-proxy": "iserv-proxy_17", @@ -11891,6 +11447,8 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "nixpkgs-unstable" ], @@ -11899,18 +11457,18 @@ "nixpkgs-2111": "nixpkgs-2111_21", "nixpkgs-2205": "nixpkgs-2205_18", "nixpkgs-2211": "nixpkgs-2211_17", - "nixpkgs-2305": "nixpkgs-2305_15", + "nixpkgs-2305": "nixpkgs-2305_16", "nixpkgs-2311": "nixpkgs-2311_12", "nixpkgs-unstable": "nixpkgs-unstable_24", "old-ghc-nix": "old-ghc-nix_21", "stackage": "stackage_20" }, "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { @@ -11919,17 +11477,17 @@ "type": "github" } }, - "haskell-nix_15": { + "haskell-nix_16": { "inputs": { "HTTP": "HTTP_22", "cabal-32": "cabal-32_22", "cabal-34": "cabal-34_22", "cabal-36": "cabal-36_22", "cardano-shell": "cardano-shell_22", - "flake-compat": "flake-compat_47", + "flake-compat": "flake-compat_46", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", - "ghc98X": "ghc98X_7", - "ghc99": "ghc99_7", + "ghc98X": "ghc98X_9", + "ghc99": "ghc99_9", "hackage": [ "kupo-nixos", "iogx", @@ -11937,15 +11495,15 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "hackage" ], "hls-1.10": "hls-1.10_18", - "hls-2.0": "hls-2.0_16", - "hls-2.2": "hls-2.2_15", - "hls-2.3": "hls-2.3_15", - "hls-2.4": "hls-2.4_15", + "hls-2.0": "hls-2.0_17", + "hls-2.2": "hls-2.2_16", + "hls-2.3": "hls-2.3_16", + "hls-2.4": "hls-2.4_16", "hpc-coveralls": "hpc-coveralls_22", "hydra": "hydra_24", "iserv-proxy": "iserv-proxy_18", @@ -11956,7 +11514,7 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "haskell-nix", "nixpkgs-unstable" @@ -11966,7 +11524,7 @@ "nixpkgs-2111": "nixpkgs-2111_22", "nixpkgs-2205": "nixpkgs-2205_19", "nixpkgs-2211": "nixpkgs-2211_18", - "nixpkgs-2305": "nixpkgs-2305_16", + "nixpkgs-2305": "nixpkgs-2305_17", "nixpkgs-2311": "nixpkgs-2311_13", "nixpkgs-unstable": "nixpkgs-unstable_25", "old-ghc-nix": "old-ghc-nix_22", @@ -11986,7 +11544,7 @@ "type": "github" } }, - "haskell-nix_16": { + "haskell-nix_17": { "inputs": { "HTTP": "HTTP_23", "cabal-32": "cabal-32_23", @@ -11995,24 +11553,25 @@ "cardano-shell": "cardano-shell_23", "flake-compat": "flake-compat_49", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", - "ghc98X": "ghc98X_8", - "ghc99": "ghc99_8", + "ghc910X": "ghc910X_8", + "ghc911": "ghc911_8", "hackage": [ "kupo-nixos", "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", - "iogx", "iogx-template-vanilla", "iogx", "hackage" ], "hls-1.10": "hls-1.10_19", - "hls-2.0": "hls-2.0_17", - "hls-2.2": "hls-2.2_16", - "hls-2.3": "hls-2.3_16", - "hls-2.4": "hls-2.4_16", + "hls-2.0": "hls-2.0_18", + "hls-2.2": "hls-2.2_17", + "hls-2.3": "hls-2.3_17", + "hls-2.4": "hls-2.4_17", + "hls-2.5": "hls-2.5_8", + "hls-2.6": "hls-2.6_8", + "hls-2.7": "hls-2.7_8", "hpc-coveralls": "hpc-coveralls_23", "hydra": "hydra_25", "iserv-proxy": "iserv-proxy_19", @@ -12021,8 +11580,6 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", - "iogx", "iogx-template-vanilla", "iogx", "haskell-nix", @@ -12033,18 +11590,18 @@ "nixpkgs-2111": "nixpkgs-2111_23", "nixpkgs-2205": "nixpkgs-2205_20", "nixpkgs-2211": "nixpkgs-2211_19", - "nixpkgs-2305": "nixpkgs-2305_17", + "nixpkgs-2305": "nixpkgs-2305_18", "nixpkgs-2311": "nixpkgs-2311_14", "nixpkgs-unstable": "nixpkgs-unstable_26", "old-ghc-nix": "old-ghc-nix_23", "stackage": "stackage_22" }, "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", "type": "github" }, "original": { @@ -12053,17 +11610,17 @@ "type": "github" } }, - "haskell-nix_17": { + "haskell-nix_18": { "inputs": { "HTTP": "HTTP_24", "cabal-32": "cabal-32_24", "cabal-34": "cabal-34_24", "cabal-36": "cabal-36_24", "cardano-shell": "cardano-shell_24", - "flake-compat": "flake-compat_52", + "flake-compat": "flake-compat_50", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", - "ghc910X": "ghc910X_9", - "ghc911": "ghc911_9", + "ghc98X": "ghc98X_10", + "ghc99": "ghc99_10", "hackage": [ "kupo-nixos", "iogx", @@ -12071,16 +11628,15 @@ "iogx", "iogx-template-vanilla", "iogx", + "iogx-template-haskell", + "iogx", "hackage" ], "hls-1.10": "hls-1.10_20", - "hls-2.0": "hls-2.0_18", - "hls-2.2": "hls-2.2_17", - "hls-2.3": "hls-2.3_17", - "hls-2.4": "hls-2.4_17", - "hls-2.5": "hls-2.5_9", - "hls-2.6": "hls-2.6_9", - "hls-2.7": "hls-2.7_8", + "hls-2.0": "hls-2.0_19", + "hls-2.2": "hls-2.2_18", + "hls-2.3": "hls-2.3_18", + "hls-2.4": "hls-2.4_18", "hpc-coveralls": "hpc-coveralls_24", "hydra": "hydra_26", "iserv-proxy": "iserv-proxy_20", @@ -12091,6 +11647,8 @@ "iogx", "iogx-template-vanilla", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "nixpkgs-unstable" ], @@ -12099,18 +11657,18 @@ "nixpkgs-2111": "nixpkgs-2111_24", "nixpkgs-2205": "nixpkgs-2205_21", "nixpkgs-2211": "nixpkgs-2211_20", - "nixpkgs-2305": "nixpkgs-2305_18", + "nixpkgs-2305": "nixpkgs-2305_19", "nixpkgs-2311": "nixpkgs-2311_15", "nixpkgs-unstable": "nixpkgs-unstable_27", "old-ghc-nix": "old-ghc-nix_24", "stackage": "stackage_23" }, "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { @@ -12119,17 +11677,17 @@ "type": "github" } }, - "haskell-nix_18": { + "haskell-nix_19": { "inputs": { "HTTP": "HTTP_25", "cabal-32": "cabal-32_25", "cabal-34": "cabal-34_25", "cabal-36": "cabal-36_25", "cardano-shell": "cardano-shell_25", - "flake-compat": "flake-compat_53", + "flake-compat": "flake-compat_52", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", - "ghc98X": "ghc98X_9", - "ghc99": "ghc99_9", + "ghc98X": "ghc98X_11", + "ghc99": "ghc99_11", "hackage": [ "kupo-nixos", "iogx", @@ -12137,15 +11695,15 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "hackage" ], "hls-1.10": "hls-1.10_21", - "hls-2.0": "hls-2.0_19", - "hls-2.2": "hls-2.2_18", - "hls-2.3": "hls-2.3_18", - "hls-2.4": "hls-2.4_18", + "hls-2.0": "hls-2.0_20", + "hls-2.2": "hls-2.2_19", + "hls-2.3": "hls-2.3_19", + "hls-2.4": "hls-2.4_19", "hpc-coveralls": "hpc-coveralls_25", "hydra": "hydra_27", "iserv-proxy": "iserv-proxy_21", @@ -12156,7 +11714,7 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "haskell-nix", "nixpkgs-unstable" @@ -12166,7 +11724,7 @@ "nixpkgs-2111": "nixpkgs-2111_25", "nixpkgs-2205": "nixpkgs-2205_22", "nixpkgs-2211": "nixpkgs-2211_21", - "nixpkgs-2305": "nixpkgs-2305_19", + "nixpkgs-2305": "nixpkgs-2305_20", "nixpkgs-2311": "nixpkgs-2311_16", "nixpkgs-unstable": "nixpkgs-unstable_28", "old-ghc-nix": "old-ghc-nix_25", @@ -12186,84 +11744,17 @@ "type": "github" } }, - "haskell-nix_19": { - "inputs": { - "HTTP": "HTTP_26", - "cabal-32": "cabal-32_26", - "cabal-34": "cabal-34_26", - "cabal-36": "cabal-36_26", - "cardano-shell": "cardano-shell_26", - "flake-compat": "flake-compat_55", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_26", - "ghc98X": "ghc98X_10", - "ghc99": "ghc99_10", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_22", - "hls-2.0": "hls-2.0_20", - "hls-2.2": "hls-2.2_19", - "hls-2.3": "hls-2.3_19", - "hls-2.4": "hls-2.4_19", - "hpc-coveralls": "hpc-coveralls_26", - "hydra": "hydra_28", - "iserv-proxy": "iserv-proxy_22", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_26", - "nixpkgs-2105": "nixpkgs-2105_26", - "nixpkgs-2111": "nixpkgs-2111_26", - "nixpkgs-2205": "nixpkgs-2205_23", - "nixpkgs-2211": "nixpkgs-2211_22", - "nixpkgs-2305": "nixpkgs-2305_20", - "nixpkgs-2311": "nixpkgs-2311_17", - "nixpkgs-unstable": "nixpkgs-unstable_29", - "old-ghc-nix": "old-ghc-nix_26", - "stackage": "stackage_25" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, "haskell-nix_2": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_37", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_7", + "hpc-coveralls": "hpc-coveralls_6", "nix-tools": "nix-tools", "nixpkgs": [ "db-sync", @@ -12273,9 +11764,9 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", "nixpkgs-unstable": [ "db-sync", "cardano-world", @@ -12283,8 +11774,8 @@ "cicero", "nixpkgs" ], - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_6" + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" }, "locked": { "lastModified": 1646097976, @@ -12302,20 +11793,20 @@ }, "haskell-nix_3": { "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_48", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_43", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", "hackage": [ "db-sync", "cardano-world", "hackage" ], - "hpc-coveralls": "hpc-coveralls_9", - "hydra": "hydra_11", + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", "nix-tools": "nix-tools_3", "nixpkgs": [ "db-sync", @@ -12323,13 +11814,13 @@ "haskell-nix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-2205": "nixpkgs-2205_7", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_8" + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" }, "locked": { "lastModified": 1659439444, @@ -12346,51 +11837,109 @@ } }, "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "ghc910X": "ghc910X", + "ghc911": "ghc911", + "hackage": [ + "hackage-nix" + ], + "hls-1.10": "hls-1.10_6", + "hls-2.0": "hls-2.0_5", + "hls-2.2": "hls-2.2_4", + "hls-2.3": "hls-2.3_4", + "hls-2.4": "hls-2.4_4", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", + "hls-2.7": "hls-2.7", + "hls-2.8": "hls-2.8", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2305": "nixpkgs-2305_5", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" + }, + "locked": { + "lastModified": 1719190241, + "narHash": "sha256-dnoWKRpnnyHvD6PDjtaWJHS36/IjHiBPUdzFz68gWcU=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "4d444cf7c4976884af46ac38e9f511a97c66ccdf", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_5": { "inputs": { "HTTP": "HTTP_11", "cabal-32": "cabal-32_11", "cabal-34": "cabal-34_11", "cabal-36": "cabal-36_11", "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_29", + "flake-compat": "flake-compat_27", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", "ghc910X": "ghc910X_2", "ghc911": "ghc911_2", "hackage": [ - "hackage-nix" + "kupo-nixos", + "iogx", + "hackage" ], "hls-1.10": "hls-1.10_7", - "hls-2.0": "hls-2.0_5", - "hls-2.2": "hls-2.2_4", - "hls-2.3": "hls-2.3_4", - "hls-2.4": "hls-2.4_4", + "hls-2.0": "hls-2.0_6", + "hls-2.2": "hls-2.2_5", + "hls-2.3": "hls-2.3_5", + "hls-2.4": "hls-2.4_5", "hls-2.5": "hls-2.5_2", "hls-2.6": "hls-2.6_2", - "hls-2.7": "hls-2.7", - "hls-2.8": "hls-2.8", + "hls-2.7": "hls-2.7_2", "hpc-coveralls": "hpc-coveralls_11", "hydra": "hydra_13", "iserv-proxy": "iserv-proxy_7", "nixpkgs": [ - "nixpkgs" + "kupo-nixos", + "iogx", + "haskell-nix", + "nixpkgs-unstable" ], "nixpkgs-2003": "nixpkgs-2003_11", "nixpkgs-2105": "nixpkgs-2105_11", "nixpkgs-2111": "nixpkgs-2111_11", "nixpkgs-2205": "nixpkgs-2205_8", "nixpkgs-2211": "nixpkgs-2211_7", - "nixpkgs-2305": "nixpkgs-2305_5", + "nixpkgs-2305": "nixpkgs-2305_6", "nixpkgs-2311": "nixpkgs-2311_2", "nixpkgs-unstable": "nixpkgs-unstable_14", "old-ghc-nix": "old-ghc-nix_11", "stackage": "stackage_10" }, "locked": { - "lastModified": 1718844631, - "narHash": "sha256-7r7Yo5sHrsNVfr52xDokSWkCes3XAwLmpRCNt/psyY4=", + "lastModified": 1714956613, + "narHash": "sha256-h2n+7SsDHFE9SfStJjHxludjmhV5iupstehh6EGLUGU=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "476f3dbe4e4129ef092852f9f7d2cd9d93437529", + "rev": "6a9b5d11bdd09bcf739c5e837fa4a776b4c48646", "type": "github" }, "original": { @@ -12399,36 +11948,40 @@ "type": "github" } }, - "haskell-nix_5": { + "haskell-nix_6": { "inputs": { "HTTP": "HTTP_12", "cabal-32": "cabal-32_12", "cabal-34": "cabal-34_12", "cabal-36": "cabal-36_12", "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_30", + "flake-compat": "flake-compat_28", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", "ghc910X": "ghc910X_3", "ghc911": "ghc911_3", "hackage": [ "kupo-nixos", "iogx", + "iogx-template-haskell", + "iogx", "hackage" ], "hls-1.10": "hls-1.10_8", - "hls-2.0": "hls-2.0_6", - "hls-2.2": "hls-2.2_5", - "hls-2.3": "hls-2.3_5", - "hls-2.4": "hls-2.4_5", + "hls-2.0": "hls-2.0_7", + "hls-2.2": "hls-2.2_6", + "hls-2.3": "hls-2.3_6", + "hls-2.4": "hls-2.4_6", "hls-2.5": "hls-2.5_3", "hls-2.6": "hls-2.6_3", - "hls-2.7": "hls-2.7_2", + "hls-2.7": "hls-2.7_3", "hpc-coveralls": "hpc-coveralls_12", "hydra": "hydra_14", "iserv-proxy": "iserv-proxy_8", "nixpkgs": [ "kupo-nixos", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "nixpkgs-unstable" ], @@ -12437,18 +11990,18 @@ "nixpkgs-2111": "nixpkgs-2111_12", "nixpkgs-2205": "nixpkgs-2205_9", "nixpkgs-2211": "nixpkgs-2211_8", - "nixpkgs-2305": "nixpkgs-2305_6", + "nixpkgs-2305": "nixpkgs-2305_7", "nixpkgs-2311": "nixpkgs-2311_3", "nixpkgs-unstable": "nixpkgs-unstable_15", "old-ghc-nix": "old-ghc-nix_12", "stackage": "stackage_11" }, "locked": { - "lastModified": 1714956613, - "narHash": "sha256-h2n+7SsDHFE9SfStJjHxludjmhV5iupstehh6EGLUGU=", + "lastModified": 1714611016, + "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "6a9b5d11bdd09bcf739c5e837fa4a776b4c48646", + "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", "type": "github" }, "original": { @@ -12457,14 +12010,14 @@ "type": "github" } }, - "haskell-nix_6": { + "haskell-nix_7": { "inputs": { "HTTP": "HTTP_13", "cabal-32": "cabal-32_13", "cabal-34": "cabal-34_13", "cabal-36": "cabal-36_13", "cardano-shell": "cardano-shell_13", - "flake-compat": "flake-compat_31", + "flake-compat": "flake-compat_29", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", "ghc910X": "ghc910X_4", "ghc911": "ghc911_4", @@ -12473,16 +12026,18 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "hackage" ], "hls-1.10": "hls-1.10_9", - "hls-2.0": "hls-2.0_7", - "hls-2.2": "hls-2.2_6", - "hls-2.3": "hls-2.3_6", - "hls-2.4": "hls-2.4_6", + "hls-2.0": "hls-2.0_8", + "hls-2.2": "hls-2.2_7", + "hls-2.3": "hls-2.3_7", + "hls-2.4": "hls-2.4_7", "hls-2.5": "hls-2.5_4", "hls-2.6": "hls-2.6_4", - "hls-2.7": "hls-2.7_3", + "hls-2.7": "hls-2.7_4", "hpc-coveralls": "hpc-coveralls_13", "hydra": "hydra_15", "iserv-proxy": "iserv-proxy_9", @@ -12491,6 +12046,8 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "nixpkgs-unstable" ], @@ -12499,18 +12056,18 @@ "nixpkgs-2111": "nixpkgs-2111_13", "nixpkgs-2205": "nixpkgs-2205_10", "nixpkgs-2211": "nixpkgs-2211_9", - "nixpkgs-2305": "nixpkgs-2305_7", + "nixpkgs-2305": "nixpkgs-2305_8", "nixpkgs-2311": "nixpkgs-2311_4", "nixpkgs-unstable": "nixpkgs-unstable_16", "old-ghc-nix": "old-ghc-nix_13", "stackage": "stackage_12" }, "locked": { - "lastModified": 1714611016, - "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", "type": "github" }, "original": { @@ -12519,17 +12076,17 @@ "type": "github" } }, - "haskell-nix_7": { + "haskell-nix_8": { "inputs": { "HTTP": "HTTP_14", "cabal-32": "cabal-32_14", "cabal-34": "cabal-34_14", "cabal-36": "cabal-36_14", "cardano-shell": "cardano-shell_14", - "flake-compat": "flake-compat_32", + "flake-compat": "flake-compat_30", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", - "ghc910X": "ghc910X_5", - "ghc911": "ghc911_5", + "ghc98X": "ghc98X_4", + "ghc99": "ghc99_4", "hackage": [ "kupo-nixos", "iogx", @@ -12537,16 +12094,15 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "hackage" ], "hls-1.10": "hls-1.10_10", - "hls-2.0": "hls-2.0_8", - "hls-2.2": "hls-2.2_7", - "hls-2.3": "hls-2.3_7", - "hls-2.4": "hls-2.4_7", - "hls-2.5": "hls-2.5_5", - "hls-2.6": "hls-2.6_5", - "hls-2.7": "hls-2.7_4", + "hls-2.0": "hls-2.0_9", + "hls-2.2": "hls-2.2_8", + "hls-2.3": "hls-2.3_8", + "hls-2.4": "hls-2.4_8", "hpc-coveralls": "hpc-coveralls_14", "hydra": "hydra_16", "iserv-proxy": "iserv-proxy_10", @@ -12557,6 +12113,8 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "nixpkgs-unstable" ], @@ -12565,18 +12123,18 @@ "nixpkgs-2111": "nixpkgs-2111_14", "nixpkgs-2205": "nixpkgs-2205_11", "nixpkgs-2211": "nixpkgs-2211_10", - "nixpkgs-2305": "nixpkgs-2305_8", + "nixpkgs-2305": "nixpkgs-2305_9", "nixpkgs-2311": "nixpkgs-2311_5", "nixpkgs-unstable": "nixpkgs-unstable_17", "old-ghc-nix": "old-ghc-nix_14", "stackage": "stackage_13" }, "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", "type": "github" }, "original": { @@ -12585,17 +12143,17 @@ "type": "github" } }, - "haskell-nix_8": { + "haskell-nix_9": { "inputs": { "HTTP": "HTTP_15", "cabal-32": "cabal-32_15", "cabal-34": "cabal-34_15", "cabal-36": "cabal-36_15", "cardano-shell": "cardano-shell_15", - "flake-compat": "flake-compat_33", + "flake-compat": "flake-compat_32", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", - "ghc98X": "ghc98X_3", - "ghc99": "ghc99_3", + "ghc98X": "ghc98X_5", + "ghc99": "ghc99_5", "hackage": [ "kupo-nixos", "iogx", @@ -12603,15 +12161,15 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "hackage" ], "hls-1.10": "hls-1.10_11", - "hls-2.0": "hls-2.0_9", - "hls-2.2": "hls-2.2_8", - "hls-2.3": "hls-2.3_8", - "hls-2.4": "hls-2.4_8", + "hls-2.0": "hls-2.0_10", + "hls-2.2": "hls-2.2_9", + "hls-2.3": "hls-2.3_9", + "hls-2.4": "hls-2.4_9", "hpc-coveralls": "hpc-coveralls_15", "hydra": "hydra_17", "iserv-proxy": "iserv-proxy_11", @@ -12622,7 +12180,7 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "haskell-nix", "nixpkgs-unstable" @@ -12632,7 +12190,7 @@ "nixpkgs-2111": "nixpkgs-2111_15", "nixpkgs-2205": "nixpkgs-2205_12", "nixpkgs-2211": "nixpkgs-2211_11", - "nixpkgs-2305": "nixpkgs-2305_9", + "nixpkgs-2305": "nixpkgs-2305_10", "nixpkgs-2311": "nixpkgs-2311_6", "nixpkgs-unstable": "nixpkgs-unstable_18", "old-ghc-nix": "old-ghc-nix_15", @@ -12652,73 +12210,6 @@ "type": "github" } }, - "haskell-nix_9": { - "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_16", - "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_35", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "ghc98X": "ghc98X_4", - "ghc99": "ghc99_4", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_12", - "hls-2.0": "hls-2.0_10", - "hls-2.2": "hls-2.2_9", - "hls-2.3": "hls-2.3_9", - "hls-2.4": "hls-2.4_9", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_18", - "iserv-proxy": "iserv-proxy_12", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_13", - "nixpkgs-2211": "nixpkgs-2211_12", - "nixpkgs-2305": "nixpkgs-2305_10", - "nixpkgs-2311": "nixpkgs-2311_7", - "nixpkgs-unstable": "nixpkgs-unstable_19", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_15" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, "haskellNix": { "inputs": { "HTTP": "HTTP_2", @@ -12882,8 +12373,8 @@ "cardano-shell": "cardano-shell_5", "flake-compat": "flake-compat_16", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "ghc910X": "ghc910X", - "ghc911": "ghc911", + "ghc98X": "ghc98X_3", + "ghc99": "ghc99_3", "hackage": [ "cardano-node", "hackageNix" @@ -12893,8 +12384,6 @@ "hls-2.2": "hls-2.2_3", "hls-2.3": "hls-2.3_3", "hls-2.4": "hls-2.4_3", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", "hpc-coveralls": "hpc-coveralls_5", "hydra": "hydra_5", "iserv-proxy": "iserv-proxy_5", @@ -12908,17 +12397,16 @@ "nixpkgs-2205": "nixpkgs-2205_5", "nixpkgs-2211": "nixpkgs-2211_5", "nixpkgs-2305": "nixpkgs-2305_4", - "nixpkgs-2311": "nixpkgs-2311", "nixpkgs-unstable": "nixpkgs-unstable_6", "old-ghc-nix": "old-ghc-nix_5", "stackage": "stackage_4" }, "locked": { - "lastModified": 1712278203, - "narHash": "sha256-L4eFUxnID2EYYtONE3fmZxPQdgPlB6XbAfIjlZi4c+U=", + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "57938c23a4d40e5a746f05f2b71af11a7273a133", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", "type": "github" }, "original": { @@ -12929,61 +12417,16 @@ }, "haskellNix_5": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_19", - "flake-utils": "flake-utils_23", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": [ - "cardano-node-plutip", - "hackageNix" - ], - "hls-1.10": "hls-1.10_6", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_6", - "iserv-proxy": "iserv-proxy_6", - "nixpkgs": [ - "cardano-node-plutip", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-2211": "nixpkgs-2211_6", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_5" - }, - "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_47", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", "nix-tools": "nix-tools_2", "nixpkgs": [ "db-sync", @@ -12991,12 +12434,12 @@ "cardano-wallet", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_7" + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" }, "locked": { "lastModified": 1655369909, @@ -13012,30 +12455,30 @@ "type": "github" } }, - "haskellNix_7": { + "haskellNix_6": { "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-utils": "flake-utils_53", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_48", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_12", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", "nix-tools": "nix-tools_4", "nixpkgs": [ "db-sync", "haskellNix", "nixpkgs-unstable" ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_9" + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" }, "locked": { "lastModified": 1650936156, @@ -13118,14 +12561,14 @@ "hercules-ci-effects_2": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_107" + "nixpkgs": "nixpkgs_100" }, "locked": { - "lastModified": 1718018037, - "narHash": "sha256-03rLBd/lKecgaKz0j5ESUf9lDn5R0SJatZTKLL5unWE=", + "lastModified": 1719226092, + "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "0ab08b23ce3c3f75fe9a5598756b6fb8bcf0b414", + "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", "type": "github" }, "original": { @@ -13372,23 +12815,6 @@ "type": "github" } }, - "hls-1.10_22": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, "hls-1.10_3": { "flake": false, "locked": { @@ -14701,16 +14127,16 @@ "hls-2.4_3": { "flake": false, "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", "owner": "haskell", "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "2.4.0.1", + "ref": "2.4.0.0", "repo": "haskell-language-server", "type": "github" } @@ -14953,23 +14379,6 @@ "type": "github" } }, - "hls-2.5_9": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, "hls-2.6": { "flake": false, "locked": { @@ -15106,23 +14515,6 @@ "type": "github" } }, - "hls-2.6_9": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, "hls-2.7": { "flake": false, "locked": { @@ -15564,22 +14956,6 @@ "type": "github" } }, - "hpc-coveralls_26": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, "hpc-coveralls_3": { "flake": false, "locked": { @@ -15724,8 +15100,7 @@ "nixpkgs": [ "db-sync", "cardano-world", - "cardano-wallet", - "haskellNix", + "haskell-nix", "hydra", "nix", "nixpkgs" @@ -15749,8 +15124,7 @@ "nix": "nix_19", "nixpkgs": [ "db-sync", - "cardano-world", - "haskell-nix", + "haskellNix", "hydra", "nix", "nixpkgs" @@ -15773,19 +15147,18 @@ "inputs": { "nix": "nix_20", "nixpkgs": [ - "db-sync", - "haskellNix", + "haskell-nix", "hydra", "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", "owner": "NixOS", "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { @@ -15797,6 +15170,8 @@ "inputs": { "nix": "nix_21", "nixpkgs": [ + "kupo-nixos", + "iogx", "haskell-nix", "hydra", "nix", @@ -15822,6 +15197,8 @@ "nixpkgs": [ "kupo-nixos", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "hydra", "nix", @@ -15849,6 +15226,8 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "hydra", "nix", @@ -15878,6 +15257,8 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "hydra", "nix", @@ -15907,7 +15288,7 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "haskell-nix", "hydra", @@ -15936,8 +15317,6 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", - "iogx", "iogx-template-vanilla", "iogx", "haskell-nix", @@ -15969,6 +15348,8 @@ "iogx", "iogx-template-vanilla", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "hydra", "nix", @@ -16023,7 +15404,7 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "haskell-nix", "hydra", @@ -16050,10 +15431,6 @@ "nixpkgs": [ "kupo-nixos", "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", "iogx-template-vanilla", "iogx", "haskell-nix", @@ -16083,6 +15460,8 @@ "iogx", "iogx-template-vanilla", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "hydra", "nix", @@ -16112,6 +15491,8 @@ "iogx", "iogx-template-haskell", "iogx", + "iogx-template-haskell", + "iogx", "haskell-nix", "hydra", "nix", @@ -16141,7 +15522,7 @@ "iogx", "iogx-template-haskell", "iogx", - "iogx-template-haskell", + "iogx-template-vanilla", "iogx", "haskell-nix", "hydra", @@ -16170,8 +15551,6 @@ "iogx", "iogx-template-vanilla", "iogx", - "iogx-template-haskell", - "iogx", "iogx-template-vanilla", "iogx", "haskell-nix", @@ -16196,35 +15575,6 @@ "hydra_26": { "inputs": { "nix": "nix_34", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_27": { - "inputs": { - "nix": "nix_35", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16253,9 +15603,9 @@ "type": "indirect" } }, - "hydra_28": { + "hydra_27": { "inputs": { - "nix": "nix_36", + "nix": "nix_35", "nixpkgs": [ "kupo-nixos", "iogx", @@ -16359,30 +15709,6 @@ } }, "hydra_6": { - "inputs": { - "nix": "nix_7", - "nixpkgs": [ - "cardano-node-plutip", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_7": { "inputs": { "nix": [ "db-sync", @@ -16416,7 +15742,7 @@ "type": "github" } }, - "hydra_8": { + "hydra_7": { "inputs": { "nix": [ "db-sync", @@ -16446,7 +15772,7 @@ "type": "github" } }, - "hydra_9": { + "hydra_8": { "inputs": { "nix": [ "db-sync", @@ -16478,6 +15804,32 @@ "type": "github" } }, + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, "incl": { "inputs": { "nixlib": [ @@ -16598,29 +15950,6 @@ "type": "github" } }, - "incl_6": { - "inputs": { - "nixlib": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, "inclusive": { "inputs": { "stdlib": "stdlib" @@ -16858,10 +16187,10 @@ }, "iogo": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_9", "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_59", - "utils": "utils_15" + "nixpkgs": "nixpkgs_52", + "utils": "utils_13" }, "locked": { "lastModified": 1652212694, @@ -16879,10 +16208,10 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_20", + "devshell": "devshell_19", "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_88", - "utils": "utils_29" + "nixpkgs": "nixpkgs_81", + "utils": "utils_27" }, "locked": { "lastModified": 1658302707, @@ -16905,13 +16234,13 @@ "CHaP" ], "easy-purescript-nix": "easy-purescript-nix_2", - "flake-utils": "flake-utils_55", + "flake-utils": "flake-utils_50", "hackage": "hackage_6", "haskell-nix": "haskell-nix_5", "iogx-template-haskell": "iogx-template-haskell", "iogx-template-vanilla": "iogx-template-vanilla_4", "iohk-nix": "iohk-nix_18", - "nix2container": "nix2container_24", + "nix2container": "nix2container_22", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17218,15 +16547,15 @@ }, "iogx_10": { "inputs": { - "CHaP": "CHaP_15", + "CHaP": "CHaP_14", "easy-purescript-nix": "easy-purescript-nix_11", - "flake-utils": "flake-utils_87", + "flake-utils": "flake-utils_82", "hackage": "hackage_15", "haskell-nix": "haskell-nix_14", "iogx-template-haskell": "iogx-template-haskell_6", "iogx-template-vanilla": "iogx-template-vanilla_5", "iohk-nix": "iohk-nix_13", - "nix2container": "nix2container_19", + "nix2container": "nix2container_17", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17257,13 +16586,13 @@ }, "iogx_11": { "inputs": { - "CHaP": "CHaP_16", + "CHaP": "CHaP_15", "easy-purescript-nix": "easy-purescript-nix_12", - "flake-utils": "flake-utils_89", + "flake-utils": "flake-utils_84", "hackage": "hackage_16", "haskell-nix": "haskell-nix_15", "iohk-nix": "iohk-nix_11", - "nix2container": "nix2container_17", + "nix2container": "nix2container_15", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17296,13 +16625,13 @@ }, "iogx_12": { "inputs": { - "CHaP": "CHaP_17", + "CHaP": "CHaP_16", "easy-purescript-nix": "easy-purescript-nix_13", - "flake-utils": "flake-utils_93", + "flake-utils": "flake-utils_88", "hackage": "hackage_17", "haskell-nix": "haskell-nix_16", "iohk-nix": "iohk-nix_12", - "nix2container": "nix2container_18", + "nix2container": "nix2container_16", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17335,15 +16664,15 @@ }, "iogx_13": { "inputs": { - "CHaP": "CHaP_18", + "CHaP": "CHaP_17", "easy-purescript-nix": "easy-purescript-nix_14", - "flake-utils": "flake-utils_99", + "flake-utils": "flake-utils_94", "hackage": "hackage_18", "haskell-nix": "haskell-nix_17", "iogx-template-haskell": "iogx-template-haskell_7", "iogx-template-vanilla": "iogx-template-vanilla_7", "iohk-nix": "iohk-nix_16", - "nix2container": "nix2container_22", + "nix2container": "nix2container_20", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17374,13 +16703,13 @@ }, "iogx_14": { "inputs": { - "CHaP": "CHaP_19", + "CHaP": "CHaP_18", "easy-purescript-nix": "easy-purescript-nix_15", - "flake-utils": "flake-utils_101", + "flake-utils": "flake-utils_96", "hackage": "hackage_19", "haskell-nix": "haskell-nix_18", "iohk-nix": "iohk-nix_14", - "nix2container": "nix2container_20", + "nix2container": "nix2container_18", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17413,13 +16742,13 @@ }, "iogx_15": { "inputs": { - "CHaP": "CHaP_20", + "CHaP": "CHaP_19", "easy-purescript-nix": "easy-purescript-nix_16", - "flake-utils": "flake-utils_105", + "flake-utils": "flake-utils_100", "hackage": "hackage_20", "haskell-nix": "haskell-nix_19", "iohk-nix": "iohk-nix_15", - "nix2container": "nix2container_21", + "nix2container": "nix2container_19", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17452,15 +16781,15 @@ }, "iogx_2": { "inputs": { - "CHaP": "CHaP_7", + "CHaP": "CHaP_6", "easy-purescript-nix": "easy-purescript-nix_3", - "flake-utils": "flake-utils_57", + "flake-utils": "flake-utils_52", "hackage": "hackage_7", "haskell-nix": "haskell-nix_6", "iogx-template-haskell": "iogx-template-haskell_2", "iogx-template-vanilla": "iogx-template-vanilla_2", "iohk-nix": "iohk-nix_10", - "nix2container": "nix2container_16", + "nix2container": "nix2container_14", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17489,15 +16818,15 @@ }, "iogx_3": { "inputs": { - "CHaP": "CHaP_8", + "CHaP": "CHaP_7", "easy-purescript-nix": "easy-purescript-nix_4", - "flake-utils": "flake-utils_59", + "flake-utils": "flake-utils_54", "hackage": "hackage_8", "haskell-nix": "haskell-nix_7", "iogx-template-haskell": "iogx-template-haskell_3", "iogx-template-vanilla": "iogx-template-vanilla", "iohk-nix": "iohk-nix_6", - "nix2container": "nix2container_12", + "nix2container": "nix2container_10", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17528,13 +16857,13 @@ }, "iogx_4": { "inputs": { - "CHaP": "CHaP_9", + "CHaP": "CHaP_8", "easy-purescript-nix": "easy-purescript-nix_5", - "flake-utils": "flake-utils_61", + "flake-utils": "flake-utils_56", "hackage": "hackage_9", "haskell-nix": "haskell-nix_8", "iohk-nix": "iohk-nix_4", - "nix2container": "nix2container_10", + "nix2container": "nix2container_8", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17567,13 +16896,13 @@ }, "iogx_5": { "inputs": { - "CHaP": "CHaP_10", + "CHaP": "CHaP_9", "easy-purescript-nix": "easy-purescript-nix_6", - "flake-utils": "flake-utils_65", + "flake-utils": "flake-utils_60", "hackage": "hackage_10", "haskell-nix": "haskell-nix_9", "iohk-nix": "iohk-nix_5", - "nix2container": "nix2container_11", + "nix2container": "nix2container_9", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17606,15 +16935,15 @@ }, "iogx_6": { "inputs": { - "CHaP": "CHaP_11", + "CHaP": "CHaP_10", "easy-purescript-nix": "easy-purescript-nix_7", - "flake-utils": "flake-utils_71", + "flake-utils": "flake-utils_66", "hackage": "hackage_11", "haskell-nix": "haskell-nix_10", "iogx-template-haskell": "iogx-template-haskell_4", "iogx-template-vanilla": "iogx-template-vanilla_3", "iohk-nix": "iohk-nix_9", - "nix2container": "nix2container_15", + "nix2container": "nix2container_13", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17645,13 +16974,13 @@ }, "iogx_7": { "inputs": { - "CHaP": "CHaP_12", + "CHaP": "CHaP_11", "easy-purescript-nix": "easy-purescript-nix_8", - "flake-utils": "flake-utils_73", + "flake-utils": "flake-utils_68", "hackage": "hackage_12", "haskell-nix": "haskell-nix_11", "iohk-nix": "iohk-nix_7", - "nix2container": "nix2container_13", + "nix2container": "nix2container_11", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17684,13 +17013,13 @@ }, "iogx_8": { "inputs": { - "CHaP": "CHaP_13", + "CHaP": "CHaP_12", "easy-purescript-nix": "easy-purescript-nix_9", - "flake-utils": "flake-utils_77", + "flake-utils": "flake-utils_72", "hackage": "hackage_13", "haskell-nix": "haskell-nix_12", "iohk-nix": "iohk-nix_8", - "nix2container": "nix2container_14", + "nix2container": "nix2container_12", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17723,15 +17052,15 @@ }, "iogx_9": { "inputs": { - "CHaP": "CHaP_14", + "CHaP": "CHaP_13", "easy-purescript-nix": "easy-purescript-nix_10", - "flake-utils": "flake-utils_85", + "flake-utils": "flake-utils_80", "hackage": "hackage_14", "haskell-nix": "haskell-nix_13", "iogx-template-haskell": "iogx-template-haskell_5", "iogx-template-vanilla": "iogx-template-vanilla_6", "iohk-nix": "iohk-nix_17", - "nix2container": "nix2container_23", + "nix2container": "nix2container_21", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17803,7 +17132,7 @@ }, "iohk-nix_10": { "inputs": { - "blst": "blst_15", + "blst": "blst_14", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17811,8 +17140,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_15", - "sodium": "sodium_15" + "secp256k1": "secp256k1_14", + "sodium": "sodium_14" }, "locked": { "lastModified": 1714467508, @@ -17830,7 +17159,7 @@ }, "iohk-nix_11": { "inputs": { - "blst": "blst_16", + "blst": "blst_15", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17842,8 +17171,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_16", - "sodium": "sodium_16" + "secp256k1": "secp256k1_15", + "sodium": "sodium_15" }, "locked": { "lastModified": 1702362799, @@ -17861,7 +17190,7 @@ }, "iohk-nix_12": { "inputs": { - "blst": "blst_17", + "blst": "blst_16", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17873,8 +17202,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_17", - "sodium": "sodium_17" + "secp256k1": "secp256k1_16", + "sodium": "sodium_16" }, "locked": { "lastModified": 1702362799, @@ -17892,7 +17221,7 @@ }, "iohk-nix_13": { "inputs": { - "blst": "blst_18", + "blst": "blst_17", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17902,8 +17231,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_18", - "sodium": "sodium_18" + "secp256k1": "secp256k1_17", + "sodium": "sodium_17" }, "locked": { "lastModified": 1713468256, @@ -17921,7 +17250,7 @@ }, "iohk-nix_14": { "inputs": { - "blst": "blst_19", + "blst": "blst_18", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17933,8 +17262,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_19", - "sodium": "sodium_19" + "secp256k1": "secp256k1_18", + "sodium": "sodium_18" }, "locked": { "lastModified": 1702362799, @@ -17952,7 +17281,7 @@ }, "iohk-nix_15": { "inputs": { - "blst": "blst_20", + "blst": "blst_19", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17964,8 +17293,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_20", - "sodium": "sodium_20" + "secp256k1": "secp256k1_19", + "sodium": "sodium_19" }, "locked": { "lastModified": 1702362799, @@ -17983,7 +17312,7 @@ }, "iohk-nix_16": { "inputs": { - "blst": "blst_21", + "blst": "blst_20", "nixpkgs": [ "kupo-nixos", "iogx", @@ -17993,8 +17322,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_21", - "sodium": "sodium_21" + "secp256k1": "secp256k1_20", + "sodium": "sodium_20" }, "locked": { "lastModified": 1713468256, @@ -18012,7 +17341,7 @@ }, "iohk-nix_17": { "inputs": { - "blst": "blst_22", + "blst": "blst_21", "nixpkgs": [ "kupo-nixos", "iogx", @@ -18020,8 +17349,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_22", - "sodium": "sodium_22" + "secp256k1": "secp256k1_21", + "sodium": "sodium_21" }, "locked": { "lastModified": 1714467508, @@ -18039,14 +17368,14 @@ }, "iohk-nix_18": { "inputs": { - "blst": "blst_23", + "blst": "blst_22", "nixpkgs": [ "kupo-nixos", "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_23", - "sodium": "sodium_23" + "secp256k1": "secp256k1_22", + "sodium": "sodium_22" }, "locked": { "lastModified": 1714467508, @@ -18086,19 +17415,19 @@ }, "iohk-nix_3": { "inputs": { - "blst": "blst_8", + "blst": "blst_7", "nixpkgs": [ "nixpkgs" ], - "secp256k1": "secp256k1_8", - "sodium": "sodium_8" + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" }, "locked": { - "lastModified": 1715898223, - "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", + "lastModified": 1719237167, + "narHash": "sha256-ifW5Jfwu/iwYs0r7f8AdiWDQK+Pr1gZLz+p5u8OtOgo=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "rev": "577f4d5072945a88dda6f5cfe205e6b4829a0423", "type": "github" }, "original": { @@ -18109,7 +17438,7 @@ }, "iohk-nix_4": { "inputs": { - "blst": "blst_9", + "blst": "blst_8", "nixpkgs": [ "kupo-nixos", "iogx", @@ -18121,8 +17450,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_9", - "sodium": "sodium_9" + "secp256k1": "secp256k1_8", + "sodium": "sodium_8" }, "locked": { "lastModified": 1702362799, @@ -18140,7 +17469,7 @@ }, "iohk-nix_5": { "inputs": { - "blst": "blst_10", + "blst": "blst_9", "nixpkgs": [ "kupo-nixos", "iogx", @@ -18152,8 +17481,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_10", - "sodium": "sodium_10" + "secp256k1": "secp256k1_9", + "sodium": "sodium_9" }, "locked": { "lastModified": 1702362799, @@ -18171,7 +17500,7 @@ }, "iohk-nix_6": { "inputs": { - "blst": "blst_11", + "blst": "blst_10", "nixpkgs": [ "kupo-nixos", "iogx", @@ -18181,8 +17510,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_11", - "sodium": "sodium_11" + "secp256k1": "secp256k1_10", + "sodium": "sodium_10" }, "locked": { "lastModified": 1713468256, @@ -18200,7 +17529,7 @@ }, "iohk-nix_7": { "inputs": { - "blst": "blst_12", + "blst": "blst_11", "nixpkgs": [ "kupo-nixos", "iogx", @@ -18212,8 +17541,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_12", - "sodium": "sodium_12" + "secp256k1": "secp256k1_11", + "sodium": "sodium_11" }, "locked": { "lastModified": 1702362799, @@ -18231,7 +17560,7 @@ }, "iohk-nix_8": { "inputs": { - "blst": "blst_13", + "blst": "blst_12", "nixpkgs": [ "kupo-nixos", "iogx", @@ -18243,8 +17572,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_13", - "sodium": "sodium_13" + "secp256k1": "secp256k1_12", + "sodium": "sodium_12" }, "locked": { "lastModified": 1702362799, @@ -18262,7 +17591,7 @@ }, "iohk-nix_9": { "inputs": { - "blst": "blst_14", + "blst": "blst_13", "nixpkgs": [ "kupo-nixos", "iogx", @@ -18272,8 +17601,8 @@ "iogx", "nixpkgs" ], - "secp256k1": "secp256k1_14", - "sodium": "sodium_14" + "secp256k1": "secp256k1_13", + "sodium": "sodium_13" }, "locked": { "lastModified": 1713468256, @@ -18375,11 +17704,11 @@ "sodium": "sodium_6" }, "locked": { - "lastModified": 1715898223, - "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", "type": "github" }, "original": { @@ -18389,30 +17718,6 @@ } }, "iohkNix_5": { - "inputs": { - "blst": "blst_7", - "nixpkgs": [ - "cardano-node-plutip", - "nixpkgs" - ], - "secp256k1": "secp256k1_7", - "sodium": "sodium_7" - }, - "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -18435,7 +17740,7 @@ "type": "github" } }, - "iohkNix_7": { + "iohkNix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -18474,23 +17779,6 @@ } }, "iserv-proxy_10": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_11": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18507,7 +17795,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_12": { + "iserv-proxy_11": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18524,7 +17812,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_13": { + "iserv-proxy_12": { "flake": false, "locked": { "lastModified": 1708894040, @@ -18541,7 +17829,7 @@ "type": "github" } }, - "iserv-proxy_14": { + "iserv-proxy_13": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18558,7 +17846,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_15": { + "iserv-proxy_14": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18575,7 +17863,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_16": { + "iserv-proxy_15": { "flake": false, "locked": { "lastModified": 1708894040, @@ -18592,7 +17880,7 @@ "type": "github" } }, - "iserv-proxy_17": { + "iserv-proxy_16": { "flake": false, "locked": { "lastModified": 1708894040, @@ -18609,7 +17897,7 @@ "type": "github" } }, - "iserv-proxy_18": { + "iserv-proxy_17": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18626,7 +17914,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_19": { + "iserv-proxy_18": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18643,6 +17931,23 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, + "iserv-proxy_19": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, "iserv-proxy_2": { "flake": false, "locked": { @@ -18661,23 +17966,6 @@ } }, "iserv-proxy_20": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_21": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18694,7 +17982,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_22": { + "iserv-proxy_21": { "flake": false, "locked": { "lastModified": 1691634696, @@ -18748,28 +18036,11 @@ "iserv-proxy_5": { "flake": false, "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_6": { - "flake": false, - "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, "type": "git", "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, @@ -18779,7 +18050,7 @@ "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "iserv-proxy_7": { + "iserv-proxy_6": { "flake": false, "locked": { "lastModified": 1717479972, @@ -18796,6 +18067,23 @@ "type": "github" } }, + "iserv-proxy_7": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, "iserv-proxy_8": { "flake": false, "locked": { @@ -18969,11 +18257,11 @@ "lowdown-src_15": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { @@ -18985,11 +18273,11 @@ "lowdown-src_16": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { @@ -19334,22 +18622,6 @@ "type": "github" } }, - "lowdown-src_36": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, "lowdown-src_4": { "flake": false, "locked": { @@ -19417,11 +18689,11 @@ "lowdown-src_8": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { @@ -19433,11 +18705,11 @@ "lowdown-src_9": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", "owner": "kristapsdz", "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { @@ -19631,37 +18903,8 @@ }, "n2c_6": { "inputs": { - "flake-utils": [ - "cardano-node-plutip", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_7": { - "inputs": { - "flake-utils": "flake-utils_32", - "nixpkgs": "nixpkgs_64" + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_57" }, "locked": { "lastModified": 1650568002, @@ -19677,10 +18920,10 @@ "type": "github" } }, - "n2c_8": { + "n2c_7": { "inputs": { - "flake-utils": "flake-utils_49", - "nixpkgs": "nixpkgs_99" + "flake-utils": "flake-utils_44", + "nixpkgs": "nixpkgs_92" }, "locked": { "lastModified": 1655533513, @@ -19719,7 +18962,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_17", + "devshell": "devshell_16", "inclusive": [ "db-sync", "cardano-world", @@ -19734,7 +18977,7 @@ "cicero", "nixpkgs" ], - "utils": "utils_22" + "utils": "utils_20" }, "locked": { "lastModified": 1644317729, @@ -19885,41 +19128,6 @@ "type": "github" } }, - "nix-nomad_4": { - "inputs": { - "flake-compat": "flake-compat_20", - "flake-utils": [ - "cardano-node-plutip", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_4", - "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-node-plutip", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, "nix-tools": { "flake": false, "locked": { @@ -20005,46 +19213,8 @@ }, "nix2container_10": { "inputs": { - "flake-utils": "flake-utils_62", - "nixpkgs": "nixpkgs_112" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_11": { - "inputs": { - "flake-utils": "flake-utils_66", - "nixpkgs": "nixpkgs_115" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_12": { - "inputs": { - "flake-utils": "flake-utils_68", - "nixpkgs": "nixpkgs_117" + "flake-utils": "flake-utils_63", + "nixpkgs": "nixpkgs_110" }, "locked": { "lastModified": 1712990762, @@ -20060,10 +19230,10 @@ "type": "github" } }, - "nix2container_13": { + "nix2container_11": { "inputs": { - "flake-utils": "flake-utils_74", - "nixpkgs": "nixpkgs_121" + "flake-utils": "flake-utils_69", + "nixpkgs": "nixpkgs_114" }, "locked": { "lastModified": 1703410130, @@ -20079,10 +19249,10 @@ "type": "github" } }, - "nix2container_14": { + "nix2container_12": { "inputs": { - "flake-utils": "flake-utils_78", - "nixpkgs": "nixpkgs_124" + "flake-utils": "flake-utils_73", + "nixpkgs": "nixpkgs_117" }, "locked": { "lastModified": 1703410130, @@ -20098,10 +19268,10 @@ "type": "github" } }, - "nix2container_15": { + "nix2container_13": { "inputs": { - "flake-utils": "flake-utils_80", - "nixpkgs": "nixpkgs_126" + "flake-utils": "flake-utils_75", + "nixpkgs": "nixpkgs_119" }, "locked": { "lastModified": 1712990762, @@ -20117,10 +19287,10 @@ "type": "github" } }, - "nix2container_16": { + "nix2container_14": { "inputs": { - "flake-utils": "flake-utils_82", - "nixpkgs": "nixpkgs_128" + "flake-utils": "flake-utils_77", + "nixpkgs": "nixpkgs_121" }, "locked": { "lastModified": 1712990762, @@ -20136,10 +19306,10 @@ "type": "github" } }, - "nix2container_17": { + "nix2container_15": { "inputs": { - "flake-utils": "flake-utils_90", - "nixpkgs": "nixpkgs_133" + "flake-utils": "flake-utils_85", + "nixpkgs": "nixpkgs_126" }, "locked": { "lastModified": 1703410130, @@ -20155,10 +19325,10 @@ "type": "github" } }, - "nix2container_18": { + "nix2container_16": { "inputs": { - "flake-utils": "flake-utils_94", - "nixpkgs": "nixpkgs_136" + "flake-utils": "flake-utils_89", + "nixpkgs": "nixpkgs_129" }, "locked": { "lastModified": 1703410130, @@ -20174,10 +19344,10 @@ "type": "github" } }, - "nix2container_19": { + "nix2container_17": { "inputs": { - "flake-utils": "flake-utils_96", - "nixpkgs": "nixpkgs_138" + "flake-utils": "flake-utils_91", + "nixpkgs": "nixpkgs_131" }, "locked": { "lastModified": 1712990762, @@ -20193,17 +19363,17 @@ "type": "github" } }, - "nix2container_2": { + "nix2container_18": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_18" + "flake-utils": "flake-utils_97", + "nixpkgs": "nixpkgs_135" }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", "owner": "nlewo", "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", "type": "github" }, "original": { @@ -20212,10 +19382,10 @@ "type": "github" } }, - "nix2container_20": { + "nix2container_19": { "inputs": { - "flake-utils": "flake-utils_102", - "nixpkgs": "nixpkgs_142" + "flake-utils": "flake-utils_101", + "nixpkgs": "nixpkgs_138" }, "locked": { "lastModified": 1703410130, @@ -20231,17 +19401,17 @@ "type": "github" } }, - "nix2container_21": { + "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_106", - "nixpkgs": "nixpkgs_145" + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_18" }, "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", "owner": "nlewo", "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { @@ -20250,10 +19420,10 @@ "type": "github" } }, - "nix2container_22": { + "nix2container_20": { "inputs": { - "flake-utils": "flake-utils_108", - "nixpkgs": "nixpkgs_147" + "flake-utils": "flake-utils_103", + "nixpkgs": "nixpkgs_140" }, "locked": { "lastModified": 1712990762, @@ -20269,10 +19439,10 @@ "type": "github" } }, - "nix2container_23": { + "nix2container_21": { "inputs": { - "flake-utils": "flake-utils_110", - "nixpkgs": "nixpkgs_149" + "flake-utils": "flake-utils_105", + "nixpkgs": "nixpkgs_142" }, "locked": { "lastModified": 1712990762, @@ -20288,10 +19458,10 @@ "type": "github" } }, - "nix2container_24": { + "nix2container_22": { "inputs": { - "flake-utils": "flake-utils_112", - "nixpkgs": "nixpkgs_151" + "flake-utils": "flake-utils_107", + "nixpkgs": "nixpkgs_144" }, "locked": { "lastModified": 1712990762, @@ -20385,34 +19555,35 @@ }, "nix2container_7": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_41" + "flake-utils": "flake-utils_46", + "nixpkgs": "nixpkgs_95" }, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", "owner": "nlewo", "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", "type": "github" }, "original": { "owner": "nlewo", + "ref": "init-nix-db", "repo": "nix2container", "type": "github" } }, "nix2container_8": { "inputs": { - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_43" + "flake-utils": "flake-utils_57", + "nixpkgs": "nixpkgs_105" }, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", "owner": "nlewo", "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", "type": "github" }, "original": { @@ -20423,20 +19594,19 @@ }, "nix2container_9": { "inputs": { - "flake-utils": "flake-utils_51", - "nixpkgs": "nixpkgs_102" + "flake-utils": "flake-utils_61", + "nixpkgs": "nixpkgs_108" }, "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", "owner": "nlewo", "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", "type": "github" }, "original": { "owner": "nlewo", - "ref": "init-nix-db", "repo": "nix2container", "type": "github" } @@ -20444,29 +19614,9 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_55", + "nixpkgs": "nixpkgs_58", "nixpkgs-regression": "nixpkgs-regression_9" }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_65", - "nixpkgs-regression": "nixpkgs-regression_10" - }, "locked": { "lastModified": 1652510778, "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", @@ -20482,11 +19632,11 @@ "type": "github" } }, - "nix_12": { + "nix_11": { "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_67", - "nixpkgs-regression": "nixpkgs-regression_11" + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_60", + "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { "lastModified": 1645189081, @@ -20502,11 +19652,11 @@ "type": "github" } }, - "nix_13": { + "nix_12": { "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_74", - "nixpkgs-regression": "nixpkgs-regression_12" + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_67", + "nixpkgs-regression": "nixpkgs-regression_11" }, "locked": { "lastModified": 1644413094, @@ -20523,11 +19673,11 @@ "type": "github" } }, - "nix_14": { + "nix_13": { "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_75", - "nixpkgs-regression": "nixpkgs-regression_13" + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { "lastModified": 1645437800, @@ -20544,11 +19694,11 @@ "type": "github" } }, - "nix_15": { + "nix_14": { "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_80", - "nixpkgs-regression": "nixpkgs-regression_14" + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_73", + "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { "lastModified": 1646164353, @@ -20565,10 +19715,10 @@ "type": "github" } }, - "nix_16": { + "nix_15": { "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_82" + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_75" }, "locked": { "lastModified": 1604400356, @@ -20584,11 +19734,11 @@ "type": "github" } }, - "nix_17": { + "nix_16": { "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_84", - "nixpkgs-regression": "nixpkgs-regression_15" + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_77", + "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { "lastModified": 1645189081, @@ -20604,10 +19754,31 @@ "type": "github" } }, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_89", + "nixpkgs-regression": "nixpkgs-regression_15" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, "nix_18": { "inputs": { "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_96", + "nixpkgs": "nixpkgs_91", "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { @@ -20671,20 +19842,20 @@ "nix_20": { "inputs": { "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_105", + "nixpkgs": "nixpkgs_99", "nixpkgs-regression": "nixpkgs-regression_18" }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", + "ref": "2.11.0", "repo": "nix", "type": "github" } @@ -20692,7 +19863,7 @@ "nix_21": { "inputs": { "lowdown-src": "lowdown-src_21", - "nixpkgs": "nixpkgs_106", + "nixpkgs": "nixpkgs_101", "nixpkgs-regression": "nixpkgs-regression_19" }, "locked": { @@ -20713,7 +19884,7 @@ "nix_22": { "inputs": { "lowdown-src": "lowdown-src_22", - "nixpkgs": "nixpkgs_108", + "nixpkgs": "nixpkgs_102", "nixpkgs-regression": "nixpkgs-regression_20" }, "locked": { @@ -20734,7 +19905,7 @@ "nix_23": { "inputs": { "lowdown-src": "lowdown-src_23", - "nixpkgs": "nixpkgs_109", + "nixpkgs": "nixpkgs_103", "nixpkgs-regression": "nixpkgs-regression_21" }, "locked": { @@ -20755,7 +19926,7 @@ "nix_24": { "inputs": { "lowdown-src": "lowdown-src_24", - "nixpkgs": "nixpkgs_110", + "nixpkgs": "nixpkgs_104", "nixpkgs-regression": "nixpkgs-regression_22" }, "locked": { @@ -20776,7 +19947,7 @@ "nix_25": { "inputs": { "lowdown-src": "lowdown-src_25", - "nixpkgs": "nixpkgs_111", + "nixpkgs": "nixpkgs_107", "nixpkgs-regression": "nixpkgs-regression_23" }, "locked": { @@ -20797,7 +19968,7 @@ "nix_26": { "inputs": { "lowdown-src": "lowdown-src_26", - "nixpkgs": "nixpkgs_114", + "nixpkgs": "nixpkgs_112", "nixpkgs-regression": "nixpkgs-regression_24" }, "locked": { @@ -20818,7 +19989,7 @@ "nix_27": { "inputs": { "lowdown-src": "lowdown-src_27", - "nixpkgs": "nixpkgs_119", + "nixpkgs": "nixpkgs_113", "nixpkgs-regression": "nixpkgs-regression_25" }, "locked": { @@ -20839,7 +20010,7 @@ "nix_28": { "inputs": { "lowdown-src": "lowdown-src_28", - "nixpkgs": "nixpkgs_120", + "nixpkgs": "nixpkgs_116", "nixpkgs-regression": "nixpkgs-regression_26" }, "locked": { @@ -20902,7 +20073,7 @@ "nix_30": { "inputs": { "lowdown-src": "lowdown-src_30", - "nixpkgs": "nixpkgs_130", + "nixpkgs": "nixpkgs_124", "nixpkgs-regression": "nixpkgs-regression_28" }, "locked": { @@ -20923,7 +20094,7 @@ "nix_31": { "inputs": { "lowdown-src": "lowdown-src_31", - "nixpkgs": "nixpkgs_131", + "nixpkgs": "nixpkgs_125", "nixpkgs-regression": "nixpkgs-regression_29" }, "locked": { @@ -20944,7 +20115,7 @@ "nix_32": { "inputs": { "lowdown-src": "lowdown-src_32", - "nixpkgs": "nixpkgs_132", + "nixpkgs": "nixpkgs_128", "nixpkgs-regression": "nixpkgs-regression_30" }, "locked": { @@ -20965,7 +20136,7 @@ "nix_33": { "inputs": { "lowdown-src": "lowdown-src_33", - "nixpkgs": "nixpkgs_135", + "nixpkgs": "nixpkgs_133", "nixpkgs-regression": "nixpkgs-regression_31" }, "locked": { @@ -20986,7 +20157,7 @@ "nix_34": { "inputs": { "lowdown-src": "lowdown-src_34", - "nixpkgs": "nixpkgs_140", + "nixpkgs": "nixpkgs_134", "nixpkgs-regression": "nixpkgs-regression_32" }, "locked": { @@ -21007,7 +20178,7 @@ "nix_35": { "inputs": { "lowdown-src": "lowdown-src_35", - "nixpkgs": "nixpkgs_141", + "nixpkgs": "nixpkgs_137", "nixpkgs-regression": "nixpkgs-regression_33" }, "locked": { @@ -21025,27 +20196,6 @@ "type": "github" } }, - "nix_36": { - "inputs": { - "lowdown-src": "lowdown-src_36", - "nixpkgs": "nixpkgs_144", - "nixpkgs-regression": "nixpkgs-regression_34" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, "nix_4": { "inputs": { "lowdown-src": "lowdown-src_4", @@ -21112,20 +20262,20 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_40", + "nixpkgs": "nixpkgs_44", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", "repo": "nix", "type": "github" } @@ -21133,20 +20283,18 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_51", - "nixpkgs-regression": "nixpkgs-regression_8" + "nixpkgs": "nixpkgs_46" }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", + "owner": "NixOS", "repo": "nix", "type": "github" } @@ -21154,18 +20302,19 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_53" + "nixpkgs": "nixpkgs_48", + "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "repo": "nix", "type": "github" } @@ -21385,41 +20534,6 @@ } }, "nixago_6": { - "inputs": { - "flake-utils": [ - "cardano-node-plutip", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node-plutip", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_7": { "inputs": { "flake-utils": [ "db-sync", @@ -21451,7 +20565,7 @@ "type": "github" } }, - "nixago_8": { + "nixago_7": { "inputs": { "flake-utils": [ "db-sync", @@ -21830,22 +20944,6 @@ "type": "github" } }, - "nixpkgs-2003_26": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2003_3": { "locked": { "lastModified": 1620055814, @@ -21976,11 +21074,11 @@ }, "nixpkgs-2105_10": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { @@ -22246,22 +21344,6 @@ "type": "github" } }, - "nixpkgs-2105_26": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2105_3": { "locked": { "lastModified": 1659914493, @@ -22312,11 +21394,11 @@ }, "nixpkgs-2105_6": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { @@ -22328,11 +21410,11 @@ }, "nixpkgs-2105_7": { "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -22344,11 +21426,11 @@ }, "nixpkgs-2105_8": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { @@ -22360,11 +21442,11 @@ }, "nixpkgs-2105_9": { "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { @@ -22392,11 +21474,11 @@ }, "nixpkgs-2111_10": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { @@ -22662,22 +21744,6 @@ "type": "github" } }, - "nixpkgs-2111_26": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2111_3": { "locked": { "lastModified": 1659446231, @@ -22728,11 +21794,11 @@ }, "nixpkgs-2111_6": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { @@ -22744,11 +21810,11 @@ }, "nixpkgs-2111_7": { "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -22760,11 +21826,11 @@ }, "nixpkgs-2111_8": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { @@ -22776,11 +21842,11 @@ }, "nixpkgs-2111_9": { "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { @@ -23030,22 +22096,6 @@ "type": "github" } }, - "nixpkgs-2205_23": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2205_3": { "locked": { "lastModified": 1682600000, @@ -23096,11 +22146,11 @@ }, "nixpkgs-2205_6": { "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { @@ -23112,11 +22162,11 @@ }, "nixpkgs-2205_7": { "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { @@ -23382,22 +22432,6 @@ "type": "github" } }, - "nixpkgs-2211_22": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2211_3": { "locked": { "lastModified": 1682682915, @@ -23448,11 +22482,11 @@ }, "nixpkgs-2211_6": { "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { @@ -23736,11 +22770,11 @@ }, "nixpkgs-2305_4": { "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { @@ -23958,22 +22992,6 @@ "type": "github" } }, - "nixpkgs-2311_17": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-2311_2": { "locked": { "lastModified": 1701386440, @@ -24348,9 +23366,10 @@ "type": "github" }, "original": { - "id": "nixpkgs", + "owner": "NixOS", + "repo": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "type": "github" } }, "nixpkgs-regression_19": { @@ -24625,22 +23644,6 @@ "type": "github" } }, - "nixpkgs-regression_34": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, "nixpkgs-regression_4": { "locked": { "lastModified": 1643052045, @@ -24699,10 +23702,9 @@ "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "id": "nixpkgs", "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" + "type": "indirect" } }, "nixpkgs-regression_8": { @@ -25249,15 +24251,15 @@ }, "nixpkgs-unstable_10": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -25265,11 +24267,11 @@ }, "nixpkgs-unstable_11": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { @@ -25281,11 +24283,11 @@ }, "nixpkgs-unstable_12": { "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { @@ -25297,17 +24299,17 @@ }, "nixpkgs-unstable_13": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, @@ -25567,22 +24569,6 @@ "type": "github" } }, - "nixpkgs-unstable_29": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, "nixpkgs-unstable_3": { "locked": { "lastModified": 1695318763, @@ -25633,31 +24619,31 @@ }, "nixpkgs-unstable_6": { "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, "nixpkgs-unstable_7": { "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -25665,11 +24651,11 @@ }, "nixpkgs-unstable_8": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { @@ -25681,11 +24667,11 @@ }, "nixpkgs-unstable_9": { "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { @@ -25713,158 +24699,158 @@ }, "nixpkgs_100": { "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_101": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_102": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_103": { "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", + "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_104": { "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_105": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_106": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_107": { "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_108": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_109": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -25887,121 +24873,121 @@ }, "nixpkgs_110": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_111": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_112": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_113": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_114": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_115": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_116": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_117": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { @@ -26012,11 +24998,11 @@ }, "nixpkgs_118": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { @@ -26028,16 +25014,15 @@ }, "nixpkgs_119": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } @@ -26059,27 +25044,27 @@ }, "nixpkgs_120": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_121": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { @@ -26090,11 +25075,11 @@ }, "nixpkgs_122": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { @@ -26122,42 +25107,43 @@ }, "nixpkgs_124": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_125": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_126": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { @@ -26168,11 +25154,11 @@ }, "nixpkgs_127": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { @@ -26184,31 +25170,31 @@ }, "nixpkgs_128": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_129": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -26231,84 +25217,68 @@ }, "nixpkgs_130": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_131": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_132": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_133": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_134": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_135": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -26324,7 +25294,7 @@ "type": "github" } }, - "nixpkgs_136": { + "nixpkgs_135": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -26339,7 +25309,7 @@ "type": "github" } }, - "nixpkgs_137": { + "nixpkgs_136": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -26355,68 +25325,7 @@ "type": "github" } }, - "nixpkgs_138": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_139": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_140": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_141": { + "nixpkgs_137": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -26432,7 +25341,7 @@ "type": "github" } }, - "nixpkgs_142": { + "nixpkgs_138": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -26447,7 +25356,7 @@ "type": "github" } }, - "nixpkgs_143": { + "nixpkgs_139": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -26463,29 +25372,27 @@ "type": "github" } }, - "nixpkgs_144": { + "nixpkgs_14": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs_145": { + "nixpkgs_140": { "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { @@ -26494,13 +25401,13 @@ "type": "github" } }, - "nixpkgs_146": { + "nixpkgs_141": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { @@ -26510,7 +25417,7 @@ "type": "github" } }, - "nixpkgs_147": { + "nixpkgs_142": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -26525,7 +25432,7 @@ "type": "github" } }, - "nixpkgs_148": { + "nixpkgs_143": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -26541,7 +25448,7 @@ "type": "github" } }, - "nixpkgs_149": { + "nixpkgs_144": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -26556,23 +25463,7 @@ "type": "github" } }, - "nixpkgs_15": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_150": { + "nixpkgs_145": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -26588,33 +25479,18 @@ "type": "github" } }, - "nixpkgs_151": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_152": { + "nixpkgs_15": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } @@ -27009,11 +25885,11 @@ }, "nixpkgs_39": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { @@ -27039,153 +25915,154 @@ }, "nixpkgs_40": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_41": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nixpkgs_42": { "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_43": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_44": { "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, "nixpkgs_45": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, "nixpkgs_46": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-20.09-small", "type": "indirect" } }, "nixpkgs_47": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_48": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, "nixpkgs_49": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" @@ -27208,115 +26085,6 @@ } }, "nixpkgs_50": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_51": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_52": { - "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - } - }, - "nixpkgs_53": { - "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" - } - }, - "nixpkgs_54": { - "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_55": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_56": { - "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_57": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -27332,7 +26100,7 @@ "type": "github" } }, - "nixpkgs_58": { + "nixpkgs_51": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -27348,7 +26116,7 @@ "type": "github" } }, - "nixpkgs_59": { + "nixpkgs_52": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -27364,23 +26132,7 @@ "type": "github" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_53": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -27396,7 +26148,7 @@ "type": "github" } }, - "nixpkgs_61": { + "nixpkgs_54": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -27412,7 +26164,7 @@ "type": "github" } }, - "nixpkgs_62": { + "nixpkgs_55": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -27427,7 +26179,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_56": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -27443,7 +26195,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_57": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -27458,7 +26210,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_58": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -27473,7 +26225,7 @@ "type": "indirect" } }, - "nixpkgs_66": { + "nixpkgs_59": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -27489,7 +26241,23 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_6": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -27504,7 +26272,7 @@ "type": "indirect" } }, - "nixpkgs_68": { + "nixpkgs_61": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -27520,7 +26288,7 @@ "type": "github" } }, - "nixpkgs_69": { + "nixpkgs_62": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -27536,23 +26304,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_63": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -27568,7 +26320,7 @@ "type": "github" } }, - "nixpkgs_71": { + "nixpkgs_64": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -27584,7 +26336,7 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_65": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -27600,7 +26352,7 @@ "type": "github" } }, - "nixpkgs_73": { + "nixpkgs_66": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -27616,7 +26368,7 @@ "type": "github" } }, - "nixpkgs_74": { + "nixpkgs_67": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -27631,7 +26383,7 @@ "type": "indirect" } }, - "nixpkgs_75": { + "nixpkgs_68": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -27646,7 +26398,7 @@ "type": "indirect" } }, - "nixpkgs_76": { + "nixpkgs_69": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -27662,7 +26414,23 @@ "type": "github" } }, - "nixpkgs_77": { + "nixpkgs_7": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -27676,7 +26444,7 @@ "type": "indirect" } }, - "nixpkgs_78": { + "nixpkgs_71": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -27692,7 +26460,7 @@ "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_72": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -27708,23 +26476,7 @@ "type": "github" } }, - "nixpkgs_8": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_80": { + "nixpkgs_73": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -27739,7 +26491,7 @@ "type": "indirect" } }, - "nixpkgs_81": { + "nixpkgs_74": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -27755,7 +26507,7 @@ "type": "github" } }, - "nixpkgs_82": { + "nixpkgs_75": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -27770,7 +26522,7 @@ "type": "indirect" } }, - "nixpkgs_83": { + "nixpkgs_76": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -27786,7 +26538,7 @@ "type": "github" } }, - "nixpkgs_84": { + "nixpkgs_77": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -27801,7 +26553,7 @@ "type": "indirect" } }, - "nixpkgs_85": { + "nixpkgs_78": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -27817,7 +26569,7 @@ "type": "github" } }, - "nixpkgs_86": { + "nixpkgs_79": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -27833,7 +26585,23 @@ "type": "github" } }, - "nixpkgs_87": { + "nixpkgs_8": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_80": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -27849,7 +26617,7 @@ "type": "github" } }, - "nixpkgs_88": { + "nixpkgs_81": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -27865,7 +26633,7 @@ "type": "github" } }, - "nixpkgs_89": { + "nixpkgs_82": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -27881,23 +26649,7 @@ "type": "github" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_90": { + "nixpkgs_83": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -27913,7 +26665,7 @@ "type": "github" } }, - "nixpkgs_91": { + "nixpkgs_84": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -27929,7 +26681,7 @@ "type": "github" } }, - "nixpkgs_92": { + "nixpkgs_85": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -27943,7 +26695,7 @@ "type": "indirect" } }, - "nixpkgs_93": { + "nixpkgs_86": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -27959,7 +26711,7 @@ "type": "github" } }, - "nixpkgs_94": { + "nixpkgs_87": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -27973,7 +26725,7 @@ "type": "indirect" } }, - "nixpkgs_95": { + "nixpkgs_88": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -27987,7 +26739,7 @@ "type": "indirect" } }, - "nixpkgs_96": { + "nixpkgs_89": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -28002,7 +26754,23 @@ "type": "indirect" } }, - "nixpkgs_97": { + "nixpkgs_9": { + "locked": { + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_90": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -28017,7 +26785,7 @@ "type": "github" } }, - "nixpkgs_98": { + "nixpkgs_91": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -28032,7 +26800,7 @@ "type": "indirect" } }, - "nixpkgs_99": { + "nixpkgs_92": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -28047,11 +26815,121 @@ "type": "github" } }, + "nixpkgs_93": { + "locked": { + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_94": { + "locked": { + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_95": { + "locked": { + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_96": { + "locked": { + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_97": { + "locked": { + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_98": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_99": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, "nomad": { "inputs": { - "nix": "nix_9", - "nixpkgs": "nixpkgs_54", - "utils": "utils_11" + "nix": "nix_8", + "nixpkgs": "nixpkgs_47", + "utils": "utils_9" }, "locked": { "lastModified": 1648128770, @@ -28070,11 +26948,11 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_8", + "devshell": "devshell_7", "inclusive": "inclusive_2", - "nix": "nix_10", - "nixpkgs": "nixpkgs_56", - "utils": "utils_12" + "nix": "nix_9", + "nixpkgs": "nixpkgs_49", + "utils": "utils_10" }, "locked": { "lastModified": 1648029666, @@ -28092,11 +26970,11 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_10", "inclusive": "inclusive_5", - "nix": "nix_12", - "nixpkgs": "nixpkgs_68", - "utils": "utils_17" + "nix": "nix_11", + "nixpkgs": "nixpkgs_61", + "utils": "utils_15" }, "locked": { "lastModified": 1648029666, @@ -28114,11 +26992,11 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_18", + "devshell": "devshell_17", "inclusive": "inclusive_10", - "nix": "nix_17", - "nixpkgs": "nixpkgs_85", - "utils": "utils_26" + "nix": "nix_16", + "nixpkgs": "nixpkgs_78", + "utils": "utils_24" }, "locked": { "lastModified": 1648029666, @@ -28136,10 +27014,10 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_9", + "devshell": "devshell_8", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_57", - "utils": "utils_13" + "nixpkgs": "nixpkgs_50", + "utils": "utils_11" }, "locked": { "lastModified": 1649836589, @@ -28157,10 +27035,10 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_11", "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_69", - "utils": "utils_18" + "nixpkgs": "nixpkgs_62", + "utils": "utils_16" }, "locked": { "lastModified": 1658244176, @@ -28178,10 +27056,10 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_19", + "devshell": "devshell_18", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_86", - "utils": "utils_27" + "nixpkgs": "nixpkgs_79", + "utils": "utils_25" }, "locked": { "lastModified": 1649836589, @@ -28199,9 +27077,9 @@ }, "nomad_2": { "inputs": { - "nix": "nix_16", - "nixpkgs": "nixpkgs_83", - "utils": "utils_25" + "nix": "nix_15", + "nixpkgs": "nixpkgs_76", + "utils": "utils_23" }, "locked": { "lastModified": 1648128770, @@ -28293,21 +27171,6 @@ "type": "github" } }, - "nosys_6": { - "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, "offchain-metadata-tools-service": { "flake": false, "locked": { @@ -28345,16 +27208,16 @@ "ogmios_2": { "flake": false, "locked": { - "lastModified": 1717661787, - "narHash": "sha256-AnIxPug+DnPHn69z+Vz+Us2a+Z3LnkI+LJaIyUm4c5w=", + "lastModified": 1706884055, + "narHash": "sha256-GL3MYr9+VK7aTwfKK/ZtLVAS3ZTWJ4mZUJ10e+MR2U0=", "owner": "CardanoSolutions", "repo": "ogmios", - "rev": "4dbf1f34d9ea046dda50bf0c58bd276f80f41784", + "rev": "523f1cdcaf8451c4ee6ecb8cd2cd14e61f93e4be", "type": "github" }, "original": { "owner": "CardanoSolutions", - "ref": "v6.4.0", + "ref": "v6.0.3", "repo": "ogmios", "type": "github" } @@ -28665,23 +27528,6 @@ "type": "github" } }, - "old-ghc-nix_26": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, "old-ghc-nix_3": { "flake": false, "locked": { @@ -28850,22 +27696,6 @@ } }, "ops-lib_4": { - "flake": false, - "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_5": { "flake": false, "locked": { "lastModified": 1649848729, @@ -28881,7 +27711,7 @@ "type": "github" } }, - "ops-lib_6": { + "ops-lib_5": { "flake": false, "locked": { "lastModified": 1649848729, @@ -28897,7 +27727,7 @@ "type": "github" } }, - "ops-lib_7": { + "ops-lib_6": { "flake": false, "locked": { "lastModified": 1649848729, @@ -29266,11 +28096,11 @@ }, "plutip": { "inputs": { - "CHaP": "CHaP_21", + "CHaP": "CHaP_20", "cardano-node": [ - "cardano-node-plutip" + "cardano-node" ], - "flake-compat": "flake-compat_60", + "flake-compat": "flake-compat_57", "hackage-nix": [ "hackage-nix" ], @@ -29301,7 +28131,7 @@ }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_38", + "flake-utils": "flake-utils_33", "nixpkgs": [ "db-sync", "cardano-world", @@ -29327,8 +28157,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_44", - "nixpkgs": "nixpkgs_92" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_85" }, "locked": { "lastModified": 1639823344, @@ -29373,10 +28203,10 @@ }, "pre-commit-hooks-nix_10": { "inputs": { - "flake-compat": "flake-compat_50", - "flake-utils": "flake-utils_95", + "flake-compat": "flake-compat_47", + "flake-utils": "flake-utils_90", "gitignore": "gitignore_10", - "nixpkgs": "nixpkgs_137", + "nixpkgs": "nixpkgs_130", "nixpkgs-stable": "nixpkgs-stable_19" }, "locked": { @@ -29395,10 +28225,10 @@ }, "pre-commit-hooks-nix_11": { "inputs": { - "flake-compat": "flake-compat_51", - "flake-utils": "flake-utils_97", + "flake-compat": "flake-compat_48", + "flake-utils": "flake-utils_92", "gitignore": "gitignore_11", - "nixpkgs": "nixpkgs_139", + "nixpkgs": "nixpkgs_132", "nixpkgs-stable": "nixpkgs-stable_21" }, "locked": { @@ -29417,10 +28247,10 @@ }, "pre-commit-hooks-nix_12": { "inputs": { - "flake-compat": "flake-compat_54", - "flake-utils": "flake-utils_103", + "flake-compat": "flake-compat_51", + "flake-utils": "flake-utils_98", "gitignore": "gitignore_12", - "nixpkgs": "nixpkgs_143", + "nixpkgs": "nixpkgs_136", "nixpkgs-stable": "nixpkgs-stable_23" }, "locked": { @@ -29439,10 +28269,10 @@ }, "pre-commit-hooks-nix_13": { "inputs": { - "flake-compat": "flake-compat_56", - "flake-utils": "flake-utils_107", + "flake-compat": "flake-compat_53", + "flake-utils": "flake-utils_102", "gitignore": "gitignore_13", - "nixpkgs": "nixpkgs_146", + "nixpkgs": "nixpkgs_139", "nixpkgs-stable": "nixpkgs-stable_25" }, "locked": { @@ -29461,10 +28291,10 @@ }, "pre-commit-hooks-nix_14": { "inputs": { - "flake-compat": "flake-compat_57", - "flake-utils": "flake-utils_109", + "flake-compat": "flake-compat_54", + "flake-utils": "flake-utils_104", "gitignore": "gitignore_14", - "nixpkgs": "nixpkgs_148", + "nixpkgs": "nixpkgs_141", "nixpkgs-stable": "nixpkgs-stable_27" }, "locked": { @@ -29483,10 +28313,10 @@ }, "pre-commit-hooks-nix_15": { "inputs": { - "flake-compat": "flake-compat_58", - "flake-utils": "flake-utils_111", + "flake-compat": "flake-compat_55", + "flake-utils": "flake-utils_106", "gitignore": "gitignore_15", - "nixpkgs": "nixpkgs_150", + "nixpkgs": "nixpkgs_143", "nixpkgs-stable": "nixpkgs-stable_29" }, "locked": { @@ -29505,10 +28335,10 @@ }, "pre-commit-hooks-nix_16": { "inputs": { - "flake-compat": "flake-compat_59", - "flake-utils": "flake-utils_113", + "flake-compat": "flake-compat_56", + "flake-utils": "flake-utils_108", "gitignore": "gitignore_16", - "nixpkgs": "nixpkgs_152", + "nixpkgs": "nixpkgs_145", "nixpkgs-stable": "nixpkgs-stable_31" }, "locked": { @@ -29527,10 +28357,10 @@ }, "pre-commit-hooks-nix_2": { "inputs": { - "flake-compat": "flake-compat_34", - "flake-utils": "flake-utils_63", + "flake-compat": "flake-compat_31", + "flake-utils": "flake-utils_58", "gitignore": "gitignore_2", - "nixpkgs": "nixpkgs_113", + "nixpkgs": "nixpkgs_106", "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { @@ -29549,10 +28379,10 @@ }, "pre-commit-hooks-nix_3": { "inputs": { - "flake-compat": "flake-compat_36", - "flake-utils": "flake-utils_67", + "flake-compat": "flake-compat_33", + "flake-utils": "flake-utils_62", "gitignore": "gitignore_3", - "nixpkgs": "nixpkgs_116", + "nixpkgs": "nixpkgs_109", "nixpkgs-stable": "nixpkgs-stable_5" }, "locked": { @@ -29571,10 +28401,10 @@ }, "pre-commit-hooks-nix_4": { "inputs": { - "flake-compat": "flake-compat_37", - "flake-utils": "flake-utils_69", + "flake-compat": "flake-compat_34", + "flake-utils": "flake-utils_64", "gitignore": "gitignore_4", - "nixpkgs": "nixpkgs_118", + "nixpkgs": "nixpkgs_111", "nixpkgs-stable": "nixpkgs-stable_7" }, "locked": { @@ -29593,10 +28423,10 @@ }, "pre-commit-hooks-nix_5": { "inputs": { - "flake-compat": "flake-compat_40", - "flake-utils": "flake-utils_75", + "flake-compat": "flake-compat_37", + "flake-utils": "flake-utils_70", "gitignore": "gitignore_5", - "nixpkgs": "nixpkgs_122", + "nixpkgs": "nixpkgs_115", "nixpkgs-stable": "nixpkgs-stable_9" }, "locked": { @@ -29615,10 +28445,10 @@ }, "pre-commit-hooks-nix_6": { "inputs": { - "flake-compat": "flake-compat_42", - "flake-utils": "flake-utils_79", + "flake-compat": "flake-compat_39", + "flake-utils": "flake-utils_74", "gitignore": "gitignore_6", - "nixpkgs": "nixpkgs_125", + "nixpkgs": "nixpkgs_118", "nixpkgs-stable": "nixpkgs-stable_11" }, "locked": { @@ -29637,10 +28467,10 @@ }, "pre-commit-hooks-nix_7": { "inputs": { - "flake-compat": "flake-compat_43", - "flake-utils": "flake-utils_81", + "flake-compat": "flake-compat_40", + "flake-utils": "flake-utils_76", "gitignore": "gitignore_7", - "nixpkgs": "nixpkgs_127", + "nixpkgs": "nixpkgs_120", "nixpkgs-stable": "nixpkgs-stable_13" }, "locked": { @@ -29659,10 +28489,10 @@ }, "pre-commit-hooks-nix_8": { "inputs": { - "flake-compat": "flake-compat_44", - "flake-utils": "flake-utils_83", + "flake-compat": "flake-compat_41", + "flake-utils": "flake-utils_78", "gitignore": "gitignore_8", - "nixpkgs": "nixpkgs_129", + "nixpkgs": "nixpkgs_122", "nixpkgs-stable": "nixpkgs-stable_15" }, "locked": { @@ -29681,10 +28511,10 @@ }, "pre-commit-hooks-nix_9": { "inputs": { - "flake-compat": "flake-compat_48", - "flake-utils": "flake-utils_91", + "flake-compat": "flake-compat_45", + "flake-utils": "flake-utils_86", "gitignore": "gitignore_9", - "nixpkgs": "nixpkgs_134", + "nixpkgs": "nixpkgs_127", "nixpkgs-stable": "nixpkgs-stable_17" }, "locked": { @@ -29704,8 +28534,8 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_29", - "nixpkgs": "nixpkgs_58", + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_51", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -29725,8 +28555,8 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_31", - "nixpkgs": "nixpkgs_61", + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_54", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -29746,8 +28576,8 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_33", - "nixpkgs": "nixpkgs_70", + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_63", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -29767,8 +28597,8 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_40", - "nixpkgs": "nixpkgs_87", + "flake-utils": "flake-utils_35", + "nixpkgs": "nixpkgs_80", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -29788,8 +28618,8 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_42", - "nixpkgs": "nixpkgs_90", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_83", "rust-overlay": "rust-overlay_7" }, "locked": { @@ -29813,10 +28643,9 @@ "cardano-configurations": "cardano-configurations", "cardano-nix": "cardano-nix", "cardano-node": "cardano-node", - "cardano-node-plutip": "cardano-node-plutip", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_28", + "flake-compat": "flake-compat_25", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_4", "hercules-ci-effects": "hercules-ci-effects_2", @@ -30465,23 +29294,6 @@ "type": "github" } }, - "secp256k1_23": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, "secp256k1_3": { "flake": false, "locked": { @@ -30856,23 +29668,6 @@ "type": "github" } }, - "sodium_23": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, "sodium_3": { "flake": false, "locked": { @@ -31284,22 +30079,6 @@ } }, "stackage_10": { - "flake": false, - "locked": { - "lastModified": 1718842995, - "narHash": "sha256-z1ETU1nJoTUpK7BcdSYuYph6njhJJR8hTZ197lzXX3E=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "b224b7d7461de53fcf700bb14bde43d6efa2ee3b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_11": { "flake": false, "locked": { "lastModified": 1714954836, @@ -31315,7 +30094,7 @@ "type": "github" } }, - "stackage_12": { + "stackage_11": { "flake": false, "locked": { "lastModified": 1714608979, @@ -31331,7 +30110,7 @@ "type": "github" } }, - "stackage_13": { + "stackage_12": { "flake": false, "locked": { "lastModified": 1713831135, @@ -31347,7 +30126,7 @@ "type": "github" } }, - "stackage_14": { + "stackage_13": { "flake": false, "locked": { "lastModified": 1703635755, @@ -31363,7 +30142,7 @@ "type": "github" } }, - "stackage_15": { + "stackage_14": { "flake": false, "locked": { "lastModified": 1703635755, @@ -31379,7 +30158,7 @@ "type": "github" } }, - "stackage_16": { + "stackage_15": { "flake": false, "locked": { "lastModified": 1713831135, @@ -31395,7 +30174,7 @@ "type": "github" } }, - "stackage_17": { + "stackage_16": { "flake": false, "locked": { "lastModified": 1703635755, @@ -31411,7 +30190,7 @@ "type": "github" } }, - "stackage_18": { + "stackage_17": { "flake": false, "locked": { "lastModified": 1703635755, @@ -31427,7 +30206,7 @@ "type": "github" } }, - "stackage_19": { + "stackage_18": { "flake": false, "locked": { "lastModified": 1714608979, @@ -31443,14 +30222,14 @@ "type": "github" } }, - "stackage_2": { + "stackage_19": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { @@ -31459,14 +30238,14 @@ "type": "github" } }, - "stackage_20": { + "stackage_2": { "flake": false, "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { @@ -31475,7 +30254,7 @@ "type": "github" } }, - "stackage_21": { + "stackage_20": { "flake": false, "locked": { "lastModified": 1703635755, @@ -31491,7 +30270,7 @@ "type": "github" } }, - "stackage_22": { + "stackage_21": { "flake": false, "locked": { "lastModified": 1703635755, @@ -31507,7 +30286,7 @@ "type": "github" } }, - "stackage_23": { + "stackage_22": { "flake": false, "locked": { "lastModified": 1713831135, @@ -31523,7 +30302,7 @@ "type": "github" } }, - "stackage_24": { + "stackage_23": { "flake": false, "locked": { "lastModified": 1703635755, @@ -31539,7 +30318,7 @@ "type": "github" } }, - "stackage_25": { + "stackage_24": { "flake": false, "locked": { "lastModified": 1703635755, @@ -31574,11 +30353,11 @@ "stackage_4": { "flake": false, "locked": { - "lastModified": 1712276009, - "narHash": "sha256-KlRJ+CGXRueyz2VRLDwra5JBNaI2GkltNJAjHa7fowE=", + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "758035379a5ac4390879e4cd5164abe0c96fcea7", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", "type": "github" }, "original": { @@ -31590,11 +30369,11 @@ "stackage_5": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { @@ -31606,11 +30385,11 @@ "stackage_6": { "flake": false, "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { @@ -31622,11 +30401,11 @@ "stackage_7": { "flake": false, "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { @@ -31638,11 +30417,11 @@ "stackage_8": { "flake": false, "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { @@ -31654,11 +30433,11 @@ "stackage_9": { "flake": false, "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "lastModified": 1719102283, + "narHash": "sha256-pon+cXgMWPlCiBx9GlRcjsjTHbCc8fDVgOGb3Z7qhRM=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "rev": "7df45e0bd9852810d8070f9c5257f8e7a4677b91", "type": "github" }, "original": { @@ -31930,58 +30709,13 @@ }, "std_6": { "inputs": { - "arion": [ - "cardano-node-plutip", - "tullia", - "std", - "blank" - ], - "blank": "blank_6", - "devshell": "devshell_7", + "devshell": "devshell_12", "dmerge": "dmerge_6", - "flake-utils": "flake-utils_26", - "incl": "incl_6", - "makes": [ - "cardano-node-plutip", - "tullia", - "std", - "blank" - ], - "microvm": [ - "cardano-node-plutip", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_6", - "nixago": "nixago_6", - "nixpkgs": "nixpkgs_45", - "nosys": "nosys_6", - "yants": "yants_6" - }, - "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", - "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_7": { - "inputs": { - "devshell": "devshell_13", - "dmerge": "dmerge_7", - "flake-utils": "flake-utils_34", + "flake-utils": "flake-utils_29", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago_7", - "nixpkgs": "nixpkgs_71", - "yants": "yants_8" + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_64", + "yants": "yants_7" }, "locked": { "lastModified": 1661370377, @@ -31997,15 +30731,15 @@ "type": "github" } }, - "std_8": { + "std_7": { "inputs": { - "devshell": "devshell_21", - "dmerge": "dmerge_8", - "flake-utils": "flake-utils_50", + "devshell": "devshell_20", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_45", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_8", - "nixpkgs": "nixpkgs_101", - "yants": "yants_10" + "nixago": "nixago_7", + "nixpkgs": "nixpkgs_94", + "yants": "yants_9" }, "locked": { "lastModified": 1661367957, @@ -32021,11 +30755,11 @@ "type": "github" } }, - "std_9": { + "std_8": { "inputs": { - "devshell": "devshell_22", - "nixpkgs": "nixpkgs_104", - "yants": "yants_11" + "devshell": "devshell_21", + "nixpkgs": "nixpkgs_97", + "yants": "yants_10" }, "locked": { "lastModified": 1652784712, @@ -33198,8 +31932,8 @@ }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_45", - "nixpkgs": "nixpkgs_95" + "flake-utils": "flake-utils_40", + "nixpkgs": "nixpkgs_88" }, "locked": { "lastModified": 1654211622, @@ -33320,7 +32054,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_30", + "flake-utils": "flake-utils_25", "nixpkgs": [ "db-sync", "cardano-world", @@ -33349,7 +32083,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_35", + "flake-utils": "flake-utils_30", "nixpkgs": [ "db-sync", "cardano-world", @@ -33376,7 +32110,7 @@ "inputs": { "bats-assert": "bats-assert_4", "bats-support": "bats-support_4", - "flake-utils": "flake-utils_41", + "flake-utils": "flake-utils_36", "nixpkgs": [ "db-sync", "cardano-world", @@ -33536,30 +32270,9 @@ }, "tullia_4": { "inputs": { - "nix-nomad": "nix-nomad_4", - "nix2container": "nix2container_8", - "nixpkgs": "nixpkgs_44", - "std": "std_6" - }, - "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_5": { - "inputs": { - "nix2container": "nix2container_9", - "nixpkgs": "nixpkgs_103", - "std": "std_9" + "nix2container": "nix2container_7", + "nixpkgs": "nixpkgs_96", + "std": "std_8" }, "locked": { "lastModified": 1657811465, @@ -33594,36 +32307,6 @@ } }, "utils_10": { - "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_11": { - "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_12": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33638,7 +32321,7 @@ "type": "github" } }, - "utils_13": { + "utils_11": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33653,7 +32336,7 @@ "type": "github" } }, - "utils_14": { + "utils_12": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -33668,7 +32351,7 @@ "type": "github" } }, - "utils_15": { + "utils_13": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33683,7 +32366,7 @@ "type": "github" } }, - "utils_16": { + "utils_14": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -33698,7 +32381,7 @@ "type": "github" } }, - "utils_17": { + "utils_15": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33713,7 +32396,7 @@ "type": "github" } }, - "utils_18": { + "utils_16": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33728,7 +32411,7 @@ "type": "github" } }, - "utils_19": { + "utils_17": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -33743,22 +32426,22 @@ "type": "github" } }, - "utils_2": { + "utils_18": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, - "utils_20": { + "utils_19": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33773,22 +32456,22 @@ "type": "github" } }, - "utils_21": { + "utils_2": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, - "utils_22": { + "utils_20": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33803,7 +32486,7 @@ "type": "github" } }, - "utils_23": { + "utils_21": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -33818,7 +32501,7 @@ "type": "github" } }, - "utils_24": { + "utils_22": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -33833,7 +32516,7 @@ "type": "github" } }, - "utils_25": { + "utils_23": { "locked": { "lastModified": 1601282935, "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", @@ -33848,7 +32531,7 @@ "type": "github" } }, - "utils_26": { + "utils_24": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33863,7 +32546,7 @@ "type": "github" } }, - "utils_27": { + "utils_25": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33878,7 +32561,7 @@ "type": "github" } }, - "utils_28": { + "utils_26": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -33893,7 +32576,7 @@ "type": "github" } }, - "utils_29": { + "utils_27": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -33908,13 +32591,13 @@ "type": "github" } }, - "utils_3": { + "utils_28": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -33923,13 +32606,13 @@ "type": "github" } }, - "utils_30": { + "utils_3": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -34000,11 +32683,11 @@ }, "utils_8": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -34015,11 +32698,11 @@ }, "utils_9": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -34087,29 +32770,6 @@ } }, "yants_10": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", - "owner": "divnix", - "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_11": { "inputs": { "nixpkgs": [ "db-sync", @@ -34231,19 +32891,14 @@ }, "yants_6": { "inputs": { - "nixpkgs": [ - "cardano-node-plutip", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_55" }, "locked": { - "lastModified": 1667096281, - "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", "owner": "divnix", "repo": "yants", - "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", "type": "github" }, "original": { @@ -34254,7 +32909,13 @@ }, "yants_7": { "inputs": { - "nixpkgs": "nixpkgs_62" + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, @@ -34272,13 +32933,7 @@ }, "yants_8": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_90" }, "locked": { "lastModified": 1645126146, @@ -34296,7 +32951,12 @@ }, "yants_9": { "inputs": { - "nixpkgs": "nixpkgs_97" + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, diff --git a/flake.nix b/flake.nix index e9d6adca3..c7d77213f 100644 --- a/flake.nix +++ b/flake.nix @@ -32,16 +32,14 @@ flake = false; }; - cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-sancho"; - - # TODO: Replace Plutip with cardano-testnet and remove this input - cardano-node-plutip.url = "github:IntersectMBO/cardano-node/8.1.1"; + # FIXME: cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-sancho"; + cardano-node.url = "github:input-output-hk/cardano-node/8.7.2"; # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations?rev=692010ed0f454bfbb566c06443227c79e2f4dbab"; + url = "github:input-output-hk/cardano-configurations?rev=d952529afdfdf6d53ce190b1bf8af990a7ae9590"; flake = false; }; @@ -62,7 +60,7 @@ # Get Ogmios test fixtures ogmios = { - url = "github:CardanoSolutions/ogmios/v6.4.0"; + url = "github:CardanoSolutions/ogmios/v6.0.3"; flake = false; }; @@ -83,7 +81,7 @@ iohk-nix.follows = "iohk-nix"; haskell-nix.follows = "haskell-nix"; hackage-nix.follows = "hackage-nix"; - cardano-node.follows = "cardano-node-plutip"; + cardano-node.follows = "cardano-node"; }; }; @@ -94,6 +92,7 @@ { self , nixpkgs , cardano-configurations + , cardano-node , ... }@inputs: let @@ -104,7 +103,7 @@ "aarch64-darwin" ]; - ogmiosVersion = "6.4.0"; + ogmiosVersion = "6.0.3"; # FIXME kupoVersion = "2.8.0"; perSystem = nixpkgs.lib.genAttrs supportedSystems; @@ -192,6 +191,9 @@ nodePackages.eslint nodePackages.prettier blockfrost-backend-ryo + cardano-node.packages.${system}.cardano-testnet + cardano-node.packages.${system}.cardano-cli + cardano-node.packages.${system}.cardano-node ]; }; }; @@ -270,7 +272,7 @@ inherit pkgs; inherit (inputs) plutip CHaP; inherit (pkgs) system; - cardano-node = inputs.cardano-node-plutip; + cardano-node = inputs.cardano-node; src = ./plutip-server; }; in diff --git a/package.json b/package.json index a21257dff..3e6cfc8a0 100755 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "blockfrost-test": "source ./test/blockfrost.env && spago run --main Test.Ctl.Blockfrost.Contract", "blockfrost-local-test": "source ./test/blockfrost-local.env && spago run --main Test.Ctl.Blockfrost.Contract", "unit-test": "spago run --main Test.Ctl.Unit", - "plutip-test": "nix build .#checks.x86_64-linux.ctl-plutip-test", + "plutip-test": "spago run --main Test.Ctl.Plutip", "staking-test": "nix build .#checks.x86_64-linux.ctl-staking-test", "e2e-serve": "make esbuild-serve", "e2e-test": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run'", diff --git a/spago-packages.nix b/spago-packages.nix index 62adad6e6..9a93e42d7 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -1001,6 +1001,18 @@ let installPhase = "ln -s $src $out"; }; + "node-streams-aff" = pkgs.stdenv.mkDerivation { + name = "node-streams-aff"; + version = "v4.0.1"; + src = pkgs.fetchgit { + url = "https://github.com/purescript-node/purescript-node-streams-aff.git"; + rev = "5c9b6937d14d6fed2273e3ac8780e3d256763e7d"; + sha256 = "1vm5s6mlawdpqamnqfyh1vbsybjm2s972m02h8mza4m47zlca948"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "node-url" = pkgs.stdenv.mkDerivation { name = "node-url"; version = "v6.0.0"; diff --git a/spago.dhall b/spago.dhall index 3fa172ac8..3a6efba8d 100644 --- a/spago.dhall +++ b/spago.dhall @@ -63,6 +63,7 @@ You can edit this file as you like. , "node-process" , "node-readline" , "node-streams" + , "node-streams-aff" , "nonempty" , "now" , "nullable" @@ -71,6 +72,7 @@ You can edit this file as you like. , "ordered-collections" , "orders" , "parallel" + , "parsing" , "partial" , "plutus-types" , "posix-types" diff --git a/src/Contract/Test/Plutip.purs b/src/Contract/Test/Plutip.purs index 459fd40f7..db648a781 100644 --- a/src/Contract/Test/Plutip.purs +++ b/src/Contract/Test/Plutip.purs @@ -61,7 +61,7 @@ defaultPlutipConfig = , secure: false , path: Nothing } - , suppressLogs: true + , suppressLogs: false , customLogger: Nothing , hooks: emptyHooks , clusterConfig: diff --git a/src/Internal/CardanoCli.purs b/src/Internal/CardanoCli.purs new file mode 100644 index 000000000..9f5e97b5e --- /dev/null +++ b/src/Internal/CardanoCli.purs @@ -0,0 +1,230 @@ +module Ctl.Internal.CardanoCli + ( CardanoNodeInstance + , CardanoCliTxOutInfo + , queryUtxosViaCardanoCli + , cardanoCliTxOutInfoToUtxo + ) where + +import Contract.Prelude + +import Cardano.Serialization.Lib as CSL +import Cardano.Types as Cardano.Types +import Cardano.Types.Address as Cardano.Types.Address +import Cardano.Types.AssetName as Cardano.Types.AssetName +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Value as Cardano.Types.Value +import Contract.Value as Contract.Value +import Control.Alt ((<|>)) +import Control.Monad.Except (throwError) +import Control.Parallel (parallel, sequential) +import Ctl.Internal.Plutip.Spawn as Ctl.Internal.Plutip.Spawn +import Ctl.Internal.Plutip.Utils (annotateError) +import Data.Array as Array +import Data.Bifunctor (lmap) +import Data.ByteArray (ByteArray) +import Data.ByteArray as Data.ByteArray +import Data.List as List +import Data.String as String +import Data.UInt (UInt) +import Data.UInt as UInt +import Effect.Exception (error) +import Node.Buffer as Node.Buffer +import Node.ChildProcess as Node.ChildProcess +import Node.Encoding as Node.Encoding +import Node.Path as Node.Path +import Node.Stream.Aff as Node.Stream.Aff +import Parsing as Parsing +import Parsing.Combinators as Parsing.Combinators +import Parsing.String as Parsing.String +import Parsing.String.Basic as Parsing.String.Basic + +type CardanoNodeInstance = + { socketPath :: Node.Path.FilePath + , testnetMagic :: Int + } + +cardanoCliTxOutInfoToUtxo + :: Cardano.Types.Address + -> CardanoCliTxOutInfo + -> Cardano.Types.TransactionInput /\ Cardano.Types.TransactionOutput +cardanoCliTxOutInfoToUtxo address { input: { txHash, txOutId }, amount } = + let + txIn = Cardano.Types.TransactionInput + { index: txOutId, transactionId: txHash } + txOut = Cardano.Types.TransactionOutput + { address + , amount + , datum: Nothing + , scriptRef: Nothing + } + in + txIn /\ txOut + +type CardanoCliTxOutInfo = + { input :: + { txHash :: Cardano.Types.TransactionHash + , txOutId :: UInt + } + , amount :: Cardano.Types.Value -- Coin + } + +-- | A line of the CLI output of 'cardano-cli query utxo' containing utxo information +newtype CliUtxo = CliUtxo String + +parseTxOutIgnoringDatums + :: CliUtxo -> Either Parsing.ParseError CardanoCliTxOutInfo +parseTxOutIgnoringDatums (CliUtxo src) = Parsing.runParser src do + Parsing.String.Basic.skipSpaces + txHash <- parseTxHash + Parsing.String.Basic.skipSpaces + txOutId <- parseTxOutputIndex + let + txDatumBegin = + Parsing.String.string "TxOutDatumNone" + <|> Parsing.String.string "TxOutDatumInline" + <|> Parsing.String.string "TxOutDatumHash" + + Parsing.String.Basic.skipSpaces + rawValues <- Parsing.Combinators.manyTill + (parseAsset <* Parsing.String.string " + ") + txDatumBegin + value <- + noteParser "Can't sum up asset amounts" + $ Contract.Value.sum + $ Array.fromFoldable rawValues + pure + { input: { txHash, txOutId } + , amount: value + } + +-- | Queries address funds via cardano-cli and returns the first UTxO data. +-- Note, that it assumes no output datum and script ref. +queryUtxosViaCardanoCli + :: CardanoNodeInstance + -> Cardano.Types.Address + -> Aff (Array CardanoCliTxOutInfo) +queryUtxosViaCardanoCli { socketPath, testnetMagic } address = + annotateError "queryUtxosViaCardanoCli" do + { stdout } <- execCardanoCli + [ "query" + , "utxo" + , "--socket-path" + , socketPath + , "--testnet-magic" + , show testnetMagic + , "--address" + , Cardano.Types.Address.toBech32 address + ] + let + parsingError utxos (Parsing.ParseError msg pos) = mconcat + [ "Cannot parse UTxOs: " + , show utxos + , " because of " + , msg + , " at " + , show pos + ] + case List.fromFoldable stdout of + List.Cons _ (List.Cons _ utxos) -> + map Array.fromFoldable + <<< liftEither + <<< lmap (error <<< parsingError utxos) + $ for utxos (parseTxOutIgnoringDatums <<< CliUtxo) + _ -> throwError $ error $ "Output is too short " <> show stdout + +execCardanoCli + :: Array String + -> Aff + { stdout :: Array String + , process :: Node.ChildProcess.ChildProcess + } +execCardanoCli params = annotateError "execCardanoCli" do + let cmd = "cardano-cli " <> intercalate " " params + log $ show { execCardanoCli: cmd } + { channels, process } <- Ctl.Internal.Plutip.Spawn.exec cmd + let + bufferToLines = + map (String.split (String.Pattern "\n") <<< String.trim) + <<< liftEffect + <<< Node.Buffer.toString Node.Encoding.UTF8 + output <- sequential ado + stderr <- parallel + $ map join + <<< traverse bufferToLines + <<< fst + =<< Node.Stream.Aff.readAll channels.stderr + stdout <- parallel + $ map join + $ traverse bufferToLines + <<< fst + =<< Node.Stream.Aff.readAll channels.stdout + in { stderr, stdout } + when (not $ Array.null output.stderr) do + throwError + $ error + $ intercalate "\n" output.stderr + pure { stdout: output.stdout, process } + +-- * Parsing + +parseTxOutputIndex :: Parsing.Parser String UInt +parseTxOutputIndex = parseNatural \n -> + note ("Can't parse Tx output index: " <> n) + $ UInt.fromString n + +parseAsset :: Parsing.Parser String Cardano.Types.Value +parseAsset = do + amount <- parseAmount + Parsing.String.Basic.skipSpaces + parseLovelace amount <|> parseNativeAsset amount + where + parseAmount = parseNatural \n -> + note ("Can't parse asset amount: " <> n) + $ BigNum.fromString n + parseLovelace amount = ado + void $ Parsing.String.string "lovelace" + in Cardano.Types.Value.coinToValue $ wrap amount + parseNativeAsset amount = ado + cs <- parseScriptHash + void $ Parsing.String.char '.' + tn <- parseAssetName + in Contract.Value.singleton cs tn amount + +parseTxHash :: Parsing.Parser String Cardano.Types.TransactionHash +parseTxHash = map wrap + <<< noteParser "Cannot parse tx hash from byte array" + <<< CSL.fromBytes + =<< parseHex + +parseScriptHash :: Parsing.Parser String Cardano.Types.ScriptHash +parseScriptHash = parseHex >>= \bytes -> + map wrap + $ noteParser ("Cannot parse script hash from byte array" <> show bytes) + $ CSL.fromBytes bytes + +parseAssetName :: Parsing.Parser String Cardano.Types.AssetName +parseAssetName = + noteParser "Cannot create asset name from the parsed bytes" + <<< Cardano.Types.AssetName.mkAssetName + =<< parseHex + +makeString :: forall f. Foldable f => f Char -> String +makeString = String.fromCodePointArray + <<< map String.codePointFromChar + <<< Array.fromFoldable + +parseNatural :: forall n. (String -> Either String n) -> Parsing.Parser String n +parseNatural toNumber = Parsing.liftEither + <<< toNumber + <<< makeString + =<< Parsing.Combinators.many Parsing.String.Basic.digit + +noteParser :: forall s a. String -> Maybe a -> Parsing.Parser s a +noteParser err = Parsing.liftEither <<< note err + +parseHex :: Parsing.Parser String ByteArray +parseHex = + noteParser "Cannot parse hex-encoded byte array" + <<< Data.ByteArray.hexToByteArray + <<< makeString + =<< Parsing.Combinators.many Parsing.String.Basic.hexDigit \ No newline at end of file diff --git a/src/Internal/CardanoCli/QueryHandler.purs b/src/Internal/CardanoCli/QueryHandler.purs new file mode 100644 index 000000000..b4ffcf359 --- /dev/null +++ b/src/Internal/CardanoCli/QueryHandler.purs @@ -0,0 +1,91 @@ +module Internal.CardanoCli.QueryHandler + ( withCardanoCliCompletion + ) where + +import Contract.Prelude + +import Cardano.Types as Cardano.Types +import Cardano.Types.Address (Address) +import Cardano.Types.TransactionInput (TransactionInput(..)) +import Cardano.Types.TransactionOutput (TransactionOutput(..)) +import Contract.ClientError as Contract.ClientError +import Contract.Monad (Contract, ContractEnv) +import Control.Alt ((<|>)) +import Control.Monad.Error.Class (try) +import Control.Monad.Except (ExceptT(..), runExceptT) +import Control.Monad.Reader (local) +import Ctl.Internal.CardanoCli as CardanoCli +import Data.Bifunctor (bimap) +import Data.Lens (Lens', (%~)) +import Data.Lens.Record (prop) +import Data.Map as Map +import Effect.Exception (Error, message) +import Type.Proxy (Proxy(..)) + +type UtxosAtQuery = + Cardano.Types.Address + -> Aff (Either Contract.ClientError.ClientError Cardano.Types.UtxoMap) + +type GetUtxoByOrefQuery = + TransactionInput + -> Aff (Either Contract.ClientError.ClientError (Maybe TransactionOutput)) + +-- | Adds to the utxosAt results UTxOs found by cardano-cli but not found by the current 'utxosAt' query. +-- UTxOs found by cardano-cli assumed to have no datum or script ref. +withCardanoCliCompletion + :: forall a + . CardanoCli.CardanoNodeInstance + -> Address + -> Contract a + -> Contract a +withCardanoCliCompletion node genesisAddr = + local $ (utxosAtL %~ completeUtxosAt node) >>> (getUtxoByOrefL %~ completeGetUtxoByOref node genesisAddr) + +utxosAtL :: Lens' ContractEnv UtxosAtQuery +utxosAtL = prop (Proxy :: _ "handle") <<< prop (Proxy :: _ "utxosAt") + +getUtxoByOrefL :: Lens' ContractEnv GetUtxoByOrefQuery +getUtxoByOrefL = prop (Proxy :: _ "handle") <<< prop (Proxy :: _ "getUtxoByOref") + +-- | Adds to the results UTxOs found by cardano-cli but not found by the given 'utxosAt' query. +-- UTxOs found by cardano-cli assumed to have no datum or script ref. +completeUtxosAt + :: CardanoCli.CardanoNodeInstance + -> UtxosAtQuery + -> UtxosAtQuery +completeUtxosAt node utxosAt address = runExceptT do + let + toCliError :: Error -> Contract.ClientError.ClientError + toCliError = Contract.ClientError.ClientOtherError <<< message + + toUtxoMap :: Array CardanoCli.CardanoCliTxOutInfo -> Cardano.Types.UtxoMap + toUtxoMap = Map.fromFoldable + <<< map (CardanoCli.cardanoCliTxOutInfoToUtxo address) + cardanoCliUtxos <- ExceptT + $ map (bimap toCliError toUtxoMap) + $ try + $ CardanoCli.queryUtxosViaCardanoCli node address + kupoUtxos <- ExceptT $ utxosAt address + pure $ Map.union kupoUtxos cardanoCliUtxos + +-- | Adds to the results UTxOs found by cardano-cli but not found by the given 'utxosAt' query. +-- UTxOs found by cardano-cli assumed to have no datum or script ref. +completeGetUtxoByOref -- FIXME + :: CardanoCli.CardanoNodeInstance + -> Address + -> GetUtxoByOrefQuery + -> GetUtxoByOrefQuery +completeGetUtxoByOref node address getUtxoByOref oref = runExceptT do + let + toCliError :: Error -> Contract.ClientError.ClientError + toCliError = Contract.ClientError.ClientOtherError <<< message + + toUtxoMap :: Array CardanoCli.CardanoCliTxOutInfo -> Cardano.Types.UtxoMap + toUtxoMap = Map.fromFoldable + <<< map (CardanoCli.cardanoCliTxOutInfoToUtxo address) + cardanoCliUtxos <- ExceptT + $ map (bimap toCliError toUtxoMap) + $ try + $ CardanoCli.queryUtxosViaCardanoCli node address + mUtxo <- ExceptT $ getUtxoByOref oref + pure $ mUtxo <|> Map.lookup oref cardanoCliUtxos diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index 05fd89c54..e26582c5e 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -4,6 +4,7 @@ import Prelude import Cardano.Types (Coin, Ed25519KeyHash, Transaction, UtxoMap) import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) +import Cardano.Types.BigNum (fromInt) as BigNum import Cardano.Types.Credential (asPubKeyHash) import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.Contract (getProtocolParameters) @@ -18,7 +19,7 @@ import Data.Either (hush) import Data.Lens.Getter ((^.)) import Data.Map (keys, lookup, values) as Map import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap) +import Data.Newtype (unwrap, wrap) import Data.Set (Set) import Data.Set (difference, fromFoldable, intersection, mapMaybe, union) as Set import Data.Traversable (for) @@ -30,7 +31,7 @@ calculateMinFee :: Transaction -> UtxoMap -> Contract Coin calculateMinFee tx additionalUtxos = do selfSigners <- getSelfSigners tx additionalUtxos pparams <- getProtocolParameters - calculateMinFeeCsl pparams selfSigners tx + append (wrap $ BigNum.fromInt 1_000_000) <$> calculateMinFeeCsl pparams selfSigners tx -- | This function estimates the set of keys that must be used -- | for signing to make the transaction valid for the network. diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 104314d08..21c067145 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -1,16 +1,23 @@ module Ctl.Internal.Plutip.Server ( checkPlutipServer + , execDistribution , runPlutipContract , runPlutipTestPlan + , startOgmios + , startKupo , startPlutipCluster , startPlutipServer , stopChildProcessWithPort , stopPlutipCluster , testPlutipContracts , withPlutipContractEnv + , makeNaiveClusterContractEnv + , makeClusterContractEnv + , mkLogging + , checkPortsAreFree ) where -import Prelude +import Contract.Prelude import Aeson (decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) import Affjax (defaultRequest) as Affjax @@ -21,9 +28,9 @@ import Cardano.Types (NetworkId(MainnetId)) import Cardano.Types.BigNum as BigNum import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) import Contract.Chain (waitNSlots) -import Contract.Config (defaultSynchronizationParams, defaultTimeParams) +import Contract.Config (Hooks, defaultSynchronizationParams, defaultTimeParams) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) -import Control.Monad.Error.Class (liftEither, throwError) +import Control.Monad.Error.Class (throwError) import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) @@ -41,10 +48,7 @@ import Ctl.Internal.Plutip.PortCheck (isPortAvailable) import Ctl.Internal.Plutip.Spawn ( ManagedProcess , NewOutputAction(Success, NoOp) - , OnSignalRef - , cleanupOnSigint - , cleanupTmpDir - , removeOnSignal + , _rmdirSync , spawn , stop ) @@ -57,8 +61,15 @@ import Ctl.Internal.Plutip.Types , StopClusterRequest(StopClusterRequest) , StopClusterResponse ) -import Ctl.Internal.Plutip.Utils (tmpdir) +import Ctl.Internal.Plutip.Utils + ( addCleanup + , after + , runCleanup + , tmpdir + , whenError + ) import Ctl.Internal.QueryM.UniqueId (uniqueId) +import Ctl.Internal.ServerConfig (ServerConfig) import Ctl.Internal.Service.Error ( ClientError(ClientDecodeJsonError, ClientHttpError) , pprintClientError @@ -81,7 +92,7 @@ import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) import Data.Array as Array import Data.Bifunctor (lmap) -import Data.Either (Either(Left, Right), either, isLeft) +import Data.Either (Either(Left, Right), either) import Data.Foldable (fold) import Data.HTTP.Method as Method import Data.Log.Level (LogLevel) @@ -91,7 +102,7 @@ import Data.Newtype (over, unwrap, wrap) import Data.Set as Set import Data.String.CodeUnits (indexOf) as String import Data.String.Pattern (Pattern(Pattern)) -import Data.Traversable (foldMap, for, for_, sequence_, traverse_) +import Data.Traversable (foldMap, for, for_, traverse_) import Data.Tuple (fst, snd) import Data.Tuple.Nested (type (/\), (/\)) import Data.UInt (UInt) @@ -115,7 +126,7 @@ import Mote.Monad (MoteT(MoteT), mapTest) import Mote.TestPlanM (TestPlanM) import Node.ChildProcess (defaultSpawnOptions) import Node.FS.Sync (exists, mkdir) as FSSync -import Node.Path (FilePath, dirname) +import Node.Path (FilePath) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) import Type.Prelude (Proxy(Proxy)) @@ -146,8 +157,9 @@ withPlutipContractEnv plutipCfg distr cont = do Aff.bracket (try $ startPlutipContractEnv plutipCfg distr cleanupRef) (const $ runCleanup cleanupRef) - $ liftEither >=> \{ env, wallets, printLogs } -> - whenError printLogs (cont env wallets) + $ liftEither + >=> \{ env, wallets, printLogs } -> + whenError printLogs (cont env wallets) -- | Run several `Contract`s in tests in a (single) Plutip environment (plutip-server and cluster, kupo, etc.). -- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. @@ -203,18 +215,6 @@ runPlutipTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = do result <- liftEffect $ Ref.read resultRef >>= liftEither t result -runCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -runCleanup cleanupRef = do - cleanups <- liftEffect $ Ref.read cleanupRef - sequence_ (try <$> cleanups) - --- Similar to `catchError` but preserves the error -whenError :: forall (a :: Type). Aff Unit -> Aff a -> Aff a -whenError whenErrorAction action = do - res <- try action - when (isLeft res) whenErrorAction - liftEither res - -- | Lifts the UTxO distributions of each test out of Mote, into a combined -- | distribution. Adapts the tests to pick their distribution out of the -- | combined distribution. @@ -292,7 +292,7 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do "Could not start Plutip cluster" tryWithReport (startOgmios' response) "Could not start Ogmios" tryWithReport (startKupo' response) "Could not start Kupo" - { env, printLogs, clearLogs } <- mkContractEnv' + { env, printLogs, clearLogs } <- makeClusterContractEnv cleanupRef plutipCfg wallets <- mkWallets' env ourKey response void $ try $ liftEffect do for_ env.hooks.onClusterStartup \clusterParamsCb -> do @@ -320,23 +320,11 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do Left err -> throwError $ error $ prefix <> ": " <> message err Right result' -> pure result' - -- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run - -- later. - bracket - :: forall (a :: Type) (b :: Type) - . Aff a - -> (a -> Aff Unit) - -> (a -> Aff b) - -> Aff b - bracket before after action = do - Aff.bracket - before - (\res -> liftEffect $ Ref.modify_ ([ after res ] <> _) cleanupRef) - action - startPlutipServer' :: Aff Unit startPlutipServer' = - bracket (startPlutipServer plutipCfg) + cleanupBracket + cleanupRef + (startPlutipServer plutipCfg) (stopChildProcessWithPort plutipCfg.port) (const $ checkPlutipServer plutipCfg) @@ -347,28 +335,28 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do distrArray = encodeDistribution $ ourInitialUtxos (encodeDistribution distr) /\ - distr + distr for_ distrArray $ traverse_ \n -> when (n < BigNum.fromInt 1_000_000) do liftEffect $ throw $ "UTxO is too low: " <> BigNum.toString n <> ", must be at least 1_000_000 Lovelace" - bracket + cleanupBracket + cleanupRef (startPlutipCluster plutipCfg distrArray) (const $ void $ stopPlutipCluster plutipCfg) pure startOgmios' :: ClusterStartupParameters -> Aff Unit startOgmios' response = - bracket (startOgmios plutipCfg response) - (stopChildProcessWithPort plutipCfg.ogmiosConfig.port) - (const $ pure unit) + void + $ after (startOgmios plutipCfg response) + $ stopChildProcessWithPort plutipCfg.ogmiosConfig.port startKupo' :: ClusterStartupParameters -> Aff Unit startKupo' response = - bracket (startKupo plutipCfg response) - (stopChildProcessWithPortAndRemoveOnSignal plutipCfg.kupoConfig.port) - \(process /\ workdir /\ _) -> do - liftEffect $ cleanupTmpDir process workdir - pure unit + void + $ after (startKupo plutipCfg response cleanupRef) + $ fst + >>> stopChildProcessWithPort plutipCfg.kupoConfig.port mkWallets' :: ContractEnv @@ -388,62 +376,75 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do transferFundsFromEnterpriseToBase ourKey walletsArray pure wallets - mkContractEnv' - :: Aff - { env :: ContractEnv - , printLogs :: Aff Unit - , clearLogs :: Aff Unit - } - mkContractEnv' | plutipCfg.suppressLogs = do - -- if logs should be suppressed, setup the machinery and continue with - -- the bracket - { addLogEntry, suppressedLogger, printLogs, clearLogs } <- - liftEffect $ setupLogs plutipCfg.logLevel plutipCfg.customLogger - let - configLogger = Just $ map liftEffect <<< addLogEntry - - bracket - ( mkClusterContractEnv - plutipCfg { customLogger = configLogger } - suppressedLogger - configLogger - ) - stopContractEnv - \env -> pure - { env +-- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run +-- later. +cleanupBracket + :: forall (a :: Type) (b :: Type) + . Ref (Array (Aff Unit)) + -> Aff a + -> (a -> Aff Unit) + -> (a -> Aff b) + -> Aff b +cleanupBracket cleanupRef before after action = do + Aff.bracket + before + (\res -> liftEffect $ Ref.modify_ ([ after res ] <> _) cleanupRef) + action + +mkLogging + :: forall r + . Record (LogParams r) + -> Effect + { updatedConfig :: Record (LogParams r) + , logger :: Logger + , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) + , printLogs :: Aff Unit + , clearLogs :: Aff Unit + } +mkLogging cfg + | cfg.suppressLogs = ado + -- if logs should be suppressed, setup the machinery and continue with + -- the bracket + { addLogEntry, suppressedLogger, printLogs, clearLogs } <- + setupLogs cfg.logLevel cfg.customLogger + let + configLogger = Just $ map liftEffect <<< addLogEntry + in + { updatedConfig: cfg { customLogger = configLogger } + , logger: suppressedLogger + , customLogger: configLogger , printLogs: liftEffect printLogs , clearLogs: liftEffect clearLogs } - mkContractEnv' = - -- otherwise, proceed with the env setup and provide a normal logger - bracket - ( mkClusterContractEnv plutipCfg - (mkLogger plutipCfg.logLevel plutipCfg.customLogger) - plutipCfg.customLogger - ) - stopContractEnv - \env -> pure - { env - , printLogs: pure unit - , clearLogs: pure unit - } + | otherwise = pure + -- otherwise, proceed with the env setup and provide a normal logger + { updatedConfig: cfg + , logger: mkLogger cfg.logLevel cfg.customLogger + , customLogger: cfg.customLogger + , printLogs: pure unit + , clearLogs: pure unit + } -- | Throw an exception if `PlutipConfig` contains ports that are occupied. configCheck :: PlutipConfig -> Aff Unit -configCheck cfg = do - let - services :: Array (UInt /\ String) - services = - [ cfg.port /\ "plutip-server" - , cfg.ogmiosConfig.port /\ "ogmios" - , cfg.kupoConfig.port /\ "kupo" - ] - occupiedServices <- Array.catMaybes <$> for services \(port /\ service) -> do +configCheck cfg = + checkPortsAreFree + [ { port: cfg.port, service: "plutip-server" } + , { port: cfg.ogmiosConfig.port, service: "ogmios" } + , { port: cfg.kupoConfig.port, service: "kupo" } + ] + +-- | Throw an exception if any of the given ports is occupied. +checkPortsAreFree :: Array { port :: UInt, service :: String } -> Aff Unit +checkPortsAreFree ports = do + occupiedServices <- Array.catMaybes <$> for ports \{ port, service } -> do isPortAvailable port <#> if _ then Nothing else Just (port /\ service) unless (Array.null occupiedServices) do - liftEffect $ throw $ - "Unable to run the following services, because the ports are occupied:\ - \\n" <> foldMap printServiceEntry occupiedServices + liftEffect $ throw + $ + "Unable to run the following services, because the ports are occupied:\ + \\n" + <> foldMap printServiceEntry occupiedServices where printServiceEntry :: UInt /\ String -> String printServiceEntry (port /\ service) = @@ -493,8 +494,9 @@ startPlutipCluster cfg keysToGenerate = do either (liftEffect <<< throw <<< pprintClientError) pure res >>= case _ of ClusterStartupFailure reason -> do - liftEffect $ throw $ - "Failed to start up cluster. Reason: " <> show reason + liftEffect $ throw + $ "Failed to start up cluster. Reason: " + <> show reason ClusterStartupSuccess response@{ privateKeys } -> case Array.uncons privateKeys of Nothing -> @@ -543,12 +545,19 @@ stopPlutipCluster cfg = do body either (liftEffect <<< throw <<< show) pure res -startOgmios :: PlutipConfig -> ClusterStartupParameters -> Aff ManagedProcess +startOgmios + :: forall r r' + . { ogmiosConfig :: ServerConfig | r } + -> { nodeSocketPath :: FilePath + , nodeConfigPath :: FilePath + | r' + } + -> Aff ManagedProcess startOgmios cfg params = do spawn "ogmios" ogmiosArgs defaultSpawnOptions $ Just $ String.indexOf (Pattern "networkParameters") - >>> maybe NoOp (const Success) + >>> maybe NoOp (const Success) where ogmiosArgs :: Array String ogmiosArgs = @@ -564,22 +573,32 @@ startOgmios cfg params = do ] startKupo - :: PlutipConfig - -> ClusterStartupParameters - -> Aff (ManagedProcess /\ String /\ OnSignalRef) -startKupo cfg params = do + :: forall r r' + . { kupoConfig :: ServerConfig | r } + -> { nodeSocketPath :: FilePath + , nodeConfigPath :: FilePath + | r' + } + -> Ref (Array (Aff Unit)) + -> Aff (ManagedProcess /\ String) +startKupo cfg params cleanupRef = do tmpDir <- liftEffect tmpdir randomStr <- liftEffect $ uniqueId "" let workdir = tmpDir <> randomStr <> "-kupo-db" - testClusterDir = (dirname <<< dirname) params.nodeConfigPath liftEffect do workdirExists <- FSSync.exists workdir unless workdirExists (FSSync.mkdir workdir) - childProcess <- spawnKupoProcess workdir - -- here we also set the SIGINT handler for the whole process - sig <- liftEffect $ cleanupOnSigint workdir testClusterDir - pure (childProcess /\ workdir /\ sig) + childProcess <- + after + (spawnKupoProcess workdir) + -- set up cleanup + $ const + $ liftEffect + $ addCleanup cleanupRef + $ liftEffect + $ _rmdirSync workdir + pure (childProcess /\ workdir) where spawnKupoProcess :: FilePath -> Aff ManagedProcess spawnKupoProcess workdir = @@ -633,40 +652,45 @@ stopChildProcessWithPort port childProcess = do unless isAvailable do liftEffect $ throw "retry" -stopChildProcessWithPortAndRemoveOnSignal - :: UInt -> (ManagedProcess /\ String /\ OnSignalRef) -> Aff Unit -stopChildProcessWithPortAndRemoveOnSignal port (childProcess /\ _ /\ sig) = do - stop $ childProcess - void $ recovering defaultRetryPolicy ([ \_ _ -> pure true ]) - \_ -> do - isAvailable <- isPortAvailable port - unless isAvailable do - liftEffect $ throw "retry" - liftEffect $ removeOnSignal sig +type ClusterConfig r = + ( ogmiosConfig :: ServerConfig + , kupoConfig :: ServerConfig + , hooks :: Hooks + | LogParams r + ) -mkClusterContractEnv - :: PlutipConfig +-- | TODO: Replace original log params with the row type +type LogParams r = + ( logLevel :: LogLevel + , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) + , suppressLogs :: Boolean + | r + ) + +makeNaiveClusterContractEnv + :: forall r + . Record (ClusterConfig r) -> Logger -> Maybe (LogLevel -> Message -> Aff Unit) -> Aff ContractEnv -mkClusterContractEnv plutipCfg logger customLogger = do +makeNaiveClusterContractEnv cfg logger customLogger = do usedTxOuts <- newUsedTxOuts backend <- buildBackend logger $ mkCtlBackendParams - { ogmiosConfig: plutipCfg.ogmiosConfig - , kupoConfig: plutipCfg.kupoConfig + { ogmiosConfig: cfg.ogmiosConfig + , kupoConfig: cfg.kupoConfig } ledgerConstants <- getLedgerConstants - plutipCfg { customLogger = customLogger } + cfg { customLogger = customLogger } backend backendKnownTxs <- liftEffect $ Ref.new Set.empty pure { backend - , handle: mkQueryHandle plutipCfg backend + , handle: mkQueryHandle cfg backend , networkId: MainnetId - , logLevel: plutipCfg.logLevel + , logLevel: cfg.logLevel , customLogger: customLogger - , suppressLogs: plutipCfg.suppressLogs - , hooks: plutipCfg.hooks + , suppressLogs: cfg.suppressLogs + , hooks: cfg.hooks , wallet: Nothing , usedTxOuts , ledgerConstants @@ -676,6 +700,30 @@ mkClusterContractEnv plutipCfg logger customLogger = do , knownTxs: { backend: backendKnownTxs } } +-- | Makes cluster ContractEnv with configured logs suppression and cleanup scheduled. +makeClusterContractEnv + :: forall r + . Ref (Array (Aff Unit)) + -> Record (ClusterConfig r) + -> Aff + { env :: ContractEnv + , clearLogs :: Aff Unit + , printLogs :: Aff Unit + } +makeClusterContractEnv cleanupRef cfg = do + { updatedConfig + , logger + , customLogger + , printLogs + , clearLogs + } <- liftEffect $ mkLogging cfg + cleanupBracket + cleanupRef + (makeNaiveClusterContractEnv updatedConfig logger customLogger) + stopContractEnv + $ pure + <<< { env: _, printLogs, clearLogs } + defaultRetryPolicy :: RetryPolicy defaultRetryPolicy = limitRetriesByCumulativeDelay (Milliseconds 3000.00) $ constantDelay (Milliseconds 100.0) diff --git a/src/Internal/Plutip/Spawn.js b/src/Internal/Plutip/Spawn.js index 93cba32e6..7fb83aad1 100644 --- a/src/Internal/Plutip/Spawn.js +++ b/src/Internal/Plutip/Spawn.js @@ -1,4 +1,5 @@ "use strict"; +import stream from "node:stream"; export function clearLineHandler(readline) { return () => { @@ -6,6 +7,9 @@ export function clearLineHandler(readline) { }; } +export const readableFromBuffer = buf => () => + stream.Readable.from(buf, { objectMode: false }); + import fs from "fs"; export function _rmdirSync(path) { diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Plutip/Spawn.purs index c8f94c005..4fde5d965 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Plutip/Spawn.purs @@ -6,30 +6,49 @@ module Ctl.Internal.Plutip.Spawn , OnSignalRef , ManagedProcess(ManagedProcess) , spawn + , exec , stop , waitForStop , cleanupTmpDir , cleanupOnSigint , removeOnSignal + , waitForSignal + , killProcessWithPort + , _rmdirSync ) where -import Prelude +import Contract.Prelude -import Control.Monad.Error.Class (throwError) +import Control.Monad.Error.Class + ( liftMaybe + , throwError + ) +import Ctl.Internal.Plutip.PortCheck (isPortAvailable) import Ctl.Internal.Plutip.Types (FilePath) import Data.Either (Either(Left)) import Data.Foldable (foldMap) import Data.Maybe (Maybe(Just, Nothing)) import Data.Posix.Signal (Signal(SIGINT)) import Data.Posix.Signal as Signal +import Data.Time.Duration (Milliseconds(Milliseconds)) +import Data.UInt (UInt) +import Data.UInt as UInt import Effect (Effect) import Effect.AVar (AVar) import Effect.AVar (empty, tryPut) as AVar import Effect.Aff (Aff, Canceler(Canceler), makeAff) +import Effect.Aff as Aff import Effect.Aff.AVar (isEmpty, read, status) as AVar +import Effect.Aff.Retry + ( RetryPolicy + , constantDelay + , limitRetriesByCumulativeDelay + , recovering + ) import Effect.Class (liftEffect) -import Effect.Exception (Error, error) +import Effect.Exception (Error, error, throw) import Effect.Ref as Ref +import Node.Buffer as Node.Buffer import Node.ChildProcess ( ChildProcess , SpawnOptions @@ -37,7 +56,9 @@ import Node.ChildProcess , stdout ) import Node.ChildProcess as ChildProcess +import Node.ChildProcess as Node.ChildProcess import Node.ReadLine (Interface, close, createInterface, setLineHandler) as RL +import Node.Stream as Node.Stream -- | Carry along an `AVar` which resolves when the process closes. -- | Necessary due to `child_process` having no way to query if a process has @@ -79,8 +100,11 @@ spawn' cmd args opts mbFilter cont = do RL.close interface void $ AVar.tryPut code closedAVar output <- Ref.read outputRef - cont $ Left $ error $ - "Process " <> fullCmd <> " exited. Output:\n" <> output + cont $ Left $ error + $ "Process " + <> fullCmd + <> " exited. Output:\n" + <> output -- Ideally we call `RL.close interface` instead of detaching the listener -- via `clearLineHandler interface`, but it causes issues with the output @@ -101,11 +125,52 @@ spawn' cmd args opts mbFilter cont = do kill SIGINT child clearLineHandler interface cont $ Left $ error - $ "Process cancelled because output received: " <> str + $ "Process cancelled because output received: " + <> str _ -> pure unit pure $ Canceler $ const $ liftEffect $ kill SIGINT child +exec + :: String + -> Aff + { channels :: + { stdout :: Node.Stream.Readable () + , stderr :: Node.Stream.Readable () + } + , process :: Node.ChildProcess.ChildProcess + } +exec cmd = Aff.makeAff \cont -> do + processRef <- Ref.new Nothing + isCanceledRef <- Ref.new false + let + isCanceled = Ref.read isCanceledRef + markCanceled = Ref.write true isCanceledRef + log $ show { exec: cmd } + process <- Node.ChildProcess.exec + cmd + Node.ChildProcess.defaultExecOptions + ( \{ error: err, stderr, stdout } -> isCanceled >>= flip unless do + process <- + liftMaybe (error "Couldn't find executed process" :: Error) + =<< Ref.read processRef + stderrStream <- readableFromBuffer stderr + stdoutStream <- readableFromBuffer stdout + let + result = + { channels: { stderr: stderrStream, stdout: stdoutStream } + , process + } + cont $ maybe (Right result) Left err + ) + Ref.write (Just process) processRef + pure $ Aff.Canceler \err -> liftEffect do + markCanceled + cont $ Left err + +foreign import readableFromBuffer + :: Node.Buffer.Buffer -> Effect (Node.Stream.Readable ()) + foreign import clearLineHandler :: RL.Interface -> Effect Unit stop :: ManagedProcess -> Aff Unit @@ -131,6 +196,18 @@ foreign import removeOnSignal :: OnSignalRef -> Effect Unit onSignal :: Signal -> Effect Unit -> Effect OnSignalRef onSignal sig = onSignalImpl (Signal.toString sig) +-- | Just as onSignal, but Aff. +waitForSignal :: Signal -> Aff Unit +waitForSignal signal = makeAff \cont -> do + isCanceledRef <- Ref.new false + onSignalRef <- onSignal signal + $ Ref.read isCanceledRef + >>= flip unless (cont $ Right unit) + pure $ Canceler \err -> liftEffect do + Ref.write true isCanceledRef + removeOnSignal onSignalRef + cont $ Left err + cleanupOnSigint :: FilePath -> FilePath -> Effect OnSignalRef cleanupOnSigint workingDir testClusterDir = do sig <- onSignal SIGINT do @@ -138,6 +215,27 @@ cleanupOnSigint workingDir testClusterDir = do _rmdirSync testClusterDir pure sig +killByPort :: UInt -> Effect Unit +killByPort port = + void $ Node.ChildProcess.exec + ("fuser -k " <> show (UInt.toInt port) <> "/tcp") + Node.ChildProcess.defaultExecOptions + \{ error } -> maybe (pure unit) throwError error + +-- | Kill a process and wait for it to stop listening on a specific port. +killProcessWithPort :: UInt -> Aff Unit +killProcessWithPort port = do + liftEffect $ killByPort port + void $ recovering defaultRetryPolicy ([ \_ _ -> pure true ]) + \_ -> do + isAvailable <- isPortAvailable port + unless isAvailable do + liftEffect $ throw "retry" + +defaultRetryPolicy :: RetryPolicy +defaultRetryPolicy = limitRetriesByCumulativeDelay (Milliseconds 3000.00) $ + constantDelay (Milliseconds 100.0) + cleanupTmpDir :: ManagedProcess -> FilePath -> Effect Unit cleanupTmpDir (ManagedProcess _ child _) workingDir = do ChildProcess.onExit child \_ -> do diff --git a/src/Internal/Plutip/Utils.js b/src/Internal/Plutip/Utils.js index ab594520c..f20ecae69 100644 --- a/src/Internal/Plutip/Utils.js +++ b/src/Internal/Plutip/Utils.js @@ -3,3 +3,54 @@ import os from "os"; export function tmpdir() { return os.tmpdir(); } + +export function setLineHandler(interf) { + return callback => () => { + const signal = "line"; + const cb = line => callback(line)(); + interf.on(signal, cb); + return { signal, callback: cb }; + }; +} +export function setErrorHandler(interfc) { + return callback => () => { + const signal = "error"; + const cb = err => callback(err)(); + interfc.on(signal, cb); + return { signal, callback: cb }; + }; +} +export function onExit(callback) { + const cb = exitcode => { + callback(exitcode)(); + }; + const signal = "exit"; + return () => { + process.on(signal, cb); + return { signal, callback }; + }; +} +export function onBeforeExit(callback) { + const signal = "beforeExit"; + return () => { + process.on(signal, callback); + return { signal, callback }; + }; +} +export function onUncaughtException(callback) { + const cb = error => { + callback(error)(); + }; + const signal = "uncaughtException"; + return () => { + process.on(signal, cb); + return { signal, callback }; + }; +} +export function setCloseHandler(readline) { + return callback => () => { + const signal = "close"; + readline.on(signal, callback); + return { signal, callback }; + }; +} diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 610390fab..5523b0ff2 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -1,9 +1,424 @@ module Ctl.Internal.Plutip.Utils - ( tmpdir + ( mkDirIfNotExists + , runCleanup + , tmpdir + , annotateError + , cleanupOnExit + , EventSource(EventSource) + , onLine + , makeEventSource + , narrowEventSource + , waitForEvent + , addCleanup + , scheduleCleanup + , after + , whenError + , suppressAndLogErrors + , tryAndLogErrors + , waitForBeforeExit + , waitForClose + , waitForError + , waitForExit + , waitForUncaughtException + , waitUntil ) where +import Contract.Prelude + +import Control.Alt ((<|>)) +import Control.Monad.Error.Class (class MonadError, catchError, throwError) +import Control.Monad.Rec.Class + ( Step(..) + , tailRecM + ) +import Control.Parallel + ( parallel + , sequential + ) +import Ctl.Internal.Plutip.Spawn + ( ManagedProcess(..) + , OnSignalRef + , removeOnSignal + , waitForSignal + ) +import Ctl.Internal.QueryM.UniqueId (uniqueId) +import Data.Array as Array +import Data.Map as Map +import Data.Posix.Signal (Signal(..)) +import Data.Time.Duration (Milliseconds) import Effect (Effect) +import Effect.Aff (try) +import Effect.Aff as Aff +import Effect.Class (class MonadEffect) +import Effect.Exception (Error, error, message) +import Effect.Random (randomInt) +import Effect.Ref (Ref) +import Effect.Ref as Ref +import Node.ChildProcess as Node.ChildProcess +import Node.FS.Sync as FS +import Node.Path (FilePath) +import Node.Process as Process +import Node.ReadLine as RL +import Node.Stream (Readable) -- TODO: remove this function when PS bindings for os.tmpdir are available. -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/726 foreign import tmpdir :: Effect String + +foreign import setLineHandler + :: RL.Interface -> (String -> Effect Unit) -> Effect OnSignalRef + +foreign import setCloseHandler + :: RL.Interface -> Effect Unit -> Effect OnSignalRef + +foreign import setErrorHandler + :: RL.Interface -> (Error -> Effect Unit) -> Effect OnSignalRef + +foreign import onBeforeExit + :: Effect Unit -> Effect OnSignalRef + +foreign import onExit + :: (Int -> Effect Unit) -> Effect OnSignalRef + +foreign import onUncaughtException + :: (Error -> Effect Unit) -> Effect OnSignalRef + +suppressAndLogErrors + :: forall m. MonadEffect m => MonadError Error m => String -> m Unit -> m Unit +suppressAndLogErrors location = flip catchError $ message + >>> append ("An error occured and suppressed at " <> location <> ": ") + >>> log + +-- | Waits until processe's stdout closes. +-- Assuming this means that process is closed as well. +waitForClose :: ManagedProcess -> Aff Unit +waitForClose (ManagedProcess _ child _) = do + interface <- liftEffect + $ flip RL.createInterface mempty + $ Node.ChildProcess.stdout child + Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> + setCloseHandler interface $ justOnce $ cont $ Right unit + pure $ Aff.Canceler \err -> liftEffect do + cancel + cont $ Left $ appendErrorMessage "waitForClose has been canceled" err + +-- | Waits until processe's stdout closes. +-- Assuming this means that process is closed as well. +waitForError :: ManagedProcess -> Aff Error +waitForError (ManagedProcess _ child _) = do + interface <- liftEffect + $ flip RL.createInterface mempty + $ Node.ChildProcess.stdout child + Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> + setErrorHandler interface \err -> justOnce $ cont $ Right err + pure $ Aff.Canceler \err -> liftEffect do + cancel + cont $ Left $ appendErrorMessage "waitForClose has been canceled" err + +tryAndLogErrors + :: forall a m + . MonadEffect m + => MonadError Error m + => String + -> m a + -> m (Either Error a) +tryAndLogErrors location = try >=> case _ of + Left err -> do + log $ "An error occured and suppressed at " <> location <> ": " <> message + err + pure $ Left err + Right a -> pure $ Right a + +mkDirIfNotExists :: FilePath -> Effect Unit +mkDirIfNotExists dirName = do + exists <- FS.exists dirName + unless exists $ FS.mkdir dirName + +runCleanup :: Ref (Array (Aff Unit)) -> Aff Unit +runCleanup cleanupRef = do + log "Cleaning up" + cleanups <- liftEffect do + cleanups <- Ref.read cleanupRef + Ref.write [] cleanupRef + pure cleanups + if null cleanups then log "No cleanup needed" + else do + sequence_ $ suppressAndLogErrors "runCleanup" <$> cleanups + log "Cleanup finished" + +waitForBeforeExit :: Aff Unit +waitForBeforeExit = Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> onBeforeExit $ justOnce do + log "ON BEFORE EXIT" + cont $ Right unit + pure $ Aff.Canceler \err -> liftEffect do + cancel + suppressAndLogErrors "waitForBeforeExit" $ cont $ Left err + +-- | Specifically for nodejs handlers: +-- Makes sure that the callback is called at most once, and unregistering it +-- on cancelation and on the first call. +withOneShotHandler + :: ({ justOnce :: Effect Unit -> Effect Unit } -> Effect OnSignalRef) + -> Effect { cancel :: Effect Unit } +withOneShotHandler with = do + removeHandler <- Ref.new mempty + isClosedRef <- Ref.new false + let + cancel = do + join $ Ref.read removeHandler + Ref.write true isClosedRef + handle <- with + { justOnce: \oneShotHandler -> do + -- otherwise it may be triggered multiple times, for unknown reason + Ref.read isClosedRef >>= flip unless do + cancel + oneShotHandler + } + Ref.write (removeOnSignal handle) removeHandler + pure { cancel } + +waitForUncaughtException :: Aff Error +waitForUncaughtException = Aff.makeAff \cont -> do + n <- randomInt 0 100 + { cancel } <- withOneShotHandler \{ justOnce } -> + onUncaughtException \err -> justOnce do + log $ "ON UNCAUGHT EXCEPTION " <> show n + cont $ Right err + pure $ Aff.Canceler \err -> liftEffect do + cancel + suppressAndLogErrors "waitForUncaughtException" $ cont $ Left err + +waitUntil :: forall a. Milliseconds -> Aff (Maybe a) -> Aff a +waitUntil checkingInterval fa = flip tailRecM unit \_ -> + fa >>= case _ of + Nothing -> do + Aff.delay checkingInterval + pure $ Loop unit + Just x -> pure $ Done x + +waitForExit :: Aff Int +waitForExit = Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> onExit \exitcode -> justOnce + do + log "ON EXIT" + cont $ Right exitcode + pure $ Aff.Canceler \err -> liftEffect do + cancel + suppressAndLogErrors "waitForExit" $ cont $ Left err + +newtype EventSource b = EventSource + { subscribe :: + ( { unsubscribe :: Effect Unit + , event :: Either Error b + } + -> Effect Unit + ) + -> Effect (Either Error { unsubscribe :: Effect Unit }) + , cancel :: Error -> Effect Unit + } + +-- | Waits for any event. Note, if the event source throws an async error, any joining process dies. +waitForEvent :: forall a. EventSource a -> Aff a +waitForEvent (EventSource { subscribe }) = annotateError "waitForEvent" $ + Aff.makeAff \cont -> do + subscriptionResult <- subscribe \{ unsubscribe, event } -> do + unsubscribe + cont event + case subscriptionResult of + Right { unsubscribe } -> pure $ Aff.Canceler \err -> liftEffect do + unsubscribe + cont $ Left $ appendErrorMessage "waitForEvent:canceled" err + Left subError -> do + suppressAndLogErrors "waitForEvent:badSubscription" + $ cont + $ Left + $ appendErrorMessage "Failed to subscribe" subError + pure Aff.nonCanceler + +onLine + :: forall a b + . Readable a + -> (String -> Maybe b) + -> Effect (EventSource b) +onLine readable = + map _.eventSource <<< makeEventSource \{ handle: mainHandler } -> do + interface <- RL.createInterface readable mempty + handlers <- Ref.new [] + lineHandler <- setLineHandler interface \x -> do + void + $ suppressAndLogErrors "onLine:setLineHandler" + $ mainHandler + $ Right x + let + cancel = \err -> do + Ref.read handlers >>= traverse_ (try <<< removeOnSignal) + void + $ suppressAndLogErrors "onLine:cancel" + $ mainHandler + $ Left err + closeHandler <- setCloseHandler interface + $ cancel + $ error "Line event source has been closed." + errorHandler <- setErrorHandler interface cancel + Ref.write [ lineHandler, closeHandler, errorHandler ] handlers + pure + { outcome: unit + , unsubscribe: do + cancel $ error "Unsubscribed from line event." + } + +-- | Create an event source based on another event source, but +-- with smaller variety of events. +narrowEventSource + :: forall a b + . (a -> Maybe b) + -> EventSource a + -> Effect (EventSource b) +narrowEventSource filter (EventSource source) = annotateError + "narrowEventSource" + do + { eventSource: new + , outcome: subscriptionResult -- this goes from the source + } <- flip makeEventSource filter \{ handle } -> + do -- this is how new event source subscribe on the source + source.subscribe (handle <<< _.event) >>= case _ of + Left err -> pure + { outcome: Left err -- this is not for makeEventSource + , unsubscribe: pure unit -- how do 'new' unsubscribe from the 'source' + } + Right { unsubscribe: unsubFromSource } -> pure + { outcome: Right unit -- this is not for makeEventSource + , unsubscribe: unsubFromSource -- how do 'new' unsubscribe from the 'source' + } + liftEither subscriptionResult + pure new + +makeEventSource + :: forall a b c + . ( { handle :: Either Error a -> Effect Unit } + -> Effect { unsubscribe :: Effect Unit, outcome :: c } + ) + -> (a -> Maybe b) + -> Effect { eventSource :: EventSource b, outcome :: c } +makeEventSource subscribeOnEvents filter = annotateError "make event source" do + handlers <- Ref.new $ Map.fromFoldable [] + isCanceled <- Ref.new false + cancelRef <- Ref.new mempty + let + markCanceled = Ref.write true isCanceled + cancel error = Ref.read cancelRef >>= (_ $ error) + subscribe handler = do + Ref.read isCanceled >>= + if _ then + pure $ Left $ error "Event source is closed." + else do + id <- uniqueId "sub" + let unsubscribe = Ref.modify_ (Map.delete id) handlers + _ <- Ref.modify_ + (Map.insert id \event -> handler { unsubscribe, event }) + handlers + pure $ Right { unsubscribe } + + { unsubscribe, outcome } <- subscribeOnEvents + { handle: \ea -> case ea of + Left error -> cancel error + Right a -> case filter a of + Just b -> do + Ref.read handlers >>= traverse_ (_ $ Right b) + Nothing -> pure unit + } + flip Ref.write cancelRef \error -> do + Ref.write mempty cancelRef -- canceler may be called only once + unsubscribe + markCanceled + Ref.read handlers >>= traverse_ \cont -> + void $ suppressAndLogErrors "makeEventSource:cancel" $ cont $ Left error + Ref.write (Map.fromFoldable []) handlers + + pure + { eventSource: EventSource { cancel, subscribe } + , outcome + } + +cleanupOnExit + :: Ref (Array (Aff Unit)) + -> Aff { fiber :: Aff.Fiber Unit } +cleanupOnExit cleanupRef = do + log "Cleanup scheduled" + let + handle handlers = do + handler <- sequential do + ( handlers.onExit + <$> parallel waitForExit + ) + <|> + ( handlers.onUncaughtException + <$> parallel waitForUncaughtException + ) + <|> + ( handlers.onBeforeExit + <$ parallel waitForBeforeExit + ) + <|> + ( handlers.onWaitForSignal + <$ parallel (waitForSignal SIGINT) + ) + handler + cleanup triggeredBy = do + log $ "Running cleanup on " <> triggeredBy + runCleanup cleanupRef + + fiber <- Aff.forkAff $ handle + { onExit: \code -> cleanup $ "exit with " <> show code + , onUncaughtException: \err -> do + cleanup "uncaught exception" + log $ "Failing irrecoverably after the cleanup after error: " <> show + err + liftEffect $ Process.exit 7 -- Failing irrecoverably + , onBeforeExit: cleanup "before exit" + , onWaitForSignal: cleanup "SIGINT" + } + pure { fiber } + +addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit +addCleanup = map void <<< flip + (Ref.modify <<< Array.cons <<< suppressAndLogErrors "[addCleanup][error]: ") + +scheduleCleanup + :: forall a + . Ref (Array (Aff Unit)) + -> Aff a + -> (a -> Aff Unit) + -> Aff a +scheduleCleanup cleanupRef create cleanup = + after create $ liftEffect <<< addCleanup cleanupRef <<< cleanup + +-- Similar to `catchError` but preserves the error +whenError :: forall (a :: Type). Aff Unit -> Aff a -> Aff a +whenError whenErrorAction action = do + res <- try action + when (isLeft res) whenErrorAction + liftEither res + +-- | Just as a bracket but without the body. +after :: forall a. Aff a -> (a -> Aff Unit) -> Aff a +after first second = Aff.bracket first second pure + +annotateError + :: forall (a :: Type) m + . MonadError Error m + => String + -> m a + -> m a +annotateError withPrefix action = + catchError action $ throwError <<< appendErrorMessage withPrefix + +appendErrorMessage + :: String + -> Error + -> Error +appendErrorMessage withPrefix = + error <<< append (withPrefix <> ": ") <<< message \ No newline at end of file diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs new file mode 100644 index 000000000..370f27b5f --- /dev/null +++ b/src/Internal/Testnet/Contract.purs @@ -0,0 +1,262 @@ +module Ctl.Internal.Testnet.Contract where + +import Contract.Prelude + +import Cardano.Serialization.Lib (privateKey_generateEd25519) as Csl +import Cardano.Serialization.Lib as CSL +import Cardano.Types (NetworkId(TestnetId)) +import Cardano.Types as Cardano.Types +import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) +import Cardano.Types.BigNum (BigNum) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.Credential (Credential(..)) +import Cardano.Types.PaymentCredential (PaymentCredential(..)) +import Cardano.Types.StakeCredential (StakeCredential(..)) +import Cardano.Types.StakePubKeyHash (StakePubKeyHash(..)) +import Contract.Address (getNetworkId) +import Contract.Log (logInfo') +import Contract.Monad (Contract, ContractEnv, liftContractM, liftedM, runContractInEnv) +import Contract.Monad as Contract +import Contract.Transaction (awaitTxConfirmed, balanceTx, signTransaction, submit) +import Contract.TxConstraints (TxConstraints(..)) +import Contract.UnbalancedTx (mkUnbalancedTx) +import Contract.Value (Value(..), valueToCoin) +import Contract.Value (lovelaceValueOf) as Value +import Contract.Wallet (KeyWallet, getWalletAddress, getWalletBalance, mkKeyWalletFromPrivateKeys, withKeyWallet) +import Contract.Wallet as Contract.Wallet +import Control.Monad.Error.Class (liftMaybe) +import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) +import Ctl.Internal.Plutip.Server (makeClusterContractEnv) +import Ctl.Internal.Plutip.Utils (cleanupOnExit, runCleanup, whenError) +import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution, UtxoAmount, decodeWallets, encodeDistribution, keyWallets) +import Ctl.Internal.Test.UtxoDistribution as UtxoDistribution +import Ctl.Internal.Testnet.Server (StartedTestnetCluster, startTestnetCluster) +import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams, GenesisUtxoKeyLocation, TestnetClusterConfig) +import Ctl.Internal.Testnet.Utils (read872GenesisKey) +import Ctl.Internal.Wallet.Key (KeyWallet(..)) +import Data.Array (head) +import Data.Array (zip) as Array +import Data.Maybe (fromJust) +import Debug (spy, traceM) +import Effect.Aff (bracket) as Aff +import Effect.Aff (try) +import Effect.Exception (error) +import Effect.Exception.Unsafe (unsafeThrow) +import Effect.Ref (Ref) +import Effect.Ref as Ref +import Internal.CardanoCli.QueryHandler (withCardanoCliCompletion) as CardanoCli.QueryHandler +import Partial.Unsafe (unsafePartial) +import Type.Proxy (Proxy(..)) + +-- | Run a single `Contract` in cardano-testnet environment. +runContract + :: forall (a :: Type) r + . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + -> Contract a + -> Aff a +runContract cfg cont = withContractEnv cfg \_ env -> + Contract.runContractInEnv env cont + +-- | Run a single `Contract` in cardano-testnet environment. +runTestnetContract + :: forall (distr :: Type) (wallets :: Type) (r :: Row Type) (a :: Type) + . UtxoDistribution distr wallets + => Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + -> distr + -> (wallets -> Contract a) + -> Aff a +runTestnetContract cfg distr cont = + withTestnetContractEnv cfg distr \env wallets -> + runContractInEnv env (cont wallets) + +readGenesisWallets + :: forall r r1 + . { genesisKeys :: Array { | GenesisUtxoKeyLocation r } | r1 } + -> Effect (Array Contract.Wallet.KeyWallet) +readGenesisWallets { genesisKeys } = for genesisKeys \location -> do + paymentKey <- read872GenesisKey location + pure $ mkKeyWalletFromPrivateKeys paymentKey Nothing + +withTestnetContractEnv + :: forall (distr :: Type) (wallets :: Type) (r :: Row Type) (a :: Type) + . UtxoDistribution distr wallets + => Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + -> distr + -> (ContractEnv -> wallets -> Aff a) + -> Aff a +withTestnetContractEnv cfg distr cont = do + cleanupRef <- liftEffect $ Ref.new mempty + Aff.bracket + (try $ startTestnetContractEnv cfg distr cleanupRef) + (const $ runCleanup cleanupRef) + $ liftEither + >=> \{ env, wallets, printLogs } -> + whenError printLogs (cont env wallets) + +-- | Provide a `ContractEnv` connected to cardano-testnet. +-- | can be used to run multiple `Contract`s using `runContractInEnv`. +startTestnetContractEnv + :: forall (distr :: Type) (wallets :: Type) (r :: Row Type) + . UtxoDistribution distr wallets + => Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + -> distr + -> Ref (Array (Aff Unit)) + -> Aff + { cluster :: StartedTestnetCluster + , env :: ContractEnv + , wallets :: wallets + , printLogs :: Aff Unit + , clearLogs :: Aff Unit + } +startTestnetContractEnv cfg distr cleanupRef = do + cleanupRef <- liftEffect $ Ref.new [] + _ <- cleanupOnExit cleanupRef + cluster <- startTestnetCluster cfg cleanupRef + { env, printLogs, clearLogs } <- makeClusterContractEnv cleanupRef cfg + let env' = env { networkId = TestnetId } + wallets <- mkWallets env' cluster + pure + { cluster + , env: env' + , wallets + , printLogs + , clearLogs + } + where + mkWallets :: ContractEnv -> StartedTestnetCluster -> Aff wallets + mkWallets env cluster = + runContractInEnv env do + let testnetPaths = (unwrap cluster).paths + genesisWallets <- liftEffect $ readGenesisWallets testnetPaths + let genesisWallet = unsafePartial fromJust $ head genesisWallets -- FIXME + withKeyWallet genesisWallet do + let distrArray = encodeDistribution distr + privateKeys <- + for (encodeDistribution distr) \_ -> + liftEffect $ wrap <$> Csl.privateKey_generateEd25519 + wallets <- + liftContractM "Impossible happened: could not decode wallets. Please report as bug" + $ decodeWallets distr privateKeys + let kws = keyWallets (Proxy :: _ distr) wallets + genesisAddr <- liftedM "Could not get genesis address" getWalletAddress + let + nodeCfg = + { socketPath: (unwrap cluster).paths.nodeSocketPath + , testnetMagic: cfg.testnetMagic + } + CardanoCli.QueryHandler.withCardanoCliCompletion nodeCfg genesisAddr do + let walletsAmounts = Array.zip kws distrArray + fundWalletsFromGenesis genesisWallet (spy "walletsAmounts" walletsAmounts) + pure wallets + + fundWalletsFromGenesis :: KeyWallet -> Array (KeyWallet /\ Array UtxoAmount) -> Contract Unit + fundWalletsFromGenesis genesisWallet walletsAmounts = do + network <- getNetworkId + let + constraints :: TxConstraints + constraints = + foldMap + ( \(KeyWallet kw /\ amounts) -> + foldMap (mustPayToAddress (kw.address network) <<< Value.lovelaceValueOf) + amounts + ) + walletsAmounts + unbalancedTx <- mkUnbalancedTx mempty constraints + balancedTx <- balanceTx unbalancedTx + balancedSignedTx <- signTransaction balancedTx + txHash <- submit balancedSignedTx + logInfo' $ "FundWalletsFromGenesis txHash: " <> show txHash + awaitTxConfirmed txHash + + mustPayToAddress :: Address -> Value -> TxConstraints + mustPayToAddress addr = + let + skh = case getStakeCredential addr of + Just (StakeCredential (PubKeyHashCredential skh)) -> Just $ StakePubKeyHash skh + _ -> Nothing + in + case getPaymentCredential addr of + Just (PaymentCredential (PubKeyHashCredential pkh)) -> + mustPayToPubKeyStakeAddress (wrap pkh) skh + _ -> mempty + +-- | Provide a `ContractEnv` connected to cardano-testnet. +-- | can be used to run multiple `Contract`s using `runContractInEnv`. +withContractEnv + :: forall (a :: Type) r + . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + -> (StartedTestnetCluster -> ContractEnv -> Aff a) + -> Aff a +withContractEnv cfg cont = do + cleanupRef <- liftEffect $ Ref.new [] + _ <- cleanupOnExit cleanupRef + cluster <- startTestnetCluster cfg cleanupRef + { env, printLogs } <- makeClusterContractEnv cleanupRef cfg + whenError printLogs $ cont cluster $ env { networkId = TestnetId } + +distributeFunds + :: { sources :: Array KeyWallet + , targets :: + Array + { wallet :: KeyWallet + , required :: + { totalRequired :: BigNum + , utxoDistribution :: Array BigNum + } + } + , thresholds :: + { maxCoinPerTx :: BigNum + , maxUtxosPerTx :: BigNum + } + } + -> Contract Unit +distributeFunds given = do + sources <- for given.sources \wallet -> do + balance <- withKeyWallet wallet + $ map (BigNum.toBigInt <<< unwrap <<< valueToCoin) + <<< liftMaybe (error "Can't get source wallet balance") + =<< getWalletBalance + pure { wallet, balance } + unsafeThrow "todo" + +makeTargetDistribution + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution.UtxoDistribution distr wallets + => distr + -> Effect + { wallets :: wallets + , distributionInfo :: + Array + { wallet :: KeyWallet + , required :: + { total :: BigNum + , utxoDistribution :: Array BigNum + } + } + } +makeTargetDistribution distrib = do + distributionInfo <- for (UtxoDistribution.encodeDistribution distrib) + \utxos -> do + paymentKey <- wrap <$> genPrivateKey + let + wallet = mkKeyWalletFromPrivateKeys paymentKey Nothing + total <- liftMaybe (error "Cannot sum target utxo amounts") + $ foldM BigNum.add BigNum.zero utxos + pure + { wallet + , required: { utxoDistribution: utxos, total } + } + let + paymentKeys = + unwrap + <<< _.paymentKey + <<< unwrap + <<< _.wallet + <$> distributionInfo + wallets <- + liftMaybe (error "Can't decode wallets") + $ UtxoDistribution.decodeWallets distrib paymentKeys + pure { wallets, distributionInfo } + +genPrivateKey :: Effect Cardano.Types.PrivateKey +genPrivateKey = wrap <$> CSL.privateKey_generateEd25519 diff --git a/src/Internal/Testnet/DistributeFunds.purs b/src/Internal/Testnet/DistributeFunds.purs new file mode 100644 index 000000000..205989ede --- /dev/null +++ b/src/Internal/Testnet/DistributeFunds.purs @@ -0,0 +1,252 @@ +module Ctl.Internal.Testnet.DistributeFunds + ( makeDistributionPlan + , parallelizedDistributionPlan + , SourceState(SourceState) + , Tx(Tx) + , _completeTxs + , _leftover + , _source + , _total + , _totalUtxos + , _tx + , _utxos + -- * Exported for testing purposes + , assignUtxo + , emptyTx + , initialSourceState + ) where + +import Contract.Prelude + +import Control.Alt ((<|>)) +import Data.Array as Array +import Data.Bifunctor (class Bifunctor, bimap) +import Data.Lens (Lens', view, (%~), (+~), (-~), (.~), (^.)) +import Data.Lens.Iso.Newtype (_Newtype) +import Data.Lens.Record (prop) +import Data.List (List(..)) +import Data.List as List +import Data.Map (Map) +import Data.Map as Map +import Effect.Exception.Unsafe (unsafeThrow) +import Type.Proxy (Proxy(Proxy)) + +newtype Tx src target amount = Tx + { source :: { key :: src } + , total :: amount + , totalUtxos :: Int + , utxos :: List { key :: target, amount :: amount } + } + +derive instance Newtype (Tx s t a) _ +derive instance Generic (Tx s t a) _ +derive instance (Eq s, Eq t, Eq a) => Eq (Tx s t a) +derive instance (Ord s, Ord t, Ord a) => Ord (Tx s t a) +instance (Show s, Show t, Show a) => Show (Tx s t a) where + show = genericShow + +emptyTx + :: forall target amount + . amount + -> Tx Unit target amount +emptyTx total = Tx + { source: { key: unit } + , total + , totalUtxos: 0 + , utxos: Nil + } + +newtype SourceState src target amount = SourceState + { source :: src + , leftover :: amount + , tx :: Tx Unit target amount + , completeTxs :: List (Tx Unit target amount) + } + +derive instance Newtype (SourceState s t a) _ +derive instance Generic (SourceState s t a) _ +derive instance (Eq s, Eq t, Eq a) => Eq (SourceState s t a) +derive instance (Ord s, Ord t, Ord a) => Ord (SourceState s t a) +instance (Show s, Show t, Show a) => Show (SourceState s t a) where + show = genericShow + +initialSourceState + :: forall src target amount + . Semiring amount + => { initialFunds :: amount, key :: src } + -> SourceState src target amount +initialSourceState { initialFunds, key } = SourceState + { source: key + , leftover: initialFunds + , tx: emptyTx zero + , completeTxs: Nil + } + +parallelizedDistributionPlan + :: forall src target amount + . Map src (Array (Tx Unit target amount)) + -> Array (Map src (Tx Unit target amount)) +parallelizedDistributionPlan _ = unsafeThrow "hello" + +makeDistributionPlan + :: forall src target amount + . Ord src + => Ord amount + => Ord target + => Ring amount + => Map src amount + -> Map target (Array amount) + -> { maxCoinPerTx :: amount + , maxTargetUtxosPerTx :: Int + } + -> Either + { err :: String + , acc :: List (SourceState src target amount) + } + (Map src (Array (Tx Unit target amount))) +makeDistributionPlan sources targets thresholds = do + let + targetsUtxosAsc :: List { key :: target, amount :: amount } + targetsUtxosAsc = List.sortBy (flip compare) + $ Map.toUnfoldable targets + >>= \(key /\ utxos) -> + { key, amount: _ } <$> List.fromFoldable utxos + + assigned :: Either _ (Map src (Array (Tx Unit target amount))) + assigned = do + sourcesTxs <- foldM + (flip $ assignUtxo thresholds) + ( initialSourceState <<< uncurry { key: _, initialFunds: _ } <$> + Map.toUnfoldable sources + ) + targetsUtxosAsc + let + finish src = + src + # (_tx .~ emptyTx zero) + # (_completeTxs %~ Cons (src ^. _tx)) + sourceToTxs = Map.fromFoldable + $ Tuple + <<< view _source + <*> Array.fromFoldable + <<< view _completeTxs + <<< finish + <$> sourcesTxs + pure sourceToTxs + assigned + +assignUtxo + :: forall target src amount + . Ord amount + => Ring amount + => { maxCoinPerTx :: amount + , maxTargetUtxosPerTx :: Int + } + -> { amount :: amount, key :: target } + -> List (SourceState src target amount) + -> Either + { err :: String + , acc :: List (SourceState src target amount) + } + (List (SourceState src target amount)) +assignUtxo _ _ Nil = Left + { err: "Ran out of sources", acc: Nil } +assignUtxo thresholds utxo acc@(Cons source sources) + | 0 >= thresholds.maxTargetUtxosPerTx = + Left { err: "maxTargetUtxosPerTx must be greater than 1", acc } + | utxo.amount >= thresholds.maxCoinPerTx = + Left + { err: "UTxO required amount is higher than the maxCoinPerTx threshold" + , acc + } + | (source ^. _tx <<< _totalUtxos) + >= thresholds.maxTargetUtxosPerTx = + -- means that this Tx is complete + assignUtxo thresholds utxo + $ startNewTx source sources -- be careful: infinite loop + -- it will terminate because new tx has 0 utxos which is higher than 'maxTargetUtxosPerTx' + | (source ^. _tx <<< _total) + utxo.amount + > thresholds.maxCoinPerTx = + -- means that utxo cannot be fit in this Tx + let + -- try fit this utxo in any source + tryAnother = tryWithAnotherSource + "Cannot fit UTxO amount into the Tx" + (assignUtxo thresholds utxo) + source + sources + -- if no source can fit this utxo, create a new tx + startNew = assignUtxo thresholds utxo + $ startNewTx source sources -- be careful: infinite loop + -- it will terminate because either new Tx starting with 0 total can fit it + -- or the condition above will throw Left + in + tryAnother <|> startNew + | source ^. _leftover < utxo.amount = + -- means that this source cannot fit this tx + -- should try with the rest of sources and fail otherwise + tryWithAnotherSource + "Not enough funds on sources" + (assignUtxo thresholds utxo) + source + sources + | otherwise = + -- means that utxo can be fit into the current tx + let + source' = source + # (_leftover -~ utxo.amount) + # (_tx <<< _total +~ utxo.amount) + # (_tx <<< _totalUtxos +~ 1) + # (_tx <<< _utxos %~ Cons utxo) + in + Right $ Cons source' sources + +-- * Helpers + +-- helper for assignUtxo +tryWithAnotherSource + :: forall s f + . Bifunctor f + => String + -> (List s -> f { err :: String, acc :: List s } (List s)) + -> s + -> List s + -> f { err :: String, acc :: List s } (List s) +tryWithAnotherSource err self source sources = + bimap (\e -> e { err = err <> "/" <> e.err, acc = Cons source e.acc }) + (Cons source) + $ self sources + +-- helper for assignUtxo +startNewTx + :: forall src target amount + . Semiring amount + => SourceState src target amount + -> List (SourceState src target amount) + -> List (SourceState src target amount) +startNewTx source sources = + List.snoc sources + $ (_tx .~ emptyTx zero) + $ (_completeTxs %~ Cons (source ^. _tx)) + $ source + +_totalUtxos :: forall s t a. Lens' (Tx s t a) Int +_totalUtxos = _Newtype <<< prop (Proxy :: _ "totalUtxos") + +_utxos :: forall s t a. Lens' (Tx s t a) (List { key :: t, amount :: a }) +_utxos = _Newtype <<< prop (Proxy :: _ "utxos") + +_total :: forall s t a. Lens' (Tx s t a) a +_total = _Newtype <<< prop (Proxy :: _ "total") + +_tx :: forall s t a. Lens' (SourceState s t a) (Tx Unit t a) +_tx = _Newtype <<< prop (Proxy :: _ "tx") + +_leftover :: forall s t a. Lens' (SourceState s t a) a +_leftover = _Newtype <<< prop (Proxy :: _ "leftover") + +_source :: forall s t a. Lens' (SourceState s t a) s +_source = _Newtype <<< prop (Proxy :: _ "source") + +_completeTxs :: forall s t a. Lens' (SourceState s t a) (List (Tx Unit t a)) +_completeTxs = _Newtype <<< prop (Proxy :: _ "completeTxs") \ No newline at end of file diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs new file mode 100644 index 000000000..1f348d311 --- /dev/null +++ b/src/Internal/Testnet/Server.purs @@ -0,0 +1,462 @@ +module Ctl.Internal.Testnet.Server + ( checkTestnet + , runTestnetTestPlan + , redirectChannels + , startTestnet + , stopTestnet + , startCardanoTestnet + , testTestnetContracts + , startTestnetCluster + , StartedTestnetCluster(MkStartedTestnetCluster) + , Channels + ) where + +import Contract.Prelude + +import Contract.Test.Mote (TestPlanM) +import Control.Alt ((<|>)) +import Control.Apply (applySecond) +import Control.Monad.Error.Class (liftMaybe, throwError, try) +import Control.Monad.Rec.Class (Step(..), tailRecM) +import Ctl.Internal.Helpers ((<>)) +import Ctl.Internal.Plutip.Server (execDistribution, startKupo, startOgmios) +import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), _rmdirSync, killProcessWithPort, spawn, stop) +import Ctl.Internal.Plutip.Types (ClusterStartupParameters, PlutipConfig, StopClusterResponse) +import Ctl.Internal.Plutip.Utils (EventSource, addCleanup, annotateError, mkDirIfNotExists, onLine, runCleanup, scheduleCleanup, suppressAndLogErrors, tmpdir, tryAndLogErrors, waitForClose, waitForError, waitForEvent, waitUntil) +import Ctl.Internal.Test.ContractTest (ContractTest, ContractTestPlan(ContractTestPlan)) +import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) +import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams, KupmiosConfig, Node, TestnetPaths) +import Ctl.Internal.Testnet.Types as Testnet.Types +import Ctl.Internal.Testnet.Utils (findNodeDirs, findTestnetPaths, getRuntime, readNodes, waitForTestnet872Workdir) +import Ctl.Internal.Wallet.Key (PrivatePaymentKey) +import Data.Array as Array +import Data.Maybe (Maybe(Nothing, Just)) +import Data.Time.Duration (Milliseconds(..)) +import Data.Tuple.Nested (type (/\)) +import Debug (spy) +import Effect.Aff (Aff) +import Effect.Aff as Aff +import Effect.Exception (Error, error) +import Effect.Exception.Unsafe (unsafeThrow) +import Effect.Random (randomInt) +import Effect.Ref (Ref) +import Foreign.Object as Object +import Node.ChildProcess (defaultSpawnOptions) +import Node.ChildProcess as Node.ChildProcess +import Node.Encoding (Encoding(UTF8)) +import Node.FS.Sync as Node.FS +import Node.Path (FilePath) +import Node.Process as Node.Process + +-- | Run several `Contract`s in tests in a (single) Testnet environment (cardano-testnet, kupo, etc.). +-- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. +-- | Namely, brackets are run for each of the top-level groups and tests +-- | inside the bracket. +-- | If you wish to only set up Testnet once, ensure all tests that are passed +-- | to `testTestnetContracts` are wrapped in a single group. +testTestnetContracts + :: PlutipConfig + -> TestPlanM ContractTest Unit + -> TestPlanM (Aff Unit) Unit +testTestnetContracts testnetCfg tp = unsafeThrow "testTestnetContracts" + -- tp' <- lift $ execDistribution tp + +-- | Run a `ContractTestPlan` in a (single) Testnet environment. +-- | Supports wallet reuse - see docs on sharing wallet state between +-- | wallets in `doc/plutip-testing.md`. +runTestnetTestPlan + :: PlutipConfig + -> ContractTestPlan + -> TestPlanM (Aff Unit) Unit +runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = + unsafeThrow "runTestnetTestPlan" + startCardanoTestnet + +{- +-- | Run a `ContractTestPlan` in a (single) Testnet environment. +-- | Supports wallet reuse - see docs on sharing wallet state between +-- | wallets in `doc/plutip-testing.md`. +runTestnetTestPlan + :: PlutipConfig + -> ContractTestPlan + -> TestPlanM (Aff Unit) Unit +runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = + runContractTestPlan \distr tests -> + moteBracket (startTestnet + + where + -- `MoteT`'s bracket doesn't support supplying the constructed resource into + -- the main action, so we use a `Ref` to store and read the result. + moteBracket + :: forall (a :: Type) (b :: Type) + . Aff a + -> Aff Unit + -> TestPlanM (a -> Aff b) Unit + -> TestPlanM (Aff b) Unit + moteBracket before' after' act = do + resultRef <- liftEffect $ Ref.new (Left $ error "Plutip not initialized") + let + before = do + res <- try $ before' + liftEffect $ Ref.write res resultRef + pure res + after = const $ after' + Mote.bracket { before, after } $ flip mapTest act \t -> do + result <- liftEffect $ Ref.read resultRef >>= liftEither + t result +-} + +checkTestnet :: PlutipConfig -> Aff Unit +checkTestnet cfg = unsafeThrow "checkTestnet" + +type Channels a = + { stderr :: EventSource a + , stdout :: EventSource a + } + +newtype StartedTestnetCluster = MkStartedTestnetCluster + { ogmios :: + { process :: ManagedProcess + , channels :: Channels String + } + , kupo :: + { process :: ManagedProcess + , channels :: Channels String + , workdir :: FilePath + } + , testnet :: + { process :: ManagedProcess + , channels :: Channels String + } + , paths :: TestnetPaths + } + +derive instance Newtype StartedTestnetCluster _ + + +-- | Start the plutip cluster, initializing the state with the given +-- | UTxO distribution. Also initializes an extra payment key (aka +-- | `ourKey`) with some UTxOs for use with further plutip +-- | setup. `ourKey` has funds proportional to the total amount of the +-- | UTxOs in the passed distribution, so it can be used to handle +-- | transaction fees. +startTestnetCluster + :: forall r + . Record (CardanoTestnetStartupParams (KupmiosConfig r)) + -> Ref (Array (Aff Unit)) + -> Aff StartedTestnetCluster +startTestnetCluster startupParams cleanupRef = do + { testnet + , channels + , workdirAbsolute + } <- annotateError "Could not start cardano-testnet" + $ startCardanoTestnet startupParams cleanupRef + + -- testnetEvents <- liftEffect $ onTestnetEvent channels.stdout + -- it will crash right here uncatchable if testnet process will die + log "Waiting for Ready state" + -- waitFor testnetEvents case _ of + -- Testnet.Types.Ready -> Just unit + -- _ -> Nothing + + { runtime, paths } <- waitUntil (Milliseconds 4000.0) + $ map hush + $ tryAndLogErrors "Waiting for ready state" + $ liftEffect do + + paths <- liftEither =<< findTestnetPaths { workdir: workdirAbsolute } + runtime <- getRuntime paths + pure { runtime, paths } + + log "Testnet is ready" + + ogmios <- annotateError "Could not start ogmios" + $ startOgmios' { paths, workdir: workdirAbsolute } + kupo <- annotateError "Could not start kupo" + $ startKupo' { paths, workdir: workdirAbsolute } + + log "startTestnetCluster:done" + pure $ MkStartedTestnetCluster + { paths + , ogmios + , kupo + , testnet: { process: testnet, channels } + } + where + startKupo' { paths, workdir } = do + kupo /\ kupoWorkdir <- + scheduleCleanup + cleanupRef + (startKupo startupParams paths cleanupRef) + $ fst + >>> stop + + _ <- Aff.forkAff do + waitForClose kupo + runCleanup cleanupRef + throwError $ error "kupo process has exited" + + kupoChannels <- liftEffect $ getChannels kupo + _ <- redirectChannels + kupoChannels + { stderrTo: + { log: Just $ workdir <> "kupo.stderr.log" + , console: Just "[kupo][error]: " + } + , stdoutTo: + { log: Just $ workdir <> "kupo.stdout.log", console: Nothing } + } + pure { process: kupo, workdir: kupoWorkdir, channels: kupoChannels } + + startOgmios' { paths, workdir } = do + ogmios <- scheduleCleanup + cleanupRef + (startOgmios startupParams paths) + stop + _ <- Aff.forkAff do + waitForClose ogmios + runCleanup cleanupRef + throwError $ error "ogmios process has exited" + + ogmiosChannels <- liftEffect $ getChannels ogmios + _ <- redirectChannels + ogmiosChannels + { stderrTo: + { log: Just $ workdir <> "ogmios.stderr.log" + , console: Just "[ogmios][error]: " + } + , stdoutTo: + { log: Just $ workdir <> "ogmios.stdout.log", console: Nothing } + } + pure { process: ogmios, channels: ogmiosChannels } + +startTestnet + :: PlutipConfig + -> InitialUTxODistribution + -> Aff (ManagedProcess /\ PrivatePaymentKey /\ ClusterStartupParameters) +startTestnet _ = unsafeThrow "startTestnet" + +stopTestnet :: PlutipConfig -> Aff StopClusterResponse +stopTestnet cfg = unsafeThrow "stopTestnet" + +-- | Runs cardano-testnet executable with provided params. +spawnCardanoTestnet + :: forall r + . { cwd :: FilePath } + -> { | CardanoTestnetStartupParams r } + -> Aff ManagedProcess +spawnCardanoTestnet { cwd } params = do + env <- liftEffect Node.Process.getEnv + initCwd <- liftMaybe (error "Couldn't find INIT_CWD env variable") + $ Object.lookup "INIT_CWD" env + let + env' = Object.fromFoldable + [ "TMPDIR" /\ cwd -- only for 8.1.1; 8.7.2 puts it's testnet directory into cwd instead + , "CARDANO_NODE_SRC" /\ (initCwd <> "cardano-testnet-files") + , "CARDANO_CLI" /\ "cardano-cli" + , "CREATE_SCRIPT_CONTEXT" /\ "create-script-context" + , "CARDANO_NODE" /\ "cardano-node" + , "CARDANO_SUBMIT_API" /\ "cardano-submit-api" + , "CARDANO_NODE_CHAIRMAN" /\ "cardano-node-chairman" + ] + opts = defaultSpawnOptions + { cwd = Just cwd, env = Just $ Object.union env' env } + -- log $ show env + spawn + "cardano-testnet" + (spy "cardano-testnet options: " options) + opts + Nothing + where + flag :: String -> String + flag name = "--" <> name + + option :: forall a. Show a => String -> a -> Array String + option name value = [ flag name, show value ] + + moption :: forall a. Show a => String -> Maybe a -> Array String + moption name value = option name =<< Array.fromFoldable value + + options :: Array String + options = join + [ [ "cardano" ] + , option "testnet-magic" params.testnetMagic + , Array.fromFoldable $ flag <<< show <$> params.era + , moption "active-slots-coeff" params.activeSlotsCoeff + , moption "enable-p2p" params.enableP2p + , moption "nodeLoggingFormat" params.nodeLoggingFormat + , moption "num-pool-nodes" params.numPoolNodes + , moption "epoch-length" params.epochLength + , moption "slot-length" params.slotLength + ] + +startCardanoTestnet + :: forall r + . { | CardanoTestnetStartupParams r } + -> Ref (Array (Aff Unit)) + -> Aff + { testnet :: ManagedProcess + , channels :: + { stderr :: EventSource String + , stdout :: EventSource String + } + , workdirAbsolute :: FilePath + , nodes :: Array { | Node () } + } +startCardanoTestnet params cleanupRef = annotateError "startCardanoTestnet" do + + testDir <- liftEffect do + tmp <- tmpdir + log $ show { tmp } + testId <- randomInt 0 999 -- FIXME: + let dir = tmp <> "testnet-" <> show testId + mkDirIfNotExists dir + log $ show { dir } + pure dir + + let + tmpLogDir = testDir <> "logs" + tmpStdoutLogs = tmpLogDir <> "cardano-testnet.stdout.tmp.log" + tmpStderrLogs = tmpLogDir <> "cardano-testnet.stderr.tmp.log" + cleanupTmpLogs = do + void $ try $ Node.FS.rm tmpStdoutLogs + void $ try $ Node.FS.rm tmpStderrLogs + + testnet <- spawnCardanoTestnet { cwd: testDir } params + channels <- liftEffect $ getChannels testnet + + -- Additional logging channels + _ <- Aff.forkAff $ annotateError "startCardanoTestnet:waitForFail" do + let + waitError = Just <$> waitForError testnet + waitClose = Nothing <$ waitForClose testnet + cause <- waitError <|> waitClose + runCleanup cleanupRef + throwError $ fromMaybe (error "cardano-testnet process has exited") cause + + liftEffect $ mkDirIfNotExists tmpLogDir + tempOutput <- redirectChannels + { stderr: channels.stderr, stdout: channels.stdout } + { stdoutTo: { log: Just tmpStdoutLogs, console: Just "[node][stdout]" } + , stderrTo: { log: Just tmpStderrLogs, console: Just "[node][stderr]" } + } + log "Redirected logs" + + -- -- It may not create an own directory until show any signs of life + -- _ <- waitForEvent channels.stdout + log "Waiting until testnet create it's own workdir" + -- forward node's stdout + workdirAbsolute <- + map (_.workdir >>> (testDir <> _)) -- workdir name to abs path + + $ waitForTestnet872Workdir channels.stdout { tmpdir: testDir } + Aff.killFiber (error "Temp output is not needed anymore") tempOutput + + -- cardano-testnet doesn't kill cardano-nodes it spawns, so we do it ourselves + log "Waiting for node sockets" + nodes <- waitUntil (Milliseconds 3000.0) + $ liftEffect + $ map hush + $ tryAndLogErrors "waiting until nodes are there" do + + nodeDirs <- findNodeDirs { workdir: workdirAbsolute } + readNodes { testnetDirectory: workdirAbsolute, nodeDirs } + + for_ nodes \{ port } -> do + liftEffect + $ addCleanup cleanupRef + $ killProcessWithPort port + + -- clean up on SIGINT + do + shouldCleanup <- liftEffect + $ Node.Process.lookupEnv "TESTNET_CLEANUP_WORKDIR" + <#> case _ of + Just "0" -> false + _ -> true + when shouldCleanup + $ liftEffect + $ addCleanup cleanupRef + $ liftEffect do + log "Cleaning up workidr" + cleanupTmpLogs + _rmdirSync workdirAbsolute + + _ <- redirectChannels + { stderr: channels.stderr, stdout: channels.stdout } + { stdoutTo: + { log: Just $ workdirAbsolute <> "cardano-testnet.stdout.log" + , console: Nothing + } + , stderrTo: + { log: Just $ workdirAbsolute <> "cardano-testnet.stderr.log" + , console: Nothing + } + } + log "startCardanoTestnet:done" + pure { testnet, workdirAbsolute, channels, nodes } + +getChannels + :: ManagedProcess + -> Effect + { stderr :: EventSource String + , stdout :: EventSource String + } +getChannels (ManagedProcess _ process _) = ado + stdout <- onLine (Node.ChildProcess.stdout process) Just + stderr <- onLine (Node.ChildProcess.stderr process) Just + in { stdout, stderr } + +-- Note: it will not throw, so to check the computation result +-- Fiber must be inspected. +redirectChannels + :: { stderr :: EventSource String + , stdout :: EventSource String + } + -> { stderrTo :: { log :: Maybe FilePath, console :: Maybe String } + , stdoutTo :: { log :: Maybe FilePath, console :: Maybe String } + } + -> Aff (Aff.Fiber (Either Error Unit)) +redirectChannels { stderr, stdout } { stderrTo, stdoutTo } = do + handleStderr <- redirectLogging + stderr + { storeLogs: stderrTo.log <#> + { logFile: _ + , toString: identity + } + , handleLine: case stderrTo.console of + Nothing -> const $ pure unit + Just prefix -> append prefix >>> log + } + handleStdout <- redirectLogging + stdout + { storeLogs: stdoutTo.log <#> + { logFile: _ + , toString: identity + } + , handleLine: case stdoutTo.console of + Nothing -> const $ pure unit + Just prefix -> append prefix >>> log + } + pure $ applySecond <$> handleStderr <*> handleStdout + +redirectLogging + :: forall a + . EventSource a + -> { storeLogs :: + Maybe + { logFile :: FilePath + , toString :: a -> String + } + , handleLine :: a -> Effect Unit + } + -> Aff (Aff.Fiber (Either Error Unit)) +redirectLogging events { handleLine, storeLogs } = + Aff.forkAff $ tryAndLogErrors "redirectLogging" $ flip tailRecM unit \_ -> do + line <- waitForEvent events + liftEffect $ suppressAndLogErrors "redirectLogging: callback error" $ void + do + handleLine line + for storeLogs \{ logFile, toString } -> + Node.FS.appendTextFile UTF8 logFile $ toString line <> "\n" + pure $ Loop unit diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs new file mode 100644 index 000000000..379b5a4aa --- /dev/null +++ b/src/Internal/Testnet/Types.purs @@ -0,0 +1,153 @@ +module Ctl.Internal.Testnet.Types + ( CardanoTestnetStartupParams + , Era(..) + , LoggingFormat(..) + , TestnetPaths + , Event(..) + , StartupFailure(..) + , KupmiosConfig + , NodeLocation + , Node + , GenesisUtxoKeyLocation + , OptionalStartupParams + , TestnetRuntime + , TestnetClusterConfig + , LogParams + , defaultOptionalStartupParams + , defaultStartupParams + ) where + +import Contract.Prelude + +import Contract.Config as Config +import Data.Time.Duration (Milliseconds, Seconds) +import Data.UInt (UInt) +import Node.Path (FilePath) +import Record as Record + +data Era + = Byron + | Shelley + | Allegra + | Mary + | Alonzo + | Babbage + +data StartupFailure + = SpawnFailed + | InitializationFailed + +derive instance Eq StartupFailure +derive instance Generic StartupFailure _ +instance Show StartupFailure where + show = genericShow + +data Event + = Ready872 -- when cardano-testnet 8.7.2 is ready to go + | Finished + | Failed + | StartupFailed StartupFailure + +derive instance Eq Event +derive instance Generic Event _ +instance Show Event where + show = genericShow + +instance Show Era where + show = case _ of + Byron -> "byron-era" + Shelley -> "shelley-era" + Allegra -> "allegra-era" + Mary -> "mary-era" + Alonzo -> "alonzo-era" + Babbage -> "babbage-era" + +data LoggingFormat = LogAsJson | LogAsText + +instance Show LoggingFormat where + show = case _ of + LogAsJson -> "json" + LogAsText -> "text" + +type OptionalStartupParams r = + ( numPoolNodes :: Maybe Int + , era :: Maybe Era + , epochLength :: Maybe Milliseconds + , slotLength :: Maybe Seconds + , activeSlotsCoeff :: Maybe Number + , enableP2p :: Maybe Boolean + , nodeLoggingFormat :: Maybe LoggingFormat + | r + ) + +-- | Command line params for the cardano-testnet executable +type CardanoTestnetStartupParams r = + ( testnetMagic :: Int + | OptionalStartupParams r + ) + +defaultStartupParams + :: { testnetMagic :: Int } -> Record (CardanoTestnetStartupParams ()) +defaultStartupParams necessaryParams = + defaultOptionalStartupParams `Record.union` necessaryParams + +defaultOptionalStartupParams :: Record (OptionalStartupParams ()) +defaultOptionalStartupParams = + { numPoolNodes: Nothing + , era: Just Babbage + , epochLength: Nothing + , slotLength: Nothing + , activeSlotsCoeff: Nothing + , enableP2p: Nothing + , nodeLoggingFormat: Nothing + } + +type TestnetPaths = + { testnetDirectory :: FilePath + , genesisKeys :: Array { | GenesisUtxoKeyLocation () } + , nodeConfigPath :: FilePath + , nodeSocketPath :: FilePath + , nodeDirs :: Array { | NodeLocation () } + } + +type Node r = + ( socket :: FilePath + , port :: UInt + | NodeLocation r + ) + +type NodeLocation r = + ( idx :: Int + , name :: String + , workdir :: FilePath + | r + ) + +type GenesisUtxoKeyLocation r = + ( path :: FilePath + , idx :: Int + | r + ) + +type TestnetClusterConfig r = + ( hooks :: Config.Hooks + | KupmiosConfig (LogParams r) + ) + +type LogParams r = + ( logLevel :: LogLevel + , customLogger :: Maybe (LogLevel -> Config.Message -> Aff Unit) + , suppressLogs :: Boolean + | r + ) + +type KupmiosConfig r = + ( kupoConfig :: Config.ServerConfig + , ogmiosConfig :: Config.ServerConfig + | r + ) + +type TestnetRuntime r = + ( nodes :: Array { | Node () } + | r + ) diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs new file mode 100644 index 000000000..34b7130b8 --- /dev/null +++ b/src/Internal/Testnet/Utils.purs @@ -0,0 +1,268 @@ +module Ctl.Internal.Testnet.Utils + ( findNodeDirs + , waitForTestnet872Workdir + , findTestnetPaths + , getNodePort + , getRuntime + , is811TestnetDirectoryName + , onTestnetEvent + , parseEvent + , readNodes + , waitFor + , read872GenesisKey + ) where + +import Contract.Prelude + +import Contract.Config as Contract.Config +import Contract.TextEnvelope + ( TextEnvelope(TextEnvelope) + , TextEnvelopeType(PaymentSigningKeyShelleyed25519) + , decodeTextEnvelope + ) +import Contract.Wallet.KeyFile + ( privatePaymentKeyFromTextEnvelope + ) +import Control.Alt ((<|>)) +import Control.Monad.Error.Class + ( liftMaybe + , throwError + ) +import Control.Monad.Except (lift, runExceptT) +import Control.Monad.Rec.Class (Step(..), tailRecM) +import Ctl.Internal.Helpers ((<>)) +import Ctl.Internal.Plutip.Utils + ( EventSource + , narrowEventSource + , waitForEvent + ) +import Ctl.Internal.Testnet.Types + ( Event(..) + , GenesisUtxoKeyLocation + , Node + , NodeLocation + , StartupFailure(..) + , TestnetPaths + , TestnetRuntime + ) +import Data.Array as Array +import Data.Int as Int +import Data.String (Pattern(..)) +import Data.String as String +import Data.UInt (UInt) +import Data.UInt as UInt +import Effect.Exception (Error, error) +import Node.Encoding (Encoding(UTF8)) +import Node.Encoding as Node.Encoding +import Node.FS.Sync as Node.FS +import Node.FS.Sync as Node.FS.Sync +import Node.Path (FilePath) + +-- | For cardano-node 8.1.1 +is811TestnetDirectoryName :: Int -> FilePath -> Boolean +is811TestnetDirectoryName n = + isJust <<< String.stripPrefix (Pattern $ "testnet-" <> show n <> "-test-") + +find811TestnetWorkir + :: { tmpdir :: FilePath, dirIdx :: Int } -> Effect (Maybe FilePath) +find811TestnetWorkir { tmpdir, dirIdx } = + map (tmpdir <> _) + <<< Array.find (is811TestnetDirectoryName dirIdx) + <$> Node.FS.readdir tmpdir + +waitForTestnet872Workdir + :: EventSource String -> { tmpdir :: FilePath } -> Aff { workdir :: FilePath } +waitForTestnet872Workdir src = map { workdir: _ } + <<< waitFor src + <<< parseTestnet872Workdir + +parseTestnet872Workdir :: { tmpdir :: FilePath } -> String -> Maybe FilePath +parseTestnet872Workdir { tmpdir } = String.stripPrefix + $ Pattern + $ " Workspace: " + <> tmpdir + <> "/" + +parseEvent :: String -> Maybe Event +parseEvent = case _ of + -- we can't know this way when 8.1.1 cardano-testnet is ready + " forAll109 =" -> Just Ready872 + "Usage: cardano-testnet cardano [--num-pool-nodes COUNT]" -> + Just $ StartupFailed SpawnFailed + "Failed to start testnet." -> + Just $ StartupFailed InitializationFailed + "Testnet is running. Type CTRL-C to exit." -> + Just Finished + _ -> Nothing + +waitFor :: forall a e. EventSource e -> (e -> Maybe a) -> Aff a +waitFor source f = flip tailRecM unit \_ -> do + event <- waitForEvent source + pure case f event of + Just a -> Done a + Nothing -> Loop unit + +onTestnetEvent :: EventSource String -> Effect (EventSource Event) +onTestnetEvent = narrowEventSource parseEvent + +-- type GenesisKeyFile = Int /\ FilePath + +-- parseGenesisKeyFileName +-- :: FilePath +-- -> Maybe +-- (Either { vkey :: GenesisKeyFile } { skey :: GenesisKeyFile }) +-- parseGenesisKeyFileName filename = do +-- idWithExt <- String.stripPrefix (Pattern "genesis") filename +-- let +-- vkey = do +-- idx <- parseIdx ".vkey" idWithExt +-- pure { vkey: idx /\ filename } +-- skey = do +-- idx <- parseIdx ".skey" idWithExt +-- pure { skey: idx /\ filename } +-- choose vkey skey +-- where +-- parseIdx ext = +-- Int.fromString <=< String.stripSuffix (Pattern ext) + +-- readGenesisKeyPaths +-- :: { workdir :: FilePath } +-- -> Effect (Map.Map Int { skey :: FilePath, vkey :: FilePath }) +-- readGenesisKeyPaths { workdir } = do +-- keyfiles <- Node.FS.readdir $ workdir <> "genesis-keys" +-- genesis <- liftMaybe (error $ "Can't parse genesis-keys filenames") +-- $ traverse parseGenesisKeyFileName keyfiles +-- let +-- empty :: forall k v. Ord k => Map.Map k v +-- empty = Map.fromFoldable [] +-- vkeys /\ skeys = fold $ genesis <#> +-- either +-- (\{ vkey: elem } -> Map.fromFoldable [ elem ] /\ empty) +-- (\{ skey: elem } -> empty /\ Map.fromFoldable [ elem ]) +-- keys = Map.intersectionWith { vkey: _, skey: _ } vkeys skeys +-- toFullPath filename = workdir <> "genesis-keys" <> filename + +-- pure $ keys <#> \{ skey, vkey } -> +-- { skey: toFullPath skey +-- , vkey: toFullPath vkey +-- } + +getRuntime :: TestnetPaths -> Effect (Record (TestnetRuntime ())) +getRuntime paths = do + nodes <- readNodes paths + -- genesis <- readGenesis {workdir: paths.testnetDirectory} + pure { nodes {-, genesis-} } + +readNodes + :: forall r + . { nodeDirs :: Array { | NodeLocation () } + , testnetDirectory :: FilePath + | r + } + -> Effect (Array { | Node () }) +readNodes { nodeDirs, testnetDirectory } = do + for nodeDirs \{ idx, workdir, name } -> do + let + socketPath = testnetDirectory <> "socket" <> name + exists <- Node.FS.exists socketPath + unless exists + $ throwError + $ error + $ "Couldn't find node socket at " + <> socketPath + port <- getNodePort { nodeDir: workdir } + pure { idx, socket: socketPath, port, workdir, name } + +-- | Changes TextEnvelope type to match private payment key one and tries to read that. +readTextEnvelopeAsPaymentSkey + :: FilePath + -> Effect Contract.Config.PrivatePaymentKey +readTextEnvelopeAsPaymentSkey path = do + TextEnvelope envelope <- + liftMaybe (error "Cannot decode skey envelope") + <<< decodeTextEnvelope + =<< Node.FS.Sync.readTextFile Node.Encoding.UTF8 path + let + envelope' = TextEnvelope + (envelope { type_ = PaymentSigningKeyShelleyed25519 }) + liftMaybe (error "Cannot decode payment skey from decoded envelope") + $ privatePaymentKeyFromTextEnvelope envelope' + +parse872UtxoKeyFilename :: FilePath -> Either Error (Maybe { idx :: Int }) +parse872UtxoKeyFilename path = + traverse + ( map { idx: _ } + <<< note (error "Can't parse genesis key index") + <<< Int.fromString + ) + $ String.stripSuffix (Pattern ".skey") + =<< String.stripPrefix (Pattern "utxo") path + +read872GenesisKeyLocations + :: { workdir :: FilePath } + -> Effect (Array { | GenesisUtxoKeyLocation () }) +read872GenesisKeyLocations { workdir } = do + let + keysDir = workdir <> "utxo-keys" + filenames <- Node.FS.readdir keysDir + map Array.catMaybes + $ liftEither + $ for filenames \filename -> + parse872UtxoKeyFilename filename <#> map \{ idx } -> + { idx, path: keysDir <> filename } + +read872GenesisKey + :: forall r + . { | GenesisUtxoKeyLocation r } + -> Effect Contract.Config.PrivatePaymentKey +read872GenesisKey { path } = readTextEnvelopeAsPaymentSkey path + +getNodePort :: { nodeDir :: FilePath } -> Effect UInt +getNodePort { nodeDir } = + liftMaybe (error $ "Failed to parse port at " <> nodeDir <> "/port") + <<< UInt.fromString + =<< Node.FS.readTextFile UTF8 (nodeDir <> "/port") + +findNodeDirs :: { workdir :: FilePath } -> Effect (Array { | NodeLocation () }) +findNodeDirs { workdir } = ado + subdirs <- Node.FS.readdir workdir + in + flip Array.mapMaybe subdirs \dirname -> ado + idx <- Int.fromString =<< node872 dirname + in { idx, workdir: workdir <> dirname, name: dirname } + where + node881 x = + String.stripPrefix (Pattern "node-bft") x + <|> String.stripPrefix (Pattern "node-pool") x + node872 = String.stripPrefix (Pattern "node-spo") + +findTestnetPaths + :: { workdir :: FilePath } -> Effect (Either Error TestnetPaths) +findTestnetPaths { workdir } = runExceptT do + let + nodeConfigPath = workdir <> "configuration.yaml" + firstNode811 = "socket/node-pool1" + firstNode872 = "socket/node-spo1" + nodeSocketPath = workdir <> firstNode872 + workdirExists <- lift $ Node.FS.exists workdir + configPathExists <- lift $ Node.FS.exists nodeConfigPath + socketPathExists <- lift $ Node.FS.exists nodeSocketPath + unless workdirExists do + throwError $ error $ + "cardano-testnet working directory not found." + unless configPathExists do + throwError $ error $ + "'configuration.yaml' not found in cardano-testnet working directory." + unless socketPathExists do + throwError $ error + $ firstNode872 + <> " not found in cardano-testnet working directory." + nodeDirs <- lift $ findNodeDirs { workdir } + genesisKeys <- lift $ read872GenesisKeyLocations { workdir } + pure + { testnetDirectory: workdir + , nodeConfigPath + , nodeSocketPath + , genesisKeys + , nodeDirs + } \ No newline at end of file diff --git a/test/Plutip.purs b/test/Plutip.purs index 2a582b224..ad117fc26 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -2,92 +2,209 @@ module Test.Ctl.Plutip ( main ) where -import Prelude +import Contract.Prelude -import Contract.Test.Plutip - ( PlutipConfig - , noWallet - , runPlutipTestPlan - , testPlutipContracts - ) -import Contract.Test.Utils (exitCode, interruptOnSignal) -import Ctl.Internal.Contract.Monad (wrapQueryM) -import Ctl.Internal.Plutip.Server - ( checkPlutipServer - , startPlutipCluster - , startPlutipServer - , stopChildProcessWithPort - , stopPlutipCluster - ) -import Ctl.Internal.Plutip.Types (StopClusterResponse(StopClusterSuccess)) -import Data.Maybe (Maybe(Just)) -import Data.Posix.Signal (Signal(SIGINT)) +import Cardano.Serialization.Lib as CSL +import Cardano.Types as Cardano.Types +import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) +import Cardano.Types.Address as Cardano.Types.Address +import Cardano.Types.BigInt (BigInt) +import Cardano.Types.BigNum (BigNum(..)) +import Cardano.Types.BigNum (fromInt) as BigNum +import Cardano.Types.Credential (Credential(..)) +import Cardano.Types.PaymentCredential (PaymentCredential(..)) +import Cardano.Types.PrivateKey as Cardano.Type.PrivateKey +import Cardano.Types.PublicKey as Cardano.Types.PublicKey +import Cardano.Types.StakeCredential (StakeCredential(..)) +import Cardano.Types.StakePubKeyHash (StakePubKeyHash(..)) +import Contract.Address (getNetworkId) +import Contract.Monad (Contract(..), liftedM) +import Contract.Monad as Contract +import Contract.Test.Plutip (defaultPlutipConfig) +import Contract.Test.Utils (interruptOnSignal) +import Contract.Transaction (awaitTxConfirmed, balanceTx, signTransaction, submit) +import Contract.TxConstraints (DatumPresence(..), TxConstraints(..)) +import Contract.UnbalancedTx (mkUnbalancedTx) +import Contract.Value (Value(..), lovelaceValueOf, valueToCoin) +import Contract.Wallet (getWalletAddress, getWalletBalance, mkKeyWalletFromPrivateKeys, withKeyWallet) +import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) +import Ctl.Examples.OneShotMinting (contract) as OneShotMinting +import Ctl.Examples.PlutusV2.ReferenceInputs (contract) as ReferenceInputs +import Ctl.Internal.Plutip.Utils (tmpdir) +import Ctl.Internal.Testnet.Contract (readGenesisWallets) +import Ctl.Internal.Testnet.Contract as Testnet.Contract +import Ctl.Internal.Testnet.Server as Testnet +import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams) +import Ctl.Internal.Testnet.Types as Testnet.Types +import Ctl.Internal.Types.TxConstraints (TxConstraint(..)) +import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) +import Data.Array (head, singleton) +import Data.Maybe (Maybe(Just), fromJust) +import Data.Posix.Signal (Signal(..)) +import Debug (traceM) import Effect (Effect) -import Effect.Aff - ( Aff - , Milliseconds(Milliseconds) - , bracket - , cancelWith - , effectCanceler - , launchAff +import Effect.Aff (launchAff) +import Internal.CardanoCli.QueryHandler as CardanoCli.QueryHandler +import Partial.Unsafe (unsafePartial) +import Record as Record + +defaultStartupParams :: { | CardanoTestnetStartupParams () } +defaultStartupParams = + ( Testnet.Types.defaultStartupParams + { testnetMagic: 2 } ) -import Mote (group, test) -import Mote.Monad (mapTest) -import Mote.TestPlanM (TestPlanM) -import Mote.TestPlanM as Utils -import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration -import Test.Ctl.Plutip.Common (config) -import Test.Ctl.Plutip.Contract as Contract -import Test.Ctl.Plutip.Contract.Assert as Assert -import Test.Ctl.Plutip.Contract.ClusterParameters as ClusterParameters -import Test.Ctl.Plutip.Contract.Mnemonics as Mnemonics -import Test.Ctl.Plutip.Contract.OgmiosMempool as OgmiosMempool -import Test.Ctl.Plutip.ExUnits as ExUnits -import Test.Ctl.Plutip.Logging as Logging -import Test.Ctl.Plutip.SameWallets as SameWallets -import Test.Ctl.Plutip.UtxoDistribution as UtxoDistribution -import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface -import Test.Spec.Assertions (shouldSatisfy) -import Test.Spec.Runner (defaultConfig) + { nodeLoggingFormat = Just Testnet.Types.LogAsJson } + +newWallet :: Effect KeyWallet +newWallet = ado + paymentSkey <- wrap <$> genSkey + stakingSkey <- wrap <$> genSkey + in mkKeyWalletFromPrivateKeys paymentSkey (Just stakingSkey) + where + genSkey = wrap <$> CSL.privateKey_generateEd25519 + +walletInfo + :: Cardano.Types.NetworkId + -> KeyWallet + -> { address :: Cardano.Types.Address + , paymentPubKeyHash :: Cardano.Types.PaymentPubKeyHash + , stakePubKeyHash :: Maybe Cardano.Types.StakePubKeyHash + } +walletInfo network (KeyWallet wallet) = + let + privateKeyToPkh = + Cardano.Types.PublicKey.hash + <<< Cardano.Type.PrivateKey.toPublicKey + + paymentPubKeyHash :: Cardano.Types.PaymentPubKeyHash + paymentPubKeyHash = + wrap $ privateKeyToPkh $ unwrap wallet.paymentKey + + stakePubKeyHash :: Maybe Cardano.Types.StakePubKeyHash + stakePubKeyHash = + wrap <<< privateKeyToPkh <<< unwrap <$> wallet.stakeKey + address = + Cardano.Types.Address.mkPaymentAddress + network + (wrap $ Cardano.Types.PubKeyHashCredential $ unwrap paymentPubKeyHash) + $ wrap + <<< Cardano.Types.PubKeyHashCredential + <<< unwrap + <$> stakePubKeyHash + in + { paymentPubKeyHash + , stakePubKeyHash + , address + } -- Run with `npm run plutip-test` main :: Effect Unit -main = interruptOnSignal SIGINT =<< launchAff do - flip cancelWith (effectCanceler (exitCode 1)) do - Utils.interpretWithConfig - defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } - $ group "Plutip" do - testPlutipContracts config Mnemonics.suite - group "ExUnits - normal limits" do - testPlutipContracts config $ ExUnits.mkFailingSuite 3000 - testPlutipContracts config $ ExUnits.mkSuite 2550 - group "ExUnits - relaxed limits" do - testPlutipContracts configWithMaxExUnits $ ExUnits.mkSuite 3000 - testPlutipContracts config Assert.suite - Logging.suite - testStartPlutipCluster - testPlutipContracts config $ do - flip mapTest QueryM.AffInterface.suite - (noWallet <<< wrapQueryM) - ChangeGeneration.suite - Contract.suite - UtxoDistribution.suite - testPlutipContracts config OgmiosMempool.suite - runPlutipTestPlan config SameWallets.suite - ClusterParameters.runTest - -configWithMaxExUnits :: PlutipConfig -configWithMaxExUnits = config - { clusterConfig = config.clusterConfig { raiseExUnitsToMax = true } } - -testStartPlutipCluster :: TestPlanM (Aff Unit) Unit -testStartPlutipCluster = group "Server" do - test "startPlutipCluster / stopPlutipCluster" do - bracket (startPlutipServer config) - (stopChildProcessWithPort config.port) $ const do - checkPlutipServer config - _startRes <- startPlutipCluster config [ [] ] - stopRes <- stopPlutipCluster config - stopRes `shouldSatisfy` case _ of - StopClusterSuccess -> true - _ -> false +main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do + let cfg = Record.union defaultStartupParams defaultPlutipConfig + distr = [ BigNum.fromInt 50_000_000, BigNum.fromInt 5_000_000 ] + Testnet.Contract.withTestnetContractEnv cfg distr \contractEnv wallet -> do + log "Running test contract" + Contract.runContractInEnv contractEnv do + withKeyWallet wallet do + balance <- getWalletBalance + traceM $ "kw balance: " <> show balance + OneShotMinting.contract + +{- + log "Inside" + let + Testnet.MkStartedTestnetCluster { paths } = cluster + -- a new wallet to send initial lovelace to + -- do something interesting with every utxo in utxo-keys + genesisWallets <- liftEffect $ readGenesisWallets paths + let genesisWallet = unsafePartial fromJust $ head genesisWallets + {- + for_ genesisWallets \wallet -> do + withKeyWallet wallet do + let + nodeCfg = + { socketPath: paths.nodeSocketPath + , testnetMagic: cfg.testnetMagic + } + -- it will show zero balance + log + <<< show + <<< { initialBalanceViaKupo: _ } + =<< getWalletBalance + + -- we can see genesis utxos when add cardano-cli query results to utxosAt + CardanoCli.QueryHandler.withCardanoCliCompletion nodeCfg do + log <<< show <<< { utxosAfterTx: _ } <<< map valueToCoin =<< + getWalletBalance -- utxosAt newWallet.address + kw <- withKeyWallet genesisWallet do + let + nodeCfg = + { socketPath: paths.nodeSocketPath + , testnetMagic: cfg.testnetMagic + } + -- it will show zero balance + log + <<< show + <<< { initialBalanceViaKupo: _ } + =<< getWalletBalance + + genesisAddr <- liftedM "Could not get genesis address" getWalletAddress + + -- we can see genesis utxos when add cardano-cli query results to utxosAt + CardanoCli.QueryHandler.withCardanoCliCompletion nodeCfg genesisAddr do + -- log <<< show <<< { utxosAfterTx: _ } <<< map valueToCoin =<< + -- getWalletBalance -- utxosAt newWallet.address + + -- send 100 ADA to a newly generated wallet + wallet <- liftEffect newWallet + fundWalletFromGenesis wallet genesisWallet (BigNum.fromInt 100_000_000) + fundWalletFromGenesis wallet genesisWallet (BigNum.fromInt 5_000_000) + pure wallet + -- execute simple contract + withKeyWallet kw do + kwBalance <- getWalletBalance + traceM $ "kw balance: " <> show kwBalance + OneShotMinting.contract + + log <<< append "Tmp dir is: " =<< liftEffect tmpdir +-} + +-- flip cancelWith (effectCanceler (exitCode 1)) do +-- Utils.interpretWithConfig +-- defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } +-- $ group "Plutip" do +-- testTestnetContracts config Mnemonics.suite +-- group "ExUnits - normal limits" do +-- testTestnetContracts config $ ExUnits.mkFailingSuite 3000 +-- testTestnetContracts config $ ExUnits.mkSuite 2550 +-- group "ExUnits - relaxed limits" do +-- testTestnetContracts configWithMaxExUnits $ ExUnits.mkSuite 3000 +-- testTestnetContracts config Assert.suite +-- Logging.suite +-- testStartTestnet +-- testTestnetContracts config $ do +-- flip mapTest QueryM.AffInterface.suite +-- (noWallet <<< wrapQueryM) +-- ChangeGeneration.suite +-- Contract.suite +-- UtxoDistribution.suite +-- testTestnetContracts config OgmiosMempool.suite +-- runTestnetTestPlan config SameWallets.suite +-- ClusterParameters.runTest + +-- configWithMaxExUnits :: PlutipConfig +-- configWithMaxExUnits = config +-- { clusterConfig = config.clusterConfig { raiseExUnitsToMax = true } } + +-- testStartTestnet:: TestPlanM (Aff Unit) Unit +-- testStartTestnet = group "Server" do +-- test "startTestnet / stopTestnet" do +-- -- bracket (startTestnet config) +-- -- (stopChildProcessWithPort config.port) $ const do +-- checkTestnet config +-- _startRes <- startTestnet config [ [] ] +-- stopRes <- stopTestnet config +-- stopRes `shouldSatisfy` case _ of +-- StopClusterSuccess -> true +-- _ -> false + diff --git a/test/Testnet/DistributeFunds.purs b/test/Testnet/DistributeFunds.purs new file mode 100644 index 000000000..513b07a22 --- /dev/null +++ b/test/Testnet/DistributeFunds.purs @@ -0,0 +1,274 @@ +module Test.Ctl.Testnet.DistributeFunds where + +import Contract.Prelude hiding (over) + +import Contract.Test.Mote (TestPlanM) +import Ctl.Internal.Testnet.DistributeFunds + ( _completeTxs + , _leftover + , _source + , _total + , _totalUtxos + , _tx + , _utxos + ) +import Ctl.Internal.Testnet.DistributeFunds as Distribute +import Data.Bifunctor (lmap) +import Data.Lens (over, set, view, (%~), (+~), (-~), (.~), (^.)) +import Data.List (List(..)) +import Data.List as List +import Mote (group, test) +import Test.Spec.Assertions (shouldEqual) + +suite :: TestPlanM (Aff Unit) Unit +suite = group "Testnet" $ group "Distribute Funds" do + group "assignUtxo" do + let + highThreshold = + { maxCoinPerTx: 999_999 + , maxTargetUtxosPerTx: 999_999 + } + + test "Fails if sources do not have enough funds" do + + let + outcome = + Distribute.assignUtxo + highThreshold + { amount: 120, key: "utxo0" } + $ List.fromFoldable + [ Distribute.initialSourceState + { key: 1, initialFunds: 90 } + , Distribute.initialSourceState + { key: 2, initialFunds: 100 } + ] + lmap (const unit) outcome `shouldEqual` Left unit + test "Starts new Tx when reaches the limit of UTxOs" do + let + thresholds = highThreshold { maxTargetUtxosPerTx = 3 } + + src0 :: Distribute.SourceState Int String Int + src0 = + Distribute.initialSourceState + { key: 0, initialFunds: 90 } + # (_tx <<< _total .~ 370) + # (_tx <<< _totalUtxos .~ 2) + # + ( _tx <<< _utxos .~ List.fromFoldable + [ { key: "tgt0", amount: 300 } + , { key: "tgt42", amount: 70 } + ] + ) + + src1 :: Distribute.SourceState Int String Int + src1 = Distribute.initialSourceState + { key: 1, initialFunds: 30 } + + utxo0 = { amount: 10, key: "utxo0" } + utxo1 = { amount: 6, key: "utxo1" } + acc0 = List.fromFoldable [ src0, src1 ] + outcome = do + acc1 <- Distribute.assignUtxo + thresholds + utxo0 + acc0 + acc2 <- Distribute.assignUtxo + thresholds + utxo1 + acc1 + pure acc2 + + expected :: List (Distribute.SourceState Int String Int) + expected = List.fromFoldable + [ src1 + # (_leftover -~ utxo1.amount) + # + ( set _tx + $ Distribute.emptyTx utxo1.amount + # (_totalUtxos .~ 1) + # (_utxos .~ pure utxo1) + ) + , src0 + # (_leftover -~ utxo0.amount) + # (_tx .~ Distribute.emptyTx zero) + # + ( over _completeTxs + $ src0 + # (view _tx) + # (_total +~ utxo0.amount) + # (_totalUtxos .~ 3) + # (_utxos %~ Cons utxo0) + # Cons + ) + ] + + outcome `shouldEqual` Right expected + test "Tends to spend sources evenly" do + let + utxos0 = List.fromFoldable + [ { key: "01", amount: 2 } + , { key: "02", amount: 18 } + ] + utxos1 = List.fromFoldable + [ { key: "11", amount: 3 } + , { key: "12", amount: 17 } + ] + utxos2 = List.fromFoldable + [ { key: "21", amount: 9 } + , { key: "22", amount: 11 } + ] + utxos3 = List.fromFoldable + [ { key: "31", amount: 15 } + , { key: "32", amount: 5 } + ] + -- total = 80 + utxos = utxos0 <> utxos1 <> utxos2 <> utxos3 + + -- they have exactly enough to fit all the utxos + src0 = Distribute.initialSourceState + { key: 0, initialFunds: 40 } + src1 = Distribute.initialSourceState + { key: 1, initialFunds: 40 } + sources = List.fromFoldable [ src0, src1 ] + + outcome = foldM + ( flip $ Distribute.assignUtxo highThreshold + { maxTargetUtxosPerTx = 2 } + ) + sources + utxos + + -- Both must have 2 txs, 20 UTxO each. All sources funds must be spent. + expected = List.fromFoldable + [ src1 + # (_leftover .~ 0) + -- it would be put in completeTxs on the next iteration + # + ( set _tx + $ Distribute.emptyTx 20 + # (_totalUtxos .~ 2) + # (_utxos .~ List.reverse utxos3) + ) + # + ( set _completeTxs + $ Distribute.emptyTx 20 + # (_totalUtxos .~ 2) + # (_utxos .~ List.reverse utxos1) + # pure + ) + , src0 + # (_leftover .~ 0) + # + ( _completeTxs .~ List.fromFoldable + [ Distribute.emptyTx 20 + # (_totalUtxos .~ 2) + # (_utxos .~ List.reverse utxos2) + , Distribute.emptyTx 20 + # (_totalUtxos .~ 2) + # (_utxos .~ List.reverse utxos0) + ] + ) + ] + outcome `shouldEqual` Right expected + + -- It could be better: seach for a source that have a Tx with lowest total or lowest amount of UTxOs + -- But if it worths it? + test "Makes new Tx if utxo is impossible to fit in existing ones" do + let + src0 = + Distribute.initialSourceState + { key: 0, initialFunds: 900 } + # (_tx <<< _total .~ 120) + src1 = + Distribute.initialSourceState + { key: 1, initialFunds: 800 } + # (_tx <<< _total .~ 105) + utxo = { key: "utxo0", amount: 100 } + outcome = + Distribute.assignUtxo + highThreshold { maxCoinPerTx = 200 } + utxo + $ List.fromFoldable [ src0, src1 ] + expected = List.fromFoldable + [ src0 + , src1 + # (_leftover -~ utxo.amount) + # + ( set _tx + $ Distribute.emptyTx utxo.amount + # (_totalUtxos .~ 1) + # (_utxos .~ pure utxo) + ) + # (_completeTxs .~ pure (src1 ^. _tx)) + ] + outcome `shouldEqual` Right expected + test "Tries to fit UTxO in any constructing tx that can fit it" do + let + src0 = + Distribute.initialSourceState + { key: 0, initialFunds: 900 } + -- not enough to fit the utxo + # (_tx <<< _total .~ 120) + src1 = + Distribute.initialSourceState + { key: 1, initialFunds: 800 } + -- exactly enough to fit the utxo + # (_tx <<< _total .~ 100) + utxo = { key: "utxo0", amount: 100 } + outcome = + Distribute.assignUtxo + highThreshold { maxCoinPerTx = 200 } + utxo + $ List.fromFoldable [ src0, src1 ] + expected = List.fromFoldable + [ src0 + , src1 + # (_leftover -~ utxo.amount) + # (_tx <<< _total +~ utxo.amount) + # (_tx <<< _totalUtxos +~ 1) + # (_tx <<< _utxos .~ pure utxo) + ] + outcome `shouldEqual` Right expected + test "Tries to fit UTxO in any source tx that has enough funds" do + let + -- not enough + src0 = Distribute.initialSourceState + { key: 0, initialFunds: 200 } + src1 = Distribute.initialSourceState + { key: 1, initialFunds: 100 } + -- enough + src2 = Distribute.initialSourceState + { key: 2, initialFunds: 300 } + utxo = { key: "utxo0", amount: 250 } + outcome = map (List.sortBy $ comparing (view _source)) + $ Distribute.assignUtxo highThreshold utxo + $ List.fromFoldable [ src0, src1, src2 ] + expected = List.sortBy (comparing $ view _source) $ List.fromFoldable + [ src0 + , src1 + , src2 + # (_leftover -~ utxo.amount) + # + ( set _tx + $ Distribute.emptyTx utxo.amount + # (_totalUtxos .~ 1) + # (_utxos .~ pure utxo) + ) + ] + outcome `shouldEqual` Right expected + test "Fails if UTxO amount is higher than threshold" do + let + -- not enough + src0 = Distribute.initialSourceState + { key: 0, initialFunds: 300 } + src1 = Distribute.initialSourceState + { key: 1, initialFunds: 900 } + utxo = { key: "utxo0", amount: 250 } + outcome = + Distribute.assignUtxo + highThreshold { maxCoinPerTx = 200 } + utxo + $ List.fromFoldable [ src0, src1 ] + lmap (const unit) outcome `shouldEqual` Left unit + pure unit + diff --git a/test/Unit.purs b/test/Unit.purs index c7882764b..2df8e4a08 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -28,6 +28,7 @@ import Test.Ctl.Partition as Partition import Test.Ctl.ProtocolParams as ProtocolParams import Test.Ctl.Serialization as Serialization import Test.Ctl.Serialization.Hash as Serialization.Hash +import Test.Ctl.Testnet.DistributeFunds as Testnet.DistributeFunds import Test.Ctl.Types.Interval as Types.Interval import Test.Ctl.Types.Ipv6 as Ipv6 import Test.Ctl.Types.TokenName as Types.TokenName @@ -47,6 +48,7 @@ main = interruptOnSignal SIGINT =<< launchAff do testPlan :: TestPlanM (Aff Unit) Unit testPlan = do + Testnet.DistributeFunds.suite ApplyArgs.suite Ipv6.suite NativeScript.suite From 49bf3c4b124bc8cf3463dd5c57d5ddbda6ae33ae Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Wed, 26 Jun 2024 09:49:52 -0300 Subject: [PATCH 242/373] Remove `Contract.Scripts.applyArgs` and add `purescript-uplc-apply-args` dependency --- CHANGELOG.md | 14 +- examples/ByUrl.purs | 2 - examples/OneShotMinting.purs | 3 +- flake.nix | 9 +- packages.dhall | 25 ++ spago-packages.nix | 13 + spago.dhall | 1 + src/Contract/Scripts.purs | 1 - src/Internal/ApplyArgs.js | 32 -- src/Internal/ApplyArgs.purs | 31 -- templates/ctl-scaffold/package-lock.json | 39 --- templates/ctl-scaffold/package.json | 1 - test/ApplyArgs.purs | 380 ----------------------- test/Plutip/Contract.purs | 2 +- test/Unit.purs | 2 - 15 files changed, 57 insertions(+), 498 deletions(-) delete mode 100644 src/Internal/ApplyArgs.js delete mode 100644 src/Internal/ApplyArgs.purs delete mode 100644 test/ApplyArgs.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b5ae290e..3e8bbf623 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Removed +- `Contract.Scripts.applyArgs` - use `Cardano.Plutus.ApplyArgs.applyArgs` from [purescript-uplc-apply-args](https://github.com/mlabs-haskell/purescript-uplc-apply-args) + ### Changed ### Fixed @@ -409,7 +411,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil - `startPlutipCluster` error message now includes cluster startup failure details. ([#1407](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1407)) - `PlutipTest` is now known as `Contract.Test.ContractTest`. It has been semantically untied from Plutip, because we now have another test runner for tests that rely on particular funds distributions - [Blockfrost](./doc/blockfrost.md). See `Contract.Test.Blockfrost.runContractTestsWithBlockfrost` ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) - `Contract.Staking.getPoolParameters` has been moved to `Contract.Backend.Ogmios.getPoolParameters`. This function only runs with Ogmios backend, because Blockfrost [does not provide](https://github.com/blockfrost/blockfrost-backend-ryo/issues/82) all the required values ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) -- Use of [CIP-40](https://cips.cardano.org/cip/CIP-0040/) collateral output is now enabled with CIP-30 wallets ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)). +- Use of [CIP-40](https://chips.cardano.org/cip/CIP-0040/) collateral output is now enabled with CIP-30 wallets ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)). - `reindexSpentScriptRedeemers` is no longer in Contract (it's pure) ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) ### Removed @@ -466,7 +468,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil ### Fixed -- Added missing `stakePoolTargetNum` ("`nOpt`") protocol parameter (see [CIP-9](https://cips.cardano.org/cip/CIP-0009)) ([#571](https://github.com/Plutonomicon/cardano-transaction-lib/issues/571)) +- Added missing `stakePoolTargetNum` ("`nOpt`") protocol parameter (see [CIP-9](https://chips.cardano.org/cip/CIP-0009)) ([#571](https://github.com/Plutonomicon/cardano-transaction-lib/issues/571)) - CIP-30 `signData` response handling ([#1289](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1289)) ### Runtime Dependencies @@ -481,7 +483,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil ### Added -- Support passing the inital UTxO distribution as an Array and also get the KeyWallets as an Array when writing Plutip tests. ([#1018](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1018)). An usage example can be found [here](doc/plutip-testing.md). +- Support passing the initial UTxO distribution as an Array and also get the KeyWallets as an Array when writing Plutip tests. ([#1018](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1018)). An usage example can be found [here](doc/plutip-testing.md). - New `Contract.Test.Utils` assertions and checks: `assertOutputHasRefScript`, `checkOutputHasRefScript`, `checkTxHasMetadata` ([#1044](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1044)) - `Parallel` instance to `Contract` monad. Parallel capabilities are in the associated `ParContract` datatype ([#1037](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1037)) - Balancer constraints interface (check [Building and submitting transactions](https://github.com/Plutonomicon/cardano-transaction-lib/blob/95bdd213eff16a5e00df82fb27bbe2479e8b4196/doc/getting-started.md#building-and-submitting-transactions) and `examples/BalanceTxConstraints.purs` for reference) ([#1053](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1053)) @@ -533,7 +535,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil - Adapted Gero wallet extension to `preview` network in E2E test suite ([#1086](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1086)) - `Contact.TextEnvelope` how provides more type safe interface with simplified error handling ([#988](https://github.com/Plutonomicon/cardano-transaction-lib/issues/988)) - Forbid minting zero tokens. ([#1156](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1156)) -- Modified functions `getWalletAddress`, `ownPubKeyHash`, `ownStakePubKeyHash`, `getWalletAddressWithNetworkTag` and `ownPaymentPubKeyHash` to return `Contract r (Array Adress)`. ([#1045](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1045)) +- Modified functions `getWalletAddress`, `ownPubKeyHash`, `ownStakePubKeyHash`, `getWalletAddressWithNetworkTag` and `ownPaymentPubKeyHash` to return `Contract r (Array Address)`. ([#1045](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1045)) - `pubKeyHashAddress` and `scriptHashAddress` now both accept an optional `Credential` that corresponds to the staking component of the address ([#1060](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1060)) - `utxosAt` and `getUtxo` now use Kupo internally, `utxosAt` returns `UtxoMap` without `Maybe` context. The users will need to set `kupoConfig` in `ConfigParams`. ([#1185](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1185)) - `Interval` type is redesigned to restrain some finite intervals to be expressed in the system ([#1041](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1041)) @@ -621,7 +623,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil - Constraint for attaching a reference input to a transaction: `mustReferenceOutput` ([#946](https://github.com/Plutonomicon/cardano-transaction-lib/pull/946)) - `DatumPresence` data type, which tags paying constraints that accept datum, to mark whether the datum should be inline or hashed in the transaction output. ([#931](https://github.com/Plutonomicon/cardano-transaction-lib/pull/931)) - Utility conversion functions `serializeData` and `deserializeData` between `PlutusData` and `CborBytes` to `Contract.PlutusData`. ([#1001](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1001)) -- Added [CIP-30](https://cips.cardano.org/cip/CIP-0030) methods: `getNetworkId`, `getChangeAddress`, `getRewardAddresses`, `getUnusedAddresses`, `signData`, `isWalletAvailable`, `isEnabled`, `apiVersion`, `name` and `icon` to `Contract.Wallet` ([#974](https://github.com/Plutonomicon/cardano-transaction-lib/issues/974)) +- Added [CIP-30](https://chips.cardano.org/cip/CIP-0030) methods: `getNetworkId`, `getChangeAddress`, `getRewardAddresses`, `getUnusedAddresses`, `signData`, `isWalletAvailable`, `isEnabled`, `apiVersion`, `name` and `icon` to `Contract.Wallet` ([#974](https://github.com/Plutonomicon/cardano-transaction-lib/issues/974)) ### Changed @@ -674,7 +676,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil - We do not split strings in pieces when encoding to JSON - We require a `"version": 2` tag - `policy_id` must be 28 bytes - - `asset_name` is up to 32 bytes. See https://github.com/cardano-foundation/CIPs/issues/303 for motivation + - `asset_name` is up to 32 bytes. See https://github.com/cardano-foundation/chips/issues/303 for motivation - `ogmios-datum-cache` now works on `x86_64-darwin` - `TypedValidator` interface ([#808](https://github.com/Plutonomicon/cardano-transaction-lib/issues/808)) - `Contract.Address.getWalletCollateral` now works with `KeyWallet`. diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 3119dff8d..f13fcd5e5 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -67,7 +67,6 @@ import Data.Time.Duration (Seconds(Seconds)) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) import Effect.Console as Console -import Test.Ctl.ApplyArgs as ApplyArgs import Web.HTML (window) import Web.HTML.Window (localStorage) import Web.Storage.Storage (getItem) @@ -217,7 +216,6 @@ examples = addSuccessLog <$> Map.fromFoldable , "ReferenceInputs" /\ ReferenceInputsV2.contract , "ReferenceInputsAndScripts" /\ ReferenceInputsAndScriptsV2.contract , "Utxos" /\ Utxos.contract - , "ApplyArgs" /\ ApplyArgs.contract , "Schnorr" /\ Schnorr.contract , "ECDSA" /\ ECDSA.contract , "PaysWithDatum" /\ PaysWithDatum.contract diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 0ed28bc98..3b8a83485 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -12,6 +12,7 @@ module Ctl.Examples.OneShotMinting import Contract.Prelude +import Cardano.Plutus.ApplyArgs (applyArgs) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint @@ -28,7 +29,7 @@ import Contract.Monad ) import Contract.PlutusData (PlutusData, toData) import Contract.ScriptLookups as Lookups -import Contract.Scripts (PlutusScript, applyArgs) +import Contract.Scripts (PlutusScript) import Contract.Test.Assert ( ContractCheck , checkLossInWallet diff --git a/flake.nix b/flake.nix index 8869b614c..2bae547d0 100644 --- a/flake.nix +++ b/flake.nix @@ -391,7 +391,10 @@ nativeBuildInputs = [ pkgs.jq ]; } '' cd ${self} - diff <(jq -S .dependencies <<< $ctlPackageJson) <(jq -S .dependencies <<< $ctlScaffoldPackageJson) + # We don't want to include `uplc-apply-args` in the template dependencies. + diff \ + <(jq -S '.dependencies | del(."@mlabs-haskell/uplc-apply-args")' <<< $ctlPackageJson) \ + <(jq -S .dependencies <<< $ctlScaffoldPackageJson) # We don't want to include `doctoc` in the template dev dependencies. diff \ <(jq -S '.devDependencies | del(.jssha) | del(.blakejs) | del(.doctoc)' <<< $ctlPackageJson) \ @@ -403,7 +406,9 @@ let ctlPkgsExp = import ./spago-packages.nix { inherit pkgs; }; ctlScaffoldPkgsExp = import ./templates/ctl-scaffold/spago-packages.nix { inherit pkgs; }; - ctlPs = attrValues ctlPkgsExp.inputs; + # We don't include `uplc-apply-args` in the template dependencies. + ctlPs = filter (p: p.name != "uplc-apply-args") + (attrValues ctlPkgsExp.inputs); ctlScaffoldPs = filter (p: p.name != "cardano-transaction-lib") (attrValues ctlScaffoldPkgsExp.inputs); intersection = pkgs.lib.lists.intersectLists ctlPs ctlScaffoldPs; diff --git a/packages.dhall b/packages.dhall index 459932df5..7506c80e4 100644 --- a/packages.dhall +++ b/packages.dhall @@ -318,6 +318,31 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-plutus-types" , version = "v1.0.1" } + , uplc-apply-args = + { dependencies = + [ "aff" + , "bytearrays" + , "cardano-serialization-lib" + , "cardano-types" + , "effect" + , "either" + , "foldable-traversable" + , "foreign-object" + , "js-bigints" + , "lists" + , "maybe" + , "mote" + , "mote-testplan" + , "partial" + , "prelude" + , "profunctor" + , "spec" + , "transformers" + , "tuples" + ] + , repo = "https://github.com/mlabs-haskell/purescript-uplc-apply-args" + , version = "master" + } , cardano-types = { dependencies = [ "aeson" diff --git a/spago-packages.nix b/spago-packages.nix index 081d8d789..ac4291c95 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -1565,6 +1565,19 @@ let installPhase = "ln -s $src $out"; }; + "uplc-apply-args" = pkgs.stdenv.mkDerivation { + name = "uplc-apply-args"; + version = "master"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-uplc-apply-args.git"; + rev = "aa528d5310cbfbd01b4d94557f404d95cfb6bb3c"; + sha256 = "1r064ca2m16hkbcswrvlng032ax1ygbpr2gxrlaqmjlf2gnin280"; + + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "variant" = pkgs.stdenv.mkDerivation { name = "variant"; version = "v8.0.0"; diff --git a/spago.dhall b/spago.dhall index 3fa172ac8..957f2487e 100644 --- a/spago.dhall +++ b/spago.dhall @@ -19,6 +19,7 @@ You can edit this file as you like. , "bytearrays" , "cardano-hd-wallet" , "cardano-message-signing" + , "uplc-apply-args" , "cardano-plutus-data-schema" , "cardano-serialization-lib" , "cardano-types" diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index 8133e8fec..4e68d3a08 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -32,7 +32,6 @@ import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.ScriptRef (ScriptRef) import Contract.Monad (Contract) import Control.Parallel (parTraverse) -import Ctl.Internal.ApplyArgs (applyArgs) as X import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Service.Error (ClientError) import Data.Either (Either) diff --git a/src/Internal/ApplyArgs.js b/src/Internal/ApplyArgs.js deleted file mode 100644 index 5866d7bf7..000000000 --- a/src/Internal/ApplyArgs.js +++ /dev/null @@ -1,32 +0,0 @@ -import * as lib from "@mlabs-haskell/cardano-serialization-lib-gc"; -import * as apply_args from "@mlabs-haskell/uplc-apply-args"; - -/** - * @param {} left - * @param {} right - * @param {PlutusData} args - * @param {PlutusScript} script - * @returns {Either String PlutusScript} - */ -export function apply_params_to_script(left) { - return right => args => script => { - let version = script.language_version(); - let appliedScript; - try { - let scriptBytes = script.bytes(); // raw bytes - let argsBytes = args.to_bytes(); // cbor - - try { - appliedScript = apply_args.apply_params_to_script_no_panic( - argsBytes, - scriptBytes - ); - } catch (e) { - return left("Error applying argument to script: ".concat(e.toString())); - } - } catch (e1) { - return left("Error serializing arguments: ".concat(e1.toString())); - } - return right(lib.PlutusScript.new_with_version(appliedScript, version)); - }; -} diff --git a/src/Internal/ApplyArgs.purs b/src/Internal/ApplyArgs.purs deleted file mode 100644 index 625dddb70..000000000 --- a/src/Internal/ApplyArgs.purs +++ /dev/null @@ -1,31 +0,0 @@ -module Ctl.Internal.ApplyArgs - ( applyArgs - ) where - -import Prelude - -import Cardano.Serialization.Lib as CSL -import Cardano.Types.PlutusData (PlutusData(List)) -import Cardano.Types.PlutusData as PlutusData -import Cardano.Types.PlutusScript (PlutusScript) -import Cardano.Types.PlutusScript as PlutusScript -import Data.Either (Either(Left, Right)) - -foreign import apply_params_to_script - :: (forall (x :: Type). x -> Either x CSL.PlutusScript) - -> (forall (x :: Type). x -> Either String x) - -> CSL.PlutusData - -> CSL.PlutusScript - -> Either String CSL.PlutusScript - -apply_params_to_script_either - :: CSL.PlutusData -> CSL.PlutusScript -> Either String CSL.PlutusScript -apply_params_to_script_either = apply_params_to_script Left Right - -applyArgs - :: PlutusScript -> Array PlutusData -> Either String PlutusScript -applyArgs script paramsList = do - let params = PlutusData.toCsl (List paramsList) - appliedScript <- apply_params_to_script_either params - (PlutusScript.toCsl script) - Right $ PlutusScript.fromCsl appliedScript diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 561dc93e3..bc61dd3b5 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -12,7 +12,6 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", @@ -518,25 +517,6 @@ "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, - "node_modules/@mlabs-haskell/uplc-apply-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", - "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", - "dependencies": { - "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", - "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" - } - }, - "node_modules/@mlabs-haskell/uplc-apply-args-browser": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", - "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" - }, - "node_modules/@mlabs-haskell/uplc-apply-args-nodejs": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", - "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" - }, "node_modules/@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -5771,25 +5751,6 @@ "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, - "@mlabs-haskell/uplc-apply-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", - "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", - "requires": { - "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", - "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" - } - }, - "@mlabs-haskell/uplc-apply-args-browser": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", - "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" - }, - "@mlabs-haskell/uplc-apply-args-nodejs": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", - "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" - }, "@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index f34f4d9e3..fccdce6b9 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -28,7 +28,6 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs deleted file mode 100644 index 8fab91ce5..000000000 --- a/test/ApplyArgs.purs +++ /dev/null @@ -1,380 +0,0 @@ -module Test.Ctl.ApplyArgs (main, suite, contract) where - -import Contract.Prelude - -import Contract.Monad (Contract, launchAff_) -import Contract.Numeric.BigNum as BigNum -import Contract.PlutusData (PlutusData(List, Map, Bytes, Constr), toData) -import Contract.Prim.ByteArray (hexToByteArrayUnsafe) -import Contract.Scripts (PlutusScript) -import Contract.TextEnvelope - ( decodeTextEnvelope - , plutusScriptFromEnvelope - ) -import Control.Monad.Error.Class (class MonadError) -import Ctl.Internal.ApplyArgs (applyArgs) -import Ctl.Internal.Cardano.TextEnvelope (TextEnvelope) -import Data.List.Lazy (replicate) -import Data.Profunctor.Choice (left) -import Effect.Aff (Error, error, throwError) -import Foreign.Object (Object) -import Foreign.Object as Object -import JS.BigInt (fromInt) -import Mote (group, test) -import Mote.TestPlanM (TestPlanM, interpret) -import Test.Spec.Assertions (shouldEqual) - -scriptSources :: Object String -scriptSources = - Object.fromFoldable - [ "always-fails" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "581e581c01000033223232222350040071235002353003001498498480048005" -} - """ - , "always-fails-big-arg" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "58ff58fd0100003333333332232322223500400712350023530030014984984800480053010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" -} -""" - , "always-fails-no-args" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "581e581c01000033223232222350040071235002353003001498498480048005" -} -""" - , "always-fails-unit" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "5826582401000033322323222235004007123500235300300149849848004800530103d879800001" -} -""" - - , "include-datum" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "include-datum", - "cborHex": "55540100002225333573466e1cdd6801a40a82930b01" -} -""" - , "include-datum-big-arg" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "58f658f401000033333332225333573466e1cdd6801a40a82930b2610107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" -} -""" - , "include-datum-no-args" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "55540100002225333573466e1cdd6801a40a82930b01" -} -""" - , "include-datum-unit" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "581d581b01000032225333573466e1cdd6801a40a82930b26103d879800001" -} -""" - - , "one-shot-minting" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "one-shot-minting", - "cborHex": "5908d75908d401000033232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f1326353357389201115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e46540001" -} -""" - , "one-shot-minting-big-arg" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "5909b75909b4010000333333333232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f132635335738921115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e4654004c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" -} -""" - , "one-shot-minting-no-args" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "5908d75908d401000033232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f1326353357389201115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e46540001" -} -""" - , "one-shot-minting-unit" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "5908de5908db010000333232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f132635335738921115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e4654004c0103d879800001" -} -""" - - , "always-succeeds-v2" /\ - """ -{ - "cborHex": "4e4d01000033222220051200120011", - "description": "always-succeeds", - "type": "PlutusScriptV2" -} -""" - , "always-succeeds-v2-big-arg" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "58f058ee010000333333333222220051200120014c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" -} -""" - , "always-succeeds-v2-no-args" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "4e4d01000033222220051200120011" -} -""" - , "always-succeeds-v2-unit" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "5655010000333222220051200120014c0103d879800001" -} -""" - - , "check-datum-is-inline" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "59088859088501000032332232323233223232323232323232323322323232323232322223232533532325335001101b13357389211d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c24400424400224002920103505431003200135500322112225335001135003220012213335005220023004002333553007120010050040011122002122122330010040031123230010012233003300200200101" -} -""" - , "check-datum-is-inline-big-arg" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "590969590966010000333333332332232323233223232323232323232323322323232323232322223232533532325335001101b133573892011d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c2440042440022400292010350543100320013550032211222533500113500322001221333500522002300400233355300712001005004001112200212212233001004003112323001001223300330020020014c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" -} -""" - , "check-datum-is-inline-no-args" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "59088859088501000032332232323233223232323232323232323322323232323232322223232533532325335001101b13357389211d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c24400424400224002920103505431003200135500322112225335001135003220012213335005220023004002333553007120010050040011122002122122330010040031123230010012233003300200200101" -} -""" - , "check-datum-is-inline-unit" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "59089059088d010000332332232323233223232323232323232323322323232323232322223232533532325335001101b133573892011d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c2440042440022400292010350543100320013550032211222533500113500322001221333500522002300400233355300712001005004001112200212212233001004003112323001001223300330020020014c0103d879800001" -} -""" - - , "one-shot-minting-v2" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "one-shot-minting", - "cborHex": "59092c59092901000033233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b335738921115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e46540001" -} -""" - , "one-shot-minting-v2-big-arg" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "590a0d590a0a010000333333333233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b3357389201115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e4654004c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" -} -""" - , "one-shot-minting-v2-no-args" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "59092c59092901000033233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b335738921115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e46540001" -} -""" - , "one-shot-minting-v2-unit" /\ - """ -{ - "type": "PlutusScriptV2", - "description": "", - "cborHex": "590934590931010000333233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b3357389201115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e4654004c0103d879800001" -} -""" - - , "redeemer1-validator" /\ - """ -{ - "description": "validator that checks whether redeemer is 1", - "cborHex": "4e4d0100002223375e0046ea120021", - "type": "PlutusScriptV1" -} -""" - , "redeemer1-validator-big-arg" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "58f058ee01000033333332223375e0046ea120024c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" -} -""" - , "redeemer1-validator-no-args" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "4e4d0100002223375e0046ea120021" -} -""" - , "redeemer1-validator-unit" /\ - """ -{ - "type": "PlutusScriptV1", - "description": "", - "cborHex": "565501000032223375e0046ea120024c0103d879800001" -} -""" - ] - -main :: Effect Unit -main = launchAff_ $ interpret $ suite - -contract :: Contract Unit -contract = do - traverse_ (uncurry $ compareApplied (v1 scriptSources)) $ Tuple - <$> v1ScriptPaths - <*> params - traverse_ (uncurry $ compareApplied (v2 scriptSources)) $ Tuple - <$> v2ScriptPaths - <*> params - -suite :: TestPlanM (Aff Unit) Unit -suite = group "Applying params to scripts test" $ do - traverse_ (uncurry $ testCase $ v1 scriptSources) - $ Tuple - <$> v1ScriptPaths - <*> params - traverse_ (uncurry $ testCase $ v2 scriptSources) - $ Tuple - <$> v2ScriptPaths - <*> params - where - testCase lang scriptName (args /\ argsName) = - test - ("Apply " <> argsName <> " to " <> scriptName) - $ compareApplied lang scriptName (args /\ argsName) - -compareApplied - :: forall (m :: Type -> Type) - . Monad m - => MonadError Error m - => (String -> m PlutusScript) - -> String - -> Tuple (Array PlutusData) String - -> m Unit -compareApplied lang scriptName (args /\ argsName) = do - script <- lang scriptName - applied <- liftEither $ left (error <<< show) $ applyArgs script args - appliedShouldBe <- lang (scriptName <> "-" <> argsName) - applied `shouldEqual` appliedShouldBe - -v1ScriptPaths :: Array String -v1ScriptPaths = - [ "always-fails" - , "include-datum" - , "one-shot-minting" - , "redeemer1-validator" - ] - -v2ScriptPaths :: Array String -v2ScriptPaths = - [ "always-succeeds-v2" - , "one-shot-minting-v2" - , "check-datum-is-inline" - ] - -params :: Array (Tuple (Array PlutusData) String) -params = - [ ([] /\ "no-args") - , ([ un ] /\ "unit") - , ( [ i 7 - , un - , List [ un, bytes ] - , longBytes - , Map [ (i 5 /\ i 7), (bytes /\ i 8) ] - , Constr (BigNum.fromInt 102) [ i 7, List [ un, bytes, longBytes ] ] - , Constr (BigNum.fromInt 5) - [ List [] - , List [ i 1 ] - , Map [] - , Map [ (i 1 /\ un), (i 2 /\ Constr (BigNum.fromInt 2) [ i 2 ]) ] - ] - ] /\ "big-arg" - ) - ] - -i :: Int -> PlutusData -i k = toData (fromInt k) - -un :: PlutusData -un = toData unit - -bytes :: PlutusData -bytes = Bytes $ hexToByteArrayUnsafe "4d5f" - -longBytes :: PlutusData -longBytes = Bytes $ hexToByteArrayUnsafe $ foldl (\x y -> x <> y) "" $ - replicate 65 "4d" - -v1 - :: forall (m :: Type -> Type) - . MonadError Error m - => Object String - -> String - -> m PlutusScript -v1 scripts name = lookupAux plutusScriptFromEnvelope scripts name - -v2 - :: forall (m :: Type -> Type) - . MonadError Error m - => Object String - -> String - -> m PlutusScript -v2 scripts name = lookupAux plutusScriptFromEnvelope scripts name - -lookupAux - :: forall (m :: Type -> Type) - . MonadError Error m - => (TextEnvelope -> Maybe PlutusScript) - -> Object String - -> String - -> m PlutusScript -lookupAux decodeScript scripts name = - maybe (throwError $ error $ "Can't find the script with name " <> name) pure - $ do - txt <- Object.lookup name scripts - envelope <- decodeTextEnvelope txt - decodeScript envelope diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index ea91f84bd..1bdeb80aa 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -5,6 +5,7 @@ module Test.Ctl.Plutip.Contract import Prelude import Cardano.AsCbor (decodeCbor) +import Cardano.Plutus.ApplyArgs (applyArgs) import Cardano.Serialization.Lib (fromBytes) import Cardano.Types ( Address @@ -59,7 +60,6 @@ import Contract.Prim.ByteArray import Contract.ScriptLookups as Lookups import Contract.Scripts ( ValidatorHash - , applyArgs , getScriptByHash , getScriptsByHashes , validatorHash diff --git a/test/Unit.purs b/test/Unit.purs index c7882764b..ad0a36d3d 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -11,7 +11,6 @@ import Effect (Effect) import Effect.Aff (Aff, cancelWith, effectCanceler, launchAff) import Effect.Class (liftEffect) import Mote.Monad (mapTest) -import Test.Ctl.ApplyArgs as ApplyArgs import Test.Ctl.Blockfrost.Aeson.Suite as Blockfrost.Aeson import Test.Ctl.Blockfrost.ProtocolParameters as Blockfrost.ProtocolParameters import Test.Ctl.CoinSelection as CoinSelection @@ -47,7 +46,6 @@ main = interruptOnSignal SIGINT =<< launchAff do testPlan :: TestPlanM (Aff Unit) Unit testPlan = do - ApplyArgs.suite Ipv6.suite NativeScript.suite Bip32.suite From eb7a0b28c4ca31f127f6124ec82eb946c9673dd5 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 26 Jun 2024 15:19:42 +0200 Subject: [PATCH 243/373] Add simple funds distr logic, Replace plutip with cardano-testnet --- flake.nix | 4 + nix/default.nix | 8 +- src/Contract/Test/Plutip.purs | 2 +- src/Internal/CardanoCli.purs | 4 +- src/Internal/CardanoCli/QueryHandler.purs | 16 +- src/Internal/Contract/MinFee.purs | 4 +- src/Internal/Plutip/Server.purs | 10 +- src/Internal/Plutip/Spawn.purs | 24 +- src/Internal/Plutip/Utils.purs | 8 +- src/Internal/Testnet/Contract.purs | 346 +++++++++++++--------- src/Internal/Testnet/DistributeFunds.purs | 4 +- src/Internal/Testnet/Server.purs | 253 ++++------------ src/Internal/Testnet/Types.purs | 8 +- src/Internal/Testnet/Utils.purs | 21 +- test/Plutip.purs | 267 +++++------------ 15 files changed, 401 insertions(+), 578 deletions(-) diff --git a/flake.nix b/flake.nix index c7d77213f..24941f5d4 100644 --- a/flake.nix +++ b/flake.nix @@ -187,6 +187,7 @@ packages = with pkgs; [ arion fd + psmisc nixpkgs-fmt nodePackages.eslint nodePackages.prettier @@ -323,6 +324,9 @@ (plutipServerFor system).hsPkgs.plutip-server.components.exes.plutip-server; ogmios-plutip = cardano-nix.packages.${system}."ogmios-6.0.3"; ogmios = cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; + cardano-testnet = cardano-node.packages.${system}.cardano-testnet; + cardano-node = cardano-node.packages.${system}.cardano-node; + cardano-cli = cardano-node.packages.${system}.cardano-cli; kupo = inputs.kupo-nixos.packages.${system}.kupo; # kupo = cardano-nix.packages.${system}."kupo-${kupoVersion}"; cardano-db-sync = inputs.db-sync.packages.${system}.cardano-db-sync; diff --git a/nix/default.nix b/nix/default.nix index ccc861281..01a9070ae 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -333,7 +333,7 @@ let # # - `ogmios` # - `kupo` - # - `plutip-server` + # - `cardano-testnet` # runPlutipTest = args: @@ -341,8 +341,12 @@ let args // { buildInputs = with pkgs; [ ogmios-plutip - plutip-server kupo + cardano-testnet + cardano-node + cardano-cli + psmisc + plutip-server ] ++ (args.buildInputs or [ ]); } diff --git a/src/Contract/Test/Plutip.purs b/src/Contract/Test/Plutip.purs index db648a781..459fd40f7 100644 --- a/src/Contract/Test/Plutip.purs +++ b/src/Contract/Test/Plutip.purs @@ -61,7 +61,7 @@ defaultPlutipConfig = , secure: false , path: Nothing } - , suppressLogs: false + , suppressLogs: true , customLogger: Nothing , hooks: emptyHooks , clusterConfig: diff --git a/src/Internal/CardanoCli.purs b/src/Internal/CardanoCli.purs index 9f5e97b5e..98870ddcf 100644 --- a/src/Internal/CardanoCli.purs +++ b/src/Internal/CardanoCli.purs @@ -140,7 +140,7 @@ execCardanoCli } execCardanoCli params = annotateError "execCardanoCli" do let cmd = "cardano-cli " <> intercalate " " params - log $ show { execCardanoCli: cmd } + -- log $ show { execCardanoCli: cmd } { channels, process } <- Ctl.Internal.Plutip.Spawn.exec cmd let bufferToLines = @@ -227,4 +227,4 @@ parseHex = noteParser "Cannot parse hex-encoded byte array" <<< Data.ByteArray.hexToByteArray <<< makeString - =<< Parsing.Combinators.many Parsing.String.Basic.hexDigit \ No newline at end of file + =<< Parsing.Combinators.many Parsing.String.Basic.hexDigit diff --git a/src/Internal/CardanoCli/QueryHandler.purs b/src/Internal/CardanoCli/QueryHandler.purs index b4ffcf359..ff44a538e 100644 --- a/src/Internal/CardanoCli/QueryHandler.purs +++ b/src/Internal/CardanoCli/QueryHandler.purs @@ -6,13 +6,13 @@ import Contract.Prelude import Cardano.Types as Cardano.Types import Cardano.Types.Address (Address) -import Cardano.Types.TransactionInput (TransactionInput(..)) -import Cardano.Types.TransactionOutput (TransactionOutput(..)) +import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionOutput (TransactionOutput) import Contract.ClientError as Contract.ClientError import Contract.Monad (Contract, ContractEnv) import Control.Alt ((<|>)) import Control.Monad.Error.Class (try) -import Control.Monad.Except (ExceptT(..), runExceptT) +import Control.Monad.Except (ExceptT(ExceptT), runExceptT) import Control.Monad.Reader (local) import Ctl.Internal.CardanoCli as CardanoCli import Data.Bifunctor (bimap) @@ -20,7 +20,7 @@ import Data.Lens (Lens', (%~)) import Data.Lens.Record (prop) import Data.Map as Map import Effect.Exception (Error, message) -import Type.Proxy (Proxy(..)) +import Type.Proxy (Proxy(Proxy)) type UtxosAtQuery = Cardano.Types.Address @@ -39,13 +39,15 @@ withCardanoCliCompletion -> Contract a -> Contract a withCardanoCliCompletion node genesisAddr = - local $ (utxosAtL %~ completeUtxosAt node) >>> (getUtxoByOrefL %~ completeGetUtxoByOref node genesisAddr) + local $ (utxosAtL %~ completeUtxosAt node) >>> + (getUtxoByOrefL %~ completeGetUtxoByOref node genesisAddr) utxosAtL :: Lens' ContractEnv UtxosAtQuery utxosAtL = prop (Proxy :: _ "handle") <<< prop (Proxy :: _ "utxosAt") getUtxoByOrefL :: Lens' ContractEnv GetUtxoByOrefQuery -getUtxoByOrefL = prop (Proxy :: _ "handle") <<< prop (Proxy :: _ "getUtxoByOref") +getUtxoByOrefL = prop (Proxy :: _ "handle") <<< prop + (Proxy :: _ "getUtxoByOref") -- | Adds to the results UTxOs found by cardano-cli but not found by the given 'utxosAt' query. -- UTxOs found by cardano-cli assumed to have no datum or script ref. @@ -88,4 +90,4 @@ completeGetUtxoByOref node address getUtxoByOref oref = runExceptT do $ try $ CardanoCli.queryUtxosViaCardanoCli node address mUtxo <- ExceptT $ getUtxoByOref oref - pure $ mUtxo <|> Map.lookup oref cardanoCliUtxos + pure $ mUtxo <|> Map.lookup oref cardanoCliUtxos diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index e26582c5e..10cf94b1c 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -31,7 +31,9 @@ calculateMinFee :: Transaction -> UtxoMap -> Contract Coin calculateMinFee tx additionalUtxos = do selfSigners <- getSelfSigners tx additionalUtxos pparams <- getProtocolParameters - append (wrap $ BigNum.fromInt 1_000_000) <$> calculateMinFeeCsl pparams selfSigners tx + append (wrap $ BigNum.fromInt 1_000_000) <$> calculateMinFeeCsl pparams + selfSigners + tx -- | This function estimates the set of keys that must be used -- | for signing to make the transaction valid for the network. diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 21c067145..31cd3a6bf 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -556,8 +556,10 @@ startOgmios startOgmios cfg params = do spawn "ogmios" ogmiosArgs defaultSpawnOptions $ Just - $ String.indexOf (Pattern "networkParameters") + $ _.output + >>> String.indexOf (Pattern "networkParameters") >>> maybe NoOp (const Success) + >>> pure where ogmiosArgs :: Array String ogmiosArgs = @@ -603,7 +605,11 @@ startKupo cfg params cleanupRef = do spawnKupoProcess :: FilePath -> Aff ManagedProcess spawnKupoProcess workdir = spawn "kupo" (kupoArgs workdir) defaultSpawnOptions $ - Just (String.indexOf outputString >>> maybe NoOp (const Success)) + Just + ( _.output >>> String.indexOf outputString + >>> maybe NoOp (const Success) + >>> pure + ) where outputString :: Pattern outputString = Pattern "ConfigurationCheckpointsForIntersection" diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Plutip/Spawn.purs index 4fde5d965..87f9f9610 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Plutip/Spawn.purs @@ -19,10 +19,7 @@ module Ctl.Internal.Plutip.Spawn import Contract.Prelude -import Control.Monad.Error.Class - ( liftMaybe - , throwError - ) +import Control.Monad.Error.Class (liftMaybe, throwError) import Ctl.Internal.Plutip.PortCheck (isPortAvailable) import Ctl.Internal.Plutip.Types (FilePath) import Data.Either (Either(Left)) @@ -33,6 +30,7 @@ import Data.Posix.Signal as Signal import Data.Time.Duration (Milliseconds(Milliseconds)) import Data.UInt (UInt) import Data.UInt as UInt +import Debug (traceM) import Effect (Effect) import Effect.AVar (AVar) import Effect.AVar (empty, tryPut) as AVar @@ -49,12 +47,7 @@ import Effect.Class (liftEffect) import Effect.Exception (Error, error, throw) import Effect.Ref as Ref import Node.Buffer as Node.Buffer -import Node.ChildProcess - ( ChildProcess - , SpawnOptions - , kill - , stdout - ) +import Node.ChildProcess (ChildProcess, SpawnOptions, kill, stdout, stderr) import Node.ChildProcess as ChildProcess import Node.ChildProcess as Node.ChildProcess import Node.ReadLine (Interface, close, createInterface, setLineHandler) as RL @@ -78,7 +71,7 @@ spawn :: String -> Array String -> SpawnOptions - -> Maybe (String -> NewOutputAction) + -> Maybe ({ output :: String, line :: String } -> Effect NewOutputAction) -> Aff ManagedProcess spawn cmd args opts mbFilter = makeAff (spawn' cmd args opts mbFilter) @@ -87,7 +80,7 @@ spawn' :: String -> Array String -> SpawnOptions - -> Maybe (String -> NewOutputAction) + -> Maybe ({ output :: String, line :: String } -> Effect NewOutputAction) -> (Either Error ManagedProcess -> Effect Unit) -> Effect Canceler spawn' cmd args opts mbFilter cont = do @@ -95,6 +88,9 @@ spawn' cmd args opts mbFilter cont = do let fullCmd = cmd <> foldMap (" " <> _) args closedAVar <- AVar.empty interface <- RL.createInterface (stdout child) mempty + stderrInterface <- RL.createInterface (stderr child) mempty + flip RL.setLineHandler stderrInterface \str -> do + traceM $ "stderr: " <> str outputRef <- Ref.new "" ChildProcess.onClose child \code -> do RL.close interface @@ -117,7 +113,7 @@ spawn' cmd args opts mbFilter cont = do flip RL.setLineHandler interface \str -> do output <- Ref.modify (_ <> str <> "\n") outputRef - case filter output of + filter { output, line: str } >>= case _ of Success -> do clearLineHandler interface cont (pure mp) @@ -146,7 +142,7 @@ exec cmd = Aff.makeAff \cont -> do let isCanceled = Ref.read isCanceledRef markCanceled = Ref.write true isCanceledRef - log $ show { exec: cmd } + -- log $ show { exec: cmd } process <- Node.ChildProcess.exec cmd Node.ChildProcess.defaultExecOptions diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 5523b0ff2..8680e9ecf 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -28,7 +28,7 @@ import Contract.Prelude import Control.Alt ((<|>)) import Control.Monad.Error.Class (class MonadError, catchError, throwError) import Control.Monad.Rec.Class - ( Step(..) + ( Step(Done, Loop) , tailRecM ) import Control.Parallel @@ -36,7 +36,7 @@ import Control.Parallel , sequential ) import Ctl.Internal.Plutip.Spawn - ( ManagedProcess(..) + ( ManagedProcess(ManagedProcess) , OnSignalRef , removeOnSignal , waitForSignal @@ -44,7 +44,7 @@ import Ctl.Internal.Plutip.Spawn import Ctl.Internal.QueryM.UniqueId (uniqueId) import Data.Array as Array import Data.Map as Map -import Data.Posix.Signal (Signal(..)) +import Data.Posix.Signal (Signal(SIGINT)) import Data.Time.Duration (Milliseconds) import Effect (Effect) import Effect.Aff (try) @@ -421,4 +421,4 @@ appendErrorMessage -> Error -> Error appendErrorMessage withPrefix = - error <<< append (withPrefix <> ": ") <<< message \ No newline at end of file + error <<< append (withPrefix <> ": ") <<< message diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 370f27b5f..6a1cdc99e 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -1,61 +1,82 @@ -module Ctl.Internal.Testnet.Contract where +module Ctl.Internal.Testnet.Contract + ( runTestnetContract + , runTestnetTestPlan + , testTestnetContracts + , withTestnetContractEnv + ) where import Contract.Prelude import Cardano.Serialization.Lib (privateKey_generateEd25519) as Csl -import Cardano.Serialization.Lib as CSL import Cardano.Types (NetworkId(TestnetId)) -import Cardano.Types as Cardano.Types import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) -import Cardano.Types.BigNum (BigNum) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.Credential (Credential(..)) -import Cardano.Types.PaymentCredential (PaymentCredential(..)) -import Cardano.Types.StakeCredential (StakeCredential(..)) -import Cardano.Types.StakePubKeyHash (StakePubKeyHash(..)) +import Cardano.Types.Credential (Credential(PubKeyHashCredential)) +import Cardano.Types.PaymentCredential (PaymentCredential(PaymentCredential)) +import Cardano.Types.StakeCredential (StakeCredential(StakeCredential)) +import Cardano.Types.StakePubKeyHash (StakePubKeyHash(StakePubKeyHash)) import Contract.Address (getNetworkId) import Contract.Log (logInfo') -import Contract.Monad (Contract, ContractEnv, liftContractM, liftedM, runContractInEnv) -import Contract.Monad as Contract -import Contract.Transaction (awaitTxConfirmed, balanceTx, signTransaction, submit) -import Contract.TxConstraints (TxConstraints(..)) +import Contract.Monad + ( Contract + , ContractEnv + , liftContractM + , liftedM + , runContractInEnv + ) +import Contract.Transaction + ( awaitTxConfirmed + , balanceTx + , signTransaction + , submit + ) +import Contract.TxConstraints (TxConstraints) import Contract.UnbalancedTx (mkUnbalancedTx) -import Contract.Value (Value(..), valueToCoin) +import Contract.Value (Value) import Contract.Value (lovelaceValueOf) as Value -import Contract.Wallet (KeyWallet, getWalletAddress, getWalletBalance, mkKeyWalletFromPrivateKeys, withKeyWallet) -import Contract.Wallet as Contract.Wallet -import Control.Monad.Error.Class (liftMaybe) +import Contract.Wallet + ( getWalletAddress + , mkKeyWalletFromPrivateKeys + , withKeyWallet + ) +import Control.Monad.State (State, execState, modify_) +import Control.Monad.Trans.Class (lift) +import Control.Monad.Writer (censor, execWriterT, tell) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) import Ctl.Internal.Plutip.Server (makeClusterContractEnv) import Ctl.Internal.Plutip.Utils (cleanupOnExit, runCleanup, whenError) -import Ctl.Internal.Test.UtxoDistribution (class UtxoDistribution, UtxoAmount, decodeWallets, encodeDistribution, keyWallets) -import Ctl.Internal.Test.UtxoDistribution as UtxoDistribution +import Ctl.Internal.Test.ContractTest + ( ContractTest(ContractTest) + , ContractTestPlan(ContractTestPlan) + , ContractTestPlanHandler + ) +import Ctl.Internal.Test.UtxoDistribution + ( class UtxoDistribution + , UtxoAmount + , decodeWallets + , encodeDistribution + , keyWallets + ) import Ctl.Internal.Testnet.Server (StartedTestnetCluster, startTestnetCluster) -import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams, GenesisUtxoKeyLocation, TestnetClusterConfig) +import Ctl.Internal.Testnet.Types + ( CardanoTestnetStartupParams + , TestnetClusterConfig + ) import Ctl.Internal.Testnet.Utils (read872GenesisKey) -import Ctl.Internal.Wallet.Key (KeyWallet(..)) -import Data.Array (head) -import Data.Array (zip) as Array +import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) +import Data.Array (head, zip) as Array import Data.Maybe (fromJust) -import Debug (spy, traceM) import Effect.Aff (bracket) as Aff import Effect.Aff (try) import Effect.Exception (error) -import Effect.Exception.Unsafe (unsafeThrow) import Effect.Ref (Ref) -import Effect.Ref as Ref -import Internal.CardanoCli.QueryHandler (withCardanoCliCompletion) as CardanoCli.QueryHandler +import Effect.Ref (new, read, write) as Ref +import Internal.CardanoCli.QueryHandler (withCardanoCliCompletion) +import Mote (bracket) as Mote +import Mote.Description (Description(Group, Test)) +import Mote.Monad (MoteT(MoteT), mapTest) +import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) -import Type.Proxy (Proxy(..)) - --- | Run a single `Contract` in cardano-testnet environment. -runContract - :: forall (a :: Type) r - . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) - -> Contract a - -> Aff a -runContract cfg cont = withContractEnv cfg \_ env -> - Contract.runContractInEnv env cont +import Type.Proxy (Proxy(Proxy)) -- | Run a single `Contract` in cardano-testnet environment. runTestnetContract @@ -69,14 +90,8 @@ runTestnetContract cfg distr cont = withTestnetContractEnv cfg distr \env wallets -> runContractInEnv env (cont wallets) -readGenesisWallets - :: forall r r1 - . { genesisKeys :: Array { | GenesisUtxoKeyLocation r } | r1 } - -> Effect (Array Contract.Wallet.KeyWallet) -readGenesisWallets { genesisKeys } = for genesisKeys \location -> do - paymentKey <- read872GenesisKey location - pure $ mkKeyWalletFromPrivateKeys paymentKey Nothing - +-- | Provide a `ContractEnv` connected to cardano-testnet. +-- | Can be used to run multiple `Contract`s using `runContractInEnv`. withTestnetContractEnv :: forall (distr :: Type) (wallets :: Type) (r :: Row Type) (a :: Type) . UtxoDistribution distr wallets @@ -93,6 +108,114 @@ withTestnetContractEnv cfg distr cont = do >=> \{ env, wallets, printLogs } -> whenError printLogs (cont env wallets) +-- | Run several `Contract`s in tests in a (single) cardano-testnet environment (cardano-testnet, ogmios, kupo, etc.). +-- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. +-- | Namely, brackets are run for each of the top-level groups and tests +-- | inside the bracket. +-- | If you wish to only set up Plutip once, ensure all tests that are passed +-- | to `testPlutipContracts` are wrapped in a single group. +-- | https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#testing-with-mote FIXME +testTestnetContracts + :: forall (r :: Row Type) + . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + -> TestPlanM ContractTest Unit + -> TestPlanM (Aff Unit) Unit +testTestnetContracts cfg tp = do + testnetTestPlan <- lift $ execDistribution tp + runTestnetTestPlan cfg testnetTestPlan + +-- | Run a `ContractTestPlan` in a (single) cardano-testnet environment. +-- | Supports wallet reuse - see docs on sharing wallet state between +-- | wallets in `doc/plutip-testing.md`. FIXME +runTestnetTestPlan + :: forall (r :: Row Type) + . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + -> ContractTestPlan + -> TestPlanM (Aff Unit) Unit +runTestnetTestPlan cfg (ContractTestPlan runContractTestPlan) = do + -- Modify tests to pluck out parts of a single combined distribution + runContractTestPlan \distr tests -> do + cleanupRef <- liftEffect $ Ref.new mempty + -- Sets a single Mote bracket at the top level, it will be run for all + -- immediate tests and groups + bracket (startTestnetContractEnv cfg distr cleanupRef) + (runCleanup cleanupRef) + $ flip mapTest tests \test { env, wallets, printLogs, clearLogs } -> do + whenError printLogs (runContractInEnv env (test wallets)) + clearLogs + where + -- `MoteT`'s bracket doesn't support supplying the constructed resource into + -- the main action, so we use a `Ref` to store and read the result. + bracket + :: forall (a :: Type) (b :: Type) + . Aff a + -> Aff Unit + -> TestPlanM (a -> Aff b) Unit + -> TestPlanM (Aff b) Unit + bracket before' after' act = do + resultRef <- liftEffect $ Ref.new + (Left $ error "cardano-testnet not initialized") + let + before = do + res <- try $ before' + liftEffect $ Ref.write res resultRef + pure res + after = const $ after' + Mote.bracket { before, after } $ flip mapTest act \t -> do + result <- liftEffect $ Ref.read resultRef >>= liftEither + t result + +-- | Lifts the UTxO distributions of each test out of Mote, into a combined +-- | distribution. Adapts the tests to pick their distribution out of the +-- | combined distribution. +-- | NOTE: Skipped tests still have their distribution generated. +-- | This is the current method of constructing all the wallets with required distributions +-- | in one go during Plutip startup. +execDistribution :: TestPlanM ContractTest Unit -> Aff ContractTestPlan +execDistribution (MoteT mote) = execWriterT mote <#> go + where + -- Recursively go over the tree of test `Description`s and construct a `ContractTestPlan` callback. + -- When run the `ContractTestPlan` will reconstruct the whole `MoteT` value passed to `execDistribution` + -- via similar writer effects (plus combining distributions) which append test descriptions + -- or wrap them in a group. + go :: Array (Description Aff ContractTest) -> ContractTestPlan + go = flip execState emptyContractTestPlan <<< traverse_ case _ of + Test rm { bracket, label, value: ContractTest runTest } -> + runTest \distr test -> do + addTests distr $ MoteT + (tell [ Test rm { bracket, label, value: test } ]) + Group rm { bracket, label, value } -> do + let ContractTestPlan runGroupPlan = go value + runGroupPlan \distr tests -> + addTests distr $ over MoteT + (censor (pure <<< Group rm <<< { bracket, label, value: _ })) + tests + + -- This function is used by `go` for iteratively adding Mote tests (internally Writer monad actions) + -- to the `ContractTestPlan` in the State monad _and_ for combining UTxO distributions used by tests. + -- Given a distribution and tests (a MoteT value) this runs a `ContractTestPlan`, i.e. passes its + -- stored distribution and tests to our handler, and then makes a new `ContractTestPlan`, but this time + -- storing a tuple of stored and passed distributions and also storing a pair of Mote tests, modifying + -- the previously stored tests to use the first distribution, and the passed tests the second distribution + -- + -- `go` starts at the top of the test tree and step-by-step constructs a big `ContractTestPlan` which + -- stores distributions of all inner tests tupled together and tests from the original test tree, which + -- know how to get their distribution out of the big tuple. + addTests + :: forall (distr :: Type) (wallets :: Type) + . ContractTestPlanHandler distr wallets (State ContractTestPlan Unit) + addTests distr tests = do + modify_ \(ContractTestPlan runContractTestPlan) -> runContractTestPlan + \distr' tests' -> ContractTestPlan \h -> h (distr' /\ distr) do + mapTest (_ <<< fst) tests' + mapTest (_ <<< snd) tests + + -- Start with an empty plan, which passes an empty distribution + -- and an empty array of test `Description`s to the function that + -- will run tests. + emptyContractTestPlan :: ContractTestPlan + emptyContractTestPlan = ContractTestPlan \h -> h unit (pure unit) + -- | Provide a `ContractEnv` connected to cardano-testnet. -- | can be used to run multiple `Contract`s using `runContractInEnv`. startTestnetContractEnv @@ -102,14 +225,13 @@ startTestnetContractEnv -> distr -> Ref (Array (Aff Unit)) -> Aff - { cluster :: StartedTestnetCluster - , env :: ContractEnv - , wallets :: wallets - , printLogs :: Aff Unit - , clearLogs :: Aff Unit - } + { cluster :: StartedTestnetCluster + , env :: ContractEnv + , wallets :: wallets + , printLogs :: Aff Unit + , clearLogs :: Aff Unit + } startTestnetContractEnv cfg distr cleanupRef = do - cleanupRef <- liftEffect $ Ref.new [] _ <- cleanupOnExit cleanupRef cluster <- startTestnetCluster cfg cleanupRef { env, printLogs, clearLogs } <- makeClusterContractEnv cleanupRef cfg @@ -126,16 +248,17 @@ startTestnetContractEnv cfg distr cleanupRef = do mkWallets :: ContractEnv -> StartedTestnetCluster -> Aff wallets mkWallets env cluster = runContractInEnv env do - let testnetPaths = (unwrap cluster).paths - genesisWallets <- liftEffect $ readGenesisWallets testnetPaths - let genesisWallet = unsafePartial fromJust $ head genesisWallets -- FIXME + genesisWallets <- liftEffect readGenesisWallets + let + genesisWallet = unsafePartial fromJust $ Array.head genesisWallets -- FIXME withKeyWallet genesisWallet do - let distrArray = encodeDistribution distr + let distrArray = encodeDistribution distr privateKeys <- for (encodeDistribution distr) \_ -> liftEffect $ wrap <$> Csl.privateKey_generateEd25519 wallets <- - liftContractM "Impossible happened: could not decode wallets. Please report as bug" + liftContractM + "Impossible happened: could not decode wallets. Please report as bug" $ decodeWallets distr privateKeys let kws = keyWallets (Proxy :: _ distr) wallets genesisAddr <- liftedM "Could not get genesis address" getWalletAddress @@ -144,20 +267,33 @@ startTestnetContractEnv cfg distr cleanupRef = do { socketPath: (unwrap cluster).paths.nodeSocketPath , testnetMagic: cfg.testnetMagic } - CardanoCli.QueryHandler.withCardanoCliCompletion nodeCfg genesisAddr do + withCardanoCliCompletion nodeCfg genesisAddr do let walletsAmounts = Array.zip kws distrArray - fundWalletsFromGenesis genesisWallet (spy "walletsAmounts" walletsAmounts) + fundWalletsFromGenesis walletsAmounts pure wallets + where + readGenesisWallets :: Effect (Array KeyWallet) + readGenesisWallets = + traverse + ( \location -> do + paymentKey <- read872GenesisKey location + pure $ mkKeyWalletFromPrivateKeys paymentKey Nothing + ) + (unwrap cluster).paths.genesisKeys - fundWalletsFromGenesis :: KeyWallet -> Array (KeyWallet /\ Array UtxoAmount) -> Contract Unit - fundWalletsFromGenesis genesisWallet walletsAmounts = do + fundWalletsFromGenesis + :: Array (KeyWallet /\ Array UtxoAmount) -> Contract Unit + fundWalletsFromGenesis walletsAmounts = do network <- getNetworkId let constraints :: TxConstraints constraints = foldMap ( \(KeyWallet kw /\ amounts) -> - foldMap (mustPayToAddress (kw.address network) <<< Value.lovelaceValueOf) + foldMap + ( mustPayToAddress (kw.address network) <<< + Value.lovelaceValueOf + ) amounts ) walletsAmounts @@ -165,98 +301,18 @@ startTestnetContractEnv cfg distr cleanupRef = do balancedTx <- balanceTx unbalancedTx balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx - logInfo' $ "FundWalletsFromGenesis txHash: " <> show txHash + logInfo' $ "FundWalletsFromGenesis txHash: " <> show txHash awaitTxConfirmed txHash mustPayToAddress :: Address -> Value -> TxConstraints mustPayToAddress addr = let skh = case getStakeCredential addr of - Just (StakeCredential (PubKeyHashCredential skh)) -> Just $ StakePubKeyHash skh + Just (StakeCredential (PubKeyHashCredential skh')) -> Just $ + StakePubKeyHash skh' _ -> Nothing in case getPaymentCredential addr of Just (PaymentCredential (PubKeyHashCredential pkh)) -> mustPayToPubKeyStakeAddress (wrap pkh) skh _ -> mempty - --- | Provide a `ContractEnv` connected to cardano-testnet. --- | can be used to run multiple `Contract`s using `runContractInEnv`. -withContractEnv - :: forall (a :: Type) r - . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) - -> (StartedTestnetCluster -> ContractEnv -> Aff a) - -> Aff a -withContractEnv cfg cont = do - cleanupRef <- liftEffect $ Ref.new [] - _ <- cleanupOnExit cleanupRef - cluster <- startTestnetCluster cfg cleanupRef - { env, printLogs } <- makeClusterContractEnv cleanupRef cfg - whenError printLogs $ cont cluster $ env { networkId = TestnetId } - -distributeFunds - :: { sources :: Array KeyWallet - , targets :: - Array - { wallet :: KeyWallet - , required :: - { totalRequired :: BigNum - , utxoDistribution :: Array BigNum - } - } - , thresholds :: - { maxCoinPerTx :: BigNum - , maxUtxosPerTx :: BigNum - } - } - -> Contract Unit -distributeFunds given = do - sources <- for given.sources \wallet -> do - balance <- withKeyWallet wallet - $ map (BigNum.toBigInt <<< unwrap <<< valueToCoin) - <<< liftMaybe (error "Can't get source wallet balance") - =<< getWalletBalance - pure { wallet, balance } - unsafeThrow "todo" - -makeTargetDistribution - :: forall (distr :: Type) (wallets :: Type) - . UtxoDistribution.UtxoDistribution distr wallets - => distr - -> Effect - { wallets :: wallets - , distributionInfo :: - Array - { wallet :: KeyWallet - , required :: - { total :: BigNum - , utxoDistribution :: Array BigNum - } - } - } -makeTargetDistribution distrib = do - distributionInfo <- for (UtxoDistribution.encodeDistribution distrib) - \utxos -> do - paymentKey <- wrap <$> genPrivateKey - let - wallet = mkKeyWalletFromPrivateKeys paymentKey Nothing - total <- liftMaybe (error "Cannot sum target utxo amounts") - $ foldM BigNum.add BigNum.zero utxos - pure - { wallet - , required: { utxoDistribution: utxos, total } - } - let - paymentKeys = - unwrap - <<< _.paymentKey - <<< unwrap - <<< _.wallet - <$> distributionInfo - wallets <- - liftMaybe (error "Can't decode wallets") - $ UtxoDistribution.decodeWallets distrib paymentKeys - pure { wallets, distributionInfo } - -genPrivateKey :: Effect Cardano.Types.PrivateKey -genPrivateKey = wrap <$> CSL.privateKey_generateEd25519 diff --git a/src/Internal/Testnet/DistributeFunds.purs b/src/Internal/Testnet/DistributeFunds.purs index 205989ede..c2f801c19 100644 --- a/src/Internal/Testnet/DistributeFunds.purs +++ b/src/Internal/Testnet/DistributeFunds.purs @@ -24,7 +24,7 @@ import Data.Bifunctor (class Bifunctor, bimap) import Data.Lens (Lens', view, (%~), (+~), (-~), (.~), (^.)) import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) -import Data.List (List(..)) +import Data.List (List(Cons, Nil)) import Data.List as List import Data.Map (Map) import Data.Map as Map @@ -249,4 +249,4 @@ _source :: forall s t a. Lens' (SourceState s t a) s _source = _Newtype <<< prop (Proxy :: _ "source") _completeTxs :: forall s t a. Lens' (SourceState s t a) (List (Tx Unit t a)) -_completeTxs = _Newtype <<< prop (Proxy :: _ "completeTxs") \ No newline at end of file +_completeTxs = _Newtype <<< prop (Proxy :: _ "completeTxs") diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index d3e06a531..7d3ea13b2 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -1,45 +1,32 @@ module Ctl.Internal.Testnet.Server - ( checkTestnet - , runTestnetTestPlan - , redirectChannels - , startTestnet - , stopTestnet - , startCardanoTestnet - , testTestnetContracts - , startTestnetCluster + ( Channels , StartedTestnetCluster(MkStartedTestnetCluster) - , Channels + , startTestnetCluster ) where import Contract.Prelude -import Contract.Test.Mote (TestPlanM) import Control.Alt ((<|>)) import Control.Apply (applySecond) -import Control.Monad.Error.Class (liftMaybe, throwError, try) -import Control.Monad.Rec.Class (Step(..), tailRecM) +import Control.Monad.Error.Class (throwError) +import Control.Monad.Rec.Class (Step(Loop), tailRecM) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Server (execDistribution, startKupo, startOgmios) -import Ctl.Internal.Plutip.Spawn (ManagedProcess(..), _rmdirSync, killProcessWithPort, spawn, stop) -import Ctl.Internal.Plutip.Types (ClusterStartupParameters, PlutipConfig, StopClusterResponse) -import Ctl.Internal.Plutip.Utils (EventSource, addCleanup, annotateError, mkDirIfNotExists, onLine, runCleanup, scheduleCleanup, suppressAndLogErrors, tmpdir, tryAndLogErrors, waitForClose, waitForError, waitForEvent, waitUntil) -import Ctl.Internal.Test.ContractTest (ContractTest, ContractTestPlan(ContractTestPlan)) -import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) +import Ctl.Internal.Plutip.Server (startKupo, startOgmios, stopChildProcessWithPort) +import Ctl.Internal.Plutip.Spawn (ManagedProcess(ManagedProcess), NewOutputAction(NoOp, Success), _rmdirSync, killProcessWithPort, spawn) +import Ctl.Internal.Plutip.Utils (EventSource, addCleanup, annotateError, onLine, runCleanup, scheduleCleanup, suppressAndLogErrors, tmpdir, tryAndLogErrors, waitForClose, waitForError, waitForEvent, waitUntil) import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams, KupmiosConfig, Node, TestnetPaths) -import Ctl.Internal.Testnet.Types as Testnet.Types -import Ctl.Internal.Testnet.Utils (findNodeDirs, findTestnetPaths, getRuntime, readNodes, waitForTestnet872Workdir) -import Ctl.Internal.Wallet.Key (PrivatePaymentKey) +import Ctl.Internal.Testnet.Utils (findNodeDirs, findTestnetPaths, getRuntime, readNodes) import Data.Array as Array import Data.Maybe (Maybe(Nothing, Just)) -import Data.Time.Duration (Milliseconds(..)) -import Data.Tuple.Nested (type (/\)) +import Data.String (Pattern(Pattern)) +import Data.String (stripPrefix, trim) as String +import Data.Time.Duration (Milliseconds(Milliseconds)) import Debug (spy) import Effect.Aff (Aff) import Effect.Aff as Aff import Effect.Exception (Error, error) -import Effect.Exception.Unsafe (unsafeThrow) -import Effect.Random (randomInt) import Effect.Ref (Ref) +import Effect.Ref (new, read, write) as Ref import Foreign.Object as Object import Node.ChildProcess (defaultSpawnOptions) import Node.ChildProcess as Node.ChildProcess @@ -48,67 +35,6 @@ import Node.FS.Sync as Node.FS import Node.Path (FilePath) import Node.Process as Node.Process --- | Run several `Contract`s in tests in a (single) Testnet environment (cardano-testnet, kupo, etc.). --- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. --- | Namely, brackets are run for each of the top-level groups and tests --- | inside the bracket. --- | If you wish to only set up Testnet once, ensure all tests that are passed --- | to `testTestnetContracts` are wrapped in a single group. -testTestnetContracts - :: PlutipConfig - -> TestPlanM ContractTest Unit - -> TestPlanM (Aff Unit) Unit -testTestnetContracts testnetCfg tp = unsafeThrow "testTestnetContracts" - -- tp' <- lift $ execDistribution tp - --- | Run a `ContractTestPlan` in a (single) Testnet environment. --- | Supports wallet reuse - see docs on sharing wallet state between --- | wallets in `doc/plutip-testing.md`. -runTestnetTestPlan - :: PlutipConfig - -> ContractTestPlan - -> TestPlanM (Aff Unit) Unit -runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = - unsafeThrow "runTestnetTestPlan" - startCardanoTestnet - -{- --- | Run a `ContractTestPlan` in a (single) Testnet environment. --- | Supports wallet reuse - see docs on sharing wallet state between --- | wallets in `doc/plutip-testing.md`. -runTestnetTestPlan - :: PlutipConfig - -> ContractTestPlan - -> TestPlanM (Aff Unit) Unit -runTestnetTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = - runContractTestPlan \distr tests -> - moteBracket (startTestnet - - where - -- `MoteT`'s bracket doesn't support supplying the constructed resource into - -- the main action, so we use a `Ref` to store and read the result. - moteBracket - :: forall (a :: Type) (b :: Type) - . Aff a - -> Aff Unit - -> TestPlanM (a -> Aff b) Unit - -> TestPlanM (Aff b) Unit - moteBracket before' after' act = do - resultRef <- liftEffect $ Ref.new (Left $ error "Plutip not initialized") - let - before = do - res <- try $ before' - liftEffect $ Ref.write res resultRef - pure res - after = const $ after' - Mote.bracket { before, after } $ flip mapTest act \t -> do - result <- liftEffect $ Ref.read resultRef >>= liftEither - t result --} - -checkTestnet :: PlutipConfig -> Aff Unit -checkTestnet cfg = unsafeThrow "checkTestnet" - type Channels a = { stderr :: EventSource a , stdout :: EventSource a @@ -151,14 +77,7 @@ startTestnetCluster startupParams cleanupRef = do } <- annotateError "Could not start cardano-testnet" $ startCardanoTestnet startupParams cleanupRef - -- testnetEvents <- liftEffect $ onTestnetEvent channels.stdout - -- it will crash right here uncatchable if testnet process will die - log "Waiting for Ready state" - -- waitFor testnetEvents case _ of - -- Testnet.Types.Ready -> Just unit - -- _ -> Nothing - - { runtime, paths } <- waitUntil (Milliseconds 4000.0) + { paths } <- waitUntil (Milliseconds 4000.0) $ map hush $ tryAndLogErrors "Waiting for ready state" $ liftEffect do @@ -167,8 +86,6 @@ startTestnetCluster startupParams cleanupRef = do runtime <- getRuntime paths pure { runtime, paths } - log "Testnet is ready" - ogmios <- annotateError "Could not start ogmios" $ startOgmios' { paths, workdir: workdirAbsolute } kupo <- annotateError "Could not start kupo" @@ -187,13 +104,9 @@ startTestnetCluster startupParams cleanupRef = do scheduleCleanup cleanupRef (startKupo startupParams paths cleanupRef) - $ fst - >>> stop + (stopChildProcessWithPort startupParams.kupoConfig.port <<< fst) - _ <- Aff.forkAff do - waitForClose kupo - runCleanup cleanupRef - throwError $ error "kupo process has exited" + void $ Aff.forkAff (waitForClose kupo *> runCleanup cleanupRef) kupoChannels <- liftEffect $ getChannels kupo _ <- redirectChannels @@ -208,14 +121,13 @@ startTestnetCluster startupParams cleanupRef = do pure { process: kupo, workdir: kupoWorkdir, channels: kupoChannels } startOgmios' { paths, workdir } = do - ogmios <- scheduleCleanup - cleanupRef - (startOgmios startupParams paths) - stop - _ <- Aff.forkAff do - waitForClose ogmios - runCleanup cleanupRef - throwError $ error "ogmios process has exited" + ogmios <- + scheduleCleanup + cleanupRef + (startOgmios startupParams paths) + (stopChildProcessWithPort startupParams.ogmiosConfig.port) + + void $ Aff.forkAff (waitForClose ogmios *> runCleanup cleanupRef) ogmiosChannels <- liftEffect $ getChannels ogmios _ <- redirectChannels @@ -229,29 +141,20 @@ startTestnetCluster startupParams cleanupRef = do } pure { process: ogmios, channels: ogmiosChannels } -startTestnet - :: PlutipConfig - -> InitialUTxODistribution - -> Aff (ManagedProcess /\ PrivatePaymentKey /\ ClusterStartupParameters) -startTestnet _ = unsafeThrow "startTestnet" - -stopTestnet :: PlutipConfig -> Aff StopClusterResponse -stopTestnet cfg = unsafeThrow "stopTestnet" - -- | Runs cardano-testnet executable with provided params. spawnCardanoTestnet :: forall r . { cwd :: FilePath } -> { | CardanoTestnetStartupParams r } - -> Aff ManagedProcess + -> Aff { testnet :: ManagedProcess, workspace :: FilePath } spawnCardanoTestnet { cwd } params = do env <- liftEffect Node.Process.getEnv - initCwd <- liftMaybe (error "Couldn't find INIT_CWD env variable") - $ Object.lookup "INIT_CWD" env + -- initCwd <- liftMaybe (error "Couldn't find INIT_CWD env variable") + -- $ Object.lookup "INIT_CWD" env let env' = Object.fromFoldable [ "TMPDIR" /\ cwd -- only for 8.1.1; 8.7.2 puts it's testnet directory into cwd instead - , "CARDANO_NODE_SRC" /\ (initCwd <> "cardano-testnet-files") + -- , "CARDANO_NODE_SRC" /\ (initCwd <> "cardano-testnet-files") , "CARDANO_CLI" /\ "cardano-cli" , "CREATE_SCRIPT_CONTEXT" /\ "create-script-context" , "CARDANO_NODE" /\ "cardano-node" @@ -260,12 +163,18 @@ spawnCardanoTestnet { cwd } params = do ] opts = defaultSpawnOptions { cwd = Just cwd, env = Just $ Object.union env' env } - -- log $ show env - spawn - "cardano-testnet" - (spy "cardano-testnet options: " options) - opts - Nothing + workspaceRef <- liftEffect $ Ref.new mempty + ps <- spawn "cardano-testnet" (spy "cardano-testnet options: " options) opts $ + Just + ( \{ line } -> + case String.stripPrefix (Pattern "Workspace: ") (String.trim line) of + Nothing -> pure NoOp + Just workspace -> do + void $ Ref.write workspace workspaceRef + pure Success + ) + workspace <- liftEffect $ Ref.read workspaceRef + pure { testnet: ps, workspace } where flag :: String -> String flag name = "--" <> name @@ -303,68 +212,28 @@ startCardanoTestnet , nodes :: Array { | Node () } } startCardanoTestnet params cleanupRef = annotateError "startCardanoTestnet" do - - testDir <- liftEffect do - tmp <- tmpdir - log $ show { tmp } - testId <- randomInt 0 999 -- FIXME: - let dir = tmp <> "testnet-" <> show testId - mkDirIfNotExists dir - log $ show { dir } - pure dir - - let - tmpLogDir = testDir <> "logs" - tmpStdoutLogs = tmpLogDir <> "cardano-testnet.stdout.tmp.log" - tmpStderrLogs = tmpLogDir <> "cardano-testnet.stderr.tmp.log" - cleanupTmpLogs = do - void $ try $ Node.FS.rm tmpStdoutLogs - void $ try $ Node.FS.rm tmpStderrLogs - - testnet <- spawnCardanoTestnet { cwd: testDir } params + tmpDir <- liftEffect tmpdir + { testnet, workspace } <- spawnCardanoTestnet { cwd: tmpDir } params channels <- liftEffect $ getChannels testnet - -- Additional logging channels - _ <- Aff.forkAff $ annotateError "startCardanoTestnet:waitForFail" do - let - waitError = Just <$> waitForError testnet - waitClose = Nothing <$ waitForClose testnet - cause <- waitError <|> waitClose - runCleanup cleanupRef - throwError $ fromMaybe (error "cardano-testnet process has exited") cause - - liftEffect $ mkDirIfNotExists tmpLogDir - tempOutput <- redirectChannels - { stderr: channels.stderr, stdout: channels.stdout } - { stdoutTo: { log: Just tmpStdoutLogs, console: Just "[node][stdout]" } - , stderrTo: { log: Just tmpStderrLogs, console: Just "[node][stderr]" } - } - log "Redirected logs" - - -- -- It may not create an own directory until show any signs of life - -- _ <- waitForEvent channels.stdout - log "Waiting until testnet create it's own workdir" - -- forward node's stdout - workdirAbsolute <- - map (_.workdir >>> (testDir <> _)) -- workdir name to abs path - - $ waitForTestnet872Workdir channels.stdout { tmpdir: testDir } - Aff.killFiber (error "Temp output is not needed anymore") tempOutput - - -- cardano-testnet doesn't kill cardano-nodes it spawns, so we do it ourselves - log "Waiting for node sockets" - nodes <- waitUntil (Milliseconds 3000.0) - $ liftEffect - $ map hush - $ tryAndLogErrors "waiting until nodes are there" do + void $ Aff.forkAff $ annotateError "startCardanoTestnet:waitForErrorOrClose" + do + let + waitError = Just <$> waitForError testnet + waitClose = Nothing <$ waitForClose testnet + cause <- waitError <|> waitClose + runCleanup cleanupRef + throwError $ fromMaybe (error "cardano-testnet process has exited") cause - nodeDirs <- findNodeDirs { workdir: workdirAbsolute } - readNodes { testnetDirectory: workdirAbsolute, nodeDirs } + nodes <- + waitUntil (Milliseconds 3000.0) $ liftEffect do + hush <$> tryAndLogErrors "startCardanoTestnet:waitForNodes" do + nodeDirs <- findNodeDirs { workdir: workspace } + readNodes { testnetDirectory: workspace, nodeDirs } - for_ nodes \{ port } -> do - liftEffect - $ addCleanup cleanupRef - $ killProcessWithPort port + liftEffect $ + for_ nodes \{ port } -> + addCleanup cleanupRef (killProcessWithPort port) -- clean up on SIGINT do @@ -378,22 +247,22 @@ startCardanoTestnet params cleanupRef = annotateError "startCardanoTestnet" do $ addCleanup cleanupRef $ liftEffect do log "Cleaning up workidr" - cleanupTmpLogs - _rmdirSync workdirAbsolute + _rmdirSync workspace _ <- redirectChannels { stderr: channels.stderr, stdout: channels.stdout } { stdoutTo: - { log: Just $ workdirAbsolute <> "cardano-testnet.stdout.log" + { log: Just $ workspace <> "cardano-testnet.stdout.log" , console: Nothing } , stderrTo: - { log: Just $ workdirAbsolute <> "cardano-testnet.stderr.log" + { log: Just $ workspace <> "cardano-testnet.stderr.log" , console: Nothing } } + log "startCardanoTestnet:done" - pure { testnet, workdirAbsolute, channels, nodes } + pure { testnet, workdirAbsolute: workspace, channels, nodes } getChannels :: ManagedProcess diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 379b5a4aa..26ad7f887 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -1,10 +1,10 @@ module Ctl.Internal.Testnet.Types ( CardanoTestnetStartupParams - , Era(..) - , LoggingFormat(..) + , Era(Byron, Shelley, Allegra, Mary, Alonzo, Babbage) + , LoggingFormat(LogAsJson, LogAsText) , TestnetPaths - , Event(..) - , StartupFailure(..) + , Event(Ready872, Finished, Failed, StartupFailed) + , StartupFailure(SpawnFailed, InitializationFailed) , KupmiosConfig , NodeLocation , Node diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index 34b7130b8..8c0513654 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -1,6 +1,6 @@ module Ctl.Internal.Testnet.Utils - ( findNodeDirs - , waitForTestnet872Workdir + ( find811TestnetWorkir + , findNodeDirs , findTestnetPaths , getNodePort , getRuntime @@ -8,8 +8,9 @@ module Ctl.Internal.Testnet.Utils , onTestnetEvent , parseEvent , readNodes - , waitFor , read872GenesisKey + , waitFor + , waitForTestnet872Workdir ) where import Contract.Prelude @@ -29,7 +30,7 @@ import Control.Monad.Error.Class , throwError ) import Control.Monad.Except (lift, runExceptT) -import Control.Monad.Rec.Class (Step(..), tailRecM) +import Control.Monad.Rec.Class (Step(Done, Loop), tailRecM) import Ctl.Internal.Helpers ((<>)) import Ctl.Internal.Plutip.Utils ( EventSource @@ -37,17 +38,17 @@ import Ctl.Internal.Plutip.Utils , waitForEvent ) import Ctl.Internal.Testnet.Types - ( Event(..) + ( Event(Ready872, Finished, StartupFailed) , GenesisUtxoKeyLocation , Node , NodeLocation - , StartupFailure(..) + , StartupFailure(InitializationFailed, SpawnFailed) , TestnetPaths , TestnetRuntime ) import Data.Array as Array import Data.Int as Int -import Data.String (Pattern(..)) +import Data.String (Pattern(Pattern)) import Data.String as String import Data.UInt (UInt) import Data.UInt as UInt @@ -231,7 +232,7 @@ findNodeDirs { workdir } = ado idx <- Int.fromString =<< node872 dirname in { idx, workdir: workdir <> dirname, name: dirname } where - node881 x = + _node881 x = String.stripPrefix (Pattern "node-bft") x <|> String.stripPrefix (Pattern "node-pool") x node872 = String.stripPrefix (Pattern "node-spo") @@ -241,7 +242,7 @@ findTestnetPaths findTestnetPaths { workdir } = runExceptT do let nodeConfigPath = workdir <> "configuration.yaml" - firstNode811 = "socket/node-pool1" + _firstNode811 = "socket/node-pool1" firstNode872 = "socket/node-spo1" nodeSocketPath = workdir <> firstNode872 workdirExists <- lift $ Node.FS.exists workdir @@ -265,4 +266,4 @@ findTestnetPaths { workdir } = runExceptT do , nodeSocketPath , genesisKeys , nodeDirs - } \ No newline at end of file + } diff --git a/test/Plutip.purs b/test/Plutip.purs index 02dfa7e40..c8c27ceed 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -2,51 +2,69 @@ module Test.Ctl.Plutip ( main ) where -import Contract.Prelude +import Prelude -import Cardano.Serialization.Lib as CSL -import Cardano.Types as Cardano.Types -import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) -import Cardano.Types.Address as Cardano.Types.Address -import Cardano.Types.BigInt (BigInt) -import Cardano.Types.BigNum (BigNum(..)) -import Cardano.Types.BigNum (fromInt) as BigNum -import Cardano.Types.Credential (Credential(..)) -import Cardano.Types.PaymentCredential (PaymentCredential(..)) -import Cardano.Types.PrivateKey as Cardano.Type.PrivateKey -import Cardano.Types.PublicKey as Cardano.Types.PublicKey -import Cardano.Types.StakeCredential (StakeCredential(..)) -import Cardano.Types.StakePubKeyHash (StakePubKeyHash(..)) -import Contract.Address (getNetworkId) -import Contract.Monad (Contract(..), liftedM) -import Contract.Monad as Contract -import Contract.Test.Plutip (defaultPlutipConfig) -import Contract.Test.Utils (interruptOnSignal) -import Contract.Transaction (awaitTxConfirmed, balanceTx, signTransaction, submit) -import Contract.TxConstraints (DatumPresence(..), TxConstraints(..)) -import Contract.UnbalancedTx (mkUnbalancedTx) -import Contract.Value (Value(..), lovelaceValueOf, valueToCoin) -import Contract.Wallet (getWalletAddress, getWalletBalance, mkKeyWalletFromPrivateKeys, withKeyWallet) -import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) -import Ctl.Examples.OneShotMinting (contract) as OneShotMinting -import Ctl.Examples.PlutusV2.ReferenceInputs (contract) as ReferenceInputs -import Ctl.Internal.Plutip.Utils (tmpdir) -import Ctl.Internal.Testnet.Contract (readGenesisWallets) -import Ctl.Internal.Testnet.Contract as Testnet.Contract -import Ctl.Internal.Testnet.Server as Testnet +import Contract.Test.Plutip (defaultPlutipConfig, noWallet) +import Contract.Test.Utils (exitCode, interruptOnSignal) +import Ctl.Internal.Contract.Monad (wrapQueryM) +import Ctl.Internal.Testnet.Contract (runTestnetTestPlan, testTestnetContracts) import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams) -import Ctl.Internal.Testnet.Types as Testnet.Types -import Ctl.Internal.Types.TxConstraints (TxConstraint(..)) -import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) -import Data.Array (head, singleton) -import Data.Maybe (Maybe(Just), fromJust) -import Data.Posix.Signal (Signal(..)) -import Debug (traceM) +import Ctl.Internal.Testnet.Types + ( LoggingFormat(LogAsJson) + , defaultStartupParams + ) as Testnet.Types +import Data.Maybe (Maybe(Just)) +import Data.Posix.Signal (Signal(SIGINT)) import Effect (Effect) -import Effect.Aff (launchAff) -import Internal.CardanoCli.QueryHandler as CardanoCli.QueryHandler -import Partial.Unsafe (unsafePartial) -import Record as Record +import Effect.Aff + ( Milliseconds(Milliseconds) + , cancelWith + , effectCanceler + , launchAff + ) +import Mote (group) +import Mote.Monad (mapTest) +import Mote.TestPlanM as Utils +import Record (union) as Record +import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration +import Test.Ctl.Plutip.Contract as Contract +import Test.Ctl.Plutip.Contract.Assert as Assert +import Test.Ctl.Plutip.Contract.ClusterParameters as ClusterParameters +import Test.Ctl.Plutip.Contract.Mnemonics as Mnemonics +import Test.Ctl.Plutip.Contract.OgmiosMempool as OgmiosMempool +import Test.Ctl.Plutip.ExUnits as ExUnits +import Test.Ctl.Plutip.Logging as Logging +import Test.Ctl.Plutip.SameWallets as SameWallets +import Test.Ctl.Plutip.UtxoDistribution as UtxoDistribution +import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface +import Test.Spec.Runner (defaultConfig) + +-- Run with `npm run plutip-test` +main :: Effect Unit +main = interruptOnSignal SIGINT =<< launchAff do + let config = Record.union defaultStartupParams defaultPlutipConfig + flip cancelWith (effectCanceler (exitCode 1)) do + Utils.interpretWithConfig + defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } + $ group "cardano-testnet" do + testTestnetContracts config Mnemonics.suite + group "ExUnits - normal limits" do + testTestnetContracts config $ ExUnits.mkFailingSuite 3000 + testTestnetContracts config $ ExUnits.mkSuite 2550 + -- FIXME: group "ExUnits - relaxed limits" do + -- testTestnetContracts configWithMaxExUnits $ ExUnits.mkSuite 3000 + testTestnetContracts config Assert.suite + Logging.suite + -- FIXME: testStartPlutipCluster + testTestnetContracts config $ do + flip mapTest QueryM.AffInterface.suite + (noWallet <<< wrapQueryM) + ChangeGeneration.suite + Contract.suite + UtxoDistribution.suite + testTestnetContracts config OgmiosMempool.suite + runTestnetTestPlan config SameWallets.suite + ClusterParameters.runTest defaultStartupParams :: { | CardanoTestnetStartupParams () } defaultStartupParams = @@ -55,155 +73,20 @@ defaultStartupParams = ) { nodeLoggingFormat = Just Testnet.Types.LogAsJson } -newWallet :: Effect KeyWallet -newWallet = ado - paymentSkey <- wrap <$> genSkey - stakingSkey <- wrap <$> genSkey - in mkKeyWalletFromPrivateKeys paymentSkey (Just stakingSkey) - where - genSkey = wrap <$> CSL.privateKey_generateEd25519 - -walletInfo - :: Cardano.Types.NetworkId - -> KeyWallet - -> { address :: Cardano.Types.Address - , paymentPubKeyHash :: Cardano.Types.PaymentPubKeyHash - , stakePubKeyHash :: Maybe Cardano.Types.StakePubKeyHash - } -walletInfo network (KeyWallet wallet) = - let - privateKeyToPkh = - Cardano.Types.PublicKey.hash - <<< Cardano.Type.PrivateKey.toPublicKey - - paymentPubKeyHash :: Cardano.Types.PaymentPubKeyHash - paymentPubKeyHash = - wrap $ privateKeyToPkh $ unwrap wallet.paymentKey - - stakePubKeyHash :: Maybe Cardano.Types.StakePubKeyHash - stakePubKeyHash = - wrap <<< privateKeyToPkh <<< unwrap <$> wallet.stakeKey - address = - Cardano.Types.Address.mkPaymentAddress - network - (wrap $ Cardano.Types.PubKeyHashCredential $ unwrap paymentPubKeyHash) - $ wrap - <<< Cardano.Types.PubKeyHashCredential - <<< unwrap - <$> stakePubKeyHash - in - { paymentPubKeyHash - , stakePubKeyHash - , address - } - --- Run with `npm run plutip-test` -main :: Effect Unit -main = (interruptOnSignal SIGINT =<< _) $ launchAff $ void do - let cfg = Record.union defaultStartupParams defaultPlutipConfig - distr = [ BigNum.fromInt 50_000_000, BigNum.fromInt 5_000_000 ] - Testnet.Contract.withTestnetContractEnv cfg distr \contractEnv wallet -> do - log "Running test contract" - Contract.runContractInEnv contractEnv do - withKeyWallet wallet do - balance <- getWalletBalance - traceM $ "kw balance: " <> show balance - OneShotMinting.contract - {- - log "Inside" - let - Testnet.MkStartedTestnetCluster { paths } = cluster - -- a new wallet to send initial lovelace to - -- do something interesting with every utxo in utxo-keys - genesisWallets <- liftEffect $ readGenesisWallets paths - let genesisWallet = unsafePartial fromJust $ head genesisWallets - {- - for_ genesisWallets \wallet -> do - withKeyWallet wallet do - let - nodeCfg = - { socketPath: paths.nodeSocketPath - , testnetMagic: cfg.testnetMagic - } - -- it will show zero balance - log - <<< show - <<< { initialBalanceViaKupo: _ } - =<< getWalletBalance - - -- we can see genesis utxos when add cardano-cli query results to utxosAt - CardanoCli.QueryHandler.withCardanoCliCompletion nodeCfg do - log <<< show <<< { utxosAfterTx: _ } <<< map valueToCoin =<< - getWalletBalance -- utxosAt newWallet.address - kw <- withKeyWallet genesisWallet do - let - nodeCfg = - { socketPath: paths.nodeSocketPath - , testnetMagic: cfg.testnetMagic - } - -- it will show zero balance - log - <<< show - <<< { initialBalanceViaKupo: _ } - =<< getWalletBalance - - genesisAddr <- liftedM "Could not get genesis address" getWalletAddress - - -- we can see genesis utxos when add cardano-cli query results to utxosAt - CardanoCli.QueryHandler.withCardanoCliCompletion nodeCfg genesisAddr do - -- log <<< show <<< { utxosAfterTx: _ } <<< map valueToCoin =<< - -- getWalletBalance -- utxosAt newWallet.address - - -- send 100 ADA to a newly generated wallet - wallet <- liftEffect newWallet - fundWalletFromGenesis wallet genesisWallet (BigNum.fromInt 100_000_000) - fundWalletFromGenesis wallet genesisWallet (BigNum.fromInt 5_000_000) - pure wallet - -- execute simple contract - withKeyWallet kw do - kwBalance <- getWalletBalance - traceM $ "kw balance: " <> show kwBalance - OneShotMinting.contract - - log <<< append "Tmp dir is: " =<< liftEffect tmpdir +configWithMaxExUnits :: PlutipConfig +configWithMaxExUnits = config + { clusterConfig = config.clusterConfig { raiseExUnitsToMax = true } } + +testStartPlutipCluster :: TestPlanM (Aff Unit) Unit +testStartPlutipCluster = group "Server" do + test "startPlutipCluster / stopPlutipCluster" do + bracket (startPlutipServer config) + (stopChildProcessWithPort config.port) $ const do + checkPlutipServer config + _startRes <- startPlutipCluster config [ [] ] + stopRes <- stopPlutipCluster config + stopRes `shouldSatisfy` case _ of + StopClusterSuccess -> true + _ -> false -} - --- flip cancelWith (effectCanceler (exitCode 1)) do --- Utils.interpretWithConfig --- defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } --- $ group "Plutip" do --- testTestnetContracts config Mnemonics.suite --- group "ExUnits - normal limits" do --- testTestnetContracts config $ ExUnits.mkFailingSuite 3000 --- testTestnetContracts config $ ExUnits.mkSuite 2550 --- group "ExUnits - relaxed limits" do --- testTestnetContracts configWithMaxExUnits $ ExUnits.mkSuite 3000 --- testTestnetContracts config Assert.suite --- Logging.suite --- testStartTestnet --- testTestnetContracts config $ do --- flip mapTest QueryM.AffInterface.suite --- (noWallet <<< wrapQueryM) --- ChangeGeneration.suite --- Contract.suite --- UtxoDistribution.suite --- testTestnetContracts config OgmiosMempool.suite --- runTestnetTestPlan config SameWallets.suite --- ClusterParameters.runTest - --- configWithMaxExUnits :: PlutipConfig --- configWithMaxExUnits = config --- { clusterConfig = config.clusterConfig { raiseExUnitsToMax = true } } - --- testStartTestnet:: TestPlanM (Aff Unit) Unit --- testStartTestnet = group "Server" do --- test "startTestnet / stopTestnet" do --- -- bracket (startTestnet config) --- -- (stopChildProcessWithPort config.port) $ const do --- checkTestnet config --- _startRes <- startTestnet config [ [] ] --- stopRes <- stopTestnet config --- stopRes `shouldSatisfy` case _ of --- StopClusterSuccess -> true --- _ -> false From 93eefe8ec49d786a49c14a8cd314b333a5efcf6d Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 26 Jun 2024 15:25:39 +0200 Subject: [PATCH 244/373] Fix formatting --- src/Internal/CardanoCli/QueryHandler.purs | 8 ++--- src/Internal/Plutip/Spawn.purs | 2 +- src/Internal/Plutip/Utils.purs | 4 +-- src/Internal/Testnet/Server.purs | 44 ++++++++++++++++++++--- src/Internal/Testnet/Utils.purs | 2 +- test/Testnet/DistributeFunds.purs | 2 +- 6 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/Internal/CardanoCli/QueryHandler.purs b/src/Internal/CardanoCli/QueryHandler.purs index ff44a538e..3ab6b0938 100644 --- a/src/Internal/CardanoCli/QueryHandler.purs +++ b/src/Internal/CardanoCli/QueryHandler.purs @@ -31,7 +31,7 @@ type GetUtxoByOrefQuery = -> Aff (Either Contract.ClientError.ClientError (Maybe TransactionOutput)) -- | Adds to the utxosAt results UTxOs found by cardano-cli but not found by the current 'utxosAt' query. --- UTxOs found by cardano-cli assumed to have no datum or script ref. +-- UTxOs found by cardano-cli assumed to have no datum or script ref. withCardanoCliCompletion :: forall a . CardanoCli.CardanoNodeInstance @@ -50,7 +50,7 @@ getUtxoByOrefL = prop (Proxy :: _ "handle") <<< prop (Proxy :: _ "getUtxoByOref") -- | Adds to the results UTxOs found by cardano-cli but not found by the given 'utxosAt' query. --- UTxOs found by cardano-cli assumed to have no datum or script ref. +-- UTxOs found by cardano-cli assumed to have no datum or script ref. completeUtxosAt :: CardanoCli.CardanoNodeInstance -> UtxosAtQuery @@ -70,8 +70,8 @@ completeUtxosAt node utxosAt address = runExceptT do kupoUtxos <- ExceptT $ utxosAt address pure $ Map.union kupoUtxos cardanoCliUtxos --- | Adds to the results UTxOs found by cardano-cli but not found by the given 'utxosAt' query. --- UTxOs found by cardano-cli assumed to have no datum or script ref. +-- | Adds to the results UTxOs found by cardano-cli but not found by the given 'getUtxoByOref' query. +-- UTxOs found by cardano-cli assumed to have no datum or script ref. completeGetUtxoByOref -- FIXME :: CardanoCli.CardanoNodeInstance -> Address diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Plutip/Spawn.purs index 87f9f9610..a62ae60a5 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Plutip/Spawn.purs @@ -47,7 +47,7 @@ import Effect.Class (liftEffect) import Effect.Exception (Error, error, throw) import Effect.Ref as Ref import Node.Buffer as Node.Buffer -import Node.ChildProcess (ChildProcess, SpawnOptions, kill, stdout, stderr) +import Node.ChildProcess (ChildProcess, SpawnOptions, kill, stderr, stdout) import Node.ChildProcess as ChildProcess import Node.ChildProcess as Node.ChildProcess import Node.ReadLine (Interface, close, createInterface, setLineHandler) as RL diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index 8680e9ecf..e0aec585b 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -90,7 +90,7 @@ suppressAndLogErrors location = flip catchError $ message >>> log -- | Waits until processe's stdout closes. --- Assuming this means that process is closed as well. +-- Assuming this means that process is closed as well. waitForClose :: ManagedProcess -> Aff Unit waitForClose (ManagedProcess _ child _) = do interface <- liftEffect @@ -104,7 +104,7 @@ waitForClose (ManagedProcess _ child _) = do cont $ Left $ appendErrorMessage "waitForClose has been canceled" err -- | Waits until processe's stdout closes. --- Assuming this means that process is closed as well. +-- Assuming this means that process is closed as well. waitForError :: ManagedProcess -> Aff Error waitForError (ManagedProcess _ child _) = do interface <- liftEffect diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 7d3ea13b2..cb2a34a38 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -11,11 +11,45 @@ import Control.Apply (applySecond) import Control.Monad.Error.Class (throwError) import Control.Monad.Rec.Class (Step(Loop), tailRecM) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Server (startKupo, startOgmios, stopChildProcessWithPort) -import Ctl.Internal.Plutip.Spawn (ManagedProcess(ManagedProcess), NewOutputAction(NoOp, Success), _rmdirSync, killProcessWithPort, spawn) -import Ctl.Internal.Plutip.Utils (EventSource, addCleanup, annotateError, onLine, runCleanup, scheduleCleanup, suppressAndLogErrors, tmpdir, tryAndLogErrors, waitForClose, waitForError, waitForEvent, waitUntil) -import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams, KupmiosConfig, Node, TestnetPaths) -import Ctl.Internal.Testnet.Utils (findNodeDirs, findTestnetPaths, getRuntime, readNodes) +import Ctl.Internal.Plutip.Server + ( startKupo + , startOgmios + , stopChildProcessWithPort + ) +import Ctl.Internal.Plutip.Spawn + ( ManagedProcess(ManagedProcess) + , NewOutputAction(NoOp, Success) + , _rmdirSync + , killProcessWithPort + , spawn + ) +import Ctl.Internal.Plutip.Utils + ( EventSource + , addCleanup + , annotateError + , onLine + , runCleanup + , scheduleCleanup + , suppressAndLogErrors + , tmpdir + , tryAndLogErrors + , waitForClose + , waitForError + , waitForEvent + , waitUntil + ) +import Ctl.Internal.Testnet.Types + ( CardanoTestnetStartupParams + , KupmiosConfig + , Node + , TestnetPaths + ) +import Ctl.Internal.Testnet.Utils + ( findNodeDirs + , findTestnetPaths + , getRuntime + , readNodes + ) import Data.Array as Array import Data.Maybe (Maybe(Nothing, Just)) import Data.String (Pattern(Pattern)) diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index 8c0513654..927beac5e 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -174,7 +174,7 @@ readNodes { nodeDirs, testnetDirectory } = do port <- getNodePort { nodeDir: workdir } pure { idx, socket: socketPath, port, workdir, name } --- | Changes TextEnvelope type to match private payment key one and tries to read that. +-- | Changes TextEnvelope type to match private payment key one and tries to read that. readTextEnvelopeAsPaymentSkey :: FilePath -> Effect Contract.Config.PrivatePaymentKey diff --git a/test/Testnet/DistributeFunds.purs b/test/Testnet/DistributeFunds.purs index 513b07a22..9971d7f10 100644 --- a/test/Testnet/DistributeFunds.purs +++ b/test/Testnet/DistributeFunds.purs @@ -15,7 +15,7 @@ import Ctl.Internal.Testnet.DistributeFunds import Ctl.Internal.Testnet.DistributeFunds as Distribute import Data.Bifunctor (lmap) import Data.Lens (over, set, view, (%~), (+~), (-~), (.~), (^.)) -import Data.List (List(..)) +import Data.List (List(Cons)) import Data.List as List import Mote (group, test) import Test.Spec.Assertions (shouldEqual) From 7c829b4fe1c3aeca2a5835b4f3ecc46244e3181f Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 26 Jun 2024 17:07:21 +0200 Subject: [PATCH 245/373] Fix cardano-testnet output in runPursTest --- nix/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nix/default.nix b/nix/default.nix index 01a9070ae..2dc675259 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -319,6 +319,12 @@ let # Provide NPM dependencies to the test suite scripts ln -sfn ${nodeModules}/lib/node_modules node_modules + # This line fixes an issue where the hedgehog output generated by cardano-testnet + # was not being handled, making it impossible to extract cardano-testnet + # workspace information and thus causing cluster initialization to fail. + # see https://github.com/hedgehogqa/haskell-hedgehog/issues/110 + export LC_ALL=C.UTF-8 + # Call the main module and execute the entry point function ${nodejs}/bin/node --enable-source-maps -e 'import("./output/${testMain}/index.js").then(m => m.${psEntryPoint}())' From cf0f205fd7786857e760723ecd0e325b9280f245 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 26 Jun 2024 17:45:51 +0200 Subject: [PATCH 246/373] Make killByPort not throw if port is available --- src/Internal/Plutip/Spawn.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Plutip/Spawn.purs index a62ae60a5..2e3ce6c43 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Plutip/Spawn.purs @@ -45,6 +45,7 @@ import Effect.Aff.Retry ) import Effect.Class (liftEffect) import Effect.Exception (Error, error, throw) +import Effect.Exception (message) as Error import Effect.Ref as Ref import Node.Buffer as Node.Buffer import Node.ChildProcess (ChildProcess, SpawnOptions, kill, stderr, stdout) @@ -216,7 +217,7 @@ killByPort port = void $ Node.ChildProcess.exec ("fuser -k " <> show (UInt.toInt port) <> "/tcp") Node.ChildProcess.defaultExecOptions - \{ error } -> maybe (pure unit) throwError error + (maybe (pure unit) (log <<< Error.message) <<< _.error) -- | Kill a process and wait for it to stop listening on a specific port. killProcessWithPort :: UInt -> Aff Unit From 25bf6b79699598b2d18649c217ba69adbb984a03 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Thu, 27 Jun 2024 11:06:56 -0300 Subject: [PATCH 247/373] Remove `applyArgs` E2E tests --- test/e2e-ci.env | 1 - test/e2e.env | 2 -- 2 files changed, 3 deletions(-) diff --git a/test/e2e-ci.env b/test/e2e-ci.env index 54a8bc2e8..e20d01d91 100644 --- a/test/e2e-ci.env +++ b/test/e2e-ci.env @@ -10,5 +10,4 @@ plutip:http://localhost:4008/?plutip-nami-mock:SendsToken plutip:http://localhost:4008/?plutip-nami-mock:MintsMultipleTokens plutip:http://localhost:4008/?plutip-nami-mock:Schnorr plutip:http://localhost:4008/?plutip-nami-mock:ECDSA -plutip:http://localhost:4008/?plutip-nami-mock:ApplyArgs " diff --git a/test/e2e.env b/test/e2e.env index 8b0cc2d87..747350871 100755 --- a/test/e2e.env +++ b/test/e2e.env @@ -10,8 +10,6 @@ plutip:http://localhost:4008/?plutip-nami-mock:AlwaysMints plutip:http://localhost:4008/?plutip-nami-mock:Pkh2Pkh plutip:http://localhost:4008/?plutip-nami-mock:SendsToken plutip:http://localhost:4008/?plutip-nami-mock:MintsMultipleTokens -# This test does not depend on wallets, we only check that bundling is correct -plutip:http://localhost:4008/?plutip-nami-mock:ApplyArgs # If you add plutip tests above, please also add them to ./e2e-ci.env nami:http://localhost:4008/?nami:Schnorr From 7cd798fc8b022e2c66df0b9c3824e120052272d0 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Thu, 27 Jun 2024 11:24:11 -0300 Subject: [PATCH 248/373] Fix typos --- CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e8bbf623..ce57a34e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -411,7 +411,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil - `startPlutipCluster` error message now includes cluster startup failure details. ([#1407](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1407)) - `PlutipTest` is now known as `Contract.Test.ContractTest`. It has been semantically untied from Plutip, because we now have another test runner for tests that rely on particular funds distributions - [Blockfrost](./doc/blockfrost.md). See `Contract.Test.Blockfrost.runContractTestsWithBlockfrost` ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) - `Contract.Staking.getPoolParameters` has been moved to `Contract.Backend.Ogmios.getPoolParameters`. This function only runs with Ogmios backend, because Blockfrost [does not provide](https://github.com/blockfrost/blockfrost-backend-ryo/issues/82) all the required values ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) -- Use of [CIP-40](https://chips.cardano.org/cip/CIP-0040/) collateral output is now enabled with CIP-30 wallets ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)). +- Use of [CIP-40](https://cips.cardano.org/cip/CIP-0040/) collateral output is now enabled with CIP-30 wallets ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)). - `reindexSpentScriptRedeemers` is no longer in Contract (it's pure) ([#1260](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1260)) ### Removed @@ -468,7 +468,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil ### Fixed -- Added missing `stakePoolTargetNum` ("`nOpt`") protocol parameter (see [CIP-9](https://chips.cardano.org/cip/CIP-0009)) ([#571](https://github.com/Plutonomicon/cardano-transaction-lib/issues/571)) +- Added missing `stakePoolTargetNum` ("`nOpt`") protocol parameter (see [CIP-9](https://cips.cardano.org/cip/CIP-0009)) ([#571](https://github.com/Plutonomicon/cardano-transaction-lib/issues/571)) - CIP-30 `signData` response handling ([#1289](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1289)) ### Runtime Dependencies @@ -623,7 +623,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil - Constraint for attaching a reference input to a transaction: `mustReferenceOutput` ([#946](https://github.com/Plutonomicon/cardano-transaction-lib/pull/946)) - `DatumPresence` data type, which tags paying constraints that accept datum, to mark whether the datum should be inline or hashed in the transaction output. ([#931](https://github.com/Plutonomicon/cardano-transaction-lib/pull/931)) - Utility conversion functions `serializeData` and `deserializeData` between `PlutusData` and `CborBytes` to `Contract.PlutusData`. ([#1001](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1001)) -- Added [CIP-30](https://chips.cardano.org/cip/CIP-0030) methods: `getNetworkId`, `getChangeAddress`, `getRewardAddresses`, `getUnusedAddresses`, `signData`, `isWalletAvailable`, `isEnabled`, `apiVersion`, `name` and `icon` to `Contract.Wallet` ([#974](https://github.com/Plutonomicon/cardano-transaction-lib/issues/974)) +- Added [CIP-30](https://cips.cardano.org/cip/CIP-0030) methods: `getNetworkId`, `getChangeAddress`, `getRewardAddresses`, `getUnusedAddresses`, `signData`, `isWalletAvailable`, `isEnabled`, `apiVersion`, `name` and `icon` to `Contract.Wallet` ([#974](https://github.com/Plutonomicon/cardano-transaction-lib/issues/974)) ### Changed @@ -676,7 +676,7 @@ Then consult with [the template's build scripts](./templates/ctl-scaffold/esbuil - We do not split strings in pieces when encoding to JSON - We require a `"version": 2` tag - `policy_id` must be 28 bytes - - `asset_name` is up to 32 bytes. See https://github.com/cardano-foundation/chips/issues/303 for motivation + - `asset_name` is up to 32 bytes. See https://github.com/cardano-foundation/CIPs/issues/303 for motivation - `ogmios-datum-cache` now works on `x86_64-darwin` - `TypedValidator` interface ([#808](https://github.com/Plutonomicon/cardano-transaction-lib/issues/808)) - `Contract.Address.getWalletCollateral` now works with `KeyWallet`. From baa9b8070b2d4558f6d6fc5cc2eae79daf712b66 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Thu, 27 Jun 2024 11:24:38 -0300 Subject: [PATCH 249/373] Update references to `Cardano.Plutus.ApplyArgs` --- doc/plutus-comparison.md | 2 +- examples/OneShotMinting.purs | 3 ++- examples/PlutusV2/OneShotMinting.purs | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/plutus-comparison.md b/doc/plutus-comparison.md index 425727f6e..603df9dc8 100644 --- a/doc/plutus-comparison.md +++ b/doc/plutus-comparison.md @@ -135,7 +135,7 @@ As noted above, all scripts and various script newtypes (`Validator`, `MintingPo #### Applying arguments to parameterized scripts -We support applying arguments to parameterized scripts with `Contract.Scripts.applyArgs`. It allows you to apply a list of `PlutusData` arguments to a `PlutusScript`. Using this allows you to dynamically apply arguments during contract execution, but also implies the following: +We support applying arguments to parameterized scripts with `Cardano.Plutus.ApplyArgs.applyArgs` (from [purescript-uplc-apply-args](https://github.com/mlabs-haskell/purescript-uplc-apply-args)). It allows you to apply a list of `PlutusData` arguments to a `PlutusScript`. Using this allows you to dynamically apply arguments during contract execution, but also implies the following: - All of your domain types must have `Contract.PlutusData.ToData` instances (or some other way of converting them to `PlutusData`) - You must employ a workaround, illustrated by the following examples, in your off-chain code to ensure that the applied scripts are valid for both on- and off-chain code. This essentially consists of creating an wrapper which accepts `Data` arguments for your parameterized scripts: diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 3b8a83485..c0162edd6 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -1,4 +1,5 @@ --- | This module demonstrates how `applyArgs` from `Contract.Scripts` can be +-- | This module demonstrates how `applyArgs` from `Cardano.Plutus.ApplyArgs` +-- | (from https://github.com/mlabs-haskell/purescript-uplc-apply-args) can be -- | used to build scripts with the provided arguments applied. It creates a -- | transaction that mints an NFT using the one-shot minting policy. module Ctl.Examples.OneShotMinting diff --git a/examples/PlutusV2/OneShotMinting.purs b/examples/PlutusV2/OneShotMinting.purs index c722a9366..41b3188e2 100644 --- a/examples/PlutusV2/OneShotMinting.purs +++ b/examples/PlutusV2/OneShotMinting.purs @@ -1,4 +1,5 @@ --- | This module demonstrates how `applyArgs` from `Contract.Scripts` can be +-- | This module demonstrates how `applyArgs` from `Cardano.Plutus.ApplyArgs` +-- | (from https://github.com/mlabs-haskell/purescript-uplc-apply-args) can be -- | used to build PlutusV2 scripts with the provided arguments applied. It -- | creates a transaction that mints an NFT using the one-shot minting policy. module Ctl.Examples.PlutusV2.OneShotMinting From 61e347a0b4c920a43f67bd9752a9ba58519722ad Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 27 Jun 2024 00:06:00 +0400 Subject: [PATCH 250/373] WIP: tie together the new constaints interface & balancer --- examples/AdditionalUtxos.purs | 13 +- examples/BalanceTxConstraints.purs | 6 +- examples/ChangeGeneration.purs | 5 +- examples/ContractTestUtils.purs | 3 +- examples/KeyWallet/SignMultiple.purs | 21 +- examples/OneShotMinting.purs | 36 +- examples/PlutusV2/ReferenceInputs.purs | 5 +- examples/SignMultiple.purs | 21 +- examples/TxChaining.purs | 7 +- packages.dhall | 2 +- spago.dhall | 1 + src/Contract/AuxiliaryData.purs | 54 +-- src/Contract/Constraints.purs | 20 +- src/Contract/PlutusData.purs | 6 +- src/Contract/ScriptLookups.purs | 1 - src/Contract/Transaction.purs | 199 ++++----- src/Contract/UnbalancedTx.purs | 35 +- src/Internal/BalanceTx/BalanceTx.purs | 118 +++--- src/Internal/BalanceTx/Error.purs | 31 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 74 ++-- src/Internal/BalanceTx/RedeemerIndex.purs | 175 -------- src/Internal/BalanceTx/Types.purs | 5 +- src/Internal/BalanceTx/UnattachedTx.purs | 54 --- src/Internal/Lens.purs | 4 + src/Internal/Plutip/Server.purs | 3 +- src/Internal/ProcessConstraints.purs | 94 ++--- src/Internal/ProcessConstraints/Error.purs | 6 + src/Internal/ProcessConstraints/State.purs | 6 +- .../ProcessConstraints/UnbalancedTx.purs | 30 -- src/Internal/Test/KeyDir.purs | 2 +- src/Internal/Test/UtxoDistribution.purs | 2 +- src/Internal/Types/RedeemerDatum.purs | 27 -- src/Internal/Types/TxConstraints.purs | 4 +- src/Internal/UseConstraints.purs | 379 ------------------ test/BalanceTx/Time.purs | 14 +- test/Fixtures.purs | 2 +- test/Plutip.purs | 5 +- test/Plutip/Common.purs | 2 +- test/Plutip/Contract.purs | 125 +++--- test/Plutip/Staking.purs | 49 ++- test/Utils/DrainWallets.purs | 2 +- 41 files changed, 453 insertions(+), 1195 deletions(-) delete mode 100644 src/Internal/BalanceTx/RedeemerIndex.purs delete mode 100644 src/Internal/BalanceTx/UnattachedTx.purs delete mode 100644 src/Internal/ProcessConstraints/UnbalancedTx.purs delete mode 100644 src/Internal/Types/RedeemerDatum.purs delete mode 100644 src/Internal/UseConstraints.purs diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index c3979ea61..9431ba154 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -5,6 +5,7 @@ module Ctl.Examples.AdditionalUtxos import Contract.Prelude +import Cardano.Types (Transaction) import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(ScriptHashCredential)) import Cardano.Types.PlutusScript as PlutusScript @@ -15,7 +16,7 @@ import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (Datum, PlutusData(Integer), unitRedeemer) -import Contract.ScriptLookups (ScriptLookups, UnbalancedTx) +import Contract.ScriptLookups (ScriptLookups) import Contract.ScriptLookups (datum, unspentOutputs, validator) as Lookups import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.Sync (withoutSync) @@ -23,7 +24,7 @@ import Contract.Transaction ( ScriptRef(NativeScriptRef) , TransactionInput , awaitTxConfirmed - , balanceTxWithConstraints + , balanceTx , createAdditionalUtxos , signTransaction , submit @@ -45,7 +46,7 @@ import Contract.Value (Value) import Contract.Value (lovelaceValueOf) as Value import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (fromFoldable) as Array -import Data.Map (difference, filter, keys) as Map +import Data.Map (difference, empty, filter, keys) as Map import JS.BigInt (fromInt) as BigInt import Test.QuickCheck (arbitrary) import Test.QuickCheck.Gen (randomSampleOne) @@ -63,7 +64,7 @@ contract testAdditionalUtxoOverlap = withoutSync do validator <- alwaysSucceedsScriptV2 let vhash = validatorHash validator { unbalancedTx, datum } <- payToValidator vhash - withBalancedTx unbalancedTx \balancedTx -> do + withBalancedTx unbalancedTx Map.empty mempty \balancedTx -> do balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx when testAdditionalUtxoOverlap $ awaitTxConfirmed txHash @@ -73,7 +74,7 @@ contract testAdditionalUtxoOverlap = withoutSync do spendFromValidator validator additionalUtxos datum payToValidator - :: ValidatorHash -> Contract { unbalancedTx :: UnbalancedTx, datum :: Datum } + :: ValidatorHash -> Contract { unbalancedTx :: Transaction, datum :: Datum } payToValidator vhash = do scriptRef <- liftEffect (NativeScriptRef <$> randomSampleOne arbitrary) let @@ -128,7 +129,7 @@ spendFromValidator validator additionalUtxos datum = do BalancerConstraints.mustUseAdditionalUtxos additionalUtxos unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTxWithConstraints unbalancedTx balancerConstraints + balancedTx <- balanceTx unbalancedTx Map.empty balancerConstraints balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index ec09ded57..5d597b47b 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -35,7 +35,7 @@ import Contract.Transaction ( TransactionHash , TransactionInput , awaitTxConfirmed - , balanceTxWithConstraints + , balanceTx , signTransaction , submit ) @@ -56,7 +56,7 @@ import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) import Ctl.Examples.Helpers (mkAssetName) as Helpers import Data.Array (head) import Data.Array (sort) as Array -import Data.Map (fromFoldable, keys, member) as Map +import Data.Map (empty, fromFoldable, keys, member) as Map import Data.Set (findMin) as Set import JS.BigInt as BigInt @@ -178,7 +178,7 @@ contract (ContractParams p) = do void $ runChecks checks $ lift do unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTxWithConstraints unbalancedTx balanceTxConstraints + balancedTx <- balanceTx unbalancedTx Map.empty balanceTxConstraints balancedSignedTx <- (withKeyWallet p.bobKeyWallet <<< signTransaction) diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 5942b72a1..555335212 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -16,7 +16,7 @@ import Contract.Transaction ( _body , _outputs , awaitTxConfirmed - , balanceTxWithConstraints + , balanceTx , signTransaction , submit ) @@ -28,6 +28,7 @@ import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds import Data.Array (fold, length, replicate, take, zip) import Data.Lens ((^.)) +import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Tuple (Tuple(Tuple)) import JS.BigInt (fromInt) as BigInt @@ -64,7 +65,7 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = lookups :: Lookups.ScriptLookups lookups = mempty unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTxWithConstraints unbalancedTx + balancedTx <- balanceTx unbalancedTx Map.empty -- just to check that attaching datums works ( mustSendChangeWithDatum $ OutputDatum $ Integer $ BigInt.fromInt 1000 diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index 776038953..aa8b09b52 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -63,6 +63,7 @@ import Contract.Wallet import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) import Data.Lens (_1, _2, view, (%~)) +import Data.Map as Map import Effect.Exception (throw) type ContractParams = @@ -159,7 +160,7 @@ mkContract p = do lookups = Lookups.plutusMintingPolicy p.mintingPolicy unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx + balancedTx <- balanceTx unbalancedTx Map.empty mempty balancedSignedTx <- signTransaction balancedTx txId <- submit balancedSignedTx diff --git a/examples/KeyWallet/SignMultiple.purs b/examples/KeyWallet/SignMultiple.purs index 6c944cbde..73ed83292 100644 --- a/examples/KeyWallet/SignMultiple.purs +++ b/examples/KeyWallet/SignMultiple.purs @@ -19,6 +19,7 @@ import Contract.Value (lovelaceValueOf) as Value import Control.Monad.Reader (asks) import Ctl.Examples.KeyWallet.Internal.Pkh2PkhContract (runKeyWalletContract_) import Data.Map (Map) +import Data.Map as Map import Data.Newtype (unwrap) import Data.Set (Set) import Data.UInt (UInt) @@ -45,11 +46,21 @@ main = runKeyWalletContract_ \pkh lovelace unlock -> do unbalancedTx0 <- mkUnbalancedTx lookups constraints unbalancedTx1 <- mkUnbalancedTx lookups constraints - txIds <- withBalancedTxs [ unbalancedTx0, unbalancedTx1 ] $ \balancedTxs -> do - locked <- getLockedInputs - logInfo' $ "Locked inputs inside bracket (should be nonempty): " - <> show locked - traverse (submitAndLog <=< signTransaction) balancedTxs + txIds <- + withBalancedTxs + [ { transaction: unbalancedTx0 + , extraUtxos: Map.empty + , balancerConstraints: mempty + } + , { transaction: unbalancedTx1 + , extraUtxos: Map.empty + , balancerConstraints: mempty + } + ] $ \balancedTxs -> do + locked <- getLockedInputs + logInfo' $ "Locked inputs inside bracket (should be nonempty): " + <> show locked + traverse (submitAndLog <=< signTransaction) balancedTxs locked <- getLockedInputs logInfo' $ "Locked inputs after bracket (should be empty): " <> show locked diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 0ed28bc98..72af40ca7 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -12,10 +12,12 @@ module Ctl.Examples.OneShotMinting import Contract.Prelude +import Cardano.Types (Coin, TransactionHash, UtxoMap, _body, _fee) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript +import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -27,6 +29,7 @@ import Contract.Monad , runContract ) import Contract.PlutusData (PlutusData, toData) +import Contract.ScriptLookups (ScriptLookups) import Contract.ScriptLookups as Lookups import Contract.Scripts (PlutusScript, applyArgs) import Contract.Test.Assert @@ -35,23 +38,25 @@ import Contract.Test.Assert , checkTokenGainInWallet' , runChecks ) -import Contract.TextEnvelope - ( decodeTextEnvelope - , plutusScriptFromEnvelope - ) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionInput , awaitTxConfirmed - , submitTxFromConstraintsReturningFee + , balanceTx + , signTransaction + , submit ) +import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints as Constraints +import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (AssetName, ScriptHash) import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mkAssetName) as Helpers import Data.Array (head, singleton) as Array -import Data.Map (toUnfoldable) as Map +import Data.Lens (view) +import Data.Map (empty, toUnfoldable) as Map import Effect.Exception (error, throw) import JS.BigInt (BigInt) @@ -107,12 +112,29 @@ mkContractWithAssertions exampleName mkMintingPolicy = do let checks = mkChecks (cs /\ tn /\ one) void $ runChecks checks $ lift do { txHash, txFinalFee } <- - submitTxFromConstraintsReturningFee lookups constraints + submitTxFromConstraintsReturningFee lookups constraints Map.empty mempty logInfo' $ "Tx ID: " <> show txHash awaitTxConfirmed txHash logInfo' "Tx submitted successfully!" pure { txFinalFee: BigNum.toBigInt $ unwrap txFinalFee } +submitTxFromConstraintsReturningFee + :: ScriptLookups + -> TxConstraints + -> UtxoMap + -> BalanceTxConstraintsBuilder + -> Contract { txHash :: TransactionHash, txFinalFee :: Coin } +submitTxFromConstraintsReturningFee + lookups + constraints + extraUtxos + balancerConstraints = do + unbalancedTx <- mkUnbalancedTx lookups constraints + balancedTx <- balanceTx unbalancedTx extraUtxos balancerConstraints + balancedSignedTx <- signTransaction balancedTx + txHash <- submit balancedSignedTx + pure { txHash, txFinalFee: view (_body <<< _fee) balancedSignedTx } + oneShotMintingPolicyScript :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScript txInput = do script <- liftMaybe (error "Error decoding oneShotMinting") do diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index cf75d955b..c01672101 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -42,7 +42,7 @@ import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (elem, head) as Array import Data.Lens.Getter ((^.)) -import Data.Map (member, toUnfoldable) as Map +import Data.Map (empty, member, toUnfoldable) as Map main :: Effect Unit main = example testnetNamiConfig @@ -76,7 +76,8 @@ contract = do void $ runChecks checks $ lift do unbalancedTx <- mkUnbalancedTx lookups constraints - balancedSignedTx <- signTransaction =<< balanceTx unbalancedTx + balancedSignedTx <- signTransaction =<< balanceTx unbalancedTx Map.empty + mempty txHash <- submit balancedSignedTx logInfo' $ "Tx ID: " <> show txHash awaitTxConfirmed txHash diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 2d5ddc3de..1f371a856 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -38,6 +38,7 @@ import Contract.Wallet import Control.Monad.Reader (asks) import Data.Array (head) import Data.Map (Map, filter) +import Data.Map as Map import Data.Set (Set) import Data.UInt (UInt) import Effect.Ref as Ref @@ -75,11 +76,21 @@ contract = do unbalancedTx0 <- mkUnbalancedTx lookups constraints unbalancedTx1 <- mkUnbalancedTx lookups constraints - txIds <- withBalancedTxs [ unbalancedTx0, unbalancedTx1 ] $ \balancedTxs -> do - locked <- getLockedInputs - logInfo' $ "Locked inputs inside bracket (should be nonempty): " - <> show locked - traverse (submitAndLog <=< signTransaction) balancedTxs + txIds <- + withBalancedTxs + [ { transaction: unbalancedTx0 + , extraUtxos: Map.empty + , balancerConstraints: mempty + } + , { transaction: unbalancedTx1 + , extraUtxos: Map.empty + , balancerConstraints: mempty + } + ] $ \balancedTxs -> do + locked <- getLockedInputs + logInfo' $ "Locked inputs inside bracket (should be nonempty): " + <> show locked + traverse (submitAndLog <=< signTransaction) balancedTxs locked <- getLockedInputs logInfo' $ "Locked inputs after bracket (should be empty): " <> show locked diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index 7a4c53a0c..f923869ea 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -21,7 +21,7 @@ import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ScriptLookups as Lookups import Contract.Transaction ( awaitTxConfirmed - , balanceTxWithConstraints + , balanceTx , createAdditionalUtxos , signTransaction , submit @@ -33,6 +33,7 @@ import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes) import Data.Array (head) +import Data.Map as Map main :: Effect Unit main = example testnetNamiConfig @@ -55,7 +56,7 @@ contract = do unbalancedTx0 <- mkUnbalancedTx lookups0 constraints - withBalancedTx unbalancedTx0 \balancedTx0 -> do + withBalancedTx unbalancedTx0 Map.empty mempty \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 additionalUtxos <- createAdditionalUtxos balancedSignedTx0 @@ -70,7 +71,7 @@ contract = do BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos unbalancedTx1 <- mkUnbalancedTx lookups1 constraints - balancedTx1 <- balanceTxWithConstraints unbalancedTx1 balanceTxConstraints + balancedTx1 <- balanceTx unbalancedTx1 Map.empty balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 txId0 <- submit balancedSignedTx0 diff --git a/packages.dhall b/packages.dhall index 459932df5..a7021ff19 100644 --- a/packages.dhall +++ b/packages.dhall @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v1.0.1" + , version = "40d9468a4712ad2bf57ebede19fae92208f082a0" } , cardano-message-signing = { dependencies = diff --git a/spago.dhall b/spago.dhall index 3fa172ac8..c1d183644 100644 --- a/spago.dhall +++ b/spago.dhall @@ -110,5 +110,6 @@ You can edit this file as you like. , "templates/ctl-scaffold/src/**/*.purs" , "templates/ctl-scaffold/test/**/*.purs" , "templates/ctl-scaffold/exe/**/*.purs" + , "../purescript-cardano-transaction-builder/src/**/*.purs" ] } diff --git a/src/Contract/AuxiliaryData.purs b/src/Contract/AuxiliaryData.purs index 9f98626b2..3edf6ae83 100644 --- a/src/Contract/AuxiliaryData.purs +++ b/src/Contract/AuxiliaryData.purs @@ -8,73 +8,51 @@ module Contract.AuxiliaryData import Prelude import Cardano.Types - ( AuxiliaryData(AuxiliaryData) - , AuxiliaryDataHash + ( AuxiliaryData , GeneralTransactionMetadata , Transaction + , _auxiliaryData + , _auxiliaryDataHash + , _body ) import Cardano.Types.AuxiliaryData (hashAuxiliaryData) -import Ctl.Internal.Lens (_auxiliaryData, _auxiliaryDataHash, _body) as Tx import Ctl.Internal.Metadata.MetadataType ( class MetadataType , toGeneralTxMetadata ) -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) -import Data.Lens (lens', (.~), (?~)) +import Data.Lens ((.~), (?~)) import Data.Lens.Getter (view) import Data.Lens.Iso.Newtype (_Newtype) import Data.Lens.Record (prop) -import Data.Lens.Types (Lens') import Data.Maybe (Maybe(Just), fromMaybe) -import Data.Tuple (Tuple(Tuple)) import Type.Proxy (Proxy(Proxy)) setAuxiliaryData - :: UnbalancedTx + :: Transaction -> AuxiliaryData - -> UnbalancedTx + -> Transaction setAuxiliaryData tx auxData = - let - auxDataHash = hashAuxiliaryData auxData - in - tx # _auxiliaryData .~ Just auxData - # _auxiliaryDataHash ?~ auxDataHash + tx # _auxiliaryData .~ Just auxData + # _body <<< _auxiliaryDataHash ?~ hashAuxiliaryData auxData setGeneralTxMetadata - :: UnbalancedTx + :: Transaction -> GeneralTransactionMetadata - -> UnbalancedTx + -> Transaction setGeneralTxMetadata tx generalMetadata = let auxData = view _auxiliaryData tx in setAuxiliaryData tx - (fromMaybe mempty auxData # _metadata ?~ generalMetadata) + ( fromMaybe mempty auxData # + _Newtype <<< prop (Proxy :: Proxy "metadata") ?~ generalMetadata + ) setTxMetadata :: forall (m :: Type) . MetadataType m - => UnbalancedTx + => Transaction -> m - -> UnbalancedTx + -> Transaction setTxMetadata tx = setGeneralTxMetadata tx <<< toGeneralTxMetadata - --------------------------------------------------------------------------------- --- Lenses --------------------------------------------------------------------------------- - -_transaction :: Lens' UnbalancedTx Transaction -_transaction = _Newtype <<< prop (Proxy :: Proxy "transaction") - -_auxiliaryData :: Lens' UnbalancedTx (Maybe AuxiliaryData) -_auxiliaryData = - _Newtype <<< prop (Proxy :: Proxy "transaction") <<< Tx._auxiliaryData - -_auxiliaryDataHash :: Lens' UnbalancedTx (Maybe AuxiliaryDataHash) -_auxiliaryDataHash = - _transaction <<< Tx._body <<< Tx._auxiliaryDataHash - -_metadata :: Lens' AuxiliaryData (Maybe GeneralTransactionMetadata) -_metadata = lens' \(AuxiliaryData rec@{ metadata }) -> - Tuple metadata \md -> AuxiliaryData rec { metadata = md } diff --git a/src/Contract/Constraints.purs b/src/Contract/Constraints.purs index c7b2dbc3f..d9c7cd73e 100644 --- a/src/Contract/Constraints.purs +++ b/src/Contract/Constraints.purs @@ -3,21 +3,24 @@ module Contract.Constraints where import Prelude import Cardano.Types (Slot) +import Cardano.Types.AssetName (AssetName) import Cardano.Types.Certificate (Certificate) import Cardano.Types.Coin (Coin) import Cardano.Types.Epoch (Epoch) +import Cardano.Types.Int as Int import Cardano.Types.NativeScript (NativeScript) import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash) import Cardano.Types.PlutusData (PlutusData) import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PoolParams (PoolParams) import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) +import Cardano.Types.RedeemerDatum (RedeemerDatum) +import Cardano.Types.ScriptHash (ScriptHash) import Cardano.Types.StakeCredential (StakeCredential) import Cardano.Types.StakePubKeyHash (StakePubKeyHash) import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionOutput (TransactionOutput) import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) -import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) import Data.Generic.Rep (class Generic) import Data.Maybe (Maybe) import Data.Show.Generic (genericShow) @@ -26,11 +29,12 @@ type Constraints = Array Constraint -- TODO: consider using Maybe for witnesses data Constraint - = SpendOutput TransactionUnspentOutput OutputWitness - | PayTo TransactionOutput + = SpendOutput TransactionUnspentOutput (Maybe OutputWitness) + | Pay TransactionOutput + | MintAsset ScriptHash AssetName Int.Int CredentialWitness | RegisterStake StakeCredential - | IssueCertificate Certificate CredentialWitness - | WithdrawStake StakeCredential Coin CredentialWitness + | IssueCertificate Certificate (Maybe CredentialWitness) + | WithdrawStake StakeCredential Coin (Maybe CredentialWitness) | RequireSignature PaymentPubKeyHash | RegisterPool PoolParams | RetirePool PoolPubKeyHash Epoch @@ -47,8 +51,7 @@ instance Show Constraint where -- | output. It must correspond to a `TransactionUnspentOutput` address' -- | payment credential to unlock it. data OutputWitness - = PubKeyOutput - | NativeScriptOutput (ScriptWitness NativeScript) + = NativeScriptOutput (ScriptWitness NativeScript) | PlutusScriptOutput (ScriptWitness PlutusScript) RedeemerDatum (Maybe DatumWitness) @@ -66,8 +69,7 @@ instance Show OutputWitness where -- | Unlike `OutputWitness`, it does not include a `DatumWitness`, because -- | minting policies and stake scripts do not have a datum. data CredentialWitness - = PubKeyCredential - | NativeScriptCredential (ScriptWitness NativeScript) + = NativeScriptCredential (ScriptWitness NativeScript) | PlutusScriptCredential (ScriptWitness PlutusScript) RedeemerDatum derive instance Generic CredentialWitness _ diff --git a/src/Contract/PlutusData.purs b/src/Contract/PlutusData.purs index f94fb4395..3ba133791 100644 --- a/src/Contract/PlutusData.purs +++ b/src/Contract/PlutusData.purs @@ -76,12 +76,12 @@ import Cardano.Types.OutputDatum ) as X import Cardano.Types.PlutusData (PlutusData) import Cardano.Types.PlutusData as Datum +import Cardano.Types.RedeemerDatum (RedeemerDatum) +import Cardano.Types.RedeemerDatum (RedeemerDatum(RedeemerDatum)) as X +import Cardano.Types.RedeemerDatum as Redeemer import Contract.Monad (Contract) import Control.Parallel (parTraverse) import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) -import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum(RedeemerDatum)) as X -import Ctl.Internal.Types.RedeemerDatum as Redeemer import Data.Either (Either(Left, Right), hush) import Data.Map (Map) import Data.Map as Map diff --git a/src/Contract/ScriptLookups.purs b/src/Contract/ScriptLookups.purs index 93fac750d..08a7ff7cc 100644 --- a/src/Contract/ScriptLookups.purs +++ b/src/Contract/ScriptLookups.purs @@ -2,7 +2,6 @@ -- | transaction. module Contract.ScriptLookups (module X) where -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X import Ctl.Internal.Types.ScriptLookups ( ScriptLookups(ScriptLookups) , datum diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 9018e192a..003097e67 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -3,10 +3,7 @@ module Contract.Transaction ( balanceTx , balanceTxE - , balanceTxWithConstraints - , balanceTxWithConstraintsE , balanceTxs - , balanceTxsWithConstraints , createAdditionalUtxos , getTxMetadata , module BalanceTxError @@ -14,18 +11,21 @@ module Contract.Transaction , submit , submitE , submitTxFromConstraints - , submitTxFromConstraintsReturningFee , withBalancedTx - , withBalancedTxWithConstraints , withBalancedTxs - , withBalancedTxsWithConstraints , lookupTxHash , mkPoolPubKeyHash , hashTransaction + , buildTx ) where import Prelude +import Cardano.Transaction.Builder + ( TransactionBuilderStep + , buildTransaction + , explainTxBuildError + ) import Cardano.Types ( Bech32String , Coin @@ -37,6 +37,9 @@ import Cardano.Types , TransactionOutput , TransactionUnspentOutput(TransactionUnspentOutput) , UtxoMap + , _body + , _fee + , _outputs ) import Cardano.Types ( DataHash(DataHash) @@ -86,7 +89,6 @@ import Ctl.Internal.BalanceTx.Error , Expected(Expected) , explainBalanceTxError ) as BalanceTxError -import Ctl.Internal.BalanceTx.UnattachedTx (UnindexedTx) import Ctl.Internal.Contract.AwaitTxConfirmed ( awaitTxConfirmed , awaitTxConfirmedWithTimeout @@ -139,8 +141,6 @@ import Ctl.Internal.Lens , _withdrawals , _witnessSet ) as X -import Ctl.Internal.Lens (_body, _fee, _outputs) -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) import Ctl.Internal.Service.Error (ClientError) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.TxConstraints (TxConstraints) @@ -172,8 +172,21 @@ import Prim.Coerce (class Coercible) import Prim.TypeError (class Warn, Text) import Safe.Coerce (coerce) +buildTx + :: Array TransactionBuilderStep + -> Contract Transaction +buildTx steps = do + id <- asks _.networkId + let + eiRes = buildTransaction id steps + case eiRes of + Left err -> do + throwError (error $ explainTxBuildError err) + Right res -> pure res + hashTransaction - :: Warn (Text "Deprecated: Validator. Use Cardano.Types.PlutusData.hash") + :: Warn + (Text "Deprecated: hashTransaction. Use Cardano.Types.Transaction.hash") => Transaction -> TransactionHash hashTransaction = Transaction.hash @@ -251,19 +264,13 @@ withSingleTransaction prepare extract utx action = -- | in any other context. -- | After the function completes, the locks will be removed. -- | Errors will be thrown. -withBalancedTxsWithConstraints - :: forall (a :: Type) - . Array (UnbalancedTx /\ BalanceTxConstraintsBuilder) - -> (Array Transaction -> Contract a) - -> Contract a -withBalancedTxsWithConstraints = - withTransactions balanceTxsWithConstraints identity - --- | Same as `withBalancedTxsWithConstraints`, but uses the default balancer --- | constraints. withBalancedTxs :: forall (a :: Type) - . Array UnbalancedTx + . Array + { transaction :: Transaction + , extraUtxos :: UtxoMap + , balancerConstraints :: BalanceTxConstraintsBuilder + } -> (Array Transaction -> Contract a) -> Contract a withBalancedTxs = withTransactions balanceTxs identity @@ -274,78 +281,42 @@ withBalancedTxs = withTransactions balanceTxs identity -- | used in any other context. -- | After the function completes, the locks will be removed. -- | Errors will be thrown. -withBalancedTxWithConstraints - :: forall (a :: Type) - . UnbalancedTx - -> BalanceTxConstraintsBuilder - -> (Transaction -> Contract a) - -> Contract a -withBalancedTxWithConstraints unbalancedTx = - withSingleTransaction balanceAndLockWithConstraints identity - <<< Tuple unbalancedTx - --- | Same as `withBalancedTxWithConstraints`, but uses the default balancer --- | constraints. withBalancedTx :: forall (a :: Type) - . UnbalancedTx + . Transaction + -> UtxoMap + -> BalanceTxConstraintsBuilder -> (Transaction -> Contract a) -> Contract a -withBalancedTx = withSingleTransaction balanceAndLock identity +withBalancedTx tx extraUtxos balancerConstraints = + withSingleTransaction + ( \transaction -> balanceAndLock + { transaction, extraUtxos, balancerConstraints } + ) + identity + tx -unUnbalancedTx - :: UnbalancedTx -> UnindexedTx /\ Map TransactionInput TransactionOutput -unUnbalancedTx - ( UnbalancedTx - { transaction - , redeemers - , usedUtxos - } - ) = - { transaction, redeemers } /\ usedUtxos - --- | Attempts to balance an `UnbalancedTx` using the specified --- | balancer constraints. --- | --- | `balanceTxWithConstraints` is a throwing variant. -balanceTxWithConstraintsE - :: UnbalancedTx +-- | A variant of `balanceTx` that returns a balancer error value. +balanceTxE + :: Transaction + -> UtxoMap -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError.BalanceTxError Transaction) -balanceTxWithConstraintsE tx = - let - tx' /\ ix = unUnbalancedTx tx - in - B.balanceTxWithConstraints tx' ix +balanceTxE tx utxos = B.balanceTxWithConstraints tx utxos --- | Attempts to balance an `UnbalancedTx` using the specified --- | balancer constraints. +-- | Balance a single transaction. +-- | +-- | `balanceTxE` is a non-throwing version of this function. -- | --- | 'Throwing' variant of `balanceTxWithConstraintsE`. -balanceTxWithConstraints - :: UnbalancedTx +-- | Use `balanceTxs` to balance multiple transactions and prevent them from +-- | using the same input UTxOs. +balanceTx + :: Transaction + -> UtxoMap -> BalanceTxConstraintsBuilder -> Contract Transaction -balanceTxWithConstraints tx bcb = do - result <- balanceTxWithConstraintsE tx bcb - case result of - Left err -> throwError $ error $ BalanceTxError.explainBalanceTxError err - Right ftx -> pure ftx - --- | Balance a transaction without providing balancer constraints. --- | --- | `balanceTx` is a throwing variant. -balanceTxE - :: UnbalancedTx - -> Contract (Either BalanceTxError.BalanceTxError Transaction) -balanceTxE = flip balanceTxWithConstraintsE mempty - --- | Balance a transaction without providing balancer constraints. --- | --- | `balanceTxE` is a non-throwing version of this function. -balanceTx :: UnbalancedTx -> Contract Transaction -balanceTx utx = do - result <- balanceTxE utx +balanceTx utx utxos constraints = do + result <- balanceTxE utx utxos constraints case result of Left err -> throwError $ error $ BalanceTxError.explainBalanceTxError err Right ftx -> pure ftx @@ -353,45 +324,33 @@ balanceTx utx = do -- | Balances each transaction using specified balancer constraint sets and -- | locks the used inputs so that they cannot be reused by subsequent -- | transactions. -balanceTxsWithConstraints - :: forall (t :: Type -> Type) - . Traversable t - => t (UnbalancedTx /\ BalanceTxConstraintsBuilder) - -> Contract (t Transaction) -balanceTxsWithConstraints unbalancedTxs = - unlockAllOnError $ traverse balanceAndLockWithConstraints unbalancedTxs +balanceTxs + :: Array + { transaction :: Transaction + , extraUtxos :: UtxoMap + , balancerConstraints :: BalanceTxConstraintsBuilder + } + -> Contract (Array Transaction) +balanceTxs unbalancedTxs = + unlockAllOnError $ traverse balanceAndLock unbalancedTxs where unlockAllOnError :: forall (a :: Type). Contract a -> Contract a unlockAllOnError f = catchError f $ \e -> do for_ unbalancedTxs $ - withUsedTxOuts <<< unlockTransactionInputs <<< uutxToTx <<< fst + withUsedTxOuts <<< unlockTransactionInputs <<< _.transaction throwError e - uutxToTx :: UnbalancedTx -> Transaction - uutxToTx = _.transaction <<< unwrap - --- | Same as `balanceTxsWithConstraints`, but uses the default balancer --- | constraints. -balanceTxs - :: forall (t :: Type -> Type) - . Traversable t - => t UnbalancedTx - -> Contract (t Transaction) -balanceTxs = balanceTxsWithConstraints <<< map (flip Tuple mempty) - -balanceAndLockWithConstraints - :: UnbalancedTx /\ BalanceTxConstraintsBuilder +balanceAndLock + :: { transaction :: Transaction + , extraUtxos :: UtxoMap + , balancerConstraints :: BalanceTxConstraintsBuilder + } -> Contract Transaction -balanceAndLockWithConstraints (unbalancedTx /\ constraints) = do - balancedTx <- balanceTxWithConstraints unbalancedTx constraints +balanceAndLock { transaction, extraUtxos, balancerConstraints } = do + balancedTx <- balanceTx transaction extraUtxos balancerConstraints void $ withUsedTxOuts $ lockTransactionInputs balancedTx pure balancedTx -balanceAndLock - :: UnbalancedTx - -> Contract Transaction -balanceAndLock = balanceAndLockWithConstraints <<< flip Tuple mempty - -- | Fetch transaction metadata. -- | Returns `Right` when the transaction exists and metadata was non-empty getTxMetadata @@ -423,23 +382,15 @@ createAdditionalUtxos tx = do pure $ txOutputs # foldl (\utxo txOut -> Map.insert (txIn $ length utxo) txOut utxo) Map.empty -submitTxFromConstraintsReturningFee - :: ScriptLookups - -> TxConstraints - -> Contract { txHash :: TransactionHash, txFinalFee :: Coin } -submitTxFromConstraintsReturningFee lookups constraints = do - unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx - balancedSignedTx <- signTransaction balancedTx - txHash <- submit balancedSignedTx - pure { txHash, txFinalFee: view (_body <<< _fee) balancedSignedTx } - submitTxFromConstraints :: ScriptLookups -> TxConstraints -> Contract TransactionHash -submitTxFromConstraints lookups constraints = - _.txHash <$> submitTxFromConstraintsReturningFee lookups constraints +submitTxFromConstraints lookups constraints = do + unbalancedTx <- mkUnbalancedTx lookups constraints + balancedTx <- balanceTx unbalancedTx Map.empty mempty + balancedSignedTx <- signTransaction balancedTx + submit balancedSignedTx lookupTxHash :: TransactionHash -> UtxoMap -> Array TransactionUnspentOutput diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index 4d13f7fb4..fe88a4eb4 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -3,11 +3,11 @@ module Contract.UnbalancedTx ( mkUnbalancedTx , mkUnbalancedTxE - , module X ) where import Prelude +import Cardano.Types (Transaction) import Contract.Monad (Contract) import Control.Monad.Error.Class (throwError) import Ctl.Internal.ProcessConstraints as PC @@ -15,35 +15,6 @@ import Ctl.Internal.ProcessConstraints.Error ( MkUnbalancedTxError , explainMkUnbalancedTxError ) -import Ctl.Internal.ProcessConstraints.Error - ( MkUnbalancedTxError - ( CannotFindDatum - , CannotQueryDatum - , CannotConvertPOSIXTimeRange - , CannotSolveTimeConstraints - , CannotGetMintingPolicyScriptIndex - , CannotGetValidatorHashFromAddress - , CannotMakeValue - , CannotWithdrawRewardsPubKey - , CannotWithdrawRewardsPlutusScript - , CannotWithdrawRewardsNativeScript - , DatumNotFound - , DatumWrongHash - , MintingPolicyHashNotCurrencySymbol - , MintingPolicyNotFound - , OwnPubKeyAndStakeKeyMissing - , TxOutRefNotFound - , TxOutRefWrongType - , WrongRefScriptHash - , ValidatorHashNotFound - , CannotSatisfyAny - , ExpectedPlutusScriptGotNativeScript - , CannotMintZero - ) - , explainMkUnbalancedTxError - ) as X -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx(UnbalancedTx)) as X import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.TxConstraints (TxConstraints) import Data.Either (Either(Left, Right)) @@ -58,11 +29,11 @@ import Effect.Exception (error) mkUnbalancedTxE :: ScriptLookups -> TxConstraints - -> Contract (Either MkUnbalancedTxError UnbalancedTx) + -> Contract (Either MkUnbalancedTxError Transaction) mkUnbalancedTxE = PC.mkUnbalancedTxImpl -- | As `mkUnbalancedTxE`, but 'throwing'. -mkUnbalancedTx :: ScriptLookups -> TxConstraints -> Contract UnbalancedTx +mkUnbalancedTx :: ScriptLookups -> TxConstraints -> Contract Transaction mkUnbalancedTx lookups constraints = mkUnbalancedTxE lookups constraints >>= case _ of Left err -> throwError $ error $ explainMkUnbalancedTxError err diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 81725d976..0eaeb3aef 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -4,6 +4,11 @@ module Ctl.Internal.BalanceTx import Prelude +import Cardano.Transaction.Edit + ( attachRedeemers + , editTransaction + , mkRedeemersContext + ) import Cardano.Types ( AssetClass(AssetClass) , Certificate(StakeDeregistration, StakeRegistration) @@ -22,10 +27,11 @@ import Cardano.Types.Coin as Coin import Cardano.Types.OutputDatum (OutputDatum(OutputDatum)) import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutputs +import Cardano.Types.TransactionWitnessSet (_redeemers) import Cardano.Types.UtxoMap (pprintUtxoMap) import Cardano.Types.Value (getMultiAsset, mkValue, pprintValue) import Cardano.Types.Value as Value -import Contract.Log (logWarn') +import Contract.Log (logInfo', logWarn') import Control.Monad.Except (class MonadError) import Control.Monad.Except.Trans (except, runExceptT) import Control.Monad.Logger.Class (info) as Logger @@ -70,11 +76,6 @@ import Ctl.Internal.BalanceTx.ExUnitsAndMinFee ( evalExUnitsAndMinFee , finalizeTransaction ) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( attachIndexedRedeemers - , indexRedeemers - , mkRedeemersContext - ) import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncBackendWithWallet) import Ctl.Internal.BalanceTx.Types ( BalanceTxM @@ -85,12 +86,6 @@ import Ctl.Internal.BalanceTx.Types , liftEitherContract , withBalanceTxConstraints ) -import Ctl.Internal.BalanceTx.UnattachedTx - ( EvaluatedTx - , UnindexedTx - , _transaction - , indexTx - ) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex, buildUtxoIndex) import Ctl.Internal.Contract (getProtocolParameters) @@ -173,7 +168,7 @@ import Partial.Unsafe (unsafePartial) -- | Balances an unbalanced transaction using the specified balancer -- | constraints. balanceTxWithConstraints - :: UnindexedTx + :: Transaction -> Map TransactionInput TransactionOutput -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError Transaction) @@ -185,8 +180,7 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do let depositValuePerCert = BigNum.toBigInt $ unwrap (unwrap pparams).stakeAddressDeposit - certsFee = getStakingBalance (transaction.transaction) - depositValuePerCert + certsFee = getStakingBalance transaction depositValuePerCert changeAddress <- getChangeAddress @@ -203,7 +197,10 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do >>> _.syncBackendWithWallet >>> _.beforeBalancing ) - syncBackendWithWallet + do + logInfo' "balanceTxWithConstraints: syncBackendWithWallet" + syncBackendWithWallet + logInfo' "balanceTxWithConstraints: Wallet.getWalletUtxos" note CouldNotGetUtxos <$> do Wallet.getWalletUtxos -- Use UTxOs from source addresses @@ -220,7 +217,7 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do >>> map (foldr Map.union Map.empty) -- merge all utxos into one map unbalancedCollTx <- transactionWithNetworkId >>= - if Array.null (transaction # _.redeemers) + if Array.null (transaction ^. _witnessSet <<< _redeemers) -- Don't set collateral if tx doesn't contain phase-2 scripts: then pure else setTransactionCollateral changeAddress @@ -239,19 +236,10 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do selectionStrategy <- asksConstraints Constraints._selectionStrategy - -- Reindex redeemers and update transaction - reindexedRedeemers <- liftEither $ lmap ReindexRedeemersError $ - indexRedeemers (mkRedeemersContext unbalancedCollTx) transaction.redeemers - let - reindexedTransaction = transaction - { transaction = attachIndexedRedeemers reindexedRedeemers - unbalancedCollTx - } - -- Balance and finalize the transaction: runBalancer { strategy: selectionStrategy - , transaction: reindexedTransaction + , transaction: unbalancedCollTx , changeAddress , changeDatum: changeDatum' , allUtxos @@ -266,8 +254,8 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do transactionWithNetworkId :: BalanceTxM Transaction transactionWithNetworkId = do networkId <- maybe askNetworkId pure - (transaction ^. _transaction <<< _body <<< _networkId) - pure (transaction.transaction # _body <<< _networkId ?~ networkId) + (transaction ^. _body <<< _networkId) + pure (transaction # _body <<< _networkId ?~ networkId) setTransactionCollateral :: Address -> Transaction -> BalanceTxM Transaction setTransactionCollateral changeAddr transaction = do @@ -309,7 +297,7 @@ setTransactionCollateral changeAddr transaction = do type BalancerParams = { strategy :: SelectionStrategy - , transaction :: UnindexedTx + , transaction :: Transaction , changeAddress :: Address , changeDatum :: Maybe OutputDatum , allUtxos :: UtxoMap @@ -317,6 +305,7 @@ type BalancerParams = , certsFee :: BigInt -- can be negative (deregistration) } +-- TODO: remove the parameter type BalancerState tx = { transaction :: tx , leftoverUtxos :: UtxoIndex @@ -325,16 +314,16 @@ type BalancerState tx = } initBalancerState - :: UnindexedTx + :: Transaction -> UtxoMap - -> BalancerState UnindexedTx + -> BalancerState Transaction initBalancerState transaction = buildUtxoIndex >>> { transaction, leftoverUtxos: _, changeOutputs: mempty, minFee: Coin.zero } data BalancerStep - = PrebalanceTx (BalancerState UnindexedTx) - | BalanceChangeAndMinFee (BalancerState UnindexedTx) + = PrebalanceTx (BalancerState Transaction) + | BalanceChangeAndMinFee (BalancerState Transaction) runBalancer :: BalancerParams -> BalanceTxM Transaction runBalancer p = do @@ -342,14 +331,14 @@ runBalancer p = do transaction <- addLovelacesToTransactionOutputs p.transaction mainLoop (initBalancerState transaction utxos.spendable) where - referenceInputSet = Set.fromFoldable $ p.transaction ^. _transaction <<< _body + referenceInputSet = Set.fromFoldable $ p.transaction ^. _body <<< _referenceInputs -- We check if the transaction uses a plutusv1 script, so that we can filter -- out utxos which use plutusv2 features if so. txHasPlutusV1 :: Boolean txHasPlutusV1 = - case p.transaction ^. _transaction <<< _witnessSet <<< _plutusScripts of + case p.transaction ^. _witnessSet <<< _plutusScripts of [] -> false scripts -> flip Array.any scripts case _ of PlutusScript (_ /\ PlutusV1) -> true @@ -402,7 +391,7 @@ runBalancer p = do } (Map.toUnfoldable p.utxos :: Array _) - mainLoop :: BalancerState UnindexedTx -> BalanceTxM Transaction + mainLoop :: BalancerState Transaction -> BalanceTxM Transaction mainLoop = worker <<< PrebalanceTx where worker :: BalancerStep -> BalanceTxM Transaction @@ -416,15 +405,15 @@ runBalancer p = do case newMinFee <= minFee of true -> do logTransaction "Balanced transaction (Done)" p.allUtxos - evaluatedTx.transaction - if Array.null $ evaluatedTx.transaction ^. _body <<< _inputs then + evaluatedTx + if Array.null $ evaluatedTx ^. _body <<< _inputs then do selectionState <- performMultiAssetSelection p.strategy leftoverUtxos (Val one Map.empty) runNextBalancerStep $ state - { transaction = transaction # - _transaction <<< _body <<< _inputs %~ appendInputs + { transaction = flip editTransaction transaction $ + _body <<< _inputs %~ appendInputs (Array.fromFoldable $ selectedInputs selectionState) , leftoverUtxos = selectionState ^. _leftoverUtxos @@ -434,7 +423,7 @@ runBalancer p = do false -> runNextBalancerStep $ state { transaction = transaction - # _transaction <<< _body <<< _fee .~ newMinFee + # _body <<< _fee .~ newMinFee , minFee = newMinFee } @@ -444,9 +433,9 @@ runBalancer p = do -- | after generation of change, the first balancing step `PrebalanceTx` -- | is performed, otherwise we proceed to `BalanceChangeAndMinFee`. runNextBalancerStep - :: BalancerState UnindexedTx -> BalanceTxM Transaction + :: BalancerState Transaction -> BalanceTxM Transaction runNextBalancerStep state@{ transaction } = do - let txBody = transaction ^. _transaction <<< _body + let txBody = transaction ^. _body inputValue <- except $ getInputVal p.allUtxos txBody ownWalletAddresses <- asks _.ownAddresses inputValue' <- liftValue inputValue @@ -458,8 +447,7 @@ runBalancer p = do requiredValue <- except $ getRequiredValue p.certsFee p.allUtxos - $ setTxChangeOutputs changeOutputs transaction ^. _transaction <<< - _body + $ setTxChangeOutputs changeOutputs transaction ^. _body worker $ if requiredValue == mempty then BalanceChangeAndMinFee $ state @@ -470,12 +458,12 @@ runBalancer p = do -- | utxo set so that the total input value is sufficient to cover all -- | transaction outputs, including generated change and min fee. prebalanceTx - :: BalancerState UnindexedTx -> BalanceTxM (BalancerState UnindexedTx) + :: BalancerState Transaction -> BalanceTxM (BalancerState Transaction) prebalanceTx state@{ transaction, changeOutputs, leftoverUtxos } = performCoinSelection <#> \selectionState -> state { transaction = - ( transaction # - _transaction <<< _body <<< _inputs %~ + ( flip editTransaction transaction $ + _body <<< _inputs %~ appendInputs (Array.fromFoldable $ selectedInputs selectionState) ) @@ -487,8 +475,7 @@ runBalancer p = do performCoinSelection = do let txBody :: TransactionBody - txBody = setTxChangeOutputs changeOutputs transaction ^. _transaction - <<< _body + txBody = setTxChangeOutputs changeOutputs transaction ^. _body except (getRequiredValue p.certsFee p.allUtxos txBody) >>= performMultiAssetSelection p.strategy leftoverUtxos @@ -499,27 +486,25 @@ runBalancer p = do -- | since this pre-condition is sometimes required for successfull script -- | execution during transaction evaluation. evaluateTx - :: BalancerState UnindexedTx -> BalanceTxM (BalancerState EvaluatedTx) + :: BalancerState Transaction -> BalanceTxM (BalancerState Transaction) evaluateTx state@{ transaction, changeOutputs } = do let - prebalancedTx :: UnindexedTx + prebalancedTx :: Transaction prebalancedTx = setTxChangeOutputs changeOutputs transaction - indexedTx <- liftEither $ lmap ReindexRedeemersError $ indexTx - prebalancedTx - evaluatedTx /\ minFee <- evalExUnitsAndMinFee indexedTx p.allUtxos + evaluatedTx /\ minFee <- evalExUnitsAndMinFee prebalancedTx p.allUtxos pure $ state { transaction = evaluatedTx, minFee = minFee } -- | For each transaction output, if necessary, adds some number of lovelaces -- | to cover the utxo min-ada-value requirement. addLovelacesToTransactionOutputs - :: UnindexedTx -> BalanceTxM UnindexedTx + :: Transaction -> BalanceTxM Transaction addLovelacesToTransactionOutputs transaction = map ( \txOutputs -> transaction # - _transaction <<< _body <<< _outputs .~ txOutputs + _body <<< _outputs .~ txOutputs ) $ traverse addLovelacesToTransactionOutput - (transaction ^. _transaction <<< _body <<< _outputs) + (transaction ^. _body <<< _outputs) addLovelacesToTransactionOutput :: TransactionOutput -> BalanceTxM TransactionOutput @@ -546,9 +531,9 @@ appendInputs appendInputs a b = Set.toUnfoldable (Set.fromFoldable a <> Set.fromFoldable b) setTxChangeOutputs - :: Array TransactionOutput -> UnindexedTx -> UnindexedTx + :: Array TransactionOutput -> Transaction -> Transaction setTxChangeOutputs outputs tx = - tx # _transaction <<< _body <<< _outputs %~ flip append outputs + tx # _body <<< _outputs %~ flip append outputs -------------------------------------------------------------------------------- -- Making change @@ -832,7 +817,7 @@ getInputVal :: UtxoMap -> TransactionBody -> Either BalanceTxError Val getInputVal utxos txBody = foldMap (view _amount >>> Val.fromValue) <$> for (Array.fromFoldable $ txBody ^. _inputs) \oref -> - note (UtxoLookupFailedFor oref) (Map.lookup oref utxos) + note (UtxoLookupFailedFor oref utxos) (Map.lookup oref utxos) outputValue :: TransactionBody -> Val outputValue txBody = foldMap (view _amount >>> Val.fromValue) @@ -879,9 +864,9 @@ logBalancerState :: forall rest . String -> UtxoMap - -> BalancerState { transaction :: Transaction | rest } + -> BalancerState Transaction -> BalanceTxM Unit -logBalancerState message utxos { transaction: { transaction }, changeOutputs } = +logBalancerState message utxos { transaction, changeOutputs } = logTransactionWithChange message utxos (Just changeOutputs) transaction logTransaction @@ -918,8 +903,9 @@ logTransactionWithChange message utxos mChangeOutputs tx = , "Fees" `tag` BigNum.toString (unwrap (txBody ^. _fee)) ] <> outputValuesTagSet mChangeOutputs in - except (getInputVal utxos txBody) - >>= (flip Logger.info (message <> ":") <<< transactionInfo) + do + except (getInputVal utxos txBody) + >>= (flip Logger.info (message <> ":") <<< transactionInfo) liftValue :: forall a. MonadError BalanceTxError a => Val -> a Value liftValue val = liftEither $ note (NumericOverflowError $ Just val) $ diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index a46cf69b9..7b2195cf2 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -25,13 +25,14 @@ module Ctl.Internal.BalanceTx.Error import Prelude +import Cardano.AsCbor (encodeCbor) +import Cardano.Transaction.Edit (DetachedRedeemer) import Cardano.Types (Coin, Redeemer(Redeemer), Transaction) import Cardano.Types.BigNum as BigNum -import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionInput (TransactionInput(TransactionInput)) import Cardano.Types.TransactionOutput (TransactionOutput) import Cardano.Types.UtxoMap (UtxoMap, pprintUtxoMap) import Cardano.Types.Value (Value) -import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) import Ctl.Internal.Lens (_redeemers, _witnessSet) import Ctl.Internal.QueryM.Ogmios @@ -52,6 +53,7 @@ import Ctl.Internal.QueryM.Ogmios import Ctl.Internal.Types.Val (Val, pprintVal) import Data.Array (catMaybes, filter, uncons) as Array import Data.Bifunctor (bimap) +import Data.ByteArray (byteArrayToHex) import Data.Either (Either(Left, Right), either, isLeft) import Data.Foldable (find, fold, foldMap, foldl, length) import Data.FoldableWithIndex (foldMapWithIndex) @@ -59,8 +61,9 @@ import Data.Function (applyN) import Data.Generic.Rep (class Generic) import Data.Int (ceil, decimal, toNumber, toStringAs) import Data.Lens ((^.)) +import Data.Log.Tag (TagSet, tag) import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (class Newtype) +import Data.Newtype (class Newtype, unwrap) import Data.Show.Generic (genericShow) import Data.String (Pattern(Pattern)) import Data.String.CodePoints (length) as String @@ -80,8 +83,8 @@ data BalanceTxError | CollateralReturnMinAdaValueCalcError Coin TransactionOutput | ExUnitsEvaluationFailed Transaction Ogmios.TxEvaluationFailure | InsufficientUtxoBalanceToCoverAsset String - | ReindexRedeemersError UnindexedRedeemer - | UtxoLookupFailedFor TransactionInput + | ReindexRedeemersError DetachedRedeemer + | UtxoLookupFailedFor TransactionInput UtxoMap | UtxoMinAdaValueCalculationFailed | NumericOverflowError (Maybe Val) @@ -129,11 +132,12 @@ explainBalanceTxError = case _ of <> show uir <> "\nThis should be impossible: please report this as a bug to " <> bugTrackerLink - UtxoLookupFailedFor ti -> - "Could not look up UTxO for " - <> show ti - <> " from a given set of UTxOs.\n" - <> "This should be impossible: please report this as a bug to " + UtxoLookupFailedFor ti mp -> + "Could not look up UTxO " + <> pprintTagSet "for" (pprintTransactionInput ti) + <> " from a " + <> pprintTagSet "given set of UTxOs:" (pprintUtxoMap mp) + <> "\nThis should be impossible: please report this as a bug to " <> bugTrackerLink UtxoMinAdaValueCalculationFailed -> "Could not calculate min ADA for UTxO" @@ -144,6 +148,13 @@ explainBalanceTxError = case _ of prettyVal :: String -> Val -> String prettyVal str = pprintVal >>> pprintTagSet str + pprintTransactionInput :: TransactionInput -> TagSet + pprintTransactionInput (TransactionInput { transactionId, index }) = + "TransactionInput" `tag` + ( byteArrayToHex (unwrap (encodeCbor transactionId)) <> "#" <> + show (UInt.toInt index) + ) + newtype Actual = Actual Value derive instance Generic Actual _ diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index 625c43d4f..f44cc80f2 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -19,29 +19,26 @@ import Cardano.Types , TransactionWitnessSet , UtxoMap ) +import Cardano.Types.BigNum as BigNum import Cardano.Types.ScriptRef as ScriptRef import Cardano.Types.TransactionInput (TransactionInput) +import Cardano.Types.TransactionWitnessSet (_redeemers) import Control.Monad.Error.Class (throwError) import Control.Monad.Except.Trans (except) import Ctl.Internal.BalanceTx.Constraints (_additionalUtxos, _collateralUtxos) as Constraints import Ctl.Internal.BalanceTx.Error ( BalanceTxError(UtxoLookupFailedFor, ExUnitsEvaluationFailed) ) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( IndexedRedeemer - , attachRedeemers - , indexedRedeemerToRedeemer - ) import Ctl.Internal.BalanceTx.Types ( BalanceTxM , askCostModelsForLanguages , asksConstraints , liftContract ) -import Ctl.Internal.BalanceTx.UnattachedTx (EvaluatedTx, IndexedTx) import Ctl.Internal.Contract.MinFee (calculateMinFee) as Contract.MinFee import Ctl.Internal.Contract.Monad (getQueryHandle) -import Ctl.Internal.Lens (_body, _isValid, _plutusData, _witnessSet) +import Ctl.Internal.Helpers (unsafeFromJust) +import Ctl.Internal.Lens (_body, _isValid, _witnessSet) import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet , TxEvaluationFailure(AdditionalUtxoOverlap) @@ -108,24 +105,19 @@ evalTxExecutionUnits tx = do -- and the minimum fee, including the script fees. -- Returns a tuple consisting of updated `UnbalancedTx` and the minimum fee. evalExUnitsAndMinFee - :: IndexedTx + :: Transaction -> UtxoMap - -> BalanceTxM (EvaluatedTx /\ Coin) -evalExUnitsAndMinFee unattachedTx allUtxos = do - -- Reattach datums and redeemers before evaluating ex units: - let attachedTx = reattachDatumsAndFakeRedeemers unattachedTx + -> BalanceTxM (Transaction /\ Coin) +evalExUnitsAndMinFee transaction allUtxos = do -- Evaluate transaction ex units: - exUnits <- evalTxExecutionUnits attachedTx + exUnits <- evalTxExecutionUnits transaction -- Set execution units received from the server: txWithExUnits <- - case updateTxExecutionUnits unattachedTx exUnits of + case updateTxExecutionUnits transaction exUnits of Just res -> pure res Nothing - | not (attachedTx ^. _isValid) -> pure $ - unattachedTx - { redeemers = indexedRedeemerToRedeemer <$> unattachedTx.redeemers - } - _ -> throwError $ ExUnitsEvaluationFailed attachedTx + | not (transaction ^. _isValid) -> pure transaction + _ -> throwError $ ExUnitsEvaluationFailed transaction (UnparsedError "Unable to extract ExUnits from Ogmios response") -- Attach datums and redeemers, set the script integrity hash: finalizedTx <- finalizeTransaction txWithExUnits allUtxos @@ -140,18 +132,14 @@ evalExUnitsAndMinFee unattachedTx allUtxos = do -- | Attaches datums and redeemers, sets the script integrity hash, -- | for use after reindexing. finalizeTransaction - :: EvaluatedTx -> UtxoMap -> BalanceTxM Transaction + :: Transaction -> UtxoMap -> BalanceTxM Transaction finalizeTransaction tx utxos = do let - attachedTxWithExUnits :: Transaction - attachedTxWithExUnits = - reattachDatumsAndRedeemers tx - txBody :: TransactionBody - txBody = attachedTxWithExUnits ^. _body + txBody = tx ^. _body ws :: TransactionWitnessSet - ws = attachedTxWithExUnits ^. _witnessSet + ws = tx ^. _witnessSet redeemers :: Array Redeemer redeemers = (_.redeemers $ unwrap ws) @@ -170,8 +158,7 @@ finalizeTransaction tx utxos = do (costModels :: Map Language CostModel) <- askCostModelsForLanguages languages - liftEffect $ setScriptDataHash costModels redeemers datums - attachedTxWithExUnits + liftEffect $ setScriptDataHash costModels redeemers datums tx where getRefPlutusScripts :: TransactionBody -> Either BalanceTxError (Array PlutusScript) @@ -183,42 +170,35 @@ finalizeTransaction tx utxos = do in catMaybes <<< map getPlutusScript <$> for spendAndRefInputs \oref -> - note (UtxoLookupFailedFor oref) (Map.lookup oref utxos) + note (UtxoLookupFailedFor oref utxos) (Map.lookup oref utxos) getPlutusScript :: TransactionOutput -> Maybe PlutusScript getPlutusScript (TransactionOutput { scriptRef }) = ScriptRef.getPlutusScript =<< scriptRef -reattachDatumsAndFakeRedeemers :: IndexedTx -> Transaction -reattachDatumsAndFakeRedeemers - { transaction, redeemers } = - reattachDatumsAndRedeemers - { transaction, redeemers: indexedRedeemerToRedeemer <$> redeemers } - -reattachDatumsAndRedeemers :: EvaluatedTx -> Transaction -reattachDatumsAndRedeemers - ({ transaction, redeemers }) = attachRedeemers redeemers transaction - updateTxExecutionUnits - :: IndexedTx + :: Transaction -> Ogmios.TxEvaluationResult - -> Maybe EvaluatedTx -updateTxExecutionUnits tx@{ redeemers } result = - getRedeemersExUnits result redeemers <#> \redeemers' -> tx - { redeemers = redeemers' } + -> Maybe Transaction +updateTxExecutionUnits tx result = + getRedeemersExUnits result (tx ^. _witnessSet <<< _redeemers) <#> + \redeemers' -> + tx # _witnessSet <<< _redeemers .~ redeemers' getRedeemersExUnits :: Ogmios.TxEvaluationResult - -> Array IndexedRedeemer + -> Array Redeemer -> Maybe (Array Redeemer) getRedeemersExUnits (Ogmios.TxEvaluationResult result) redeemers = do for redeemers \indexedRedeemer -> do { memory, steps } <- Map.lookup { redeemerTag: (unwrap indexedRedeemer).tag - , redeemerIndex: UInt.fromInt (unwrap indexedRedeemer).index + , redeemerIndex: UInt.fromInt $ unsafeFromJust "getRedeemersExUnits" + $ BigNum.toInt + $ (unwrap indexedRedeemer).index } result - pure $ Redeemer $ (unwrap $ indexedRedeemerToRedeemer indexedRedeemer) + pure $ Redeemer $ (unwrap indexedRedeemer) { exUnits = ExUnits { mem: memory , steps: steps diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs deleted file mode 100644 index 7bcf25757..000000000 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ /dev/null @@ -1,175 +0,0 @@ --- | Redeemer indexing refers to the process of updating redeemer's `index` --- | value based on its `RedeemerPurpose` and context from the transaction. --- | Redeemer indexing is needed, because at the Tx construction stage we --- | don't know the exact indices redeemers will have after balancing. --- | For the algorithm, see `indexof` description in --- | "Combining Scripts with Their Inputs" chapter of "A Formal Specification --- | of the Cardano Ledger integrating Plutus Core" --- | https://github.com/input-output-hk/cardano-ledger/releases/latest/download/alonzo-ledger.pdf -module Ctl.Internal.BalanceTx.RedeemerIndex - ( IndexedRedeemer(IndexedRedeemer) - , RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) - , RedeemersContext - , UnindexedRedeemer(UnindexedRedeemer) - , attachIndexedRedeemers - , attachRedeemers - , indexRedeemers - , indexedRedeemerToRedeemer - , mkRedeemersContext - , unindexedRedeemerToRedeemer - ) where - -import Prelude - -import Aeson (class EncodeAeson, encodeAeson) -import Cardano.Types - ( Certificate - , Redeemer(Redeemer) - , RewardAddress - , ScriptHash - , Transaction(Transaction) - , TransactionBody(TransactionBody) - ) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.ExUnits as ExUnits -import Cardano.Types.PlutusData (PlutusData) -import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) -import Cardano.Types.TransactionInput (TransactionInput) -import Ctl.Internal.Lens (_redeemers, _witnessSet) -import Data.Array (findIndex) -import Data.Either (Either, note) -import Data.Generic.Rep (class Generic) -import Data.Lens ((.~)) -import Data.Map as Map -import Data.Maybe (Maybe, fromMaybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Set as Set -import Data.Show.Generic (genericShow) -import Data.Traversable (for) - -attachRedeemers :: Array Redeemer -> Transaction -> Transaction -attachRedeemers redeemers = - _witnessSet <<< _redeemers .~ redeemers - -attachIndexedRedeemers :: Array IndexedRedeemer -> Transaction -> Transaction -attachIndexedRedeemers = attachRedeemers <<< map indexedRedeemerToRedeemer - --- | Redeemer that hasn't yet been indexed, that tracks its purpose info --- | that is enough to find its index given a `RedeemersContext`. -newtype UnindexedRedeemer = UnindexedRedeemer - { datum :: PlutusData - , purpose :: RedeemerPurpose - } - -derive instance Generic UnindexedRedeemer _ -derive instance Newtype UnindexedRedeemer _ -derive newtype instance Eq UnindexedRedeemer -derive newtype instance Ord UnindexedRedeemer -derive newtype instance EncodeAeson UnindexedRedeemer - -instance Show UnindexedRedeemer where - show = genericShow - --- | Ignore the value that the redeemer points to -redeemerPurposeToRedeemerTag :: RedeemerPurpose -> RedeemerTag -redeemerPurposeToRedeemerTag = case _ of - ForSpend _ -> Spend - ForMint _ -> Mint - ForReward _ -> Reward - ForCert _ -> Cert - -unindexedRedeemerToRedeemer :: UnindexedRedeemer -> Redeemer -unindexedRedeemerToRedeemer (UnindexedRedeemer { datum, purpose }) = - Redeemer - { tag: redeemerPurposeToRedeemerTag purpose - , "data": datum - , index: BigNum.zero - , exUnits: ExUnits.empty - } - --- | A redeemer with an index, but without `ExUnits` -newtype IndexedRedeemer = IndexedRedeemer - { tag :: RedeemerTag - , datum :: PlutusData - , index :: Prim.Int - } - -derive instance Generic IndexedRedeemer _ -derive instance Newtype IndexedRedeemer _ -derive newtype instance Eq IndexedRedeemer -derive newtype instance EncodeAeson IndexedRedeemer - -instance Show IndexedRedeemer where - show = genericShow - --- | Sets `ExUnits` to `zero` -indexedRedeemerToRedeemer :: IndexedRedeemer -> Redeemer -indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = - Redeemer - { tag - , index: BigNum.fromInt index - , data: datum - , exUnits: ExUnits.empty - } - --- | Contains a value redeemer corresponds to, different for each possible --- | `RedeemerTag`. --- | Allows to uniquely compute redeemer index, given a `RedeemersContext` that --- | is valid for the transaction. -data RedeemerPurpose - = ForSpend TransactionInput - | ForMint ScriptHash - | ForReward RewardAddress - | ForCert Certificate - -derive instance Generic RedeemerPurpose _ -derive instance Eq RedeemerPurpose -derive instance Ord RedeemerPurpose - -instance EncodeAeson RedeemerPurpose where - encodeAeson = case _ of - ForSpend txo -> encodeAeson { tag: "ForSpend", value: encodeAeson txo } - ForMint mps -> encodeAeson { tag: "ForMint", value: encodeAeson mps } - ForReward addr -> encodeAeson { tag: "ForReward", value: encodeAeson addr } - ForCert cert -> encodeAeson { tag: "ForCert", value: encodeAeson cert } - -instance Show RedeemerPurpose where - show = genericShow - --- | Contains parts of a transaction that are important when indexing redeemers -type RedeemersContext = - { inputs :: Array TransactionInput - , mintingPolicyHashes :: Array ScriptHash - , rewardAddresses :: Array RewardAddress - , certs :: Array Certificate - } - -mkRedeemersContext :: Transaction -> RedeemersContext -mkRedeemersContext - (Transaction { body: TransactionBody { inputs, mint, withdrawals, certs } }) = - { inputs: Set.toUnfoldable $ Set.fromFoldable inputs - , mintingPolicyHashes: - Set.toUnfoldable $ Map.keys $ unwrap $ fromMaybe - (wrap Map.empty) - mint - , rewardAddresses: Set.toUnfoldable $ Map.keys $ withdrawals - , certs - } - -indexRedeemers - :: RedeemersContext - -> Array UnindexedRedeemer - -> Either UnindexedRedeemer (Array IndexedRedeemer) -indexRedeemers ctx redeemers = do - for redeemers \redeemer -> note redeemer $ indexRedeemer ctx redeemer - -indexRedeemer :: RedeemersContext -> UnindexedRedeemer -> Maybe IndexedRedeemer -indexRedeemer ctx (UnindexedRedeemer { purpose, datum }) = case purpose of - ForSpend input -> findIndex (eq input) ctx.inputs <#> \index -> - IndexedRedeemer { tag: Spend, index, datum } - ForMint mps -> findIndex (eq mps) ctx.mintingPolicyHashes <#> \index -> - IndexedRedeemer { tag: Mint, index, datum } - ForReward addr -> findIndex (eq addr) ctx.rewardAddresses <#> \index -> - IndexedRedeemer { tag: Reward, index, datum } - ForCert cert -> findIndex (eq cert) ctx.certs <#> \index -> - IndexedRedeemer { tag: Cert, index, datum } diff --git a/src/Internal/BalanceTx/Types.purs b/src/Internal/BalanceTx/Types.purs index b73734ede..42640cd0c 100644 --- a/src/Internal/BalanceTx/Types.purs +++ b/src/Internal/BalanceTx/Types.purs @@ -12,8 +12,7 @@ module Ctl.Internal.BalanceTx.Types import Prelude -import Cardano.Types (Coin, CostModel, Language, NetworkId) -import Cardano.Types.Address as Csl +import Cardano.Types (Address, Coin, CostModel, Language, NetworkId) import Control.Monad.Except.Trans (ExceptT(ExceptT)) import Control.Monad.Reader.Class (asks) import Control.Monad.Reader.Trans (ReaderT, runReaderT) @@ -36,7 +35,7 @@ import Data.Set (Set) import Data.Set (fromFoldable, member) as Set type BalanceTxMContext = - { constraints :: BalanceTxConstraints, ownAddresses :: Set Csl.Address } + { constraints :: BalanceTxConstraints, ownAddresses :: Set Address } type BalanceTxM (a :: Type) = ExceptT BalanceTxError (ReaderT BalanceTxMContext Contract) a diff --git a/src/Internal/BalanceTx/UnattachedTx.purs b/src/Internal/BalanceTx/UnattachedTx.purs deleted file mode 100644 index f5439f576..000000000 --- a/src/Internal/BalanceTx/UnattachedTx.purs +++ /dev/null @@ -1,54 +0,0 @@ -module Ctl.Internal.BalanceTx.UnattachedTx - ( UnattachedTx - , UnindexedTx - , IndexedTx - , EvaluatedTx - , indexTx - , _transaction - , _redeemers - ) where - -import Prelude - -import Cardano.Types (PlutusData, Redeemer, Transaction) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( IndexedRedeemer - , UnindexedRedeemer - , attachIndexedRedeemers - , indexRedeemers - , mkRedeemersContext - ) -import Data.Either (Either) -import Data.Lens (Lens') -import Data.Lens.Record (prop) -import Type.Proxy (Proxy(Proxy)) - -type UnattachedTx redeemer = - { transaction :: Transaction - , redeemers :: Array redeemer - } - --- | A Tx with unindexed redeemers -type UnindexedTx = UnattachedTx UnindexedRedeemer - --- | A Tx with indexed, but not yet evaluated redeemers -type IndexedTx = UnattachedTx IndexedRedeemer - --- | A Tx with fully indexed and evaluated redeemers -type EvaluatedTx = UnattachedTx Redeemer - -indexTx :: UnindexedTx -> Either UnindexedRedeemer IndexedTx -indexTx { transaction, redeemers } = do - redeemers' <- indexRedeemers (mkRedeemersContext transaction) redeemers - pure - { transaction: attachIndexedRedeemers redeemers' transaction - , redeemers: redeemers' - } - -_transaction - :: forall (redeemer :: Type). Lens' (UnattachedTx redeemer) Transaction -_transaction = prop (Proxy :: Proxy "transaction") - -_redeemers - :: forall (redeemer :: Type). Lens' (UnattachedTx redeemer) (Array redeemer) -_redeemers = prop (Proxy :: Proxy "redeemers") diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index bbfe9a8e7..461d88a86 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -39,6 +39,7 @@ import Cardano.Types ( Address , AuxiliaryData , AuxiliaryDataHash + , BootstrapWitness , Certificate , Coin , Ed25519KeyHash @@ -176,3 +177,6 @@ _nativeScripts = _Newtype <<< prop (Proxy :: Proxy "nativeScripts") _vkeys :: Lens' TransactionWitnessSet (Array Vkeywitness) _vkeys = _Newtype <<< prop (Proxy :: Proxy "vkeys") + +_bootstraps :: Lens' TransactionWitnessSet (Array BootstrapWitness) +_bootstraps = _Newtype <<< prop (Proxy :: Proxy "bootstraps") diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 7eea80025..de2e51477 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -376,7 +376,8 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do -> Aff wallets mkWallets' env ourKey response = do runContractInEnv - env { customLogger = Just (\_ _ -> pure unit) } + -- TODO: uncomment me + env -- { customLogger = Just (\_ _ -> pure unit) } do wallets <- liftContractM diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 0e12ded53..a2cf08b0d 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -4,6 +4,12 @@ module Ctl.Internal.ProcessConstraints import Prelude +import Cardano.Transaction.Edit + ( DetachedRedeemer + , RedeemerPurpose(ForSpend, ForMint, ForReward, ForCert) + , attachRedeemers + , mkRedeemersContext + ) import Cardano.Types ( Certificate ( StakeDelegation @@ -23,7 +29,7 @@ import Cardano.Types , TransactionInput , TransactionOutput(TransactionOutput) , TransactionUnspentOutput(TransactionUnspentOutput) - , TransactionWitnessSet(TransactionWitnessSet) + , UtxoMap , Value(Value) ) import Cardano.Types.Address @@ -49,11 +55,6 @@ import Control.Monad.Except.Trans (ExceptT(ExceptT), except, runExceptT) import Control.Monad.Reader.Class (asks) import Control.Monad.State.Trans (get, gets, put, runStateT) import Control.Monad.Trans.Class (lift) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( RedeemerPurpose(ForReward, ForCert, ForMint, ForSpend) - , UnindexedRedeemer(UnindexedRedeemer) - , unindexedRedeemerToRedeemer - ) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) import Ctl.Internal.Helpers (liftEither, liftM, unsafeFromJust) @@ -67,34 +68,9 @@ import Ctl.Internal.Lens , _outputs , _referenceInputs , _requiredSigners - , _scriptDataHash , _withdrawals - , _witnessSet - ) -import Ctl.Internal.ProcessConstraints.Error - ( MkUnbalancedTxError - ( CannotSatisfyAny - , CannotWithdrawRewardsNativeScript - , CannotWithdrawRewardsPlutusScript - , CannotWithdrawRewardsPubKey - , DatumWrongHash - , CannotMintZero - , ExpectedPlutusScriptGotNativeScript - , CannotFindDatum - , CannotQueryDatum - , CannotGetValidatorHashFromAddress - , TxOutRefWrongType - , CannotConvertPOSIXTimeRange - , NumericOverflow - , WrongRefScriptHash - , ValidatorHashNotFound - , MintingPolicyNotFound - , DatumNotFound - , TxOutRefNotFound - , CannotSolveTimeConstraints - , OwnPubKeyAndStakeKeyMissing - ) ) +import Ctl.Internal.ProcessConstraints.Error (MkUnbalancedTxError(..)) import Ctl.Internal.ProcessConstraints.State ( ConstraintProcessingState , ConstraintsM @@ -112,7 +88,6 @@ import Ctl.Internal.ProcessConstraints.State , requireValue , totalMissingValue ) -import Ctl.Internal.ProcessConstraints.UnbalancedTx (UnbalancedTx) import Ctl.Internal.QueryM.Pools ( getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards @@ -175,14 +150,14 @@ import Data.Array (mapMaybe, singleton, (:)) as Array import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either, hush, isRight, note) import Data.Foldable (foldM) -import Data.Lens ((%=), (%~), (.=), (.~), (<>=)) -import Data.Lens.Getter (to, use) +import Data.Lens ((%=), (.=), (<>=)) +import Data.Lens.Getter (use) import Data.Lens.Iso.Newtype (_Newtype) import Data.List (List(Nil, Cons)) import Data.Map (Map, empty, fromFoldable, lookup, union) import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) -import Data.Newtype (over, unwrap, wrap) +import Data.Newtype (unwrap, wrap) import Data.Set as Set import Data.Traversable (for, traverse_) import Data.Tuple.Nested (type (/\), (/\)) @@ -287,8 +262,11 @@ addFakeScriptDataHash = runExceptT do dats <- use _datums costModels <- use _costModels -- Use both script and minting redeemers in the order they were appended. - reds <- use (_redeemers <<< to (map unindexedRedeemerToRedeemer)) tx <- use _cpsTransaction + let + ctx = mkRedeemersContext tx + reds <- ExceptT $ use _redeemers <#> attachRedeemers ctx >>> lmap + CannotAttachRedeemer tx' <- ExceptT $ liftEffect $ setScriptDataHash costModels reds dats tx <#> Right _cpsTransaction .= tx' @@ -560,11 +538,12 @@ processConstraint Nothing -> throwError CannotFindDatum _cpsTransaction <<< _body <<< _inputs %= appendInputs [ txo ] let - uiRedeemer = UnindexedRedeemer + dRedeemer :: DetachedRedeemer + dRedeemer = { purpose: ForSpend txo - , datum: unwrap red + , datum: red } - _redeemers <>= [ uiRedeemer ] + _redeemers <>= [ dRedeemer ] _valueSpentBalancesInputs <>= provideValue amount MustSpendNativeScriptOutput txo ns -> runExceptT do _cpsTransaction <<< _body <<< _inputs %= appendInputs [ txo ] @@ -605,7 +584,7 @@ processConstraint mkValue $ unsafeFromJust "processConstraints" $ Int.asPositive i _valueSpentBalancesOutputs <>= provideValue value _redeemers <>= - [ UnindexedRedeemer { purpose: ForMint scriptHash, datum: unwrap red } ] + [ { purpose: ForMint scriptHash, datum: red } ] -- Remove mint redeemers from array before reindexing. unsafePartial $ _cpsTransaction <<< _body <<< _mint <>= Just mint @@ -733,9 +712,7 @@ processConstraint ( PlutusScript.hash plutusScript ) _redeemers <>= - [ UnindexedRedeemer - { purpose: ForCert cert, datum: unwrap redeemerData } - ] + [ { purpose: ForCert cert, datum: redeemerData } ] void $ lift $ addCertificate cert lift $ attachToCps (map pure <<< attachPlutusScript) plutusScript MustDeregisterStakeNativeScript stakeValidator -> do @@ -765,9 +742,7 @@ processConstraint poolKeyHash lift $ addCertificate cert _redeemers <>= - [ UnindexedRedeemer - { purpose: ForCert cert, datum: unwrap redeemerData } - ] + [ { purpose: ForCert cert, datum: redeemerData } ] lift $ attachToCps (map pure <<< attachPlutusScript) stakeValidator MustDelegateStakeNativeScript stakeValidator poolKeyHash -> do void $ addCertificate $ StakeDelegation @@ -806,9 +781,7 @@ processConstraint _cpsTransaction <<< _body <<< _withdrawals %= Map.insert rewardAddress (fromMaybe Coin.zero rewards) _redeemers <>= - [ UnindexedRedeemer - { purpose: ForReward rewardAddress, datum: unwrap redeemerData } - ] + [ { purpose: ForReward rewardAddress, datum: redeemerData } ] lift $ attachToCps (map pure <<< attachPlutusScript) stakeValidator MustWithdrawStakeNativeScript stakeValidator -> runExceptT do let hash = NativeScript.hash stakeValidator @@ -899,24 +872,9 @@ getNetworkId = use (_cpsTransaction <<< _body <<< _networkId) >>= maybe (asks _.networkId) pure mkUnbalancedTxImpl - :: forall (validator :: Type) (datum :: Type) (redeemer :: Type) - . ScriptLookups + :: ScriptLookups -> TxConstraints - -> Contract (Either MkUnbalancedTxError UnbalancedTx) + -> Contract (Either MkUnbalancedTxError (Transaction /\ UtxoMap)) mkUnbalancedTxImpl scriptLookups txConstraints = runConstraintsM scriptLookups txConstraints <#> map - \{ transaction, redeemers, usedUtxos } -> - wrap - { transaction: stripRedeemers $ stripScriptDataHash transaction - , redeemers - , usedUtxos - } - where - stripScriptDataHash :: Transaction -> Transaction - stripScriptDataHash = - _body <<< _scriptDataHash .~ Nothing - - stripRedeemers :: Transaction -> Transaction - stripRedeemers = _witnessSet %~ - over TransactionWitnessSet - _ { redeemers = [] } + \({ transaction, usedUtxos }) -> transaction /\ usedUtxos diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 519025660..8b7d12d88 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -4,6 +4,7 @@ import Prelude import Cardano.AsCbor (encodeCbor) import Cardano.Serialization.Lib (toBytes) +import Cardano.Transaction.Edit (DetachedRedeemer) import Cardano.Types (DataHash, NativeScript) import Cardano.Types.Address (Address) import Cardano.Types.Address as Address @@ -59,6 +60,7 @@ data MkUnbalancedTxError | ExpectedPlutusScriptGotNativeScript ScriptHash | CannotMintZero ScriptHash AssetName | NumericOverflow + | CannotAttachRedeemer DetachedRedeemer derive instance Generic MkUnbalancedTxError _ derive instance Eq MkUnbalancedTxError @@ -155,6 +157,10 @@ explainMkUnbalancedTxError = case _ of <> " of currency " <> byteArrayToHex (unwrap $ encodeCbor cs) NumericOverflow -> "Numeric overflow" + CannotAttachRedeemer redeemer -> do + "Can't attach a redeemer: " <> show redeemer + <> "\nPlease report this as a bug here: " + <> bugTrackerLink where prettyAssetName :: AssetName -> String diff --git a/src/Internal/ProcessConstraints/State.purs b/src/Internal/ProcessConstraints/State.purs index 41d8f56de..8f923d2fa 100644 --- a/src/Internal/ProcessConstraints/State.purs +++ b/src/Internal/ProcessConstraints/State.purs @@ -20,10 +20,10 @@ module Ctl.Internal.ProcessConstraints.State import Prelude hiding (join) +import Cardano.Transaction.Edit (DetachedRedeemer) import Cardano.Types (CostModel, Language, PlutusData, Transaction, UtxoMap) import Cardano.Types.Value (Value) import Control.Monad.State.Trans (StateT) -import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.Val (Val, split) @@ -58,7 +58,7 @@ type ConstraintProcessingState = -- ^ Balance of the values produced and required for the transaction's outputs , datums :: Array PlutusData -- ^ Ordered accumulation of datums we can use to `setScriptDataHash` - , redeemers :: Array UnindexedRedeemer + , redeemers :: Array DetachedRedeemer -- ^ Unindexed redeemers that will be attached to the Tx later, on balancing -- stage. , lookups :: ScriptLookups @@ -94,7 +94,7 @@ _costModels _costModels = prop (Proxy :: Proxy "costModels") _redeemers - :: Lens' ConstraintProcessingState (Array UnindexedRedeemer) + :: Lens' ConstraintProcessingState (Array DetachedRedeemer) _redeemers = prop (Proxy :: Proxy "redeemers") _lookups diff --git a/src/Internal/ProcessConstraints/UnbalancedTx.purs b/src/Internal/ProcessConstraints/UnbalancedTx.purs deleted file mode 100644 index c90c3d626..000000000 --- a/src/Internal/ProcessConstraints/UnbalancedTx.purs +++ /dev/null @@ -1,30 +0,0 @@ -module Ctl.Internal.ProcessConstraints.UnbalancedTx - ( UnbalancedTx(UnbalancedTx) - ) where - -import Prelude hiding (join) - -import Cardano.Types.Transaction (Transaction) -import Cardano.Types.TransactionInput (TransactionInput) -import Cardano.Types.TransactionOutput (TransactionOutput) -import Ctl.Internal.BalanceTx.RedeemerIndex (UnindexedRedeemer) -import Data.Generic.Rep (class Generic) -import Data.Map (Map) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) - --- | A newtype for the unbalanced transaction after creating one with datums --- | and redeemers not attached. -newtype UnbalancedTx = UnbalancedTx - { transaction :: Transaction -- the unbalanced tx created - , usedUtxos :: Map TransactionInput TransactionOutput - , redeemers :: Array UnindexedRedeemer - } - -derive instance Generic UnbalancedTx _ -derive instance Newtype UnbalancedTx _ -derive newtype instance Eq UnbalancedTx --- derive newtype instance EncodeAeson UnbalancedTx - -instance Show UnbalancedTx where - show = genericShow diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index a623be215..8679ce208 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -395,7 +395,7 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = lookups = unspentOutputs utxos unbalancedTx <- liftedE $ mkUnbalancedTxImpl lookups constraints - balancedTx <- balanceTx unbalancedTx + balancedTx <- balanceTx unbalancedTx Map.empty mempty balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) (wrap $ unwrap balancedTx) diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index ef0461315..35f1f16a8 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -219,7 +219,7 @@ transferFundsFromEnterpriseToBase ourKey wallets = do unbalancedTx <- mkUnbalancedTx lookups constraints signedTx <- withKeyWallet ourWallet $ - signTransaction =<< balanceTx unbalancedTx + signTransaction =<< balanceTx unbalancedTx Map.empty mempty signedTx' <- foldM (\tx { wallet } -> withKeyWallet wallet $ signTransaction tx) signedTx diff --git a/src/Internal/Types/RedeemerDatum.purs b/src/Internal/Types/RedeemerDatum.purs deleted file mode 100644 index c5ef2dc6a..000000000 --- a/src/Internal/Types/RedeemerDatum.purs +++ /dev/null @@ -1,27 +0,0 @@ -module Ctl.Internal.Types.RedeemerDatum where - -import Prelude - -import Cardano.FromData (class FromData) -import Cardano.ToData (class ToData, toData) -import Cardano.Types.PlutusData (PlutusData) -import Data.Generic.Rep (class Generic) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) -import Prelude as Prelude - --- | Redeemer without ExUnits, tag or index - just a plain wrapper over `PlutusData` -newtype RedeemerDatum = RedeemerDatum PlutusData - -derive instance Generic RedeemerDatum _ -derive instance Newtype RedeemerDatum _ -derive newtype instance Eq RedeemerDatum -derive newtype instance FromData RedeemerDatum -derive newtype instance Ord RedeemerDatum -derive newtype instance ToData RedeemerDatum - -instance Show RedeemerDatum where - show = genericShow - -unit :: RedeemerDatum -unit = RedeemerDatum (toData Prelude.unit) diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index a6185715b..92b6afbc1 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -110,9 +110,9 @@ import Cardano.Types ) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.RedeemerDatum (RedeemerDatum) +import Cardano.Types.RedeemerDatum as RedeemerDatum import Ctl.Internal.Types.Interval (POSIXTimeRange) -import Ctl.Internal.Types.RedeemerDatum (RedeemerDatum) -import Ctl.Internal.Types.RedeemerDatum as RedeemerDatum import Data.Array (singleton) import Data.Array (singleton) as X import Data.Array as Array diff --git a/src/Internal/UseConstraints.purs b/src/Internal/UseConstraints.purs deleted file mode 100644 index 19144534d..000000000 --- a/src/Internal/UseConstraints.purs +++ /dev/null @@ -1,379 +0,0 @@ -module Ctl.Internal.UseConstraints where - -import Prelude - -import Cardano.AsCbor (encodeCbor) -import Cardano.Types - ( DataHash - , NetworkId - , PlutusData - , PlutusScript - , StakeCredential - , Transaction - , TransactionInput - , TransactionUnspentOutput - ) -import Cardano.Types.Address (getPaymentCredential) -import Cardano.Types.Certificate (Certificate(..)) -import Cardano.Types.Coin (Coin) -import Cardano.Types.CostModel (CostModel) -import Cardano.Types.Credential as Credential -import Cardano.Types.DataHash as PlutusData -import Cardano.Types.Language (Language) -import Cardano.Types.NativeScript (NativeScript) -import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash, OutputDatum)) -import Cardano.Types.TransactionBody (TransactionBody) -import Contract.Constraints - ( Constraint(..) - , Constraints - , CredentialWitness(..) - , DatumWitness(..) - , OutputWitness(..) - , RefInputAction(..) - , ScriptWitness(..) - ) -import Control.Monad.Error.Class (throwError) -import Control.Monad.Except (Except) -import Control.Monad.State (StateT) -import Control.Monad.State.Trans (gets) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( RedeemerPurpose(ForSpend, ForCert) - , UnindexedRedeemer(UnindexedRedeemer) - ) -import Ctl.Internal.Lens - ( _address - , _body - , _certs - , _datum - , _inputs - , _isValid - , _nativeScripts - , _output - , _outputs - , _plutusData - , _plutusScripts - , _referenceInputs - , _requiredSigners - , _ttl - , _validityStartInterval - , _withdrawals - , _witnessSet - ) -import Data.Array (nub) -import Data.ByteArray (byteArrayToHex) -import Data.Lens (Lens', (%=), (.=), (<>=), (^.)) -import Data.Lens.Record (prop) -import Data.Map (Map) -import Data.Map as Map -import Data.Maybe (Maybe(Just, Nothing), isJust) -import Data.Newtype (unwrap, wrap) -import Data.Set as Set -import Data.Traversable (traverse_) -import Type.Proxy (Proxy(..)) - -type Context = - { transaction :: Transaction - , costModels :: Map Language CostModel - , redeemers :: Array UnindexedRedeemer - , datums :: Array PlutusData - , networkId :: NetworkId - } - -_transaction - :: Lens' Context Transaction -_transaction = prop (Proxy :: Proxy "transaction") - -_redeemers - :: Lens' Context (Array UnindexedRedeemer) -_redeemers = prop (Proxy :: Proxy "redeemers") - -_datums - :: Lens' Context (Array PlutusData) -_datums = prop (Proxy :: Proxy "datums") - -data ExpectedWitnessType = ScriptHashWitness | PubKeyHashWitness - -explainExpectedWitnessType :: ExpectedWitnessType -> String -explainExpectedWitnessType ScriptHashWitness = "ScriptHash" -explainExpectedWitnessType PubKeyHashWitness = "PubKeyHash" - -data CredentialAction = StakeCert | Withdrawal | Minting - -explainCredentialAction :: CredentialAction -> String -explainCredentialAction StakeCert = "This stake certificate" -explainCredentialAction Withdrawal = "This stake rewards withdrawal" -explainCredentialAction Minting = "This mint" - -data TxBuildError - = WrongSpendWitnessType TransactionUnspentOutput - | DatumHashLookupError DataHash - | IncorrectDatumHash TransactionUnspentOutput PlutusData DataHash - | WrongOutputType ExpectedWitnessType TransactionUnspentOutput - | WrongStakeCredentialType CredentialAction ExpectedWitnessType - StakeCredential - | DatumWitnessNotProvided TransactionUnspentOutput - | UnneededDatumWitness TransactionUnspentOutput DatumWitness - -explainTxBuildError :: TxBuildError -> String -explainTxBuildError (WrongSpendWitnessType utxo) = - "`OutputWitness` is incompatible with the given output. The output does not contain a datum: " - <> show utxo -explainTxBuildError (DatumHashLookupError dataHash) = - "The UTxO you are trying to spend contains a datum hash. You didn't provide a `DatumWitness` value corresponding to this hash, so CTL tried to look it up, using a database of datums observed on-chain. This lookup failed. Datum hash: " - <> show dataHash -explainTxBuildError (IncorrectDatumHash utxo datum datumHash) = - "You provided a `DatumWitness` with a datum that does not match the datum hash present in a transaction output.\n Datum: " - <> show datum - <> " (CBOR: " - <> byteArrayToHex (unwrap $ encodeCbor datum) - <> ")\n Datum hash: " - <> byteArrayToHex (unwrap $ encodeCbor datumHash) - <> "\n UTxO: " - <> show utxo -explainTxBuildError (WrongOutputType ScriptHashWitness utxo) = - "The UTxO you provided requires a Script witness to unlock. UTxO: " <> show - utxo -explainTxBuildError (WrongOutputType PubKeyHashWitness utxo) = - "The UTxO you provided requires a PubKeyHash witness to unlock. UTxO: " <> - show utxo -explainTxBuildError - (WrongStakeCredentialType operation expWitnessType stakeCredential) = - explainCredentialAction operation <> " requires a " - <> explainExpectedWitnessType expWitnessType - <> " witness: " - <> show stakeCredential -explainTxBuildError (DatumWitnessNotProvided utxo) = - "The UTxO you are trying to spend contains a datum hash. A matching `DatumWitness` is required. Use `getDatumByHash`. UTxO: " - <> show utxo -explainTxBuildError (UnneededDatumWitness utxo witness) = - "You've provided an optional `DatumWitness`, but the output you are spending already contains an inline datum (not just a datum hash). You should omit the provided datum witness. You provided: " - <> show witness - <> " for the UTxO: " - <> show utxo -explainTxBuildError _ = "TODO" - -type M a = StateT Context (Except TxBuildError) a - -processConstraints :: Constraints -> M Unit -processConstraints = traverse_ processConstraint - -processConstraint :: Constraint -> M Unit -processConstraint = case _ of - SpendOutput utxo spendWitness -> do - _transaction <<< _body <<< _inputs - %= pushUnique (unwrap utxo).input - useSpendWitness utxo spendWitness - PayTo utxo -> do - _transaction <<< _body <<< _outputs - -- intentionally not using pushUnique: we can - -- create multiple outputs of the same shape - %= flip append [ utxo ] - RegisterStake stakeCredential -> do - _transaction <<< _body <<< _certs %= pushUnique - (StakeRegistration stakeCredential) - IssueCertificate cert witness -> do - useCertificateWitness cert witness - WithdrawStake stakeCredential amount witness -> do - useWithdrawRewardsWitness stakeCredential amount witness - RequireSignature ppkh -> do - _transaction <<< _body <<< _requiredSigners <>= - [ wrap $ unwrap $ unwrap ppkh ] - RegisterPool poolParams -> do - _transaction <<< _body <<< _certs %= pushUnique - (PoolRegistration poolParams) - RetirePool poolKeyHash epoch -> do - _transaction <<< _body <<< _certs %= pushUnique - (PoolRetirement { poolKeyHash, epoch }) - IncludeDatum datum -> do - _datums %= pushUnique datum - _transaction <<< _witnessSet <<< _plutusData - %= pushUnique datum - SetTTL slot -> do - _transaction <<< _body <<< _ttl .= slot - SetValidityStartInterval slot -> do - _transaction <<< _body <<< _validityStartInterval .= slot - SetIsValid isValid -> do - _transaction <<< _isValid .= isValid - -assertOutputType :: ExpectedWitnessType -> TransactionUnspentOutput -> M Unit -assertOutputType outputType utxo = do - let - mbCredential = - (getPaymentCredential (utxo ^. _output <<< _address) <#> unwrap) - >>= case outputType of - ScriptHashWitness -> Credential.asScriptHash >>> void - PubKeyHashWitness -> Credential.asPubKeyHash >>> void - unless (isJust mbCredential) do - throwError $ WrongOutputType outputType utxo - -assertStakeCredentialType - :: CredentialAction -> ExpectedWitnessType -> StakeCredential -> M Unit -assertStakeCredentialType action expectedType credential = do - let - mbCredential = - case expectedType of - ScriptHashWitness -> - void $ Credential.asScriptHash $ unwrap credential - PubKeyHashWitness -> - void $ Credential.asPubKeyHash $ unwrap credential - unless (isJust mbCredential) do - throwError $ WrongStakeCredentialType action expectedType credential - -useCertificateWitness :: Certificate -> CredentialWitness -> M Unit -useCertificateWitness cert witness = do - _transaction <<< _body <<< _certs %= pushUnique cert - case cert of - StakeDeregistration stakeCredential -> do - useCertificateCredentialWitness cert witness - useCredentialWitness StakeCert stakeCredential witness - StakeDelegation stakeCredential _ -> do - useCertificateCredentialWitness cert witness - useCredentialWitness StakeCert stakeCredential witness - StakeRegistration _ -> pure unit - PoolRegistration _ -> pure unit - PoolRetirement _ -> pure unit - GenesisKeyDelegation _ -> pure unit - MoveInstantaneousRewardsCert _ -> pure unit - -useCertificateCredentialWitness :: Certificate -> CredentialWitness -> M Unit -useCertificateCredentialWitness cert witness = do - case witness of - PubKeyCredential -> pure unit - NativeScriptCredential _nsWitness -> pure unit - PlutusScriptCredential _plutusScriptWitness redeemerDatum -> do - -- attach the redeemer - let - uiRedeemer = UnindexedRedeemer - { purpose: ForCert cert - , datum: unwrap redeemerDatum - } - _redeemers %= pushUnique uiRedeemer - -useCredentialWitness - :: CredentialAction -> StakeCredential -> CredentialWitness -> M Unit -useCredentialWitness credentialAction stakeCredential witness = do - case witness of - PubKeyCredential -> do - assertStakeCredentialType credentialAction PubKeyHashWitness - stakeCredential - NativeScriptCredential nsWitness -> do - assertStakeCredentialType credentialAction ScriptHashWitness - stakeCredential - useNativeScriptWitness nsWitness - PlutusScriptCredential plutusScriptWitness _ -> do - assertStakeCredentialType credentialAction ScriptHashWitness - stakeCredential - usePlutusScriptWitness plutusScriptWitness - -useWithdrawRewardsWitness - :: StakeCredential -> Coin -> CredentialWitness -> M Unit -useWithdrawRewardsWitness stakeCredential amount witness = do - useCredentialWitness Withdrawal stakeCredential witness - networkId <- gets _.networkId - let - rewardAddress = - { networkId - , stakeCredential - } - _transaction <<< _body <<< _withdrawals %= - Map.insert rewardAddress amount - pure unit - --- | Tries to modify the transaction to make it consume a given output. --- | Uses a `SpendWitness` to try to satisfy spending requirements. -useSpendWitness :: TransactionUnspentOutput -> OutputWitness -> M Unit -useSpendWitness utxo = case _ of - PubKeyOutput -> do - assertOutputType PubKeyHashWitness utxo - NativeScriptOutput nsWitness -> do - assertOutputType ScriptHashWitness utxo - -- attach the script - useNativeScriptWitness nsWitness - PlutusScriptOutput plutusScriptWitness redeemerDatum mbDatumWitness -> do - assertOutputType ScriptHashWitness utxo - -- attach the script - usePlutusScriptWitness plutusScriptWitness - -- attach the datum - useDatumWitnessForUtxo utxo mbDatumWitness - -- attach the redeemer - let - uiRedeemer = UnindexedRedeemer - { purpose: ForSpend (unwrap utxo).input - , datum: unwrap redeemerDatum - } - _redeemers %= pushUnique uiRedeemer - -usePlutusScriptWitness :: ScriptWitness PlutusScript -> M Unit -usePlutusScriptWitness = - case _ of - ScriptValue ps -> do - _transaction <<< _witnessSet <<< _plutusScripts - %= pushUnique ps - ScriptReference input action -> do - _transaction <<< _body <<< refInputActionToLens action - %= pushUnique input - -useNativeScriptWitness :: ScriptWitness NativeScript -> M Unit -useNativeScriptWitness = - case _ of - ScriptValue ns -> do - _transaction <<< _witnessSet <<< _nativeScripts - %= pushUnique ns - ScriptReference refInput refInputAction -> do - _transaction <<< _body <<< refInputActionToLens refInputAction - %= pushUnique refInput - --- | Tries to modify the transaction state to make it consume a given script output. --- | Uses a `DatumWitness` if the UTxO datum is provided as a hash. -useDatumWitnessForUtxo - :: TransactionUnspentOutput -> Maybe DatumWitness -> M Unit -useDatumWitnessForUtxo utxo mbDatumWitness = do - case utxo ^. _output <<< _datum of - -- script outputs must have a datum - Nothing -> throwError $ WrongSpendWitnessType utxo - -- if the datum is inline, we don't need to attach it as witness - Just (OutputDatum _providedDatum) -> do - case mbDatumWitness of - Just datumWitness -> - throwError $ UnneededDatumWitness utxo datumWitness - Nothing -> pure unit - -- if the datum is provided as hash, - Just (OutputDatumHash datumHash) -> - case mbDatumWitness of - -- if the datum witness was not provided, look the datum up - Nothing -> do - throwError $ DatumWitnessNotProvided utxo - -- if the datum was provided, check it's hash. if it matches the one - -- specified in the output, use that datum. - Just (DatumValue providedDatum) - | datumHash == PlutusData.hashPlutusData providedDatum -> do - _datums %= pushUnique providedDatum - _transaction <<< _witnessSet <<< _plutusData - %= pushUnique providedDatum - -- otherwise, fail - Just (DatumValue providedDatum) -> do - throwError $ IncorrectDatumHash utxo providedDatum datumHash - -- if a reference input is provided, we just attach it. - -- TODO: consider querying for the inline datum to check if it matches. - Just (DatumReference datumWitnessRef refInputAction) -> do - _transaction <<< _body <<< refInputActionToLens refInputAction - %= pushUnique datumWitnessRef - --- | Depending on `RefInputAction` value, we either want to spend a reference --- | UTxO, or just reference it. -refInputActionToLens - :: RefInputAction - -> Lens' TransactionBody (Array TransactionInput) -refInputActionToLens = - case _ of - ReferenceInput -> _referenceInputs - SpendInput -> _inputs - --- | Ensures uniqueness of an element -pushUnique :: forall a. Ord a => a -> Array a -> Array a -pushUnique x xs = nub $ xs <> [ x ] - --- Ensures uniqueness -appendInput - :: TransactionInput -> Array TransactionInput -> Array TransactionInput -appendInput a b = Set.toUnfoldable (Set.singleton a <> Set.fromFoldable b) diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index c1f5487d5..739d120a7 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -1,15 +1,13 @@ module Test.Ctl.BalanceTx.Time (suite) where import Contract.Prelude +import Data.Lens -import Cardano.Types.BigNum (BigNum) +import Cardano.Types (BigNum, Transaction, _body) import Cardano.Types.BigNum (fromInt, toInt) as BigNum import Contract.Config (testnetConfig) import Contract.Monad (Contract, runContract) -import Contract.ScriptLookups - ( ScriptLookups - , UnbalancedTx - ) +import Contract.ScriptLookups (ScriptLookups) import Contract.Time ( POSIXTime , Slot @@ -146,10 +144,8 @@ unsafeSubtractOne value = wrap <<< fromJust -------------------------------------------------------------------------------- getTimeFromUnbalanced - :: UnbalancedTx -> Contract (Interval POSIXTime) -getTimeFromUnbalanced utx = validityToPosixTime $ unwrap body - where - body = (unwrap utx) # _.transaction >>> unwrap >>> _.body + :: Transaction -> Contract (Interval POSIXTime) +getTimeFromUnbalanced tx = validityToPosixTime $ unwrap $ tx ^. _body toPosixTime :: Slot -> Contract POSIXTime toPosixTime time = do diff --git a/test/Fixtures.purs b/test/Fixtures.purs index e4a9f0783..194d17dfd 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -1351,7 +1351,7 @@ redeemerFixture1 :: Redeemer redeemerFixture1 = Redeemer { tag: Spend , index: BigNum.fromInt 0 - , data: plutusDataFixture7 + , data: wrap plutusDataFixture7 , exUnits: ExUnits { mem: BigNum.fromInt 1 , steps: BigNum.fromInt 1 diff --git a/test/Plutip.purs b/test/Plutip.purs index 2a582b224..648bea2e4 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -20,6 +20,7 @@ import Ctl.Internal.Plutip.Server , stopPlutipCluster ) import Ctl.Internal.Plutip.Types (StopClusterResponse(StopClusterSuccess)) +import Data.Log.Level (LogLevel(..)) import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(SIGINT)) import Effect (Effect) @@ -36,7 +37,7 @@ import Mote.Monad (mapTest) import Mote.TestPlanM (TestPlanM) import Mote.TestPlanM as Utils import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration -import Test.Ctl.Plutip.Common (config) +import Test.Ctl.Plutip.Common (config) as Config import Test.Ctl.Plutip.Contract as Contract import Test.Ctl.Plutip.Contract.Assert as Assert import Test.Ctl.Plutip.Contract.ClusterParameters as ClusterParameters @@ -50,6 +51,8 @@ import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface import Test.Spec.Assertions (shouldSatisfy) import Test.Spec.Runner (defaultConfig) +config = Config.config { suppressLogs = false, logLevel = Trace } + -- Run with `npm run plutip-test` main :: Effect Unit main = interruptOnSignal SIGINT =<< launchAff do diff --git a/test/Plutip/Common.purs b/test/Plutip/Common.purs index 3cd0304fb..0dc461e79 100644 --- a/test/Plutip/Common.purs +++ b/test/Plutip/Common.purs @@ -15,7 +15,7 @@ import Data.Newtype (wrap) import Partial.Unsafe (unsafePartial) config :: PlutipConfig -config = defaultPlutipConfig +config = defaultPlutipConfig { suppressLogs = false } privateStakeKey :: PrivateStakeKey privateStakeKey = wrap $ unsafePartial $ fromJust diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index ea91f84bd..1123e0631 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -6,11 +6,18 @@ import Prelude import Cardano.AsCbor (decodeCbor) import Cardano.Serialization.Lib (fromBytes) +import Cardano.Transaction.Builder + ( TransactionBuilderStep(..) + , buildTransaction + ) import Cardano.Types ( Address + , Credential(..) , GeneralTransactionMetadata(GeneralTransactionMetadata) + , StakeCredential(..) , TransactionUnspentOutput(TransactionUnspentOutput) ) +import Cardano.Types.Address (mkPaymentAddress) import Cardano.Types.AssetName as AssetName import Cardano.Types.Coin as Coin import Cardano.Types.Credential @@ -18,11 +25,13 @@ import Cardano.Types.Credential ) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PaymentCredential (PaymentCredential(..)) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Value (lovelaceValueOf) import Contract.Address ( PaymentPubKeyHash(PaymentPubKeyHash) , StakePubKeyHash + , getNetworkId , mkAddress ) import Contract.AuxiliaryData (setGeneralTxMetadata) @@ -86,9 +95,10 @@ import Contract.Transaction , _output , awaitTxConfirmed , balanceTx + , balanceTx + , balanceTxE , balanceTxE - , balanceTxWithConstraints - , balanceTxWithConstraintsE + , buildTx , createAdditionalUtxos , getTxMetadata , lookupTxHash @@ -169,7 +179,7 @@ import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (error, throw) import JS.BigInt as BigInt -import Mote (group, skip, test) +import Mote (group, only, skip, test) import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) @@ -238,7 +248,7 @@ suite = do lookups = mempty ubTx <- mkUnbalancedTx lookups constraints res <- - ( balanceTxWithConstraintsE ubTx + ( balanceTxE ubTx Map.empty (mustNotSpendUtxosWithOutRefs $ Map.keys utxos) ) res `shouldSatisfy` isLeft @@ -268,7 +278,7 @@ suite = do withWallets distribution \_ → pure unit - group "Contract interface" do + only $ group "Contract interface" do test "mustUseCollateralUtxos should not fail if enough UTxOs are provided" do @@ -312,10 +322,8 @@ suite = do Constraints.mustSpendScriptOutput txInput unitRedeemer ubTx <- mkUnbalancedTx lookups constraints - res <- - ( balanceTxWithConstraintsE ubTx - $ mustUseCollateralUtxos bobsCollateral - ) + res <- balanceTxE ubTx Map.empty + (mustUseCollateralUtxos bobsCollateral) res `shouldSatisfy` isRight test @@ -359,10 +367,7 @@ suite = do Constraints.mustSpendScriptOutput txInput unitRedeemer ubTx <- mkUnbalancedTx lookups constraints - res <- - ( balanceTxWithConstraintsE ubTx - $ mustUseCollateralUtxos Map.empty - ) + res <- balanceTxE ubTx Map.empty (mustUseCollateralUtxos Map.empty) res `shouldSatisfy` case _ of Left (InsufficientCollateralUtxos mp) -> Map.isEmpty mp _ -> false @@ -392,19 +397,23 @@ suite = do withKeyWallet bob do pure unit -- sign, balance, submit, etc. - test "Payment keyhash to payment keyhash transaction (Pkh2Pkh example)" do - let - distribution :: InitialUTxOs - distribution = - [ BigNum.fromInt 10_000_000 - , BigNum.fromInt 20_000_000 - ] - withWallets distribution \alice -> do - checkUtxoDistribution distribution alice - pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice - ownPaymentPubKeyHashes - stakePkh <- join <<< head <$> withKeyWallet alice ownStakePubKeyHashes - withKeyWallet alice $ pkh2PkhContract pkh stakePkh + only $ test + "Payment keyhash to payment keyhash transaction (Pkh2Pkh example)" + do + let + distribution :: InitialUTxOs + distribution = + [ BigNum.fromInt 10_000_000 + , BigNum.fromInt 20_000_000 + , BigNum.fromInt 20_000_000 + ] + withWallets distribution \alice -> do + logInfo' "407 hi" + checkUtxoDistribution distribution alice + pkh <- liftedM "Failed to get PKH" $ head <$> withKeyWallet alice + ownPaymentPubKeyHashes + stakePkh <- join <<< head <$> withKeyWallet alice ownStakePubKeyHashes + withKeyWallet alice $ pkh2PkhContract pkh stakePkh test "Base Address to Base Address transaction (Pkh2Pkh example, but with stake keys)" do @@ -550,7 +559,7 @@ suite = do lookups = mempty ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx + bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty txId <- submit bsTx awaitTxConfirmed txId pure txId @@ -584,7 +593,7 @@ suite = do lookups = Lookups.unspentOutputs utxos ubTx <- mkUnbalancedTx lookups constraints - tx <- signTransaction =<< balanceTx ubTx + tx <- signTransaction =<< balanceTx ubTx Map.empty mempty let signWithWallet txToSign wallet = withKeyWallet wallet (signTransaction txToSign) @@ -643,7 +652,7 @@ suite = do lookups = mempty ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx + bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty txId <- submit bsTx awaitTxConfirmed txId pure txId @@ -668,7 +677,7 @@ suite = do ubTx <- mkUnbalancedTx lookups constraints -- Bob signs the tx - tx <- signTransaction =<< balanceTx ubTx + tx <- signTransaction =<< balanceTx ubTx Map.empty mempty let signWithWallet txToSign wallet = withKeyWallet wallet (signTransaction txToSign) @@ -701,7 +710,7 @@ suite = do lookups = Lookups.plutusMintingPolicy mp ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx + bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty submitAndLog bsTx test "mustProduceAtLeast spends native token" do @@ -786,7 +795,7 @@ suite = do lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh ubTx <- mkUnbalancedTx lookups' constraints' - result <- balanceTxE ubTx + result <- balanceTxE ubTx Map.empty mempty result `shouldSatisfy` isLeft test "mustSpendAtLeast succeeds to spend" do @@ -871,7 +880,7 @@ suite = do lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh ubTx <- mkUnbalancedTx lookups' constraints' - result <- balanceTxE ubTx + result <- balanceTxE ubTx Map.empty mempty result `shouldSatisfy` isLeft test "Minting using NativeScript (multisig) as a policy" do @@ -1028,7 +1037,7 @@ suite = do ubTx <- mkUnbalancedTx lookups constraints let ubTx' = setGeneralTxMetadata ubTx givenMetadata - bsTx <- signTransaction =<< balanceTx ubTx' + bsTx <- signTransaction =<< balanceTx ubTx' Map.empty mempty txId <- submit bsTx awaitTxConfirmed txId @@ -1110,7 +1119,7 @@ suite = do <> Lookups.plutusMintingPolicy mp3 ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx + bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty submitAndLog bsTx test "Multi-signature transaction" do @@ -1301,7 +1310,7 @@ suite = do BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos unbalancedTx <- mkUnbalancedTx lookups constraints - balanceTxWithConstraintsE unbalancedTx balanceTxConstraints + balanceTxE unbalancedTx Map.empty balanceTxConstraints let hasInsufficientBalance @@ -1525,7 +1534,7 @@ suite = do lookups = Lookups.plutusMintingPolicy mp ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx + bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty submit bsTx >>= awaitTxConfirmed logInfo' "Attempt to lock value" @@ -1718,7 +1727,7 @@ suite = do unbalancedTx0 <- mkUnbalancedTx lookups0 constraints0 - withBalancedTx unbalancedTx0 \balancedTx0 -> do + withBalancedTx unbalancedTx0 Map.empty mempty \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 additionalUtxos <- createAdditionalUtxos balancedSignedTx0 @@ -1741,7 +1750,7 @@ suite = do BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos unbalancedTx1 <- mkUnbalancedTx lookups1 constraints1 - balancedTx1 <- balanceTxWithConstraints unbalancedTx1 + balancedTx1 <- balanceTx unbalancedTx1 Map.empty balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 @@ -1832,7 +1841,7 @@ suite = do unbalancedTx0 <- mkUnbalancedTx lookups0 constraints0 - withBalancedTx unbalancedTx0 \balancedTx0 -> do + withBalancedTx unbalancedTx0 Map.empty mempty \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 additionalUtxos <- createAdditionalUtxos balancedSignedTx0 @@ -1856,7 +1865,7 @@ suite = do BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos unbalancedTx1 <- mkUnbalancedTx lookups1 constraints1 - balancedTx1 <- balanceTxWithConstraints unbalancedTx1 + balancedTx1 <- balanceTx unbalancedTx1 Map.empty balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 @@ -2081,7 +2090,16 @@ signMultipleContract = do ubTx1 <- mkUnbalancedTx lookups constraints ubTx2 <- mkUnbalancedTx lookups constraints - withBalancedTxs [ ubTx1, ubTx2 ] $ \txs -> do + withBalancedTxs + [ { transaction: ubTx1 + , extraUtxos: Map.empty + , balancerConstraints: mempty + } + , { transaction: ubTx2 + , extraUtxos: Map.empty + , balancerConstraints: mempty + } + ] $ \txs -> do locked <- getLockedInputs logInfo' $ "Locked inputs inside bracket (should be nonempty): " <> show locked @@ -2098,14 +2116,15 @@ pkh2PkhContract -> Maybe StakePubKeyHash -> Contract Unit pkh2PkhContract pkh stakePkh = do - let - constraints :: Constraints.TxConstraints - constraints = mustPayToPubKeyStakeAddress pkh stakePkh - $ Value.lovelaceValueOf - $ BigNum.fromInt 2_000_000 - - lookups :: Lookups.ScriptLookups - lookups = mempty - ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx - submitAndLog bsTx + address <- mkAddress + (PaymentCredential $ PubKeyHashCredential $ unwrap pkh) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> stakePkh) + transaction <- buildTx + [ Pay $ TransactionOutput + { address + , amount: Value.coinToValue $ wrap $ BigNum.fromInt 2_000_000 + , datum: Nothing + , scriptRef: Nothing + } + ] + submitAndLog =<< signTransaction =<< balanceTx transaction Map.empty mempty diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 0a9882b2b..a7b6f0baf 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -74,6 +74,7 @@ import Data.Array (head, (!!)) import Data.Array as Array import Data.Either (hush) import Data.Foldable (for_) +import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) import Data.Posix.Signal (Signal(SIGINT)) @@ -154,7 +155,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -167,7 +168,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog test "PlutusScript" do let @@ -203,7 +204,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -220,7 +221,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog test "NativeScript" do let @@ -251,7 +252,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -264,7 +265,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog test "Pool registration & retirement" do let @@ -289,7 +290,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog privateStakeKey <- liftM (error "Failed to get private stake key") $ keyWalletPrivateStakeKey alice @@ -338,7 +339,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog -- List pools: the pool must appear in the list do @@ -365,7 +366,7 @@ suite = do Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog let waitEpoch :: Epoch -> Contract Epoch @@ -416,7 +417,8 @@ suite = do lookups = mempty ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= + submitAndLog -- Register stake script do @@ -428,7 +430,8 @@ suite = do lookups = mempty ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= + submitAndLog -- Select a pool poolId <- selectPoolId @@ -444,7 +447,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= + submitAndLog -- Wait until rewards let @@ -475,7 +479,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= + submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too @@ -528,7 +533,8 @@ suite = do lookups = mempty ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= + submitAndLog -- Alice registers stake script (again, no need to validate it) do @@ -540,7 +546,8 @@ suite = do lookups = mempty ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= + submitAndLog -- Bob performs operations with the stake script that require his -- (and only his) signature. @@ -560,7 +567,8 @@ suite = do Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= + submitAndLog -- Wait until rewards let @@ -591,7 +599,8 @@ suite = do Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= + submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too @@ -627,7 +636,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog -- Select a pool ID poolId <- selectPoolId @@ -643,7 +652,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog -- Wait until rewards let @@ -677,7 +686,7 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx >>= signTransaction >>= submitAndLog + balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too diff --git a/test/Utils/DrainWallets.purs b/test/Utils/DrainWallets.purs index 6e61639c4..cd636c29b 100644 --- a/test/Utils/DrainWallets.purs +++ b/test/Utils/DrainWallets.purs @@ -122,7 +122,7 @@ run privateKey walletsDir = runContract config do unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx + balancedTx <- balanceTx unbalancedTx Map.empty mempty balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) (wrap $ unwrap balancedTx) From ad83321a77ef799f37d06d03dd07d5c63f5cf7fb Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 28 Jun 2024 14:49:02 +0200 Subject: [PATCH 251/373] Fix most of the cardano-testnet (formerly plutip) tests --- src/Contract/Test/Testnet.purs | 38 +++++++++++++++++++ src/Internal/Plutip/Utils.purs | 1 - src/Internal/Testnet/Contract.purs | 25 +++++-------- src/Internal/Testnet/Server.purs | 58 ++++++++++++++--------------- src/Internal/Testnet/Types.purs | 29 ++++++++++++++- test/Plutip.purs | 23 +++--------- test/Plutip/Contract/Mnemonics.purs | 4 +- test/Plutip/Logging.purs | 20 +++++----- test/Plutip/UtxoDistribution.purs | 16 +++++--- 9 files changed, 132 insertions(+), 82 deletions(-) create mode 100644 src/Contract/Test/Testnet.purs diff --git a/src/Contract/Test/Testnet.purs b/src/Contract/Test/Testnet.purs new file mode 100644 index 000000000..2ecd1e48f --- /dev/null +++ b/src/Contract/Test/Testnet.purs @@ -0,0 +1,38 @@ +module Contract.Test.Testnet + ( defaultTestnetConfig + ) where + +import Ctl.Internal.Contract.Hooks (emptyHooks) +import Ctl.Internal.Testnet.Types (Era(Babbage), TestnetConfig) +import Data.Log.Level (LogLevel(Trace)) +import Data.Maybe (Maybe(Nothing)) +import Data.Time.Duration (Seconds(Seconds)) +import Data.UInt (fromInt) as UInt + +defaultTestnetConfig :: TestnetConfig +defaultTestnetConfig = + { logLevel: Trace + , ogmiosConfig: + { port: UInt.fromInt 1338 + , host: "127.0.0.1" + , secure: false + , path: Nothing + } + , kupoConfig: + { port: UInt.fromInt 1443 + , host: "127.0.0.1" + , secure: false + , path: Nothing + } + , customLogger: Nothing + , suppressLogs: true + , hooks: emptyHooks + , clusterConfig: + { testnetMagic: 2 + , era: Babbage + , slotLength: Seconds 0.1 -- FIXME + , epochSize: Nothing -- FIXME + , maxTxSize: Nothing -- FIXME + , raiseExUnitsToMax: false -- FIXME + } + } diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs index e0aec585b..3d5195606 100644 --- a/src/Internal/Plutip/Utils.purs +++ b/src/Internal/Plutip/Utils.purs @@ -203,7 +203,6 @@ waitForExit :: Aff Int waitForExit = Aff.makeAff \cont -> do { cancel } <- withOneShotHandler \{ justOnce } -> onExit \exitcode -> justOnce do - log "ON EXIT" cont $ Right exitcode pure $ Aff.Canceler \err -> liftEffect do cancel diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 6a1cdc99e..71c21676a 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -57,10 +57,7 @@ import Ctl.Internal.Test.UtxoDistribution , keyWallets ) import Ctl.Internal.Testnet.Server (StartedTestnetCluster, startTestnetCluster) -import Ctl.Internal.Testnet.Types - ( CardanoTestnetStartupParams - , TestnetClusterConfig - ) +import Ctl.Internal.Testnet.Types (TestnetConfig) import Ctl.Internal.Testnet.Utils (read872GenesisKey) import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) import Data.Array (head, zip) as Array @@ -80,9 +77,9 @@ import Type.Proxy (Proxy(Proxy)) -- | Run a single `Contract` in cardano-testnet environment. runTestnetContract - :: forall (distr :: Type) (wallets :: Type) (r :: Row Type) (a :: Type) + :: forall (distr :: Type) (wallets :: Type) (a :: Type) . UtxoDistribution distr wallets - => Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + => TestnetConfig -> distr -> (wallets -> Contract a) -> Aff a @@ -93,9 +90,9 @@ runTestnetContract cfg distr cont = -- | Provide a `ContractEnv` connected to cardano-testnet. -- | Can be used to run multiple `Contract`s using `runContractInEnv`. withTestnetContractEnv - :: forall (distr :: Type) (wallets :: Type) (r :: Row Type) (a :: Type) + :: forall (distr :: Type) (wallets :: Type) (a :: Type) . UtxoDistribution distr wallets - => Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + => TestnetConfig -> distr -> (ContractEnv -> wallets -> Aff a) -> Aff a @@ -116,8 +113,7 @@ withTestnetContractEnv cfg distr cont = do -- | to `testPlutipContracts` are wrapped in a single group. -- | https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#testing-with-mote FIXME testTestnetContracts - :: forall (r :: Row Type) - . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + :: TestnetConfig -> TestPlanM ContractTest Unit -> TestPlanM (Aff Unit) Unit testTestnetContracts cfg tp = do @@ -128,8 +124,7 @@ testTestnetContracts cfg tp = do -- | Supports wallet reuse - see docs on sharing wallet state between -- | wallets in `doc/plutip-testing.md`. FIXME runTestnetTestPlan - :: forall (r :: Row Type) - . Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + :: TestnetConfig -> ContractTestPlan -> TestPlanM (Aff Unit) Unit runTestnetTestPlan cfg (ContractTestPlan runContractTestPlan) = do @@ -219,9 +214,9 @@ execDistribution (MoteT mote) = execWriterT mote <#> go -- | Provide a `ContractEnv` connected to cardano-testnet. -- | can be used to run multiple `Contract`s using `runContractInEnv`. startTestnetContractEnv - :: forall (distr :: Type) (wallets :: Type) (r :: Row Type) + :: forall (distr :: Type) (wallets :: Type) . UtxoDistribution distr wallets - => Record (TestnetClusterConfig (CardanoTestnetStartupParams r)) + => TestnetConfig -> distr -> Ref (Array (Aff Unit)) -> Aff @@ -265,7 +260,7 @@ startTestnetContractEnv cfg distr cleanupRef = do let nodeCfg = { socketPath: (unwrap cluster).paths.nodeSocketPath - , testnetMagic: cfg.testnetMagic + , testnetMagic: cfg.clusterConfig.testnetMagic } withCardanoCliCompletion nodeCfg genesisAddr do let walletsAmounts = Array.zip kws distrArray diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index cb2a34a38..72ad90124 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -39,9 +39,9 @@ import Ctl.Internal.Plutip.Utils , waitUntil ) import Ctl.Internal.Testnet.Types - ( CardanoTestnetStartupParams - , KupmiosConfig - , Node + ( Node + , TestnetClusterConfig + , TestnetConfig , TestnetPaths ) import Ctl.Internal.Testnet.Utils @@ -100,16 +100,13 @@ derive instance Newtype StartedTestnetCluster _ -- | UTxOs in the passed distribution, so it can be used to handle -- | transaction fees. startTestnetCluster - :: forall r - . Record (CardanoTestnetStartupParams (KupmiosConfig r)) + :: TestnetConfig -> Ref (Array (Aff Unit)) -> Aff StartedTestnetCluster -startTestnetCluster startupParams cleanupRef = do - { testnet - , channels - , workdirAbsolute - } <- annotateError "Could not start cardano-testnet" - $ startCardanoTestnet startupParams cleanupRef +startTestnetCluster cfg cleanupRef = do + { testnet, channels, workdirAbsolute } <- + annotateError "Could not start cardano-testnet" $ + startCardanoTestnet cfg.clusterConfig cleanupRef { paths } <- waitUntil (Milliseconds 4000.0) $ map hush @@ -137,8 +134,8 @@ startTestnetCluster startupParams cleanupRef = do kupo /\ kupoWorkdir <- scheduleCleanup cleanupRef - (startKupo startupParams paths cleanupRef) - (stopChildProcessWithPort startupParams.kupoConfig.port <<< fst) + (startKupo cfg paths cleanupRef) + (stopChildProcessWithPort cfg.kupoConfig.port <<< fst) void $ Aff.forkAff (waitForClose kupo *> runCleanup cleanupRef) @@ -158,8 +155,8 @@ startTestnetCluster startupParams cleanupRef = do ogmios <- scheduleCleanup cleanupRef - (startOgmios startupParams paths) - (stopChildProcessWithPort startupParams.ogmiosConfig.port) + (startOgmios cfg paths) + (stopChildProcessWithPort cfg.ogmiosConfig.port) void $ Aff.forkAff (waitForClose ogmios *> runCleanup cleanupRef) @@ -177,9 +174,8 @@ startTestnetCluster startupParams cleanupRef = do -- | Runs cardano-testnet executable with provided params. spawnCardanoTestnet - :: forall r - . { cwd :: FilePath } - -> { | CardanoTestnetStartupParams r } + :: { cwd :: FilePath } + -> TestnetClusterConfig -> Aff { testnet :: ManagedProcess, workspace :: FilePath } spawnCardanoTestnet { cwd } params = do env <- liftEffect Node.Process.getEnv @@ -216,25 +212,29 @@ spawnCardanoTestnet { cwd } params = do option :: forall a. Show a => String -> a -> Array String option name value = [ flag name, show value ] - moption :: forall a. Show a => String -> Maybe a -> Array String - moption name value = option name =<< Array.fromFoldable value + _moption :: forall a. Show a => String -> Maybe a -> Array String + _moption name value = option name =<< Array.fromFoldable value + -- FIXME options :: Array String options = join [ [ "cardano" ] , option "testnet-magic" params.testnetMagic - , Array.fromFoldable $ flag <<< show <$> params.era - , moption "active-slots-coeff" params.activeSlotsCoeff - , moption "enable-p2p" params.enableP2p - , moption "nodeLoggingFormat" params.nodeLoggingFormat - , moption "num-pool-nodes" params.numPoolNodes - , moption "epoch-length" params.epochLength - , moption "slot-length" params.slotLength + , [ flag $ show params.era ] ] +{- +, moption "active-slots-coeff" params.activeSlotsCoeff +, moption "enable-p2p" params.enableP2p +, moption "nodeLoggingFormat" params.nodeLoggingFormat +, moption "num-pool-nodes" params.numPoolNodes +, moption "epoch-length" params.epochLength +, moption "slot-length" params.slotLength +] +-} + startCardanoTestnet - :: forall r - . { | CardanoTestnetStartupParams r } + :: TestnetClusterConfig -> Ref (Array (Aff Unit)) -> Aff { testnet :: ManagedProcess diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 26ad7f887..afb68f426 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -5,13 +5,13 @@ module Ctl.Internal.Testnet.Types , TestnetPaths , Event(Ready872, Finished, Failed, StartupFailed) , StartupFailure(SpawnFailed, InitializationFailed) - , KupmiosConfig , NodeLocation , Node , GenesisUtxoKeyLocation , OptionalStartupParams , TestnetRuntime , TestnetClusterConfig + , TestnetConfig , LogParams , defaultOptionalStartupParams , defaultStartupParams @@ -20,11 +20,34 @@ module Ctl.Internal.Testnet.Types import Contract.Prelude import Contract.Config as Config +import Ctl.Internal.Contract.Hooks (Hooks) +import Ctl.Internal.ServerConfig (ServerConfig) +import Data.Log.Message (Message) import Data.Time.Duration (Milliseconds, Seconds) import Data.UInt (UInt) import Node.Path (FilePath) import Record as Record +type TestnetConfig = + { logLevel :: LogLevel + -- Server configs are used to deploy the corresponding services: + , ogmiosConfig :: ServerConfig + , kupoConfig :: ServerConfig + , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) + , suppressLogs :: Boolean + , hooks :: Hooks + , clusterConfig :: TestnetClusterConfig + } + +type TestnetClusterConfig = + { testnetMagic :: Int + , era :: Era + , slotLength :: Seconds + , epochSize :: Maybe UInt + , maxTxSize :: Maybe UInt + , raiseExUnitsToMax :: Boolean + } + data Era = Byron | Shelley @@ -129,10 +152,12 @@ type GenesisUtxoKeyLocation r = | r ) +{- type TestnetClusterConfig r = ( hooks :: Config.Hooks | KupmiosConfig (LogParams r) ) +-} type LogParams r = ( logLevel :: LogLevel @@ -141,11 +166,13 @@ type LogParams r = | r ) +{- type KupmiosConfig r = ( kupoConfig :: Config.ServerConfig , ogmiosConfig :: Config.ServerConfig | r ) +-} type TestnetRuntime r = ( nodes :: Array { | Node () } diff --git a/test/Plutip.purs b/test/Plutip.purs index c8c27ceed..cd463fe81 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -4,15 +4,11 @@ module Test.Ctl.Plutip import Prelude -import Contract.Test.Plutip (defaultPlutipConfig, noWallet) +import Contract.Test.Plutip (noWallet) +import Contract.Test.Testnet (defaultTestnetConfig) import Contract.Test.Utils (exitCode, interruptOnSignal) import Ctl.Internal.Contract.Monad (wrapQueryM) import Ctl.Internal.Testnet.Contract (runTestnetTestPlan, testTestnetContracts) -import Ctl.Internal.Testnet.Types (CardanoTestnetStartupParams) -import Ctl.Internal.Testnet.Types - ( LoggingFormat(LogAsJson) - , defaultStartupParams - ) as Testnet.Types import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(SIGINT)) import Effect (Effect) @@ -25,11 +21,9 @@ import Effect.Aff import Mote (group) import Mote.Monad (mapTest) import Mote.TestPlanM as Utils -import Record (union) as Record import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration import Test.Ctl.Plutip.Contract as Contract import Test.Ctl.Plutip.Contract.Assert as Assert -import Test.Ctl.Plutip.Contract.ClusterParameters as ClusterParameters import Test.Ctl.Plutip.Contract.Mnemonics as Mnemonics import Test.Ctl.Plutip.Contract.OgmiosMempool as OgmiosMempool import Test.Ctl.Plutip.ExUnits as ExUnits @@ -42,14 +36,14 @@ import Test.Spec.Runner (defaultConfig) -- Run with `npm run plutip-test` main :: Effect Unit main = interruptOnSignal SIGINT =<< launchAff do - let config = Record.union defaultStartupParams defaultPlutipConfig + let config = defaultTestnetConfig flip cancelWith (effectCanceler (exitCode 1)) do Utils.interpretWithConfig defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } $ group "cardano-testnet" do testTestnetContracts config Mnemonics.suite group "ExUnits - normal limits" do - testTestnetContracts config $ ExUnits.mkFailingSuite 3000 + testTestnetContracts config $ ExUnits.mkFailingSuite 3650 testTestnetContracts config $ ExUnits.mkSuite 2550 -- FIXME: group "ExUnits - relaxed limits" do -- testTestnetContracts configWithMaxExUnits $ ExUnits.mkSuite 3000 @@ -64,14 +58,7 @@ main = interruptOnSignal SIGINT =<< launchAff do UtxoDistribution.suite testTestnetContracts config OgmiosMempool.suite runTestnetTestPlan config SameWallets.suite - ClusterParameters.runTest - -defaultStartupParams :: { | CardanoTestnetStartupParams () } -defaultStartupParams = - ( Testnet.Types.defaultStartupParams - { testnetMagic: 2 } - ) - { nodeLoggingFormat = Just Testnet.Types.LogAsJson } +-- FIXME: ClusterParameters.runTest {- configWithMaxExUnits :: PlutipConfig diff --git a/test/Plutip/Contract/Mnemonics.purs b/test/Plutip/Contract/Mnemonics.purs index c6445c161..ffc88711a 100644 --- a/test/Plutip/Contract/Mnemonics.purs +++ b/test/Plutip/Contract/Mnemonics.purs @@ -28,7 +28,7 @@ suite = do do head <$> getWalletAddresses addrExpected <- addressFromBech32 - "addr1q8day0u0gtx3302u5mmgmw20q67s9mkglte8y8kqk75jge5mvvhnhsjfj5jfpt7dv4tu6wlz7z032cmmp9ljftjmkzfswlmg44" + "addr_test1qrday0u0gtx3302u5mmgmw20q67s9mkglte8y8kqk75jge5mvvhnhsjfj5jfpt7dv4tu6wlz7z032cmmp9ljftjmkzfsdfxge2" addr1 `shouldEqual` pure addrExpected do addr1 <- withKeyWalletFromMnemonic @@ -40,7 +40,7 @@ suite = do do head <$> getWalletAddresses addrExpected <- addressFromBech32 - "addr1q9mmg8l2w7ar4cj89jte699dxuu0u3partkjt7fqdga5a7u6w4gzwu7mms8sn7rd0apcwtyu2xjzflvm7sc5vd3vtvpqnux32a" + "addr_test1qpmmg8l2w7ar4cj89jte699dxuu0u3partkjt7fqdga5a7u6w4gzwu7mms8sn7rd0apcwtyu2xjzflvm7sc5vd3vtvpqs2m3xz" addr1 `shouldEqual` pure addrExpected where diff --git a/test/Plutip/Logging.purs b/test/Plutip/Logging.purs index 1dcc04e6a..9d459a626 100644 --- a/test/Plutip/Logging.purs +++ b/test/Plutip/Logging.purs @@ -5,7 +5,8 @@ module Test.Ctl.Plutip.Logging import Prelude import Contract.Log (logWarn') -import Contract.Test.Plutip (runPlutipContract) +import Contract.Test.Testnet (defaultTestnetConfig) +import Ctl.Internal.Testnet.Contract (runTestnetContract) import Data.Log.Level (LogLevel(Error)) import Data.Maybe (Maybe(Just)) import Effect.Aff (Aff, try) @@ -14,7 +15,6 @@ import Effect.Exception (throw) import Effect.Ref as Ref import Mote (group, test) import Mote.TestPlanM (TestPlanM) -import Test.Ctl.Plutip.Common (config) import Test.Spec.Assertions (shouldEqual) suite :: TestPlanM (Aff Unit) Unit @@ -24,12 +24,12 @@ suite = do hasLogged <- liftEffect $ Ref.new false let config' = - config + defaultTestnetConfig { customLogger = Just \_ _ -> liftEffect $ Ref.write true hasLogged , suppressLogs = false } - runPlutipContract config' unit \_ -> do + runTestnetContract config' unit \_ -> do logWarn' "" hasLoggedResult <- liftEffect $ Ref.read hasLogged hasLoggedResult `shouldEqual` true @@ -37,12 +37,12 @@ suite = do hasLogged <- liftEffect $ Ref.new false let config' = - config + defaultTestnetConfig { customLogger = Just \_ _ -> liftEffect $ Ref.write true hasLogged , suppressLogs = true } - runPlutipContract config' unit \_ -> do + runTestnetContract config' unit \_ -> do logWarn' "" hasLoggedResult <- liftEffect $ Ref.read hasLogged hasLoggedResult `shouldEqual` false @@ -50,12 +50,12 @@ suite = do hasLogged <- liftEffect $ Ref.new false let config' = - config + defaultTestnetConfig { customLogger = Just \_ _ -> liftEffect $ Ref.write true hasLogged , suppressLogs = true } - void $ try $ runPlutipContract config' unit \_ -> do + void $ try $ runTestnetContract config' unit \_ -> do logWarn' "" liftEffect $ throw "Exception" hasLoggedResult <- liftEffect $ Ref.read hasLogged @@ -64,14 +64,14 @@ suite = do hasLogged <- liftEffect $ Ref.new false let config' = - config + defaultTestnetConfig { customLogger = Just writeLog , suppressLogs = false , logLevel = Error } writeLog lgl m = liftEffect $ when (m.level >= lgl) $ do Ref.write true hasLogged - runPlutipContract config' unit \_ -> do + runTestnetContract config' unit \_ -> do logWarn' "" hasLoggedResult <- liftEffect $ Ref.read hasLogged hasLoggedResult `shouldEqual` false diff --git a/test/Plutip/UtxoDistribution.purs b/test/Plutip/UtxoDistribution.purs index fd7afd736..11cf6f481 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Plutip/UtxoDistribution.purs @@ -29,9 +29,9 @@ import Contract.Test.Plutip ( class UtxoDistribution , InitialUTxOs , InitialUTxOsWithStakeKey(InitialUTxOsWithStakeKey) - , runPlutipContract , withStakeKey ) +import Contract.Test.Testnet (defaultTestnetConfig) import Contract.Utxos (utxosAt) import Contract.Value (Value, lovelaceValueOf) import Contract.Wallet @@ -43,6 +43,7 @@ import Contract.Wallet ) import Control.Lazy (fix) import Ctl.Internal.Test.UtxoDistribution (encodeDistribution, keyWallets) +import Ctl.Internal.Testnet.Contract (runTestnetContract) import Data.Array (foldl, head, replicate, zip) import Data.Array.NonEmpty (fromNonEmpty) as NEArray import Data.Foldable (intercalate) @@ -59,7 +60,7 @@ import Effect.Exception (throw) import Mote (group, test) import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) -import Test.Ctl.Plutip.Common (config, privateStakeKey) +import Test.Ctl.Plutip.Common (privateStakeKey) import Test.QuickCheck (class Arbitrary, arbitrary) import Test.QuickCheck.Gen ( Gen @@ -80,7 +81,8 @@ suite = group "UtxoDistribution" do let distribution :: Array InitialUTxOs distribution = replicate 2 [ BigNum.fromInt 1_000_000_000 ] - runPlutipContract config distribution $ checkUtxoDistribution distribution + runTestnetContract defaultTestnetConfig distribution $ + checkUtxoDistribution distribution test "stake key transfers with distribution: stake + [[1000000000,1000000000]]" @@ -89,7 +91,8 @@ suite = group "UtxoDistribution" do distribution :: Array InitialUTxOsWithStakeKey distribution = withStakeKey privateStakeKey <$> replicate 2 [ BigNum.fromInt 1_000_000_000 ] - runPlutipContract config distribution $ checkUtxoDistribution distribution + runTestnetContract defaultTestnetConfig distribution $ + checkUtxoDistribution distribution test "stake key transfers with distribution: ([[1000000000,1000000000]], stake + [[1000000000,1000000000]])" @@ -100,7 +103,8 @@ suite = group "UtxoDistribution" do distribution = distribution1 /\ (withStakeKey privateStakeKey <$> distribution1) - runPlutipContract config distribution $ checkUtxoDistribution distribution + runTestnetContract defaultTestnetConfig distribution $ + checkUtxoDistribution distribution distrs <- liftEffect $ randomSample' 5 arbitrary for_ distrs $ \distr -> @@ -111,7 +115,7 @@ suite = group "UtxoDistribution" do $ withArbUtxoDistr distr - \randDistr -> runPlutipContract config randDistr $ + \randDistr -> runTestnetContract defaultTestnetConfig randDistr $ checkUtxoDistribution randDistr checkUtxoDistribution From 0fef52ee27df5c93a0b52cf81a97cfff6d488006 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 28 Jun 2024 17:09:07 +0400 Subject: [PATCH 252/373] Fix the tests --- examples/AdditionalUtxos.purs | 21 ++++--- examples/BalanceTxConstraints.purs | 4 +- examples/ChangeGeneration.purs | 9 ++- examples/ContractTestUtils.purs | 4 +- examples/KeyWallet/SignMultiple.purs | 8 +-- examples/OneShotMinting.purs | 7 ++- examples/PlutusV2/ReferenceInputs.purs | 6 +- examples/SignMultiple.purs | 8 +-- examples/TxChaining.purs | 8 +-- src/Contract/Transaction.purs | 4 +- src/Contract/UnbalancedTx.purs | 10 ++- src/Internal/Plutip/Server.purs | 3 +- src/Internal/ProcessConstraints.purs | 6 +- src/Internal/Test/KeyDir.purs | 5 +- src/Internal/Test/UtxoDistribution.purs | 4 +- test/BalanceTx/Time.purs | 6 +- test/Plutip.purs | 5 +- test/Plutip/Common.purs | 2 +- test/Plutip/Contract.purs | 84 ++++++++++++------------- test/Plutip/Staking.purs | 80 +++++++++++------------ test/Utils/DrainWallets.purs | 5 +- 21 files changed, 147 insertions(+), 142 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index 9431ba154..b11109d6c 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -46,7 +46,7 @@ import Contract.Value (Value) import Contract.Value (lovelaceValueOf) as Value import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (fromFoldable) as Array -import Data.Map (difference, empty, filter, keys) as Map +import Data.Map (difference, filter, keys) as Map import JS.BigInt (fromInt) as BigInt import Test.QuickCheck (arbitrary) import Test.QuickCheck.Gen (randomSampleOne) @@ -63,8 +63,8 @@ contract testAdditionalUtxoOverlap = withoutSync do logInfo' "Running Examples.AdditionalUtxos" validator <- alwaysSucceedsScriptV2 let vhash = validatorHash validator - { unbalancedTx, datum } <- payToValidator vhash - withBalancedTx unbalancedTx Map.empty mempty \balancedTx -> do + { unbalancedTx, usedUtxos, datum } <- payToValidator vhash + withBalancedTx unbalancedTx usedUtxos mempty \balancedTx -> do balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx when testAdditionalUtxoOverlap $ awaitTxConfirmed txHash @@ -74,7 +74,12 @@ contract testAdditionalUtxoOverlap = withoutSync do spendFromValidator validator additionalUtxos datum payToValidator - :: ValidatorHash -> Contract { unbalancedTx :: Transaction, datum :: Datum } + :: ValidatorHash + -> Contract + { unbalancedTx :: Transaction + , usedUtxos :: UtxoMap + , datum :: Datum + } payToValidator vhash = do scriptRef <- liftEffect (NativeScriptRef <$> randomSampleOne arbitrary) let @@ -93,8 +98,8 @@ payToValidator vhash = do lookups :: ScriptLookups lookups = Lookups.datum datum - unbalancedTx <- mkUnbalancedTx lookups constraints - pure { unbalancedTx, datum } + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + pure { unbalancedTx, usedUtxos, datum } spendFromValidator :: Validator -> UtxoMap -> Datum -> Contract Unit spendFromValidator validator additionalUtxos datum = do @@ -128,8 +133,8 @@ spendFromValidator validator additionalUtxos datum = do balancerConstraints = BalancerConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx Map.empty balancerConstraints + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balancedTx <- balanceTx unbalancedTx usedUtxos balancerConstraints balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index 5d597b47b..937329e40 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -176,9 +176,9 @@ contract (ContractParams p) = do <> BalanceTxConstraints.mustUseCollateralUtxos bobsCollateral void $ runChecks checks $ lift do - unbalancedTx <- mkUnbalancedTx lookups constraints + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx Map.empty balanceTxConstraints + balancedTx <- balanceTx unbalancedTx usedUtxos balanceTxConstraints balancedSignedTx <- (withKeyWallet p.bobKeyWallet <<< signTransaction) diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 555335212..d96ef3387 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -28,9 +28,8 @@ import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds import Data.Array (fold, length, replicate, take, zip) import Data.Lens ((^.)) -import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing)) -import Data.Tuple (Tuple(Tuple)) +import Data.Tuple.Nested ((/\)) import JS.BigInt (fromInt) as BigInt import Test.Spec.Assertions (shouldEqual) @@ -50,7 +49,7 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = constraintsToSelf :: TxConstraints constraintsToSelf = fold <<< take outputsToSelf <<< fold $ replicate outputsToSelf - $ zip pkhs skhs <#> \(Tuple pkh mbSkh) -> case mbSkh of + $ zip pkhs skhs <#> \(pkh /\ mbSkh) -> case mbSkh of Nothing -> Constraints.mustPayToPubKey pkh value Just skh -> Constraints.mustPayToPubKeyAddress pkh skh value @@ -64,8 +63,8 @@ checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = lookups :: Lookups.ScriptLookups lookups = mempty - unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx Map.empty + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balancedTx <- balanceTx unbalancedTx usedUtxos -- just to check that attaching datums works ( mustSendChangeWithDatum $ OutputDatum $ Integer $ BigInt.fromInt 1000 diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index aa8b09b52..edc2ea175 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -159,8 +159,8 @@ mkContract p = do lookups :: Lookups.ScriptLookups lookups = Lookups.plutusMintingPolicy p.mintingPolicy - unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx Map.empty mempty + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balancedTx <- balanceTx unbalancedTx usedUtxos mempty balancedSignedTx <- signTransaction balancedTx txId <- submit balancedSignedTx diff --git a/examples/KeyWallet/SignMultiple.purs b/examples/KeyWallet/SignMultiple.purs index 73ed83292..3e4ee3c95 100644 --- a/examples/KeyWallet/SignMultiple.purs +++ b/examples/KeyWallet/SignMultiple.purs @@ -43,17 +43,17 @@ main = runKeyWalletContract_ \pkh lovelace unlock -> do lookups :: Lookups.ScriptLookups lookups = mempty - unbalancedTx0 <- mkUnbalancedTx lookups constraints - unbalancedTx1 <- mkUnbalancedTx lookups constraints + unbalancedTx0 /\ usedUtxos0 <- mkUnbalancedTx lookups constraints + unbalancedTx1 /\ usedUtxos1 <- mkUnbalancedTx lookups constraints txIds <- withBalancedTxs [ { transaction: unbalancedTx0 - , extraUtxos: Map.empty + , extraUtxos: usedUtxos0 , balancerConstraints: mempty } , { transaction: unbalancedTx1 - , extraUtxos: Map.empty + , extraUtxos: usedUtxos1 , balancerConstraints: mempty } ] $ \balancedTxs -> do diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 72af40ca7..8c0b1eb61 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -56,7 +56,7 @@ import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mkAssetName) as Helpers import Data.Array (head, singleton) as Array import Data.Lens (view) -import Data.Map (empty, toUnfoldable) as Map +import Data.Map (empty, toUnfoldable, union) as Map import Effect.Exception (error, throw) import JS.BigInt (BigInt) @@ -129,8 +129,9 @@ submitTxFromConstraintsReturningFee constraints extraUtxos balancerConstraints = do - unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx extraUtxos balancerConstraints + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balancedTx <- balanceTx unbalancedTx (Map.union extraUtxos usedUtxos) + balancerConstraints balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx pure { txHash, txFinalFee: view (_body <<< _fee) balancedSignedTx } diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index c01672101..8b4743102 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -75,9 +75,9 @@ contract = do lookups = mempty void $ runChecks checks $ lift do - unbalancedTx <- mkUnbalancedTx lookups constraints - balancedSignedTx <- signTransaction =<< balanceTx unbalancedTx Map.empty - mempty + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balancedSignedTx <- signTransaction + =<< balanceTx unbalancedTx usedUtxos mempty txHash <- submit balancedSignedTx logInfo' $ "Tx ID: " <> show txHash awaitTxConfirmed txHash diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 1f371a856..137444f72 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -73,17 +73,17 @@ contract = do lookups :: Lookups.ScriptLookups lookups = mempty - unbalancedTx0 <- mkUnbalancedTx lookups constraints - unbalancedTx1 <- mkUnbalancedTx lookups constraints + unbalancedTx0 /\ usedUtxos0 <- mkUnbalancedTx lookups constraints + unbalancedTx1 /\ usedUtxos1 <- mkUnbalancedTx lookups constraints txIds <- withBalancedTxs [ { transaction: unbalancedTx0 - , extraUtxos: Map.empty + , extraUtxos: usedUtxos0 , balancerConstraints: mempty } , { transaction: unbalancedTx1 - , extraUtxos: Map.empty + , extraUtxos: usedUtxos1 , balancerConstraints: mempty } ] $ \balancedTxs -> do diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index f923869ea..80e995a3c 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -54,9 +54,9 @@ contract = do lookups0 :: Lookups.ScriptLookups lookups0 = mempty - unbalancedTx0 <- mkUnbalancedTx lookups0 constraints + unbalancedTx0 /\ usedUtxos0 <- mkUnbalancedTx lookups0 constraints - withBalancedTx unbalancedTx0 Map.empty mempty \balancedTx0 -> do + withBalancedTx unbalancedTx0 usedUtxos0 mempty \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 additionalUtxos <- createAdditionalUtxos balancedSignedTx0 @@ -70,8 +70,8 @@ contract = do balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx1 <- mkUnbalancedTx lookups1 constraints - balancedTx1 <- balanceTx unbalancedTx1 Map.empty balanceTxConstraints + unbalancedTx1 /\ usedUtxos1 <- mkUnbalancedTx lookups1 constraints + balancedTx1 <- balanceTx unbalancedTx1 usedUtxos1 balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 txId0 <- submit balancedSignedTx0 diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 003097e67..d7524907a 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -387,8 +387,8 @@ submitTxFromConstraints -> TxConstraints -> Contract TransactionHash submitTxFromConstraints lookups constraints = do - unbalancedTx <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx Map.empty mempty + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balancedTx <- balanceTx unbalancedTx usedUtxos mempty balancedSignedTx <- signTransaction balancedTx submit balancedSignedTx diff --git a/src/Contract/UnbalancedTx.purs b/src/Contract/UnbalancedTx.purs index fe88a4eb4..e8f349131 100644 --- a/src/Contract/UnbalancedTx.purs +++ b/src/Contract/UnbalancedTx.purs @@ -7,7 +7,7 @@ module Contract.UnbalancedTx import Prelude -import Cardano.Types (Transaction) +import Cardano.Types (Transaction, UtxoMap) import Contract.Monad (Contract) import Control.Monad.Error.Class (throwError) import Ctl.Internal.ProcessConstraints as PC @@ -18,6 +18,7 @@ import Ctl.Internal.ProcessConstraints.Error import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.TxConstraints (TxConstraints) import Data.Either (Either(Left, Right)) +import Data.Tuple.Nested (type (/\)) import Effect.Exception (error) -- | Create an `UnbalancedTx` given `ScriptLookups` and @@ -29,11 +30,14 @@ import Effect.Exception (error) mkUnbalancedTxE :: ScriptLookups -> TxConstraints - -> Contract (Either MkUnbalancedTxError Transaction) + -> Contract (Either MkUnbalancedTxError (Transaction /\ UtxoMap)) mkUnbalancedTxE = PC.mkUnbalancedTxImpl -- | As `mkUnbalancedTxE`, but 'throwing'. -mkUnbalancedTx :: ScriptLookups -> TxConstraints -> Contract Transaction +mkUnbalancedTx + :: ScriptLookups + -> TxConstraints + -> Contract (Transaction /\ UtxoMap) mkUnbalancedTx lookups constraints = mkUnbalancedTxE lookups constraints >>= case _ of Left err -> throwError $ error $ explainMkUnbalancedTxError err diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index de2e51477..7eea80025 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -376,8 +376,7 @@ startPlutipContractEnv plutipCfg distr cleanupRef = do -> Aff wallets mkWallets' env ourKey response = do runContractInEnv - -- TODO: uncomment me - env -- { customLogger = Just (\_ _ -> pure unit) } + env { customLogger = Just (\_ _ -> pure unit) } do wallets <- liftContractM diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index a2cf08b0d..ad69f9280 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -31,7 +31,9 @@ import Cardano.Types , TransactionUnspentOutput(TransactionUnspentOutput) , UtxoMap , Value(Value) + , _witnessSet ) +import Cardano.Types as Cardano import Cardano.Types.Address ( Address(BaseAddress, EnterpriseAddress) , getPaymentCredential @@ -150,7 +152,7 @@ import Data.Array (mapMaybe, singleton, (:)) as Array import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either, hush, isRight, note) import Data.Foldable (foldM) -import Data.Lens ((%=), (.=), (<>=)) +import Data.Lens ((%=), (.=), (.~), (<>=)) import Data.Lens.Getter (use) import Data.Lens.Iso.Newtype (_Newtype) import Data.List (List(Nil, Cons)) @@ -269,7 +271,7 @@ addFakeScriptDataHash = runExceptT do CannotAttachRedeemer tx' <- ExceptT $ liftEffect $ setScriptDataHash costModels reds dats tx <#> Right - _cpsTransaction .= tx' + _cpsTransaction .= (tx' # _witnessSet <<< Cardano._redeemers .~ reds) -- | Add the remaining balance of the total value that the tx must spend. -- | See note [Balance of value spent] diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 8679ce208..7c523f04c 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -394,8 +394,9 @@ returnFunds backup env allWalletsArray mbFundTotal hasRun = <> foldMap mustBeSignedBy pkhs lookups = unspentOutputs utxos - unbalancedTx <- liftedE $ mkUnbalancedTxImpl lookups constraints - balancedTx <- balanceTx unbalancedTx Map.empty mempty + unbalancedTx /\ usedUtxos <- liftedE $ mkUnbalancedTxImpl lookups + constraints + balancedTx <- balanceTx unbalancedTx usedUtxos mempty balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) (wrap $ unwrap balancedTx) diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index 35f1f16a8..339864d80 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -216,10 +216,10 @@ transferFundsFromEnterpriseToBase ourKey wallets = do constraints :: Constraints.TxConstraints constraints = Constraints.mustBeSignedBy ourPkh <> foldMap constraintsForWallet walletsInfo - unbalancedTx <- mkUnbalancedTx lookups constraints + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints signedTx <- withKeyWallet ourWallet $ - signTransaction =<< balanceTx unbalancedTx Map.empty mempty + signTransaction =<< balanceTx unbalancedTx usedUtxos mempty signedTx' <- foldM (\tx { wallet } -> withKeyWallet wallet $ signTransaction tx) signedTx diff --git a/test/BalanceTx/Time.purs b/test/BalanceTx/Time.purs index 739d120a7..4e436ce96 100644 --- a/test/BalanceTx/Time.purs +++ b/test/BalanceTx/Time.purs @@ -1,7 +1,6 @@ module Test.Ctl.BalanceTx.Time (suite) where import Contract.Prelude -import Data.Lens import Cardano.Types (BigNum, Transaction, _body) import Cardano.Types.BigNum (fromInt, toInt) as BigNum @@ -26,6 +25,7 @@ import Contract.TxConstraints (mustValidateIn) import Contract.UnbalancedTx (mkUnbalancedTxE) import Control.Monad.Except (throwError) import Ctl.Internal.Types.Interval (Interval) +import Data.Lens ((^.)) import Effect.Aff (Aff) import Effect.Exception (error) import JS.BigInt (fromString) as BigInt @@ -83,7 +83,7 @@ mkTestFromSingleInterval interval = do mutx <- mkUnbalancedTxE emptyLookup constraint case mutx of Left e -> fail $ show e - Right utx -> + Right (utx /\ _) -> do returnedInterval <- getTimeFromUnbalanced utx returnedInterval `shouldEqual` interval @@ -118,7 +118,7 @@ mkTestMultipleInterval intervals expected = do mutx <- mkUnbalancedTxE emptyLookup constraint case mutx of Left e -> fail $ show e - Right utx -> + Right (utx /\ _) -> do returnedInterval <- getTimeFromUnbalanced utx returnedInterval `shouldEqual` expected diff --git a/test/Plutip.purs b/test/Plutip.purs index 648bea2e4..2a582b224 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -20,7 +20,6 @@ import Ctl.Internal.Plutip.Server , stopPlutipCluster ) import Ctl.Internal.Plutip.Types (StopClusterResponse(StopClusterSuccess)) -import Data.Log.Level (LogLevel(..)) import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(SIGINT)) import Effect (Effect) @@ -37,7 +36,7 @@ import Mote.Monad (mapTest) import Mote.TestPlanM (TestPlanM) import Mote.TestPlanM as Utils import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration -import Test.Ctl.Plutip.Common (config) as Config +import Test.Ctl.Plutip.Common (config) import Test.Ctl.Plutip.Contract as Contract import Test.Ctl.Plutip.Contract.Assert as Assert import Test.Ctl.Plutip.Contract.ClusterParameters as ClusterParameters @@ -51,8 +50,6 @@ import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface import Test.Spec.Assertions (shouldSatisfy) import Test.Spec.Runner (defaultConfig) -config = Config.config { suppressLogs = false, logLevel = Trace } - -- Run with `npm run plutip-test` main :: Effect Unit main = interruptOnSignal SIGINT =<< launchAff do diff --git a/test/Plutip/Common.purs b/test/Plutip/Common.purs index 0dc461e79..3cd0304fb 100644 --- a/test/Plutip/Common.purs +++ b/test/Plutip/Common.purs @@ -15,7 +15,7 @@ import Data.Newtype (wrap) import Partial.Unsafe (unsafePartial) config :: PlutipConfig -config = defaultPlutipConfig { suppressLogs = false } +config = defaultPlutipConfig privateStakeKey :: PrivateStakeKey privateStakeKey = wrap $ unsafePartial $ fromJust diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 1123e0631..ecbe18e71 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -12,12 +12,10 @@ import Cardano.Transaction.Builder ) import Cardano.Types ( Address - , Credential(..) , GeneralTransactionMetadata(GeneralTransactionMetadata) - , StakeCredential(..) + , StakeCredential(StakeCredential) , TransactionUnspentOutput(TransactionUnspentOutput) ) -import Cardano.Types.Address (mkPaymentAddress) import Cardano.Types.AssetName as AssetName import Cardano.Types.Coin as Coin import Cardano.Types.Credential @@ -31,7 +29,6 @@ import Cardano.Types.Value (lovelaceValueOf) import Contract.Address ( PaymentPubKeyHash(PaymentPubKeyHash) , StakePubKeyHash - , getNetworkId , mkAddress ) import Contract.AuxiliaryData (setGeneralTxMetadata) @@ -95,8 +92,6 @@ import Contract.Transaction , _output , awaitTxConfirmed , balanceTx - , balanceTx - , balanceTxE , balanceTxE , buildTx , createAdditionalUtxos @@ -246,7 +241,7 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- mkUnbalancedTx lookups constraints + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints res <- ( balanceTxE ubTx Map.empty (mustNotSpendUtxosWithOutRefs $ Map.keys utxos) @@ -278,7 +273,7 @@ suite = do withWallets distribution \_ → pure unit - only $ group "Contract interface" do + group "Contract interface" do test "mustUseCollateralUtxos should not fail if enough UTxOs are provided" do @@ -321,8 +316,8 @@ suite = do constraints = Constraints.mustSpendScriptOutput txInput unitRedeemer - ubTx <- mkUnbalancedTx lookups constraints - res <- balanceTxE ubTx Map.empty + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + res <- balanceTxE ubTx usedUtxos (mustUseCollateralUtxos bobsCollateral) res `shouldSatisfy` isRight @@ -366,7 +361,7 @@ suite = do constraints = Constraints.mustSpendScriptOutput txInput unitRedeemer - ubTx <- mkUnbalancedTx lookups constraints + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints res <- balanceTxE ubTx Map.empty (mustUseCollateralUtxos Map.empty) res `shouldSatisfy` case _ of Left (InsufficientCollateralUtxos mp) -> Map.isEmpty mp @@ -397,7 +392,7 @@ suite = do withKeyWallet bob do pure unit -- sign, balance, submit, etc. - only $ test + test "Payment keyhash to payment keyhash transaction (Pkh2Pkh example)" do let @@ -558,8 +553,8 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + bsTx <- signTransaction =<< balanceTx ubTx usedUtxos mempty txId <- submit bsTx awaitTxConfirmed txId pure txId @@ -592,8 +587,8 @@ suite = do lookups :: Lookups.ScriptLookups lookups = Lookups.unspentOutputs utxos - ubTx <- mkUnbalancedTx lookups constraints - tx <- signTransaction =<< balanceTx ubTx Map.empty mempty + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + tx <- signTransaction =<< balanceTx ubTx usedUtxos mempty let signWithWallet txToSign wallet = withKeyWallet wallet (signTransaction txToSign) @@ -651,8 +646,8 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + bsTx <- signTransaction =<< balanceTx ubTx usedUtxos mempty txId <- submit bsTx awaitTxConfirmed txId pure txId @@ -675,9 +670,9 @@ suite = do lookups :: Lookups.ScriptLookups lookups = Lookups.unspentOutputs utxos - ubTx <- mkUnbalancedTx lookups constraints + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints -- Bob signs the tx - tx <- signTransaction =<< balanceTx ubTx Map.empty mempty + tx <- signTransaction =<< balanceTx ubTx usedUtxos mempty let signWithWallet txToSign wallet = withKeyWallet wallet (signTransaction txToSign) @@ -709,8 +704,8 @@ suite = do lookups :: Lookups.ScriptLookups lookups = Lookups.plutusMintingPolicy mp - ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + bsTx <- signTransaction =<< balanceTx ubTx usedUtxos mempty submitAndLog bsTx test "mustProduceAtLeast spends native token" do @@ -794,7 +789,7 @@ suite = do $ BigNum.fromInt 101 lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh - ubTx <- mkUnbalancedTx lookups' constraints' + ubTx /\ usedUtxos <- mkUnbalancedTx lookups' constraints' result <- balanceTxE ubTx Map.empty mempty result `shouldSatisfy` isLeft @@ -879,8 +874,8 @@ suite = do $ BigNum.fromInt 101 lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh - ubTx <- mkUnbalancedTx lookups' constraints' - result <- balanceTxE ubTx Map.empty mempty + ubTx /\ usedUtxos <- mkUnbalancedTx lookups' constraints' + result <- balanceTxE ubTx usedUtxos mempty result `shouldSatisfy` isLeft test "Minting using NativeScript (multisig) as a policy" do @@ -1035,7 +1030,7 @@ suite = do givenMetadata = GeneralTransactionMetadata $ Map.fromFoldable [ BigNum.fromInt 8 /\ Metadatum.Text "foo" ] - ubTx <- mkUnbalancedTx lookups constraints + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints let ubTx' = setGeneralTxMetadata ubTx givenMetadata bsTx <- signTransaction =<< balanceTx ubTx' Map.empty mempty txId <- submit bsTx @@ -1118,8 +1113,8 @@ suite = do <> Lookups.plutusMintingPolicy mp2 <> Lookups.plutusMintingPolicy mp3 - ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + bsTx <- signTransaction =<< balanceTx ubTx usedUtxos mempty submitAndLog bsTx test "Multi-signature transaction" do @@ -1309,8 +1304,8 @@ suite = do balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx <- mkUnbalancedTx lookups constraints - balanceTxE unbalancedTx Map.empty balanceTxConstraints + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTxE unbalancedTx usedUtxos balanceTxConstraints let hasInsufficientBalance @@ -1533,8 +1528,8 @@ suite = do lookups :: Lookups.ScriptLookups lookups = Lookups.plutusMintingPolicy mp - ubTx <- mkUnbalancedTx lookups constraints - bsTx <- signTransaction =<< balanceTx ubTx Map.empty mempty + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + bsTx <- signTransaction =<< balanceTx ubTx usedUtxos mempty submit bsTx >>= awaitTxConfirmed logInfo' "Attempt to lock value" @@ -1725,9 +1720,9 @@ suite = do lookups0 :: Lookups.ScriptLookups lookups0 = mempty - unbalancedTx0 <- mkUnbalancedTx lookups0 constraints0 + unbalancedTx0 /\ usedUtxos <- mkUnbalancedTx lookups0 constraints0 - withBalancedTx unbalancedTx0 Map.empty mempty \balancedTx0 -> do + withBalancedTx unbalancedTx0 usedUtxos mempty \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 additionalUtxos <- createAdditionalUtxos balancedSignedTx0 @@ -1749,8 +1744,8 @@ suite = do balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx1 <- mkUnbalancedTx lookups1 constraints1 - balancedTx1 <- balanceTx unbalancedTx1 Map.empty + unbalancedTx1 /\ usedUtxos <- mkUnbalancedTx lookups1 constraints1 + balancedTx1 <- balanceTx unbalancedTx1 usedUtxos balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 @@ -1839,9 +1834,9 @@ suite = do lookups0 :: Lookups.ScriptLookups lookups0 = Lookups.plutusMintingPolicy mp <> datumLookup - unbalancedTx0 <- mkUnbalancedTx lookups0 constraints0 + unbalancedTx0 /\ usedUtxos <- mkUnbalancedTx lookups0 constraints0 - withBalancedTx unbalancedTx0 Map.empty mempty \balancedTx0 -> do + withBalancedTx unbalancedTx0 usedUtxos mempty \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 additionalUtxos <- createAdditionalUtxos balancedSignedTx0 @@ -1864,8 +1859,9 @@ suite = do balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx1 <- mkUnbalancedTx lookups1 constraints1 - balancedTx1 <- balanceTx unbalancedTx1 Map.empty + unbalancedTx1 /\ usedUtxos1 <- mkUnbalancedTx lookups1 + constraints1 + balancedTx1 <- balanceTx unbalancedTx1 usedUtxos1 balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 @@ -2087,16 +2083,16 @@ signMultipleContract = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx1 <- mkUnbalancedTx lookups constraints - ubTx2 <- mkUnbalancedTx lookups constraints + ubTx1 /\ usedUtxos1 <- mkUnbalancedTx lookups constraints + ubTx2 /\ usedUtxos2 <- mkUnbalancedTx lookups constraints withBalancedTxs [ { transaction: ubTx1 - , extraUtxos: Map.empty + , extraUtxos: usedUtxos1 , balancerConstraints: mempty } , { transaction: ubTx2 - , extraUtxos: Map.empty + , extraUtxos: usedUtxos2 , balancerConstraints: mempty } ] $ \txs -> do diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index a7b6f0baf..0161a2f0a 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -154,8 +154,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -167,8 +167,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog test "PlutusScript" do let @@ -203,8 +203,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -220,8 +220,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog test "NativeScript" do let @@ -251,8 +251,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Deregister stake key do @@ -264,8 +264,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog test "Pool registration & retirement" do let @@ -289,8 +289,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog privateStakeKey <- liftM (error "Failed to get private stake key") $ keyWalletPrivateStakeKey alice @@ -338,8 +338,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- List pools: the pool must appear in the list do @@ -365,8 +365,8 @@ suite = do Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog let waitEpoch :: Epoch -> Contract Epoch @@ -416,8 +416,8 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Register stake script @@ -429,8 +429,8 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Select a pool @@ -446,8 +446,8 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Wait until rewards @@ -478,8 +478,8 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Check rewards. @@ -532,8 +532,8 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Alice registers stake script (again, no need to validate it) @@ -545,8 +545,8 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Bob performs operations with the stake script that require his @@ -566,8 +566,8 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Wait until rewards @@ -598,8 +598,8 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash bobPkh <> Lookups.ownStakePubKeyHash bobStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Check rewards. @@ -635,8 +635,8 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Select a pool ID poolId <- selectPoolId @@ -651,8 +651,8 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Wait until rewards let @@ -685,8 +685,8 @@ suite = do lookups = Lookups.ownPaymentPubKeyHash alicePkh <> Lookups.ownStakePubKeyHash aliceStakePkh - ubTx <- mkUnbalancedTx lookups constraints - balanceTx ubTx Map.empty mempty >>= signTransaction >>= submitAndLog + ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too diff --git a/test/Utils/DrainWallets.purs b/test/Utils/DrainWallets.purs index cd636c29b..2ec20f955 100644 --- a/test/Utils/DrainWallets.purs +++ b/test/Utils/DrainWallets.purs @@ -40,6 +40,7 @@ import Data.Maybe (Maybe(Nothing)) import Data.Newtype (unwrap, wrap) import Data.String (joinWith) import Data.Traversable (for) +import Data.Tuple.Nested ((/\)) import Data.UInt as UInt import Effect (Effect) import Effect.Aff (Aff, launchAff_) @@ -120,9 +121,9 @@ run privateKey walletsDir = runContract config do <> foldMap (_.pkh >>> mustBeSignedBy) usedWallets lookups = unspentOutputs utxos - unbalancedTx <- mkUnbalancedTx lookups constraints + unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx Map.empty mempty + balancedTx <- balanceTx unbalancedTx usedUtxos mempty balancedSignedTx <- Array.foldM (\tx wallet -> withKeyWallet wallet $ signTransaction tx) (wrap $ unwrap balancedTx) From bdd2e4aa45b26a668c5badb880210f399ce66ac4 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 28 Jun 2024 16:23:01 +0200 Subject: [PATCH 253/373] Fix staking tests, Configure slot and epoch length --- flake.nix | 5 ++-- nix/default.nix | 19 ++++++++------- package.json | 2 +- src/Contract/Test/Testnet.purs | 6 ++--- src/Internal/Testnet/Server.purs | 20 ++++------------ src/Internal/Testnet/Types.purs | 4 ++-- test/Plutip/Staking.purs | 41 ++++++++++++-------------------- 7 files changed, 37 insertions(+), 60 deletions(-) diff --git a/flake.nix b/flake.nix index 24941f5d4..57c69d71d 100644 --- a/flake.nix +++ b/flake.nix @@ -233,11 +233,11 @@ buildInputs = [ inputs.kupo-nixos.packages.${pkgs.system}.kupo ]; # buildInputs = [ inputs.cardano-nix.packages.${pkgs.system}."kupo-${kupoVersion}" ]; }; - ctl-plutip-test = project.runPlutipTest { + ctl-testnet-test = project.runLocalTestnetTest { name = "ctl-plutip-test"; testMain = "Test.Ctl.Plutip"; }; - ctl-staking-test = project.runPlutipTest { + ctl-staking-test = project.runLocalTestnetTest { name = "ctl-staking-test"; testMain = "Test.Ctl.Plutip.Staking"; }; @@ -322,7 +322,6 @@ { plutip-server = (plutipServerFor system).hsPkgs.plutip-server.components.exes.plutip-server; - ogmios-plutip = cardano-nix.packages.${system}."ogmios-6.0.3"; ogmios = cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; cardano-testnet = cardano-node.packages.${system}.cardano-testnet; cardano-node = cardano-node.packages.${system}.cardano-node; diff --git a/nix/default.nix b/nix/default.nix index 2dc675259..0e60cdfaa 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -89,10 +89,10 @@ let , packageLockOnly ? false # If `true`, all of CTL's runtime dependencies will be added to the # shell's `packages`. These packages are *required* if you plan on running - # Plutip tests in your local shell environment (that is, not using Nix - # directly as with `runPlutipTest`). Make sure you have applied - # `overlays.runtime` or otherwise added the runtime packages to your - # package set if you select this option! + # cardano-testnet tests in your local shell environment (that is, not + # using Nix directly as with `runLocalTestnetTest`). Make sure you have + # applied `overlays.runtime` or otherwise added the runtime packages to + # your package set if you select this option! , withRuntime ? true # If `true`, the `chromium` package from your package set will be made # available in the shell environment. This can help with ensuring that @@ -332,7 +332,7 @@ let touch $out ''; - # Runs a test using Plutip. Takes the same arguments as `runPursTest` + # Runs a test using cardano-testnet. Takes the same arguments as `runPursTest` # # NOTE: You *must* either use CTL's `overlays.runtime` or otherwise make the # the following required `buildInputs` available in your own package set: @@ -340,19 +340,20 @@ let # - `ogmios` # - `kupo` # - `cardano-testnet` + # - `cardano-node` + # - `cardano-cli` # - runPlutipTest = + runLocalTestnetTest = args: runPursTest ( args // { buildInputs = with pkgs; [ - ogmios-plutip + ogmios kupo cardano-testnet cardano-node cardano-cli psmisc - plutip-server ] ++ (args.buildInputs or [ ]); } @@ -622,7 +623,7 @@ let in { inherit - buildPursProject buildPursDependencies runPursTest runPlutipTest runE2ETest + buildPursProject buildPursDependencies runPursTest runLocalTestnetTest runE2ETest bundlePursProjectEsbuild bundlePursProjectWebpack buildPursDocs # TODO: restore buildSearchablePursDocs and launchSearchablePursDocs diff --git a/package.json b/package.json index 3e6cfc8a0..f146609fa 100755 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "blockfrost-local-test": "source ./test/blockfrost-local.env && spago run --main Test.Ctl.Blockfrost.Contract", "unit-test": "spago run --main Test.Ctl.Unit", "plutip-test": "spago run --main Test.Ctl.Plutip", - "staking-test": "nix build .#checks.x86_64-linux.ctl-staking-test", + "staking-test": "spago run --main Test.Ctl.Plutip.Staking", "e2e-serve": "make esbuild-serve", "e2e-test": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run'", "e2e-test-debug": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run --no-headless'", diff --git a/src/Contract/Test/Testnet.purs b/src/Contract/Test/Testnet.purs index 2ecd1e48f..ab69276f0 100644 --- a/src/Contract/Test/Testnet.purs +++ b/src/Contract/Test/Testnet.purs @@ -30,9 +30,7 @@ defaultTestnetConfig = , clusterConfig: { testnetMagic: 2 , era: Babbage - , slotLength: Seconds 0.1 -- FIXME - , epochSize: Nothing -- FIXME - , maxTxSize: Nothing -- FIXME - , raiseExUnitsToMax: false -- FIXME + , slotLength: Seconds 0.1 + , epochSize: Nothing } } diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 72ad90124..717944c54 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -50,11 +50,11 @@ import Ctl.Internal.Testnet.Utils , getRuntime , readNodes ) -import Data.Array as Array import Data.Maybe (Maybe(Nothing, Just)) import Data.String (Pattern(Pattern)) import Data.String (stripPrefix, trim) as String import Data.Time.Duration (Milliseconds(Milliseconds)) +import Data.UInt (toString) as UInt import Debug (spy) import Effect.Aff (Aff) import Effect.Aff as Aff @@ -212,27 +212,17 @@ spawnCardanoTestnet { cwd } params = do option :: forall a. Show a => String -> a -> Array String option name value = [ flag name, show value ] - _moption :: forall a. Show a => String -> Maybe a -> Array String - _moption name value = option name =<< Array.fromFoldable value - - -- FIXME options :: Array String options = join [ [ "cardano" ] , option "testnet-magic" params.testnetMagic , [ flag $ show params.era ] + , option "slot-length" $ unwrap params.slotLength + , maybe mempty + (\epochSize -> [ flag "epoch-length", UInt.toString epochSize ]) + params.epochSize ] -{- -, moption "active-slots-coeff" params.activeSlotsCoeff -, moption "enable-p2p" params.enableP2p -, moption "nodeLoggingFormat" params.nodeLoggingFormat -, moption "num-pool-nodes" params.numPoolNodes -, moption "epoch-length" params.epochLength -, moption "slot-length" params.slotLength -] --} - startCardanoTestnet :: TestnetClusterConfig -> Ref (Array (Aff Unit)) diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index afb68f426..556027b52 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -44,8 +44,8 @@ type TestnetClusterConfig = , era :: Era , slotLength :: Seconds , epochSize :: Maybe UInt - , maxTxSize :: Maybe UInt - , raiseExUnitsToMax :: Boolean + -- FIXME: , maxTxSize :: Maybe UInt + -- FIXME: , raiseExUnitsToMax :: Boolean } data Era diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 630a407d1..7c3c6857c 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -29,14 +29,14 @@ import Contract.Staking , getValidatorHashDelegationsAndRewards ) import Contract.Test.Mote (TestPlanM, interpretWithConfig) -import Contract.Test.Plutip (runPlutipContract, withStakeKey) +import Contract.Test.Plutip (withStakeKey) +import Contract.Test.Testnet (defaultTestnetConfig) import Contract.Test.Utils (exitCode, interruptOnSignal) import Contract.Time (getCurrentEpoch) import Contract.Transaction ( Epoch(Epoch) , PoolPubKeyHash(PoolPubKeyHash) , balanceTx - , mkPoolPubKeyHash , signTransaction ) import Contract.TxConstraints @@ -68,7 +68,8 @@ import Contract.Wallet.Key (keyWalletPrivateStakeKey, publicKeyFromPrivateKey) import Ctl.Examples.AlwaysSucceeds (alwaysSucceedsScript) import Ctl.Examples.Helpers (submitAndLog) import Ctl.Examples.IncludeDatum (only42Script) -import Data.Array (head, (!!)) +import Ctl.Internal.Testnet.Contract (runTestnetContract) +import Data.Array (head) import Data.Array as Array import Data.Foldable (for_) import Data.Maybe (Maybe(Just, Nothing)) @@ -88,10 +89,8 @@ import Effect.Aff , launchAff ) import Effect.Aff.Class (liftAff) -import Effect.Class (liftEffect) import Effect.Exception (error) import Mote (group, skip, test) -import Test.Ctl.Plutip.Common (config) as Common import Test.Ctl.Plutip.Common (privateStakeKey) import Test.Spec.Assertions (shouldEqual, shouldSatisfy) import Test.Spec.Runner (defaultConfig) @@ -105,15 +104,8 @@ main = interruptOnSignal SIGINT =<< launchAff do suite :: TestPlanM (Aff Unit) Unit suite = do - -- We must never select this pool, because it retires at the third epoch - -- (this is Plutip internal knowledge) - -- https://github.com/mlabs-haskell/plutip/blob/7f2d59abd911dd11310404863cdedb2886902ebf/src/Test/Plutip/Internal/Cluster.hs#L692 - retiringPoolId <- liftEffect $ liftM (error "unable to decode poolId bech32") - $ mkPoolPubKeyHash - "pool1rv7ur8r2hz02lly9q8ehtwcrcydl3m2arqmndvwcqsfavgaemt6" let - -- A routine function that filters out retiring pool from the list of available - -- pools + -- A routine function that selects a pool from the list of available pools selectPoolId :: Contract PoolPubKeyHash selectPoolId = do pools <- getPoolIds @@ -122,8 +114,7 @@ suite = do for_ pools \poolId -> do logInfo' "Pool parameters" logInfo' <<< show =<< getPoolParameters poolId - liftM (error "unable to get any pools") - (Array.filter (_ /= retiringPoolId) pools !! 1) + liftM (error "unable to get any pools") $ head pools group "Staking" do group "Stake keys: register & deregister" do test "PubKey" do @@ -132,7 +123,7 @@ suite = do [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] - runPlutipContract config distribution $ flip withKeyWallet do + runTestnetContract config distribution $ flip withKeyWallet do alicePkh /\ aliceStakePkh <- do Tuple <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) @@ -172,7 +163,7 @@ suite = do [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] - runPlutipContract config distribution $ flip withKeyWallet do + runTestnetContract config distribution $ flip withKeyWallet do alicePkh /\ aliceStakePkh <- do Tuple <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) @@ -222,7 +213,7 @@ suite = do [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] - runPlutipContract config distribution $ flip withKeyWallet do + runTestnetContract config distribution $ flip withKeyWallet do alicePkh /\ aliceStakePkh <- do Tuple <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) @@ -266,7 +257,7 @@ suite = do [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] - runPlutipContract config distribution \alice -> withKeyWallet alice do + runTestnetContract config distribution \alice -> withKeyWallet alice do alicePkh /\ aliceStakePkh <- Tuple <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) <*> liftedM "Failed to get Stake PKH" @@ -385,7 +376,7 @@ suite = do [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] - runPlutipContract config distribution \alice -> + runTestnetContract config distribution \alice -> withKeyWallet alice do alicePkh /\ aliceStakePkh <- Tuple <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) @@ -494,7 +485,7 @@ suite = do [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] - runPlutipContract config distribution \(alice /\ bob) -> do + runTestnetContract config distribution \(alice /\ bob) -> do bobPkh /\ bobStakePkh <- withKeyWallet bob do Tuple <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) @@ -604,7 +595,7 @@ suite = do [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] - runPlutipContract config distribution \alice -> + runTestnetContract config distribution \alice -> withKeyWallet alice do alicePkh /\ aliceStakePkh <- Tuple <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) @@ -687,11 +678,9 @@ suite = do rewardsAfter `shouldSatisfy` \after -> after < rewardsBefore where config = - Common.config + defaultTestnetConfig { clusterConfig = - Common.config.clusterConfig - -- changing these constants breaks rewards - -- https://github.com/mlabs-haskell/plutip/issues/149 + defaultTestnetConfig.clusterConfig { slotLength = Seconds 0.05 , epochSize = Just $ UInt.fromInt 80 } From 5be22b6db932c70f535e02446d08d7da302aefec Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 28 Jun 2024 16:25:57 +0200 Subject: [PATCH 254/373] Rename ctl-testnet-test check to ctl-local-testnet-test --- Makefile | 2 +- flake.nix | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 775ba5657..421d89361 100644 --- a/Makefile +++ b/Makefile @@ -105,7 +105,7 @@ run-ci-actions: nix build -L .#checks.x86_64-linux.template-version nix build -L .#checks.x86_64-linux.ctl-unit-test nix build -L .#checks.x86_64-linux.ctl-e2e-test - nix build -L .#checks.x86_64-linux.ctl-plutip-test + nix build -L .#checks.x86_64-linux.ctl-local-testnet-test nix build -L .#checks.x86_64-linux.ctl-staking-test nix build -L .#checks.x86_64-linux.examples-imports-check diff --git a/flake.nix b/flake.nix index 57c69d71d..a12b7647e 100644 --- a/flake.nix +++ b/flake.nix @@ -233,8 +233,8 @@ buildInputs = [ inputs.kupo-nixos.packages.${pkgs.system}.kupo ]; # buildInputs = [ inputs.cardano-nix.packages.${pkgs.system}."kupo-${kupoVersion}" ]; }; - ctl-testnet-test = project.runLocalTestnetTest { - name = "ctl-plutip-test"; + ctl-local-testnet-test = project.runLocalTestnetTest { + name = "ctl-local-testnet-test"; testMain = "Test.Ctl.Plutip"; }; ctl-staking-test = project.runLocalTestnetTest { From aec43ad15a9d1d238986c77bbab6e619dcce5006 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 28 Jun 2024 16:39:17 +0200 Subject: [PATCH 255/373] Remove plutip-server --- flake.lock | 186 +++++++----------------------- flake.nix | 40 ------- nix/default.nix | 2 - plutip-server/.gitignore | 1 - plutip-server/LICENSE | 9 -- plutip-server/README.md | 13 --- plutip-server/cabal.project | 114 ------------------ plutip-server/default.nix | 59 ---------- plutip-server/fourmolu.yaml | 8 -- plutip-server/hie.yaml | 4 - plutip-server/plutip-server.cabal | 96 --------------- plutip-server/src/Api.hs | 67 ----------- plutip-server/src/Api/Handlers.hs | 118 ------------------- plutip-server/src/Main.hs | 59 ---------- plutip-server/src/Types.hs | 135 ---------------------- 15 files changed, 39 insertions(+), 872 deletions(-) delete mode 100644 plutip-server/.gitignore delete mode 100644 plutip-server/LICENSE delete mode 100644 plutip-server/README.md delete mode 100644 plutip-server/cabal.project delete mode 100644 plutip-server/default.nix delete mode 100644 plutip-server/fourmolu.yaml delete mode 100644 plutip-server/hie.yaml delete mode 100644 plutip-server/plutip-server.cabal delete mode 100644 plutip-server/src/Api.hs delete mode 100644 plutip-server/src/Api/Handlers.hs delete mode 100644 plutip-server/src/Main.hs delete mode 100644 plutip-server/src/Types.hs diff --git a/flake.lock b/flake.lock index b8bdb5862..3c0f3d6ca 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1719233847, - "narHash": "sha256-569bi4WS+xZek1JitRhDDUovdiGMRIXS65yicgg+i9I=", + "lastModified": 1719559353, + "narHash": "sha256-oVMUrDPUbVVsTWOsmtZkpHFr+oKPEezlSADm/s3A2/o=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "faab2780b99436e9b4bc953cc7c653d524dfd71d", + "rev": "35bd2072a08607a3b2e4b56cf9c243c449908017", "type": "github" }, "original": { @@ -204,23 +204,6 @@ "type": "github" } }, - "CHaP_20": { - "flake": false, - "locked": { - "lastModified": 1694601145, - "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "e8298604717dbaa311c1e42e021b571670f4b039", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, "CHaP_3": { "flake": false, "locked": { @@ -6921,22 +6904,6 @@ "type": "github" } }, - "flake-compat_57": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-compat_6": { "flake": false, "locked": { @@ -9421,25 +9388,6 @@ } }, "ghc910X": { - "flake": false, - "locked": { - "lastModified": 1714520650, - "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", - "ref": "ghc-9.10", - "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", - "revCount": 62663, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_2": { "flake": false, "locked": { "lastModified": 1713193157, @@ -9458,7 +9406,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_3": { + "ghc910X_2": { "flake": false, "locked": { "lastModified": 1713193157, @@ -9477,7 +9425,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_4": { + "ghc910X_3": { "flake": false, "locked": { "lastModified": 1711543129, @@ -9496,7 +9444,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_5": { + "ghc910X_4": { "flake": false, "locked": { "lastModified": 1711543129, @@ -9515,7 +9463,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_6": { + "ghc910X_5": { "flake": false, "locked": { "lastModified": 1713193157, @@ -9534,7 +9482,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_7": { + "ghc910X_6": { "flake": false, "locked": { "lastModified": 1711543129, @@ -9553,7 +9501,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_8": { + "ghc910X_7": { "flake": false, "locked": { "lastModified": 1711543129, @@ -9573,24 +9521,6 @@ } }, "ghc911": { - "flake": false, - "locked": { - "lastModified": 1714817013, - "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", - "ref": "refs/heads/master", - "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", - "revCount": 62816, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_2": { "flake": false, "locked": { "lastModified": 1713898958, @@ -9608,7 +9538,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_3": { + "ghc911_2": { "flake": false, "locked": { "lastModified": 1713898958, @@ -9626,7 +9556,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_4": { + "ghc911_3": { "flake": false, "locked": { "lastModified": 1711538967, @@ -9644,7 +9574,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_5": { + "ghc911_4": { "flake": false, "locked": { "lastModified": 1711538967, @@ -9662,7 +9592,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_6": { + "ghc911_5": { "flake": false, "locked": { "lastModified": 1713898958, @@ -9680,7 +9610,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_7": { + "ghc911_6": { "flake": false, "locked": { "lastModified": 1711538967, @@ -9698,7 +9628,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc911_8": { + "ghc911_7": { "flake": false, "locked": { "lastModified": 1711538967, @@ -10634,11 +10564,11 @@ "hackage-nix": { "flake": false, "locked": { - "lastModified": 1719275840, - "narHash": "sha256-2ISMXqr9YLKtMh2mgBRi3VkIhDOTIESLBhuirf8vs+o=", + "lastModified": 1719535035, + "narHash": "sha256-kCCfZytGgkRYlsiNe/dwLAnpNOvfywpjVl61hO/8l2M=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "b153f0235941a8bd8186db841ddc71ebab7fc71d", + "rev": "66f23365685f71610460f3c2c0dfa91f96c532ac", "type": "github" }, "original": { @@ -11091,8 +11021,8 @@ "cardano-shell": "cardano-shell_16", "flake-compat": "flake-compat_35", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "ghc910X": "ghc910X_5", - "ghc911": "ghc911_5", + "ghc910X": "ghc910X_4", + "ghc911": "ghc911_4", "hackage": [ "kupo-nixos", "iogx", @@ -11291,8 +11221,8 @@ "cardano-shell": "cardano-shell_19", "flake-compat": "flake-compat_42", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", - "ghc910X": "ghc910X_6", - "ghc911": "ghc911_6", + "ghc910X": "ghc910X_5", + "ghc911": "ghc911_5", "hackage": [ "kupo-nixos", "iogx", @@ -11353,8 +11283,8 @@ "cardano-shell": "cardano-shell_20", "flake-compat": "flake-compat_43", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", - "ghc910X": "ghc910X_7", - "ghc911": "ghc911_7", + "ghc910X": "ghc910X_6", + "ghc911": "ghc911_6", "hackage": [ "kupo-nixos", "iogx", @@ -11553,8 +11483,8 @@ "cardano-shell": "cardano-shell_23", "flake-compat": "flake-compat_49", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", - "ghc910X": "ghc910X_8", - "ghc911": "ghc911_8", + "ghc910X": "ghc910X_7", + "ghc911": "ghc911_7", "hackage": [ "kupo-nixos", "iogx", @@ -11845,8 +11775,6 @@ "cardano-shell": "cardano-shell_10", "flake-compat": "flake-compat_26", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "ghc910X": "ghc910X", - "ghc911": "ghc911", "hackage": [ "hackage-nix" ], @@ -11877,11 +11805,11 @@ "stackage": "stackage_9" }, "locked": { - "lastModified": 1719276636, - "narHash": "sha256-V8mcGq8ftAJifoq6/WmsBIvCJVFlgjvBGUkjT4FRtPI=", + "lastModified": 1719535822, + "narHash": "sha256-IteIKK4+GEZI2nHqCz0zRVgQ3aqs/WXKTOt2sbHJmGk=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "1ffa6ebe334d2375eee57151d9c1a14e153cfe62", + "rev": "72bc84d0a4e8d0536505628040d96fd0a9e16c70", "type": "github" }, "original": { @@ -11899,8 +11827,8 @@ "cardano-shell": "cardano-shell_11", "flake-compat": "flake-compat_27", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "ghc910X": "ghc910X_2", - "ghc911": "ghc911_2", + "ghc910X": "ghc910X", + "ghc911": "ghc911", "hackage": [ "kupo-nixos", "iogx", @@ -11957,8 +11885,8 @@ "cardano-shell": "cardano-shell_12", "flake-compat": "flake-compat_28", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "ghc910X": "ghc910X_3", - "ghc911": "ghc911_3", + "ghc910X": "ghc910X_2", + "ghc911": "ghc911_2", "hackage": [ "kupo-nixos", "iogx", @@ -12019,8 +11947,8 @@ "cardano-shell": "cardano-shell_13", "flake-compat": "flake-compat_29", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "ghc910X": "ghc910X_4", - "ghc911": "ghc911_4", + "ghc910X": "ghc910X_3", + "ghc911": "ghc911_3", "hackage": [ "kupo-nixos", "iogx", @@ -17423,11 +17351,11 @@ "sodium": "sodium_7" }, "locked": { - "lastModified": 1719237167, - "narHash": "sha256-ifW5Jfwu/iwYs0r7f8AdiWDQK+Pr1gZLz+p5u8OtOgo=", + "lastModified": 1719443312, + "narHash": "sha256-JNDuUSmV/o5ck1CfnBtX8GJE/Pli4zYE73LZZ7u0E2Q=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "577f4d5072945a88dda6f5cfe205e6b4829a0423", + "rev": "b4025c38b609c6fb99762e2a6201e4e3488a39d3", "type": "github" }, "original": { @@ -28094,41 +28022,6 @@ "type": "github" } }, - "plutip": { - "inputs": { - "CHaP": "CHaP_20", - "cardano-node": [ - "cardano-node" - ], - "flake-compat": "flake-compat_57", - "hackage-nix": [ - "hackage-nix" - ], - "haskell-nix": [ - "haskell-nix" - ], - "iohk-nix": [ - "iohk-nix" - ], - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1695131439, - "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "ref": "gergely/version-bump", - "repo": "plutip", - "type": "github" - } - }, "poetry2nix": { "inputs": { "flake-utils": "flake-utils_33", @@ -28655,8 +28548,7 @@ "haskell-nix", "nixpkgs-unstable" ], - "ogmios": "ogmios_2", - "plutip": "plutip" + "ogmios": "ogmios_2" } }, "rust-analyzer-src": { diff --git a/flake.nix b/flake.nix index a12b7647e..3cae1b428 100644 --- a/flake.nix +++ b/flake.nix @@ -72,19 +72,6 @@ blockfrost.url = "github:blockfrost/blockfrost-backend-ryo/v1.7.0"; db-sync.url = "github:input-output-hk/cardano-db-sync/13.1.0.0"; - # Plutip server related inputs - plutip = { - url = "github:mlabs-haskell/plutip?ref=gergely/version-bump"; - # TODO(bladyjoker): Why are we overriding inputs here? - inputs = { - nixpkgs.follows = "nixpkgs"; - iohk-nix.follows = "iohk-nix"; - haskell-nix.follows = "haskell-nix"; - hackage-nix.follows = "hackage-nix"; - cardano-node.follows = "cardano-node"; - }; - }; - hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects"; }; @@ -258,24 +245,6 @@ # }; }; }; - - plutipServerFor = system: - let - pkgs = import inputs.nixpkgs { - inherit system; - overlays = [ - inputs.haskell-nix.overlay - inputs.iohk-nix.overlays.crypto - ]; - }; - in - import ./plutip-server { - inherit pkgs; - inherit (inputs) plutip CHaP; - inherit (pkgs) system; - cardano-node = inputs.cardano-node; - src = ./plutip-server; - }; in { overlay = builtins.trace @@ -320,8 +289,6 @@ inherit (prev) system; in { - plutip-server = - (plutipServerFor system).hsPkgs.plutip-server.components.exes.plutip-server; ogmios = cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; cardano-testnet = cardano-node.packages.${system}.cardano-testnet; cardano-node = cardano-node.packages.${system}.cardano-node; @@ -337,21 +304,14 @@ ); }; - # flake from haskell.nix project - hsFlake = perSystem (system: (plutipServerFor system).flake { }); - devShells = perSystem (system: { # This is the default `devShell` and can be run without specifying # it (i.e. `nix develop`) default = (psProjectFor (nixpkgsFor system)).devShell; - - # This can be used with `nix develop .#devPlutipServer` to work with `./plutip-server` - devPlutipServer = ((plutipServerFor system).flake { }).devShell; }); packages = perSystem (system: (psProjectFor (nixpkgsFor system)).packages - // ((plutipServerFor system).flake { }).packages ); apps = perSystem (system: diff --git a/nix/default.nix b/nix/default.nix index 0e60cdfaa..247621269 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -132,7 +132,6 @@ let lists.optional withRuntime ( [ pkgs.ogmios - pkgs.plutip-server pkgs.kupo ] ) @@ -446,7 +445,6 @@ let nodeModules ogmios kupo - plutip-server chromium python38 # To serve bundled CTL # Utils needed by E2E test code diff --git a/plutip-server/.gitignore b/plutip-server/.gitignore deleted file mode 100644 index 838458f20..000000000 --- a/plutip-server/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/dist/ \ No newline at end of file diff --git a/plutip-server/LICENSE b/plutip-server/LICENSE deleted file mode 100644 index 2d81c86b8..000000000 --- a/plutip-server/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -MIT License - -Copyright (c) 2022 MLabs Ltd. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/plutip-server/README.md b/plutip-server/README.md deleted file mode 100644 index d07d943d7..000000000 --- a/plutip-server/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# plutip-server - -Plutip-server is a simple HTTP interface for [Plutip](https://github.com/mlabs-haskell/plutip) to start and stop local plutip clusters on demand. - -CTL handles communication with Plutip via this server and there's usually no need to use it directly, though `plutip-server` can be useful if you need to control Plutip from a different service (although [`plutip-local-cluster`](https://github.com/mlabs-haskell/plutip/tree/master/local-cluster), which is a CLI program, is probably more convenient for that). - -Server exposes two POST endpoints for starting and stopping clusters (only up to one active cluster is allowed at a time). - -You can configure cluster parameters like slot length, max tx size, etc. and specify how many wallets to create, including Ada UTxO distribution in each wallet (see [here](../doc/plutip-testing.md#cluster-configuration-options) for how to configure this via CTL). - -On a successful cluster startup `plutip-server` responds with a list of keys of the newly created wallets, node configuration, directory with public and private keys for the wallets and a path to the socket of one of the nodes from the cluster (usually it's the one that finished startup the first). - -`plutip-server` uses Plutip as a [Haskell library](https://github.com/mlabs-haskell/plutip/tree/master#as-a-library) in Servant API handlers via `startFundedCluster` and `stopCluster` functions. diff --git a/plutip-server/cabal.project b/plutip-server/cabal.project deleted file mode 100644 index c1a038651..000000000 --- a/plutip-server/cabal.project +++ /dev/null @@ -1,114 +0,0 @@ -repository cardano-haskell-packages - url: https://input-output-hk.github.io/cardano-haskell-packages - secure: True - root-keys: - 3e0cce471cf09815f930210f7827266fd09045445d65923e6d0238a6cd15126f - 443abb7fb497a134c343faf52f0b659bd7999bc06b7f63fa76dc99d631f9bea1 - a86a1f6ce86c449c46666bda44268677abf29b5b2d2eb5ec7af903ec2f117a82 - bcec67e8e99cabfa7764d75ad9b158d72bfacf70ca1d0ec8bc6b4406d1bf8413 - c00aae8461a256275598500ea0e187588c35a5d5d7454fb57eac18d9edb86a56 - d4a35cd3121aa00d18544bb0ac01c3e1691d618f462c46129271bccf39f7e8ee - --- Align index-states with cardano-wallet -index-state: 2023-06-06T00:00:00Z - -packages: ./. - -tests: true -benchmarks: true -test-show-details: direct -constraints: - -- TH Name shadowing warnings nconstraints: - bimap >= 0.4.0 - , openapi3 >= 3.2.0 - , libsystemd-journal >= 1.4.4 - , systemd >= 2.3.0 - -- dependency of systemd-2.3.0 - , network >= 3.1.1.1 - -- choose versions that work with base >= 4.12 - , hjsonpointer >= 1.5.0 - , hjsonschema >= 1.10.0 - , Cabal >= 3.4.0.0 - , async-timer >= 0.2.0.0 - , unliftio-core >= 0.2.0.1 - , generic-arbitrary >= 0.2.2 - , iohk-monitoring >= 0.1.11 - - -- lower versions of katip won't build with the Win32-2.12.0.1 - -- which is shipped with the ghc-9.2.8 - , katip >= 0.8.7.4 - - -- Cardano Node dependencies: - , cardano-api ^>=8.2 - , cardano-slotting >= 0.1 - , ouroboros-network ^>= 0.8.1.0 - , persistent == 2.13.3.3 - -package cardano-wallet - optimization: False -package cardano-wallet-core - optimization: False -package cardano-wallet-cli - optimization: False -package cardano-wallet-launcher - optimization: False -package cardano-wallet-core-integration - optimization: False - -allow-newer: - hjsonschema:* - , hjsonpointer:* - , *:aeson - , *:hashable - , async-timer:unliftio-core - , ekg:* - , ntp-client:* - , libsystemd-journal:base - -source-repository-package - type: git - location: https://github.com/cardano-foundation/cardano-wallet - tag: ae6e90b99ff14eda88769211218aaae2b0fe528b - --sha256: 060r6z9sy9r1jr8iinlyirprw4k3s54malp9sz732vl7byh6vylf - subdir: - lib/application-extras - lib/balance-tx - lib/crypto-hash-extra - lib/coin-selection - lib/delta-store - lib/delta-table - lib/delta-types - lib/iohk-monitoring-extra - lib/launcher - lib/local-cluster - lib/numeric - lib/primitive - lib/read - lib/temporary-extra - lib/test-utils - lib/text-class - lib/wai-middleware-logging - lib/wallet-benchmarks - lib/wallet - lib/wallet-e2e - -source-repository-package - type: git - location: https://github.com/input-output-hk/cardano-addresses - tag: 44d5a9eb3505b6bfbf281d40fa88531c3253b771 - --sha256: 16rja48ryfjw3531kf15w0h3cdmscqgs8l1z1i2mvahq1vlhr2y6 - subdir: command-line - core - -source-repository-package - type: git - location: https://github.com/cardano-foundation/cardano-wallet-client.git - tag: 353412ca621dc28af53e4a19795338b19bab1b7b - --sha256: 04q58c82wy6x9nkwqbvcxbv6s61fx08h5kf62sb511aqp08id4bb - subdir: generated - -source-repository-package - type: git - location: https://github.com/mlabs-haskell/plutip.git - tag: 1bf0b547cd3689c727586abb8385c008fb2a3d1c - --sha256: sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU= diff --git a/plutip-server/default.nix b/plutip-server/default.nix deleted file mode 100644 index f6bcc4a10..000000000 --- a/plutip-server/default.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ pkgs, system, src, plutip, CHaP, cardano-node }: -let - haskellModules = - plutip.haskellModules.${system} ++ [ - ({ config, pkgs, ... }: - let - nodeExes = cardano-node.packages.${system}; - in - { - packages.plutip-server.components.exes.plutip-server = { - pkgconfig = [ [ pkgs.makeWrapper ] ]; - postInstall = with pkgs; '' - wrapProgram $out/bin/plutip-server \ - --prefix PATH : "${lib.makeBinPath [ - nodeExes.cardano-node - nodeExes.cardano-cli - ]}" - ''; - }; - }) - ]; -in -pkgs.haskell-nix.cabalProject { - name = "plutip-server"; - - inherit src; - - inputMap = { - "https://input-output-hk.github.io/cardano-haskell-packages" = CHaP; - }; - - compiler-nix-name = "ghc8107"; - - shell = { - withHoogle = true; - exactDeps = true; - - tools.haskell-language-server = "1.5.0.0"; # Newer versions failed to build - - nativeBuildInputs = with pkgs; [ - # Haskell Tools - haskellPackages.fourmolu - haskellPackages.cabal-install - haskellPackages.cabal-fmt - nixpkgs-fmt - hlint - entr - ghcid - git - fd - - # Cardano tools - cardano-node.packages.${system}.cardano-cli - cardano-node.packages.${system}.cardano-node - ]; - }; - - modules = haskellModules; -} diff --git a/plutip-server/fourmolu.yaml b/plutip-server/fourmolu.yaml deleted file mode 100644 index fc79883a8..000000000 --- a/plutip-server/fourmolu.yaml +++ /dev/null @@ -1,8 +0,0 @@ -indentation: 2 -comma-style: leading -record-brace-space: true -indent-wheres: true -diff-friendly-import-export: true -respectful: true -haddock-style: single-line -newlines-between-decls: 1 diff --git a/plutip-server/hie.yaml b/plutip-server/hie.yaml deleted file mode 100644 index 14f279877..000000000 --- a/plutip-server/hie.yaml +++ /dev/null @@ -1,4 +0,0 @@ -cradle: - cabal: - - path: "./src/" - component: "exe:plutip-server" diff --git a/plutip-server/plutip-server.cabal b/plutip-server/plutip-server.cabal deleted file mode 100644 index da121dc1b..000000000 --- a/plutip-server/plutip-server.cabal +++ /dev/null @@ -1,96 +0,0 @@ -cabal-version: 3.0 -name: plutip-server -version: 0.2 -license-file: LICENSE -author: mlabs -maintainer: TODO -build-type: Simple -extra-source-files: CHANGELOG.md - -common common-language - default-extensions: - BangPatterns - DataKinds - DeriveAnyClass - DeriveFoldable - DeriveFunctor - DeriveGeneric - DeriveLift - DeriveTraversable - DerivingStrategies - EmptyDataDecls - ExplicitForAll - FlexibleContexts - FlexibleInstances - GeneralizedNewtypeDeriving - ImportQualifiedPost - LambdaCase - MonoLocalBinds - MultiParamTypeClasses - NamedFieldPuns - NumericUnderscores - OverloadedStrings - QuasiQuotes - RankNTypes - RecordWildCards - ScopedTypeVariables - StandaloneDeriving - TemplateHaskell - TupleSections - TypeApplications - TypeFamilies - TypeOperators - TypeSynonymInstances - ViewPatterns - -common common-configs - default-language: Haskell2010 - -common common-ghc-options - ghc-options: - -fno-ignore-interface-pragmas -fno-omit-interface-pragmas - -fno-specialize -fno-strictness -fno-warn-orphans -fobject-code - -fplugin-opt PlutusTx.Plugin:defer-errors - -executable plutip-server - import: common-language - import: common-ghc-options - main-is: Main.hs - hs-source-dirs: src - default-language: Haskell2010 - build-depends: - , aeson - , async - , base - , base16-bytestring - , bytestring - , cardano-api - , cardano-ledger-core - , cardano-wallet - , cardano-wallet-launcher - , data-default - , directory - , exceptions - , extra - , filepath - , http-types - , mtl - , optparse-applicative - , plutip-core - , positive - , servant-server - , stm - , text - , time - , unliftio - , wai - , wai-cors - , wai-logger - , warp - - other-modules: - Api - Api.Handlers - Types - - ghc-options: -Wall -threaded -rtsopts diff --git a/plutip-server/src/Api.hs b/plutip-server/src/Api.hs deleted file mode 100644 index b3c6fcc93..000000000 --- a/plutip-server/src/Api.hs +++ /dev/null @@ -1,67 +0,0 @@ -module Api where - -import Api.Handlers ( - startClusterHandler, - stopClusterHandler, - ) -import Control.Monad.IO.Class (liftIO) -import Control.Monad.Reader (runReaderT) -import Data.Kind (Type) -import Network.Wai.Middleware.Cors qualified as Cors -import Servant ( - Application, - Handler, - JSON, - Post, - Proxy (Proxy), - ReqBody, - Server, - ServerT, - hoistServer, - serve, - (:<|>) ((:<|>)), - (:>), - ) -import Types ( - AppM (AppM), - Env (Env), - ServerOptions, - StartClusterRequest, - StartClusterResponse, - StopClusterRequest, - StopClusterResponse, - options, - ) - -type Api = - "start" - :> ReqBody '[JSON] StartClusterRequest - :> Post '[JSON] StartClusterResponse - :<|> "stop" - :> ReqBody '[JSON] StopClusterRequest - :> Post '[JSON] StopClusterResponse - -app :: Env -> Application -app = Cors.cors (const $ Just policy) . serve api . appServer - where - policy :: Cors.CorsResourcePolicy - policy = - Cors.simpleCorsResourcePolicy - { Cors.corsRequestHeaders = ["Content-Type"] - , Cors.corsMethods = ["OPTIONS", "GET", "POST"] - } - -api :: Proxy Api -api = Proxy - -server :: ServerOptions -> ServerT Api AppM -server serverOptions = - startClusterHandler serverOptions - :<|> stopClusterHandler - -appServer :: Env -> Server Api -appServer env@Env {options} = - hoistServer api appHandler (server options) - where - appHandler :: forall (a :: Type). AppM a -> Handler a - appHandler (AppM x) = liftIO $ runReaderT x env diff --git a/plutip-server/src/Api/Handlers.hs b/plutip-server/src/Api/Handlers.hs deleted file mode 100644 index 33452b14a..000000000 --- a/plutip-server/src/Api/Handlers.hs +++ /dev/null @@ -1,118 +0,0 @@ -module Api.Handlers ( - startClusterHandler, - stopClusterHandler, -) where - -import Cardano.Launcher.Node (nodeSocketFile) - -import Control.Concurrent.MVar (isEmptyMVar, putMVar, tryTakeMVar) -import Control.Monad (unless) -import Control.Monad.Except (runExceptT, throwError) -import Control.Monad.Extra (unlessM) -import Control.Monad.IO.Class (liftIO) -import Control.Monad.Reader (asks) -import Data.Default (def) -import Data.Foldable (for_) -import Data.Maybe (fromMaybe) -import Plutip.Cluster (startFundedCluster, stopCluster) -import Plutip.Config ( - ExtraConfig (ExtraConfig, ecEpochSize, ecMaxTxSize, ecSlotLength), - PlutipConfig (extraConfig), - ecRaiseExUnitsToMax, - ) -import Plutip.Keys (signKeyCBORHex) -import Plutip.Types (ClusterEnv (runningNode), RunningNode (RunningNode), keysDir) -import System.Directory (doesFileExist) -import System.FilePath (replaceFileName) -import Types ( - AppM, - ClusterStartupFailureReason ( - ClusterIsRunningAlready, - NegativeLovelaces, - NodeConfigNotFound - ), - ClusterStartupParameters ( - ClusterStartupParameters, - keysDirectory, - nodeConfigPath, - nodeSocketPath, - privateKeys - ), - Env (status), - Lovelace (unLovelace), - ServerOptions, - StartClusterRequest ( - StartClusterRequest, - epochSize, - keysToGenerate, - maxTxSize, - raiseExUnitsToMax, - slotLength - ), - StartClusterResponse ( - ClusterStartupFailure, - ClusterStartupSuccess - ), - StopClusterRequest (StopClusterRequest), - StopClusterResponse (StopClusterFailure, StopClusterSuccess), - ) - -startClusterHandler :: ServerOptions -> StartClusterRequest -> AppM StartClusterResponse -startClusterHandler - _ - StartClusterRequest - { keysToGenerate - , slotLength - , epochSize - , maxTxSize - , raiseExUnitsToMax - } = interpret $ do - -- Check that lovelace amounts are positive - for_ keysToGenerate $ \lovelaceAmounts -> - for_ lovelaceAmounts $ \lovelaces -> - unless (unLovelace lovelaces > 0) $ - throwError NegativeLovelaces - statusMVar <- asks status - isClusterDown <- liftIO $ isEmptyMVar statusMVar - unless isClusterDown $ throwError ClusterIsRunningAlready - let cfg = def {extraConfig = extraConf} - keysToGenerate' = map fromIntegral <$> keysToGenerate - (statusTVar, (clusterEnv, keys)) <- liftIO $ startFundedCluster cfg keysToGenerate' (curry pure) - liftIO $ putMVar statusMVar statusTVar - - let nodeConfigPath = getNodeConfigFile clusterEnv - -- safeguard against directory tree structure changes - unlessM (liftIO $ doesFileExist nodeConfigPath) $ throwError NodeConfigNotFound - pure $ - ClusterStartupSuccess $ - ClusterStartupParameters - { privateKeys = signKeyCBORHex <$> keys - , nodeSocketPath = getNodeSocketFile clusterEnv - , nodeConfigPath = nodeConfigPath - , keysDirectory = keysDir clusterEnv - } - where - getNodeSocketFile (runningNode -> RunningNode conn _ _) = nodeSocketFile conn - getNodeConfigFile = - -- assumption is that node.config lies in the same directory as node.socket - flip replaceFileName "node.config" . getNodeSocketFile - interpret = fmap (either ClusterStartupFailure id) . runExceptT - - extraConf :: ExtraConfig - extraConf = - let defConfig = def - in ExtraConfig - (fromMaybe (ecSlotLength defConfig) slotLength) - (fromMaybe (ecEpochSize defConfig) epochSize) - (fromMaybe (ecMaxTxSize defConfig) maxTxSize) - (fromMaybe (ecRaiseExUnitsToMax defConfig) raiseExUnitsToMax) - -stopClusterHandler :: StopClusterRequest -> AppM StopClusterResponse -stopClusterHandler StopClusterRequest = do - statusMVar <- asks status - maybeClusterStatus <- liftIO $ tryTakeMVar statusMVar - case maybeClusterStatus of - Nothing -> pure $ StopClusterFailure "Cluster is not running" - Just statusTVar -> do - liftIO $ stopCluster statusTVar - pure StopClusterSuccess diff --git a/plutip-server/src/Main.hs b/plutip-server/src/Main.hs deleted file mode 100644 index 35f26c573..000000000 --- a/plutip-server/src/Main.hs +++ /dev/null @@ -1,59 +0,0 @@ -module Main (main) where - -import Api (app) -import Control.Applicative ((<**>)) -import Control.Concurrent.MVar (newEmptyMVar) -import Data.Function ((&)) -import Network.HTTP.Types (Status) -import Network.Wai (Request) -import Network.Wai.Handler.Warp ( - Port, - Settings, - defaultSettings, - runSettings, - setLogger, - setPort, - ) -import Network.Wai.Logger (withStdoutLogger) -import Options.Applicative qualified as Options -import System.Exit (die) -import Types (Env (Env, options, status), ServerOptions (ServerOptions, port)) - -main :: IO () -main = do - serverOptions@ServerOptions {port} <- Options.execParser opts - withStdoutLogger $ \logger -> do - putStrLn $ "Plutip server starting on port " <> show port - runSettings (mkSettings port logger) - . app - =<< either die pure - =<< newEnvIO serverOptions - where - mkSettings :: - Port -> (Request -> Status -> Maybe Integer -> IO ()) -> Settings - mkSettings port logger = defaultSettings & setPort port & setLogger logger - -newEnvIO :: ServerOptions -> IO (Either String Env) -newEnvIO options = do - status <- newEmptyMVar - pure . Right $ Env {status, options} - -opts :: Options.ParserInfo ServerOptions -opts = - Options.info (serverOptionsParser <**> Options.helper) $ - Options.fullDesc - <> Options.progDesc - "plutip-server is used for integration with cardano-transaction-lib" - -serverOptionsParser :: Options.Parser ServerOptions -serverOptionsParser = - ServerOptions - <$> Options.option - Options.auto - ( Options.long "port" - <> Options.short 'p' - <> Options.help "Server port" - <> Options.showDefault - <> Options.value 8082 - <> Options.metavar "INT" - ) diff --git a/plutip-server/src/Types.hs b/plutip-server/src/Types.hs deleted file mode 100644 index 9d7d5227c..000000000 --- a/plutip-server/src/Types.hs +++ /dev/null @@ -1,135 +0,0 @@ -module Types ( - AppM (AppM), - ClusterStartupFailureReason ( - ClusterIsRunningAlready, - NegativeLovelaces, - NodeConfigNotFound - ), - Env (Env, status, options), - ErrorMessage, - Lovelace (unLovelace), - PrivateKey, - ServerOptions (ServerOptions, port), - StartClusterRequest ( - StartClusterRequest, - keysToGenerate, - slotLength, - epochSize, - maxTxSize, - raiseExUnitsToMax - ), - StartClusterResponse ( - ClusterStartupSuccess, - ClusterStartupFailure - ), - ClusterStartupParameters ( - ClusterStartupParameters, - keysDirectory, - nodeSocketPath, - privateKeys, - nodeConfigPath - ), - StopClusterRequest (StopClusterRequest), - StopClusterResponse (StopClusterSuccess, StopClusterFailure), -) where - -import Cardano.Ledger.Slot (EpochSize) -import Control.Concurrent.MVar (MVar) -import Control.Monad.Catch (MonadThrow) -import Control.Monad.IO.Class (MonadIO) -import Control.Monad.Reader (MonadReader, ReaderT) -import Data.Aeson (FromJSON, ToJSON, parseJSON) -import Data.Kind (Type) -import Data.Text (Text) -import GHC.Generics (Generic) -import Network.Wai.Handler.Warp (Port) -import Numeric.Natural (Natural) -import Plutip.Config (NominalDiffTimeMicro) -import Plutip.Cluster (StopClusterRef) - --- TVar is used for signaling by 'startCluster'/'stopCluster' (STM is used --- for blocking). --- MVar is used by plutip-server to store current TVar (we allow maximum of one --- cluster at any given moment). --- This MVar is used by start/stop handlers. --- The payload of ClusterStatus is irrelevant. -type ClusterStatusRef = MVar StopClusterRef - -data Env = Env - { status :: ClusterStatusRef - , options :: ServerOptions - } - -data ServerOptions = ServerOptions - { port :: Port - } - deriving stock (Generic) - -newtype AppM (a :: Type) = AppM (ReaderT Env IO a) - deriving newtype - ( Functor - , Applicative - , Monad - , MonadIO - , MonadReader Env - , MonadThrow - ) - -type ErrorMessage = Text - -newtype Lovelace = Lovelace {unLovelace :: Integer} - deriving stock (Show, Eq, Generic) - deriving newtype (ToJSON, Num, Enum, Ord, Real, Integral) - -instance FromJSON Lovelace where - parseJSON json = do - Lovelace <$> parseJSON json - -data StartClusterRequest = StartClusterRequest - { keysToGenerate :: [[Lovelace]] - -- ^ Lovelace amounts for each UTXO of each wallet - , slotLength :: Maybe NominalDiffTimeMicro - -- ^ Set the SlotLength. If set to Nothing use the default - , epochSize :: Maybe EpochSize - -- ^ Set the EpochSize. If set to Nothing use the default - , maxTxSize :: Maybe Natural - -- ^ Set The maxTxSize. If set to Nothing use the default - , raiseExUnitsToMax :: Maybe Bool - -- ^ Raise the execution units to the maximum when true. - -- If set to Nothing use the default - } - deriving stock (Show, Eq, Generic) - deriving anyclass (FromJSON, ToJSON) - --- CborHex -type PrivateKey = Text - -data ClusterStartupFailureReason - = ClusterIsRunningAlready - | NegativeLovelaces - | NodeConfigNotFound - deriving stock (Show, Eq, Generic) - deriving anyclass (FromJSON, ToJSON) - -data ClusterStartupParameters = ClusterStartupParameters - { privateKeys :: [PrivateKey] - , nodeSocketPath :: FilePath - , nodeConfigPath :: FilePath - , keysDirectory :: FilePath - } - deriving stock (Show, Eq, Generic) - deriving anyclass (FromJSON, ToJSON) - -data StartClusterResponse - = ClusterStartupFailure ClusterStartupFailureReason - | ClusterStartupSuccess ClusterStartupParameters - deriving stock (Show, Eq, Generic) - deriving anyclass (FromJSON, ToJSON) - -data StopClusterRequest = StopClusterRequest - deriving stock (Show, Eq, Generic) - deriving anyclass (FromJSON, ToJSON) - -data StopClusterResponse = StopClusterSuccess | StopClusterFailure ErrorMessage - deriving stock (Show, Eq, Generic) - deriving anyclass (FromJSON, ToJSON) From 2f08e0ebaf688f43ddbe9a97b8194f820362a50c Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 28 Jun 2024 16:50:39 +0200 Subject: [PATCH 256/373] Attempt to fix e2e tests --- src/Internal/Test/E2E/Runner.purs | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index debdd0673..77cca5eb7 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -19,8 +19,6 @@ import Ctl.Internal.Affjax (request) as Affjax import Ctl.Internal.Contract.Hooks (emptyHooks) import Ctl.Internal.Contract.QueryBackend (QueryBackend(CtlBackend)) import Ctl.Internal.Helpers (liftedM, unsafeFromJust, (<>)) -import Ctl.Internal.Plutip.Server (withPlutipContractEnv) -import Ctl.Internal.Plutip.Types (PlutipConfig) import Ctl.Internal.QueryM (ClusterSetup) import Ctl.Internal.Test.E2E.Browser (withBrowser) import Ctl.Internal.Test.E2E.Feedback @@ -73,6 +71,8 @@ import Ctl.Internal.Test.E2E.Wallets , namiSign ) import Ctl.Internal.Test.UtxoDistribution (withStakeKey) +import Ctl.Internal.Testnet.Contract (withTestnetContractEnv) +import Ctl.Internal.Testnet.Types (Era(Babbage), TestnetConfig) import Ctl.Internal.Wallet.Key ( PrivateStakeKey , keyWalletPrivatePaymentKey @@ -195,11 +195,9 @@ runE2ETests opts rt = do ) (testPlan opts rt) -buildPlutipConfig :: TestOptions -> PlutipConfig -buildPlutipConfig options = - { host: "127.0.0.1" - , port: fromMaybe (UInt.fromInt defaultPorts.plutip) options.plutipPort - , logLevel: Trace +buildLocalTestnetConfig :: TestOptions -> TestnetConfig +buildLocalTestnetConfig options = + { logLevel: Trace , ogmiosConfig: { port: fromMaybe (UInt.fromInt defaultPorts.ogmios) options.ogmiosPort , host: "127.0.0.1" @@ -216,10 +214,10 @@ buildPlutipConfig options = , customLogger: Just \_ _ -> pure unit , hooks: emptyHooks , clusterConfig: - { slotLength: Seconds 0.05 + { testnetMagic: 2 + , era: Babbage + , slotLength: Seconds 0.05 , epochSize: Nothing - , maxTxSize: Nothing - , raiseExUnitsToMax: false } } @@ -261,7 +259,7 @@ testPlan opts@{ tests } rt@{ wallets } = ] -- TODO: don't connect to services in ContractEnv, just start them -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1197 - liftAff $ withPlutipContractEnv (buildPlutipConfig opts) distr + liftAff $ withTestnetContractEnv (buildLocalTestnetConfig opts) distr \env wallet -> do (clusterSetup :: ClusterSetup) <- case env.backend of CtlBackend backend _ -> pure From 6e86fb9cbe2ae4492b9696c2f232c579560a25f4 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 28 Jun 2024 17:13:34 +0200 Subject: [PATCH 257/373] Fix build inputs for runE2ETest --- nix/default.nix | 3 +++ src/Internal/Test/E2E/Runner.purs | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/nix/default.nix b/nix/default.nix index 247621269..e36bfbf97 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -445,6 +445,9 @@ let nodeModules ogmios kupo + cardano-testnet + cardano-node + cardano-cli chromium python38 # To serve bundled CTL # Utils needed by E2E test code diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 77cca5eb7..c97a8db9e 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -257,8 +257,6 @@ testPlan opts@{ tests } rt@{ wallets } = , amount , amount ] - -- TODO: don't connect to services in ContractEnv, just start them - -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1197 liftAff $ withTestnetContractEnv (buildLocalTestnetConfig opts) distr \env wallet -> do (clusterSetup :: ClusterSetup) <- case env.backend of From 45225911dde796ad2a7aea406a0ef3d724305c66 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 28 Jun 2024 17:52:26 +0200 Subject: [PATCH 258/373] Attempt to fix e2e tests --- doc/e2e-testing.md | 2 +- examples/ByUrl.purs | 15 +++++---------- nix/default.nix | 2 ++ src/Internal/Test/E2E/Route.purs | 9 +++++---- src/Internal/Test/E2E/Runner.purs | 11 +++++------ src/Internal/Test/E2E/Types.purs | 6 +++--- 6 files changed, 21 insertions(+), 24 deletions(-) diff --git a/doc/e2e-testing.md b/doc/e2e-testing.md index 93135f941..25550cc00 100644 --- a/doc/e2e-testing.md +++ b/doc/e2e-testing.md @@ -327,4 +327,4 @@ Full example can be found [in the template](../templates/ctl-scaffold/test/E2E.p There are a few important caveats/limitations: - We only allow base addresses (with a stake pubkey hash present) to be used. If there's a need to use enterprise addresses, the users should move some ada to their own enterprise address, e.g. with `mustPayToPubKey` -- The amount of tAda is fixed to `1000000000000` and divided into 5 UTxOs equally +- The amount of tAda is fixed to `25_000_000_000` lovelace and divided into 5 UTxOs equally diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 3119dff8d..903070dbd 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -15,11 +15,7 @@ import Contract.Config ) , blockfrostPublicPreprodServerConfig , blockfrostPublicPreviewServerConfig - , mainnetFlintConfig - , mainnetGeroConfig - , mainnetLodeConfig , mainnetNamiConfig - , mainnetNuFiConfig , mkBlockfrostBackendParams , testnetConfig , testnetEternlConfig @@ -168,12 +164,11 @@ wallets = Map.fromFoldable , "gero-mock" /\ testnetGeroConfig /\ Just MockGero , "flint-mock" /\ testnetFlintConfig /\ Just MockFlint , "lode-mock" /\ testnetLodeConfig /\ Just MockLode - -- Plutip cluster's network ID is set to mainnet: - , "plutip-nami-mock" /\ mainnetNamiConfig /\ Just MockNami - , "plutip-gero-mock" /\ mainnetGeroConfig /\ Just MockGero - , "plutip-flint-mock" /\ mainnetFlintConfig /\ Just MockFlint - , "plutip-lode-mock" /\ mainnetLodeConfig /\ Just MockLode - , "plutip-nufi-mock" /\ mainnetNuFiConfig /\ Just MockNuFi + , "plutip-nami-mock" /\ testnetNamiConfig /\ Just MockNami + , "plutip-gero-mock" /\ testnetGeroConfig /\ Just MockGero + , "plutip-flint-mock" /\ testnetFlintConfig /\ Just MockFlint + , "plutip-lode-mock" /\ testnetLodeConfig /\ Just MockLode + , "plutip-nufi-mock" /\ testnetNuFiConfig /\ Just MockNuFi ] mkBlockfrostPreviewConfig :: Maybe String -> ContractParams diff --git a/nix/default.nix b/nix/default.nix index e36bfbf97..6d6971f96 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -497,6 +497,8 @@ let cp -r $src/* . chmod -R +rw . + export LC_ALL=C.UTF-8 + ${nodejs}/bin/node \ --enable-source-maps \ -e 'import("./output/${runnerMain}/index.js").then(m => m.${runnerPsEntryPoint}())' \ diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index cd0dd4f2f..3108a3dfb 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -9,7 +9,7 @@ module Ctl.Internal.Test.E2E.Route import Prelude -import Cardano.Types (NetworkId(MainnetId)) +import Cardano.Types (NetworkId(TestnetId)) import Cardano.Types.PrivateKey (PrivateKey) import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.RawBytes (RawBytes(RawBytes)) @@ -162,7 +162,7 @@ route configs tests = do Nothing -> do clusterSetup@{ keys: { payment, stake } } <- getClusterSetupRepeatedly - when (config.networkId /= MainnetId) do + when (config.networkId /= TestnetId) do liftEffect $ throw wrongNetworkIdOnCluster pure $ { paymentKey: payment, stakeKey: stake } /\ Just clusterSetup let @@ -201,8 +201,9 @@ route configs tests = do wrongNetworkIdOnCluster :: String wrongNetworkIdOnCluster = "No payment keys were specified, which implies they should be retrieved " - <> "from a local cluster, however, network ID was set to TestnetId, " - <> "which is incompatible with Plutip, that always uses MainnetId." + <> "from a local cluster, however, network ID was set to MainnetId, " + <> + "which is incompatible with cardano-testnet, that always uses TestnetId." -- Override config values with parameters from cluster setup setClusterOptions diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index c97a8db9e..2ae32100b 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -43,7 +43,7 @@ import Ctl.Internal.Test.E2E.Types , ChromeUserDataDir , E2ETest , E2ETestRuntime - , E2EWallet(NoWallet, PlutipCluster, WalletExtension) + , E2EWallet(NoWallet, LocalTestnet, WalletExtension) , ExtensionParams , Extensions , RunningE2ETest @@ -244,12 +244,11 @@ testPlan opts@{ tests } rt@{ wallets } = do withE2ETest true (wrap url) browser \{ page } -> do subscribeToTestStatusUpdates opts.passBrowserLogs page - -- Plutip in E2E tests - { url, wallet: PlutipCluster } -> do + -- cardano-testnet in E2E tests + { url, wallet: LocalTestnet } -> do let - amount = unsafeFromJust "testPlan: integer overflow" $ BigNum.mul - (BigNum.fromInt 2_000_000_000) - (BigNum.fromInt 100) + amount = unsafeFromJust "testPlan: integer overflow" $ + BigNum.fromString "5000000000" -- 5k ADA distr = withStakeKey privateStakeKey [ amount , amount diff --git a/src/Internal/Test/E2E/Types.purs b/src/Internal/Test/E2E/Types.purs index bbb3594ac..f4b0c8282 100644 --- a/src/Internal/Test/E2E/Types.purs +++ b/src/Internal/Test/E2E/Types.purs @@ -20,7 +20,7 @@ module Ctl.Internal.Test.E2E.Types , mkE2ETest , RunningE2ETest , SomeWallet - , E2EWallet(NoWallet, PlutipCluster, WalletExtension) + , E2EWallet(NoWallet, LocalTestnet, WalletExtension) , getE2EWalletExtension ) where @@ -120,7 +120,7 @@ type SettingsRuntime = , settingsArchive :: SettingsArchive } -data E2EWallet = NoWallet | PlutipCluster | WalletExtension WalletExt +data E2EWallet = NoWallet | LocalTestnet | WalletExtension WalletExt derive instance Generic E2EWallet _ derive instance Eq E2EWallet @@ -149,7 +149,7 @@ mkE2ETest str = <|> (tryWalletPrefix "lode" <#> mkTestEntry (WalletExtension LodeExt)) <|> (tryWalletPrefix "nami" <#> mkTestEntry (WalletExtension NamiExt)) <|> (tryWalletPrefix "lace" <#> mkTestEntry (WalletExtension LaceExt)) - <|> (tryWalletPrefix "plutip" <#> mkTestEntry PlutipCluster) + <|> (tryWalletPrefix "plutip" <#> mkTestEntry LocalTestnet) <|> (pure $ mkTestEntry NoWallet str) where tryWalletPrefix :: String -> Maybe String From 461ab028c52dd0abe0b9107d2b1625fa8453775b Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 28 Jun 2024 19:10:42 +0200 Subject: [PATCH 259/373] Bump cardano-node to v8.12.1 and ogmios to v6.4.0, Fix cardano-testnet --- flake.lock | 2900 +++++++++++++---------------- flake.nix | 11 +- src/Internal/Contract/MinFee.purs | 7 +- src/Internal/Testnet/Utils.purs | 79 +- 4 files changed, 1351 insertions(+), 1646 deletions(-) diff --git a/flake.lock b/flake.lock index 3c0f3d6ca..de9a45935 100644 --- a/flake.lock +++ b/flake.lock @@ -241,15 +241,15 @@ "CHaP_5": { "flake": false, "locked": { - "lastModified": 1701964264, - "narHash": "sha256-sOs8bLbMvtIBQLywB3AM6wcpHr5JUmHJyDhtBmRkHBI=", - "owner": "input-output-hk", + "lastModified": 1719449018, + "narHash": "sha256-SHrUrjiohM2RMe0DctdO3vDDA40tI8NVTKmwc3egaeY=", + "owner": "intersectmbo", "repo": "cardano-haskell-packages", - "rev": "b3ccccc588891d765bd68cd2fc1110844a3bef35", + "rev": "6b048d1ad84220d47f870635e84df63590f5efa3", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "intersectmbo", "ref": "repo", "repo": "cardano-haskell-packages", "type": "github" @@ -725,7 +725,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_39" + "nixpkgs": "nixpkgs_37" }, "locked": { "lastModified": 1641576265, @@ -743,8 +743,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_40" + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_38" }, "locked": { "lastModified": 1641404293, @@ -762,8 +762,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_42" + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641404293, @@ -781,8 +781,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_71" + "flake-utils": "flake-utils_33", + "nixpkgs": "nixpkgs_69" }, "locked": { "lastModified": 1641404293, @@ -800,7 +800,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_41" + "nixpkgs": "nixpkgs_39" }, "locked": { "lastModified": 1641576265, @@ -893,7 +893,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_70" + "nixpkgs": "nixpkgs_68" }, "locked": { "lastModified": 1641576265, @@ -961,7 +961,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_65" + "nixpkgs": "nixpkgs_63" }, "locked": { "lastModified": 1646360966, @@ -1175,11 +1175,11 @@ "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", - "fenix": "fenix_7", + "fenix": "fenix_6", "hydra": "hydra_7", - "n2c": "n2c_6", + "n2c": "n2c_5", "nix": "nix_10", - "nixpkgs": "nixpkgs_59", + "nixpkgs": "nixpkgs_57", "nixpkgs-docker": "nixpkgs-docker", "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad-driver-nix": "nomad-driver-nix_2", @@ -1268,10 +1268,10 @@ "agenix-cli": "agenix-cli_2", "blank": "blank_7", "deploy": "deploy", - "fenix": "fenix_5", + "fenix": "fenix_4", "hydra": "hydra_6", "nix": "nix_7", - "nixpkgs": "nixpkgs_45", + "nixpkgs": "nixpkgs_43", "nixpkgs-unstable": "nixpkgs-unstable_7", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", @@ -1302,10 +1302,10 @@ "agenix-cli": "agenix-cli_3", "blank": "blank_8", "deploy": "deploy_3", - "fenix": "fenix_9", + "fenix": "fenix_8", "hydra": "hydra_8", "nix": "nix_14", - "nixpkgs": "nixpkgs_74", + "nixpkgs": "nixpkgs_72", "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", @@ -1778,17 +1778,17 @@ "blst_6": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", "owner": "supranational", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { "owner": "supranational", + "ref": "v0.3.11", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, @@ -3134,6 +3134,21 @@ "type": "github" } }, + "call-flake": { + "locked": { + "lastModified": 1687380775, + "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", + "owner": "divnix", + "repo": "call-flake", + "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "call-flake", + "type": "github" + } + }, "capkgs": { "locked": { "lastModified": 1697123727, @@ -3153,7 +3168,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_53", + "nixpkgs": "nixpkgs_51", "ragenix": "ragenix_2" }, "locked": { @@ -3174,7 +3189,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_82", + "nixpkgs": "nixpkgs_80", "ragenix": "ragenix_5" }, "locked": { @@ -3283,17 +3298,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1699561895, - "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", + "lastModified": 1715909148, + "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" } }, @@ -3522,16 +3537,15 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1718715819, + "lastModified": 1719347639, "narHash": "sha256-scs7lMJQ4kLSIh9nahzoxk9L6BRyt2hYFbr5nIaqCWY=", "owner": "mlabs-haskell", "repo": "cardano.nix", - "rev": "197582b8517873dc11085ac191201a467f45a493", + "rev": "5c8a8bffcee77189b72fea6123b2a2845d1e731e", "type": "github" }, "original": { "owner": "mlabs-haskell", - "ref": "dshuiski/ogmios", "repo": "cardano.nix", "type": "github" } @@ -3563,16 +3577,16 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1702024268, - "narHash": "sha256-DSvhXbm75rXMLgRCg/CLLeDFa6JbcCLTLJZoH/VY0MY=", - "owner": "input-output-hk", + "lastModified": 1719456236, + "narHash": "sha256-ElMb/C8Ljq8jiqUqVBVAf2crn5hF+vnG5UeShdS6MGQ=", + "owner": "IntersectMBO", "repo": "cardano-node", - "rev": "30b6e447c7e4586f43e30a68fe47c8481b0ba205", + "rev": "06943b66e634fc9eb83ddb376ed3508003dbb607", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "8.7.2", + "owner": "IntersectMBO", + "ref": "8.12.1", "repo": "cardano-node", "type": "github" } @@ -4151,8 +4165,8 @@ "customConfig": "customConfig_4", "ema": "ema", "emanote": "emanote", - "flake-compat": "flake-compat_22", - "flake-utils": "flake-utils_41", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_40", "haskellNix": "haskellNix_5", "hostNixpkgs": [ "db-sync", @@ -4215,13 +4229,13 @@ "cardano-node": "cardano-node_2", "cardano-wallet": "cardano-wallet", "data-merge": "data-merge_3", - "flake-compat": "flake-compat_23", + "flake-compat": "flake-compat_22", "hackage": "hackage_4", "haskell-nix": "haskell-nix_3", "iohk-nix": "iohk-nix_2", - "n2c": "n2c_7", + "n2c": "n2c_6", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_93", + "nixpkgs": "nixpkgs_91", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -4250,14 +4264,14 @@ "inputs": { "alejandra": "alejandra", "data-merge": "data-merge_2", - "devshell": "devshell_13", + "devshell": "devshell_12", "driver": "driver", "follower": "follower", "haskell-nix": "haskell-nix_2", "inclusive": "inclusive_9", "nix": "nix_13", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_69", + "nixpkgs": "nixpkgs_67", "poetry2nix": "poetry2nix", "utils": "utils_21" }, @@ -4329,32 +4343,6 @@ "type": "github" } }, - "crane_2": { - "inputs": { - "flake-compat": "flake-compat_17", - "flake-utils": "flake-utils_21", - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ], - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, "crystal": { "inputs": { "ameba-src": "ameba-src", @@ -4583,7 +4571,7 @@ "inputs": { "cardano-world": "cardano-world", "customConfig": "customConfig_5", - "flake-compat": "flake-compat_24", + "flake-compat": "flake-compat_23", "haskellNix": "haskellNix_6", "iohkNix": "iohkNix_6", "nixpkgs": [ @@ -4610,8 +4598,8 @@ }, "deploy": { "inputs": { - "fenix": "fenix_4", - "flake-compat": "flake-compat_18", + "fenix": "fenix_3", + "flake-compat": "flake-compat_17", "nixpkgs": [ "db-sync", "cardano-world", @@ -4640,8 +4628,8 @@ }, "deploy_2": { "inputs": { - "fenix": "fenix_6", - "flake-compat": "flake-compat_19", + "fenix": "fenix_5", + "flake-compat": "flake-compat_18", "nixpkgs": [ "db-sync", "cardano-world", @@ -4668,8 +4656,8 @@ }, "deploy_3": { "inputs": { - "fenix": "fenix_8", - "flake-compat": "flake-compat_20", + "fenix": "fenix_7", + "flake-compat": "flake-compat_19", "nixpkgs": [ "db-sync", "cardano-world", @@ -4743,21 +4731,6 @@ } }, "devshell_10": { - "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_11": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -4772,7 +4745,7 @@ "type": "github" } }, - "devshell_12": { + "devshell_11": { "inputs": { "flake-utils": [ "db-sync", @@ -4803,10 +4776,10 @@ "type": "github" } }, - "devshell_13": { + "devshell_12": { "inputs": { - "flake-utils": "flake-utils_31", - "nixpkgs": "nixpkgs_66" + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1644227066, @@ -4822,7 +4795,7 @@ "type": "github" } }, - "devshell_14": { + "devshell_13": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -4837,7 +4810,7 @@ "type": "github" } }, - "devshell_15": { + "devshell_14": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -4852,7 +4825,7 @@ "type": "github" } }, - "devshell_16": { + "devshell_15": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -4867,7 +4840,7 @@ "type": "github" } }, - "devshell_17": { + "devshell_16": { "locked": { "lastModified": 1632436039, "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", @@ -4882,7 +4855,7 @@ "type": "github" } }, - "devshell_18": { + "devshell_17": { "locked": { "lastModified": 1636119665, "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", @@ -4897,7 +4870,7 @@ "type": "github" } }, - "devshell_19": { + "devshell_18": { "locked": { "lastModified": 1637098489, "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", @@ -4912,31 +4885,27 @@ "type": "github" } }, - "devshell_2": { + "devshell_19": { "inputs": { "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", + "db-sync", + "cardano-world", "std", "flake-utils" ], "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", + "db-sync", + "cardano-world", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", "owner": "numtide", "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { @@ -4945,27 +4914,31 @@ "type": "github" } }, - "devshell_20": { + "devshell_2": { "inputs": { "flake-utils": [ - "db-sync", - "cardano-world", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", "std", "flake-utils" ], "nixpkgs": [ - "db-sync", - "cardano-world", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", "owner": "numtide", "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { @@ -4974,9 +4947,9 @@ "type": "github" } }, - "devshell_21": { + "devshell_20": { "inputs": { - "flake-utils": "flake-utils_47", + "flake-utils": "flake-utils_46", "nixpkgs": [ "db-sync", "cardano-world", @@ -5077,20 +5050,12 @@ } }, "devshell_6": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "systems": "systems_4" - }, "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", "owner": "numtide", "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { @@ -5101,11 +5066,11 @@ }, "devshell_7": { "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", "owner": "numtide", "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { @@ -5116,11 +5081,11 @@ }, "devshell_8": { "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", "owner": "numtide", "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { @@ -5131,11 +5096,11 @@ }, "devshell_9": { "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", "owner": "numtide", "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { @@ -5286,8 +5251,7 @@ "nixlib": [ "cardano-node", "std", - "haumea", - "nixpkgs" + "lib" ], "yants": [ "cardano-node", @@ -5372,7 +5336,7 @@ }, "driver": { "inputs": { - "devshell": "devshell_14", + "devshell": "devshell_13", "inclusive": "inclusive_7", "nix": "nix_12", "nixpkgs": [ @@ -5416,7 +5380,7 @@ }, "easy-purescript-nix_10": { "inputs": { - "flake-utils": "flake-utils_79" + "flake-utils": "flake-utils_78" }, "locked": { "lastModified": 1710161569, @@ -5434,7 +5398,7 @@ }, "easy-purescript-nix_11": { "inputs": { - "flake-utils": "flake-utils_81" + "flake-utils": "flake-utils_80" }, "locked": { "lastModified": 1710161569, @@ -5452,7 +5416,7 @@ }, "easy-purescript-nix_12": { "inputs": { - "flake-utils": "flake-utils_83" + "flake-utils": "flake-utils_82" }, "locked": { "lastModified": 1696584097, @@ -5470,7 +5434,7 @@ }, "easy-purescript-nix_13": { "inputs": { - "flake-utils": "flake-utils_87" + "flake-utils": "flake-utils_86" }, "locked": { "lastModified": 1696584097, @@ -5488,7 +5452,7 @@ }, "easy-purescript-nix_14": { "inputs": { - "flake-utils": "flake-utils_93" + "flake-utils": "flake-utils_92" }, "locked": { "lastModified": 1710161569, @@ -5506,7 +5470,7 @@ }, "easy-purescript-nix_15": { "inputs": { - "flake-utils": "flake-utils_95" + "flake-utils": "flake-utils_94" }, "locked": { "lastModified": 1696584097, @@ -5524,7 +5488,7 @@ }, "easy-purescript-nix_16": { "inputs": { - "flake-utils": "flake-utils_99" + "flake-utils": "flake-utils_98" }, "locked": { "lastModified": 1696584097, @@ -5542,7 +5506,7 @@ }, "easy-purescript-nix_2": { "inputs": { - "flake-utils": "flake-utils_49" + "flake-utils": "flake-utils_48" }, "locked": { "lastModified": 1710161569, @@ -5560,7 +5524,7 @@ }, "easy-purescript-nix_3": { "inputs": { - "flake-utils": "flake-utils_51" + "flake-utils": "flake-utils_50" }, "locked": { "lastModified": 1710161569, @@ -5578,7 +5542,7 @@ }, "easy-purescript-nix_4": { "inputs": { - "flake-utils": "flake-utils_53" + "flake-utils": "flake-utils_52" }, "locked": { "lastModified": 1710161569, @@ -5596,7 +5560,7 @@ }, "easy-purescript-nix_5": { "inputs": { - "flake-utils": "flake-utils_55" + "flake-utils": "flake-utils_54" }, "locked": { "lastModified": 1696584097, @@ -5614,7 +5578,7 @@ }, "easy-purescript-nix_6": { "inputs": { - "flake-utils": "flake-utils_59" + "flake-utils": "flake-utils_58" }, "locked": { "lastModified": 1696584097, @@ -5632,7 +5596,7 @@ }, "easy-purescript-nix_7": { "inputs": { - "flake-utils": "flake-utils_65" + "flake-utils": "flake-utils_64" }, "locked": { "lastModified": 1710161569, @@ -5650,7 +5614,7 @@ }, "easy-purescript-nix_8": { "inputs": { - "flake-utils": "flake-utils_67" + "flake-utils": "flake-utils_66" }, "locked": { "lastModified": 1696584097, @@ -5668,7 +5632,7 @@ }, "easy-purescript-nix_9": { "inputs": { - "flake-utils": "flake-utils_71" + "flake-utils": "flake-utils_70" }, "locked": { "lastModified": 1696584097, @@ -5719,11 +5683,11 @@ "em_3": { "flake": false, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "lastModified": 1685015066, + "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", "owner": "deepfire", "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", "type": "github" }, "original": { @@ -5734,9 +5698,9 @@ }, "ema": { "inputs": { - "flake-compat": "flake-compat_21", - "flake-utils": "flake-utils_38", - "nixpkgs": "nixpkgs_84", + "flake-compat": "flake-compat_20", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_82", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -5775,7 +5739,7 @@ "ema": "ema_2", "flake-parts": "flake-parts_6", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_87", + "nixpkgs": "nixpkgs_85", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -5899,28 +5863,9 @@ }, "fenix_3": { "inputs": { - "nixpkgs": "nixpkgs_38", + "nixpkgs": "nixpkgs_41", "rust-analyzer-src": "rust-analyzer-src_3" }, - "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "fenix_4": { - "inputs": { - "nixpkgs": "nixpkgs_43", - "rust-analyzer-src": "rust-analyzer-src_4" - }, "locked": { "lastModified": 1645165506, "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", @@ -5935,7 +5880,7 @@ "type": "github" } }, - "fenix_5": { + "fenix_4": { "inputs": { "nixpkgs": [ "db-sync", @@ -5945,7 +5890,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_5" + "rust-analyzer-src": "rust-analyzer-src_4" }, "locked": { "lastModified": 1649226351, @@ -5961,10 +5906,10 @@ "type": "github" } }, - "fenix_6": { + "fenix_5": { "inputs": { - "nixpkgs": "nixpkgs_56", - "rust-analyzer-src": "rust-analyzer-src_6" + "nixpkgs": "nixpkgs_54", + "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { "lastModified": 1645165506, @@ -5980,7 +5925,7 @@ "type": "github" } }, - "fenix_7": { + "fenix_6": { "inputs": { "nixpkgs": [ "db-sync", @@ -5988,7 +5933,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_7" + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { "lastModified": 1660631227, @@ -6004,10 +5949,10 @@ "type": "github" } }, - "fenix_8": { + "fenix_7": { "inputs": { - "nixpkgs": "nixpkgs_72", - "rust-analyzer-src": "rust-analyzer-src_8" + "nixpkgs": "nixpkgs_70", + "rust-analyzer-src": "rust-analyzer-src_7" }, "locked": { "lastModified": 1645165506, @@ -6023,7 +5968,7 @@ "type": "github" } }, - "fenix_9": { + "fenix_8": { "inputs": { "nixpkgs": [ "db-sync", @@ -6032,7 +5977,7 @@ "bitte", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_9" + "rust-analyzer-src": "rust-analyzer-src_8" }, "locked": { "lastModified": 1649226351, @@ -6183,11 +6128,11 @@ "flake-compat_17": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -6246,22 +6191,6 @@ } }, "flake-compat_20": { - "flake": false, - "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_21": { "flake": false, "locked": { "lastModified": 1641205782, @@ -6277,7 +6206,7 @@ "type": "github" } }, - "flake-compat_22": { + "flake-compat_21": { "flake": false, "locked": { "lastModified": 1635892615, @@ -6293,7 +6222,7 @@ "type": "github" } }, - "flake-compat_23": { + "flake-compat_22": { "flake": false, "locked": { "lastModified": 1650374568, @@ -6309,7 +6238,7 @@ "type": "github" } }, - "flake-compat_24": { + "flake-compat_23": { "flake": false, "locked": { "lastModified": 1647532380, @@ -6326,7 +6255,7 @@ "type": "github" } }, - "flake-compat_25": { + "flake-compat_24": { "flake": false, "locked": { "lastModified": 1696426674, @@ -6342,6 +6271,23 @@ "type": "github" } }, + "flake-compat_25": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, "flake-compat_26": { "flake": false, "locked": { @@ -6427,23 +6373,6 @@ } }, "flake-compat_30": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_31": { "flake": false, "locked": { "lastModified": 1673956053, @@ -6459,7 +6388,7 @@ "type": "github" } }, - "flake-compat_32": { + "flake-compat_31": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6476,7 +6405,7 @@ "type": "github" } }, - "flake-compat_33": { + "flake-compat_32": { "flake": false, "locked": { "lastModified": 1673956053, @@ -6492,7 +6421,7 @@ "type": "github" } }, - "flake-compat_34": { + "flake-compat_33": { "flake": false, "locked": { "lastModified": 1696426674, @@ -6508,7 +6437,7 @@ "type": "github" } }, - "flake-compat_35": { + "flake-compat_34": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6525,7 +6454,7 @@ "type": "github" } }, - "flake-compat_36": { + "flake-compat_35": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6542,7 +6471,7 @@ "type": "github" } }, - "flake-compat_37": { + "flake-compat_36": { "flake": false, "locked": { "lastModified": 1673956053, @@ -6558,7 +6487,7 @@ "type": "github" } }, - "flake-compat_38": { + "flake-compat_37": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6575,7 +6504,7 @@ "type": "github" } }, - "flake-compat_39": { + "flake-compat_38": { "flake": false, "locked": { "lastModified": 1673956053, @@ -6591,40 +6520,40 @@ "type": "github" } }, - "flake-compat_4": { + "flake-compat_39": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", + "owner": "edolstra", "repo": "flake-compat", "type": "github" } }, - "flake-compat_40": { + "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "edolstra", + "owner": "input-output-hk", + "ref": "fixes", "repo": "flake-compat", "type": "github" } }, - "flake-compat_41": { + "flake-compat_40": { "flake": false, "locked": { "lastModified": 1696426674, @@ -6640,7 +6569,7 @@ "type": "github" } }, - "flake-compat_42": { + "flake-compat_41": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6657,7 +6586,7 @@ "type": "github" } }, - "flake-compat_43": { + "flake-compat_42": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6674,7 +6603,7 @@ "type": "github" } }, - "flake-compat_44": { + "flake-compat_43": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6691,7 +6620,7 @@ "type": "github" } }, - "flake-compat_45": { + "flake-compat_44": { "flake": false, "locked": { "lastModified": 1673956053, @@ -6707,7 +6636,7 @@ "type": "github" } }, - "flake-compat_46": { + "flake-compat_45": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6724,7 +6653,7 @@ "type": "github" } }, - "flake-compat_47": { + "flake-compat_46": { "flake": false, "locked": { "lastModified": 1673956053, @@ -6740,7 +6669,7 @@ "type": "github" } }, - "flake-compat_48": { + "flake-compat_47": { "flake": false, "locked": { "lastModified": 1696426674, @@ -6756,7 +6685,7 @@ "type": "github" } }, - "flake-compat_49": { + "flake-compat_48": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6773,7 +6702,7 @@ "type": "github" } }, - "flake-compat_5": { + "flake-compat_49": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6790,7 +6719,7 @@ "type": "github" } }, - "flake-compat_50": { + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6807,7 +6736,7 @@ "type": "github" } }, - "flake-compat_51": { + "flake-compat_50": { "flake": false, "locked": { "lastModified": 1673956053, @@ -6823,7 +6752,7 @@ "type": "github" } }, - "flake-compat_52": { + "flake-compat_51": { "flake": false, "locked": { "lastModified": 1672831974, @@ -6840,7 +6769,7 @@ "type": "github" } }, - "flake-compat_53": { + "flake-compat_52": { "flake": false, "locked": { "lastModified": 1673956053, @@ -6856,7 +6785,7 @@ "type": "github" } }, - "flake-compat_54": { + "flake-compat_53": { "flake": false, "locked": { "lastModified": 1696426674, @@ -6872,7 +6801,7 @@ "type": "github" } }, - "flake-compat_55": { + "flake-compat_54": { "flake": false, "locked": { "lastModified": 1696426674, @@ -6888,7 +6817,7 @@ "type": "github" } }, - "flake-compat_56": { + "flake-compat_55": { "flake": false, "locked": { "lastModified": 1696426674, @@ -7062,7 +6991,7 @@ }, "flake-parts_6": { "inputs": { - "nixpkgs": "nixpkgs_86" + "nixpkgs": "nixpkgs_84" }, "locked": { "lastModified": 1655570068, @@ -7145,25 +7074,7 @@ }, "flake-utils_100": { "inputs": { - "systems": "systems_56" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_101": { - "inputs": { - "systems": "systems_57" + "systems": "systems_58" }, "locked": { "lastModified": 1694529238, @@ -7179,9 +7090,9 @@ "type": "github" } }, - "flake-utils_102": { + "flake-utils_101": { "inputs": { - "systems": "systems_58" + "systems": "systems_59" }, "locked": { "lastModified": 1685518550, @@ -7197,9 +7108,9 @@ "type": "github" } }, - "flake-utils_103": { + "flake-utils_102": { "inputs": { - "systems": "systems_59" + "systems": "systems_60" }, "locked": { "lastModified": 1710146030, @@ -7215,9 +7126,9 @@ "type": "github" } }, - "flake-utils_104": { + "flake-utils_103": { "inputs": { - "systems": "systems_60" + "systems": "systems_61" }, "locked": { "lastModified": 1710146030, @@ -7233,9 +7144,9 @@ "type": "github" } }, - "flake-utils_105": { + "flake-utils_104": { "inputs": { - "systems": "systems_61" + "systems": "systems_62" }, "locked": { "lastModified": 1710146030, @@ -7251,9 +7162,9 @@ "type": "github" } }, - "flake-utils_106": { + "flake-utils_105": { "inputs": { - "systems": "systems_62" + "systems": "systems_63" }, "locked": { "lastModified": 1710146030, @@ -7269,9 +7180,9 @@ "type": "github" } }, - "flake-utils_107": { + "flake-utils_106": { "inputs": { - "systems": "systems_63" + "systems": "systems_64" }, "locked": { "lastModified": 1710146030, @@ -7287,9 +7198,9 @@ "type": "github" } }, - "flake-utils_108": { + "flake-utils_107": { "inputs": { - "systems": "systems_64" + "systems": "systems_65" }, "locked": { "lastModified": 1710146030, @@ -7460,27 +7371,15 @@ } }, "flake-utils_20": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" + "inputs": { + "systems": "systems_4" }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_21": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -7489,7 +7388,7 @@ "type": "github" } }, - "flake-utils_22": { + "flake-utils_21": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7504,7 +7403,7 @@ "type": "github" } }, - "flake-utils_23": { + "flake-utils_22": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7519,7 +7418,7 @@ "type": "github" } }, - "flake-utils_24": { + "flake-utils_23": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7534,7 +7433,7 @@ "type": "github" } }, - "flake-utils_25": { + "flake-utils_24": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -7549,7 +7448,7 @@ "type": "github" } }, - "flake-utils_26": { + "flake-utils_25": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -7564,7 +7463,7 @@ "type": "github" } }, - "flake-utils_27": { + "flake-utils_26": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7579,7 +7478,7 @@ "type": "github" } }, - "flake-utils_28": { + "flake-utils_27": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7594,7 +7493,7 @@ "type": "github" } }, - "flake-utils_29": { + "flake-utils_28": { "locked": { "lastModified": 1656928814, "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", @@ -7609,7 +7508,7 @@ "type": "github" } }, - "flake-utils_3": { + "flake-utils_29": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -7624,7 +7523,7 @@ "type": "github" } }, - "flake-utils_30": { + "flake-utils_3": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -7639,7 +7538,7 @@ "type": "github" } }, - "flake-utils_31": { + "flake-utils_30": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -7654,7 +7553,7 @@ "type": "github" } }, - "flake-utils_32": { + "flake-utils_31": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -7669,7 +7568,7 @@ "type": "github" } }, - "flake-utils_33": { + "flake-utils_32": { "locked": { "lastModified": 1610051610, "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", @@ -7684,7 +7583,7 @@ "type": "github" } }, - "flake-utils_34": { + "flake-utils_33": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7699,7 +7598,7 @@ "type": "github" } }, - "flake-utils_35": { + "flake-utils_34": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7714,7 +7613,7 @@ "type": "github" } }, - "flake-utils_36": { + "flake-utils_35": { "locked": { "lastModified": 1634851050, "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", @@ -7729,7 +7628,7 @@ "type": "github" } }, - "flake-utils_37": { + "flake-utils_36": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -7744,7 +7643,7 @@ "type": "github" } }, - "flake-utils_38": { + "flake-utils_37": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -7759,7 +7658,7 @@ "type": "github" } }, - "flake-utils_39": { + "flake-utils_38": { "locked": { "lastModified": 1619345332, "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", @@ -7774,38 +7673,38 @@ "type": "github" } }, - "flake-utils_4": { + "flake-utils_39": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { "owner": "numtide", + "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, - "flake-utils_40": { + "flake-utils_4": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { "owner": "numtide", - "ref": "v1.0.0", "repo": "flake-utils", "type": "github" } }, - "flake-utils_41": { + "flake-utils_40": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -7820,7 +7719,7 @@ "type": "github" } }, - "flake-utils_42": { + "flake-utils_41": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -7835,7 +7734,7 @@ "type": "github" } }, - "flake-utils_43": { + "flake-utils_42": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -7850,7 +7749,7 @@ "type": "github" } }, - "flake-utils_44": { + "flake-utils_43": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", @@ -7865,7 +7764,7 @@ "type": "github" } }, - "flake-utils_45": { + "flake-utils_44": { "locked": { "lastModified": 1656928814, "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", @@ -7880,7 +7779,7 @@ "type": "github" } }, - "flake-utils_46": { + "flake-utils_45": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -7895,7 +7794,7 @@ "type": "github" } }, - "flake-utils_47": { + "flake-utils_46": { "locked": { "lastModified": 1642700792, "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", @@ -7910,7 +7809,7 @@ "type": "github" } }, - "flake-utils_48": { + "flake-utils_47": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -7925,9 +7824,9 @@ "type": "github" } }, - "flake-utils_49": { + "flake-utils_48": { "inputs": { - "systems": "systems_5" + "systems": "systems_6" }, "locked": { "lastModified": 1685518550, @@ -7943,43 +7842,43 @@ "type": "github" } }, - "flake-utils_5": { + "flake-utils_49": { + "inputs": { + "systems": "systems_7" + }, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, - "flake-utils_50": { - "inputs": { - "systems": "systems_6" - }, + "flake-utils_5": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "numtide", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", "repo": "flake-utils", "type": "github" } }, - "flake-utils_51": { + "flake-utils_50": { "inputs": { - "systems": "systems_7" + "systems": "systems_8" }, "locked": { "lastModified": 1685518550, @@ -7995,9 +7894,9 @@ "type": "github" } }, - "flake-utils_52": { + "flake-utils_51": { "inputs": { - "systems": "systems_8" + "systems": "systems_9" }, "locked": { "lastModified": 1710146030, @@ -8013,9 +7912,9 @@ "type": "github" } }, - "flake-utils_53": { + "flake-utils_52": { "inputs": { - "systems": "systems_9" + "systems": "systems_10" }, "locked": { "lastModified": 1685518550, @@ -8031,9 +7930,9 @@ "type": "github" } }, - "flake-utils_54": { + "flake-utils_53": { "inputs": { - "systems": "systems_10" + "systems": "systems_11" }, "locked": { "lastModified": 1710146030, @@ -8049,9 +7948,9 @@ "type": "github" } }, - "flake-utils_55": { + "flake-utils_54": { "inputs": { - "systems": "systems_11" + "systems": "systems_12" }, "locked": { "lastModified": 1685518550, @@ -8067,9 +7966,9 @@ "type": "github" } }, - "flake-utils_56": { + "flake-utils_55": { "inputs": { - "systems": "systems_12" + "systems": "systems_13" }, "locked": { "lastModified": 1701680307, @@ -8085,9 +7984,9 @@ "type": "github" } }, - "flake-utils_57": { + "flake-utils_56": { "inputs": { - "systems": "systems_13" + "systems": "systems_14" }, "locked": { "lastModified": 1694529238, @@ -8103,9 +8002,9 @@ "type": "github" } }, - "flake-utils_58": { + "flake-utils_57": { "inputs": { - "systems": "systems_14" + "systems": "systems_15" }, "locked": { "lastModified": 1685518550, @@ -8121,9 +8020,9 @@ "type": "github" } }, - "flake-utils_59": { + "flake-utils_58": { "inputs": { - "systems": "systems_15" + "systems": "systems_16" }, "locked": { "lastModified": 1685518550, @@ -8139,13 +8038,16 @@ "type": "github" } }, - "flake-utils_6": { + "flake-utils_59": { + "inputs": { + "systems": "systems_17" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -8154,16 +8056,13 @@ "type": "github" } }, - "flake-utils_60": { - "inputs": { - "systems": "systems_16" - }, + "flake-utils_6": { "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -8172,9 +8071,9 @@ "type": "github" } }, - "flake-utils_61": { + "flake-utils_60": { "inputs": { - "systems": "systems_17" + "systems": "systems_18" }, "locked": { "lastModified": 1694529238, @@ -8190,9 +8089,9 @@ "type": "github" } }, - "flake-utils_62": { + "flake-utils_61": { "inputs": { - "systems": "systems_18" + "systems": "systems_19" }, "locked": { "lastModified": 1685518550, @@ -8208,9 +8107,9 @@ "type": "github" } }, - "flake-utils_63": { + "flake-utils_62": { "inputs": { - "systems": "systems_19" + "systems": "systems_20" }, "locked": { "lastModified": 1710146030, @@ -8226,9 +8125,9 @@ "type": "github" } }, - "flake-utils_64": { + "flake-utils_63": { "inputs": { - "systems": "systems_20" + "systems": "systems_21" }, "locked": { "lastModified": 1710146030, @@ -8244,9 +8143,9 @@ "type": "github" } }, - "flake-utils_65": { + "flake-utils_64": { "inputs": { - "systems": "systems_21" + "systems": "systems_22" }, "locked": { "lastModified": 1685518550, @@ -8262,9 +8161,9 @@ "type": "github" } }, - "flake-utils_66": { + "flake-utils_65": { "inputs": { - "systems": "systems_22" + "systems": "systems_23" }, "locked": { "lastModified": 1710146030, @@ -8280,9 +8179,9 @@ "type": "github" } }, - "flake-utils_67": { + "flake-utils_66": { "inputs": { - "systems": "systems_23" + "systems": "systems_24" }, "locked": { "lastModified": 1685518550, @@ -8298,9 +8197,9 @@ "type": "github" } }, - "flake-utils_68": { + "flake-utils_67": { "inputs": { - "systems": "systems_24" + "systems": "systems_25" }, "locked": { "lastModified": 1701680307, @@ -8316,9 +8215,9 @@ "type": "github" } }, - "flake-utils_69": { + "flake-utils_68": { "inputs": { - "systems": "systems_25" + "systems": "systems_26" }, "locked": { "lastModified": 1694529238, @@ -8334,13 +8233,16 @@ "type": "github" } }, - "flake-utils_7": { + "flake-utils_69": { + "inputs": { + "systems": "systems_27" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8349,16 +8251,13 @@ "type": "github" } }, - "flake-utils_70": { - "inputs": { - "systems": "systems_26" - }, + "flake-utils_7": { "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -8367,9 +8266,9 @@ "type": "github" } }, - "flake-utils_71": { + "flake-utils_70": { "inputs": { - "systems": "systems_27" + "systems": "systems_28" }, "locked": { "lastModified": 1685518550, @@ -8385,9 +8284,9 @@ "type": "github" } }, - "flake-utils_72": { + "flake-utils_71": { "inputs": { - "systems": "systems_28" + "systems": "systems_29" }, "locked": { "lastModified": 1701680307, @@ -8403,9 +8302,9 @@ "type": "github" } }, - "flake-utils_73": { + "flake-utils_72": { "inputs": { - "systems": "systems_29" + "systems": "systems_30" }, "locked": { "lastModified": 1694529238, @@ -8421,9 +8320,9 @@ "type": "github" } }, - "flake-utils_74": { + "flake-utils_73": { "inputs": { - "systems": "systems_30" + "systems": "systems_31" }, "locked": { "lastModified": 1685518550, @@ -8439,9 +8338,9 @@ "type": "github" } }, - "flake-utils_75": { + "flake-utils_74": { "inputs": { - "systems": "systems_31" + "systems": "systems_32" }, "locked": { "lastModified": 1710146030, @@ -8457,9 +8356,9 @@ "type": "github" } }, - "flake-utils_76": { + "flake-utils_75": { "inputs": { - "systems": "systems_32" + "systems": "systems_33" }, "locked": { "lastModified": 1710146030, @@ -8475,9 +8374,9 @@ "type": "github" } }, - "flake-utils_77": { + "flake-utils_76": { "inputs": { - "systems": "systems_33" + "systems": "systems_34" }, "locked": { "lastModified": 1710146030, @@ -8493,9 +8392,9 @@ "type": "github" } }, - "flake-utils_78": { + "flake-utils_77": { "inputs": { - "systems": "systems_34" + "systems": "systems_35" }, "locked": { "lastModified": 1710146030, @@ -8511,9 +8410,9 @@ "type": "github" } }, - "flake-utils_79": { + "flake-utils_78": { "inputs": { - "systems": "systems_35" + "systems": "systems_36" }, "locked": { "lastModified": 1685518550, @@ -8529,13 +8428,16 @@ "type": "github" } }, - "flake-utils_8": { + "flake-utils_79": { + "inputs": { + "systems": "systems_37" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -8544,16 +8446,13 @@ "type": "github" } }, - "flake-utils_80": { - "inputs": { - "systems": "systems_36" - }, + "flake-utils_8": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -8562,9 +8461,9 @@ "type": "github" } }, - "flake-utils_81": { + "flake-utils_80": { "inputs": { - "systems": "systems_37" + "systems": "systems_38" }, "locked": { "lastModified": 1685518550, @@ -8580,9 +8479,9 @@ "type": "github" } }, - "flake-utils_82": { + "flake-utils_81": { "inputs": { - "systems": "systems_38" + "systems": "systems_39" }, "locked": { "lastModified": 1710146030, @@ -8598,9 +8497,9 @@ "type": "github" } }, - "flake-utils_83": { + "flake-utils_82": { "inputs": { - "systems": "systems_39" + "systems": "systems_40" }, "locked": { "lastModified": 1685518550, @@ -8616,9 +8515,9 @@ "type": "github" } }, - "flake-utils_84": { + "flake-utils_83": { "inputs": { - "systems": "systems_40" + "systems": "systems_41" }, "locked": { "lastModified": 1701680307, @@ -8634,9 +8533,9 @@ "type": "github" } }, - "flake-utils_85": { + "flake-utils_84": { "inputs": { - "systems": "systems_41" + "systems": "systems_42" }, "locked": { "lastModified": 1694529238, @@ -8652,9 +8551,9 @@ "type": "github" } }, - "flake-utils_86": { + "flake-utils_85": { "inputs": { - "systems": "systems_42" + "systems": "systems_43" }, "locked": { "lastModified": 1685518550, @@ -8670,9 +8569,9 @@ "type": "github" } }, - "flake-utils_87": { + "flake-utils_86": { "inputs": { - "systems": "systems_43" + "systems": "systems_44" }, "locked": { "lastModified": 1685518550, @@ -8688,9 +8587,9 @@ "type": "github" } }, - "flake-utils_88": { + "flake-utils_87": { "inputs": { - "systems": "systems_44" + "systems": "systems_45" }, "locked": { "lastModified": 1701680307, @@ -8706,9 +8605,9 @@ "type": "github" } }, - "flake-utils_89": { + "flake-utils_88": { "inputs": { - "systems": "systems_45" + "systems": "systems_46" }, "locked": { "lastModified": 1694529238, @@ -8724,13 +8623,16 @@ "type": "github" } }, - "flake-utils_9": { + "flake-utils_89": { + "inputs": { + "systems": "systems_47" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -8739,16 +8641,13 @@ "type": "github" } }, - "flake-utils_90": { - "inputs": { - "systems": "systems_46" - }, + "flake-utils_9": { "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -8757,9 +8656,9 @@ "type": "github" } }, - "flake-utils_91": { + "flake-utils_90": { "inputs": { - "systems": "systems_47" + "systems": "systems_48" }, "locked": { "lastModified": 1710146030, @@ -8775,9 +8674,9 @@ "type": "github" } }, - "flake-utils_92": { + "flake-utils_91": { "inputs": { - "systems": "systems_48" + "systems": "systems_49" }, "locked": { "lastModified": 1710146030, @@ -8793,9 +8692,9 @@ "type": "github" } }, - "flake-utils_93": { + "flake-utils_92": { "inputs": { - "systems": "systems_49" + "systems": "systems_50" }, "locked": { "lastModified": 1685518550, @@ -8811,9 +8710,9 @@ "type": "github" } }, - "flake-utils_94": { + "flake-utils_93": { "inputs": { - "systems": "systems_50" + "systems": "systems_51" }, "locked": { "lastModified": 1710146030, @@ -8829,9 +8728,9 @@ "type": "github" } }, - "flake-utils_95": { + "flake-utils_94": { "inputs": { - "systems": "systems_51" + "systems": "systems_52" }, "locked": { "lastModified": 1685518550, @@ -8847,9 +8746,9 @@ "type": "github" } }, - "flake-utils_96": { + "flake-utils_95": { "inputs": { - "systems": "systems_52" + "systems": "systems_53" }, "locked": { "lastModified": 1701680307, @@ -8865,9 +8764,9 @@ "type": "github" } }, - "flake-utils_97": { + "flake-utils_96": { "inputs": { - "systems": "systems_53" + "systems": "systems_54" }, "locked": { "lastModified": 1694529238, @@ -8883,9 +8782,9 @@ "type": "github" } }, - "flake-utils_98": { + "flake-utils_97": { "inputs": { - "systems": "systems_54" + "systems": "systems_55" }, "locked": { "lastModified": 1685518550, @@ -8901,9 +8800,9 @@ "type": "github" } }, - "flake-utils_99": { + "flake-utils_98": { "inputs": { - "systems": "systems_55" + "systems": "systems_56" }, "locked": { "lastModified": 1685518550, @@ -8919,6 +8818,24 @@ "type": "github" } }, + "flake-utils_99": { + "inputs": { + "systems": "systems_57" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "flakeCompat": { "flake": false, "locked": { @@ -8937,7 +8854,7 @@ }, "follower": { "inputs": { - "devshell": "devshell_15", + "devshell": "devshell_14", "inclusive": "inclusive_8", "nixpkgs": [ "db-sync", @@ -9388,6 +9305,25 @@ } }, "ghc910X": { + "flake": false, + "locked": { + "lastModified": 1714520650, + "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", + "ref": "ghc-9.10", + "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", + "revCount": 62663, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_2": { "flake": false, "locked": { "lastModified": 1713193157, @@ -9406,7 +9342,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_2": { + "ghc910X_3": { "flake": false, "locked": { "lastModified": 1713193157, @@ -9425,7 +9361,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_3": { + "ghc910X_4": { "flake": false, "locked": { "lastModified": 1711543129, @@ -9444,7 +9380,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_4": { + "ghc910X_5": { "flake": false, "locked": { "lastModified": 1711543129, @@ -9463,7 +9399,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_5": { + "ghc910X_6": { "flake": false, "locked": { "lastModified": 1713193157, @@ -9482,7 +9418,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_6": { + "ghc910X_7": { "flake": false, "locked": { "lastModified": 1711543129, @@ -9501,7 +9437,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc910X_7": { + "ghc910X_8": { "flake": false, "locked": { "lastModified": 1711543129, @@ -9523,11 +9459,11 @@ "ghc911": { "flake": false, "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "lastModified": 1714817013, + "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, + "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", + "revCount": 62816, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -9559,11 +9495,11 @@ "ghc911_3": { "flake": false, "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -9595,11 +9531,11 @@ "ghc911_5": { "flake": false, "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -9613,11 +9549,11 @@ "ghc911_6": { "flake": false, "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -9646,26 +9582,25 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc98X": { + "ghc911_8": { "flake": false, "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "ref": "ghc-9.8", "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc98X_10": { + "ghc98X": { "flake": false, "locked": { "lastModified": 1696643148, @@ -9684,7 +9619,7 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc98X_11": { + "ghc98X_10": { "flake": false, "locked": { "lastModified": 1696643148, @@ -9891,24 +9826,6 @@ "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "ghc99_11": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, "ghc99_2": { "flake": false, "locked": { @@ -9930,11 +9847,11 @@ "ghc99_3": { "flake": false, "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -10628,11 +10545,11 @@ "hackageNix_4": { "flake": false, "locked": { - "lastModified": 1701303758, - "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "lastModified": 1718757495, + "narHash": "sha256-xviuxucDjsQ2HbqzfwVyB4ZmDIyzOnf2oDbVtwBHIco=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", + "rev": "0bb764772a383a926e3f945397a0e59ab3c64d6d", "type": "github" }, "original": { @@ -11019,10 +10936,10 @@ "cabal-34": "cabal-34_16", "cabal-36": "cabal-36_16", "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_35", + "flake-compat": "flake-compat_34", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "ghc910X": "ghc910X_4", - "ghc911": "ghc911_4", + "ghc910X": "ghc910X_5", + "ghc911": "ghc911_5", "hackage": [ "kupo-nixos", "iogx", @@ -11037,9 +10954,9 @@ "hls-2.2": "hls-2.2_10", "hls-2.3": "hls-2.3_10", "hls-2.4": "hls-2.4_10", - "hls-2.5": "hls-2.5_5", - "hls-2.6": "hls-2.6_5", - "hls-2.7": "hls-2.7_5", + "hls-2.5": "hls-2.5_6", + "hls-2.6": "hls-2.6_6", + "hls-2.7": "hls-2.7_6", "hpc-coveralls": "hpc-coveralls_16", "hydra": "hydra_18", "iserv-proxy": "iserv-proxy_12", @@ -11059,7 +10976,7 @@ "nixpkgs-2205": "nixpkgs-2205_13", "nixpkgs-2211": "nixpkgs-2211_12", "nixpkgs-2305": "nixpkgs-2305_11", - "nixpkgs-2311": "nixpkgs-2311_7", + "nixpkgs-2311": "nixpkgs-2311_8", "nixpkgs-unstable": "nixpkgs-unstable_19", "old-ghc-nix": "old-ghc-nix_16", "stackage": "stackage_15" @@ -11085,10 +11002,10 @@ "cabal-34": "cabal-34_17", "cabal-36": "cabal-36_17", "cardano-shell": "cardano-shell_17", - "flake-compat": "flake-compat_36", + "flake-compat": "flake-compat_35", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", - "ghc98X": "ghc98X_6", - "ghc99": "ghc99_6", + "ghc98X": "ghc98X_5", + "ghc99": "ghc99_5", "hackage": [ "kupo-nixos", "iogx", @@ -11126,7 +11043,7 @@ "nixpkgs-2205": "nixpkgs-2205_14", "nixpkgs-2211": "nixpkgs-2211_13", "nixpkgs-2305": "nixpkgs-2305_12", - "nixpkgs-2311": "nixpkgs-2311_8", + "nixpkgs-2311": "nixpkgs-2311_9", "nixpkgs-unstable": "nixpkgs-unstable_20", "old-ghc-nix": "old-ghc-nix_17", "stackage": "stackage_16" @@ -11152,10 +11069,10 @@ "cabal-34": "cabal-34_18", "cabal-36": "cabal-36_18", "cardano-shell": "cardano-shell_18", - "flake-compat": "flake-compat_38", + "flake-compat": "flake-compat_37", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", - "ghc98X": "ghc98X_7", - "ghc99": "ghc99_7", + "ghc98X": "ghc98X_6", + "ghc99": "ghc99_6", "hackage": [ "kupo-nixos", "iogx", @@ -11193,7 +11110,7 @@ "nixpkgs-2205": "nixpkgs-2205_15", "nixpkgs-2211": "nixpkgs-2211_14", "nixpkgs-2305": "nixpkgs-2305_13", - "nixpkgs-2311": "nixpkgs-2311_9", + "nixpkgs-2311": "nixpkgs-2311_10", "nixpkgs-unstable": "nixpkgs-unstable_21", "old-ghc-nix": "old-ghc-nix_18", "stackage": "stackage_17" @@ -11219,10 +11136,10 @@ "cabal-34": "cabal-34_19", "cabal-36": "cabal-36_19", "cardano-shell": "cardano-shell_19", - "flake-compat": "flake-compat_42", + "flake-compat": "flake-compat_41", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", - "ghc910X": "ghc910X_5", - "ghc911": "ghc911_5", + "ghc910X": "ghc910X_6", + "ghc911": "ghc911_6", "hackage": [ "kupo-nixos", "iogx", @@ -11235,9 +11152,9 @@ "hls-2.2": "hls-2.2_13", "hls-2.3": "hls-2.3_13", "hls-2.4": "hls-2.4_13", - "hls-2.5": "hls-2.5_6", - "hls-2.6": "hls-2.6_6", - "hls-2.7": "hls-2.7_6", + "hls-2.5": "hls-2.5_7", + "hls-2.6": "hls-2.6_7", + "hls-2.7": "hls-2.7_7", "hpc-coveralls": "hpc-coveralls_19", "hydra": "hydra_21", "iserv-proxy": "iserv-proxy_15", @@ -11255,7 +11172,7 @@ "nixpkgs-2205": "nixpkgs-2205_16", "nixpkgs-2211": "nixpkgs-2211_15", "nixpkgs-2305": "nixpkgs-2305_14", - "nixpkgs-2311": "nixpkgs-2311_10", + "nixpkgs-2311": "nixpkgs-2311_11", "nixpkgs-unstable": "nixpkgs-unstable_22", "old-ghc-nix": "old-ghc-nix_19", "stackage": "stackage_18" @@ -11281,10 +11198,10 @@ "cabal-34": "cabal-34_20", "cabal-36": "cabal-36_20", "cardano-shell": "cardano-shell_20", - "flake-compat": "flake-compat_43", + "flake-compat": "flake-compat_42", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", - "ghc910X": "ghc910X_6", - "ghc911": "ghc911_6", + "ghc910X": "ghc910X_7", + "ghc911": "ghc911_7", "hackage": [ "kupo-nixos", "iogx", @@ -11299,9 +11216,9 @@ "hls-2.2": "hls-2.2_14", "hls-2.3": "hls-2.3_14", "hls-2.4": "hls-2.4_14", - "hls-2.5": "hls-2.5_7", - "hls-2.6": "hls-2.6_7", - "hls-2.7": "hls-2.7_7", + "hls-2.5": "hls-2.5_8", + "hls-2.6": "hls-2.6_8", + "hls-2.7": "hls-2.7_8", "hpc-coveralls": "hpc-coveralls_20", "hydra": "hydra_22", "iserv-proxy": "iserv-proxy_16", @@ -11321,7 +11238,7 @@ "nixpkgs-2205": "nixpkgs-2205_17", "nixpkgs-2211": "nixpkgs-2211_16", "nixpkgs-2305": "nixpkgs-2305_15", - "nixpkgs-2311": "nixpkgs-2311_11", + "nixpkgs-2311": "nixpkgs-2311_12", "nixpkgs-unstable": "nixpkgs-unstable_23", "old-ghc-nix": "old-ghc-nix_20", "stackage": "stackage_19" @@ -11347,10 +11264,10 @@ "cabal-34": "cabal-34_21", "cabal-36": "cabal-36_21", "cardano-shell": "cardano-shell_21", - "flake-compat": "flake-compat_44", + "flake-compat": "flake-compat_43", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", - "ghc98X": "ghc98X_8", - "ghc99": "ghc99_8", + "ghc98X": "ghc98X_7", + "ghc99": "ghc99_7", "hackage": [ "kupo-nixos", "iogx", @@ -11388,7 +11305,7 @@ "nixpkgs-2205": "nixpkgs-2205_18", "nixpkgs-2211": "nixpkgs-2211_17", "nixpkgs-2305": "nixpkgs-2305_16", - "nixpkgs-2311": "nixpkgs-2311_12", + "nixpkgs-2311": "nixpkgs-2311_13", "nixpkgs-unstable": "nixpkgs-unstable_24", "old-ghc-nix": "old-ghc-nix_21", "stackage": "stackage_20" @@ -11414,10 +11331,10 @@ "cabal-34": "cabal-34_22", "cabal-36": "cabal-36_22", "cardano-shell": "cardano-shell_22", - "flake-compat": "flake-compat_46", + "flake-compat": "flake-compat_45", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", - "ghc98X": "ghc98X_9", - "ghc99": "ghc99_9", + "ghc98X": "ghc98X_8", + "ghc99": "ghc99_8", "hackage": [ "kupo-nixos", "iogx", @@ -11455,7 +11372,7 @@ "nixpkgs-2205": "nixpkgs-2205_19", "nixpkgs-2211": "nixpkgs-2211_18", "nixpkgs-2305": "nixpkgs-2305_17", - "nixpkgs-2311": "nixpkgs-2311_13", + "nixpkgs-2311": "nixpkgs-2311_14", "nixpkgs-unstable": "nixpkgs-unstable_25", "old-ghc-nix": "old-ghc-nix_22", "stackage": "stackage_21" @@ -11481,10 +11398,10 @@ "cabal-34": "cabal-34_23", "cabal-36": "cabal-36_23", "cardano-shell": "cardano-shell_23", - "flake-compat": "flake-compat_49", + "flake-compat": "flake-compat_48", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", - "ghc910X": "ghc910X_7", - "ghc911": "ghc911_7", + "ghc910X": "ghc910X_8", + "ghc911": "ghc911_8", "hackage": [ "kupo-nixos", "iogx", @@ -11499,9 +11416,9 @@ "hls-2.2": "hls-2.2_17", "hls-2.3": "hls-2.3_17", "hls-2.4": "hls-2.4_17", - "hls-2.5": "hls-2.5_8", - "hls-2.6": "hls-2.6_8", - "hls-2.7": "hls-2.7_8", + "hls-2.5": "hls-2.5_9", + "hls-2.6": "hls-2.6_9", + "hls-2.7": "hls-2.7_9", "hpc-coveralls": "hpc-coveralls_23", "hydra": "hydra_25", "iserv-proxy": "iserv-proxy_19", @@ -11521,7 +11438,7 @@ "nixpkgs-2205": "nixpkgs-2205_20", "nixpkgs-2211": "nixpkgs-2211_19", "nixpkgs-2305": "nixpkgs-2305_18", - "nixpkgs-2311": "nixpkgs-2311_14", + "nixpkgs-2311": "nixpkgs-2311_15", "nixpkgs-unstable": "nixpkgs-unstable_26", "old-ghc-nix": "old-ghc-nix_23", "stackage": "stackage_22" @@ -11547,10 +11464,10 @@ "cabal-34": "cabal-34_24", "cabal-36": "cabal-36_24", "cardano-shell": "cardano-shell_24", - "flake-compat": "flake-compat_50", + "flake-compat": "flake-compat_49", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", - "ghc98X": "ghc98X_10", - "ghc99": "ghc99_10", + "ghc98X": "ghc98X_9", + "ghc99": "ghc99_9", "hackage": [ "kupo-nixos", "iogx", @@ -11588,7 +11505,7 @@ "nixpkgs-2205": "nixpkgs-2205_21", "nixpkgs-2211": "nixpkgs-2211_20", "nixpkgs-2305": "nixpkgs-2305_19", - "nixpkgs-2311": "nixpkgs-2311_15", + "nixpkgs-2311": "nixpkgs-2311_16", "nixpkgs-unstable": "nixpkgs-unstable_27", "old-ghc-nix": "old-ghc-nix_24", "stackage": "stackage_23" @@ -11614,10 +11531,10 @@ "cabal-34": "cabal-34_25", "cabal-36": "cabal-36_25", "cardano-shell": "cardano-shell_25", - "flake-compat": "flake-compat_52", + "flake-compat": "flake-compat_51", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", - "ghc98X": "ghc98X_11", - "ghc99": "ghc99_11", + "ghc98X": "ghc98X_10", + "ghc99": "ghc99_10", "hackage": [ "kupo-nixos", "iogx", @@ -11655,7 +11572,7 @@ "nixpkgs-2205": "nixpkgs-2205_22", "nixpkgs-2211": "nixpkgs-2211_21", "nixpkgs-2305": "nixpkgs-2305_20", - "nixpkgs-2311": "nixpkgs-2311_16", + "nixpkgs-2311": "nixpkgs-2311_17", "nixpkgs-unstable": "nixpkgs-unstable_28", "old-ghc-nix": "old-ghc-nix_25", "stackage": "stackage_24" @@ -11681,7 +11598,7 @@ "cabal-34": "cabal-34_6", "cabal-36": "cabal-36_6", "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_32", + "flake-utils": "flake-utils_31", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", "hackage": "hackage_2", "hpc-coveralls": "hpc-coveralls_6", @@ -11728,7 +11645,7 @@ "cabal-34": "cabal-34_8", "cabal-36": "cabal-36_8", "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_43", + "flake-utils": "flake-utils_42", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", "hackage": [ "db-sync", @@ -11773,7 +11690,7 @@ "cabal-34": "cabal-34_10", "cabal-36": "cabal-36_10", "cardano-shell": "cardano-shell_10", - "flake-compat": "flake-compat_26", + "flake-compat": "flake-compat_25", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", "hackage": [ "hackage-nix" @@ -11783,10 +11700,10 @@ "hls-2.2": "hls-2.2_4", "hls-2.3": "hls-2.3_4", "hls-2.4": "hls-2.4_4", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", - "hls-2.7": "hls-2.7", - "hls-2.8": "hls-2.8", + "hls-2.5": "hls-2.5_2", + "hls-2.6": "hls-2.6_2", + "hls-2.7": "hls-2.7_2", + "hls-2.8": "hls-2.8_2", "hpc-coveralls": "hpc-coveralls_10", "hydra": "hydra_12", "iserv-proxy": "iserv-proxy_6", @@ -11799,7 +11716,7 @@ "nixpkgs-2205": "nixpkgs-2205_7", "nixpkgs-2211": "nixpkgs-2211_6", "nixpkgs-2305": "nixpkgs-2305_5", - "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-2311": "nixpkgs-2311_2", "nixpkgs-unstable": "nixpkgs-unstable_13", "old-ghc-nix": "old-ghc-nix_10", "stackage": "stackage_9" @@ -11825,10 +11742,10 @@ "cabal-34": "cabal-34_11", "cabal-36": "cabal-36_11", "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_27", + "flake-compat": "flake-compat_26", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "ghc910X": "ghc910X", - "ghc911": "ghc911", + "ghc910X": "ghc910X_2", + "ghc911": "ghc911_2", "hackage": [ "kupo-nixos", "iogx", @@ -11839,9 +11756,9 @@ "hls-2.2": "hls-2.2_5", "hls-2.3": "hls-2.3_5", "hls-2.4": "hls-2.4_5", - "hls-2.5": "hls-2.5_2", - "hls-2.6": "hls-2.6_2", - "hls-2.7": "hls-2.7_2", + "hls-2.5": "hls-2.5_3", + "hls-2.6": "hls-2.6_3", + "hls-2.7": "hls-2.7_3", "hpc-coveralls": "hpc-coveralls_11", "hydra": "hydra_13", "iserv-proxy": "iserv-proxy_7", @@ -11857,7 +11774,7 @@ "nixpkgs-2205": "nixpkgs-2205_8", "nixpkgs-2211": "nixpkgs-2211_7", "nixpkgs-2305": "nixpkgs-2305_6", - "nixpkgs-2311": "nixpkgs-2311_2", + "nixpkgs-2311": "nixpkgs-2311_3", "nixpkgs-unstable": "nixpkgs-unstable_14", "old-ghc-nix": "old-ghc-nix_11", "stackage": "stackage_10" @@ -11883,10 +11800,10 @@ "cabal-34": "cabal-34_12", "cabal-36": "cabal-36_12", "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_28", + "flake-compat": "flake-compat_27", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "ghc910X": "ghc910X_2", - "ghc911": "ghc911_2", + "ghc910X": "ghc910X_3", + "ghc911": "ghc911_3", "hackage": [ "kupo-nixos", "iogx", @@ -11899,9 +11816,9 @@ "hls-2.2": "hls-2.2_6", "hls-2.3": "hls-2.3_6", "hls-2.4": "hls-2.4_6", - "hls-2.5": "hls-2.5_3", - "hls-2.6": "hls-2.6_3", - "hls-2.7": "hls-2.7_3", + "hls-2.5": "hls-2.5_4", + "hls-2.6": "hls-2.6_4", + "hls-2.7": "hls-2.7_4", "hpc-coveralls": "hpc-coveralls_12", "hydra": "hydra_14", "iserv-proxy": "iserv-proxy_8", @@ -11919,7 +11836,7 @@ "nixpkgs-2205": "nixpkgs-2205_9", "nixpkgs-2211": "nixpkgs-2211_8", "nixpkgs-2305": "nixpkgs-2305_7", - "nixpkgs-2311": "nixpkgs-2311_3", + "nixpkgs-2311": "nixpkgs-2311_4", "nixpkgs-unstable": "nixpkgs-unstable_15", "old-ghc-nix": "old-ghc-nix_12", "stackage": "stackage_11" @@ -11945,10 +11862,10 @@ "cabal-34": "cabal-34_13", "cabal-36": "cabal-36_13", "cardano-shell": "cardano-shell_13", - "flake-compat": "flake-compat_29", + "flake-compat": "flake-compat_28", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "ghc910X": "ghc910X_3", - "ghc911": "ghc911_3", + "ghc910X": "ghc910X_4", + "ghc911": "ghc911_4", "hackage": [ "kupo-nixos", "iogx", @@ -11963,9 +11880,9 @@ "hls-2.2": "hls-2.2_7", "hls-2.3": "hls-2.3_7", "hls-2.4": "hls-2.4_7", - "hls-2.5": "hls-2.5_4", - "hls-2.6": "hls-2.6_4", - "hls-2.7": "hls-2.7_4", + "hls-2.5": "hls-2.5_5", + "hls-2.6": "hls-2.6_5", + "hls-2.7": "hls-2.7_5", "hpc-coveralls": "hpc-coveralls_13", "hydra": "hydra_15", "iserv-proxy": "iserv-proxy_9", @@ -11985,7 +11902,7 @@ "nixpkgs-2205": "nixpkgs-2205_10", "nixpkgs-2211": "nixpkgs-2211_9", "nixpkgs-2305": "nixpkgs-2305_8", - "nixpkgs-2311": "nixpkgs-2311_4", + "nixpkgs-2311": "nixpkgs-2311_5", "nixpkgs-unstable": "nixpkgs-unstable_16", "old-ghc-nix": "old-ghc-nix_13", "stackage": "stackage_12" @@ -12011,10 +11928,10 @@ "cabal-34": "cabal-34_14", "cabal-36": "cabal-36_14", "cardano-shell": "cardano-shell_14", - "flake-compat": "flake-compat_30", + "flake-compat": "flake-compat_29", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", - "ghc98X": "ghc98X_4", - "ghc99": "ghc99_4", + "ghc98X": "ghc98X_3", + "ghc99": "ghc99_3", "hackage": [ "kupo-nixos", "iogx", @@ -12052,7 +11969,7 @@ "nixpkgs-2205": "nixpkgs-2205_11", "nixpkgs-2211": "nixpkgs-2211_10", "nixpkgs-2305": "nixpkgs-2305_9", - "nixpkgs-2311": "nixpkgs-2311_5", + "nixpkgs-2311": "nixpkgs-2311_6", "nixpkgs-unstable": "nixpkgs-unstable_17", "old-ghc-nix": "old-ghc-nix_14", "stackage": "stackage_13" @@ -12078,10 +11995,10 @@ "cabal-34": "cabal-34_15", "cabal-36": "cabal-36_15", "cardano-shell": "cardano-shell_15", - "flake-compat": "flake-compat_32", + "flake-compat": "flake-compat_31", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", - "ghc98X": "ghc98X_5", - "ghc99": "ghc99_5", + "ghc98X": "ghc98X_4", + "ghc99": "ghc99_4", "hackage": [ "kupo-nixos", "iogx", @@ -12119,7 +12036,7 @@ "nixpkgs-2205": "nixpkgs-2205_12", "nixpkgs-2211": "nixpkgs-2211_11", "nixpkgs-2305": "nixpkgs-2305_10", - "nixpkgs-2311": "nixpkgs-2311_6", + "nixpkgs-2311": "nixpkgs-2311_7", "nixpkgs-unstable": "nixpkgs-unstable_18", "old-ghc-nix": "old-ghc-nix_15", "stackage": "stackage_14" @@ -12301,8 +12218,8 @@ "cardano-shell": "cardano-shell_5", "flake-compat": "flake-compat_16", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "ghc98X": "ghc98X_3", - "ghc99": "ghc99_3", + "ghc910X": "ghc910X", + "ghc911": "ghc911", "hackage": [ "cardano-node", "hackageNix" @@ -12312,6 +12229,10 @@ "hls-2.2": "hls-2.2_3", "hls-2.3": "hls-2.3_3", "hls-2.4": "hls-2.4_3", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", + "hls-2.7": "hls-2.7", + "hls-2.8": "hls-2.8", "hpc-coveralls": "hpc-coveralls_5", "hydra": "hydra_5", "iserv-proxy": "iserv-proxy_5", @@ -12325,16 +12246,17 @@ "nixpkgs-2205": "nixpkgs-2205_5", "nixpkgs-2211": "nixpkgs-2211_5", "nixpkgs-2305": "nixpkgs-2305_4", + "nixpkgs-2311": "nixpkgs-2311", "nixpkgs-unstable": "nixpkgs-unstable_6", "old-ghc-nix": "old-ghc-nix_5", "stackage": "stackage_4" }, "locked": { - "lastModified": 1700441391, - "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", + "lastModified": 1718797200, + "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", + "rev": "cb139fa956158397aa398186bb32dd26f7318784", "type": "github" }, "original": { @@ -12350,7 +12272,7 @@ "cabal-34": "cabal-34_7", "cabal-36": "cabal-36_7", "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_42", + "flake-utils": "flake-utils_41", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", "hackage": "hackage_3", "hpc-coveralls": "hpc-coveralls_7", @@ -12390,7 +12312,7 @@ "cabal-34": "cabal-34_9", "cabal-36": "cabal-36_9", "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_48", + "flake-utils": "flake-utils_47", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", "hackage": "hackage_5", "hpc-coveralls": "hpc-coveralls_9", @@ -12443,7 +12365,11 @@ }, "haumea_2": { "inputs": { - "nixpkgs": "nixpkgs_36" + "nixpkgs": [ + "cardano-node", + "std", + "lib" + ] }, "locked": { "lastModified": 1685133229, @@ -12489,7 +12415,7 @@ "hercules-ci-effects_2": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_100" + "nixpkgs": "nixpkgs_98" }, "locked": { "lastModified": 1719226092, @@ -14055,16 +13981,16 @@ "hls-2.4_3": { "flake": false, "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", "owner": "haskell", "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { "owner": "haskell", - "ref": "2.4.0.0", + "ref": "2.4.0.1", "repo": "haskell-language-server", "type": "github" } @@ -14307,6 +14233,23 @@ "type": "github" } }, + "hls-2.5_9": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.6": { "flake": false, "locked": { @@ -14443,6 +14386,23 @@ "type": "github" } }, + "hls-2.6_9": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.7": { "flake": false, "locked": { @@ -14579,6 +14539,23 @@ "type": "github" } }, + "hls-2.7_9": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hls-2.8": { "flake": false, "locked": { @@ -14596,6 +14573,23 @@ "type": "github" } }, + "hls-2.8_2": { + "flake": false, + "locked": { + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hpc-coveralls": { "flake": false, "locked": { @@ -15832,36 +15826,11 @@ } }, "incl_4": { - "inputs": { - "nixlib": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_5": { "inputs": { "nixlib": [ "cardano-node", "std", - "haumea", - "nixpkgs" + "lib" ] }, "locked": { @@ -16115,9 +16084,9 @@ }, "iogo": { "inputs": { - "devshell": "devshell_9", + "devshell": "devshell_8", "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_52", + "nixpkgs": "nixpkgs_50", "utils": "utils_13" }, "locked": { @@ -16136,9 +16105,9 @@ }, "iogo_2": { "inputs": { - "devshell": "devshell_19", + "devshell": "devshell_18", "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_81", + "nixpkgs": "nixpkgs_79", "utils": "utils_27" }, "locked": { @@ -16162,7 +16131,7 @@ "CHaP" ], "easy-purescript-nix": "easy-purescript-nix_2", - "flake-utils": "flake-utils_50", + "flake-utils": "flake-utils_49", "hackage": "hackage_6", "haskell-nix": "haskell-nix_5", "iogx-template-haskell": "iogx-template-haskell", @@ -16477,7 +16446,7 @@ "inputs": { "CHaP": "CHaP_14", "easy-purescript-nix": "easy-purescript-nix_11", - "flake-utils": "flake-utils_82", + "flake-utils": "flake-utils_81", "hackage": "hackage_15", "haskell-nix": "haskell-nix_14", "iogx-template-haskell": "iogx-template-haskell_6", @@ -16516,7 +16485,7 @@ "inputs": { "CHaP": "CHaP_15", "easy-purescript-nix": "easy-purescript-nix_12", - "flake-utils": "flake-utils_84", + "flake-utils": "flake-utils_83", "hackage": "hackage_16", "haskell-nix": "haskell-nix_15", "iohk-nix": "iohk-nix_11", @@ -16555,7 +16524,7 @@ "inputs": { "CHaP": "CHaP_16", "easy-purescript-nix": "easy-purescript-nix_13", - "flake-utils": "flake-utils_88", + "flake-utils": "flake-utils_87", "hackage": "hackage_17", "haskell-nix": "haskell-nix_16", "iohk-nix": "iohk-nix_12", @@ -16594,7 +16563,7 @@ "inputs": { "CHaP": "CHaP_17", "easy-purescript-nix": "easy-purescript-nix_14", - "flake-utils": "flake-utils_94", + "flake-utils": "flake-utils_93", "hackage": "hackage_18", "haskell-nix": "haskell-nix_17", "iogx-template-haskell": "iogx-template-haskell_7", @@ -16633,7 +16602,7 @@ "inputs": { "CHaP": "CHaP_18", "easy-purescript-nix": "easy-purescript-nix_15", - "flake-utils": "flake-utils_96", + "flake-utils": "flake-utils_95", "hackage": "hackage_19", "haskell-nix": "haskell-nix_18", "iohk-nix": "iohk-nix_14", @@ -16672,7 +16641,7 @@ "inputs": { "CHaP": "CHaP_19", "easy-purescript-nix": "easy-purescript-nix_16", - "flake-utils": "flake-utils_100", + "flake-utils": "flake-utils_99", "hackage": "hackage_20", "haskell-nix": "haskell-nix_19", "iohk-nix": "iohk-nix_15", @@ -16711,7 +16680,7 @@ "inputs": { "CHaP": "CHaP_6", "easy-purescript-nix": "easy-purescript-nix_3", - "flake-utils": "flake-utils_52", + "flake-utils": "flake-utils_51", "hackage": "hackage_7", "haskell-nix": "haskell-nix_6", "iogx-template-haskell": "iogx-template-haskell_2", @@ -16748,7 +16717,7 @@ "inputs": { "CHaP": "CHaP_7", "easy-purescript-nix": "easy-purescript-nix_4", - "flake-utils": "flake-utils_54", + "flake-utils": "flake-utils_53", "hackage": "hackage_8", "haskell-nix": "haskell-nix_7", "iogx-template-haskell": "iogx-template-haskell_3", @@ -16787,7 +16756,7 @@ "inputs": { "CHaP": "CHaP_8", "easy-purescript-nix": "easy-purescript-nix_5", - "flake-utils": "flake-utils_56", + "flake-utils": "flake-utils_55", "hackage": "hackage_9", "haskell-nix": "haskell-nix_8", "iohk-nix": "iohk-nix_4", @@ -16826,7 +16795,7 @@ "inputs": { "CHaP": "CHaP_9", "easy-purescript-nix": "easy-purescript-nix_6", - "flake-utils": "flake-utils_60", + "flake-utils": "flake-utils_59", "hackage": "hackage_10", "haskell-nix": "haskell-nix_9", "iohk-nix": "iohk-nix_5", @@ -16865,7 +16834,7 @@ "inputs": { "CHaP": "CHaP_10", "easy-purescript-nix": "easy-purescript-nix_7", - "flake-utils": "flake-utils_66", + "flake-utils": "flake-utils_65", "hackage": "hackage_11", "haskell-nix": "haskell-nix_10", "iogx-template-haskell": "iogx-template-haskell_4", @@ -16904,7 +16873,7 @@ "inputs": { "CHaP": "CHaP_11", "easy-purescript-nix": "easy-purescript-nix_8", - "flake-utils": "flake-utils_68", + "flake-utils": "flake-utils_67", "hackage": "hackage_12", "haskell-nix": "haskell-nix_11", "iohk-nix": "iohk-nix_7", @@ -16943,7 +16912,7 @@ "inputs": { "CHaP": "CHaP_12", "easy-purescript-nix": "easy-purescript-nix_9", - "flake-utils": "flake-utils_72", + "flake-utils": "flake-utils_71", "hackage": "hackage_13", "haskell-nix": "haskell-nix_12", "iohk-nix": "iohk-nix_8", @@ -16982,7 +16951,7 @@ "inputs": { "CHaP": "CHaP_13", "easy-purescript-nix": "easy-purescript-nix_10", - "flake-utils": "flake-utils_80", + "flake-utils": "flake-utils_79", "hackage": "hackage_14", "haskell-nix": "haskell-nix_13", "iogx-template-haskell": "iogx-template-haskell_5", @@ -17632,11 +17601,11 @@ "sodium": "sodium_6" }, "locked": { - "lastModified": 1698746924, - "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", + "lastModified": 1719237167, + "narHash": "sha256-ifW5Jfwu/iwYs0r7f8AdiWDQK+Pr1gZLz+p5u8OtOgo=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", + "rev": "577f4d5072945a88dda6f5cfe205e6b4829a0423", "type": "github" }, "original": { @@ -17964,18 +17933,18 @@ "iserv-proxy_5": { "flake": false, "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" } }, "iserv-proxy_6": { @@ -18086,6 +18055,21 @@ "type": "github" } }, + "lib": { + "locked": { + "lastModified": 1694306727, + "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "lowdown-src": { "flake": false, "locked": { @@ -18647,6 +18631,22 @@ } }, "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { "flake": false, "locked": { "lastModified": 1655670640, @@ -18662,7 +18662,7 @@ "type": "github" } }, - "mdbook-kroki-preprocessor_2": { + "mdbook-kroki-preprocessor_3": { "flake": false, "locked": { "lastModified": 1655670640, @@ -18773,13 +18773,7 @@ }, "n2c_4": { "inputs": { - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], + "flake-utils": "flake-utils_19", "nixpkgs": [ "cardano-node", "cardano-automation", @@ -18789,11 +18783,11 @@ ] }, "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", "owner": "nlewo", "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { @@ -18804,35 +18798,8 @@ }, "n2c_5": { "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_6": { - "inputs": { - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_57" + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_55" }, "locked": { "lastModified": 1650568002, @@ -18848,10 +18815,10 @@ "type": "github" } }, - "n2c_7": { + "n2c_6": { "inputs": { - "flake-utils": "flake-utils_44", - "nixpkgs": "nixpkgs_92" + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_90" }, "locked": { "lastModified": 1655533513, @@ -18890,7 +18857,7 @@ }, "nix-cache-proxy": { "inputs": { - "devshell": "devshell_16", + "devshell": "devshell_15", "inclusive": [ "db-sync", "cardano-world", @@ -19141,8 +19108,8 @@ }, "nix2container_10": { "inputs": { - "flake-utils": "flake-utils_63", - "nixpkgs": "nixpkgs_110" + "flake-utils": "flake-utils_62", + "nixpkgs": "nixpkgs_108" }, "locked": { "lastModified": 1712990762, @@ -19160,8 +19127,8 @@ }, "nix2container_11": { "inputs": { - "flake-utils": "flake-utils_69", - "nixpkgs": "nixpkgs_114" + "flake-utils": "flake-utils_68", + "nixpkgs": "nixpkgs_112" }, "locked": { "lastModified": 1703410130, @@ -19179,8 +19146,8 @@ }, "nix2container_12": { "inputs": { - "flake-utils": "flake-utils_73", - "nixpkgs": "nixpkgs_117" + "flake-utils": "flake-utils_72", + "nixpkgs": "nixpkgs_115" }, "locked": { "lastModified": 1703410130, @@ -19198,8 +19165,8 @@ }, "nix2container_13": { "inputs": { - "flake-utils": "flake-utils_75", - "nixpkgs": "nixpkgs_119" + "flake-utils": "flake-utils_74", + "nixpkgs": "nixpkgs_117" }, "locked": { "lastModified": 1712990762, @@ -19217,8 +19184,8 @@ }, "nix2container_14": { "inputs": { - "flake-utils": "flake-utils_77", - "nixpkgs": "nixpkgs_121" + "flake-utils": "flake-utils_76", + "nixpkgs": "nixpkgs_119" }, "locked": { "lastModified": 1712990762, @@ -19236,8 +19203,8 @@ }, "nix2container_15": { "inputs": { - "flake-utils": "flake-utils_85", - "nixpkgs": "nixpkgs_126" + "flake-utils": "flake-utils_84", + "nixpkgs": "nixpkgs_124" }, "locked": { "lastModified": 1703410130, @@ -19255,8 +19222,8 @@ }, "nix2container_16": { "inputs": { - "flake-utils": "flake-utils_89", - "nixpkgs": "nixpkgs_129" + "flake-utils": "flake-utils_88", + "nixpkgs": "nixpkgs_127" }, "locked": { "lastModified": 1703410130, @@ -19274,8 +19241,8 @@ }, "nix2container_17": { "inputs": { - "flake-utils": "flake-utils_91", - "nixpkgs": "nixpkgs_131" + "flake-utils": "flake-utils_90", + "nixpkgs": "nixpkgs_129" }, "locked": { "lastModified": 1712990762, @@ -19293,8 +19260,8 @@ }, "nix2container_18": { "inputs": { - "flake-utils": "flake-utils_97", - "nixpkgs": "nixpkgs_135" + "flake-utils": "flake-utils_96", + "nixpkgs": "nixpkgs_133" }, "locked": { "lastModified": 1703410130, @@ -19312,8 +19279,8 @@ }, "nix2container_19": { "inputs": { - "flake-utils": "flake-utils_101", - "nixpkgs": "nixpkgs_138" + "flake-utils": "flake-utils_100", + "nixpkgs": "nixpkgs_136" }, "locked": { "lastModified": 1703410130, @@ -19350,8 +19317,8 @@ }, "nix2container_20": { "inputs": { - "flake-utils": "flake-utils_103", - "nixpkgs": "nixpkgs_140" + "flake-utils": "flake-utils_102", + "nixpkgs": "nixpkgs_138" }, "locked": { "lastModified": 1712990762, @@ -19369,8 +19336,8 @@ }, "nix2container_21": { "inputs": { - "flake-utils": "flake-utils_105", - "nixpkgs": "nixpkgs_142" + "flake-utils": "flake-utils_104", + "nixpkgs": "nixpkgs_140" }, "locked": { "lastModified": 1712990762, @@ -19388,8 +19355,8 @@ }, "nix2container_22": { "inputs": { - "flake-utils": "flake-utils_107", - "nixpkgs": "nixpkgs_144" + "flake-utils": "flake-utils_106", + "nixpkgs": "nixpkgs_142" }, "locked": { "lastModified": 1712990762, @@ -19464,15 +19431,15 @@ }, "nix2container_6": { "inputs": { - "flake-utils": "flake-utils_19", + "flake-utils": "flake-utils_20", "nixpkgs": "nixpkgs_35" }, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", "owner": "nlewo", "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", "type": "github" }, "original": { @@ -19483,8 +19450,8 @@ }, "nix2container_7": { "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": "nixpkgs_95" + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_93" }, "locked": { "lastModified": 1653427219, @@ -19503,8 +19470,8 @@ }, "nix2container_8": { "inputs": { - "flake-utils": "flake-utils_57", - "nixpkgs": "nixpkgs_105" + "flake-utils": "flake-utils_56", + "nixpkgs": "nixpkgs_103" }, "locked": { "lastModified": 1703410130, @@ -19522,8 +19489,8 @@ }, "nix2container_9": { "inputs": { - "flake-utils": "flake-utils_61", - "nixpkgs": "nixpkgs_108" + "flake-utils": "flake-utils_60", + "nixpkgs": "nixpkgs_106" }, "locked": { "lastModified": 1703410130, @@ -19542,7 +19509,7 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_58", + "nixpkgs": "nixpkgs_56", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { @@ -19563,7 +19530,7 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_60", + "nixpkgs": "nixpkgs_58", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { @@ -19583,7 +19550,7 @@ "nix_12": { "inputs": { "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_67", + "nixpkgs": "nixpkgs_65", "nixpkgs-regression": "nixpkgs-regression_11" }, "locked": { @@ -19604,7 +19571,7 @@ "nix_13": { "inputs": { "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_68", + "nixpkgs": "nixpkgs_66", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -19625,7 +19592,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_73", + "nixpkgs": "nixpkgs_71", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -19646,7 +19613,7 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_75" + "nixpkgs": "nixpkgs_73" }, "locked": { "lastModified": 1604400356, @@ -19665,7 +19632,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_77", + "nixpkgs": "nixpkgs_75", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -19685,7 +19652,7 @@ "nix_17": { "inputs": { "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_89", + "nixpkgs": "nixpkgs_87", "nixpkgs-regression": "nixpkgs-regression_15" }, "locked": { @@ -19706,7 +19673,7 @@ "nix_18": { "inputs": { "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_91", + "nixpkgs": "nixpkgs_89", "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { @@ -19727,7 +19694,7 @@ "nix_19": { "inputs": { "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_98", + "nixpkgs": "nixpkgs_96", "nixpkgs-regression": "nixpkgs-regression_17" }, "locked": { @@ -19770,7 +19737,7 @@ "nix_20": { "inputs": { "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_99", + "nixpkgs": "nixpkgs_97", "nixpkgs-regression": "nixpkgs-regression_18" }, "locked": { @@ -19791,7 +19758,7 @@ "nix_21": { "inputs": { "lowdown-src": "lowdown-src_21", - "nixpkgs": "nixpkgs_101", + "nixpkgs": "nixpkgs_99", "nixpkgs-regression": "nixpkgs-regression_19" }, "locked": { @@ -19812,7 +19779,7 @@ "nix_22": { "inputs": { "lowdown-src": "lowdown-src_22", - "nixpkgs": "nixpkgs_102", + "nixpkgs": "nixpkgs_100", "nixpkgs-regression": "nixpkgs-regression_20" }, "locked": { @@ -19833,7 +19800,7 @@ "nix_23": { "inputs": { "lowdown-src": "lowdown-src_23", - "nixpkgs": "nixpkgs_103", + "nixpkgs": "nixpkgs_101", "nixpkgs-regression": "nixpkgs-regression_21" }, "locked": { @@ -19854,7 +19821,7 @@ "nix_24": { "inputs": { "lowdown-src": "lowdown-src_24", - "nixpkgs": "nixpkgs_104", + "nixpkgs": "nixpkgs_102", "nixpkgs-regression": "nixpkgs-regression_22" }, "locked": { @@ -19875,7 +19842,7 @@ "nix_25": { "inputs": { "lowdown-src": "lowdown-src_25", - "nixpkgs": "nixpkgs_107", + "nixpkgs": "nixpkgs_105", "nixpkgs-regression": "nixpkgs-regression_23" }, "locked": { @@ -19896,7 +19863,7 @@ "nix_26": { "inputs": { "lowdown-src": "lowdown-src_26", - "nixpkgs": "nixpkgs_112", + "nixpkgs": "nixpkgs_110", "nixpkgs-regression": "nixpkgs-regression_24" }, "locked": { @@ -19917,7 +19884,7 @@ "nix_27": { "inputs": { "lowdown-src": "lowdown-src_27", - "nixpkgs": "nixpkgs_113", + "nixpkgs": "nixpkgs_111", "nixpkgs-regression": "nixpkgs-regression_25" }, "locked": { @@ -19938,7 +19905,7 @@ "nix_28": { "inputs": { "lowdown-src": "lowdown-src_28", - "nixpkgs": "nixpkgs_116", + "nixpkgs": "nixpkgs_114", "nixpkgs-regression": "nixpkgs-regression_26" }, "locked": { @@ -19959,7 +19926,7 @@ "nix_29": { "inputs": { "lowdown-src": "lowdown-src_29", - "nixpkgs": "nixpkgs_123", + "nixpkgs": "nixpkgs_121", "nixpkgs-regression": "nixpkgs-regression_27" }, "locked": { @@ -20001,7 +19968,7 @@ "nix_30": { "inputs": { "lowdown-src": "lowdown-src_30", - "nixpkgs": "nixpkgs_124", + "nixpkgs": "nixpkgs_122", "nixpkgs-regression": "nixpkgs-regression_28" }, "locked": { @@ -20022,7 +19989,7 @@ "nix_31": { "inputs": { "lowdown-src": "lowdown-src_31", - "nixpkgs": "nixpkgs_125", + "nixpkgs": "nixpkgs_123", "nixpkgs-regression": "nixpkgs-regression_29" }, "locked": { @@ -20043,7 +20010,7 @@ "nix_32": { "inputs": { "lowdown-src": "lowdown-src_32", - "nixpkgs": "nixpkgs_128", + "nixpkgs": "nixpkgs_126", "nixpkgs-regression": "nixpkgs-regression_30" }, "locked": { @@ -20064,7 +20031,7 @@ "nix_33": { "inputs": { "lowdown-src": "lowdown-src_33", - "nixpkgs": "nixpkgs_133", + "nixpkgs": "nixpkgs_131", "nixpkgs-regression": "nixpkgs-regression_31" }, "locked": { @@ -20085,7 +20052,7 @@ "nix_34": { "inputs": { "lowdown-src": "lowdown-src_34", - "nixpkgs": "nixpkgs_134", + "nixpkgs": "nixpkgs_132", "nixpkgs-regression": "nixpkgs-regression_32" }, "locked": { @@ -20106,7 +20073,7 @@ "nix_35": { "inputs": { "lowdown-src": "lowdown-src_35", - "nixpkgs": "nixpkgs_137", + "nixpkgs": "nixpkgs_135", "nixpkgs-regression": "nixpkgs-regression_33" }, "locked": { @@ -20190,7 +20157,7 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_44", + "nixpkgs": "nixpkgs_42", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { @@ -20211,7 +20178,7 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_46" + "nixpkgs": "nixpkgs_44" }, "locked": { "lastModified": 1604400356, @@ -20230,7 +20197,7 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_48", + "nixpkgs": "nixpkgs_46", "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { @@ -20416,11 +20383,11 @@ ] }, "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", "owner": "nix-community", "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { @@ -20430,38 +20397,6 @@ } }, "nixago_5": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_6": { "inputs": { "flake-utils": [ "db-sync", @@ -20493,7 +20428,7 @@ "type": "github" } }, - "nixago_7": { + "nixago_6": { "inputs": { "flake-utils": [ "db-sync", @@ -22698,11 +22633,11 @@ }, "nixpkgs-2305_4": { "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { @@ -22920,6 +22855,22 @@ "type": "github" } }, + "nixpkgs-2311_17": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-2311_2": { "locked": { "lastModified": 1701386440, @@ -24547,17 +24498,17 @@ }, "nixpkgs-unstable_6": { "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, @@ -24627,16 +24578,16 @@ }, "nixpkgs_100": { "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } @@ -24675,52 +24626,20 @@ }, "nixpkgs_103": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_104": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_105": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_106": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -24736,7 +24655,7 @@ "type": "github" } }, - "nixpkgs_107": { + "nixpkgs_105": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24752,7 +24671,7 @@ "type": "github" } }, - "nixpkgs_108": { + "nixpkgs_106": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -24767,7 +24686,7 @@ "type": "github" } }, - "nixpkgs_109": { + "nixpkgs_107": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -24783,44 +24702,44 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_108": { "locked": { - "lastModified": 1675249806, - "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_110": { + "nixpkgs_109": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_111": { + "nixpkgs_11": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { @@ -24830,7 +24749,7 @@ "type": "github" } }, - "nixpkgs_112": { + "nixpkgs_110": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24846,7 +24765,7 @@ "type": "github" } }, - "nixpkgs_113": { + "nixpkgs_111": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24862,7 +24781,7 @@ "type": "github" } }, - "nixpkgs_114": { + "nixpkgs_112": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -24877,7 +24796,7 @@ "type": "github" } }, - "nixpkgs_115": { + "nixpkgs_113": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -24893,7 +24812,7 @@ "type": "github" } }, - "nixpkgs_116": { + "nixpkgs_114": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24909,7 +24828,7 @@ "type": "github" } }, - "nixpkgs_117": { + "nixpkgs_115": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -24924,7 +24843,7 @@ "type": "github" } }, - "nixpkgs_118": { + "nixpkgs_116": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -24940,7 +24859,7 @@ "type": "github" } }, - "nixpkgs_119": { + "nixpkgs_117": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -24955,22 +24874,7 @@ "type": "github" } }, - "nixpkgs_12": { - "locked": { - "lastModified": 1636823747, - "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_120": { + "nixpkgs_118": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -24986,7 +24890,7 @@ "type": "github" } }, - "nixpkgs_121": { + "nixpkgs_119": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25001,7 +24905,22 @@ "type": "github" } }, - "nixpkgs_122": { + "nixpkgs_12": { + "locked": { + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_120": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25017,7 +24936,7 @@ "type": "github" } }, - "nixpkgs_123": { + "nixpkgs_121": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25033,7 +24952,7 @@ "type": "github" } }, - "nixpkgs_124": { + "nixpkgs_122": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25049,7 +24968,7 @@ "type": "github" } }, - "nixpkgs_125": { + "nixpkgs_123": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25065,7 +24984,7 @@ "type": "github" } }, - "nixpkgs_126": { + "nixpkgs_124": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25080,7 +24999,7 @@ "type": "github" } }, - "nixpkgs_127": { + "nixpkgs_125": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -25096,7 +25015,7 @@ "type": "github" } }, - "nixpkgs_128": { + "nixpkgs_126": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25112,7 +25031,7 @@ "type": "github" } }, - "nixpkgs_129": { + "nixpkgs_127": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25127,54 +25046,54 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_128": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_130": { + "nixpkgs_129": { "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_131": { + "nixpkgs_13": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_132": { + "nixpkgs_130": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25190,7 +25109,7 @@ "type": "github" } }, - "nixpkgs_133": { + "nixpkgs_131": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25206,7 +25125,7 @@ "type": "github" } }, - "nixpkgs_134": { + "nixpkgs_132": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25222,7 +25141,7 @@ "type": "github" } }, - "nixpkgs_135": { + "nixpkgs_133": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25237,7 +25156,7 @@ "type": "github" } }, - "nixpkgs_136": { + "nixpkgs_134": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -25253,7 +25172,7 @@ "type": "github" } }, - "nixpkgs_137": { + "nixpkgs_135": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25269,7 +25188,7 @@ "type": "github" } }, - "nixpkgs_138": { + "nixpkgs_136": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25284,7 +25203,7 @@ "type": "github" } }, - "nixpkgs_139": { + "nixpkgs_137": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -25300,21 +25219,7 @@ "type": "github" } }, - "nixpkgs_14": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_140": { + "nixpkgs_138": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25329,7 +25234,7 @@ "type": "github" } }, - "nixpkgs_141": { + "nixpkgs_139": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25345,7 +25250,21 @@ "type": "github" } }, - "nixpkgs_142": { + "nixpkgs_14": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_140": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25360,7 +25279,7 @@ "type": "github" } }, - "nixpkgs_143": { + "nixpkgs_141": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25376,7 +25295,7 @@ "type": "github" } }, - "nixpkgs_144": { + "nixpkgs_142": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25391,7 +25310,7 @@ "type": "github" } }, - "nixpkgs_145": { + "nixpkgs_143": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25705,11 +25624,11 @@ }, "nixpkgs_32": { "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { @@ -25751,11 +25670,11 @@ }, "nixpkgs_35": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { @@ -25766,47 +25685,46 @@ }, "nixpkgs_36": { "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "lastModified": 1708343346, + "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9312b935a538684049cb668885e60f15547d4c5f", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "ref": "release-23.11", + "repo": "nixpkgs", "type": "github" } }, "nixpkgs_37": { "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, "nixpkgs_38": { "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -25858,36 +25776,6 @@ } }, "nixpkgs_41": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_42": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_43": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -25903,7 +25791,7 @@ "type": "github" } }, - "nixpkgs_44": { + "nixpkgs_42": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -25918,7 +25806,7 @@ "type": "indirect" } }, - "nixpkgs_45": { + "nixpkgs_43": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -25934,7 +25822,7 @@ "type": "github" } }, - "nixpkgs_46": { + "nixpkgs_44": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -25949,7 +25837,7 @@ "type": "indirect" } }, - "nixpkgs_47": { + "nixpkgs_45": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -25965,7 +25853,7 @@ "type": "github" } }, - "nixpkgs_48": { + "nixpkgs_46": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -25980,7 +25868,7 @@ "type": "indirect" } }, - "nixpkgs_49": { + "nixpkgs_47": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -25996,23 +25884,7 @@ "type": "github" } }, - "nixpkgs_5": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_50": { + "nixpkgs_48": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -26028,7 +25900,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_49": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26044,7 +25916,23 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_5": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_50": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -26060,7 +25948,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_51": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -26076,7 +25964,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_52": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26092,7 +25980,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_53": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -26107,7 +25995,7 @@ "type": "github" } }, - "nixpkgs_56": { + "nixpkgs_54": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26123,7 +26011,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_55": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -26138,7 +26026,7 @@ "type": "github" } }, - "nixpkgs_58": { + "nixpkgs_56": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -26153,7 +26041,7 @@ "type": "indirect" } }, - "nixpkgs_59": { + "nixpkgs_57": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -26169,23 +26057,7 @@ "type": "github" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_58": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26200,7 +26072,7 @@ "type": "indirect" } }, - "nixpkgs_61": { + "nixpkgs_59": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -26216,7 +26088,23 @@ "type": "github" } }, - "nixpkgs_62": { + "nixpkgs_6": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -26232,7 +26120,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_61": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26248,7 +26136,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_62": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -26264,7 +26152,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_63": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -26280,7 +26168,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_64": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -26296,7 +26184,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_65": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26311,7 +26199,7 @@ "type": "indirect" } }, - "nixpkgs_68": { + "nixpkgs_66": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26326,7 +26214,7 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_67": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -26342,23 +26230,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_68": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -26372,7 +26244,7 @@ "type": "indirect" } }, - "nixpkgs_71": { + "nixpkgs_69": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -26388,7 +26260,23 @@ "type": "github" } }, - "nixpkgs_72": { + "nixpkgs_7": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26404,7 +26292,7 @@ "type": "github" } }, - "nixpkgs_73": { + "nixpkgs_71": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26419,7 +26307,7 @@ "type": "indirect" } }, - "nixpkgs_74": { + "nixpkgs_72": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -26435,7 +26323,7 @@ "type": "github" } }, - "nixpkgs_75": { + "nixpkgs_73": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -26450,7 +26338,7 @@ "type": "indirect" } }, - "nixpkgs_76": { + "nixpkgs_74": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -26466,7 +26354,7 @@ "type": "github" } }, - "nixpkgs_77": { + "nixpkgs_75": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26481,7 +26369,7 @@ "type": "indirect" } }, - "nixpkgs_78": { + "nixpkgs_76": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -26497,7 +26385,7 @@ "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_77": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -26513,23 +26401,7 @@ "type": "github" } }, - "nixpkgs_8": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_80": { + "nixpkgs_78": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26545,7 +26417,7 @@ "type": "github" } }, - "nixpkgs_81": { + "nixpkgs_79": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -26561,7 +26433,23 @@ "type": "github" } }, - "nixpkgs_82": { + "nixpkgs_8": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_80": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -26577,7 +26465,7 @@ "type": "github" } }, - "nixpkgs_83": { + "nixpkgs_81": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26593,7 +26481,7 @@ "type": "github" } }, - "nixpkgs_84": { + "nixpkgs_82": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -26609,7 +26497,7 @@ "type": "github" } }, - "nixpkgs_85": { + "nixpkgs_83": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -26623,7 +26511,7 @@ "type": "indirect" } }, - "nixpkgs_86": { + "nixpkgs_84": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -26639,7 +26527,7 @@ "type": "github" } }, - "nixpkgs_87": { + "nixpkgs_85": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -26653,7 +26541,7 @@ "type": "indirect" } }, - "nixpkgs_88": { + "nixpkgs_86": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -26667,7 +26555,7 @@ "type": "indirect" } }, - "nixpkgs_89": { + "nixpkgs_87": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26682,23 +26570,7 @@ "type": "indirect" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_90": { + "nixpkgs_88": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -26713,22 +26585,38 @@ "type": "github" } }, - "nixpkgs_91": { + "nixpkgs_89": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_9": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_92": { + "nixpkgs_90": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -26743,7 +26631,7 @@ "type": "github" } }, - "nixpkgs_93": { + "nixpkgs_91": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -26759,7 +26647,7 @@ "type": "github" } }, - "nixpkgs_94": { + "nixpkgs_92": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -26775,7 +26663,7 @@ "type": "github" } }, - "nixpkgs_95": { + "nixpkgs_93": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -26790,7 +26678,7 @@ "type": "github" } }, - "nixpkgs_96": { + "nixpkgs_94": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -26806,7 +26694,7 @@ "type": "github" } }, - "nixpkgs_97": { + "nixpkgs_95": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -26822,7 +26710,7 @@ "type": "github" } }, - "nixpkgs_98": { + "nixpkgs_96": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26837,6 +26725,38 @@ "type": "indirect" } }, + "nixpkgs_97": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_98": { + "locked": { + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_99": { "locked": { "lastModified": 1657693803, @@ -26856,7 +26776,7 @@ "nomad": { "inputs": { "nix": "nix_8", - "nixpkgs": "nixpkgs_47", + "nixpkgs": "nixpkgs_45", "utils": "utils_9" }, "locked": { @@ -26876,10 +26796,10 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_7", + "devshell": "devshell_6", "inclusive": "inclusive_2", "nix": "nix_9", - "nixpkgs": "nixpkgs_49", + "nixpkgs": "nixpkgs_47", "utils": "utils_10" }, "locked": { @@ -26898,10 +26818,10 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_10", + "devshell": "devshell_9", "inclusive": "inclusive_5", "nix": "nix_11", - "nixpkgs": "nixpkgs_61", + "nixpkgs": "nixpkgs_59", "utils": "utils_15" }, "locked": { @@ -26920,10 +26840,10 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_17", + "devshell": "devshell_16", "inclusive": "inclusive_10", "nix": "nix_16", - "nixpkgs": "nixpkgs_78", + "nixpkgs": "nixpkgs_76", "utils": "utils_24" }, "locked": { @@ -26942,9 +26862,9 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_8", + "devshell": "devshell_7", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_50", + "nixpkgs": "nixpkgs_48", "utils": "utils_11" }, "locked": { @@ -26963,9 +26883,9 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_11", + "devshell": "devshell_10", "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_62", + "nixpkgs": "nixpkgs_60", "utils": "utils_16" }, "locked": { @@ -26984,9 +26904,9 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_18", + "devshell": "devshell_17", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_79", + "nixpkgs": "nixpkgs_77", "utils": "utils_25" }, "locked": { @@ -27006,7 +26926,7 @@ "nomad_2": { "inputs": { "nix": "nix_15", - "nixpkgs": "nixpkgs_76", + "nixpkgs": "nixpkgs_74", "utils": "utils_23" }, "locked": { @@ -27084,21 +27004,6 @@ "type": "github" } }, - "nosys_5": { - "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, "offchain-metadata-tools-service": { "flake": false, "locked": { @@ -27136,16 +27041,16 @@ "ogmios_2": { "flake": false, "locked": { - "lastModified": 1706884055, - "narHash": "sha256-GL3MYr9+VK7aTwfKK/ZtLVAS3ZTWJ4mZUJ10e+MR2U0=", + "lastModified": 1717661787, + "narHash": "sha256-AnIxPug+DnPHn69z+Vz+Us2a+Z3LnkI+LJaIyUm4c5w=", "owner": "CardanoSolutions", "repo": "ogmios", - "rev": "523f1cdcaf8451c4ee6ecb8cd2cd14e61f93e4be", + "rev": "4dbf1f34d9ea046dda50bf0c58bd276f80f41784", "type": "github" }, "original": { "owner": "CardanoSolutions", - "ref": "v6.0.3", + "ref": "v6.4.0", "repo": "ogmios", "type": "github" } @@ -27610,11 +27515,11 @@ "ops-lib_3": { "flake": false, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "lastModified": 1713366514, + "narHash": "sha256-0hNlv+grFTE+TeXIbxSY97QoEEaUupOKMusZ4PesdrQ=", "owner": "input-output-hk", "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "rev": "19d83fa8eab1c0b7765f736eb4e8569d84d3e39d", "type": "github" }, "original": { @@ -27729,29 +27634,6 @@ "type": "github" } }, - "paisano-actions_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "actions", - "type": "github" - } - }, "paisano-mdbook-preprocessor": { "inputs": { "crane": "crane", @@ -27783,35 +27665,6 @@ "type": "github" } }, - "paisano-mdbook-preprocessor_2": { - "inputs": { - "crane": "crane_2", - "fenix": "fenix_3", - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions_2", - "std": [ - "cardano-node", - "std" - ] - }, - "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "type": "github" - } - }, "paisano-tui": { "inputs": { "nixpkgs": [ @@ -27874,58 +27727,18 @@ } }, "paisano-tui_3": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "cardano-node", - "cardano-automation", - "tullia", - "std" - ] - }, - "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "tui", - "type": "github" - } - }, - "paisano-tui_4": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "blank" - ], - "std": [ - "cardano-node", - "std" - ] - }, + "flake": false, "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "lastModified": 1708637035, + "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", "owner": "paisano-nix", "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "rev": "231761b260587a64817e4ffae3afc15defaa15db", "type": "github" }, "original": { "owner": "paisano-nix", - "ref": "0.1.1", + "ref": "v0.5.0", "repo": "tui", "type": "github" } @@ -27963,44 +27776,13 @@ }, "paisano_3": { "inputs": { + "call-flake": "call-flake", "nixpkgs": [ "cardano-node", - "cardano-automation", - "tullia", "std", "nixpkgs" ], "nosys": "nosys_4", - "yants": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "core", - "type": "github" - } - }, - "paisano_4": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "nosys": "nosys_5", "yants": [ "cardano-node", "std", @@ -28008,23 +27790,23 @@ ] }, "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "lastModified": 1708640854, + "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", "owner": "paisano-nix", "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", "type": "github" }, "original": { "owner": "paisano-nix", - "ref": "0.1.1", + "ref": "0.2.0", "repo": "core", "type": "github" } }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_33", + "flake-utils": "flake-utils_32", "nixpkgs": [ "db-sync", "cardano-world", @@ -28050,8 +27832,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_85" + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_83" }, "locked": { "lastModified": 1639823344, @@ -28096,10 +27878,10 @@ }, "pre-commit-hooks-nix_10": { "inputs": { - "flake-compat": "flake-compat_47", - "flake-utils": "flake-utils_90", + "flake-compat": "flake-compat_46", + "flake-utils": "flake-utils_89", "gitignore": "gitignore_10", - "nixpkgs": "nixpkgs_130", + "nixpkgs": "nixpkgs_128", "nixpkgs-stable": "nixpkgs-stable_19" }, "locked": { @@ -28118,10 +27900,10 @@ }, "pre-commit-hooks-nix_11": { "inputs": { - "flake-compat": "flake-compat_48", - "flake-utils": "flake-utils_92", + "flake-compat": "flake-compat_47", + "flake-utils": "flake-utils_91", "gitignore": "gitignore_11", - "nixpkgs": "nixpkgs_132", + "nixpkgs": "nixpkgs_130", "nixpkgs-stable": "nixpkgs-stable_21" }, "locked": { @@ -28140,10 +27922,10 @@ }, "pre-commit-hooks-nix_12": { "inputs": { - "flake-compat": "flake-compat_51", - "flake-utils": "flake-utils_98", + "flake-compat": "flake-compat_50", + "flake-utils": "flake-utils_97", "gitignore": "gitignore_12", - "nixpkgs": "nixpkgs_136", + "nixpkgs": "nixpkgs_134", "nixpkgs-stable": "nixpkgs-stable_23" }, "locked": { @@ -28162,10 +27944,10 @@ }, "pre-commit-hooks-nix_13": { "inputs": { - "flake-compat": "flake-compat_53", - "flake-utils": "flake-utils_102", + "flake-compat": "flake-compat_52", + "flake-utils": "flake-utils_101", "gitignore": "gitignore_13", - "nixpkgs": "nixpkgs_139", + "nixpkgs": "nixpkgs_137", "nixpkgs-stable": "nixpkgs-stable_25" }, "locked": { @@ -28184,10 +27966,10 @@ }, "pre-commit-hooks-nix_14": { "inputs": { - "flake-compat": "flake-compat_54", - "flake-utils": "flake-utils_104", + "flake-compat": "flake-compat_53", + "flake-utils": "flake-utils_103", "gitignore": "gitignore_14", - "nixpkgs": "nixpkgs_141", + "nixpkgs": "nixpkgs_139", "nixpkgs-stable": "nixpkgs-stable_27" }, "locked": { @@ -28206,10 +27988,10 @@ }, "pre-commit-hooks-nix_15": { "inputs": { - "flake-compat": "flake-compat_55", - "flake-utils": "flake-utils_106", + "flake-compat": "flake-compat_54", + "flake-utils": "flake-utils_105", "gitignore": "gitignore_15", - "nixpkgs": "nixpkgs_143", + "nixpkgs": "nixpkgs_141", "nixpkgs-stable": "nixpkgs-stable_29" }, "locked": { @@ -28228,10 +28010,10 @@ }, "pre-commit-hooks-nix_16": { "inputs": { - "flake-compat": "flake-compat_56", - "flake-utils": "flake-utils_108", + "flake-compat": "flake-compat_55", + "flake-utils": "flake-utils_107", "gitignore": "gitignore_16", - "nixpkgs": "nixpkgs_145", + "nixpkgs": "nixpkgs_143", "nixpkgs-stable": "nixpkgs-stable_31" }, "locked": { @@ -28250,10 +28032,10 @@ }, "pre-commit-hooks-nix_2": { "inputs": { - "flake-compat": "flake-compat_31", - "flake-utils": "flake-utils_58", + "flake-compat": "flake-compat_30", + "flake-utils": "flake-utils_57", "gitignore": "gitignore_2", - "nixpkgs": "nixpkgs_106", + "nixpkgs": "nixpkgs_104", "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { @@ -28272,10 +28054,10 @@ }, "pre-commit-hooks-nix_3": { "inputs": { - "flake-compat": "flake-compat_33", - "flake-utils": "flake-utils_62", + "flake-compat": "flake-compat_32", + "flake-utils": "flake-utils_61", "gitignore": "gitignore_3", - "nixpkgs": "nixpkgs_109", + "nixpkgs": "nixpkgs_107", "nixpkgs-stable": "nixpkgs-stable_5" }, "locked": { @@ -28294,10 +28076,10 @@ }, "pre-commit-hooks-nix_4": { "inputs": { - "flake-compat": "flake-compat_34", - "flake-utils": "flake-utils_64", + "flake-compat": "flake-compat_33", + "flake-utils": "flake-utils_63", "gitignore": "gitignore_4", - "nixpkgs": "nixpkgs_111", + "nixpkgs": "nixpkgs_109", "nixpkgs-stable": "nixpkgs-stable_7" }, "locked": { @@ -28316,10 +28098,10 @@ }, "pre-commit-hooks-nix_5": { "inputs": { - "flake-compat": "flake-compat_37", - "flake-utils": "flake-utils_70", + "flake-compat": "flake-compat_36", + "flake-utils": "flake-utils_69", "gitignore": "gitignore_5", - "nixpkgs": "nixpkgs_115", + "nixpkgs": "nixpkgs_113", "nixpkgs-stable": "nixpkgs-stable_9" }, "locked": { @@ -28338,10 +28120,10 @@ }, "pre-commit-hooks-nix_6": { "inputs": { - "flake-compat": "flake-compat_39", - "flake-utils": "flake-utils_74", + "flake-compat": "flake-compat_38", + "flake-utils": "flake-utils_73", "gitignore": "gitignore_6", - "nixpkgs": "nixpkgs_118", + "nixpkgs": "nixpkgs_116", "nixpkgs-stable": "nixpkgs-stable_11" }, "locked": { @@ -28360,10 +28142,10 @@ }, "pre-commit-hooks-nix_7": { "inputs": { - "flake-compat": "flake-compat_40", - "flake-utils": "flake-utils_76", + "flake-compat": "flake-compat_39", + "flake-utils": "flake-utils_75", "gitignore": "gitignore_7", - "nixpkgs": "nixpkgs_120", + "nixpkgs": "nixpkgs_118", "nixpkgs-stable": "nixpkgs-stable_13" }, "locked": { @@ -28382,10 +28164,10 @@ }, "pre-commit-hooks-nix_8": { "inputs": { - "flake-compat": "flake-compat_41", - "flake-utils": "flake-utils_78", + "flake-compat": "flake-compat_40", + "flake-utils": "flake-utils_77", "gitignore": "gitignore_8", - "nixpkgs": "nixpkgs_122", + "nixpkgs": "nixpkgs_120", "nixpkgs-stable": "nixpkgs-stable_15" }, "locked": { @@ -28404,10 +28186,10 @@ }, "pre-commit-hooks-nix_9": { "inputs": { - "flake-compat": "flake-compat_45", - "flake-utils": "flake-utils_86", + "flake-compat": "flake-compat_44", + "flake-utils": "flake-utils_85", "gitignore": "gitignore_9", - "nixpkgs": "nixpkgs_127", + "nixpkgs": "nixpkgs_125", "nixpkgs-stable": "nixpkgs-stable_17" }, "locked": { @@ -28427,9 +28209,9 @@ "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_51", - "rust-overlay": "rust-overlay_3" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_49", + "rust-overlay": "rust-overlay_2" }, "locked": { "lastModified": 1641119695, @@ -28448,9 +28230,9 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_54", - "rust-overlay": "rust-overlay_4" + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_52", + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1645147603, @@ -28469,9 +28251,9 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_63", - "rust-overlay": "rust-overlay_5" + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_61", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1641119695, @@ -28490,9 +28272,9 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_35", - "nixpkgs": "nixpkgs_80", - "rust-overlay": "rust-overlay_6" + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_78", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1641119695, @@ -28511,9 +28293,9 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_37", - "nixpkgs": "nixpkgs_83", - "rust-overlay": "rust-overlay_7" + "flake-utils": "flake-utils_36", + "nixpkgs": "nixpkgs_81", + "rust-overlay": "rust-overlay_6" }, "locked": { "lastModified": 1645147603, @@ -28538,7 +28320,7 @@ "cardano-node": "cardano-node", "db-sync": "db-sync", "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_25", + "flake-compat": "flake-compat_24", "hackage-nix": "hackage-nix", "haskell-nix": "haskell-nix_4", "hercules-ci-effects": "hercules-ci-effects_2", @@ -28586,23 +28368,6 @@ } }, "rust-analyzer-src_3": { - "flake": false, - "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1645024434, @@ -28619,7 +28384,7 @@ "type": "github" } }, - "rust-analyzer-src_5": { + "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1649178056, @@ -28636,7 +28401,7 @@ "type": "github" } }, - "rust-analyzer-src_6": { + "rust-analyzer-src_5": { "flake": false, "locked": { "lastModified": 1645024434, @@ -28653,7 +28418,7 @@ "type": "github" } }, - "rust-analyzer-src_7": { + "rust-analyzer-src_6": { "flake": false, "locked": { "lastModified": 1660579619, @@ -28670,7 +28435,7 @@ "type": "github" } }, - "rust-analyzer-src_8": { + "rust-analyzer-src_7": { "flake": false, "locked": { "lastModified": 1645024434, @@ -28687,7 +28452,7 @@ "type": "github" } }, - "rust-analyzer-src_9": { + "rust-analyzer-src_8": { "flake": false, "locked": { "lastModified": 1649178056, @@ -28738,37 +28503,6 @@ } }, "rust-overlay_2": { - "inputs": { - "flake-utils": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "std", - "paisano-mdbook-preprocessor", - "crane", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_3": { "inputs": { "flake-utils": [ "db-sync", @@ -28803,7 +28537,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_3": { "inputs": { "flake-utils": [ "db-sync", @@ -28836,7 +28570,7 @@ "type": "github" } }, - "rust-overlay_5": { + "rust-overlay_4": { "inputs": { "flake-utils": [ "db-sync", @@ -28867,7 +28601,7 @@ "type": "github" } }, - "rust-overlay_6": { + "rust-overlay_5": { "inputs": { "flake-utils": [ "db-sync", @@ -28900,7 +28634,7 @@ "type": "github" } }, - "rust-overlay_7": { + "rust-overlay_6": { "inputs": { "flake-utils": [ "db-sync", @@ -30245,11 +29979,11 @@ "stackage_4": { "flake": false, "locked": { - "lastModified": 1700438989, - "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", + "lastModified": 1718756571, + "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", + "rev": "027672fb6fd45828b0e623c8152572d4058429ad", "type": "github" }, "original": { @@ -30507,18 +30241,10 @@ }, "std_4": { "inputs": { - "arion": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], "blank": "blank_4", "devshell": "devshell_5", "dmerge": "dmerge_4", "flake-utils": "flake-utils_18", - "incl": "incl_4", "makes": [ "cardano-node", "cardano-automation", @@ -30526,6 +30252,7 @@ "std", "blank" ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", "microvm": [ "cardano-node", "cardano-automation", @@ -30536,16 +30263,14 @@ "n2c": "n2c_4", "nixago": "nixago_4", "nixpkgs": "nixpkgs_32", - "paisano": "paisano_3", - "paisano-tui": "paisano-tui_3", "yants": "yants_4" }, "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", "owner": "divnix", "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { @@ -30562,11 +30287,15 @@ "blank" ], "blank": "blank_5", - "devshell": "devshell_6", + "devshell": [ + "cardano-node", + "std", + "blank" + ], "dmerge": "dmerge_5", - "flake-utils": "flake-utils_20", "haumea": "haumea_2", - "incl": "incl_5", + "incl": "incl_4", + "lib": "lib", "makes": [ "cardano-node", "std", @@ -30577,20 +30306,32 @@ "std", "blank" ], - "n2c": "n2c_5", - "nixago": "nixago_5", - "nixpkgs": "nixpkgs_37", - "paisano": "paisano_4", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor_2", - "paisano-tui": "paisano-tui_4", + "n2c": [ + "cardano-node", + "std", + "blank" + ], + "nixago": [ + "cardano-node", + "std", + "blank" + ], + "nixpkgs": "nixpkgs_36", + "paisano": "paisano_3", + "paisano-tui": "paisano-tui_3", + "terranix": [ + "cardano-node", + "std", + "blank" + ], "yants": "yants_5" }, "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "lastModified": 1715201063, + "narHash": "sha256-LcLYV5CDhIiJs3MfxGZFKsXPR4PtfnY4toZ75GM+2Pw=", "owner": "divnix", "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "rev": "b6924a7d37a46fc1dda8efe405040e27ecf1bbd6", "type": "github" }, "original": { @@ -30601,12 +30342,12 @@ }, "std_6": { "inputs": { - "devshell": "devshell_12", + "devshell": "devshell_11", "dmerge": "dmerge_6", - "flake-utils": "flake-utils_29", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago_6", - "nixpkgs": "nixpkgs_64", + "flake-utils": "flake-utils_28", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_62", "yants": "yants_7" }, "locked": { @@ -30625,12 +30366,12 @@ }, "std_7": { "inputs": { - "devshell": "devshell_20", + "devshell": "devshell_19", "dmerge": "dmerge_7", - "flake-utils": "flake-utils_45", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_7", - "nixpkgs": "nixpkgs_94", + "flake-utils": "flake-utils_44", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_92", "yants": "yants_9" }, "locked": { @@ -30649,8 +30390,8 @@ }, "std_8": { "inputs": { - "devshell": "devshell_21", - "nixpkgs": "nixpkgs_97", + "devshell": "devshell_20", + "nixpkgs": "nixpkgs_95", "yants": "yants_10" }, "locked": { @@ -31777,6 +31518,21 @@ "type": "github" } }, + "systems_65": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "systems_7": { "locked": { "lastModified": 1681028828, @@ -31824,8 +31580,8 @@ }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_40", - "nixpkgs": "nixpkgs_88" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_86" }, "locked": { "lastModified": 1654211622, @@ -31946,7 +31702,7 @@ "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_25", + "flake-utils": "flake-utils_24", "nixpkgs": [ "db-sync", "cardano-world", @@ -31975,7 +31731,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_30", + "flake-utils": "flake-utils_29", "nixpkgs": [ "db-sync", "cardano-world", @@ -32002,7 +31758,7 @@ "inputs": { "bats-assert": "bats-assert_4", "bats-support": "bats-support_4", - "flake-utils": "flake-utils_36", + "flake-utils": "flake-utils_35", "nixpkgs": [ "db-sync", "cardano-world", @@ -32147,11 +31903,11 @@ "std": "std_4" }, "locked": { - "lastModified": 1684859161, - "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", + "lastModified": 1668711738, + "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", "owner": "input-output-hk", "repo": "tullia", - "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", "type": "github" }, "original": { @@ -32163,7 +31919,7 @@ "tullia_4": { "inputs": { "nix2container": "nix2container_7", - "nixpkgs": "nixpkgs_96", + "nixpkgs": "nixpkgs_94", "std": "std_8" }, "locked": { @@ -32559,12 +32315,15 @@ } }, "utils_7": { + "inputs": { + "systems": "systems_5" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -32745,11 +32504,11 @@ ] }, "locked": { - "lastModified": 1667096281, - "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "lastModified": 1660507851, + "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", "owner": "divnix", "repo": "yants", - "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", "type": "github" }, "original": { @@ -32763,8 +32522,7 @@ "nixpkgs": [ "cardano-node", "std", - "haumea", - "nixpkgs" + "lib" ] }, "locked": { @@ -32783,7 +32541,7 @@ }, "yants_6": { "inputs": { - "nixpkgs": "nixpkgs_55" + "nixpkgs": "nixpkgs_53" }, "locked": { "lastModified": 1645126146, @@ -32825,7 +32583,7 @@ }, "yants_8": { "inputs": { - "nixpkgs": "nixpkgs_90" + "nixpkgs": "nixpkgs_88" }, "locked": { "lastModified": 1645126146, diff --git a/flake.nix b/flake.nix index 3cae1b428..c2ab47989 100644 --- a/flake.nix +++ b/flake.nix @@ -32,20 +32,19 @@ flake = false; }; - # FIXME: cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-sancho"; - cardano-node.url = "github:input-output-hk/cardano-node/8.7.2"; + cardano-node.url = "github:IntersectMBO/cardano-node/8.12.1"; # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations?rev=d952529afdfdf6d53ce190b1bf8af990a7ae9590"; + url = "github:input-output-hk/cardano-configurations?rev=692010ed0f454bfbb566c06443227c79e2f4dbab"; flake = false; }; # Get Ogmios and Kupo from cardano-nix cardano-nix = { - url = "github:mlabs-haskell/cardano.nix/dshuiski/ogmios"; + url = "github:mlabs-haskell/cardano.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -60,7 +59,7 @@ # Get Ogmios test fixtures ogmios = { - url = "github:CardanoSolutions/ogmios/v6.0.3"; + url = "github:CardanoSolutions/ogmios/v6.4.0"; flake = false; }; @@ -90,7 +89,7 @@ "aarch64-darwin" ]; - ogmiosVersion = "6.0.3"; # FIXME + ogmiosVersion = "6.4.0"; kupoVersion = "2.8.0"; perSystem = nixpkgs.lib.genAttrs supportedSystems; diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index 10cf94b1c..05fd89c54 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -4,7 +4,6 @@ import Prelude import Cardano.Types (Coin, Ed25519KeyHash, Transaction, UtxoMap) import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) -import Cardano.Types.BigNum (fromInt) as BigNum import Cardano.Types.Credential (asPubKeyHash) import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.Contract (getProtocolParameters) @@ -19,7 +18,7 @@ import Data.Either (hush) import Data.Lens.Getter ((^.)) import Data.Map (keys, lookup, values) as Map import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (unwrap) import Data.Set (Set) import Data.Set (difference, fromFoldable, intersection, mapMaybe, union) as Set import Data.Traversable (for) @@ -31,9 +30,7 @@ calculateMinFee :: Transaction -> UtxoMap -> Contract Coin calculateMinFee tx additionalUtxos = do selfSigners <- getSelfSigners tx additionalUtxos pparams <- getProtocolParameters - append (wrap $ BigNum.fromInt 1_000_000) <$> calculateMinFeeCsl pparams - selfSigners - tx + calculateMinFeeCsl pparams selfSigners tx -- | This function estimates the set of keys that must be used -- | for signing to make the transaction valid for the network. diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index 927beac5e..8a0c0cd02 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -24,7 +24,6 @@ import Contract.TextEnvelope import Contract.Wallet.KeyFile ( privatePaymentKeyFromTextEnvelope ) -import Control.Alt ((<|>)) import Control.Monad.Error.Class ( liftMaybe , throwError @@ -106,48 +105,6 @@ waitFor source f = flip tailRecM unit \_ -> do onTestnetEvent :: EventSource String -> Effect (EventSource Event) onTestnetEvent = narrowEventSource parseEvent --- type GenesisKeyFile = Int /\ FilePath - --- parseGenesisKeyFileName --- :: FilePath --- -> Maybe --- (Either { vkey :: GenesisKeyFile } { skey :: GenesisKeyFile }) --- parseGenesisKeyFileName filename = do --- idWithExt <- String.stripPrefix (Pattern "genesis") filename --- let --- vkey = do --- idx <- parseIdx ".vkey" idWithExt --- pure { vkey: idx /\ filename } --- skey = do --- idx <- parseIdx ".skey" idWithExt --- pure { skey: idx /\ filename } --- choose vkey skey --- where --- parseIdx ext = --- Int.fromString <=< String.stripSuffix (Pattern ext) - --- readGenesisKeyPaths --- :: { workdir :: FilePath } --- -> Effect (Map.Map Int { skey :: FilePath, vkey :: FilePath }) --- readGenesisKeyPaths { workdir } = do --- keyfiles <- Node.FS.readdir $ workdir <> "genesis-keys" --- genesis <- liftMaybe (error $ "Can't parse genesis-keys filenames") --- $ traverse parseGenesisKeyFileName keyfiles --- let --- empty :: forall k v. Ord k => Map.Map k v --- empty = Map.fromFoldable [] --- vkeys /\ skeys = fold $ genesis <#> --- either --- (\{ vkey: elem } -> Map.fromFoldable [ elem ] /\ empty) --- (\{ skey: elem } -> empty /\ Map.fromFoldable [ elem ]) --- keys = Map.intersectionWith { vkey: _, skey: _ } vkeys skeys --- toFullPath filename = workdir <> "genesis-keys" <> filename - --- pure $ keys <#> \{ skey, vkey } -> --- { skey: toFullPath skey --- , vkey: toFullPath vkey --- } - getRuntime :: TestnetPaths -> Effect (Record (TestnetRuntime ())) getRuntime paths = do nodes <- readNodes paths @@ -196,27 +153,27 @@ parse872UtxoKeyFilename path = <<< note (error "Can't parse genesis key index") <<< Int.fromString ) - $ String.stripSuffix (Pattern ".skey") - =<< String.stripPrefix (Pattern "utxo") path + (String.stripPrefix (Pattern "utxo") path) read872GenesisKeyLocations :: { workdir :: FilePath } -> Effect (Array { | GenesisUtxoKeyLocation () }) read872GenesisKeyLocations { workdir } = do - let - keysDir = workdir <> "utxo-keys" + let keysDir = workdir <> "utxo-keys" filenames <- Node.FS.readdir keysDir map Array.catMaybes $ liftEither $ for filenames \filename -> parse872UtxoKeyFilename filename <#> map \{ idx } -> - { idx, path: keysDir <> filename } + { idx + , path: keysDir <> filename <> "utxo.skey" + } read872GenesisKey :: forall r . { | GenesisUtxoKeyLocation r } -> Effect Contract.Config.PrivatePaymentKey -read872GenesisKey { path } = readTextEnvelopeAsPaymentSkey path +read872GenesisKey = readTextEnvelopeAsPaymentSkey <<< _.path getNodePort :: { nodeDir :: FilePath } -> Effect UInt getNodePort { nodeDir } = @@ -225,26 +182,20 @@ getNodePort { nodeDir } = =<< Node.FS.readTextFile UTF8 (nodeDir <> "/port") findNodeDirs :: { workdir :: FilePath } -> Effect (Array { | NodeLocation () }) -findNodeDirs { workdir } = ado - subdirs <- Node.FS.readdir workdir - in - flip Array.mapMaybe subdirs \dirname -> ado - idx <- Int.fromString =<< node872 dirname - in { idx, workdir: workdir <> dirname, name: dirname } - where - _node881 x = - String.stripPrefix (Pattern "node-bft") x - <|> String.stripPrefix (Pattern "node-pool") x - node872 = String.stripPrefix (Pattern "node-spo") +findNodeDirs { workdir } = + Node.FS.readdir workdir <#> \subdirs -> + flip Array.mapMaybe subdirs \dirname -> do + idx <- Int.fromString =<< String.stripPrefix (Pattern "pools-keys/pool1") + dirname + pure { idx, workdir: workdir <> dirname, name: dirname } findTestnetPaths :: { workdir :: FilePath } -> Effect (Either Error TestnetPaths) findTestnetPaths { workdir } = runExceptT do let nodeConfigPath = workdir <> "configuration.yaml" - _firstNode811 = "socket/node-pool1" - firstNode872 = "socket/node-spo1" - nodeSocketPath = workdir <> firstNode872 + firstNode = "socket/pool1/sock" + nodeSocketPath = workdir <> firstNode workdirExists <- lift $ Node.FS.exists workdir configPathExists <- lift $ Node.FS.exists nodeConfigPath socketPathExists <- lift $ Node.FS.exists nodeSocketPath @@ -256,7 +207,7 @@ findTestnetPaths { workdir } = runExceptT do "'configuration.yaml' not found in cardano-testnet working directory." unless socketPathExists do throwError $ error - $ firstNode872 + $ firstNode <> " not found in cardano-testnet working directory." nodeDirs <- lift $ findNodeDirs { workdir } genesisKeys <- lift $ read872GenesisKeyLocations { workdir } From b64d0ddbc825ae449dab612222b4c2b574eee105 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Mon, 1 Jul 2024 12:22:46 -0300 Subject: [PATCH 260/373] Pin `purescript-uplc-apply-args` to v1.0.0 --- packages.dhall | 2 +- spago-packages.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages.dhall b/packages.dhall index 7506c80e4..081878fc4 100644 --- a/packages.dhall +++ b/packages.dhall @@ -341,7 +341,7 @@ let additions = , "tuples" ] , repo = "https://github.com/mlabs-haskell/purescript-uplc-apply-args" - , version = "master" + , version = "v1.0.0" } , cardano-types = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index ac4291c95..504b0f7fe 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -1567,7 +1567,7 @@ let "uplc-apply-args" = pkgs.stdenv.mkDerivation { name = "uplc-apply-args"; - version = "master"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-uplc-apply-args.git"; rev = "aa528d5310cbfbd01b4d94557f404d95cfb6bb3c"; From 4870dac0713220e30e298286666668e34ed20b31 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Mon, 1 Jul 2024 12:25:13 -0300 Subject: [PATCH 261/373] Fix `purescript-uplc-apply-args` dependency --- Makefile | 7 +++- flake.nix | 7 ++-- templates/ctl-scaffold/package-lock.json | 39 +++++++++++++++++++++++ templates/ctl-scaffold/package.json | 1 + templates/ctl-scaffold/packages.dhall | 25 +++++++++++++++ templates/ctl-scaffold/spago-packages.nix | 13 ++++++++ 6 files changed, 86 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index c84457f7e..af4026a51 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ SHELL := bash .ONESHELL: -.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports spago-build create-bundle-entrypoint create-html-entrypoint delete-bundle-entrypoint +.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports spago-build create-bundle-entrypoint create-html-entrypoint delete-bundle-entrypoint run-template-checks .SHELLFLAGS := -eu -o pipefail -c ps-sources := $(shell fd --no-ignore-parent -epurs) @@ -108,6 +108,11 @@ run-ci-actions: nix build -L .#checks.x86_64-linux.ctl-staking-test nix build -L .#checks.x86_64-linux.examples-imports-check +run-template-checks: + nix build -L .#checks.x86_64-linux.template-deps-json + nix build -L .#checks.x86_64-linux.template-dhall-diff + nix build -L .#checks.x86_64-linux.template-version + clean: @ rm -r .psc-ide-port || true @ rm -rf .psci_modules || true diff --git a/flake.nix b/flake.nix index 2bae547d0..c593fefad 100644 --- a/flake.nix +++ b/flake.nix @@ -391,9 +391,8 @@ nativeBuildInputs = [ pkgs.jq ]; } '' cd ${self} - # We don't want to include `uplc-apply-args` in the template dependencies. diff \ - <(jq -S '.dependencies | del(."@mlabs-haskell/uplc-apply-args")' <<< $ctlPackageJson) \ + <(jq -S .dependencies <<< $ctlPackageJson) \ <(jq -S .dependencies <<< $ctlScaffoldPackageJson) # We don't want to include `doctoc` in the template dev dependencies. diff \ @@ -406,9 +405,7 @@ let ctlPkgsExp = import ./spago-packages.nix { inherit pkgs; }; ctlScaffoldPkgsExp = import ./templates/ctl-scaffold/spago-packages.nix { inherit pkgs; }; - # We don't include `uplc-apply-args` in the template dependencies. - ctlPs = filter (p: p.name != "uplc-apply-args") - (attrValues ctlPkgsExp.inputs); + ctlPs = (attrValues ctlPkgsExp.inputs); ctlScaffoldPs = filter (p: p.name != "cardano-transaction-lib") (attrValues ctlScaffoldPkgsExp.inputs); intersection = pkgs.lib.lists.intersectLists ctlPs ctlScaffoldPs; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index bc61dd3b5..561dc93e3 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -12,6 +12,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", @@ -517,6 +518,25 @@ "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, + "node_modules/@mlabs-haskell/uplc-apply-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", + "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", + "dependencies": { + "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", + "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" + } + }, + "node_modules/@mlabs-haskell/uplc-apply-args-browser": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", + "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + }, + "node_modules/@mlabs-haskell/uplc-apply-args-nodejs": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", + "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + }, "node_modules/@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", @@ -5751,6 +5771,25 @@ "resolved": "https://registry.npmjs.org/@mlabs-haskell/json-bigint/-/json-bigint-2.0.0.tgz", "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, + "@mlabs-haskell/uplc-apply-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", + "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", + "requires": { + "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", + "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" + } + }, + "@mlabs-haskell/uplc-apply-args-browser": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", + "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + }, + "@mlabs-haskell/uplc-apply-args-nodejs": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", + "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + }, "@noble/hashes": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index fccdce6b9..f34f4d9e3 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -28,6 +28,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", + "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 8513539b1..8be52f038 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -318,6 +318,31 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-plutus-types" , version = "v1.0.1" } + , uplc-apply-args = + { dependencies = + [ "aff" + , "bytearrays" + , "cardano-serialization-lib" + , "cardano-types" + , "effect" + , "either" + , "foldable-traversable" + , "foreign-object" + , "js-bigints" + , "lists" + , "maybe" + , "mote" + , "mote-testplan" + , "partial" + , "prelude" + , "profunctor" + , "spec" + , "transformers" + , "tuples" + ] + , repo = "https://github.com/mlabs-haskell/purescript-uplc-apply-args" + , version = "v1.0.0" + } , cardano-types = { dependencies = [ "aeson" diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 4797c481b..f8db4dae6 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -1577,6 +1577,19 @@ let installPhase = "ln -s $src $out"; }; + "uplc-apply-args" = pkgs.stdenv.mkDerivation { + name = "uplc-apply-args"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-uplc-apply-args.git"; + rev = "aa528d5310cbfbd01b4d94557f404d95cfb6bb3c"; + sha256 = "1r064ca2m16hkbcswrvlng032ax1ygbpr2gxrlaqmjlf2gnin280"; + + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "variant" = pkgs.stdenv.mkDerivation { name = "variant"; version = "v8.0.0"; From 0a875da494fafa342dd4c637a66d78e83d910b3b Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Mon, 1 Jul 2024 12:25:38 -0300 Subject: [PATCH 262/373] Re-add tests related to `ApplyArgs` --- examples/ByUrl.purs | 2 + test/ApplyArgs.purs | 377 ++++++++++++++++++++++++++++++++++++++++++++ test/Unit.purs | 2 + test/e2e-ci.env | 1 + test/e2e.env | 2 + 5 files changed, 384 insertions(+) create mode 100644 test/ApplyArgs.purs diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index f13fcd5e5..3119dff8d 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -67,6 +67,7 @@ import Data.Time.Duration (Seconds(Seconds)) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) import Effect.Console as Console +import Test.Ctl.ApplyArgs as ApplyArgs import Web.HTML (window) import Web.HTML.Window (localStorage) import Web.Storage.Storage (getItem) @@ -216,6 +217,7 @@ examples = addSuccessLog <$> Map.fromFoldable , "ReferenceInputs" /\ ReferenceInputsV2.contract , "ReferenceInputsAndScripts" /\ ReferenceInputsAndScriptsV2.contract , "Utxos" /\ Utxos.contract + , "ApplyArgs" /\ ApplyArgs.contract , "Schnorr" /\ Schnorr.contract , "ECDSA" /\ ECDSA.contract , "PaysWithDatum" /\ PaysWithDatum.contract diff --git a/test/ApplyArgs.purs b/test/ApplyArgs.purs new file mode 100644 index 000000000..a1c24d468 --- /dev/null +++ b/test/ApplyArgs.purs @@ -0,0 +1,377 @@ +module Test.Ctl.ApplyArgs (main, suite, contract) where + +import Contract.Prelude + +import Cardano.Plutus.ApplyArgs (applyArgs) +import Contract.Monad (Contract, launchAff_) +import Contract.Numeric.BigNum as BigNum +import Contract.PlutusData (PlutusData(List, Map, Bytes, Constr), toData) +import Contract.Prim.ByteArray (hexToByteArrayUnsafe) +import Contract.Scripts (PlutusScript) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) +import Control.Monad.Error.Class (class MonadError) +import Ctl.Internal.Cardano.TextEnvelope (TextEnvelope) +import Data.List.Lazy (replicate) +import Data.Profunctor.Choice (left) +import Effect.Aff (Error, error, throwError) +import Foreign.Object (Object) +import Foreign.Object as Object +import JS.BigInt (fromInt) +import Mote (group, test) +import Mote.TestPlanM (TestPlanM, interpret) +import Test.Spec.Assertions (shouldEqual) + +scriptSources :: Object String +scriptSources = + Object.fromFoldable + [ "always-fails" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "581e581c01000033223232222350040071235002353003001498498480048005" +} + """ + , "always-fails-big-arg" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "58ff58fd0100003333333332232322223500400712350023530030014984984800480053010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "always-fails-no-args" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "581e581c01000033223232222350040071235002353003001498498480048005" +} +""" + , "always-fails-unit" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "5826582401000033322323222235004007123500235300300149849848004800530103d879800001" +} +""" + + , "include-datum" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "include-datum", + "cborHex": "55540100002225333573466e1cdd6801a40a82930b01" +} +""" + , "include-datum-big-arg" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "58f658f401000033333332225333573466e1cdd6801a40a82930b2610107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "include-datum-no-args" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "55540100002225333573466e1cdd6801a40a82930b01" +} +""" + , "include-datum-unit" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "581d581b01000032225333573466e1cdd6801a40a82930b26103d879800001" +} +""" + + , "one-shot-minting" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "one-shot-minting", + "cborHex": "5908d75908d401000033232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f1326353357389201115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e46540001" +} +""" + , "one-shot-minting-big-arg" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "5909b75909b4010000333333333232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f132635335738921115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e4654004c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "one-shot-minting-no-args" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "5908d75908d401000033232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f1326353357389201115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e46540001" +} +""" + , "one-shot-minting-unit" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "5908de5908db010000333232332233223232323232323232323232323232323232323222223232323232325335533533355300b120013232123300122333500522002002001002350012200112330012253350021022100101f2325335333573466e3cd400488008d4014880080840804ccd5cd19b873500122001350052200102102010203500122002355001222222222200a101e101f132635335738921115574786f206e6f7420636f6e73756d65640001b0191533553355335323301d50220013550012222222222007101e22135002222533500415335333573466e3c00cd401c88cccd40048c98d4cd5ce2481024c680002302120012326353357389201024c68000230212326353357389201024c680002302102402315335333573466e3c00802409008c4ccd5cd19b870014800809008c408c408c8840944078407c4c98d4cd5ce24811357726f6e6720616d6f756e74206d696e7465640001b019101b135001220023333573466e1cd55cea8022400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40648c8c8cccd5cd19b8735573aa0049000119910919800801801180d9aba15002301e357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854028cd4064068d5d0a804999aa80e3ae501b35742a010666aa038eb9406cd5d0a80399a80c8101aba15006335019335502302175a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502675a6ae854008c09cd5d09aba2500223263533573805a05c05805626aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04ceb4d5d0a80118139aba135744a004464c6a66ae700b40b80b00ac4d55cf280089baa001357426ae8940088c98d4cd5ce01481501401389aab9e5001137540026ae854010cd4065d71aba15003335019335502375c40026ae854008c060d5d09aba2500223263533573804a04c04804626ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150043232323333573466e1d400520062321222230040053018357426aae79400c8cccd5cd19b875002480108c848888c008014c068d5d09aab9e500423333573466e1d400d20022321222230010053011357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008008407c07807407006c4d55cea80089baa001357426ae8940108c98d4cd5ce00c80d00c00b98048031bae006135573ca00226ea8004c8004d5406088448894cd40044d400c88004884ccd401488008c010008ccd54c01c480040140100048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931a99ab9c012013011010135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98d4cd5ce00800880780709baa0011232230023758002640026aa02c446666aae7c0049405c8cd4058c010d5d080118019aba200201023232323333573466e1cd55cea801a40004666444246660020080060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008c044d5d0a80119a8060081aba135744a004464c6a66ae7005005404c0484d55cf280089baa00135742a006666aa00eeb94018d5d0a80119a8043ae357426ae8940088c98d4cd5ce00800880780709aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02844646666aae7c008940588cd4054cd5405cc018d55cea80118029aab9e500230043574400601e26ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263533573801c01e01a01801626aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7003803c03403002c0284d55cea80089baa0012323333573466e1d40052002200e23333573466e1d40092000200e23263533573801401601201000e26aae74dd5000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004804c04404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801601801401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c008009007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80818031aba150023005357426ae8940088c98d4cd5ce00400480380309aab9e5001137540029324903505431001200132001355007222533500110022213500222330073330080020060010033200135500622225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b1233300100800300200600312200212200111220021221223300100400311221233001003002112323001001223300330020020014c1074643544c4e4654004c0103d879800001" +} +""" + + , "always-succeeds-v2" /\ + """ +{ + "cborHex": "4e4d01000033222220051200120011", + "description": "always-succeeds", + "type": "PlutusScriptV2" +} +""" + , "always-succeeds-v2-big-arg" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "58f058ee010000333333333222220051200120014c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "always-succeeds-v2-no-args" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "4e4d01000033222220051200120011" +} +""" + , "always-succeeds-v2-unit" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "5655010000333222220051200120014c0103d879800001" +} +""" + + , "check-datum-is-inline" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59088859088501000032332232323233223232323232323232323322323232323232322223232533532325335001101b13357389211d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c24400424400224002920103505431003200135500322112225335001135003220012213335005220023004002333553007120010050040011122002122122330010040031123230010012233003300200200101" +} +""" + , "check-datum-is-inline-big-arg" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "590969590966010000333333332332232323233223232323232323232323322323232323232322223232533532325335001101b133573892011d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c2440042440022400292010350543100320013550032211222533500113500322001221333500522002300400233355300712001005004001112200212212233001004003112323001001223300330020020014c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "check-datum-is-inline-no-args" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59088859088501000032332232323233223232323232323232323322323232323232322223232533532325335001101b13357389211d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c24400424400224002920103505431003200135500322112225335001135003220012213335005220023004002333553007120010050040011122002122122330010040031123230010012233003300200200101" +} +""" + , "check-datum-is-inline-unit" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59089059088d010000332332232323233223232323232323232323322323232323232322223232533532325335001101b133573892011d556e657870656374656420646174756d206174206f776e20696e7075740001a323253335002153335001101c2101c2101c2153335002101c21333573466ebc00800407807484074854ccd400840708407484ccd5cd19b8f00200101e01d323500122220023235001220013553353500222350022222222222223333500d2501e2501e2501e233355302d12001321233001225335002210031001002501e2350012253355335333573466e3cd400888008d4010880080b40b04ccd5cd19b873500222001350042200102d02c102c1350220031502100d21123001002162001300a0053333573466e1cd55cea80124000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4054058d5d0a80619a80a80b1aba1500b33501501735742a014666aa034eb94064d5d0a804999aa80d3ae501935742a01066a02a0426ae85401cccd54068089d69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b1d69aba15002302d357426ae8940088c98c80bccd5ce01901881689aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a8163ad35742a004605a6ae84d5d1280111931901799ab9c03203102d135573ca00226ea8004d5d09aba2500223263202b33573805c05a05226aae7940044dd50009aba1500533501575c6ae854010ccd540680788004d5d0a801999aa80d3ae200135742a00460406ae84d5d1280111931901399ab9c02a029025135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00460206ae84d5d1280111931900c99ab9c01c01b017101a132632018335738921035054350001a135573ca00226ea800448c88c008dd6000990009aa80d111999aab9f0012501c233501b30043574200460066ae8800805c8c8c8cccd5cd19b8735573aa004900011991091980080180118069aba150023005357426ae8940088c98c8054cd5ce00c00b80989aab9e5001137540024646464646666ae68cdc39aab9d5004480008cccc888848cccc00401401000c008c8c8c8cccd5cd19b8735573aa0049000119910919800801801180b1aba1500233500e015357426ae8940088c98c8068cd5ce00e80e00c09aab9e5001137540026ae854010ccd54025d728041aba150033232323333573466e1d400520042300b357426aae79400c8cccd5cd19b875002480088c84888c004010dd71aba135573ca00846666ae68cdc3a801a400042444006464c6403866ae7007c0780680640604d55cea80089baa00135742a00466a014eb8d5d09aba2500223263201633573803203002826ae8940044d5d1280089aab9e500113754002424446004008266aa002eb9d6889119118011bab00132001355016223233335573e0044a032466a03066442466002006004600c6aae754008c014d55cf280118021aba200301413574200224464646666ae68cdc3a800a400046a00e600a6ae84d55cf280191999ab9a3370ea00490011280391931900919ab9c01501401000f135573aa00226ea800448488c00800c44880048c8c8cccd5cd19b875001480188c848888c010014c01cd5d09aab9e500323333573466e1d400920042321222230020053009357426aae7940108cccd5cd19b875003480088c848888c004014c01cd5d09aab9e500523333573466e1d40112000232122223003005375c6ae84d55cf280311931900819ab9c01301200e00d00c00b135573aa00226ea80048c8c8cccd5cd19b8735573aa004900011991091980080180118029aba15002375a6ae84d5d1280111931900619ab9c00f00e00a135573ca00226ea80048c8cccd5cd19b8735573aa002900011bae357426aae7940088c98c8028cd5ce00680600409baa001232323232323333573466e1d4005200c21222222200323333573466e1d4009200a21222222200423333573466e1d400d2008233221222222233001009008375c6ae854014dd69aba135744a00a46666ae68cdc3a8022400c4664424444444660040120106eb8d5d0a8039bae357426ae89401c8cccd5cd19b875005480108cc8848888888cc018024020c030d5d0a8049bae357426ae8940248cccd5cd19b875006480088c848888888c01c020c034d5d09aab9e500b23333573466e1d401d2000232122222223005008300e357426aae7940308c98c804ccd5ce00b00a80880800780700680600589aab9d5004135573ca00626aae7940084d55cf280089baa0012323232323333573466e1d400520022333222122333001005004003375a6ae854010dd69aba15003375a6ae84d5d1280191999ab9a3370ea0049000119091180100198041aba135573ca00c464c6401866ae7003c0380280244d55cea80189aba25001135573ca00226ea80048c8c8cccd5cd19b875001480088c8488c00400cdd71aba135573ca00646666ae68cdc3a8012400046424460040066eb8d5d09aab9e500423263200933573801801600e00c26aae7540044dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6401466ae7003403002001c0184d55cea80089baa0012323333573466e1d40052002200623333573466e1d40092000200623263200633573801201000800626aae74dd5000a4c2440042440022400292010350543100320013550032211222533500113500322001221333500522002300400233355300712001005004001112200212212233001004003112323001001223300330020020014c0103d879800001" +} +""" + + , "one-shot-minting-v2" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "one-shot-minting", + "cborHex": "59092c59092901000033233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b335738921115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e46540001" +} +""" + , "one-shot-minting-v2-big-arg" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "590a0d590a0a010000333333333233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b3357389201115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e4654004c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "one-shot-minting-v2-no-args" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "59092c59092901000033233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b335738921115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e46540001" +} +""" + , "one-shot-minting-v2-unit" /\ + """ +{ + "type": "PlutusScriptV2", + "description": "", + "cborHex": "590934590931010000333233223322323232323232323232323232323232323232323222223232323232325335533533355300b12001323212330012233350052200200200100235001220011233001225335002102310010202325335333573466e3cd400488008d4014880080880844ccd5cd19b87350012200135005220010220211021350012200235500122222222222200c101f102013263201b3357389201115574786f206e6f7420636f6e73756d65640001c1533553355335323301e5023001355001222222222222008101f22135002222533500415335333573466e3c00cd401c88cccd40048c98c808ccd5ce2481024c680002420012326320233357389201024c68000242326320233357389201024c680002402502415335333573466e3c0080240940904ccd5cd19b870014800809409040904090884098407c40804c98c806ccd5ce24811357726f6e6720616d6f756e74206d696e7465640001c101c135001220023333573466e1cd55cea80224000466442466002006004646464646464646464646464646666ae68cdc39aab9d500c480008cccccccccccc88888888888848cccccccccccc00403403002c02802402001c01801401000c008cd4064068d5d0a80619a80c80d1aba1500b33501901b35742a014666aa03aeb94070d5d0a804999aa80ebae501c35742a01066a0320446ae85401cccd5407408dd69aba150063232323333573466e1cd55cea801240004664424660020060046464646666ae68cdc39aab9d5002480008cc8848cc00400c008cd40b5d69aba15002302e357426ae8940088c98c80c0cd5ce01801881709aab9e5001137540026ae854008c8c8c8cccd5cd19b8735573aa004900011991091980080180119a816bad35742a004605c6ae84d5d1280111931901819ab9c03003102e135573ca00226ea8004d5d09aba2500223263202c33573805805a05426aae7940044dd50009aba1500533501975c6ae854010ccd5407407c8004d5d0a801999aa80ebae200135742a00460426ae84d5d1280111931901419ab9c028029026135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226ae8940044d55cf280089baa00135742a00860226ae84d5d1280211931900d19ab9c01a01b0183010006375c00c26aae7940044dd5000990009aa80c1108911299a80089a80191000910999a802910011802001199aa9803890008028020008919118011bac001320013550182233335573e0024a034466a03260086ae84008c00cd5d1001009919191999ab9a3370e6aae7540092000233221233001003002300a35742a004600a6ae84d5d1280111931900919ab9c012013010135573ca00226ea80048c8c8c8c8cccd5cd19b8735573aa00890001199991110919998008028020018011919191999ab9a3370e6aae7540092000233221233001003002301335742a00466a01a0246ae84d5d1280111931900b99ab9c017018015135573ca00226ea8004d5d0a802199aa8043ae500735742a0066464646666ae68cdc3a800a4008464244460040086ae84d55cf280191999ab9a3370ea0049001119091118008021bae357426aae7940108cccd5cd19b875003480008488800c8c98c8064cd5ce00c80d00b80b00a89aab9d5001137540026ae854008cd4025d71aba135744a004464c6402666ae7004c0500444d5d1280089aba25001135573ca00226ea80044cd54005d73ad112232230023756002640026aa02a44646666aae7c008940608cd405ccc8848cc00400c008c018d55cea80118029aab9e500230043574400602226ae84004488c8c8cccd5cd19b875001480008c8488c00800cc014d5d09aab9e500323333573466e1d40092002212200123263201033573802002201c01a26aae7540044dd5000919191999ab9a3370ea002900311909111180200298039aba135573ca00646666ae68cdc3a8012400846424444600400a60126ae84d55cf280211999ab9a3370ea006900111909111180080298039aba135573ca00a46666ae68cdc3a8022400046424444600600a6eb8d5d09aab9e500623263201033573802002201c01a01801626aae7540044dd5000919191999ab9a3370e6aae7540092000233221233001003002300535742a0046eb4d5d09aba2500223263200c33573801801a01426aae7940044dd50009191999ab9a3370e6aae75400520002375c6ae84d55cf280111931900519ab9c00a00b00813754002464646464646666ae68cdc3a800a401842444444400646666ae68cdc3a8012401442444444400846666ae68cdc3a801a40104664424444444660020120106eb8d5d0a8029bad357426ae8940148cccd5cd19b875004480188cc8848888888cc008024020dd71aba15007375c6ae84d5d1280391999ab9a3370ea00a900211991091111111980300480418061aba15009375c6ae84d5d1280491999ab9a3370ea00c900111909111111180380418069aba135573ca01646666ae68cdc3a803a400046424444444600a010601c6ae84d55cf280611931900999ab9c01301401101000f00e00d00c00b135573aa00826aae79400c4d55cf280109aab9e5001137540024646464646666ae68cdc3a800a4004466644424466600200a0080066eb4d5d0a8021bad35742a0066eb4d5d09aba2500323333573466e1d4009200023212230020033008357426aae7940188c98c8030cd5ce00600680500489aab9d5003135744a00226aae7940044dd5000919191999ab9a3370ea002900111909118008019bae357426aae79400c8cccd5cd19b875002480008c8488c00800cdd71aba135573ca008464c6401266ae7002402801c0184d55cea80089baa00112232323333573466e1d400520042122200123333573466e1d40092002232122230030043006357426aae7940108cccd5cd19b87500348000848880088c98c8028cd5ce00500580400380309aab9d5001137540024646666ae68cdc3a800a4004401446666ae68cdc3a801240004014464c6400c66ae7001801c01000c4d55ce9baa001499240103505431001200132001355006222533500110022213500222330073330080020060010033200135500522225335001100222135002225335333573466e1c005200000a0091333008007006003133300800733500b12333001008003002006003122002122001112200212212233001004003112323001001223300330020020014c01074643544c4e4654004c0103d879800001" +} +""" + + , "redeemer1-validator" /\ + """ +{ + "description": "validator that checks whether redeemer is 1", + "cborHex": "4e4d0100002223375e0046ea120021", + "type": "PlutusScriptV1" +} +""" + , "redeemer1-validator-big-arg" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "58f058ee01000033333332223375e0046ea120024c010107004c0103d87980004c01089fd87980424d5fff004c01465f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dff004c0107a20507424d5f08004c0154d9055f9f079fd87980424d5f5f58404d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d414dffffff004c0114d87e9f809f01ffa0a201d8798002d87b9f02ffff0001" +} +""" + , "redeemer1-validator-no-args" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "4e4d0100002223375e0046ea120021" +} +""" + , "redeemer1-validator-unit" /\ + """ +{ + "type": "PlutusScriptV1", + "description": "", + "cborHex": "565501000032223375e0046ea120024c0103d879800001" +} +""" + ] + +main :: Effect Unit +main = launchAff_ $ interpret $ suite + +contract :: Contract Unit +contract = do + traverse_ (uncurry $ compareApplied (v1 scriptSources)) $ Tuple + <$> v1ScriptPaths + <*> params + traverse_ (uncurry $ compareApplied (v2 scriptSources)) $ Tuple + <$> v2ScriptPaths + <*> params + +suite :: TestPlanM (Aff Unit) Unit +suite = group "Applying params to scripts test" $ do + traverse_ (uncurry $ testCase $ v1 scriptSources) + $ Tuple + <$> v1ScriptPaths + <*> params + traverse_ (uncurry $ testCase $ v2 scriptSources) + $ Tuple + <$> v2ScriptPaths + <*> params + where + testCase lang scriptName (args /\ argsName) = + test + ("Apply " <> argsName <> " to " <> scriptName) + $ compareApplied lang scriptName (args /\ argsName) + +compareApplied + :: forall (m :: Type -> Type) + . Monad m + => MonadError Error m + => (String -> m PlutusScript) + -> String + -> Tuple (Array PlutusData) String + -> m Unit +compareApplied lang scriptName (args /\ argsName) = do + script <- lang scriptName + applied <- liftEither $ left (error <<< show) $ applyArgs script args + appliedShouldBe <- lang (scriptName <> "-" <> argsName) + applied `shouldEqual` appliedShouldBe + +v1ScriptPaths :: Array String +v1ScriptPaths = + [ "always-fails" + , "include-datum" + , "one-shot-minting" + , "redeemer1-validator" + ] + +v2ScriptPaths :: Array String +v2ScriptPaths = + [ "always-succeeds-v2" + , "one-shot-minting-v2" + , "check-datum-is-inline" + ] + +params :: Array (Tuple (Array PlutusData) String) +params = + [ ([] /\ "no-args") + , ([ un ] /\ "unit") + , ( [ i 7 + , un + , List [ un, bytes ] + , longBytes + , Map [ (i 5 /\ i 7), (bytes /\ i 8) ] + , Constr (BigNum.fromInt 102) [ i 7, List [ un, bytes, longBytes ] ] + , Constr (BigNum.fromInt 5) + [ List [] + , List [ i 1 ] + , Map [] + , Map [ (i 1 /\ un), (i 2 /\ Constr (BigNum.fromInt 2) [ i 2 ]) ] + ] + ] /\ "big-arg" + ) + ] + +i :: Int -> PlutusData +i k = toData (fromInt k) + +un :: PlutusData +un = toData unit + +bytes :: PlutusData +bytes = Bytes $ hexToByteArrayUnsafe "4d5f" + +longBytes :: PlutusData +longBytes = Bytes $ hexToByteArrayUnsafe $ foldl (\x y -> x <> y) "" $ + replicate 65 "4d" + +v1 + :: forall (m :: Type -> Type) + . MonadError Error m + => Object String + -> String + -> m PlutusScript +v1 scripts name = lookupAux plutusScriptFromEnvelope scripts name + +v2 + :: forall (m :: Type -> Type) + . MonadError Error m + => Object String + -> String + -> m PlutusScript +v2 scripts name = lookupAux plutusScriptFromEnvelope scripts name + +lookupAux + :: forall (m :: Type -> Type) + . MonadError Error m + => (TextEnvelope -> Maybe PlutusScript) + -> Object String + -> String + -> m PlutusScript +lookupAux decodeScript scripts name = + maybe (throwError $ error $ "Can't find the script with name " <> name) pure + $ do + txt <- Object.lookup name scripts + envelope <- decodeTextEnvelope txt + decodeScript envelope diff --git a/test/Unit.purs b/test/Unit.purs index ad0a36d3d..c7882764b 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -11,6 +11,7 @@ import Effect (Effect) import Effect.Aff (Aff, cancelWith, effectCanceler, launchAff) import Effect.Class (liftEffect) import Mote.Monad (mapTest) +import Test.Ctl.ApplyArgs as ApplyArgs import Test.Ctl.Blockfrost.Aeson.Suite as Blockfrost.Aeson import Test.Ctl.Blockfrost.ProtocolParameters as Blockfrost.ProtocolParameters import Test.Ctl.CoinSelection as CoinSelection @@ -46,6 +47,7 @@ main = interruptOnSignal SIGINT =<< launchAff do testPlan :: TestPlanM (Aff Unit) Unit testPlan = do + ApplyArgs.suite Ipv6.suite NativeScript.suite Bip32.suite diff --git a/test/e2e-ci.env b/test/e2e-ci.env index e20d01d91..54a8bc2e8 100644 --- a/test/e2e-ci.env +++ b/test/e2e-ci.env @@ -10,4 +10,5 @@ plutip:http://localhost:4008/?plutip-nami-mock:SendsToken plutip:http://localhost:4008/?plutip-nami-mock:MintsMultipleTokens plutip:http://localhost:4008/?plutip-nami-mock:Schnorr plutip:http://localhost:4008/?plutip-nami-mock:ECDSA +plutip:http://localhost:4008/?plutip-nami-mock:ApplyArgs " diff --git a/test/e2e.env b/test/e2e.env index 747350871..8b0cc2d87 100755 --- a/test/e2e.env +++ b/test/e2e.env @@ -10,6 +10,8 @@ plutip:http://localhost:4008/?plutip-nami-mock:AlwaysMints plutip:http://localhost:4008/?plutip-nami-mock:Pkh2Pkh plutip:http://localhost:4008/?plutip-nami-mock:SendsToken plutip:http://localhost:4008/?plutip-nami-mock:MintsMultipleTokens +# This test does not depend on wallets, we only check that bundling is correct +plutip:http://localhost:4008/?plutip-nami-mock:ApplyArgs # If you add plutip tests above, please also add them to ./e2e-ci.env nami:http://localhost:4008/?nami:Schnorr From 5bea2962b29e34aca7a9ab1bbdf1b20402935cfb Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 1 Jul 2024 20:19:48 +0200 Subject: [PATCH 263/373] Fix min fee calculation --- src/Internal/Serialization/MinFee.purs | 39 +++++++++++++++++--------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index 16642ab8d..57935b0e6 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -17,6 +17,7 @@ import Cardano.Types.ExUnitPrices as ExUnitPrices import Cardano.Types.NativeScript (NativeScript(ScriptAll)) import Cardano.Types.PublicKey as PublicKey import Cardano.Types.Transaction as Transaction +import Contract.Prim.ByteArray (hexToRawBytes) import Control.Monad.Error.Class (class MonadThrow) import Ctl.Internal.Helpers (unsafeFromJust) import Ctl.Internal.Lens (_vkeys, _witnessSet) @@ -24,12 +25,16 @@ import Ctl.Internal.NativeScripts (getMaximumSigners) import Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) ) -import Data.Array as Array +import Data.Array (length, range, replicate) as Array +import Data.Foldable (fold) +import Data.Int (hexadecimal) as Radix +import Data.Int (toStringAs) as Int import Data.Lens ((.~)) import Data.Maybe (fromJust) import Data.Newtype (unwrap, wrap) import Data.Set (Set) -import Data.Set as Set +import Data.Set (fromFoldable, size) as Set +import Data.String (length) as String import Effect.Class (class MonadEffect) import Effect.Exception (Error) import Partial.Unsafe (unsafePartial) @@ -81,21 +86,27 @@ addFakeSignatures selfSigners tx = nSelfSigners = let n = Set.size selfSigners in if n == 0 then 1 else n + nFakeSigs = nRequiredSigners + nsPossibleSigners + nSelfSigners in - tx # _witnessSet <<< _vkeys .~ - ( Array.replicate (nRequiredSigners + nsPossibleSigners + nSelfSigners) - fakeVkeywitness - ) + -- Generate unique vkeys because Vkeywitnesses now has Set + -- semantics. + tx # _witnessSet <<< _vkeys .~ map mkFakeVkeyWitness + (Array.range one nFakeSigs) -fakeVkeywitness :: Vkeywitness -fakeVkeywitness = Vkeywitness +mkFakeVkeyWitness :: Int -> Vkeywitness +mkFakeVkeyWitness n = Vkeywitness { vkey: - ( Vkey - ( unsafePartial $ fromJust $ PublicKey.fromBech32 - -- This should not fail assuming the hardcoded bech32 key is valid. - "ed25519_pk1p9sf9wz3t46u9ghht44203gerxt82kzqaqw74fqrmwjmdy8sjxmqknzq8j" - ) - ) + Vkey + ( let + nHex = Int.toStringAs Radix.hexadecimal n + in + unsafeFromJust "Ctl.Internal.Serialization.MinFee.mkFakeVkeywitness" + ( fold (Array.replicate (64 - String.length nHex) "0") <> nHex # + ( PublicKey.fromRawBytes + <=< hexToRawBytes + ) + ) + ) , signature: ( unsafePartial $ fromJust $ Ed25519Signature.fromBech32 "ed25519_sig1mr6pm5kanam2wkmae70jx7fjkzepghefj0lmnczu6fra\ From b7be9407ae22dd9d02563d5784fa49ce2d79a014 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 1 Jul 2024 20:57:27 +0200 Subject: [PATCH 264/373] Upgrade getTxMetadata to getTxAuxiliaryData in QueryHandle --- src/Contract/Test/Assert.purs | 7 ++- src/Contract/Transaction.purs | 16 +++---- src/Internal/Contract/QueryHandle.purs | 17 ++++++-- src/Internal/Contract/QueryHandle/Type.purs | 6 +-- src/Internal/QueryM/Kupo.purs | 47 +++++++++++---------- src/Internal/Serialization/MinFee.purs | 2 +- test/Plutip/Contract.purs | 15 ++++--- 7 files changed, 63 insertions(+), 47 deletions(-) diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 4d663947d..310273edd 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -84,7 +84,7 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.Value as Value import Contract.Monad (Contract) import Contract.Prelude (Effect) -import Contract.Transaction (getTxMetadata) +import Contract.Transaction (getTxAuxiliaryData) import Contract.Utxos (utxosAt) import Contract.Wallet (getWalletBalance, getWalletUtxos) import Control.Monad.Error.Class (liftEither, throwError) @@ -825,7 +825,10 @@ assertTxHasMetadata assertTxHasMetadata mdLabel txHash expectedMetadata = do generalMetadata <- assertContractMaybe (TransactionHasNoMetadata txHash Nothing) - =<< lift (hush <$> getTxMetadata txHash) + =<< lift + ( map ((=<<) (_.metadata <<< unwrap)) $ hush <$> getTxAuxiliaryData + txHash + ) rawMetadata <- assertContractMaybe (TransactionHasNoMetadata txHash (Just mdLabel)) diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 1ed8e59f2..592df8beb 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -8,7 +8,7 @@ module Contract.Transaction , balanceTxs , balanceTxsWithConstraints , createAdditionalUtxos - , getTxMetadata + , getTxAuxiliaryData , module BalanceTxError , module X , submit @@ -29,7 +29,6 @@ import Prelude import Cardano.Types ( Bech32String , Coin - , GeneralTransactionMetadata , PoolPubKeyHash(PoolPubKeyHash) , Transaction(Transaction) , TransactionHash @@ -54,6 +53,7 @@ import Cardano.Types , TransactionOutput(TransactionOutput) , TransactionUnspentOutput(TransactionUnspentOutput) ) as X +import Cardano.Types.AuxiliaryData (AuxiliaryData) import Cardano.Types.Ed25519KeyHash as Ed25519KeyHash import Cardano.Types.OutputDatum (OutputDatum(OutputDatum, OutputDatumHash)) as X import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash(PoolPubKeyHash)) as X @@ -391,14 +391,14 @@ balanceAndLock -> Contract Transaction balanceAndLock = balanceAndLockWithConstraints <<< flip Tuple mempty --- | Fetch transaction metadata. --- | Returns `Right` when the transaction exists and metadata was non-empty -getTxMetadata +-- | Fetch transaction auxiliary data. +-- | Returns `Right` when the transaction exists and auxiliary data is not empty +getTxAuxiliaryData :: TransactionHash - -> Contract (Either GetTxMetadataError GeneralTransactionMetadata) -getTxMetadata th = do + -> Contract (Either GetTxMetadataError AuxiliaryData) +getTxAuxiliaryData txHash = do queryHandle <- getQueryHandle - liftAff $ queryHandle.getTxMetadata th + liftAff $ queryHandle.getTxAuxiliaryData txHash -- | Builds an expected utxo set from transaction outputs. Predicts output -- | references (`TransactionInput`s) for each output by calculating the diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index 3d9e665b9..360c6bf91 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -10,6 +10,7 @@ import Cardano.AsCbor (encodeCbor) import Cardano.Types.Transaction (hash) as Transaction import Contract.Log (logDebug') import Control.Monad.Error.Class (throwError) +import Control.Monad.Except (ExceptT(ExceptT), runExceptT) import Ctl.Internal.Contract.LogParams (LogParams) import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend, CtlBackend) import Ctl.Internal.Contract.QueryHandle.Type (QueryHandle) @@ -22,7 +23,7 @@ import Ctl.Internal.QueryM.Kupo ( getDatumByHash , getOutputAddressesByTxHash , getScriptByHash - , getTxMetadata + , getTxAuxiliaryData , getUtxoByOref , isTxConfirmed , utxosAt @@ -40,7 +41,7 @@ import Ctl.Internal.Service.Blockfrost import Ctl.Internal.Service.Blockfrost as Blockfrost import Ctl.Internal.Service.Error (ClientError(ClientOtherError)) import Data.Either (Either(Left, Right)) -import Data.Maybe (fromMaybe, isJust) +import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isJust) import Data.Newtype (wrap) import Effect.Aff (Aff) import Effect.Exception (error) @@ -57,7 +58,7 @@ queryHandleForCtlBackend runQueryM params backend = , getUtxoByOref: runQueryM' <<< Kupo.getUtxoByOref , getOutputAddressesByTxHash: runQueryM' <<< Kupo.getOutputAddressesByTxHash , doesTxExist: runQueryM' <<< map (map isJust) <<< Kupo.isTxConfirmed - , getTxMetadata: runQueryM' <<< Kupo.getTxMetadata + , getTxAuxiliaryData: runQueryM' <<< Kupo.getTxAuxiliaryData , utxosAt: runQueryM' <<< Kupo.utxosAt , getChainTip: Right <$> runQueryM' QueryM.getChainTip , getCurrentEpoch: runQueryM' QueryM.getCurrentEpoch @@ -100,7 +101,15 @@ queryHandleForBlockfrostBackend logParams backend = , getOutputAddressesByTxHash: runBlockfrostServiceM' <<< Blockfrost.getOutputAddressesByTxHash , doesTxExist: runBlockfrostServiceM' <<< Blockfrost.doesTxExist - , getTxMetadata: runBlockfrostServiceM' <<< Blockfrost.getTxMetadata + , getTxAuxiliaryData: \txHash -> runExceptT do + -- FIXME: check if Blockfrost also returns full aux data + metadata <- ExceptT $ runBlockfrostServiceM' $ Blockfrost.getTxMetadata + txHash + pure $ wrap + { metadata: Just metadata + , nativeScripts: Nothing + , plutusScripts: Nothing + } , utxosAt: runBlockfrostServiceM' <<< Blockfrost.utxosAt , getChainTip: runBlockfrostServiceM' Blockfrost.getChainTip , getCurrentEpoch: diff --git a/src/Internal/Contract/QueryHandle/Type.purs b/src/Internal/Contract/QueryHandle/Type.purs index 7f8264ab6..10afe6510 100644 --- a/src/Internal/Contract/QueryHandle/Type.purs +++ b/src/Internal/Contract/QueryHandle/Type.purs @@ -6,7 +6,6 @@ module Ctl.Internal.Contract.QueryHandle.Type import Cardano.Types ( Address , DataHash - , GeneralTransactionMetadata , NetworkId , PlutusData , PoolPubKeyHash @@ -19,6 +18,7 @@ import Cardano.Types , TransactionOutput , UtxoMap ) +import Cardano.Types.AuxiliaryData (AuxiliaryData) import Ctl.Internal.Contract.QueryHandle.Error (GetTxMetadataError) import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet @@ -38,9 +38,9 @@ type AffE (a :: Type) = Aff (Either ClientError a) type QueryHandle = { getDatumByHash :: DataHash -> AffE (Maybe PlutusData) , getScriptByHash :: ScriptHash -> AffE (Maybe ScriptRef) - , getTxMetadata :: + , getTxAuxiliaryData :: TransactionHash - -> Aff (Either GetTxMetadataError GeneralTransactionMetadata) + -> Aff (Either GetTxMetadataError AuxiliaryData) , getUtxoByOref :: TransactionInput -> AffE (Maybe TransactionOutput) , getOutputAddressesByTxHash :: TransactionHash -> AffE (Array Address) , doesTxExist :: TransactionHash -> AffE Boolean diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index 89dd7544c..5ae6ef14b 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -1,7 +1,7 @@ module Ctl.Internal.QueryM.Kupo ( getDatumByHash , getScriptByHash - , getTxMetadata + , getTxAuxiliaryData , getUtxoByOref , getOutputAddressesByTxHash , isTxConfirmed @@ -30,7 +30,6 @@ import Cardano.Types ( Address , BigNum , DataHash - , GeneralTransactionMetadata , Language(PlutusV3) , MultiAsset , PlutusData @@ -45,6 +44,7 @@ import Cardano.Types ) import Cardano.Types.Address as Address import Cardano.Types.AssetName (mkAssetName) +import Cardano.Types.AuxiliaryData (AuxiliaryData) import Cardano.Types.BigNum (toString) as BigNum import Cardano.Types.CborBytes (CborBytes) import Cardano.Types.MultiAsset as MultiAsset @@ -80,7 +80,7 @@ import Data.Generic.Rep (class Generic) import Data.HTTP.Method (Method(GET)) import Data.Lens (_Right, to, (^?)) import Data.Map (Map) -import Data.Map (fromFoldable, isEmpty, lookup, values) as Map +import Data.Map (fromFoldable, lookup, values) as Map import Data.Maybe (Maybe(Just, Nothing), fromMaybe) import Data.Newtype (class Newtype, unwrap, wrap) import Data.Show.Generic (genericShow) @@ -172,10 +172,10 @@ isTxConfirmedAff config txHash = runExceptT do -- Take the first utxo's slot to give the transactions slot pure $ uncons utxos <#> _.head >>> unwrapKupoUtxoSlot -getTxMetadata +getTxAuxiliaryData :: TransactionHash - -> QueryM (Either GetTxMetadataError GeneralTransactionMetadata) -getTxMetadata txHash = runExceptT do + -> QueryM (Either GetTxMetadataError AuxiliaryData) +getTxAuxiliaryData txHash = runExceptT do ExceptT (lmap GetTxMetadataClientError <$> isTxConfirmed txHash) >>= case _ of Nothing -> throwError GetTxMetadataTxNotFoundError Just slot -> do @@ -183,16 +183,17 @@ getTxMetadata txHash = runExceptT do endpoint = "/metadata/" <> BigNum.toString (unwrap slot) <> "?transaction_id=" <> txHashToHex txHash - kupoMetadata <- ExceptT $ + kupoAuxData <- ExceptT $ lmap GetTxMetadataClientError <<< handleAffjaxResponse <$> kupoGetRequest endpoint - case unwrapKupoMetadata kupoMetadata of + case unwrapKupoAuxData kupoAuxData of Nothing -> throwError GetTxMetadataMetadataEmptyOrMissingError - Just metadata - | Map.isEmpty (unwrap metadata) -> throwError - GetTxMetadataMetadataEmptyOrMissingError - | otherwise -> pure metadata + Just auxData + | unwrap auxData == mempty -> + throwError GetTxMetadataMetadataEmptyOrMissingError + | otherwise -> + pure auxData -------------------------------------------------------------------------------- -- `utxosAt` response parsing @@ -456,28 +457,28 @@ unwrapKupoUtxoSlot :: KupoUtxoSlot -> Slot unwrapKupoUtxoSlot (KupoUtxoSlot slot) = slot -------------------------------------------------------------------------------- --- `getTxMetadata` reponse parsing +-- `getTxAuxiliaryData` reponse parsing -------------------------------------------------------------------------------- -newtype KupoMetadata = KupoMetadata (Maybe GeneralTransactionMetadata) +newtype KupoAuxiliaryData = KupoAuxiliaryData (Maybe AuxiliaryData) -derive instance Generic KupoMetadata _ -derive instance Eq KupoMetadata +derive instance Generic KupoAuxiliaryData _ +derive instance Eq KupoAuxiliaryData -instance Show KupoMetadata where +instance Show KupoAuxiliaryData where show = genericShow -instance DecodeAeson KupoMetadata where +instance DecodeAeson KupoAuxiliaryData where decodeAeson = decodeAeson >=> case _ of [ { raw: cbor } :: { raw :: CborBytes } ] -> do - metadata <- note (TypeMismatch "Hexadecimal encoded Metadata") $ + auxData <- note (TypeMismatch "Hexadecimal encoded AuxiliaryData") $ decodeCbor cbor - pure $ KupoMetadata $ Just $ metadata - [] -> Right $ KupoMetadata Nothing + pure $ KupoAuxiliaryData $ Just auxData + [] -> Right $ KupoAuxiliaryData Nothing _ -> Left $ TypeMismatch "Singleton or Empty Array" -unwrapKupoMetadata :: KupoMetadata -> Maybe GeneralTransactionMetadata -unwrapKupoMetadata (KupoMetadata mbMetadata) = mbMetadata +unwrapKupoAuxData :: KupoAuxiliaryData -> Maybe AuxiliaryData +unwrapKupoAuxData (KupoAuxiliaryData mAuxData) = mAuxData -------------------------------------------------------------------------------- -- Helpers diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index 57935b0e6..14c3f51d8 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -100,7 +100,7 @@ mkFakeVkeyWitness n = Vkeywitness ( let nHex = Int.toStringAs Radix.hexadecimal n in - unsafeFromJust "Ctl.Internal.Serialization.MinFee.mkFakeVkeywitness" + unsafeFromJust "Ctl.Internal.Serialization.MinFee.mkFakeVkeyWitness" ( fold (Array.replicate (64 - String.length nHex) "0") <> nHex # ( PublicKey.fromRawBytes <=< hexToRawBytes diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index ea91f84bd..2d45f21e4 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -8,7 +8,7 @@ import Cardano.AsCbor (decodeCbor) import Cardano.Serialization.Lib (fromBytes) import Cardano.Types ( Address - , GeneralTransactionMetadata(GeneralTransactionMetadata) + , GeneralTransactionMetadata , TransactionUnspentOutput(TransactionUnspentOutput) ) import Cardano.Types.AssetName as AssetName @@ -90,7 +90,7 @@ import Contract.Transaction , balanceTxWithConstraints , balanceTxWithConstraintsE , createAdditionalUtxos - , getTxMetadata + , getTxAuxiliaryData , lookupTxHash , signTransaction , submit @@ -1023,8 +1023,11 @@ suite = do lookups :: Lookups.ScriptLookups lookups = mempty - givenMetadata = GeneralTransactionMetadata $ Map.fromFoldable - [ BigNum.fromInt 8 /\ Metadatum.Text "foo" ] + + givenMetadata :: GeneralTransactionMetadata + givenMetadata = + wrap $ Map.fromFoldable + [ BigNum.fromInt 8 /\ Metadatum.Text "foo" ] ubTx <- mkUnbalancedTx lookups constraints let ubTx' = setGeneralTxMetadata ubTx givenMetadata @@ -1032,8 +1035,8 @@ suite = do txId <- submit bsTx awaitTxConfirmed txId - mMetadata <- getTxMetadata txId - mMetadata `shouldEqual` Right givenMetadata + mMetadata <- map (_.metadata <<< unwrap) <$> getTxAuxiliaryData txId + mMetadata `shouldEqual` Right (Just givenMetadata) test "Minting zero of a token fails" do let From dc47aa3238dbdf9ad590483b305e70c948083b7e Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 1 Jul 2024 21:09:43 +0200 Subject: [PATCH 265/373] Fix localnet tests --- test/Plutip.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Plutip.purs b/test/Plutip.purs index cd463fe81..86504a001 100644 --- a/test/Plutip.purs +++ b/test/Plutip.purs @@ -43,7 +43,7 @@ main = interruptOnSignal SIGINT =<< launchAff do $ group "cardano-testnet" do testTestnetContracts config Mnemonics.suite group "ExUnits - normal limits" do - testTestnetContracts config $ ExUnits.mkFailingSuite 3650 + testTestnetContracts config $ ExUnits.mkFailingSuite 8000 testTestnetContracts config $ ExUnits.mkSuite 2550 -- FIXME: group "ExUnits - relaxed limits" do -- testTestnetContracts configWithMaxExUnits $ ExUnits.mkSuite 3000 From 095f5bee58690fd51af3d879ce2c5cd65bce4ee4 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 1 Jul 2024 21:29:48 +0200 Subject: [PATCH 266/373] Fix startTestnetContractEnv - do not import from Ctl.Examples --- examples/Helpers.purs | 12 ++++-------- src/Internal/Testnet/Contract.purs | 10 +++++++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/Helpers.purs b/examples/Helpers.purs index bd79deec1..57f670dee 100644 --- a/examples/Helpers.purs +++ b/examples/Helpers.purs @@ -31,8 +31,7 @@ mkAssetName = <<< (AssetName.mkAssetName <=< byteArrayFromAscii) mustPayToPubKeyStakeAddress - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> Maybe StakePubKeyHash -> Value -> Constraints.TxConstraints @@ -42,8 +41,7 @@ mustPayToPubKeyStakeAddress pkh (Just skh) = Constraints.mustPayToPubKeyAddress pkh skh mustPayToPubKeyStakeAddressWithDatum - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> Maybe StakePubKeyHash -> PlutusData -> DatumPresence @@ -55,8 +53,7 @@ mustPayToPubKeyStakeAddressWithDatum pkh (Just skh) datum dtp = Constraints.mustPayToPubKeyAddressWithDatum pkh skh datum dtp mustPayToPubKeyStakeAddressWithScriptRef - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash + :: PaymentPubKeyHash -> Maybe StakePubKeyHash -> ScriptRef -> Value @@ -66,8 +63,7 @@ mustPayToPubKeyStakeAddressWithScriptRef pkh Nothing scriptRef = mustPayToPubKeyStakeAddressWithScriptRef pkh (Just skh) scriptRef = Constraints.mustPayToPubKeyAddressWithScriptRef pkh skh scriptRef -submitAndLog - :: Transaction -> Contract Unit +submitAndLog :: Transaction -> Contract Unit submitAndLog bsTx = do txId <- submit bsTx logInfo' $ "Tx ID: " <> show txId diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 71c21676a..c1bc794b3 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -30,6 +30,7 @@ import Contract.Transaction , submit ) import Contract.TxConstraints (TxConstraints) +import Contract.TxConstraints (mustPayToPubKey, mustPayToPubKeyAddress) as Constraints import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (Value) import Contract.Value (lovelaceValueOf) as Value @@ -41,7 +42,6 @@ import Contract.Wallet import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) -import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) import Ctl.Internal.Plutip.Server (makeClusterContractEnv) import Ctl.Internal.Plutip.Utils (cleanupOnExit, runCleanup, whenError) import Ctl.Internal.Test.ContractTest @@ -302,12 +302,16 @@ startTestnetContractEnv cfg distr cleanupRef = do mustPayToAddress :: Address -> Value -> TxConstraints mustPayToAddress addr = let - skh = case getStakeCredential addr of + mSkh = case getStakeCredential addr of Just (StakeCredential (PubKeyHashCredential skh')) -> Just $ StakePubKeyHash skh' _ -> Nothing in case getPaymentCredential addr of Just (PaymentCredential (PubKeyHashCredential pkh)) -> - mustPayToPubKeyStakeAddress (wrap pkh) skh + case mSkh of + Nothing -> + Constraints.mustPayToPubKey $ wrap pkh + Just skh -> + Constraints.mustPayToPubKeyAddress (wrap pkh) skh _ -> mempty From f4c731fe458fe35d7fd49edca6184cdba8918f00 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 1 Jul 2024 21:36:35 +0200 Subject: [PATCH 267/373] Fix ctl-scaffold template --- packages.dhall | 106 - templates/ctl-scaffold/flake.lock | 34522 ++++++++++++++++---- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/package-lock.json | 46 +- templates/ctl-scaffold/package.json | 2 +- templates/ctl-scaffold/packages.dhall | 129 +- templates/ctl-scaffold/spago-packages.nix | 30 +- 7 files changed, 28750 insertions(+), 6087 deletions(-) diff --git a/packages.dhall b/packages.dhall index 951ca7a0e..0328a41b9 100644 --- a/packages.dhall +++ b/packages.dhall @@ -1,109 +1,3 @@ -{- -Welcome to your new Dhall package-set! - -Below are instructions for how to edit this file for most use -cases, so that you don't need to know Dhall to use it. - -## Warning: Don't Move This Top-Level Comment! - -Due to how `dhall format` currently works, this comment's -instructions cannot appear near corresponding sections below -because `dhall format` will delete the comment. However, -it will not delete a top-level comment like this one. - -## Use Cases - -Most will want to do one or both of these options: -1. Override/Patch a package's dependency -2. Add a package not already in the default package set - -This file will continue to work whether you use one or both options. -Instructions for each option are explained below. - -### Overriding/Patching a package - -Purpose: -- Change a package's dependency to a newer/older release than the - default package set's release -- Use your own modified version of some dependency that may - include new API, changed API, removed API by - using your custom git repo of the library rather than - the package set's repo - -Syntax: -where `entityName` is one of the following: -- dependencies -- repo -- version -------------------------------- -let upstream = -- -in upstream - with packageName.entityName = "new value" -------------------------------- - -Example: -------------------------------- -let upstream = -- -in upstream - with halogen.version = "master" - with halogen.repo = "https://example.com/path/to/git/repo.git" - - with halogen-vdom.version = "v4.0.0" -------------------------------- - -### Additions - -Purpose: -- Add packages that aren't already included in the default package set - -Syntax: -where `` is: -- a tag (i.e. "v4.0.0") -- a branch (i.e. "master") -- commit hash (i.e. "701f3e44aafb1a6459281714858fadf2c4c2a977") -------------------------------- -let upstream = -- -in upstream - with new-package-name = - { dependencies = - [ "dependency1" - , "dependency2" - ] - , repo = - "https://example.com/path/to/git/repo.git" - , version = - "" - } -------------------------------- - -Example: -------------------------------- -let upstream = -- -in upstream - with benchotron = - { dependencies = - [ "arrays" - , "exists" - , "profunctor" - , "strings" - , "quickcheck" - , "lcg" - , "transformers" - , "foldable-traversable" - , "exceptions" - , "node-fs" - , "node-buffer" - , "node-readline" - , "datetime" - , "now" - ] - , repo = - "https://github.com/hdgarrood/purescript-benchotron.git" - , version = - "v7.0.0" - } -------------------------------- --} let upstream = https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20230105/packages.dhall sha256:3e9fbc9ba03e9a1fcfd895f65e2d50ee2f5e86c4cd273f3d5c841b655a0e1bda diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 8a0100234..76c942bfc 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -3,11 +3,181 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1702290471, - "narHash": "sha256-uivAP05RENSzQDbDjAU3Fbq+AiDDpcNaHAzvOZM1fik=", + "lastModified": 1719559353, + "narHash": "sha256-oVMUrDPUbVVsTWOsmtZkpHFr+oKPEezlSADm/s3A2/o=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "1ff7483a6d2670c8627de92779a2b92a989293cd", + "rev": "35bd2072a08607a3b2e4b56cf9c243c449908017", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_10": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_11": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_12": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_13": { + "flake": false, + "locked": { + "lastModified": 1714517469, + "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_14": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_15": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_16": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_17": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_18": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_19": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -18,6 +188,23 @@ } }, "CHaP_2": { + "flake": false, + "locked": { + "lastModified": 1702906471, + "narHash": "sha256-br+hVo3R6nfmiSEPXcLKhIX4Kg5gcK2PjzjmvQsuUp8=", + "owner": "IntersectMBO", + "repo": "cardano-haskell-packages", + "rev": "48a359ac3f1d437ebaa91126b20e15a65201f004", + "type": "github" + }, + "original": { + "owner": "IntersectMBO", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_3": { "flake": false, "locked": { "lastModified": 1686070892, @@ -34,14 +221,14 @@ "type": "github" } }, - "CHaP_3": { + "CHaP_4": { "flake": false, "locked": { - "lastModified": 1695160702, - "narHash": "sha256-+Mfc6eGA1ZwQ/ZjKzMoMWkHzd+sgR1JbxY0i849HjEU=", + "lastModified": 1702593630, + "narHash": "sha256-IWu27+sfPtazjIZiWLUm8G4BKvjXmIL+/1XT/ETnfhg=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "9932690af3713ef034c928850252eb1b88450ee6", + "rev": "9783a177efcea5beb8808aab7513098bdab185ba", "type": "github" }, "original": { @@ -51,14 +238,82 @@ "type": "github" } }, - "CHaP_4": { + "CHaP_5": { + "flake": false, + "locked": { + "lastModified": 1719449018, + "narHash": "sha256-SHrUrjiohM2RMe0DctdO3vDDA40tI8NVTKmwc3egaeY=", + "owner": "intersectmbo", + "repo": "cardano-haskell-packages", + "rev": "6b048d1ad84220d47f870635e84df63590f5efa3", + "type": "github" + }, + "original": { + "owner": "intersectmbo", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_6": { + "flake": false, + "locked": { + "lastModified": 1714517469, + "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_7": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_8": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_9": { "flake": false, "locked": { - "lastModified": 1694601145, - "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "e8298604717dbaa311c1e42e021b571670f4b039", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -84,7 +339,7 @@ "type": "github" } }, - "HTTP_2": { + "HTTP_10": { "flake": false, "locked": { "lastModified": 1451647621, @@ -100,7 +355,7 @@ "type": "github" } }, - "HTTP_3": { + "HTTP_11": { "flake": false, "locked": { "lastModified": 1451647621, @@ -116,7 +371,7 @@ "type": "github" } }, - "HTTP_4": { + "HTTP_12": { "flake": false, "locked": { "lastModified": 1451647621, @@ -132,7 +387,7 @@ "type": "github" } }, - "HTTP_5": { + "HTTP_13": { "flake": false, "locked": { "lastModified": 1451647621, @@ -148,7 +403,7 @@ "type": "github" } }, - "HTTP_6": { + "HTTP_14": { "flake": false, "locked": { "lastModified": 1451647621, @@ -164,7 +419,7 @@ "type": "github" } }, - "HTTP_7": { + "HTTP_15": { "flake": false, "locked": { "lastModified": 1451647621, @@ -180,9248 +435,31492 @@ "type": "github" } }, - "agenix": { - "inputs": { - "nixpkgs": "nixpkgs_9" - }, + "HTTP_16": { + "flake": false, "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix-cli": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_10" - }, + "HTTP_17": { + "flake": false, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "cole-h", - "repo": "agenix-cli", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix-cli_2": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_12" - }, + "HTTP_18": { + "flake": false, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "cole-h", - "repo": "agenix-cli", - "type": "github" + "owner": "phadej", + "repo": "HTTP", + "type": "github" } }, - "agenix-cli_3": { - "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_41" - }, + "HTTP_19": { + "flake": false, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "cole-h", - "repo": "agenix-cli", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix_2": { - "inputs": { - "nixpkgs": "nixpkgs_11" - }, + "HTTP_2": { + "flake": false, "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "HTTP_20": { + "flake": false, "locked": { - "lastModified": 1640802000, - "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", - "owner": "ryantm", - "repo": "agenix", - "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + "HTTP_21": { + "flake": false, "locked": { - "lastModified": 1643841757, - "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", - "owner": "ryantm", - "repo": "agenix", - "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "HTTP_22": { + "flake": false, "locked": { - "lastModified": 1640802000, - "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", - "owner": "ryantm", - "repo": "agenix", - "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix_6": { - "inputs": { - "nixpkgs": "nixpkgs_40" - }, + "HTTP_23": { + "flake": false, "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix_7": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "HTTP_24": { + "flake": false, "locked": { - "lastModified": 1640802000, - "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", - "owner": "ryantm", - "repo": "agenix", - "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix_8": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + "HTTP_25": { + "flake": false, "locked": { - "lastModified": 1643841757, - "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", - "owner": "ryantm", - "repo": "agenix", - "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "alejandra": { - "inputs": { - "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_35" - }, + "HTTP_3": { + "flake": false, "locked": { - "lastModified": 1646360966, - "narHash": "sha256-fJ/WHSU45bMJRDqz9yA3B2lwXtW5DKooU+Pzn13GyZI=", - "owner": "kamadorueda", - "repo": "alejandra", - "rev": "511c3f6a88b6964e1496fb6f441f4ae5e58bd3ea", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "kamadorueda", - "repo": "alejandra", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "bats-assert": { + "HTTP_4": { "flake": false, "locked": { - "lastModified": 1636059754, - "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", - "owner": "bats-core", - "repo": "bats-assert", - "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-assert", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "bats-assert_2": { + "HTTP_5": { "flake": false, "locked": { - "lastModified": 1636059754, - "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", - "owner": "bats-core", - "repo": "bats-assert", - "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-assert", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "bats-assert_3": { + "HTTP_6": { "flake": false, "locked": { - "lastModified": 1636059754, - "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", - "owner": "bats-core", - "repo": "bats-assert", - "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", - "type": "github" + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-assert", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "bats-support": { + "HTTP_7": { "flake": false, "locked": { - "lastModified": 1548869839, - "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", - "owner": "bats-core", - "repo": "bats-support", - "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-support", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "bats-support_2": { + "HTTP_8": { "flake": false, "locked": { - "lastModified": 1548869839, - "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", - "owner": "bats-core", - "repo": "bats-support", - "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-support", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "bats-support_3": { + "HTTP_9": { "flake": false, "locked": { - "lastModified": 1548869839, - "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", - "owner": "bats-core", - "repo": "bats-support", - "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-support", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "bitte": { + "agenix": { "inputs": { - "agenix": "agenix", - "agenix-cli": "agenix-cli", - "blank": "blank_2", - "capsules": "capsules", - "data-merge": "data-merge", - "deploy": "deploy_2", - "fenix": "fenix_4", - "hydra": "hydra_3", - "n2c": "n2c_2", - "nix": "nix_5", - "nixpkgs": "nixpkgs_29", - "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "nomad-driver-nix": "nomad-driver-nix_2", - "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_3", - "ragenix": "ragenix_3", - "std": "std_2", - "terranix": "terranix_2", - "utils": "utils_12" + "nixpkgs": "nixpkgs_37" }, "locked": { - "lastModified": 1661790449, - "narHash": "sha256-lh1MlCOJE/LJMChGLREATWPnN9oKkjFFjnTvc9pX4Uo=", - "owner": "input-output-hk", - "repo": "bitte", - "rev": "f452ea2c392a4a301c1feb20955c7d0a4ad38130", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "bitte-cells": { + "agenix-cli": { "inputs": { - "cardano-db-sync": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-db-sync" - ], - "cardano-iohk-nix": [ - "ctl", - "db-sync", - "cardano-world", - "iohk-nix" - ], - "cardano-node": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-node" - ], - "cardano-wallet": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet" - ], - "cicero": "cicero", - "data-merge": [ - "ctl", - "db-sync", - "cardano-world", - "data-merge" - ], - "n2c": [ - "ctl", - "db-sync", - "cardano-world", - "n2c" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "nixpkgs" - ], - "std": [ - "ctl", - "db-sync", - "cardano-world", - "std" - ] + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_38" }, "locked": { - "lastModified": 1660761733, - "narHash": "sha256-Xqf6yRnjJXJ8jbwL9rlci8Z91tVDVwk3lorD6SnZuIg=", - "owner": "input-output-hk", - "repo": "bitte-cells", - "rev": "433bbca40bf461a86d55f202d26f87c9f5206377", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-cells", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "bitte_2": { + "agenix-cli_2": { "inputs": { - "agenix": "agenix_2", - "agenix-cli": "agenix-cli_2", - "blank": "blank_3", - "deploy": "deploy", - "fenix": "fenix_2", - "hydra": "hydra_2", - "nix": "nix_2", - "nixpkgs": "nixpkgs_15", - "nixpkgs-unstable": "nixpkgs-unstable_2", - "nomad": "nomad", - "nomad-driver-nix": "nomad-driver-nix", - "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib_2", - "ragenix": "ragenix", - "terranix": "terranix", - "utils": "utils_7", - "vulnix": "vulnix" + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_40" }, "locked": { - "lastModified": 1649886949, - "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", - "owner": "input-output-hk", - "repo": "bitte", - "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "bitte_3": { + "agenix-cli_3": { "inputs": { - "agenix": "agenix_6", - "agenix-cli": "agenix-cli_3", - "blank": "blank_4", - "deploy": "deploy_3", - "fenix": "fenix_6", - "hydra": "hydra_4", - "nix": "nix_9", - "nixpkgs": "nixpkgs_44", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "nomad": "nomad_2", - "nomad-driver-nix": "nomad-driver-nix_3", - "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_4", - "ragenix": "ragenix_4", - "terranix": "terranix_3", - "utils": "utils_21", - "vulnix": "vulnix_2" + "flake-utils": "flake-utils_33", + "nixpkgs": "nixpkgs_69" }, "locked": { - "lastModified": 1649886949, - "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", - "owner": "input-output-hk", - "repo": "bitte", - "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "blank": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" + "agenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_39" }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, - "blank_2": { "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "blank_3": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "agenix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "blank_4": { + "agenix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "blank_5": { + "agenix_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "blockfrost": { + "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs_68" }, "locked": { - "lastModified": 1693412637, - "narHash": "sha256-uA2U7ZCdWv2Rxmi10uaMNNw8tiMbgcu2nnO6NTNp3VE=", - "owner": "blockfrost", - "repo": "blockfrost-backend-ryo", - "rev": "8d455ab1f710b7bd27d2aa87c82f0c5129101647", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "blockfrost", - "ref": "v1.7.0", - "repo": "blockfrost-backend-ryo", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "blst": { - "flake": false, + "agenix_7": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "blst_2": { - "flake": false, + "agenix_8": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "byron-chain": { - "flake": false, + "alejandra": { + "inputs": { + "flakeCompat": "flakeCompat", + "nixpkgs": "nixpkgs_63" + }, "locked": { - "lastModified": 1557232434, - "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "lastModified": 1646360966, + "narHash": "sha256-fJ/WHSU45bMJRDqz9yA3B2lwXtW5DKooU+Pzn13GyZI=", + "owner": "kamadorueda", + "repo": "alejandra", + "rev": "511c3f6a88b6964e1496fb6f441f4ae5e58bd3ea", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", + "owner": "kamadorueda", + "repo": "alejandra", "type": "github" } }, - "cabal-32": { + "ameba-src": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1679041484, + "narHash": "sha256-pc9mtVR/PBhM5l1PnDkm+y+McxbrfAmQzxmLi761VF4=", + "owner": "crystal-ameba", + "repo": "ameba", + "rev": "7c74d196d6d9a496a81a0c7b79ef44f39faf41b8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "crystal-ameba", + "ref": "v1.4.3", + "repo": "ameba", "type": "github" } }, - "cabal-32_2": { - "flake": false, + "auth-keys-hub": { + "inputs": { + "crystal": "crystal", + "flake-parts": "flake-parts_2", + "inclusive": "inclusive", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ], + "statix": "statix", + "treefmt-nix": "treefmt-nix" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1691483346, + "narHash": "sha256-wvn84eGcc+PMbq/qSCWcZ/kV7/bjwuGOVSn/9rGaaKw=", + "owner": "input-output-hk", + "repo": "auth-keys-hub", + "rev": "ab7c79f49886b8f24cfae4b967a59ea62af9156e", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "auth-keys-hub", "type": "github" } }, - "cabal-32_3": { + "bats-assert": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_4": { + "bats-assert_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_5": { + "bats-assert_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_6": { + "bats-assert_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "cabal-32_7": { + "bats-support": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-34": { + "bats-support_2": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-34_2": { + "bats-support_3": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-34_3": { + "bats-support_4": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "cabal-34_4": { + "bdwgc-src": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1661523039, + "narHash": "sha256-UYJQGeSykmfydGAmTlNJNyAPBasBkddOSoopBHiY7TI=", + "owner": "ivmai", + "repo": "bdwgc", + "rev": "cd1fbc1dbfd2cc888436944dd2784f39820698d7", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "ivmai", + "ref": "v8.2.2", + "repo": "bdwgc", "type": "github" } }, - "cabal-34_5": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" + "bitte": { + "inputs": { + "agenix": "agenix", + "agenix-cli": "agenix-cli", + "blank": "blank_6", + "capsules": "capsules", + "data-merge": "data-merge", + "deploy": "deploy_2", + "fenix": "fenix_6", + "hydra": "hydra_7", + "n2c": "n2c_5", + "nix": "nix_10", + "nixpkgs": "nixpkgs_57", + "nixpkgs-docker": "nixpkgs-docker", + "nixpkgs-unstable": "nixpkgs-unstable_8", + "nomad-driver-nix": "nomad-driver-nix_2", + "nomad-follower": "nomad-follower_2", + "ops-lib": "ops-lib_5", + "ragenix": "ragenix_3", + "std": "std_6", + "terranix": "terranix_3", + "utils": "utils_17" }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_6": { - "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1661790449, + "narHash": "sha256-lh1MlCOJE/LJMChGLREATWPnN9oKkjFFjnTvc9pX4Uo=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "f452ea2c392a4a301c1feb20955c7d0a4ad38130", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-34_7": { - "flake": false, + "bitte-cells": { + "inputs": { + "cardano-db-sync": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-db-sync" + ], + "cardano-iohk-nix": [ + "ctl", + "db-sync", + "cardano-world", + "iohk-nix" + ], + "cardano-node": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-node" + ], + "cardano-wallet": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet" + ], + "cicero": "cicero", + "data-merge": [ + "ctl", + "db-sync", + "cardano-world", + "data-merge" + ], + "n2c": [ + "ctl", + "db-sync", + "cardano-world", + "n2c" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "nixpkgs" + ], + "std": [ + "ctl", + "db-sync", + "cardano-world", + "std" + ] + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1660761733, + "narHash": "sha256-Xqf6yRnjJXJ8jbwL9rlci8Z91tVDVwk3lorD6SnZuIg=", + "owner": "input-output-hk", + "repo": "bitte-cells", + "rev": "433bbca40bf461a86d55f202d26f87c9f5206377", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte-cells", "type": "github" } }, - "cabal-36": { - "flake": false, + "bitte_2": { + "inputs": { + "agenix": "agenix_2", + "agenix-cli": "agenix-cli_2", + "blank": "blank_7", + "deploy": "deploy", + "fenix": "fenix_4", + "hydra": "hydra_6", + "nix": "nix_7", + "nixpkgs": "nixpkgs_43", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "nomad": "nomad", + "nomad-driver-nix": "nomad-driver-nix", + "nomad-follower": "nomad-follower", + "ops-lib": "ops-lib_4", + "ragenix": "ragenix", + "terranix": "terranix_2", + "utils": "utils_12", + "vulnix": "vulnix" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-36_2": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, + "bitte_3": { + "inputs": { + "agenix": "agenix_6", + "agenix-cli": "agenix-cli_3", + "blank": "blank_8", + "deploy": "deploy_3", + "fenix": "fenix_8", + "hydra": "hydra_8", + "nix": "nix_14", + "nixpkgs": "nixpkgs_72", + "nixpkgs-unstable": "nixpkgs-unstable_9", + "nomad": "nomad_2", + "nomad-driver-nix": "nomad-driver-nix_3", + "nomad-follower": "nomad-follower_3", + "ops-lib": "ops-lib_6", + "ragenix": "ragenix_4", + "terranix": "terranix_4", + "utils": "utils_26", + "vulnix": "vulnix_2" + }, + "locked": { + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", + "type": "github" + }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "cabal-36_3": { - "flake": false, + "blank": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-36_4": { - "flake": false, + "blank_2": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-36_5": { - "flake": false, + "blank_3": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-36_6": { - "flake": false, + "blank_4": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cabal-36_7": { - "flake": false, + "blank_5": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "capsules": { - "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_23", - "ragenix": "ragenix_2" - }, + "blank_6": { "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "capsules_2": { - "inputs": { - "bitte": "bitte_3", - "iogo": "iogo_2", - "nixpkgs": "nixpkgs_52", - "ragenix": "ragenix_5" + "blank_7": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_8": { "locked": { - "lastModified": 1659466315, - "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "cardano-automation": { + "blockfrost": { "inputs": { - "flake-utils": "flake-utils", - "haskellNix": [ - "ctl", - "cardano-node", - "haskellNix" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "tullia": [ - "ctl", - "cardano-node", - "tullia" - ] + "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1693412637, + "narHash": "sha256-uA2U7ZCdWv2Rxmi10uaMNNw8tiMbgcu2nnO6NTNp3VE=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "8d455ab1f710b7bd27d2aa87c82f0c5129101647", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "blockfrost", + "ref": "v1.7.0", + "repo": "blockfrost-backend-ryo", "type": "github" } }, - "cardano-configurations": { + "blst": { "flake": false, "locked": { - "lastModified": 1699561895, - "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cardano-configurations_2": { + "blst_10": { "flake": false, "locked": { - "lastModified": 1694019972, - "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cardano-explorer-app": { + "blst_11": { "flake": false, "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", - "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cardano-graphql": { + "blst_12": { "flake": false, "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", - "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-graphql", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_2" - }, + "blst_13": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_2", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake", - "flake-compat": "flake-compat", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "hostNixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix", - "nix2container": "nix2container", - "nixpkgs": [ - "ctl", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib", - "std": [ - "ctl", - "cardano-node", - "tullia", - "std" - ], - "tullia": "tullia", - "utils": "utils_2" + "blst_14": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_15": { + "flake": false, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "8.1.1", - "repo": "cardano-node", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cardano-node_2": { + "blst_16": { "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cardano-shell": { + "blst_17": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cardano-shell_2": { + "blst_18": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cardano-shell_3": { + "blst_19": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cardano-shell_4": { + "blst_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cardano-shell_5": { + "blst_20": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cardano-shell_6": { + "blst_21": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cardano-shell_7": { + "blst_22": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cardano-wallet": { - "inputs": { - "customConfig": "customConfig_2", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_25", - "haskellNix": "haskellNix_2", - "hostNixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "iohkNix": "iohkNix_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "nixpkgs-unstable" - ] + "blst_3": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_4": { + "flake": false, "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cardano-world": { - "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ - "ctl", - "db-sync" - ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node_2", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_9", - "hackage": "hackage_3", - "haskell-nix": "haskell-nix_2", - "iohk-nix": "iohk-nix", - "n2c": "n2c_3", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_63", - "nixpkgs-haskell": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios", - "std": "std_3", - "tullia": "tullia_2" - }, + "blst_5": { + "flake": false, "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", - "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-world", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cicero": { - "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_8", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix", - "inclusive": "inclusive_8", - "nix": "nix_8", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_39", - "poetry2nix": "poetry2nix", - "utils": "utils_16" - }, + "blst_6": { + "flake": false, "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", - "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cicero", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "ctl": { - "inputs": { - "CHaP": "CHaP", - "blockfrost": "blockfrost", - "cardano-configurations": "cardano-configurations", - "cardano-node": "cardano-node", - "db-sync": "db-sync", - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_11", - "hackage-nix": "hackage-nix", - "haskell-nix": "haskell-nix_3", - "hercules-ci-effects": "hercules-ci-effects", - "iohk-nix": "iohk-nix_2", - "kupo": "kupo", - "kupo-nixos": "kupo-nixos", - "nixpkgs": [ - "ctl", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios_2", - "ogmios-nixos": "ogmios-nixos", - "plutip": "plutip" + "blst_7": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_8": { + "flake": false, "locked": { - "lastModified": 1713303538, - "narHash": "sha256-WXDfjWskup7FLOGG0T/Y5RyP9Ccvvp5IyIHyXVM4cmg=", - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "423e27b3f56b1a66db8d3126c22cea9bda7e50da", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "423e27b3f56b1a66db8d3126c22cea9bda7e50da", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "customConfig": { + "blst_9": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "customConfig_2": { + "byron-chain": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "customConfig_3": { + "cabal-32": { + "flake": false, "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" }, "original": { - "path": "./custom-config", - "type": "path" + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" } }, - "data-merge": { - "inputs": { - "nixlib": "nixlib", - "yants": "yants_2" - }, + "cabal-32_10": { + "flake": false, "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", - "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "data-merge_2": { - "inputs": { - "nixlib": "nixlib_2" - }, + "cabal-32_11": { + "flake": false, "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "data-merge_3": { - "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_4" - }, + "cabal-32_12": { + "flake": false, "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "db-sync": { - "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_3", - "flake-compat": "flake-compat_10", - "haskellNix": "haskellNix_3", - "iohkNix": "iohkNix_3", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_23" - }, + "cabal-32_13": { + "flake": false, "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.0.0", - "repo": "cardano-db-sync", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "deploy": { - "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat_4", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_3" - }, + "cabal-32_14": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "deploy_2": { - "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_5", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_9" - }, + "cabal-32_15": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "deploy_3": { - "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_6", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_17" - }, + "cabal-32_16": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "cabal-32_17": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_10": { + "cabal-32_18": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_11": { + "cabal-32_19": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_12": { + "cabal-32_2": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_13": { + "cabal-32_20": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_14": { + "cabal-32_21": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_15": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "cabal-32_22": { + "flake": false, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_16": { - "inputs": { - "flake-utils": "flake-utils_31", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] - }, + "cabal-32_23": { + "flake": false, "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_2": { + "cabal-32_24": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_3": { + "cabal-32_25": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_4": { + "cabal-32_3": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_5": { + "cabal-32_4": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_6": { + "cabal-32_5": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_7": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, + "cabal-32_6": { + "flake": false, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_8": { - "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": "nixpkgs_36" - }, + "cabal-32_7": { + "flake": false, "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "devshell_9": { + "cabal-32_8": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "dmerge": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-node", - "tullia", - "std", - "yants" - ] - }, + "cabal-32_9": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "dmerge_2": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] - }, + "cabal-34": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "dmerge_3": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "yants" - ] - }, + "cabal-34_10": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "driver": { - "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_6", - "nix": "nix_7", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_13" - }, + "cabal-34_11": { + "flake": false, "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "easy-purescript-nix": { + "cabal-34_12": { "flake": false, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "em": { + "cabal-34_13": { "flake": false, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "ema": { - "inputs": { - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_54", - "pre-commit-hooks": "pre-commit-hooks" - }, + "cabal-34_14": { + "flake": false, "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "srid", - "repo": "ema", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "ema_2": { + "cabal-34_15": { "flake": false, "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", - "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "srid", - "ref": "multisite", - "repo": "ema", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "emanote": { - "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_57", - "tailwind-haskell": "tailwind-haskell" - }, + "cabal-34_16": { + "flake": false, "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "srid", - "repo": "emanote", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "empty-flake": { + "cabal-34_17": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "fenix": { - "inputs": { - "nixpkgs": "nixpkgs_13", - "rust-analyzer-src": "rust-analyzer-src" - }, + "cabal-34_18": { + "flake": false, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "fenix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_2" - }, + "cabal-34_19": { + "flake": false, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "fenix_3": { - "inputs": { - "nixpkgs": "nixpkgs_26", - "rust-analyzer-src": "rust-analyzer-src_3" - }, + "cabal-34_2": { + "flake": false, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "fenix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_4" - }, + "cabal-34_20": { + "flake": false, "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "fenix_5": { - "inputs": { - "nixpkgs": "nixpkgs_42", - "rust-analyzer-src": "rust-analyzer-src_5" - }, + "cabal-34_21": { + "flake": false, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "fenix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_6" - }, + "cabal-34_22": { + "flake": false, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat": { + "cabal-34_23": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_10": { + "cabal-34_24": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_11": { + "cabal-34_25": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_12": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_13": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_14": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_15": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_2": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_3": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_4": { + "cabal-34_9": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "flake-compat_5": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-compat_6": { + "cabal-36_10": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", - "type": "github" + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-compat_7": { + "cabal-36_11": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-compat_8": { + "cabal-36_12": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-compat_9": { + "cabal-36_13": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs": "nixpkgs_56" - }, + "cabal-36_14": { + "flake": false, "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "ctl", - "hercules-ci-effects", - "nixpkgs" - ] - }, + "cabal-36_15": { + "flake": false, "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "id": "flake-parts", - "type": "indirect" + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" } }, - "flake-utils": { + "cabal-36_16": { + "flake": false, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_10": { + "cabal-36_17": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_11": { + "cabal-36_18": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_12": { + "cabal-36_19": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_13": { + "cabal-36_2": { + "flake": false, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_14": { + "cabal-36_20": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_15": { + "cabal-36_21": { + "flake": false, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_16": { + "cabal-36_22": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_17": { + "cabal-36_23": { + "flake": false, "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_18": { + "cabal-36_24": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_19": { + "cabal-36_25": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_2": { + "cabal-36_3": { + "flake": false, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_20": { + "cabal-36_4": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_21": { + "cabal-36_5": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_22": { + "cabal-36_6": { + "flake": false, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_23": { + "cabal-36_7": { + "flake": false, "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_24": { + "cabal-36_8": { + "flake": false, "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_25": { + "cabal-36_9": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "flake-utils_26": { + "call-flake": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1687380775, + "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", + "owner": "divnix", + "repo": "call-flake", + "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "call-flake", "type": "github" } }, - "flake-utils_27": { + "capkgs": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1697123727, + "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", + "owner": "input-output-hk", + "repo": "capkgs", + "rev": "b197e225592dfe38afb80c94b628d99968c0541d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "capkgs", "type": "github" } }, - "flake-utils_28": { + "capsules": { + "inputs": { + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_51", + "ragenix": "ragenix_2" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "flake-utils_29": { + "capsules_2": { + "inputs": { + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_80", + "ragenix": "ragenix_5" + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "flake-utils_3": { + "cardano-automation": { + "inputs": { + "flake-utils": "flake-utils_4", + "haskellNix": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "tullia": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "flake-utils_30": { - "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "cardano-automation_2": { + "inputs": { + "flake-utils": "flake-utils_9", + "haskellNix": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "tullia": "tullia_2" + }, + "locked": { + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "flake-utils_31": { + "cardano-automation_3": { + "inputs": { + "flake-utils": "flake-utils_16", + "haskellNix": [ + "ctl", + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "tullia": "tullia_3" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "flake-utils_32": { + "cardano-configurations": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1715909148, + "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", "type": "github" } }, - "flake-utils_33": { + "cardano-configurations-8.1.1": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1692193634, + "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" } }, - "flake-utils_4": { + "cardano-configurations-8.7.3": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1702085095, + "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" } }, - "flake-utils_5": { + "cardano-db-sync": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-parts": "cardano-parts", + "flake-compat": "flake-compat_4", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "iohkNix": "iohkNix", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1707925775, + "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", + "owner": "intersectmbo", + "repo": "cardano-db-sync", + "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "intersectmbo", + "ref": "13.2.0.1", + "repo": "cardano-db-sync", "type": "github" } }, - "flake-utils_6": { + "cardano-db-sync-schema": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "flake-utils_7": { + "cardano-db-sync-schema-ng": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1694078776, + "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "sancho-1-1-0", + "repo": "cardano-db-sync", "type": "github" } }, - "flake-utils_8": { + "cardano-db-sync-service": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "flake-utils_9": { + "cardano-explorer-app": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "flakeCompat": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cardano-graphql", "type": "github" } }, - "follower": { + "cardano-mainnet-mirror": { "inputs": { - "devshell": "devshell_10", - "inclusive": "inclusive_7", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_14" + "nixpkgs": "nixpkgs_14" }, "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-follower", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "ghc-8.6.5-iohk": { - "flake": false, + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_24" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "ghc-8.6.5-iohk_2": { - "flake": false, + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_33" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "ghc-8.6.5-iohk_3": { - "flake": false, + "cardano-nix": { + "inputs": { + "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", + "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", + "cardano-db-sync": "cardano-db-sync", + "cardano-node-8.1.1": "cardano-node-8.1.1", + "cardano-node-8.7.3": "cardano-node-8.7.3", + "devour-flake": "devour-flake", + "devshell": "devshell_4", + "flake-parts": "flake-parts_5", + "flake-root": "flake-root", + "hercules-ci-effects": "hercules-ci-effects", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "treefmt-nix": "treefmt-nix_3" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1719347639, + "narHash": "sha256-scs7lMJQ4kLSIh9nahzoxk9L6BRyt2hYFbr5nIaqCWY=", + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "rev": "5c8a8bffcee77189b72fea6123b2a2845d1e731e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "mlabs-haskell", + "repo": "cardano.nix", "type": "github" } }, - "ghc-8.6.5-iohk_4": { - "flake": false, + "cardano-node": { + "inputs": { + "CHaP": "CHaP_5", + "cardano-automation": "cardano-automation_3", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "customConfig": "customConfig_3", + "em": "em_3", + "empty-flake": "empty-flake_4", + "flake-compat": "flake-compat_15", + "hackageNix": "hackageNix_4", + "haskellNix": "haskellNix_4", + "hostNixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_4", + "nix2container": "nix2container_6", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_3", + "std": "std_5", + "utils": "utils_7" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1719456236, + "narHash": "sha256-ElMb/C8Ljq8jiqUqVBVAf2crn5hF+vnG5UeShdS6MGQ=", + "owner": "IntersectMBO", + "repo": "cardano-node", + "rev": "06943b66e634fc9eb83ddb376ed3508003dbb607", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "IntersectMBO", + "ref": "8.12.1", + "repo": "cardano-node", "type": "github" } }, - "ghc-8.6.5-iohk_5": { - "flake": false, + "cardano-node-8.1.1": { + "inputs": { + "CHaP": "CHaP_3", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake_2", + "flake-compat": "flake-compat_6", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "iohkNix": "iohkNix_2", + "nix2container": "nix2container", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_3" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "intersectmbo", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "ghc-8.6.5-iohk_6": { - "flake": false, + "cardano-node-8.7.3": { + "inputs": { + "CHaP": "CHaP_4", + "cardano-automation": "cardano-automation_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "customConfig": "customConfig_2", + "em": "em_2", + "empty-flake": "empty-flake_3", + "flake-compat": "flake-compat_10", + "hackageNix": "hackageNix_3", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nix2container": "nix2container_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_2", + "std": "std_3", + "utils": "utils_5" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1702654749, + "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "intersectmbo", + "ref": "8.7.3", + "repo": "cardano-node", "type": "github" } }, - "ghc-8.6.5-iohk_7": { + "cardano-node-service": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1690209950, + "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "cardano-node", + "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "8.1.2", + "repo": "cardano-node", "type": "github" } }, - "ghc98X": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99": { + "cardano-node_2": { "flake": false, "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", + "type": "github" } }, - "gomod2nix": { + "cardano-parts": { "inputs": { - "nixpkgs": "nixpkgs_5", - "utils": "utils" + "auth-keys-hub": "auth-keys-hub", + "capkgs": "capkgs", + "cardano-db-sync-schema": "cardano-db-sync-schema", + "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", + "cardano-db-sync-service": "cardano-db-sync-service", + "cardano-node-service": "cardano-node-service", + "cardano-wallet-service": "cardano-wallet-service", + "colmena": "colmena", + "empty-flake": "empty-flake", + "flake-parts": "flake-parts_3", + "haskell-nix": "haskell-nix", + "inputs-check": "inputs-check", + "iohk-nix": "iohk-nix", + "iohk-nix-ng": "iohk-nix-ng", + "nix": "nix_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "nixpkgs-unstable": "nixpkgs-unstable_2", + "offchain-metadata-tools-service": "offchain-metadata-tools-service", + "sops-nix": "sops-nix", + "terraform-providers": "terraform-providers", + "terranix": "terranix", + "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1697147999, + "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", + "owner": "input-output-hk", + "repo": "cardano-parts", + "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "input-output-hk", + "repo": "cardano-parts", "type": "github" } }, - "hackage": { + "cardano-shell": { "flake": false, "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "cardano-shell", "type": "github" } }, - "hackage-nix": { + "cardano-shell_10": { "flake": false, "locked": { - "lastModified": 1702426969, - "narHash": "sha256-rbhpiqSBFwLxTO4Qx2sJm7BzBQo9MidVWlL9W21HHy4=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "524b4a4d0e06119cd226aa9f5d57986547bd29b4", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "cardano-shell", "type": "github" } }, - "hackageNix": { + "cardano-shell_11": { "flake": false, "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "cardano-shell", "type": "github" } }, - "hackage_2": { + "cardano-shell_12": { "flake": false, "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "cardano-shell", "type": "github" } }, - "hackage_3": { + "cardano-shell_13": { "flake": false, "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "cardano-shell", "type": "github" } }, - "hackage_4": { + "cardano-shell_14": { "flake": false, "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "cardano-shell", "type": "github" } }, - "hackage_5": { + "cardano-shell_15": { "flake": false, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "cardano-shell", "type": "github" } }, - "haskell-flake": { + "cardano-shell_16": { + "flake": false, "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "srid", - "repo": "haskell-flake", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_16", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls_2", - "nix-tools": "nix-tools", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-unstable": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" + "cardano-shell_17": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_18": { + "flake": false, "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "cardano-shell", "type": "github" } }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "hackage": [ - "ctl", - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_6", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" + "cardano-shell_19": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_2": { + "flake": false, "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "cardano-shell", "type": "github" } }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_12", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ - "ctl", - "hackage-nix" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_8", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "ctl", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6" + "cardano-shell_20": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_21": { + "flake": false, "locked": { - "lastModified": 1702428573, - "narHash": "sha256-KpY2FsKQs6vUABgQFjUCqaTPVN5dStNjt0Dxjw7CA9g=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "78c22a52a0d80d7e29c12f74df871ebb58a0795d", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "cardano-shell", "type": "github" } }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_33", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_5", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" + "cardano-shell_22": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_23": { + "flake": false, "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "repo": "cardano-shell", "type": "github" } }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": [ - "ctl", - "cardano-node", - "hackageNix" - ], - "hls-1.10": "hls-1.10", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ + "cardano-shell_24": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_25": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_3": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_4": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_5": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_6": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_7": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_8": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-shell_9": { + "flake": false, + "locked": { + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-shell", + "type": "github" + } + }, + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig_4", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_40", + "haskellNix": "haskellNix_5", + "hostNixpkgs": [ "ctl", - "cardano-node", + "db-sync", + "cardano-world", + "cardano-wallet", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" + "iohkNix": "iohkNix_5", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", + "type": "github" + } + }, + "cardano-wallet-service": { + "flake": false, + "locked": { + "lastModified": 1689751896, + "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", + "owner": "cardano-foundation", + "repo": "cardano-wallet", + "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", + "type": "github" + }, + "original": { + "owner": "cardano-foundation", + "ref": "v2023-07-18", + "repo": "cardano-wallet", + "type": "github" + } + }, + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "ctl", + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_22", + "hackage": "hackage_4", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "n2c": "n2c_6", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_91", + "nixpkgs-haskell": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_7", + "tullia": "tullia_4" + }, + "locked": { + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-world", + "type": "github" + } + }, + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_12", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix_2", + "inclusive": "inclusive_9", + "nix": "nix_13", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_67", + "poetry2nix": "poetry2nix", + "utils": "utils_21" + }, + "locked": { + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cicero", + "type": "github" + } + }, + "colmena": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ], + "stable": "stable" + }, + "locked": { + "lastModified": 1684127108, + "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", + "owner": "zhaofengli", + "repo": "colmena", + "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "v0.4.0", + "repo": "colmena", + "type": "github" + } + }, + "crane": { + "inputs": { + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_14", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "crystal": { + "inputs": { + "ameba-src": "ameba-src", + "bdwgc-src": "bdwgc-src", + "crystal-aarch64-darwin": "crystal-aarch64-darwin", + "crystal-src": "crystal-src", + "crystal-x86_64-darwin": "crystal-x86_64-darwin", + "crystal-x86_64-linux": "crystal-x86_64-linux", + "crystalline-src": "crystalline-src", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1683429373, + "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", + "owner": "manveru", + "repo": "crystal-flake", + "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "crystal-flake", + "type": "github" + } + }, + "crystal-aarch64-darwin": { + "flake": false, + "locked": { + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + } + }, + "crystal-src": { + "flake": false, + "locked": { + "lastModified": 1681995387, + "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", + "owner": "crystal-lang", + "repo": "crystal", + "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", + "type": "github" + }, + "original": { + "owner": "crystal-lang", + "ref": "1.8.1", + "repo": "crystal", + "type": "github" + } + }, + "crystal-x86_64-darwin": { + "flake": false, + "locked": { + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + } + }, + "crystal-x86_64-linux": { + "flake": false, + "locked": { + "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + } + }, + "crystalline-src": { + "flake": false, + "locked": { + "lastModified": 1681549124, + "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", + "owner": "elbywan", + "repo": "crystalline", + "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", + "type": "github" + }, + "original": { + "owner": "elbywan", + "ref": "v0.9.0", + "repo": "crystalline", + "type": "github" + } + }, + "ctl": { + "inputs": { + "CHaP": "CHaP", + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-nix": "cardano-nix", + "cardano-node": "cardano-node", + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_24", + "hackage-nix": "hackage-nix", + "haskell-nix": "haskell-nix_4", + "hercules-ci-effects": "hercules-ci-effects_2", + "iohk-nix": "iohk-nix_3", + "kupo-nixos": "kupo-nixos", + "nixpkgs": [ + "ctl", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios_2" + }, + "locked": { + "lastModified": 1719862188, + "narHash": "sha256-8P5jkszksOIEExjVXfnL1TSBhrjpfneEDuC+sqiii4w=", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "095f5bee58690fd51af3d879ce2c5cd65bce4ee4", + "type": "github" + }, + "original": { + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "095f5bee58690fd51af3d879ce2c5cd65bce4ee4", + "type": "github" + } + }, + "customConfig": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_2": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_3": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_4": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_5": { + "locked": { + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" + }, + "original": { + "path": "./custom-config", + "type": "path" + } + }, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants_6" + }, + "locked": { + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, + "locked": { + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "data-merge_3": { + "inputs": { + "nixlib": "nixlib_3", + "yants": "yants_8" + }, + "locked": { + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "db-sync": { + "inputs": { + "cardano-world": "cardano-world", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_23", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_28" + }, + "locked": { + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "13.1.0.0", + "repo": "cardano-db-sync", + "type": "github" + } + }, + "deploy": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_17", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_8" + }, + "locked": { + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "deploy-rs", + "type": "github" + } + }, + "deploy_2": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_18", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_14" + }, + "locked": { + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "deploy-rs", + "type": "github" + } + }, + "deploy_3": { + "inputs": { + "fenix": "fenix_7", + "flake-compat": "flake-compat_19", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_22" + }, + "locked": { + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "deploy-rs", + "type": "github" + } + }, + "devour-flake": { + "flake": false, + "locked": { + "lastModified": 1709858306, + "narHash": "sha256-Vey9n9hIlWiSAZ6CCTpkrL6jt4r2JvT2ik9wa2bjeC0=", + "owner": "srid", + "repo": "devour-flake", + "rev": "17b711b9deadbbc5629cb7d2b64cf86ae72af3fa", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "devour-flake", + "type": "github" + } + }, + "devshell": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_10": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_11": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_12": { + "inputs": { + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_64" + }, + "locked": { + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_13": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_14": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_15": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_16": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_17": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_18": { + "locked": { + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_19": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_2": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_20": { + "inputs": { + "flake-utils": "flake-utils_46", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "systems": "systems_2" + }, + "locked": { + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_4": { + "inputs": { + "flake-utils": "flake-utils_15", + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1713532798, + "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", + "owner": "numtide", + "repo": "devshell", + "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_5": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_6": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_7": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_8": { + "locked": { + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_9": { + "locked": { + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "dmerge": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_2": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_3": { + "inputs": { + "haumea": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea" + ], + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "type": "github" + }, + "original": { + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", + "type": "github" + } + }, + "dmerge_4": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_5": { + "inputs": { + "haumea": [ + "ctl", + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "ctl", + "cardano-node", + "std", + "lib" + ], + "yants": [ + "ctl", + "cardano-node", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "type": "github" + }, + "original": { + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", + "type": "github" + } + }, + "dmerge_6": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "dmerge_7": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "data-merge", + "type": "github" + } + }, + "driver": { + "inputs": { + "devshell": "devshell_13", + "inclusive": "inclusive_7", + "nix": "nix_12", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_18" + }, + "locked": { + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "type": "github" + } + }, + "easy-purescript-nix": { + "flake": false, + "locked": { + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_10": { + "inputs": { + "flake-utils": "flake-utils_78" + }, + "locked": { + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_11": { + "inputs": { + "flake-utils": "flake-utils_80" + }, + "locked": { + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_12": { + "inputs": { + "flake-utils": "flake-utils_82" + }, + "locked": { + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_13": { + "inputs": { + "flake-utils": "flake-utils_86" + }, + "locked": { + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_14": { + "inputs": { + "flake-utils": "flake-utils_92" + }, + "locked": { + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_15": { + "inputs": { + "flake-utils": "flake-utils_94" + }, + "locked": { + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_16": { + "inputs": { + "flake-utils": "flake-utils_98" + }, + "locked": { + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_2": { + "inputs": { + "flake-utils": "flake-utils_48" + }, + "locked": { + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_3": { + "inputs": { + "flake-utils": "flake-utils_50" + }, + "locked": { + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_4": { + "inputs": { + "flake-utils": "flake-utils_52" + }, + "locked": { + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_5": { + "inputs": { + "flake-utils": "flake-utils_54" + }, + "locked": { + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_6": { + "inputs": { + "flake-utils": "flake-utils_58" + }, + "locked": { + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_7": { + "inputs": { + "flake-utils": "flake-utils_64" + }, + "locked": { + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_8": { + "inputs": { + "flake-utils": "flake-utils_66" + }, + "locked": { + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "easy-purescript-nix_9": { + "inputs": { + "flake-utils": "flake-utils_70" + }, + "locked": { + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "type": "github" + }, + "original": { + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" + } + }, + "em": { + "flake": false, + "locked": { + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "type": "github" + }, + "original": { + "owner": "deepfire", + "repo": "em", + "type": "github" + } + }, + "em_2": { + "flake": false, + "locked": { + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "type": "github" + }, + "original": { + "owner": "deepfire", + "repo": "em", + "type": "github" + } + }, + "em_3": { + "flake": false, + "locked": { + "lastModified": 1685015066, + "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", + "owner": "deepfire", + "repo": "em", + "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", + "type": "github" + }, + "original": { + "owner": "deepfire", + "repo": "em", + "type": "github" + } + }, + "ema": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_82", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "ema", + "type": "github" + } + }, + "ema_2": { + "flake": false, + "locked": { + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "type": "github" + }, + "original": { + "owner": "srid", + "ref": "multisite", + "repo": "ema", + "type": "github" + } + }, + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts_6", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_85", + "tailwind-haskell": "tailwind-haskell" + }, + "locked": { + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "emanote", + "type": "github" + } + }, + "empty-flake": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "empty-flake_2": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "empty-flake_3": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "empty-flake_4": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "fenix": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "auth-keys-hub", + "statix", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1645251813, + "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", + "owner": "nix-community", + "repo": "fenix", + "rev": "9892337b588c38ec59466a1c89befce464aae7f8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_29", + "rust-analyzer-src": "rust-analyzer-src_2" + }, + "locked": { + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_41", + "rust-analyzer-src": "rust-analyzer-src_3" + }, + "locked": { + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" + }, + "locked": { + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_54", + "rust-analyzer-src": "rust-analyzer-src_5" + }, + "locked": { + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_6": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_6" + }, + "locked": { + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_7": { + "inputs": { + "nixpkgs": "nixpkgs_70", + "rust-analyzer-src": "rust-analyzer-src_7" + }, + "locked": { + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "fenix_8": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_8" + }, + "locked": { + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_10": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_11": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_12": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_13": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_14": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_15": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_16": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_17": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_18": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_19": { + "flake": false, + "locked": { + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_20": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_21": { + "flake": false, + "locked": { + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_22": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_23": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_24": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_25": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_26": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_27": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_28": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_29": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_30": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_31": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_32": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_33": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_34": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_35": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_36": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_37": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_38": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_39": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_40": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_41": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_42": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_43": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_44": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_45": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_46": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_47": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_48": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_49": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_50": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_51": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_52": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_53": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_54": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_55": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_56": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_6": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_7": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_8": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_9": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1672152762, + "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1682984683, + "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "86684881e184f41aa322e653880e497b66429f3e", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_3" + }, + "locked": { + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_4" + }, + "locked": { + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_5" + }, + "locked": { + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs": "nixpkgs_84" + }, + "locked": { + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "ctl", + "hercules-ci-effects", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-root": { + "locked": { + "lastModified": 1713493429, + "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", + "owner": "srid", + "repo": "flake-root", + "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "flake-root", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_10": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_100": { + "inputs": { + "systems": "systems_58" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_101": { + "inputs": { + "systems": "systems_59" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_102": { + "inputs": { + "systems": "systems_60" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_103": { + "inputs": { + "systems": "systems_61" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_104": { + "inputs": { + "systems": "systems_62" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_105": { + "inputs": { + "systems": "systems_63" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_106": { + "inputs": { + "systems": "systems_64" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_107": { + "inputs": { + "systems": "systems_65" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_11": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_12": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_13": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_14": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_15": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_16": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_17": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_18": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_19": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_20": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_21": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_22": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_23": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_24": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_25": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_26": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_27": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_28": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_29": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_30": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_31": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_32": { + "locked": { + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_33": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_34": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_35": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_36": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_37": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_38": { + "locked": { + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_39": { + "locked": { + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "type": "github" + }, + "original": { + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_40": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_41": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_42": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_43": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_44": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_45": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_46": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_47": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_48": { + "inputs": { + "systems": "systems_6" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_49": { + "inputs": { + "systems": "systems_7" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_50": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_51": { + "inputs": { + "systems": "systems_9" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_52": { + "inputs": { + "systems": "systems_10" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_53": { + "inputs": { + "systems": "systems_11" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_54": { + "inputs": { + "systems": "systems_12" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_55": { + "inputs": { + "systems": "systems_13" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_56": { + "inputs": { + "systems": "systems_14" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_57": { + "inputs": { + "systems": "systems_15" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_58": { + "inputs": { + "systems": "systems_16" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_59": { + "inputs": { + "systems": "systems_17" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_60": { + "inputs": { + "systems": "systems_18" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_61": { + "inputs": { + "systems": "systems_19" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_62": { + "inputs": { + "systems": "systems_20" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_63": { + "inputs": { + "systems": "systems_21" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_64": { + "inputs": { + "systems": "systems_22" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_65": { + "inputs": { + "systems": "systems_23" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_66": { + "inputs": { + "systems": "systems_24" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_67": { + "inputs": { + "systems": "systems_25" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_68": { + "inputs": { + "systems": "systems_26" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_69": { + "inputs": { + "systems": "systems_27" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_70": { + "inputs": { + "systems": "systems_28" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_71": { + "inputs": { + "systems": "systems_29" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_72": { + "inputs": { + "systems": "systems_30" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_73": { + "inputs": { + "systems": "systems_31" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_74": { + "inputs": { + "systems": "systems_32" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_75": { + "inputs": { + "systems": "systems_33" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_76": { + "inputs": { + "systems": "systems_34" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_77": { + "inputs": { + "systems": "systems_35" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_78": { + "inputs": { + "systems": "systems_36" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_79": { + "inputs": { + "systems": "systems_37" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_8": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_80": { + "inputs": { + "systems": "systems_38" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_81": { + "inputs": { + "systems": "systems_39" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_82": { + "inputs": { + "systems": "systems_40" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_83": { + "inputs": { + "systems": "systems_41" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_84": { + "inputs": { + "systems": "systems_42" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_85": { + "inputs": { + "systems": "systems_43" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_86": { + "inputs": { + "systems": "systems_44" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_87": { + "inputs": { + "systems": "systems_45" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_88": { + "inputs": { + "systems": "systems_46" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_89": { + "inputs": { + "systems": "systems_47" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_90": { + "inputs": { + "systems": "systems_48" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_91": { + "inputs": { + "systems": "systems_49" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_92": { + "inputs": { + "systems": "systems_50" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_93": { + "inputs": { + "systems": "systems_51" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_94": { + "inputs": { + "systems": "systems_52" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_95": { + "inputs": { + "systems": "systems_53" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_96": { + "inputs": { + "systems": "systems_54" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_97": { + "inputs": { + "systems": "systems_55" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_98": { + "inputs": { + "systems": "systems_56" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_99": { + "inputs": { + "systems": "systems_57" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flakeCompat": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "follower": { + "inputs": { + "devshell": "devshell_14", + "inclusive": "inclusive_8", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_19" + }, + "locked": { + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "ghc-8.6.5-iohk": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_10": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_11": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_12": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_13": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_14": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_15": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_16": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_17": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_18": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_19": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_2": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_20": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_21": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_22": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_23": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_24": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_25": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_4": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_5": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_6": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_7": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_8": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_9": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc910X": { + "flake": false, + "locked": { + "lastModified": 1714520650, + "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", + "ref": "ghc-9.10", + "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", + "revCount": 62663, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_2": { + "flake": false, + "locked": { + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "ref": "ghc-9.10", + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_3": { + "flake": false, + "locked": { + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "ref": "ghc-9.10", + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_4": { + "flake": false, + "locked": { + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_5": { + "flake": false, + "locked": { + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_6": { + "flake": false, + "locked": { + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "ref": "ghc-9.10", + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_7": { + "flake": false, + "locked": { + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_8": { + "flake": false, + "locked": { + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911": { + "flake": false, + "locked": { + "lastModified": 1714817013, + "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", + "ref": "refs/heads/master", + "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", + "revCount": 62816, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_2": { + "flake": false, + "locked": { + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "ref": "refs/heads/master", + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_3": { + "flake": false, + "locked": { + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "ref": "refs/heads/master", + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_4": { + "flake": false, + "locked": { + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_5": { + "flake": false, + "locked": { + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_6": { + "flake": false, + "locked": { + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "ref": "refs/heads/master", + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_7": { + "flake": false, + "locked": { + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_8": { + "flake": false, + "locked": { + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_10": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_2": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_3": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_4": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_5": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_6": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_7": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_8": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_9": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_10": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_2": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_3": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_4": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_5": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_6": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_7": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_8": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_9": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_10": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_11": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_12": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_13": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_14": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_15": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_16": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_6": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_7": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_8": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_9": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_17", + "utils": "utils_2" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_21", + "utils": "utils_4" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_30", + "utils": "utils_6" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "hackage": { + "flake": false, + "locked": { + "lastModified": 1692145451, + "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage-nix": { + "flake": false, + "locked": { + "lastModified": 1719535035, + "narHash": "sha256-kCCfZytGgkRYlsiNe/dwLAnpNOvfywpjVl61hO/8l2M=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "66f23365685f71610460f3c2c0dfa91f96c532ac", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix": { + "flake": false, + "locked": { + "lastModified": 1702945378, + "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_2": { + "flake": false, + "locked": { + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_3": { + "flake": false, + "locked": { + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_4": { + "flake": false, + "locked": { + "lastModified": 1718757495, + "narHash": "sha256-xviuxucDjsQ2HbqzfwVyB4ZmDIyzOnf2oDbVtwBHIco=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "0bb764772a383a926e3f945397a0e59ab3c64d6d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_10": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_11": { + "flake": false, + "locked": { + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_12": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_13": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_14": { + "flake": false, + "locked": { + "lastModified": 1714610224, + "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_15": { + "flake": false, + "locked": { + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_16": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_17": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_18": { + "flake": false, + "locked": { + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_19": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_2": { + "flake": false, + "locked": { + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_20": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_3": { + "flake": false, + "locked": { + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_4": { + "flake": false, + "locked": { + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_5": { + "flake": false, + "locked": { + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_6": { + "flake": false, + "locked": { + "lastModified": 1714955666, + "narHash": "sha256-2FHDnM7dK2FH7xGQmcoHbMMP1PGHgKkBmfXC5/LLNVc=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "69a0fce63963cf4299cb24c2a0d2ee0428d227dd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_7": { + "flake": false, + "locked": { + "lastModified": 1714610224, + "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_8": { + "flake": false, + "locked": { + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_9": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "empty-flake" + ] + }, + "locked": { + "lastModified": 1692147008, + "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_10": { + "inputs": { + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cabal-36": "cabal-36_16", + "cardano-shell": "cardano-shell_16", + "flake-compat": "flake-compat_34", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "ghc910X": "ghc910X_5", + "ghc911": "ghc911_5", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_12", + "hls-2.0": "hls-2.0_11", + "hls-2.2": "hls-2.2_10", + "hls-2.3": "hls-2.3_10", + "hls-2.4": "hls-2.4_10", + "hls-2.5": "hls-2.5_6", + "hls-2.6": "hls-2.6_6", + "hls-2.7": "hls-2.7_6", + "hpc-coveralls": "hpc-coveralls_16", + "hydra": "hydra_18", + "iserv-proxy": "iserv-proxy_12", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-2205": "nixpkgs-2205_13", + "nixpkgs-2211": "nixpkgs-2211_12", + "nixpkgs-2305": "nixpkgs-2305_11", + "nixpkgs-2311": "nixpkgs-2311_8", + "nixpkgs-unstable": "nixpkgs-unstable_19", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_15" + }, + "locked": { + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_11": { + "inputs": { + "HTTP": "HTTP_17", + "cabal-32": "cabal-32_17", + "cabal-34": "cabal-34_17", + "cabal-36": "cabal-36_17", + "cardano-shell": "cardano-shell_17", + "flake-compat": "flake-compat_35", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", + "ghc98X": "ghc98X_5", + "ghc99": "ghc99_5", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_13", + "hls-2.0": "hls-2.0_12", + "hls-2.2": "hls-2.2_11", + "hls-2.3": "hls-2.3_11", + "hls-2.4": "hls-2.4_11", + "hpc-coveralls": "hpc-coveralls_17", + "hydra": "hydra_19", + "iserv-proxy": "iserv-proxy_13", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_17", + "nixpkgs-2105": "nixpkgs-2105_17", + "nixpkgs-2111": "nixpkgs-2111_17", + "nixpkgs-2205": "nixpkgs-2205_14", + "nixpkgs-2211": "nixpkgs-2211_13", + "nixpkgs-2305": "nixpkgs-2305_12", + "nixpkgs-2311": "nixpkgs-2311_9", + "nixpkgs-unstable": "nixpkgs-unstable_20", + "old-ghc-nix": "old-ghc-nix_17", + "stackage": "stackage_16" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_12": { + "inputs": { + "HTTP": "HTTP_18", + "cabal-32": "cabal-32_18", + "cabal-34": "cabal-34_18", + "cabal-36": "cabal-36_18", + "cardano-shell": "cardano-shell_18", + "flake-compat": "flake-compat_37", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", + "ghc98X": "ghc98X_6", + "ghc99": "ghc99_6", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_14", + "hls-2.0": "hls-2.0_13", + "hls-2.2": "hls-2.2_12", + "hls-2.3": "hls-2.3_12", + "hls-2.4": "hls-2.4_12", + "hpc-coveralls": "hpc-coveralls_18", + "hydra": "hydra_20", + "iserv-proxy": "iserv-proxy_14", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_18", + "nixpkgs-2105": "nixpkgs-2105_18", + "nixpkgs-2111": "nixpkgs-2111_18", + "nixpkgs-2205": "nixpkgs-2205_15", + "nixpkgs-2211": "nixpkgs-2211_14", + "nixpkgs-2305": "nixpkgs-2305_13", + "nixpkgs-2311": "nixpkgs-2311_10", + "nixpkgs-unstable": "nixpkgs-unstable_21", + "old-ghc-nix": "old-ghc-nix_18", + "stackage": "stackage_17" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_13": { + "inputs": { + "HTTP": "HTTP_19", + "cabal-32": "cabal-32_19", + "cabal-34": "cabal-34_19", + "cabal-36": "cabal-36_19", + "cardano-shell": "cardano-shell_19", + "flake-compat": "flake-compat_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", + "ghc910X": "ghc910X_6", + "ghc911": "ghc911_6", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_15", + "hls-2.0": "hls-2.0_14", + "hls-2.2": "hls-2.2_13", + "hls-2.3": "hls-2.3_13", + "hls-2.4": "hls-2.4_13", + "hls-2.5": "hls-2.5_7", + "hls-2.6": "hls-2.6_7", + "hls-2.7": "hls-2.7_7", + "hpc-coveralls": "hpc-coveralls_19", + "hydra": "hydra_21", + "iserv-proxy": "iserv-proxy_15", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_19", + "nixpkgs-2105": "nixpkgs-2105_19", + "nixpkgs-2111": "nixpkgs-2111_19", + "nixpkgs-2205": "nixpkgs-2205_16", + "nixpkgs-2211": "nixpkgs-2211_15", + "nixpkgs-2305": "nixpkgs-2305_14", + "nixpkgs-2311": "nixpkgs-2311_11", + "nixpkgs-unstable": "nixpkgs-unstable_22", + "old-ghc-nix": "old-ghc-nix_19", + "stackage": "stackage_18" + }, + "locked": { + "lastModified": 1714611016, + "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_14": { + "inputs": { + "HTTP": "HTTP_20", + "cabal-32": "cabal-32_20", + "cabal-34": "cabal-34_20", + "cabal-36": "cabal-36_20", + "cardano-shell": "cardano-shell_20", + "flake-compat": "flake-compat_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", + "ghc910X": "ghc910X_7", + "ghc911": "ghc911_7", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_16", + "hls-2.0": "hls-2.0_15", + "hls-2.2": "hls-2.2_14", + "hls-2.3": "hls-2.3_14", + "hls-2.4": "hls-2.4_14", + "hls-2.5": "hls-2.5_8", + "hls-2.6": "hls-2.6_8", + "hls-2.7": "hls-2.7_8", + "hpc-coveralls": "hpc-coveralls_20", + "hydra": "hydra_22", + "iserv-proxy": "iserv-proxy_16", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_20", + "nixpkgs-2105": "nixpkgs-2105_20", + "nixpkgs-2111": "nixpkgs-2111_20", + "nixpkgs-2205": "nixpkgs-2205_17", + "nixpkgs-2211": "nixpkgs-2211_16", + "nixpkgs-2305": "nixpkgs-2305_15", + "nixpkgs-2311": "nixpkgs-2311_12", + "nixpkgs-unstable": "nixpkgs-unstable_23", + "old-ghc-nix": "old-ghc-nix_20", + "stackage": "stackage_19" + }, + "locked": { + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_15": { + "inputs": { + "HTTP": "HTTP_21", + "cabal-32": "cabal-32_21", + "cabal-34": "cabal-34_21", + "cabal-36": "cabal-36_21", + "cardano-shell": "cardano-shell_21", + "flake-compat": "flake-compat_43", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", + "ghc98X": "ghc98X_7", + "ghc99": "ghc99_7", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_17", + "hls-2.0": "hls-2.0_16", + "hls-2.2": "hls-2.2_15", + "hls-2.3": "hls-2.3_15", + "hls-2.4": "hls-2.4_15", + "hpc-coveralls": "hpc-coveralls_21", + "hydra": "hydra_23", + "iserv-proxy": "iserv-proxy_17", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_21", + "nixpkgs-2105": "nixpkgs-2105_21", + "nixpkgs-2111": "nixpkgs-2111_21", + "nixpkgs-2205": "nixpkgs-2205_18", + "nixpkgs-2211": "nixpkgs-2211_17", + "nixpkgs-2305": "nixpkgs-2305_16", + "nixpkgs-2311": "nixpkgs-2311_13", + "nixpkgs-unstable": "nixpkgs-unstable_24", + "old-ghc-nix": "old-ghc-nix_21", + "stackage": "stackage_20" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_16": { + "inputs": { + "HTTP": "HTTP_22", + "cabal-32": "cabal-32_22", + "cabal-34": "cabal-34_22", + "cabal-36": "cabal-36_22", + "cardano-shell": "cardano-shell_22", + "flake-compat": "flake-compat_45", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", + "ghc98X": "ghc98X_8", + "ghc99": "ghc99_8", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_18", + "hls-2.0": "hls-2.0_17", + "hls-2.2": "hls-2.2_16", + "hls-2.3": "hls-2.3_16", + "hls-2.4": "hls-2.4_16", + "hpc-coveralls": "hpc-coveralls_22", + "hydra": "hydra_24", + "iserv-proxy": "iserv-proxy_18", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_22", + "nixpkgs-2105": "nixpkgs-2105_22", + "nixpkgs-2111": "nixpkgs-2111_22", + "nixpkgs-2205": "nixpkgs-2205_19", + "nixpkgs-2211": "nixpkgs-2211_18", + "nixpkgs-2305": "nixpkgs-2305_17", + "nixpkgs-2311": "nixpkgs-2311_14", + "nixpkgs-unstable": "nixpkgs-unstable_25", + "old-ghc-nix": "old-ghc-nix_22", + "stackage": "stackage_21" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_17": { + "inputs": { + "HTTP": "HTTP_23", + "cabal-32": "cabal-32_23", + "cabal-34": "cabal-34_23", + "cabal-36": "cabal-36_23", + "cardano-shell": "cardano-shell_23", + "flake-compat": "flake-compat_48", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", + "ghc910X": "ghc910X_8", + "ghc911": "ghc911_8", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_19", + "hls-2.0": "hls-2.0_18", + "hls-2.2": "hls-2.2_17", + "hls-2.3": "hls-2.3_17", + "hls-2.4": "hls-2.4_17", + "hls-2.5": "hls-2.5_9", + "hls-2.6": "hls-2.6_9", + "hls-2.7": "hls-2.7_9", + "hpc-coveralls": "hpc-coveralls_23", + "hydra": "hydra_25", + "iserv-proxy": "iserv-proxy_19", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_23", + "nixpkgs-2105": "nixpkgs-2105_23", + "nixpkgs-2111": "nixpkgs-2111_23", + "nixpkgs-2205": "nixpkgs-2205_20", + "nixpkgs-2211": "nixpkgs-2211_19", + "nixpkgs-2305": "nixpkgs-2305_18", + "nixpkgs-2311": "nixpkgs-2311_15", + "nixpkgs-unstable": "nixpkgs-unstable_26", + "old-ghc-nix": "old-ghc-nix_23", + "stackage": "stackage_22" + }, + "locked": { + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_18": { + "inputs": { + "HTTP": "HTTP_24", + "cabal-32": "cabal-32_24", + "cabal-34": "cabal-34_24", + "cabal-36": "cabal-36_24", + "cardano-shell": "cardano-shell_24", + "flake-compat": "flake-compat_49", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", + "ghc98X": "ghc98X_9", + "ghc99": "ghc99_9", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_20", + "hls-2.0": "hls-2.0_19", + "hls-2.2": "hls-2.2_18", + "hls-2.3": "hls-2.3_18", + "hls-2.4": "hls-2.4_18", + "hpc-coveralls": "hpc-coveralls_24", + "hydra": "hydra_26", + "iserv-proxy": "iserv-proxy_20", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_24", + "nixpkgs-2105": "nixpkgs-2105_24", + "nixpkgs-2111": "nixpkgs-2111_24", + "nixpkgs-2205": "nixpkgs-2205_21", + "nixpkgs-2211": "nixpkgs-2211_20", + "nixpkgs-2305": "nixpkgs-2305_19", + "nixpkgs-2311": "nixpkgs-2311_16", + "nixpkgs-unstable": "nixpkgs-unstable_27", + "old-ghc-nix": "old-ghc-nix_24", + "stackage": "stackage_23" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_19": { + "inputs": { + "HTTP": "HTTP_25", + "cabal-32": "cabal-32_25", + "cabal-34": "cabal-34_25", + "cabal-36": "cabal-36_25", + "cardano-shell": "cardano-shell_25", + "flake-compat": "flake-compat_51", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", + "ghc98X": "ghc98X_10", + "ghc99": "ghc99_10", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_21", + "hls-2.0": "hls-2.0_20", + "hls-2.2": "hls-2.2_19", + "hls-2.3": "hls-2.3_19", + "hls-2.4": "hls-2.4_19", + "hpc-coveralls": "hpc-coveralls_25", + "hydra": "hydra_27", + "iserv-proxy": "iserv-proxy_21", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_25", + "nixpkgs-2105": "nixpkgs-2105_25", + "nixpkgs-2111": "nixpkgs-2111_25", + "nixpkgs-2205": "nixpkgs-2205_22", + "nixpkgs-2211": "nixpkgs-2211_21", + "nixpkgs-2305": "nixpkgs-2305_20", + "nixpkgs-2311": "nixpkgs-2311_17", + "nixpkgs-unstable": "nixpkgs-unstable_28", + "old-ghc-nix": "old-ghc-nix_25", + "stackage": "stackage_24" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_6", + "nix-tools": "nix-tools", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" + }, + "locked": { + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": [ + "ctl", + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_25", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "hackage": [ + "ctl", + "hackage-nix" + ], + "hls-1.10": "hls-1.10_6", + "hls-2.0": "hls-2.0_5", + "hls-2.2": "hls-2.2_4", + "hls-2.3": "hls-2.3_4", + "hls-2.4": "hls-2.4_4", + "hls-2.5": "hls-2.5_2", + "hls-2.6": "hls-2.6_2", + "hls-2.7": "hls-2.7_2", + "hls-2.8": "hls-2.8_2", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2305": "nixpkgs-2305_5", + "nixpkgs-2311": "nixpkgs-2311_2", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" + }, + "locked": { + "lastModified": 1719535822, + "narHash": "sha256-IteIKK4+GEZI2nHqCz0zRVgQ3aqs/WXKTOt2sbHJmGk=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "72bc84d0a4e8d0536505628040d96fd0a9e16c70", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_5": { + "inputs": { + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_11", + "flake-compat": "flake-compat_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "ghc910X": "ghc910X_2", + "ghc911": "ghc911_2", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_7", + "hls-2.0": "hls-2.0_6", + "hls-2.2": "hls-2.2_5", + "hls-2.3": "hls-2.3_5", + "hls-2.4": "hls-2.4_5", + "hls-2.5": "hls-2.5_3", + "hls-2.6": "hls-2.6_3", + "hls-2.7": "hls-2.7_3", + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_13", + "iserv-proxy": "iserv-proxy_7", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-2205": "nixpkgs-2205_8", + "nixpkgs-2211": "nixpkgs-2211_7", + "nixpkgs-2305": "nixpkgs-2305_6", + "nixpkgs-2311": "nixpkgs-2311_3", + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_10" + }, + "locked": { + "lastModified": 1714956613, + "narHash": "sha256-h2n+7SsDHFE9SfStJjHxludjmhV5iupstehh6EGLUGU=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "6a9b5d11bdd09bcf739c5e837fa4a776b4c48646", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_6": { + "inputs": { + "HTTP": "HTTP_12", + "cabal-32": "cabal-32_12", + "cabal-34": "cabal-34_12", + "cabal-36": "cabal-36_12", + "cardano-shell": "cardano-shell_12", + "flake-compat": "flake-compat_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "ghc910X": "ghc910X_3", + "ghc911": "ghc911_3", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_8", + "hls-2.0": "hls-2.0_7", + "hls-2.2": "hls-2.2_6", + "hls-2.3": "hls-2.3_6", + "hls-2.4": "hls-2.4_6", + "hls-2.5": "hls-2.5_4", + "hls-2.6": "hls-2.6_4", + "hls-2.7": "hls-2.7_4", + "hpc-coveralls": "hpc-coveralls_12", + "hydra": "hydra_14", + "iserv-proxy": "iserv-proxy_8", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_12", + "nixpkgs-2105": "nixpkgs-2105_12", + "nixpkgs-2111": "nixpkgs-2111_12", + "nixpkgs-2205": "nixpkgs-2205_9", + "nixpkgs-2211": "nixpkgs-2211_8", + "nixpkgs-2305": "nixpkgs-2305_7", + "nixpkgs-2311": "nixpkgs-2311_4", + "nixpkgs-unstable": "nixpkgs-unstable_15", + "old-ghc-nix": "old-ghc-nix_12", + "stackage": "stackage_11" + }, + "locked": { + "lastModified": 1714611016, + "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_7": { + "inputs": { + "HTTP": "HTTP_13", + "cabal-32": "cabal-32_13", + "cabal-34": "cabal-34_13", + "cabal-36": "cabal-36_13", + "cardano-shell": "cardano-shell_13", + "flake-compat": "flake-compat_28", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", + "ghc910X": "ghc910X_4", + "ghc911": "ghc911_4", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_9", + "hls-2.0": "hls-2.0_8", + "hls-2.2": "hls-2.2_7", + "hls-2.3": "hls-2.3_7", + "hls-2.4": "hls-2.4_7", + "hls-2.5": "hls-2.5_5", + "hls-2.6": "hls-2.6_5", + "hls-2.7": "hls-2.7_5", + "hpc-coveralls": "hpc-coveralls_13", + "hydra": "hydra_15", + "iserv-proxy": "iserv-proxy_9", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_13", + "nixpkgs-2105": "nixpkgs-2105_13", + "nixpkgs-2111": "nixpkgs-2111_13", + "nixpkgs-2205": "nixpkgs-2205_10", + "nixpkgs-2211": "nixpkgs-2211_9", + "nixpkgs-2305": "nixpkgs-2305_8", + "nixpkgs-2311": "nixpkgs-2311_5", + "nixpkgs-unstable": "nixpkgs-unstable_16", + "old-ghc-nix": "old-ghc-nix_13", + "stackage": "stackage_12" + }, + "locked": { + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_8": { + "inputs": { + "HTTP": "HTTP_14", + "cabal-32": "cabal-32_14", + "cabal-34": "cabal-34_14", + "cabal-36": "cabal-36_14", + "cardano-shell": "cardano-shell_14", + "flake-compat": "flake-compat_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", + "ghc98X": "ghc98X_3", + "ghc99": "ghc99_3", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_10", + "hls-2.0": "hls-2.0_9", + "hls-2.2": "hls-2.2_8", + "hls-2.3": "hls-2.3_8", + "hls-2.4": "hls-2.4_8", + "hpc-coveralls": "hpc-coveralls_14", + "hydra": "hydra_16", + "iserv-proxy": "iserv-proxy_10", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_14", + "nixpkgs-2105": "nixpkgs-2105_14", + "nixpkgs-2111": "nixpkgs-2111_14", + "nixpkgs-2205": "nixpkgs-2205_11", + "nixpkgs-2211": "nixpkgs-2211_10", + "nixpkgs-2305": "nixpkgs-2305_9", + "nixpkgs-2311": "nixpkgs-2311_6", + "nixpkgs-unstable": "nixpkgs-unstable_17", + "old-ghc-nix": "old-ghc-nix_14", + "stackage": "stackage_13" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_9": { + "inputs": { + "HTTP": "HTTP_15", + "cabal-32": "cabal-32_15", + "cabal-34": "cabal-34_15", + "cabal-36": "cabal-36_15", + "cardano-shell": "cardano-shell_15", + "flake-compat": "flake-compat_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", + "ghc98X": "ghc98X_4", + "ghc99": "ghc99_4", + "hackage": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_11", + "hls-2.0": "hls-2.0_10", + "hls-2.2": "hls-2.2_9", + "hls-2.3": "hls-2.3_9", + "hls-2.4": "hls-2.4_9", + "hpc-coveralls": "hpc-coveralls_15", + "hydra": "hydra_17", + "iserv-proxy": "iserv-proxy_11", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_15", + "nixpkgs-2105": "nixpkgs-2105_15", + "nixpkgs-2111": "nixpkgs-2111_15", + "nixpkgs-2205": "nixpkgs-2205_12", + "nixpkgs-2211": "nixpkgs-2211_11", + "nixpkgs-2305": "nixpkgs-2305_10", + "nixpkgs-2311": "nixpkgs-2311_7", + "nixpkgs-unstable": "nixpkgs-unstable_18", + "old-ghc-nix": "old-ghc-nix_15", + "stackage": "stackage_14" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-compat": "flake-compat_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "hackageNix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage" + }, + "locked": { + "lastModified": 1701053834, + "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "hackageNix" + ], + "hls-1.10": "hls-1.10_3", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "iserv-proxy": "iserv-proxy_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_2" + }, + "locked": { + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-compat": "flake-compat_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", + "hackage": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "hackageNix" + ], + "hls-1.10": "hls-1.10_4", + "hls-2.0": "hls-2.0_3", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_4", + "iserv-proxy": "iserv-proxy_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2211": "nixpkgs-2211_4", + "nixpkgs-2305": "nixpkgs-2305_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-compat": "flake-compat_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "ghc910X": "ghc910X", + "ghc911": "ghc911", + "hackage": [ + "ctl", + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10_5", + "hls-2.0": "hls-2.0_4", + "hls-2.2": "hls-2.2_3", + "hls-2.3": "hls-2.3_3", + "hls-2.4": "hls-2.4_3", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", + "hls-2.7": "hls-2.7", + "hls-2.8": "hls-2.8", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_5", + "iserv-proxy": "iserv-proxy_5", + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2211": "nixpkgs-2211_5", + "nixpkgs-2305": "nixpkgs-2305_4", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_4" + }, + "locked": { + "lastModified": 1718797200, + "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cb139fa956158397aa398186bb32dd26f7318784", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" + }, + "locked": { + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_47", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" + }, + "locked": { + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_27" + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "haumea_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-node", + "std", + "lib" + ] + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "ctl", + "cardano-nix", + "flake-parts" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1714676393, + "narHash": "sha256-OA2LZPTCHyH0PcsNkjeTLvgsn4JmsV2VTvXQacHeUZU=", + "owner": "mlabs-haskell", + "repo": "hercules-ci-effects", + "rev": "5ad8f9613b735cb4f8222f07ae45ca37bfe76a23", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "ref": "push-cache-effect", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hercules-ci-effects_2": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_98" + }, + "locked": { + "lastModified": 1719226092, + "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hls-1.10": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_10": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_11": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_12": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_13": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_14": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_15": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_16": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_17": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_18": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_19": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_2": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_20": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_21": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_3": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_4": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_5": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_6": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_7": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_8": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_9": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_10": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_11": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_12": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_13": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_14": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_15": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_16": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_17": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_18": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_19": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_2": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_20": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_3": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_4": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_5": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_6": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_7": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_8": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_9": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_10": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_11": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_12": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_13": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_14": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_15": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_16": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_17": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_18": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_19": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_3": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_4": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_5": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_6": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_7": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_8": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_9": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_10": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_11": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_12": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_13": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_14": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_15": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_16": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_17": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_18": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_19": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_2": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_4": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_5": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_6": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_7": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_8": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_9": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_10": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_11": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_12": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_13": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_14": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_15": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_16": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_17": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_18": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_19": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_2": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_3": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_4": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_5": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_6": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_7": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_8": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_9": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_2": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_3": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_4": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_5": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_6": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_7": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_8": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_9": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_2": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_3": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_4": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_5": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_6": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_7": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_8": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_9": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_2": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_3": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_4": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_5": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_6": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_7": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_8": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_9": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.8": { + "flake": false, + "locked": { + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.8_2": { + "flake": false, + "locked": { + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_10": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_11": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_12": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_13": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_14": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_15": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_16": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_17": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_18": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_19": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_2": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_20": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_21": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_22": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_23": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_24": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_25": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_3": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_4": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_5": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_6": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_7": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_8": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_9": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hydra": { + "inputs": { + "nix": "nix", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_10": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_11": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_12": { + "inputs": { + "nix": "nix_20", + "nixpkgs": [ + "ctl", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_13": { + "inputs": { + "nix": "nix_21", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_14": { + "inputs": { + "nix": "nix_22", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_15": { + "inputs": { + "nix": "nix_23", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_16": { + "inputs": { + "nix": "nix_24", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_17": { + "inputs": { + "nix": "nix_25", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_18": { + "inputs": { + "nix": "nix_26", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_19": { + "inputs": { + "nix": "nix_27", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_2": { + "inputs": { + "nix": "nix_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_20": { + "inputs": { + "nix": "nix_28", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_21": { + "inputs": { + "nix": "nix_29", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_22": { + "inputs": { + "nix": "nix_30", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_23": { + "inputs": { + "nix": "nix_31", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_24": { + "inputs": { + "nix": "nix_32", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_25": { + "inputs": { + "nix": "nix_33", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_26": { + "inputs": { + "nix": "nix_34", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_27": { + "inputs": { + "nix": "nix_35", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_3": { + "inputs": { + "nix": "nix_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_4": { + "inputs": { + "nix": "nix_5", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_5": { + "inputs": { + "nix": "nix_6", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_6": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_7": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_8": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "incl": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_2": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_3": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_4": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "std", + "lib" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_11": { + "inputs": { + "stdlib": "stdlib_11" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_12": { + "inputs": { + "stdlib": "stdlib_12" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_2": { + "inputs": { + "stdlib": "stdlib_2" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_3": { + "inputs": { + "stdlib": "stdlib_3" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_4": { + "inputs": { + "stdlib": "stdlib_4" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_5": { + "inputs": { + "stdlib": "stdlib_5" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_6": { + "inputs": { + "stdlib": "stdlib_6" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_7": { + "inputs": { + "stdlib": "stdlib_7" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_9": { + "inputs": { + "stdlib": "stdlib_9" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inputs-check": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_6" + }, + "locked": { + "lastModified": 1692633913, + "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", + "owner": "input-output-hk", + "repo": "inputs-check", + "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "inputs-check", + "type": "github" + } + }, + "iogo": { + "inputs": { + "devshell": "devshell_8", + "inclusive": "inclusive_4", + "nixpkgs": "nixpkgs_50", + "utils": "utils_13" + }, + "locked": { + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogo_2": { + "inputs": { + "devshell": "devshell_18", + "inclusive": "inclusive_12", + "nixpkgs": "nixpkgs_79", + "utils": "utils_27" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogx": { + "inputs": { + "CHaP": [ + "ctl", + "kupo-nixos", + "CHaP" + ], + "easy-purescript-nix": "easy-purescript-nix_2", + "flake-utils": "flake-utils_49", + "hackage": "hackage_6", + "haskell-nix": "haskell-nix_5", + "iogx-template-haskell": "iogx-template-haskell", + "iogx-template-vanilla": "iogx-template-vanilla_4", + "iohk-nix": "iohk-nix_18", + "nix2container": "nix2container_22", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_30", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_16", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_15" + }, + "locked": { + "lastModified": 1714993151, + "narHash": "sha256-qnhgqo24celzlf+KjZ+oqypsCezgVZRueHbfiq73bDE=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "819ae1510a5ebdeb999c723033a2a641aa9bfd23", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell": { + "inputs": { + "iogx": "iogx_2" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1714715538, + "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_2": { + "inputs": { + "iogx": "iogx_3" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_3": { + "inputs": { + "iogx": "iogx_4" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_4": { + "inputs": { + "iogx": "iogx_7" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_5": { + "inputs": { + "iogx": "iogx_10" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_6": { + "inputs": { + "iogx": "iogx_11" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_7": { + "inputs": { + "iogx": "iogx_14" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla": { + "inputs": { + "iogx": "iogx_5" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_2": { + "inputs": { + "iogx": "iogx_6" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_3": { + "inputs": { + "iogx": "iogx_8" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_4": { + "inputs": { + "iogx": "iogx_9" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1714715538, + "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_5": { + "inputs": { + "iogx": "iogx_12" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_6": { + "inputs": { + "iogx": "iogx_13" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_7": { + "inputs": { + "iogx": "iogx_15" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_10": { + "inputs": { + "CHaP": "CHaP_14", + "easy-purescript-nix": "easy-purescript-nix_11", + "flake-utils": "flake-utils_81", + "hackage": "hackage_15", + "haskell-nix": "haskell-nix_14", + "iogx-template-haskell": "iogx-template-haskell_6", + "iogx-template-vanilla": "iogx-template-vanilla_5", + "iohk-nix": "iohk-nix_13", + "nix2container": "nix2container_17", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_20", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_11", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_10" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_11": { + "inputs": { + "CHaP": "CHaP_15", + "easy-purescript-nix": "easy-purescript-nix_12", + "flake-utils": "flake-utils_83", + "hackage": "hackage_16", + "haskell-nix": "haskell-nix_15", + "iohk-nix": "iohk-nix_11", + "nix2container": "nix2container_15", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_16", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_9", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_8" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_12": { + "inputs": { + "CHaP": "CHaP_16", + "easy-purescript-nix": "easy-purescript-nix_13", + "flake-utils": "flake-utils_87", + "hackage": "hackage_17", + "haskell-nix": "haskell-nix_16", + "iohk-nix": "iohk-nix_12", + "nix2container": "nix2container_16", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_18", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_10", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_9" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_13": { + "inputs": { + "CHaP": "CHaP_17", + "easy-purescript-nix": "easy-purescript-nix_14", + "flake-utils": "flake-utils_93", + "hackage": "hackage_18", + "haskell-nix": "haskell-nix_17", + "iogx-template-haskell": "iogx-template-haskell_7", + "iogx-template-vanilla": "iogx-template-vanilla_7", + "iohk-nix": "iohk-nix_16", + "nix2container": "nix2container_20", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_26", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_14", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_13" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_14": { + "inputs": { + "CHaP": "CHaP_18", + "easy-purescript-nix": "easy-purescript-nix_15", + "flake-utils": "flake-utils_95", + "hackage": "hackage_19", + "haskell-nix": "haskell-nix_18", + "iohk-nix": "iohk-nix_14", + "nix2container": "nix2container_18", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_22", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_12", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_11" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_15": { + "inputs": { + "CHaP": "CHaP_19", + "easy-purescript-nix": "easy-purescript-nix_16", + "flake-utils": "flake-utils_99", + "hackage": "hackage_20", + "haskell-nix": "haskell-nix_19", + "iohk-nix": "iohk-nix_15", + "nix2container": "nix2container_19", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_24", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_13", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_12" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_2": { + "inputs": { + "CHaP": "CHaP_6", + "easy-purescript-nix": "easy-purescript-nix_3", + "flake-utils": "flake-utils_51", + "hackage": "hackage_7", + "haskell-nix": "haskell-nix_6", + "iogx-template-haskell": "iogx-template-haskell_2", + "iogx-template-vanilla": "iogx-template-vanilla_2", + "iohk-nix": "iohk-nix_10", + "nix2container": "nix2container_14", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_14", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_8", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_7" + }, + "locked": { + "lastModified": 1714680367, + "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_3": { + "inputs": { + "CHaP": "CHaP_7", + "easy-purescript-nix": "easy-purescript-nix_4", + "flake-utils": "flake-utils_53", + "hackage": "hackage_8", + "haskell-nix": "haskell-nix_7", + "iogx-template-haskell": "iogx-template-haskell_3", + "iogx-template-vanilla": "iogx-template-vanilla", + "iohk-nix": "iohk-nix_6", + "nix2container": "nix2container_10", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_6", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_4", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_3" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_4": { + "inputs": { + "CHaP": "CHaP_8", + "easy-purescript-nix": "easy-purescript-nix_5", + "flake-utils": "flake-utils_55", + "hackage": "hackage_9", + "haskell-nix": "haskell-nix_8", + "iohk-nix": "iohk-nix_4", + "nix2container": "nix2container_8", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_2", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_2", + "sphinxcontrib-haddock": "sphinxcontrib-haddock" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_5": { + "inputs": { + "CHaP": "CHaP_9", + "easy-purescript-nix": "easy-purescript-nix_6", + "flake-utils": "flake-utils_59", + "hackage": "hackage_10", + "haskell-nix": "haskell-nix_9", + "iohk-nix": "iohk-nix_5", + "nix2container": "nix2container_9", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_4", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_3", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_2" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_6": { + "inputs": { + "CHaP": "CHaP_10", + "easy-purescript-nix": "easy-purescript-nix_7", + "flake-utils": "flake-utils_65", + "hackage": "hackage_11", + "haskell-nix": "haskell-nix_10", + "iogx-template-haskell": "iogx-template-haskell_4", + "iogx-template-vanilla": "iogx-template-vanilla_3", + "iohk-nix": "iohk-nix_9", + "nix2container": "nix2container_13", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_12", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_7", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_6" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_7": { + "inputs": { + "CHaP": "CHaP_11", + "easy-purescript-nix": "easy-purescript-nix_8", + "flake-utils": "flake-utils_67", + "hackage": "hackage_12", + "haskell-nix": "haskell-nix_11", + "iohk-nix": "iohk-nix_7", + "nix2container": "nix2container_11", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_8", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_5", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_4" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_8": { + "inputs": { + "CHaP": "CHaP_12", + "easy-purescript-nix": "easy-purescript-nix_9", + "flake-utils": "flake-utils_71", + "hackage": "hackage_13", + "haskell-nix": "haskell-nix_12", + "iohk-nix": "iohk-nix_8", + "nix2container": "nix2container_12", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_10", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_6", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_5" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_9": { + "inputs": { + "CHaP": "CHaP_13", + "easy-purescript-nix": "easy-purescript-nix_10", + "flake-utils": "flake-utils_79", + "hackage": "hackage_14", + "haskell-nix": "haskell-nix_13", + "iogx-template-haskell": "iogx-template-haskell_5", + "iogx-template-vanilla": "iogx-template-vanilla_6", + "iohk-nix": "iohk-nix_17", + "nix2container": "nix2container_21", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_28", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_15", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_14" + }, + "locked": { + "lastModified": 1714680367, + "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "blst": "blst", + "nixpkgs": "nixpkgs_7", + "secp256k1": "secp256k1", + "sodium": "sodium" + }, + "locked": { + "lastModified": 1691469905, + "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + } + }, + "iohk-nix-ng": { + "inputs": { + "blst": "blst_2", + "nixpkgs": "nixpkgs_8", + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" + }, + "locked": { + "lastModified": 1696471795, + "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_10": { + "inputs": { + "blst": "blst_14", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_14", + "sodium": "sodium_14" + }, + "locked": { + "lastModified": 1714467508, + "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "89387f07016fe416c16f7824715238b3d1a4390a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_11": { + "inputs": { + "blst": "blst_15", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_15", + "sodium": "sodium_15" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_12": { + "inputs": { + "blst": "blst_16", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_16", + "sodium": "sodium_16" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_13": { + "inputs": { + "blst": "blst_17", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_17", + "sodium": "sodium_17" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_14": { + "inputs": { + "blst": "blst_18", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_18", + "sodium": "sodium_18" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_15": { + "inputs": { + "blst": "blst_19", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_19", + "sodium": "sodium_19" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_16": { + "inputs": { + "blst": "blst_20", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_20", + "sodium": "sodium_20" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_17": { + "inputs": { + "blst": "blst_21", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_21", + "sodium": "sodium_21" + }, + "locked": { + "lastModified": 1714467508, + "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "89387f07016fe416c16f7824715238b3d1a4390a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_18": { + "inputs": { + "blst": "blst_22", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_22", + "sodium": "sodium_22" + }, + "locked": { + "lastModified": 1714467508, + "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "89387f07016fe416c16f7824715238b3d1a4390a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "blst": "blst_7", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" + }, + "locked": { + "lastModified": 1719443312, + "narHash": "sha256-JNDuUSmV/o5ck1CfnBtX8GJE/Pli4zYE73LZZ7u0E2Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b4025c38b609c6fb99762e2a6201e4e3488a39d3", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_4": { + "inputs": { + "blst": "blst_8", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_8", + "sodium": "sodium_8" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_5": { + "inputs": { + "blst": "blst_9", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_9", + "sodium": "sodium_9" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_6": { + "inputs": { + "blst": "blst_10", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_10", + "sodium": "sodium_10" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_7": { + "inputs": { + "blst": "blst_11", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_11", + "sodium": "sodium_11" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_8": { + "inputs": { + "blst": "blst_12", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_12", + "sodium": "sodium_12" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_9": { + "inputs": { + "blst": "blst_13", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_13", + "sodium": "sodium_13" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix": { + "inputs": { + "blst": "blst_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "secp256k1": "secp256k1_3", + "sodium": "sodium_3" + }, + "locked": { + "lastModified": 1698999258, + "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { + "blst": "blst_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "secp256k1": "secp256k1_4", + "sodium": "sodium_4" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_3": { + "inputs": { + "blst": "blst_5", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "secp256k1": "secp256k1_5", + "sodium": "sodium_5" + }, + "locked": { + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_4": { + "inputs": { + "blst": "blst_6", + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "secp256k1": "secp256k1_6", + "sodium": "sodium_6" + }, + "locked": { + "lastModified": 1719237167, + "narHash": "sha256-ifW5Jfwu/iwYs0r7f8AdiWDQK+Pr1gZLz+p5u8OtOgo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "577f4d5072945a88dda6f5cfe205e6b4829a0423", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "ref": "hkm/remote-iserv", + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_10": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_11": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_12": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_13": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_14": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_15": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_16": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_17": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_18": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_19": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_20": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_21": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_3": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_4": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_5": { + "flake": false, + "locked": { + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_6": { + "flake": false, + "locked": { + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_7": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_8": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_9": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "kupo": { + "flake": false, + "locked": { + "lastModified": 1718734761, + "narHash": "sha256-J5eys+/VjeYqfBlcS+XW+Gzafq0/qkbOfY6b05JmFYI=", + "owner": "klarkc", + "repo": "kupo", + "rev": "d95a324f6a94a963cd91cb5d5f88ef50640e7b8d", + "type": "github" + }, + "original": { + "owner": "klarkc", + "ref": "patch-1", + "repo": "kupo", + "type": "github" + } + }, + "kupo-nixos": { + "inputs": { + "CHaP": [ + "ctl", + "CHaP" + ], + "iogx": "iogx", + "kupo": "kupo" + }, + "locked": { + "lastModified": 1718735503, + "narHash": "sha256-Dwpl5BUeGGvhH7+RcF3as7e9rzUFeHRwVGxjfj0fMAM=", + "owner": "Fourierlabs", + "repo": "kupo-nixos", + "rev": "4ab9be5d524bf2c003874aa225f20d00cb6defcf", + "type": "github" + }, + "original": { + "owner": "Fourierlabs", + "ref": "add-conway", + "repo": "kupo-nixos", + "type": "github" + } + }, + "lib": { + "locked": { + "lastModified": 1694306727, + "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_10": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_11": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_12": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_13": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_14": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_15": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_16": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_17": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_18": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_19": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_20": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_21": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_22": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_23": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_24": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_25": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_26": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_27": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_28": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_29": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_30": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_31": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_32": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_33": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_34": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_35": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_4": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_7": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_8": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_3": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_2": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_4": { + "inputs": { + "flake-utils": "flake-utils_19", + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_5": { + "inputs": { + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_55" + }, + "locked": { + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_6": { + "inputs": { + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_90" + }, + "locked": { + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_5", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_15", + "inclusive": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_20" + }, + "locked": { + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "type": "github" + } + }, + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_13" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_8", + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_9", + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_14", + "flake-utils": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_3": { + "flake": false, + "locked": { + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_4": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_16" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_10": { + "inputs": { + "flake-utils": "flake-utils_62", + "nixpkgs": "nixpkgs_108" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_11": { + "inputs": { + "flake-utils": "flake-utils_68", + "nixpkgs": "nixpkgs_112" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_12": { + "inputs": { + "flake-utils": "flake-utils_72", + "nixpkgs": "nixpkgs_115" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_13": { + "inputs": { + "flake-utils": "flake-utils_74", + "nixpkgs": "nixpkgs_117" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_14": { + "inputs": { + "flake-utils": "flake-utils_76", + "nixpkgs": "nixpkgs_119" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_15": { + "inputs": { + "flake-utils": "flake-utils_84", + "nixpkgs": "nixpkgs_124" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_16": { + "inputs": { + "flake-utils": "flake-utils_88", + "nixpkgs": "nixpkgs_127" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_17": { + "inputs": { + "flake-utils": "flake-utils_90", + "nixpkgs": "nixpkgs_129" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_18": { + "inputs": { + "flake-utils": "flake-utils_96", + "nixpkgs": "nixpkgs_133" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_19": { + "inputs": { + "flake-utils": "flake-utils_100", + "nixpkgs": "nixpkgs_136" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_18" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_20": { + "inputs": { + "flake-utils": "flake-utils_102", + "nixpkgs": "nixpkgs_138" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_21": { + "inputs": { + "flake-utils": "flake-utils_104", + "nixpkgs": "nixpkgs_140" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_22": { + "inputs": { + "flake-utils": "flake-utils_106", + "nixpkgs": "nixpkgs_142" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_22" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_26" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_5": { + "inputs": { + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_31" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_6": { + "inputs": { + "flake-utils": "flake-utils_20", + "nixpkgs": "nixpkgs_35" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_7": { + "inputs": { + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_93" + }, + "locked": { + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "type": "github" + }, + "original": { + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_8": { + "inputs": { + "flake-utils": "flake-utils_56", + "nixpkgs": "nixpkgs_103" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_9": { + "inputs": { + "flake-utils": "flake-utils_60", + "nixpkgs": "nixpkgs_106" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_56", + "nixpkgs-regression": "nixpkgs-regression_9" + }, + "locked": { + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", + "type": "github" + } + }, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_58", + "nixpkgs-regression": "nixpkgs-regression_10" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_65", + "nixpkgs-regression": "nixpkgs-regression_11" + }, + "locked": { + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + } + }, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_66", + "nixpkgs-regression": "nixpkgs-regression_12" + }, + "locked": { + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + } + }, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_71", + "nixpkgs-regression": "nixpkgs-regression_13" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_73" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_75", + "nixpkgs-regression": "nixpkgs-regression_14" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_87", + "nixpkgs-regression": "nixpkgs-regression_15" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_89", + "nixpkgs-regression": "nixpkgs-regression_16" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_19": { + "inputs": { + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_96", + "nixpkgs-regression": "nixpkgs-regression_17" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_2": { + "inputs": { + "flake-compat": "flake-compat_3", + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_9", + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1693573010, + "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", + "owner": "nixos", + "repo": "nix", + "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.17-maintenance", + "repo": "nix", + "type": "github" + } + }, + "nix_20": { + "inputs": { + "lowdown-src": "lowdown-src_20", + "nixpkgs": "nixpkgs_97", + "nixpkgs-regression": "nixpkgs-regression_18" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_21": { + "inputs": { + "lowdown-src": "lowdown-src_21", + "nixpkgs": "nixpkgs_99", + "nixpkgs-regression": "nixpkgs-regression_19" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_22": { + "inputs": { + "lowdown-src": "lowdown-src_22", + "nixpkgs": "nixpkgs_100", + "nixpkgs-regression": "nixpkgs-regression_20" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_23": { + "inputs": { + "lowdown-src": "lowdown-src_23", + "nixpkgs": "nixpkgs_101", + "nixpkgs-regression": "nixpkgs-regression_21" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_24": { + "inputs": { + "lowdown-src": "lowdown-src_24", + "nixpkgs": "nixpkgs_102", + "nixpkgs-regression": "nixpkgs-regression_22" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_25": { + "inputs": { + "lowdown-src": "lowdown-src_25", + "nixpkgs": "nixpkgs_105", + "nixpkgs-regression": "nixpkgs-regression_23" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_26": { + "inputs": { + "lowdown-src": "lowdown-src_26", + "nixpkgs": "nixpkgs_110", + "nixpkgs-regression": "nixpkgs-regression_24" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_27": { + "inputs": { + "lowdown-src": "lowdown-src_27", + "nixpkgs": "nixpkgs_111", + "nixpkgs-regression": "nixpkgs-regression_25" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_28": { + "inputs": { + "lowdown-src": "lowdown-src_28", + "nixpkgs": "nixpkgs_114", + "nixpkgs-regression": "nixpkgs-regression_26" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_29": { + "inputs": { + "lowdown-src": "lowdown-src_29", + "nixpkgs": "nixpkgs_121", + "nixpkgs-regression": "nixpkgs-regression_27" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_13", + "nixpkgs-regression": "nixpkgs-regression_3" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_30": { + "inputs": { + "lowdown-src": "lowdown-src_30", + "nixpkgs": "nixpkgs_122", + "nixpkgs-regression": "nixpkgs-regression_28" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_31": { + "inputs": { + "lowdown-src": "lowdown-src_31", + "nixpkgs": "nixpkgs_123", + "nixpkgs-regression": "nixpkgs-regression_29" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_32": { + "inputs": { + "lowdown-src": "lowdown-src_32", + "nixpkgs": "nixpkgs_126", + "nixpkgs-regression": "nixpkgs-regression_30" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_33": { + "inputs": { + "lowdown-src": "lowdown-src_33", + "nixpkgs": "nixpkgs_131", + "nixpkgs-regression": "nixpkgs-regression_31" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_34": { + "inputs": { + "lowdown-src": "lowdown-src_34", + "nixpkgs": "nixpkgs_132", + "nixpkgs-regression": "nixpkgs-regression_32" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_35": { + "inputs": { + "lowdown-src": "lowdown-src_35", + "nixpkgs": "nixpkgs_135", + "nixpkgs-regression": "nixpkgs-regression_33" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_15", + "nixpkgs-regression": "nixpkgs-regression_4" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_25", + "nixpkgs-regression": "nixpkgs-regression_5" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_34", + "nixpkgs-regression": "nixpkgs-regression_6" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_42", + "nixpkgs-regression": "nixpkgs-regression_7" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_44" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_46", + "nixpkgs-regression": "nixpkgs-regression_8" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nixago": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago-exts": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago-exts_2": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago_2": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_3": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_4": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_5": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_6": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixlib": { + "locked": { + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_2": { + "locked": { + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_3": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_10": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_11": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_12": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_13": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_14": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_15": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_16": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_17": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_18": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_19": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_2": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_20": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_21": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_22": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_23": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_24": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_25": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_3": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_4": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_5": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_6": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_7": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_8": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_9": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_10": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_11": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_12": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_13": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_14": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_15": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_16": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_17": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_18": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_19": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_2": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_20": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_21": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_22": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_23": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_24": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_25": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_3": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_4": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_5": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_6": { + "locked": { + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_7": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_8": { + "locked": { + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_9": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_10": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_11": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_12": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_13": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_14": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_15": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_16": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_17": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_18": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_19": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_2": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_20": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_21": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_22": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_23": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_24": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_25": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_3": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_4": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_5": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_6": { + "locked": { + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_7": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_8": { + "locked": { + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_9": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_10": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_11": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_12": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_13": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_14": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_15": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_16": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_17": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_18": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_19": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_2": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_20": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_21": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_22": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_3": { + "locked": { + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_4": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_5": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_6": { + "locked": { + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_7": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_8": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_9": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_10": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_11": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_12": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_13": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_14": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_15": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_16": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_17": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_18": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_19": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_2": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_20": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_21": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_3": { + "locked": { + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_4": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_5": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_6": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_7": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_8": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_9": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_10": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_11": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_12": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_13": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_14": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_15": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_16": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_17": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_18": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_19": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_2": { + "locked": { + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_20": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_3": { + "locked": { + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_4": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_5": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_6": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_7": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_8": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_9": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_10": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_11": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_12": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_13": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_14": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_15": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_16": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_17": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_2": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_3": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_4": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_5": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_6": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_7": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_8": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_9": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-docker": { + "locked": { + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1671359686, + "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_3": { + "locked": { + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_4": { + "locked": { + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_5": { + "locked": { + "lastModified": 1714640452, + "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_10": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_11": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_12": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_13": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_14": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_15": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_16": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_17": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_18": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_19": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_2": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_20": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_21": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_22": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_23": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_24": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_25": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_26": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_27": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_28": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_29": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_3": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_30": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_31": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_32": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_33": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_4": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_5": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_6": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_7": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_8": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_9": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1690066826, + "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_10": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_11": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_12": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_13": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_14": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_15": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_16": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_17": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_18": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_19": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_20": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_21": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_22": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_23": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_24": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_25": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_26": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_27": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_28": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_29": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_3": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_30": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_31": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_4": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_5": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_6": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_7": { + "locked": { + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_8": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_9": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_10": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_11": { + "locked": { + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_12": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_13": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_14": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_15": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_16": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_17": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_18": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_19": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_2": { + "locked": { + "lastModified": 1696577711, + "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_20": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_21": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_22": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_23": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_24": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_25": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_26": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_27": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_28": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_3": { + "locked": { + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_4": { + "locked": { + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_5": { + "locked": { + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_6": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" + } + }, + "nixpkgs-unstable_7": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_8": { + "locked": { + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable_9": { + "locked": { + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1690026219, + "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_100": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_101": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_102": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_103": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_104": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_105": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_106": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_107": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_108": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_109": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { + "locked": { + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_110": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_111": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_112": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_113": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_114": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_115": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_116": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_117": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_118": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_119": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_12": { + "locked": { + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_120": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_121": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_122": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_123": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_124": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_125": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_126": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_127": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_128": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_129": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_13": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_130": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_131": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_132": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_133": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_134": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_135": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_136": { + "locked": { + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_137": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_138": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_139": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_14": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_140": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_141": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_142": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_143": { + "locked": { + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_16": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_17": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_18": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_19": { + "locked": { + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1677543769, + "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { + "locked": { + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_21": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_22": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_23": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_24": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_25": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_26": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_27": { + "locked": { + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_28": { + "locked": { + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_29": { + "locked": { + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1645013224, + "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_30": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_31": { + "locked": { + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_32": { + "locked": { + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_33": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_34": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_35": { + "locked": { + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_36": { + "locked": { + "lastModified": 1708343346, + "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9312b935a538684049cb668885e60f15547d4c5f", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_37": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_38": { + "locked": { + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_39": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_40": { + "locked": { + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_41": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_42": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_43": { + "locked": { + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + } + }, + "nixpkgs_44": { + "locked": { + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" + } + }, + "nixpkgs_45": { + "locked": { + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_46": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_47": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_48": { + "locked": { + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_49": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_50": { + "locked": { + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_51": { + "locked": { + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_52": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_53": { + "locked": { + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_54": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_55": { + "locked": { + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_56": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_57": { + "locked": { + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-21.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_58": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_59": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { + "locked": { + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_61": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_62": { + "locked": { + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "type": "github" }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_63": { "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_5", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" - }, + "nixpkgs_64": { "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_7", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" - }, + "nixpkgs_65": { "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_70" + "nixpkgs_66": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_67": { "locked": { - "lastModified": 1699381651, - "narHash": "sha256-mZlQ54xJs3j5+SJrLhzePPMXzS+Czbx7gNyOnOAQrHA=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "0bd99f5ab7ec7a74c11238bd02bb29e709c14328", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hls-1.10": { - "flake": false, + "nixpkgs_68": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "hls-1.10_2": { - "flake": false, + "nixpkgs_69": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.0": { - "flake": false, + "nixpkgs_7": { "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.2": { - "flake": false, + "nixpkgs_70": { "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.3": { - "flake": false, + "nixpkgs_71": { "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "hls-2.4": { - "flake": false, + "nixpkgs_72": { "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "type": "github" + } + }, + "nixpkgs_73": { + "locked": { + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "hpc-coveralls": { - "flake": false, + "nixpkgs_74": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_2": { - "flake": false, + "nixpkgs_75": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "hpc-coveralls_3": { - "flake": false, + "nixpkgs_76": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_4": { - "flake": false, + "nixpkgs_77": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_5": { - "flake": false, + "nixpkgs_78": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_6": { - "flake": false, + "nixpkgs_79": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_7": { - "flake": false, + "nixpkgs_8": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", "type": "github" } }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "ctl", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_80": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_2": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] - }, + "nixpkgs_81": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "hydra_3": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] - }, + "nixpkgs_82": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "hydra_4": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] - }, + "nixpkgs_83": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "hydra_5": { - "inputs": { - "nix": "nix_12", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_84": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_6": { - "inputs": { - "nix": "nix_13", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_85": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { - "id": "hydra", + "id": "nixpkgs", "type": "indirect" } }, - "hydra_7": { - "inputs": { - "nix": "nix_14", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_86": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { - "id": "hydra", + "id": "nixpkgs", "type": "indirect" } }, - "hydra_8": { - "inputs": { - "nix": "nix_15", - "nixpkgs": [ - "ctl", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs_87": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "id": "hydra", + "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "hydra_9": { - "inputs": { - "nix": "nix_16", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "nixpkgs_88": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_89": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "id": "hydra", + "id": "nixpkgs", + "ref": "nixos-21.05-small", "type": "indirect" } }, - "incl": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_9": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", "type": "github" } }, - "inclusive": { - "inputs": { - "stdlib": "stdlib" - }, + "nixpkgs_90": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_10": { - "inputs": { - "stdlib": "stdlib_10" - }, + "nixpkgs_91": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_11": { - "inputs": { - "stdlib": "stdlib_11" - }, + "nixpkgs_92": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_2": { - "inputs": { - "stdlib": "stdlib_2" - }, + "nixpkgs_93": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_3": { - "inputs": { - "stdlib": "stdlib_3" - }, + "nixpkgs_94": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_95": { + "locked": { + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_4": { - "inputs": { - "stdlib": "stdlib_4" - }, + "nixpkgs_96": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "inclusive_5": { - "inputs": { - "stdlib": "stdlib_5" - }, + "nixpkgs_97": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_6": { - "inputs": { - "stdlib": "stdlib_6" - }, + "nixpkgs_98": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_7": { - "inputs": { - "stdlib": "stdlib_7" - }, + "nixpkgs_99": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_8": { + "nomad": { "inputs": { - "stdlib": "stdlib_8" + "nix": "nix_8", + "nixpkgs": "nixpkgs_45", + "utils": "utils_9" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "inclusive_9": { + "nomad-driver-nix": { "inputs": { - "stdlib": "stdlib_9" + "devshell": "devshell_6", + "inclusive": "inclusive_2", + "nix": "nix_9", + "nixpkgs": "nixpkgs_47", + "utils": "utils_10" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-inclusive", + "repo": "nomad-driver-nix", "type": "github" } }, - "iogo": { + "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_4", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_22", - "utils": "utils_8" + "devshell": "devshell_9", + "inclusive": "inclusive_5", + "nix": "nix_11", + "nixpkgs": "nixpkgs_59", + "utils": "utils_15" }, "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "bitte-iogo", + "repo": "nomad-driver-nix", "type": "github" } }, - "iogo_2": { + "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_14", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_51", - "utils": "utils_22" + "devshell": "devshell_16", + "inclusive": "inclusive_10", + "nix": "nix_16", + "nixpkgs": "nixpkgs_76", + "utils": "utils_24" }, "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "bitte-iogo", + "repo": "nomad-driver-nix", "type": "github" } }, - "iohk-nix": { + "nomad-follower": { "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "nixpkgs" - ] + "devshell": "devshell_7", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_48", + "utils": "utils_11" }, "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "iohk-nix", + "repo": "nomad-follower", "type": "github" } }, - "iohk-nix_2": { + "nomad-follower_2": { "inputs": { - "blst": "blst_2", - "nixpkgs": [ - "ctl", - "nixpkgs" - ], - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" + "devshell": "devshell_10", + "inclusive": "inclusive_6", + "nixpkgs": "nixpkgs_60", + "utils": "utils_16" }, "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "iohk-nix", + "repo": "nomad-follower", "type": "github" } }, - "iohk-nix_3": { + "nomad-follower_3": { "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] + "devshell": "devshell_17", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_77", + "utils": "utils_25" }, "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "repo": "nomad-follower", "type": "github" } }, - "iohkNix": { + "nomad_2": { "inputs": { - "blst": "blst", - "nixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1", - "sodium": "sodium" + "nix": "nix_15", + "nixpkgs": "nixpkgs_74", + "utils": "utils_23" }, "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "iohk-nix", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, + "nosys": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "nixpkgs" - ] - }, + "nosys_2": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "iserv-proxy": { - "flake": false, + "nosys_3": { "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "divnix", + "repo": "nosys", + "type": "github" } }, - "iserv-proxy_2": { - "flake": false, + "nosys_4": { "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "divnix", + "repo": "nosys", + "type": "github" } }, - "kupo": { + "offchain-metadata-tools-service": { "flake": false, "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1684160858, + "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", + "owner": "input-output-hk", + "repo": "offchain-metadata-tools", + "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "input-output-hk", + "ref": "feat-add-password-to-db-conn-string", + "repo": "offchain-metadata-tools", "type": "github" } }, - "kupo-nixos": { - "inputs": { - "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_3", - "kupo": [ - "ctl", - "kupo" - ], - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "ogmios": { + "flake": false, "locked": { - "lastModified": 1672905539, - "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", "type": "github" } }, - "lowdown-src": { + "ogmios_2": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1717661787, + "narHash": "sha256-AnIxPug+DnPHn69z+Vz+Us2a+Z3LnkI+LJaIyUm4c5w=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "4dbf1f34d9ea046dda50bf0c58bd276f80f41784", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "CardanoSolutions", + "ref": "v6.4.0", + "repo": "ogmios", "type": "github" } }, - "lowdown-src_10": { + "old-ghc-nix": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_11": { + "old-ghc-nix_10": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_12": { + "old-ghc-nix_11": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_13": { + "old-ghc-nix_12": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_14": { + "old-ghc-nix_13": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_15": { + "old-ghc-nix_14": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_16": { + "old-ghc-nix_15": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_2": { + "old-ghc-nix_16": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_3": { + "old-ghc-nix_17": { "flake": false, "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_4": { + "old-ghc-nix_18": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_5": { + "old-ghc-nix_19": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_6": { + "old-ghc-nix_2": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_7": { + "old-ghc-nix_20": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_8": { + "old-ghc-nix_21": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "lowdown-src_9": { + "old-ghc-nix_22": { "flake": false, "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "mdbook-kroki-preprocessor": { + "old-ghc-nix_23": { "flake": false, "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { + "old-ghc-nix_24": { "flake": false, "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "n2c": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "old-ghc-nix_25": { + "flake": false, "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": "flake-utils_11", - "nixpkgs": "nixpkgs_27" - }, + "old-ghc-nix_3": { + "flake": false, "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_62" - }, + "old-ghc-nix_4": { + "flake": false, "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_3", - "nixpkgs-regression": "nixpkgs-regression" - }, + "old-ghc-nix_5": { + "flake": false, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } - }, - "nix-cache-proxy": { - "inputs": { - "devshell": "devshell_11", - "inclusive": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_15" - }, + }, + "old-ghc-nix_6": { + "flake": false, "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_12" - }, + "old-ghc-nix_7": { + "flake": false, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_3", - "flake-utils": [ - "ctl", - "cardano-node", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "ctl", - "cardano-node", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "cardano-node", - "tullia", - "nixpkgs" - ] - }, + "old-ghc-nix_8": { + "flake": false, "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nix-tools": { + "old-ghc-nix_9": { "flake": false, "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nix-tools_2": { + "ops-lib": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "ops-lib", "type": "github" } }, - "nix-tools_3": { + "ops-lib_2": { "flake": false, "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "ops-lib", "type": "github" } }, - "nix-tools_4": { + "ops-lib_3": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1713366514, + "narHash": "sha256-0hNlv+grFTE+TeXIbxSY97QoEEaUupOKMusZ4PesdrQ=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "repo": "ops-lib", + "rev": "19d83fa8eab1c0b7765f736eb4e8569d84d3e39d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "ops-lib", "type": "github" } }, - "nix-tools_5": { + "ops-lib_4": { "flake": false, "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nix-tools", + "repo": "ops-lib", "type": "github" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_4" - }, + "ops-lib_5": { + "flake": false, "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_6" - }, + "ops-lib_6": { + "flake": false, "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nix2container_3": { + "paisano": { "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_65" + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys_2", + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", "type": "github" }, "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", + "owner": "paisano-nix", + "repo": "core", "type": "github" } }, - "nix_10": { + "paisano-actions": { "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_45" + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", + "owner": "paisano-nix", + "repo": "actions", "type": "github" } }, - "nix_11": { + "paisano-mdbook-preprocessor": { "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_47", - "nixpkgs-regression": "nixpkgs-regression_9" + "crane": "crane", + "fenix": "fenix_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", "type": "github" } }, - "nix_12": { + "paisano-tui": { "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_59", - "nixpkgs-regression": "nixpkgs-regression_10" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std" + ] + }, + "locked": { + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "nix_13": { + "paisano-tui_2": { "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_61", - "nixpkgs-regression": "nixpkgs-regression_11" + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "nix_14": { - "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_68", - "nixpkgs-regression": "nixpkgs-regression_12" - }, + "paisano-tui_3": { + "flake": false, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1708637035, + "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "231761b260587a64817e4ffae3afc15defaa15db", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "paisano-nix", + "ref": "v0.5.0", + "repo": "tui", "type": "github" } }, - "nix_15": { + "paisano_2": { "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_69", - "nixpkgs-regression": "nixpkgs-regression_13" + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "nosys": "nosys_3", + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] }, "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, - "nix_16": { + "paisano_3": { "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_71", - "nixpkgs-regression": "nixpkgs-regression_14" + "call-flake": "call-flake", + "nixpkgs": [ + "ctl", + "cardano-node", + "std", + "nixpkgs" + ], + "nosys": "nosys_4", + "yants": [ + "ctl", + "cardano-node", + "std", + "yants" + ] }, "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1708640854, + "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", + "owner": "paisano-nix", + "repo": "core", + "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "paisano-nix", + "ref": "0.2.0", + "repo": "core", "type": "github" } }, - "nix_2": { + "poetry2nix": { "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_14", - "nixpkgs-regression": "nixpkgs-regression_2" + "flake-utils": "flake-utils_32", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ] }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1641849362, + "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "nix-community", + "ref": "fetched-projectdir-test", + "repo": "poetry2nix", "type": "github" } }, - "nix_3": { + "pre-commit-hooks": { "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_16" + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_83" }, "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nix_4": { + "pre-commit-hooks-nix": { "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_18", - "nixpkgs-regression": "nixpkgs-regression_3" + "flake-compat": "flake-compat_13", + "gitignore": "gitignore", + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "ctl", + "cardano-nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1716213921, + "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nix_5": { + "pre-commit-hooks-nix_10": { "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_28", - "nixpkgs-regression": "nixpkgs-regression_4" + "flake-compat": "flake-compat_46", + "flake-utils": "flake-utils_89", + "gitignore": "gitignore_10", + "nixpkgs": "nixpkgs_128", + "nixpkgs-stable": "nixpkgs-stable_19" }, "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nix_6": { + "pre-commit-hooks-nix_11": { "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", - "nixpkgs-regression": "nixpkgs-regression_5" + "flake-compat": "flake-compat_47", + "flake-utils": "flake-utils_91", + "gitignore": "gitignore_11", + "nixpkgs": "nixpkgs_130", + "nixpkgs-stable": "nixpkgs-stable_21" }, "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nix_7": { + "pre-commit-hooks-nix_12": { "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_37", - "nixpkgs-regression": "nixpkgs-regression_6" + "flake-compat": "flake-compat_50", + "flake-utils": "flake-utils_97", + "gitignore": "gitignore_12", + "nixpkgs": "nixpkgs_134", + "nixpkgs-stable": "nixpkgs-stable_23" }, "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nix_8": { + "pre-commit-hooks-nix_13": { "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_38", - "nixpkgs-regression": "nixpkgs-regression_7" + "flake-compat": "flake-compat_52", + "flake-utils": "flake-utils_101", + "gitignore": "gitignore_13", + "nixpkgs": "nixpkgs_137", + "nixpkgs-stable": "nixpkgs-stable_25" }, "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nix_9": { + "pre-commit-hooks-nix_14": { "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_43", - "nixpkgs-regression": "nixpkgs-regression_8" + "flake-compat": "flake-compat_53", + "flake-utils": "flake-utils_103", + "gitignore": "gitignore_14", + "nixpkgs": "nixpkgs_139", + "nixpkgs-stable": "nixpkgs-stable_27" }, "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixago": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-node", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] + "pre-commit-hooks-nix_15": { + "inputs": { + "flake-compat": "flake-compat_54", + "flake-utils": "flake-utils_105", + "gitignore": "gitignore_15", + "nixpkgs": "nixpkgs_141", + "nixpkgs-stable": "nixpkgs-stable_29" }, "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixago-exts": { + "pre-commit-hooks-nix_16": { + "inputs": { + "flake-compat": "flake-compat_55", + "flake-utils": "flake-utils_107", + "gitignore": "gitignore_16", + "nixpkgs": "nixpkgs_143", + "nixpkgs-stable": "nixpkgs-stable_31" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixago-exts_2": { + "pre-commit-hooks-nix_2": { + "inputs": { + "flake-compat": "flake-compat_30", + "flake-utils": "flake-utils_57", + "gitignore": "gitignore_2", + "nixpkgs": "nixpkgs_104", + "nixpkgs-stable": "nixpkgs-stable_3" + }, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixago_2": { + "pre-commit-hooks-nix_3": { "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] + "flake-compat": "flake-compat_32", + "flake-utils": "flake-utils_61", + "gitignore": "gitignore_3", + "nixpkgs": "nixpkgs_107", + "nixpkgs-stable": "nixpkgs-stable_5" }, "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixago_3": { + "pre-commit-hooks-nix_4": { "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] + "flake-compat": "flake-compat_33", + "flake-utils": "flake-utils_63", + "gitignore": "gitignore_4", + "nixpkgs": "nixpkgs_109", + "nixpkgs-stable": "nixpkgs-stable_7" }, "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixlib": { + "pre-commit-hooks-nix_5": { + "inputs": { + "flake-compat": "flake-compat_36", + "flake-utils": "flake-utils_69", + "gitignore": "gitignore_5", + "nixpkgs": "nixpkgs_113", + "nixpkgs-stable": "nixpkgs-stable_9" + }, "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixlib_2": { + "pre-commit-hooks-nix_6": { + "inputs": { + "flake-compat": "flake-compat_38", + "flake-utils": "flake-utils_73", + "gitignore": "gitignore_6", + "nixpkgs": "nixpkgs_116", + "nixpkgs-stable": "nixpkgs-stable_11" + }, "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixlib_3": { + "pre-commit-hooks-nix_7": { + "inputs": { + "flake-compat": "flake-compat_39", + "flake-utils": "flake-utils_75", + "gitignore": "gitignore_7", + "nixpkgs": "nixpkgs_118", + "nixpkgs-stable": "nixpkgs-stable_13" + }, "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs": { + "pre-commit-hooks-nix_8": { + "inputs": { + "flake-compat": "flake-compat_40", + "flake-utils": "flake-utils_77", + "gitignore": "gitignore_8", + "nixpkgs": "nixpkgs_120", + "nixpkgs-stable": "nixpkgs-stable_15" + }, "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs-2003": { + "pre-commit-hooks-nix_9": { + "inputs": { + "flake-compat": "flake-compat_44", + "flake-utils": "flake-utils_85", + "gitignore": "gitignore_9", + "nixpkgs": "nixpkgs_125", + "nixpkgs-stable": "nixpkgs-stable_17" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs-2003_2": { + "ragenix": { + "inputs": { + "agenix": "agenix_3", + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_49", + "rust-overlay": "rust-overlay_2" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-2003_3": { + "ragenix_2": { + "inputs": { + "agenix": "agenix_4", + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_52", + "rust-overlay": "rust-overlay_3" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-2003_4": { + "ragenix_3": { + "inputs": { + "agenix": "agenix_5", + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_61", + "rust-overlay": "rust-overlay_4" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", + "type": "github" + } + }, + "ragenix_4": { + "inputs": { + "agenix": "agenix_7", + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_78", + "rust-overlay": "rust-overlay_5" + }, + "locked": { + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "type": "github" + }, + "original": { + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-2003_5": { + "ragenix_5": { + "inputs": { + "agenix": "agenix_8", + "flake-utils": "flake-utils_36", + "nixpkgs": "nixpkgs_81", + "rust-overlay": "rust-overlay_6" + }, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs-2003_6": { + "root": { + "inputs": { + "ctl": "ctl", + "flake-compat": "flake-compat_56", + "nixpkgs": [ + "ctl", + "nixpkgs" + ] + } + }, + "rust-analyzer-src": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1645205556, + "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-2003_7": { + "rust-analyzer-src_2": { + "flake": false, "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-2105": { + "rust-analyzer-src_3": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-2105_2": { + "rust-analyzer-src_4": { + "flake": false, "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-2105_3": { + "rust-analyzer-src_5": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-2105_4": { + "rust-analyzer-src_6": { + "flake": false, "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "lastModified": 1660579619, + "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-2105_5": { + "rust-analyzer-src_7": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-2105_6": { + "rust-analyzer-src_8": { + "flake": false, "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs-2105_7": { + "rust-overlay": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs-2111": { + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs-2111_2": { - "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", - "type": "github" + "rust-overlay_3": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_3": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs-2111_4": { + "rust-overlay_4": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs-2111_5": { + "rust-overlay_5": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs-2111_6": { + "rust-overlay_6": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs-2111_7": { + "secp256k1": { + "flake": false, "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-2205": { + "secp256k1_10": { + "flake": false, "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-2205_2": { + "secp256k1_11": { + "flake": false, "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-2205_3": { + "secp256k1_12": { + "flake": false, "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-2211": { + "secp256k1_13": { + "flake": false, "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-2211_2": { + "secp256k1_14": { + "flake": false, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } - }, - "nixpkgs-2305": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + }, + "secp256k1_15": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-2311": { + "secp256k1_16": { + "flake": false, "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-docker": { + "secp256k1_17": { + "flake": false, "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-regression": { + "secp256k1_18": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-regression_10": { + "secp256k1_19": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_11": { + "secp256k1_2": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_12": { + "secp256k1_20": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_13": { + "secp256k1_21": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs-regression_14": { + "secp256k1_22": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_2": { + "secp256k1_3": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_3": { + "secp256k1_4": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_4": { + "secp256k1_5": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_5": { + "secp256k1_6": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_6": { + "secp256k1_7": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_7": { + "secp256k1_8": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_8": { + "secp256k1_9": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs-regression_9": { + "sodium": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs-unstable": { + "sodium_10": { + "flake": false, "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs-unstable_2": { + "sodium_11": { + "flake": false, "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs-unstable_3": { + "sodium_12": { + "flake": false, "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs-unstable_4": { + "sodium_13": { + "flake": false, "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs-unstable_5": { + "sodium_14": { + "flake": false, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs-unstable_6": { + "sodium_15": { + "flake": false, "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs-unstable_7": { + "sodium_16": { + "flake": false, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs-unstable_8": { + "sodium_17": { + "flake": false, "locked": { - "lastModified": 1701336116, - "narHash": "sha256-kEmpezCR/FpITc6yMbAh4WrOCiT2zg5pSjnKrq51h5Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f5c27c6136db4d76c30e533c20517df6864c46ee", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs-unstable_9": { + "sodium_18": { + "flake": false, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_10": { + "sodium_19": { + "flake": false, "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_11": { + "sodium_2": { + "flake": false, "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" } }, - "nixpkgs_12": { + "sodium_20": { + "flake": false, "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_13": { + "sodium_21": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_14": { + "sodium_22": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_15": { + "sodium_3": { + "flake": false, "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_16": { + "sodium_4": { + "flake": false, "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_17": { + "sodium_5": { + "flake": false, "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_18": { + "sodium_6": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_19": { + "sodium_7": { + "flake": false, "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_2": { + "sodium_8": { + "flake": false, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_20": { + "sodium_9": { + "flake": false, "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_21": { + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_10", + "nixpkgs-stable": "nixpkgs-stable" + }, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1690199016, + "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "Mic92", + "repo": "sops-nix", "type": "github" } }, - "nixpkgs_22": { + "sphinxcontrib-haddock": { + "flake": false, "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_23": { + "sphinxcontrib-haddock_10": { + "flake": false, "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_24": { + "sphinxcontrib-haddock_11": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_25": { + "sphinxcontrib-haddock_12": { + "flake": false, "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_26": { + "sphinxcontrib-haddock_13": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_27": { + "sphinxcontrib-haddock_14": { + "flake": false, "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_28": { + "sphinxcontrib-haddock_15": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" } }, - "nixpkgs_29": { + "sphinxcontrib-haddock_2": { + "flake": false, "locked": { - "lastModified": 1652559422, - "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_3": { + "sphinxcontrib-haddock_3": { + "flake": false, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_30": { + "sphinxcontrib-haddock_4": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" } }, - "nixpkgs_31": { + "sphinxcontrib-haddock_5": { + "flake": false, "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_32": { + "sphinxcontrib-haddock_6": { + "flake": false, "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_33": { + "sphinxcontrib-haddock_7": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_34": { + "sphinxcontrib-haddock_8": { + "flake": false, "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_35": { + "sphinxcontrib-haddock_9": { + "flake": false, "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_36": { + "stable": { "locked": { - "lastModified": 1643381941, - "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "lastModified": 1669735802, + "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", + "rev": "731cc710aeebecbf45a258e977e8b68350549522", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_37": { + "stackage": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1701043780, + "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_38": { + "stackage_10": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1714954836, + "narHash": "sha256-ksReW99DOMNsNdRYDp/GIC2np/PVoqIIeuGbCB5YoFQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "991de0dd2e48574c7aff96ea0b2315973c4d3458", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_39": { + "stackage_11": { + "flake": false, "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "lastModified": 1714608979, + "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_4": { + "stackage_12": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_40": { + "stackage_13": { + "flake": false, "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_41": { + "stackage_14": { + "flake": false, "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_42": { + "stackage_15": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_43": { + "stackage_16": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_44": { + "stackage_17": { + "flake": false, "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_45": { + "stackage_18": { + "flake": false, "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "lastModified": 1714608979, + "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_46": { + "stackage_19": { + "flake": false, "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_47": { + "stackage_2": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_48": { + "stackage_20": { + "flake": false, "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_49": { + "stackage_21": { + "flake": false, "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_5": { + "stackage_22": { + "flake": false, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_50": { + "stackage_23": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_51": { + "stackage_24": { + "flake": false, "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_52": { + "stackage_3": { + "flake": false, "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_53": { + "stackage_4": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1718756571, + "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "027672fb6fd45828b0e623c8152572d4058429ad", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_54": { + "stackage_5": { + "flake": false, "locked": { - "lastModified": 1646470760, - "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_55": { + "stackage_6": { + "flake": false, "locked": { - "lastModified": 1619531122, - "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_56": { + "stackage_7": { + "flake": false, "locked": { - "lastModified": 1656461576, - "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nixpkgs_57": { + "stackage_8": { + "flake": false, "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_58": { + "stackage_9": { + "flake": false, "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "lastModified": 1719102283, + "narHash": "sha256-pon+cXgMWPlCiBx9GlRcjsjTHbCc8fDVgOGb3Z7qhRM=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "7df45e0bd9852810d8070f9c5257f8e7a4677b91", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "stackage.nix", + "type": "github" } }, - "nixpkgs_59": { + "statix": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1676888642, + "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", + "owner": "nerdypepper", + "repo": "statix", + "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nerdypepper", + "repo": "statix", + "type": "github" } }, - "nixpkgs_6": { + "std": { + "inputs": { + "arion": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_8", + "incl": "incl", + "makes": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_20", + "nosys": "nosys", + "yants": "yants" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "nixpkgs_60": { + "std_2": { + "inputs": { + "arion": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_11", + "incl": "incl_2", + "makes": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_23", + "paisano": "paisano", + "paisano-tui": "paisano-tui", + "yants": "yants_2" + }, "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "nixpkgs_61": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" + "std_3": { + "inputs": { + "arion": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "blank": "blank_3", + "devshell": "devshell_3", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_13", + "haumea": "haumea", + "incl": "incl_3", + "makes": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_28", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", + "yants": "yants_3" }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_62": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "nixpkgs_63": { + "std_4": { + "inputs": { + "blank": "blank_4", + "devshell": "devshell_5", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_18", + "makes": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "microvm": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_32", + "yants": "yants_4" + }, "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "nixpkgs_64": { + "std_5": { + "inputs": { + "arion": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "blank": "blank_5", + "devshell": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "dmerge": "dmerge_5", + "haumea": "haumea_2", + "incl": "incl_4", + "lib": "lib", + "makes": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "n2c": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "nixago": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "nixpkgs": "nixpkgs_36", + "paisano": "paisano_3", + "paisano-tui": "paisano-tui_3", + "terranix": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "yants": "yants_5" + }, "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "lastModified": 1715201063, + "narHash": "sha256-LcLYV5CDhIiJs3MfxGZFKsXPR4PtfnY4toZ75GM+2Pw=", + "owner": "divnix", + "repo": "std", + "rev": "b6924a7d37a46fc1dda8efe405040e27ecf1bbd6", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "nixpkgs_65": { + "std_6": { + "inputs": { + "devshell": "devshell_11", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_28", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_62", + "yants": "yants_7" + }, "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "owner": "divnix", + "repo": "std", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "nixpkgs_66": { + "std_7": { + "inputs": { + "devshell": "devshell_19", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_44", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_92", + "yants": "yants_9" + }, "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "owner": "divnix", + "repo": "std", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "nixpkgs_67": { + "std_8": { + "inputs": { + "devshell": "devshell_20", + "nixpkgs": "nixpkgs_95", + "yants": "yants_10" + }, "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "owner": "divnix", + "repo": "std", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "nixpkgs_68": { + "stdlib": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "manveru", + "repo": "nix-lib", + "type": "github" } }, - "nixpkgs_69": { + "stdlib_10": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "nixpkgs_7": { + "stdlib_11": { "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "nixpkgs_70": { + "stdlib_12": { "locked": { - "lastModified": 1697723726, - "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7c9cc5a6e5d38010801741ac830a3f8fd667a7a0", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "nixpkgs_71": { + "stdlib_13": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "manveru", + "repo": "nix-lib", + "type": "github" } }, - "nixpkgs_8": { + "stdlib_2": { "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "nixpkgs_9": { + "stdlib_3": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "manveru", + "repo": "nix-lib", + "type": "github" } }, - "nomad": { - "inputs": { - "nix": "nix_3", - "nixpkgs": "nixpkgs_17", - "utils": "utils_4" - }, + "stdlib_4": { "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "nomad-driver-nix": { - "inputs": { - "devshell": "devshell_2", - "inclusive": "inclusive", - "nix": "nix_4", - "nixpkgs": "nixpkgs_19", - "utils": "utils_5" - }, + "stdlib_5": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "nomad-driver-nix_2": { - "inputs": { - "devshell": "devshell_5", - "inclusive": "inclusive_4", - "nix": "nix_6", - "nixpkgs": "nixpkgs_31", - "utils": "utils_10" - }, + "stdlib_6": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "nomad-driver-nix_3": { - "inputs": { - "devshell": "devshell_12", - "inclusive": "inclusive_9", - "nix": "nix_11", - "nixpkgs": "nixpkgs_48", - "utils": "utils_19" - }, + "stdlib_7": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "nomad-follower": { - "inputs": { - "devshell": "devshell_3", - "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_20", - "utils": "utils_6" - }, + "stdlib_8": { "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "nomad-follower_2": { - "inputs": { - "devshell": "devshell_6", - "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_32", - "utils": "utils_11" - }, + "stdlib_9": { "locked": { - "lastModified": 1658244176, - "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } - }, - "nomad-follower_3": { - "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_49", - "utils": "utils_20" - }, - "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "nomad_2": { - "inputs": { - "nix": "nix_10", - "nixpkgs": "nixpkgs_46", - "utils": "utils_18" - }, + "systems_10": { "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "nosys": { + "systems_11": { "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ogmios": { - "flake": false, + "systems_12": { "locked": { - "lastModified": 1657544501, - "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v5.5.2", - "repo": "ogmios", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ogmios-nixos": { - "inputs": { - "CHaP": "CHaP_3", - "blank": "blank_5", - "cardano-configurations": "cardano-configurations_2", - "cardano-node": [ - "ctl", - "cardano-node" - ], - "flake-compat": "flake-compat_13", - "haskell-nix": [ - "ctl", - "haskell-nix" - ], - "iohk-nix": [ - "ctl", - "iohk-nix" - ], - "nixpkgs": [ - "ctl", - "nixpkgs" - ], - "ogmios-src": [ - "ctl", - "ogmios" - ] - }, + "systems_13": { "locked": { - "lastModified": 1695289922, - "narHash": "sha256-WeZkYCyvOqnVx9zYgyO2rh0rd3O2DmxH0HZ4OJnf/aw=", - "owner": "mlabs-haskell", - "repo": "ogmios-nixos", - "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios-nixos", - "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ogmios_2": { - "flake": false, + "systems_14": { "locked": { - "lastModified": 1691769233, - "narHash": "sha256-7CLprKq3RwJfvy31LAPux+DYFLjEmbRBFgvtYDpJA8Q=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "3d3f359b0987c009ef66fb4d4b4bddce92b9aeb3", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v6.0.0", - "repo": "ogmios", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "old-ghc-nix": { - "flake": false, + "systems_15": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "old-ghc-nix_2": { - "flake": false, + "systems_16": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "old-ghc-nix_3": { - "flake": false, + "systems_17": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "old-ghc-nix_4": { - "flake": false, + "systems_18": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "old-ghc-nix_5": { - "flake": false, + "systems_19": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "old-ghc-nix_6": { - "flake": false, + "systems_2": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "old-ghc-nix_7": { - "flake": false, + "systems_20": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ops-lib": { - "flake": false, + "systems_21": { "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ops-lib_2": { - "flake": false, + "systems_22": { "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ops-lib_3": { - "flake": false, + "systems_23": { "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "systems_24": { "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "plutip": { - "inputs": { - "CHaP": "CHaP_4", - "cardano-node": [ - "ctl", - "cardano-node" - ], - "flake-compat": "flake-compat_14", - "hackage-nix": [ - "ctl", - "hackage-nix" - ], - "haskell-nix": [ - "ctl", - "haskell-nix" - ], - "iohk-nix": [ - "ctl", - "iohk-nix" - ], - "nixpkgs": [ - "ctl", - "nixpkgs" - ] - }, + "systems_25": { "locked": { - "lastModified": 1695131439, - "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "ref": "gergely/version-bump", - "repo": "plutip", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "poetry2nix": { - "inputs": { - "flake-utils": "flake-utils_17", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ] - }, + "systems_26": { "locked": { - "lastModified": 1641849362, - "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", - "owner": "nix-community", - "repo": "poetry2nix", - "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "nix-community", - "ref": "fetched-projectdir-test", - "repo": "poetry2nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "pre-commit-hooks": { - "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" - }, + "systems_27": { "locked": { - "lastModified": 1639823344, - "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ragenix": { - "inputs": { - "agenix": "agenix_3", - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_21", - "rust-overlay": "rust-overlay" - }, + "systems_28": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ragenix_2": { - "inputs": { - "agenix": "agenix_4", - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_24", - "rust-overlay": "rust-overlay_2" + "systems_29": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ragenix_3": { - "inputs": { - "agenix": "agenix_5", - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_33", - "rust-overlay": "rust-overlay_3" - }, + "systems_30": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ragenix_4": { - "inputs": { - "agenix": "agenix_7", - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_50", - "rust-overlay": "rust-overlay_4" - }, + "systems_31": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "ragenix_5": { - "inputs": { - "agenix": "agenix_8", - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_53", - "rust-overlay": "rust-overlay_5" - }, + "systems_32": { "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "root": { - "inputs": { - "ctl": "ctl", - "flake-compat": "flake-compat_15", - "nixpkgs": [ - "ctl", - "nixpkgs" - ] - } - }, - "rust-analyzer-src": { - "flake": false, + "systems_33": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_2": { - "flake": false, + "systems_34": { "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_3": { - "flake": false, + "systems_35": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_4": { - "flake": false, + "systems_36": { "locked": { - "lastModified": 1660579619, - "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_5": { - "flake": false, + "systems_37": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_6": { - "flake": false, + "systems_38": { "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "systems_39": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay_2": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + "systems_4": { "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay_3": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "systems_40": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay_4": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "systems_41": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay_5": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + "systems_42": { "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "secp256k1": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "systems_43": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "secp256k1_2": { - "flake": false, + "systems_44": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sodium": { - "flake": false, + "systems_45": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sodium_2": { - "flake": false, + "systems_46": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage": { - "flake": false, + "systems_47": { "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_2": { - "flake": false, + "systems_48": { "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_3": { - "flake": false, + "systems_49": { "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_4": { - "flake": false, + "systems_5": { "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_5": { - "flake": false, + "systems_50": { "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_6": { - "flake": false, + "systems_51": { "locked": { - "lastModified": 1702426166, - "narHash": "sha256-j7wjtnR3HjT+OOq4GOWQMG+LufhAmz7CNDTJDW7ouXE=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "8f4b266959e3087825631fb8c7b2ef2f4c915ed9", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_7": { - "flake": false, + "systems_52": { "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std": { - "inputs": { - "arion": [ - "ctl", - "cardano-node", - "tullia", - "std", - "blank" - ], - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_5", - "incl": "incl", - "makes": [ - "ctl", - "cardano-node", - "tullia", - "std", - "blank" - ], - "microvm": [ - "ctl", - "cardano-node", - "tullia", - "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_8", - "nosys": "nosys", - "yants": "yants" - }, + "systems_53": { "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", - "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_2": { - "inputs": { - "devshell": "devshell_7", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_13", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_34", - "yants": "yants_3" - }, + "systems_54": { "locked": { - "lastModified": 1661370377, - "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", - "owner": "divnix", - "repo": "std", - "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_3": { - "inputs": { - "devshell": "devshell_15", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_29", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_64", - "yants": "yants_5" - }, + "systems_55": { "locked": { - "lastModified": 1661367957, - "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", - "owner": "divnix", - "repo": "std", - "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_4": { - "inputs": { - "devshell": "devshell_16", - "nixpkgs": "nixpkgs_67", - "yants": "yants_6" + "systems_56": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_57": { "locked": { - "lastModified": 1652784712, - "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", - "owner": "divnix", - "repo": "std", - "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib": { + "systems_58": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_10": { + "systems_59": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_11": { + "systems_6": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_12": { + "systems_60": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_2": { + "systems_61": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_3": { + "systems_62": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_4": { + "systems_63": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_5": { + "systems_64": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_6": { + "systems_65": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_7": { + "systems_7": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_8": { + "systems_8": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_9": { + "systems_9": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_58" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_86" }, "locked": { "lastModified": 1654211622, @@ -9438,28 +31937,38 @@ "type": "github" } }, + "terraform-providers": { + "inputs": { + "nixpkgs": "nixpkgs_11" + }, + "locked": { + "lastModified": 1695893013, + "narHash": "sha256-+5EuXNXwxpTiOEGCbZWtZCU75WcVwnS89heLa5xJ2K0=", + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "rev": "6c6865ae6f9bff7aaa4e86c875f520f2aca65c0d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "type": "github" + } + }, "terranix": { "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_9", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "blank" - ], + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_12", "terranix-examples": "terranix-examples" }, "locked": { - "lastModified": 1637158331, - "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "lastModified": 1684906298, + "narHash": "sha256-pNuJxmVMGbBHw7pa+Bx0HY0orXIXoyyAXOKuQ1zpfus=", "owner": "terranix", "repo": "terranix", - "rev": "34198bb154af86d2a559446f10d7339e53126abe", + "rev": "c0dd15076856c6cb425795b8c7d5d37d3a1e922a", "type": "github" }, "original": { @@ -9513,16 +32022,33 @@ "type": "github" } }, + "terranix-examples_4": { + "locked": { + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", + "type": "github" + }, + "original": { + "owner": "terranix", + "repo": "terranix-examples", + "type": "github" + } + }, "terranix_2": { "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_14", + "flake-utils": "flake-utils_24", "nixpkgs": [ "ctl", "db-sync", "cardano-world", "bitte", + "capsules", + "bitte", "blank" ], "terranix-examples": "terranix-examples_2" @@ -9545,12 +32071,11 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_20", + "flake-utils": "flake-utils_29", "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "capsules", "bitte", "blank" ], @@ -9570,54 +32095,278 @@ "type": "github" } }, - "tullia": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_7", - "std": "std" - }, + "terranix_4": { + "inputs": { + "bats-assert": "bats-assert_4", + "bats-support": "bats-support_4", + "flake-utils": "flake-utils_35", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_4" + }, + "locked": { + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", + "type": "github" + }, + "original": { + "owner": "terranix", + "repo": "terranix", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1683117219, + "narHash": "sha256-IyNRNRxw0slA3VQySVA7QPXHMOxlbx0ePWvj9oln+Wk=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "c8c3731dc404f837f38f89c2c5ffc2afc02e249d", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1691440708, + "narHash": "sha256-c7Cc08vJ0IPFgIERpTdO2xvDHQNL7Uf5iXT0GlYO6vo=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "2a535809ac5c9a32288f4d3b938296e056d948cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715940852, + "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "tullia": { + "inputs": { + "nix-nomad": "nix-nomad", + "nix2container": "nix2container_2", + "nixpkgs": "nixpkgs_19", + "std": "std" + }, + "locked": { + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_2": { + "inputs": { + "nix-nomad": "nix-nomad_2", + "nix2container": "nix2container_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "nixpkgs" + ], + "std": "std_2" + }, + "locked": { + "lastModified": 1684859161, + "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_3": { + "inputs": { + "nix-nomad": "nix-nomad_3", + "nix2container": "nix2container_5", + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "nixpkgs" + ], + "std": "std_4" + }, + "locked": { + "lastModified": 1668711738, + "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_4": { + "inputs": { + "nix2container": "nix2container_7", + "nixpkgs": "nixpkgs_94", + "std": "std_8" + }, + "locked": { + "lastModified": 1657811465, + "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_10": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_11": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_12": { "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "tullia_2": { - "inputs": { - "nix2container": "nix2container_3", - "nixpkgs": "nixpkgs_66", - "std": "std_4" - }, + "utils_13": { "locked": { - "lastModified": 1657811465, - "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "utils": { + "utils_14": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -9626,7 +32375,7 @@ "type": "github" } }, - "utils_10": { + "utils_15": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9641,7 +32390,7 @@ "type": "github" } }, - "utils_11": { + "utils_16": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9656,7 +32405,7 @@ "type": "github" } }, - "utils_12": { + "utils_17": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9671,7 +32420,7 @@ "type": "github" } }, - "utils_13": { + "utils_18": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9686,7 +32435,7 @@ "type": "github" } }, - "utils_14": { + "utils_19": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9701,7 +32450,22 @@ "type": "github" } }, - "utils_15": { + "utils_2": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_20": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9716,7 +32480,7 @@ "type": "github" } }, - "utils_16": { + "utils_21": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -9731,7 +32495,7 @@ "type": "github" } }, - "utils_17": { + "utils_22": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -9746,7 +32510,7 @@ "type": "github" } }, - "utils_18": { + "utils_23": { "locked": { "lastModified": 1601282935, "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", @@ -9761,7 +32525,7 @@ "type": "github" } }, - "utils_19": { + "utils_24": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9776,22 +32540,7 @@ "type": "github" } }, - "utils_2": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_20": { + "utils_25": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9806,7 +32555,7 @@ "type": "github" } }, - "utils_21": { + "utils_26": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9821,7 +32570,7 @@ "type": "github" } }, - "utils_22": { + "utils_27": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9836,7 +32585,7 @@ "type": "github" } }, - "utils_23": { + "utils_28": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9853,11 +32602,11 @@ }, "utils_3": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -9868,11 +32617,11 @@ }, "utils_4": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -9883,41 +32632,44 @@ }, "utils_5": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_6": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_7": { + "inputs": { + "systems": "systems_5" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -9928,26 +32680,26 @@ }, "utils_8": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_9": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -9994,7 +32746,8 @@ "inputs": { "nixpkgs": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "nixpkgs" @@ -10014,9 +32767,16 @@ "type": "github" } }, - "yants_2": { + "yants_10": { "inputs": { - "nixpkgs": "nixpkgs_25" + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, @@ -10032,23 +32792,49 @@ "type": "github" } }, + "yants_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "owner": "divnix", + "repo": "yants", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, "yants_3": { "inputs": { "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "bitte", + "cardano-nix", + "cardano-node-8.7.3", "std", + "haumea", "nixpkgs" ] }, "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", "owner": "divnix", "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", "type": "github" }, "original": { @@ -10059,7 +32845,55 @@ }, "yants_4": { "inputs": { - "nixpkgs": "nixpkgs_60" + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660507851, + "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", + "owner": "divnix", + "repo": "yants", + "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-node", + "std", + "lib" + ] + }, + "locked": { + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", + "owner": "divnix", + "repo": "yants", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_6": { + "inputs": { + "nixpkgs": "nixpkgs_53" }, "locked": { "lastModified": 1645126146, @@ -10075,12 +32909,13 @@ "type": "github" } }, - "yants_5": { + "yants_7": { "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", + "bitte", "std", "nixpkgs" ] @@ -10099,13 +32934,30 @@ "type": "github" } }, - "yants_6": { + "yants_8": { + "inputs": { + "nixpkgs": "nixpkgs_88" + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_9": { "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "tullia", "std", "nixpkgs" ] diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 6b29765ca..e7dbcb55d 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; + rev = "095f5bee58690fd51af3d879ce2c5cd65bce4ee4"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 561dc93e3..3d728f30a 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", + "@mlabs-haskell/cardano-serialization-lib-gc": "12.0.0-alpha.31", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", @@ -58,14 +58,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", - "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" + "version": "12.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-beta.1.tgz", + "integrity": "sha512-Fj56XnZe+ilFVgf66SB6ajQXf0rtH9o0GmICLM9qahLDZ2kAPsVu31PbbQ0YWpQB8SlDGLZE5f9Pf3Lx7cc7oA==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", - "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" + "version": "12.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-beta.1.tgz", + "integrity": "sha512-4BE7mSvSDWAmTXbzvNZg7NnaBoECv/QxsrNVKXdbaom5J9OhnnwvX3xhbEv98FAU2Awma8tLn9sHELZ46p2zbg==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -499,12 +499,12 @@ } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", - "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", + "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", "dependencies": { - "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, @@ -5518,14 +5518,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", - "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" + "version": "12.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-beta.1.tgz", + "integrity": "sha512-Fj56XnZe+ilFVgf66SB6ajQXf0rtH9o0GmICLM9qahLDZ2kAPsVu31PbbQ0YWpQB8SlDGLZE5f9Pf3Lx7cc7oA==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", - "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" + "version": "12.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-beta.1.tgz", + "integrity": "sha512-4BE7mSvSDWAmTXbzvNZg7NnaBoECv/QxsrNVKXdbaom5J9OhnnwvX3xhbEv98FAU2Awma8tLn9sHELZ46p2zbg==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -5752,12 +5752,12 @@ } }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", - "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", + "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", "requires": { - "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index f34f4d9e3..4d4e53a63 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -26,7 +26,7 @@ "license": "MIT", "dependencies": { "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", + "@mlabs-haskell/cardano-serialization-lib-gc": "12.0.0-alpha.31", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 8513539b1..001fb5415 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -1,109 +1,3 @@ -{- -Welcome to your new Dhall package-set! - -Below are instructions for how to edit this file for most use -cases, so that you don't need to know Dhall to use it. - -## Warning: Don't Move This Top-Level Comment! - -Due to how `dhall format` currently works, this comment's -instructions cannot appear near corresponding sections below -because `dhall format` will delete the comment. However, -it will not delete a top-level comment like this one. - -## Use Cases - -Most will want to do one or both of these options: -1. Override/Patch a package's dependency -2. Add a package not already in the default package set - -This file will continue to work whether you use one or both options. -Instructions for each option are explained below. - -### Overriding/Patching a package - -Purpose: -- Change a package's dependency to a newer/older release than the - default package set's release -- Use your own modified version of some dependency that may - include new API, changed API, removed API by - using your custom git repo of the library rather than - the package set's repo - -Syntax: -where `entityName` is one of the following: -- dependencies -- repo -- version -------------------------------- -let upstream = -- -in upstream - with packageName.entityName = "new value" -------------------------------- - -Example: -------------------------------- -let upstream = -- -in upstream - with halogen.version = "master" - with halogen.repo = "https://example.com/path/to/git/repo.git" - - with halogen-vdom.version = "v4.0.0" -------------------------------- - -### Additions - -Purpose: -- Add packages that aren't already included in the default package set - -Syntax: -where `` is: -- a tag (i.e. "v4.0.0") -- a branch (i.e. "master") -- commit hash (i.e. "701f3e44aafb1a6459281714858fadf2c4c2a977") -------------------------------- -let upstream = -- -in upstream - with new-package-name = - { dependencies = - [ "dependency1" - , "dependency2" - ] - , repo = - "https://example.com/path/to/git/repo.git" - , version = - "" - } -------------------------------- - -Example: -------------------------------- -let upstream = -- -in upstream - with benchotron = - { dependencies = - [ "arrays" - , "exists" - , "profunctor" - , "strings" - , "quickcheck" - , "lcg" - , "transformers" - , "foldable-traversable" - , "exceptions" - , "node-fs" - , "node-buffer" - , "node-readline" - , "datetime" - , "now" - ] - , repo = - "https://github.com/hdgarrood/purescript-benchotron.git" - , version = - "v7.0.0" - } -------------------------------- --} let upstream = https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20230105/packages.dhall sha256:3e9fbc9ba03e9a1fcfd895f65e2d50ee2f5e86c4cd273f3d5c841b655a0e1bda @@ -266,21 +160,27 @@ let additions = , cardano-serialization-lib = { dependencies = [ "aeson" + , "aff" , "argonaut" , "bifunctors" , "bytearrays" , "effect" , "either" + , "enums" , "maybe" , "nullable" , "ordered-collections" + , "partial" , "prelude" , "profunctor" + , "spec" + , "transformers" , "tuples" + , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0" + , version = "v1.0.0" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -321,14 +221,15 @@ let additions = , cardano-types = { dependencies = [ "aeson" + , "aff" , "arraybuffer-types" , "arrays" , "bifunctors" , "bytearrays" , "cardano-plutus-data-schema" , "cardano-serialization-lib" - , "console" , "control" + , "datetime" , "effect" , "either" , "encoding" @@ -342,6 +243,8 @@ let additions = , "literals" , "maybe" , "monad-logger" + , "mote" + , "mote-testplan" , "newtype" , "nonempty" , "nullable" @@ -349,11 +252,12 @@ let additions = , "partial" , "prelude" , "profunctor" + , "profunctor-lenses" , "quickcheck" , "rationals" , "record" , "safe-coerce" - , "strings" + , "spec" , "these" , "tuples" , "typelevel-prelude" @@ -362,7 +266,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v1.0.1" + , version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d" } , cardano-message-signing = { dependencies = @@ -470,6 +374,7 @@ let additions = , "node-process" , "node-readline" , "node-streams" + , "node-streams-aff" , "nonempty" , "now" , "nullable" @@ -478,6 +383,7 @@ let additions = , "ordered-collections" , "orders" , "parallel" + , "parsing" , "partial" , "plutus-types" , "posix-types" @@ -486,7 +392,6 @@ let additions = , "profunctor-lenses" , "quickcheck" , "quickcheck-combinators" - , "quickcheck-laws" , "random" , "rationals" , "record" @@ -511,7 +416,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da" + , version = "095f5bee58690fd51af3d879ce2c5cd65bce4ee4" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 4797c481b..46f63d373 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -247,11 +247,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; - sha256 = "1ikz6j3jvls3cvl6znrw55f59abzdaf7ggd2x7j3f81m5cvkxggr"; + rev = "903bf0adeefedc4d065ad6523ad079433bdd8e32"; + sha256 = "0jlfxrx037hyd4v0j7l2b16yxlm6nw6qlnr992hj9nzip36vbpfg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -259,11 +259,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; + version = "dc47aa3238dbdf9ad590483b305e70c948083b7e"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; - sha256 = "0s3j719mvwl1r149xgig4zs8y775v0zx31p15k2rxfi4df6xyw2r"; + rev = "dc47aa3238dbdf9ad590483b305e70c948083b7e"; + sha256 = "025yrsxv4a461x8kna2a04x0rls49rxbvjpkkblyyv7kyf5bvxiz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -271,11 +271,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v1.0.1"; + version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; - sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; + rev = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; + sha256 = "04h78kivkm9nnz5pxjqvgsf7g9gfzzjn6crwj3lh1m7kxgb1yxds"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -1013,6 +1013,18 @@ let installPhase = "ln -s $src $out"; }; + "node-streams-aff" = pkgs.stdenv.mkDerivation { + name = "node-streams-aff"; + version = "v4.0.1"; + src = pkgs.fetchgit { + url = "https://github.com/purescript-node/purescript-node-streams-aff.git"; + rev = "5c9b6937d14d6fed2273e3ac8780e3d256763e7d"; + sha256 = "1vm5s6mlawdpqamnqfyh1vbsybjm2s972m02h8mza4m47zlca948"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "node-url" = pkgs.stdenv.mkDerivation { name = "node-url"; version = "v6.0.0"; From 705386ab432f604fb37065fb88007ef5c2807665 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 1 Jul 2024 21:41:54 +0200 Subject: [PATCH 268/373] Re-generate spago-packages.nix in ctl-scaffold --- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 46f63d373..ad0c90735 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -259,11 +259,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "dc47aa3238dbdf9ad590483b305e70c948083b7e"; + version = "095f5bee58690fd51af3d879ce2c5cd65bce4ee4"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "dc47aa3238dbdf9ad590483b305e70c948083b7e"; - sha256 = "025yrsxv4a461x8kna2a04x0rls49rxbvjpkkblyyv7kyf5bvxiz"; + rev = "095f5bee58690fd51af3d879ce2c5cd65bce4ee4"; + sha256 = "134blalb5gp01s27fzp9p2382d6mrgwmvm8q2c2f5c74rj967zph"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 7c70de2e805ee4f699b26a9f07c856f802844be4 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 2 Jul 2024 00:36:41 +0200 Subject: [PATCH 269/373] Remove dead link in doc/plutip-testing.md --- doc/plutip-testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index e95ef09a7..f3629b055 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -272,7 +272,7 @@ For more complex checks you can use the [assertions library](./test-utils.md). ### Note on running clusters The communication with Plutip happens via the `plutip-server`'s HTTP interface, which allows to start or stop a cluster. -[`plutip-server`](../plutip-server) allows only once active cluster at a time. +`plutip-server` allows only once active cluster at a time. CTL currently launches `plutip-server` and `kupo` on pre-defined ports, so you won't be able to launch multiple environments to get parallel cluster. From 41f96ec5e87c5fc7782f322c45135eb5dfbdd076 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Tue, 2 Jul 2024 17:03:00 +0200 Subject: [PATCH 270/373] Do not add datums to witness set for mustPayTo* constraints --- Makefile | 5 ++++- examples/ECDSA.purs | 2 +- flake.lock | 15 ++++++++------- flake.nix | 2 +- src/Internal/ProcessConstraints.purs | 15 ++++----------- src/Internal/Types/TxConstraints.purs | 21 ++++++++------------- 6 files changed, 26 insertions(+), 34 deletions(-) diff --git a/Makefile b/Makefile index 421d89361..2f55deeb2 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,9 @@ SHELL := bash .ONESHELL: -.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format format query-testnet-tip clean check-explicit-exports build create-bundle-entrypoint create-html-entrypoint delete-bundle-entrypoint +.PHONY: esbuild-bundle esbuild-serve webpack-bundle webpack-serve check-format \ + format query-preview-testnet-tip query-preprod-testnet-tip \ + clean check-explicit-exports build create-bundle-entrypoint \ + create-html-entrypoint delete-bundle-entrypoint .SHELLFLAGS := -eu -o pipefail -c ps-sources := $(shell fd --no-ignore-parent -epurs) diff --git a/examples/ECDSA.purs b/examples/ECDSA.purs index 7aeaaa6f7..46c99b31a 100644 --- a/examples/ECDSA.purs +++ b/examples/ECDSA.purs @@ -66,7 +66,7 @@ contract = do -- | Prepare the ECDSA test by locking some funds at the validator address prepTest :: Contract TransactionHash prepTest = do - validator <- liftContractM "Caonnot get validator" getValidator + validator <- liftContractM "Cannot get validator" getValidator let valHash = validatorHash validator diff --git a/flake.lock b/flake.lock index de9a45935..817b27a77 100644 --- a/flake.lock +++ b/flake.lock @@ -3577,16 +3577,16 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1719456236, - "narHash": "sha256-ElMb/C8Ljq8jiqUqVBVAf2crn5hF+vnG5UeShdS6MGQ=", + "lastModified": 1715793024, + "narHash": "sha256-BoTWJKRc7gWSzptEuk32A/uV6MRkRx7vKdz34k8IPY8=", "owner": "IntersectMBO", "repo": "cardano-node", - "rev": "06943b66e634fc9eb83ddb376ed3508003dbb607", + "rev": "38c7f1cf2db12dff9c814ad10049f411a4b30448", "type": "github" }, "original": { "owner": "IntersectMBO", - "ref": "8.12.1", + "ref": "8.11.0-pre", "repo": "cardano-node", "type": "github" } @@ -17601,15 +17601,16 @@ "sodium": "sodium_6" }, "locked": { - "lastModified": 1719237167, - "narHash": "sha256-ifW5Jfwu/iwYs0r7f8AdiWDQK+Pr1gZLz+p5u8OtOgo=", + "lastModified": 1715872246, + "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "577f4d5072945a88dda6f5cfe205e6b4829a0423", + "rev": "530c88c6f90be2191172a1b7cbc181d65112ef0a", "type": "github" }, "original": { "owner": "input-output-hk", + "ref": "node-8.11", "repo": "iohk-nix", "type": "github" } diff --git a/flake.nix b/flake.nix index c2ab47989..6464f1410 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ flake = false; }; - cardano-node.url = "github:IntersectMBO/cardano-node/8.12.1"; + cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-pre"; # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 226db3901..01b5cae7c 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -184,7 +184,8 @@ import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (over, unwrap, wrap) import Data.Set as Set -import Data.Traversable (for, traverse_) +import Data.Traversable (traverse_) +import Data.Tuple (uncurry) import Data.Tuple.Nested (type (/\), (/\)) import Effect (Effect) import Effect.Aff.Class (liftAff) @@ -638,11 +639,6 @@ processConstraint MustPayToPubKeyAddress pkh skh mDatum scriptRef amount -> do networkId <- getNetworkId runExceptT do - -- If non-inline datum is presented, add it to 'datumWitnesses' and - -- Array of datums. - datum <- for mDatum \(dat /\ datp) -> do - when (datp == DatumWitness) $ lift $ addDatum dat - pure $ outputDatum dat datp let address = case skh of Just skh' -> BaseAddress @@ -657,7 +653,7 @@ processConstraint txOut = TransactionOutput { address , amount - , datum + , datum: uncurry outputDatum <$> mDatum , scriptRef: scriptRef } _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut @@ -666,7 +662,6 @@ processConstraint networkId <- getNetworkId runExceptT do let - datum' = outputDatum dat datp txOut = TransactionOutput { address: case mbCredential of Nothing -> EnterpriseAddress @@ -679,11 +674,9 @@ processConstraint , stakeCredential: wrap cred } , amount - , datum: Just datum' + , datum: Just $ outputDatum dat datp , scriptRef: scriptRef } - -- Note we don't `addDatum` as this included as part of `mustPayToScript` - -- constraint already. _cpsTransaction <<< _body <<< _outputs %= Array.(:) txOut _valueSpentBalancesOutputs <>= provideValue amount MustPayToNativeScript nsh mbCredential amount -> do diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index de6d26869..ae3f2a9f0 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -120,7 +120,6 @@ import Data.Generic.Rep (class Generic) import Data.Map (Map) import Data.Map (singleton) as Map import Data.Maybe (Maybe(Just, Nothing)) -import Data.Monoid (guard) import Data.Newtype (class Newtype, over, unwrap) import Data.Show.Generic (genericShow) import Data.Tuple.Nested (type (/\), (/\)) @@ -388,9 +387,8 @@ mustPayToScript -> DatumPresence -> Value -> TxConstraints -mustPayToScript vh dt dtp vl = - singleton (MustPayToScript vh Nothing dt dtp Nothing vl) - <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) +mustPayToScript vhash dat datp = + singleton <<< MustPayToScript vhash Nothing dat datp Nothing mustPayToScriptAddress :: ScriptHash @@ -399,9 +397,8 @@ mustPayToScriptAddress -> DatumPresence -> Value -> TxConstraints -mustPayToScriptAddress vh credential dt dtp vl = - singleton (MustPayToScript vh (Just credential) dt dtp Nothing vl) - <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) +mustPayToScriptAddress vhash cred dat datp = + singleton <<< MustPayToScript vhash (Just cred) dat datp Nothing -- | Lock the value, datum and reference script with a script. -- | Note that the provided reference script does *not* necessarily need to @@ -413,9 +410,8 @@ mustPayToScriptWithScriptRef -> ScriptRef -> Value -> TxConstraints -mustPayToScriptWithScriptRef vh dt dtp scriptRef vl = - singleton (MustPayToScript vh Nothing dt dtp (Just scriptRef) vl) - <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) +mustPayToScriptWithScriptRef vhash dat datp scriptRef = + singleton <<< MustPayToScript vhash Nothing dat datp (Just scriptRef) -- | Lock the value, datum and reference script with a script. -- | Note that the provided reference script does *not* necessarily need to @@ -429,9 +425,8 @@ mustPayToScriptAddressWithScriptRef -> ScriptRef -> Value -> TxConstraints -mustPayToScriptAddressWithScriptRef vh credential dt dtp scriptRef vl = - singleton (MustPayToScript vh (Just credential) dt dtp (Just scriptRef) vl) - <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) +mustPayToScriptAddressWithScriptRef vhash cred dat datp scriptRef = + singleton <<< MustPayToScript vhash (Just cred) dat datp (Just scriptRef) mustPayToNativeScript :: forall (i :: Type) (o :: Type) From dcc99373dac1f82a570f6714d426d93db2914fbb Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Tue, 2 Jul 2024 17:42:08 -0300 Subject: [PATCH 271/373] Refactor Cip30Mock to use external packages --- examples/SignData.purs | 2 +- packages.dhall | 48 +++++ spago-packages.nix | 39 +++- spago.dhall | 3 +- src/Internal/Contract/Wallet.purs | 16 +- src/Internal/Test/KeyDir.purs | 5 +- src/Internal/Wallet/Cip30Mock.js | 45 ----- src/Internal/Wallet/Cip30Mock.purs | 47 ++--- src/Internal/Wallet/Key.purs | 179 +---------------- templates/ctl-scaffold/packages.dhall | 49 ++++- templates/ctl-scaffold/spago-packages.nix | 41 +++- templates/ctl-scaffold/spago.dhall | 1 - test/Unit.purs | 2 +- test/Wallet/Bip32.purs | 16 +- test/Wallet/Cip30/SignData.js | 135 ------------- test/Wallet/Cip30/SignData.purs | 230 ---------------------- 16 files changed, 219 insertions(+), 639 deletions(-) delete mode 100644 src/Internal/Wallet/Cip30Mock.js delete mode 100644 test/Wallet/Cip30/SignData.js delete mode 100644 test/Wallet/Cip30/SignData.purs diff --git a/examples/SignData.purs b/examples/SignData.purs index 5ac619d01..36804b2f2 100644 --- a/examples/SignData.purs +++ b/examples/SignData.purs @@ -3,6 +3,7 @@ module Ctl.Examples.SignData (main, example, contract) where import Contract.Prelude import Cardano.Types (RawBytes) +import Cardano.Wallet.Cip30.SignData (checkCip30SignDataResponse) import Contract.Address (Address) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') @@ -12,7 +13,6 @@ import Data.Array (head) as Array import Data.ByteArray (byteArrayFromAscii) import Data.Maybe (fromJust) import Partial.Unsafe (unsafePartial) -import Test.Ctl.Wallet.Cip30.SignData (checkCip30SignDataResponse) main :: Effect Unit main = example testnetNamiConfig diff --git a/packages.dhall b/packages.dhall index 081878fc4..ab0b497fd 100644 --- a/packages.dhall +++ b/packages.dhall @@ -318,6 +318,54 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-plutus-types" , version = "v1.0.1" } + , cip30-mock = + { dependencies = + [ "aff-promise", "console", "effect", "functions", "prelude" ] + , repo = "https://github.com/mlabs-haskell/purescript-cip30-mock" + , version = "v1.0.0" + } + , cardano-collateral-select = + { dependencies = + [ "arrays" + , "cardano-types" + , "console" + , "effect" + , "exceptions" + , "foldable-traversable" + , "lists" + , "maybe" + , "newtype" + , "ordered-collections" + , "partial" + , "prelude" + , "tuples" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-collateral-select" + , version = "v1.0.0" + } + , cardano-key-wallet = + { dependencies = + [ "aeson" + , "aff" + , "arrays" + , "cardano-collateral-select" + , "cardano-message-signing" + , "cardano-types" + , "console" + , "effect" + , "either" + , "foldable-traversable" + , "maybe" + , "newtype" + , "prelude" + , "profunctor-lenses" + , "typelevel-prelude" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-key-wallet" + , version = "v1.0.0" + } , uplc-apply-args = { dependencies = [ "aff" diff --git a/spago-packages.nix b/spago-packages.nix index 504b0f7fe..0c2469783 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -209,6 +209,18 @@ let installPhase = "ln -s $src $out"; }; + "cardano-collateral-select" = pkgs.stdenv.mkDerivation { + name = "cardano-collateral-select"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-collateral-select"; + rev = "296fe978a292f36d9fd2c18a2d173772301e71b9"; + sha256 = "09mcdjndalc9a91l0kx9s0p3bh5j58lji230b142yvgk8qmmayi9"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cardano-hd-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-hd-wallet"; version = "v1.0.0"; @@ -221,6 +233,18 @@ let installPhase = "ln -s $src $out"; }; + "cardano-key-wallet" = pkgs.stdenv.mkDerivation { + name = "cardano-key-wallet"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; + rev = "f107d3dce0a0f1f866a4682783376ea9f476fd7d"; + sha256 = "0jxbzdjfvxvrf2nmay493x004d0y5jmnfqj06064nfihg5x0w2r8"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cardano-message-signing" = pkgs.stdenv.mkDerivation { name = "cardano-message-signing"; version = "v1.0.0"; @@ -305,6 +329,18 @@ let installPhase = "ln -s $src $out"; }; + "cip30-mock" = pkgs.stdenv.mkDerivation { + name = "cip30-mock"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip30-mock"; + rev = "7b4b7b2800f6d0ebd25554de63141cbd8c1e14a0"; + sha256 = "1b412s7p144h98csvy5w9z6vjhlpya9mqkxm2k8nxfdhq2znwfih"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cip30-typesafe" = pkgs.stdenv.mkDerivation { name = "cip30-typesafe"; version = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; @@ -1569,10 +1605,9 @@ let name = "uplc-apply-args"; version = "v1.0.0"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-uplc-apply-args.git"; + url = "https://github.com/mlabs-haskell/purescript-uplc-apply-args"; rev = "aa528d5310cbfbd01b4d94557f404d95cfb6bb3c"; sha256 = "1r064ca2m16hkbcswrvlng032ax1ygbpr2gxrlaqmjlf2gnin280"; - }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/spago.dhall b/spago.dhall index 957f2487e..81cabcc47 100644 --- a/spago.dhall +++ b/spago.dhall @@ -18,13 +18,14 @@ You can edit this file as you like. , "bignumber" , "bytearrays" , "cardano-hd-wallet" - , "cardano-message-signing" , "uplc-apply-args" , "cardano-plutus-data-schema" , "cardano-serialization-lib" + , "cardano-key-wallet" , "cardano-types" , "checked-exceptions" , "cip30" + , "cip30-mock" , "cip30-typesafe" , "console" , "control" diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 08a351965..851939cfb 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -59,12 +59,16 @@ getChangeAddress = withWallet do actionBasedOnWallet _.getChangeAddress \kw -> do networkId <- asks _.networkId - pure $ (unwrap kw).address networkId + addr <- liftAff $ (unwrap kw).address networkId + pure addr getRewardAddresses :: Contract (Array Address) getRewardAddresses = withWallet $ actionBasedOnWallet _.getRewardAddresses - \kw -> asks _.networkId <#> Array.singleton <<< (unwrap kw).address + \kw -> do + networkId <- asks _.networkId + addr <- liftAff $ (unwrap kw).address networkId + pure $ Array.singleton addr -- | Get all `Address`es of the browser wallet. getWalletAddresses :: Contract (Array Address) @@ -72,7 +76,8 @@ getWalletAddresses = withWallet do actionBasedOnWallet _.getUsedAddresses ( \kw -> do networkId <- asks _.networkId - pure $ Array.singleton $ (unwrap kw).address networkId + addr <- liftAff $ (unwrap kw).address networkId + pure $ Array.singleton $ addr ) signData :: Address -> RawBytes -> Contract DataSignature @@ -127,13 +132,14 @@ getWalletCollateral = do actionBasedOnWallet _.getCollateral \kw -> do queryHandle <- getQueryHandle networkId <- asks _.networkId - let addr = (unwrap kw).address networkId + addr <- liftAff $ (unwrap kw).address networkId utxos <- (liftAff $ queryHandle.utxosAt addr) <#> hush >>> fromMaybe Map.empty >>= filterLockedUtxos - pure $ (unwrap kw).selectCollateral coinsPerUtxoByte + mColl <- liftAff $ (unwrap kw).selectCollateral coinsPerUtxoByte (UInt.toInt maxCollateralInputs) utxos + pure mColl let {- This is a workaround for the case where Eternl wallet, in addition to designated collateral UTxO, returns all UTxO's with diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 12495fa54..366c40d48 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -235,8 +235,8 @@ markAsInactive :: FilePath -> Array KeyWallet -> Contract Unit markAsInactive backup wallets = do flip parTraverse_ wallets \wallet -> do networkId <- asks _.networkId + address <- liftAff $ Address.toBech32 <$> (unwrap wallet).address networkId let - address = Address.toBech32 $ (unwrap wallet).address networkId inactiveFlagFile = Path.concat [ backup, address, "inactive" ] liftAff $ writeTextFile UTF8 inactiveFlagFile $ "This address was marked as inactive. " @@ -285,8 +285,9 @@ backupWallets :: FilePath -> ContractEnv -> Array KeyWallet -> Aff Unit backupWallets backup env walletsArray = liftAff $ flip parTraverse_ walletsArray \wallet -> do + address <- liftAff $ Address.toBech32 <$> (unwrap wallet).address + env.networkId let - address = Address.toBech32 $ (unwrap wallet).address env.networkId payment = keyWalletPrivatePaymentKey wallet mbStake = keyWalletPrivateStakeKey wallet folder = Path.concat [ backup, address ] diff --git a/src/Internal/Wallet/Cip30Mock.js b/src/Internal/Wallet/Cip30Mock.js deleted file mode 100644 index 610baa03b..000000000 --- a/src/Internal/Wallet/Cip30Mock.js +++ /dev/null @@ -1,45 +0,0 @@ -/* eslint-disable no-global-assign */ - -export function injectCip30Mock(walletName) { - return mock => () => { - let window_ = typeof window != "undefined" ? window : (global.window = {}); - - if ( - typeof window_ == "object" && - typeof window_.cardano == "object" && - typeof window_.cardano[walletName] != "undefined" - ) { - throw ( - "injectCip30Mock: refusing to overwrite existing wallet (" + - walletName + - ")" - ); - } - - window_.cardano = {}; - window_.cardano[walletName] = { - enable: () => { - return new Promise((resolve, _reject) => - resolve({ - getNetworkId: mock.getNetworkId, - getUtxos: mock.getUtxos, - experimental: { - getCollateral: mock.getCollateral - }, - getBalance: mock.getBalance, - getUsedAddresses: mock.getUsedAddresses, - getUnusedAddresses: mock.getUnusedAddresses, - getChangeAddress: mock.getChangeAddress, - getRewardAddresses: mock.getRewardAddresses, - signTx: mock.signTx, - signData: mock.signData - }) - ); - } - }; - - return () => { - delete window_.cardano[walletName]; - }; - }; -} diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index a1a6b87c7..3a0d4079e 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -22,11 +22,12 @@ import Cardano.Types.NetworkId (NetworkId(MainnetId, TestnetId)) import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.PublicKey as PublicKey import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutput +import Cardano.Wallet.Cip30Mock (Cip30Mock, injectCip30Mock) import Contract.Monad (Contract) import Control.Monad.Error.Class (liftMaybe, try) import Control.Monad.Reader (ask) import Control.Monad.Reader.Class (local) -import Control.Promise (Promise, fromAff) +import Control.Promise (fromAff) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Helpers (liftEither) import Ctl.Internal.Wallet @@ -51,12 +52,11 @@ import Data.Array as Array import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Either (hush) import Data.Foldable (fold, foldMap) -import Data.Function.Uncurried (Fn2, mkFn2) +import Data.Function.Uncurried (mkFn2) import Data.Map as Map import Data.Maybe (Maybe(Just), maybe) import Data.Newtype (unwrap, wrap) import Data.UInt as UInt -import Effect (Effect) import Effect.Aff (Aff) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) @@ -118,24 +118,6 @@ withCip30Mock (KeyWallet keyWallet) mock contract = do MockNuFi -> "nufi" MockGenericCip30 name -> name -type Cip30Mock = - { getNetworkId :: Effect (Promise Int) - -- we ignore both the amount parameter and pagination: - , getUtxos :: Effect (Promise (Array String)) - -- we ignore the amount parameter: - , getCollateral :: Effect (Promise (Array String)) - , getBalance :: Effect (Promise String) - -- we ignore pagination parameter: - , getUsedAddresses :: Effect (Promise (Array String)) - , getUnusedAddresses :: Effect (Promise (Array String)) - , getChangeAddress :: Effect (Promise String) - , getRewardAddresses :: Effect (Promise (Array String)) - -- we ignore the 'isPartial' parameter - , signTx :: String -> Promise String - , signData :: - Fn2 String String (Promise { key :: String, signature :: String }) - } - mkCip30Mock :: PrivatePaymentKey -> Maybe PrivateStakeKey -> Contract Cip30Mock mkCip30Mock pKey mSKey = do @@ -148,22 +130,22 @@ mkCip30Mock pKey mSKey = do coinsPerUtxoByte = pparams.coinsPerUtxoByte maxCollateralInputs = UInt.toInt $ pparams.maxCollateralInputs - mbCollateral = fold $ - (unwrap keyWallet).selectCollateral coinsPerUtxoByte - maxCollateralInputs - utxos - pure mbCollateral + coll <- liftAff $ + (unwrap keyWallet).selectCollateral coinsPerUtxoByte + maxCollateralInputs + utxos + pure $ fold coll ownUtxos = do - let ownAddress = (unwrap keyWallet).address env.networkId + ownAddress <- liftAff $ (unwrap keyWallet).address env.networkId liftMaybe (error "No UTxOs at address") <<< hush =<< do queryHandle.utxosAt ownAddress keyWallet = privateKeysToKeyWallet pKey mSKey - addressHex = - byteArrayToHex $ unwrap $ encodeCbor - ((unwrap keyWallet).address env.networkId :: Address) - + addressHex <- liftAff $ + (byteArrayToHex <<< unwrap <<< encodeCbor) <$> + ((unwrap keyWallet).address env.networkId :: Aff Address) + let mbRewardAddressHex = mSKey <#> \stakeKey -> let stakePubKey = PrivateKey.toPublicKey (unwrap stakeKey) @@ -223,6 +205,3 @@ mkCip30Mock pKey mSKey = do , signature: byteArrayToHex $ unwrap signature } } - --- returns an action that removes the mock. -foreign import injectCip30Mock :: String -> Cip30Mock -> Effect (Effect Unit) diff --git a/src/Internal/Wallet/Key.purs b/src/Internal/Wallet/Key.purs index be85f5218..add12d9cc 100644 --- a/src/Internal/Wallet/Key.purs +++ b/src/Internal/Wallet/Key.purs @@ -1,178 +1,13 @@ module Ctl.Internal.Wallet.Key + ( module KeyWallet + ) where + +import Cardano.Wallet.Key ( KeyWallet(KeyWallet) , PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) - , privateKeysToAddress - , privateKeysToKeyWallet , keyWalletPrivatePaymentKey , keyWalletPrivateStakeKey - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch) - , decodeAeson - , encodeAeson - ) -import Cardano.MessageSigning (DataSignature) -import Cardano.MessageSigning (signData) as MessageSigning -import Cardano.Types.Address (Address(BaseAddress, EnterpriseAddress)) -import Cardano.Types.Coin (Coin) -import Cardano.Types.Credential (Credential(PubKeyHashCredential)) -import Cardano.Types.NetworkId (NetworkId) -import Cardano.Types.PaymentCredential (PaymentCredential(PaymentCredential)) -import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) -import Cardano.Types.PrivateKey as PrivateKey -import Cardano.Types.PublicKey as PublicKey -import Cardano.Types.RawBytes (RawBytes) -import Cardano.Types.StakeCredential (StakeCredential(StakeCredential)) -import Cardano.Types.Transaction (Transaction, hash) -import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) -import Cardano.Types.TransactionWitnessSet (TransactionWitnessSet) -import Cardano.Types.UtxoMap (UtxoMap) -import Contract.Prelude (class Newtype) -import Ctl.Internal.BalanceTx.Collateral.Select as Collateral -import Ctl.Internal.Lens (_vkeys) -import Data.Array (fromFoldable) -import Data.Either (note) -import Data.Foldable (fold) -import Data.Lens (set) -import Data.Maybe (Maybe(Just, Nothing)) -import Data.Newtype (unwrap, wrap) -import Effect.Aff (Aff) -import Effect.Class (liftEffect) - -------------------------------------------------------------------------------- --- Key backend -------------------------------------------------------------------------------- - --- | A wrapper over `PrivateKey` that provides an interface for CTL -newtype KeyWallet = KeyWallet - { address :: NetworkId -> Address - , selectCollateral :: - Coin - -> Int - -> UtxoMap - -> Maybe (Array TransactionUnspentOutput) - , signTx :: Transaction -> Aff TransactionWitnessSet - , signData :: NetworkId -> RawBytes -> Aff DataSignature - , paymentKey :: PrivatePaymentKey - , stakeKey :: Maybe PrivateStakeKey - } - -derive instance Newtype KeyWallet _ - -newtype PrivatePaymentKey = PrivatePaymentKey PrivateKey - -derive instance Newtype PrivatePaymentKey _ - -instance Show PrivatePaymentKey where - show _ = "(PrivatePaymentKey )" - -instance EncodeAeson PrivatePaymentKey where - encodeAeson (PrivatePaymentKey pk) = encodeAeson - (PrivateKey.toBech32 pk) - -instance DecodeAeson PrivatePaymentKey where - decodeAeson aeson = - decodeAeson aeson >>= - note (TypeMismatch "PrivateKey") - <<< map PrivatePaymentKey - <<< PrivateKey.fromBech32 - -newtype PrivateStakeKey = PrivateStakeKey PrivateKey - -derive instance Newtype PrivateStakeKey _ - -instance Show PrivateStakeKey where - show _ = "(PrivateStakeKey )" - -instance EncodeAeson PrivateStakeKey where - encodeAeson (PrivateStakeKey pk) = encodeAeson - (PrivateKey.toBech32 pk) - -instance DecodeAeson PrivateStakeKey where - decodeAeson aeson = - decodeAeson aeson >>= - note (TypeMismatch "PrivateKey") - <<< map PrivateStakeKey - <<< PrivateKey.fromBech32 - -keyWalletPrivatePaymentKey :: KeyWallet -> PrivatePaymentKey -keyWalletPrivatePaymentKey = unwrap >>> _.paymentKey - -keyWalletPrivateStakeKey :: KeyWallet -> Maybe PrivateStakeKey -keyWalletPrivateStakeKey = unwrap >>> _.stakeKey - -privateKeysToAddress - :: PrivatePaymentKey -> Maybe PrivateStakeKey -> NetworkId -> Address -privateKeysToAddress payKey mbStakeKey networkId = do - let pubPayKey = PrivateKey.toPublicKey (unwrap payKey) - case mbStakeKey of - Just stakeKey -> - let - pubStakeKey = PrivateKey.toPublicKey (unwrap stakeKey) - in - BaseAddress - { networkId - , paymentCredential: - ( PaymentCredential $ PubKeyHashCredential $ PublicKey.hash $ - pubPayKey - ) - , stakeCredential: - ( StakeCredential $ PubKeyHashCredential $ PublicKey.hash $ - pubStakeKey - ) - } - - Nothing -> pubPayKey # PublicKey.hash - >>> PubKeyHashCredential - >>> wrap - >>> { networkId, paymentCredential: _ } - >>> EnterpriseAddress - -privateKeysToKeyWallet - :: PrivatePaymentKey -> Maybe PrivateStakeKey -> KeyWallet -privateKeysToKeyWallet payKey mbStakeKey = - KeyWallet - { address - , selectCollateral - , signTx - , signData - , paymentKey: payKey - , stakeKey: mbStakeKey - } - where - address :: NetworkId -> Address - address = privateKeysToAddress payKey mbStakeKey - - selectCollateral - :: Coin - -> Int - -> UtxoMap - -> Maybe (Array TransactionUnspentOutput) - selectCollateral coinsPerUtxoByte maxCollateralInputs utxos = fromFoldable - <$> Collateral.selectCollateral coinsPerUtxoByte maxCollateralInputs utxos - - signTx :: Transaction -> Aff TransactionWitnessSet - signTx tx = liftEffect do - let - txHash = hash tx - payWitness = PrivateKey.makeVkeyWitness txHash (unwrap payKey) - mbStakeWitness = - mbStakeKey <#> \stakeKey -> - PrivateKey.makeVkeyWitness txHash (unwrap stakeKey) - let - witnessSet' = set _vkeys - ([ payWitness ] <> fold (pure <$> mbStakeWitness)) - mempty - pure witnessSet' - - signData :: NetworkId -> RawBytes -> Aff DataSignature - signData networkId payload = do - liftEffect $ MessageSigning.signData (unwrap payKey) - (address networkId) - payload + , privateKeysToAddress + , privateKeysToKeyWallet + ) as KeyWallet diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 8be52f038..669048fce 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -318,6 +318,54 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-plutus-types" , version = "v1.0.1" } + , cip30-mock = + { dependencies = + [ "aff-promise", "console", "effect", "functions", "prelude" ] + , repo = "https://github.com/mlabs-haskell/purescript-cip30-mock" + , version = "v1.0.0" + } + , cardano-collateral-select = + { dependencies = + [ "arrays" + , "cardano-types" + , "console" + , "effect" + , "exceptions" + , "foldable-traversable" + , "lists" + , "maybe" + , "newtype" + , "ordered-collections" + , "partial" + , "prelude" + , "tuples" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-collateral-select" + , version = "v1.0.0" + } + , cardano-key-wallet = + { dependencies = + [ "aeson" + , "aff" + , "arrays" + , "cardano-collateral-select" + , "cardano-message-signing" + , "cardano-types" + , "console" + , "effect" + , "either" + , "foldable-traversable" + , "maybe" + , "newtype" + , "prelude" + , "profunctor-lenses" + , "typelevel-prelude" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-key-wallet" + , version = "v1.0.0" + } , uplc-apply-args = { dependencies = [ "aff" @@ -450,7 +498,6 @@ let additions = , "bignumber" , "bytearrays" , "cardano-hd-wallet" - , "cardano-message-signing" , "cardano-plutus-data-schema" , "cardano-serialization-lib" , "cardano-types" diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index f8db4dae6..f2c859bbf 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -209,6 +209,18 @@ let installPhase = "ln -s $src $out"; }; + "cardano-collateral-select" = pkgs.stdenv.mkDerivation { + name = "cardano-collateral-select"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-collateral-select"; + rev = "296fe978a292f36d9fd2c18a2d173772301e71b9"; + sha256 = "09mcdjndalc9a91l0kx9s0p3bh5j58lji230b142yvgk8qmmayi9"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cardano-hd-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-hd-wallet"; version = "v1.0.0"; @@ -221,6 +233,18 @@ let installPhase = "ln -s $src $out"; }; + "cardano-key-wallet" = pkgs.stdenv.mkDerivation { + name = "cardano-key-wallet"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; + rev = "f107d3dce0a0f1f866a4682783376ea9f476fd7d"; + sha256 = "0jxbzdjfvxvrf2nmay493x004d0y5jmnfqj06064nfihg5x0w2r8"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cardano-message-signing" = pkgs.stdenv.mkDerivation { name = "cardano-message-signing"; version = "v1.0.0"; @@ -257,7 +281,7 @@ let installPhase = "ln -s $src $out"; }; - "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { + "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; src = pkgs.fetchgit { @@ -317,6 +341,18 @@ let installPhase = "ln -s $src $out"; }; + "cip30-mock" = pkgs.stdenv.mkDerivation { + name = "cip30-mock"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip30-mock"; + rev = "7b4b7b2800f6d0ebd25554de63141cbd8c1e14a0"; + sha256 = "1b412s7p144h98csvy5w9z6vjhlpya9mqkxm2k8nxfdhq2znwfih"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cip30-typesafe" = pkgs.stdenv.mkDerivation { name = "cip30-typesafe"; version = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; @@ -1581,10 +1617,9 @@ let name = "uplc-apply-args"; version = "v1.0.0"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-uplc-apply-args.git"; + url = "https://github.com/mlabs-haskell/purescript-uplc-apply-args"; rev = "aa528d5310cbfbd01b4d94557f404d95cfb6bb3c"; sha256 = "1r064ca2m16hkbcswrvlng032ax1ygbpr2gxrlaqmjlf2gnin280"; - }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/spago.dhall b/templates/ctl-scaffold/spago.dhall index 40de0f604..b25547240 100644 --- a/templates/ctl-scaffold/spago.dhall +++ b/templates/ctl-scaffold/spago.dhall @@ -7,7 +7,6 @@ You can edit this file as you like. [ "aff" , "bytearrays" , "cardano-hd-wallet" - , "cardano-message-signing" , "cardano-plutus-data-schema" , "cardano-serialization-lib" , "cardano-transaction-lib" diff --git a/test/Unit.purs b/test/Unit.purs index c7882764b..b2802bd5f 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -2,6 +2,7 @@ module Test.Ctl.Unit (main, testPlan) where import Prelude +import Cardano.Wallet.Cip30.SignData as Cip30SignData import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Contract.Test.Utils (exitCode, interruptOnSignal) import Data.Maybe (Maybe(Just)) @@ -34,7 +35,6 @@ import Test.Ctl.Types.TokenName as Types.TokenName import Test.Ctl.Types.Transaction as Types.Transaction import Test.Ctl.UsedTxOuts as UsedTxOuts import Test.Ctl.Wallet.Bip32 as Bip32 -import Test.Ctl.Wallet.Cip30.SignData as Cip30SignData import Test.Spec.Runner (defaultConfig) -- Run with `spago test --main Test.Ctl.Unit` diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index 763893415..06f712ab7 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -10,7 +10,7 @@ import Contract.Wallet.Key ( StakeKeyPresence(WithStakeKey) , mkKeyWalletFromMnemonic ) -import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) +import Ctl.Internal.Wallet.Key (KeyWallet) import Data.Lens (_Left, preview) import Data.UInt as UInt import Effect.Aff (Aff) @@ -31,15 +31,19 @@ suite = do <> ")" ) do - Address.fromBech32 addressStr `shouldEqual` - hush - ( mkKeyWalletFromMnemonic phrase1 + addr <- liftAff $ do + case + ( hush $ mkKeyWalletFromMnemonic phrase1 { accountIndex: UInt.fromInt accountIndex , addressIndex: UInt.fromInt addressIndex } - WithStakeKey <#> - \(KeyWallet wallet) -> wallet.address MainnetId + WithStakeKey ) + of + Nothing -> pure Nothing + Just (wlt :: KeyWallet) -> do + Just <$> (unwrap wlt).address MainnetId + Address.fromBech32 addressStr `shouldEqual` addr group "Invalid mnemonics" do test "handles errors for invalid phrases" do blush (mkKeyWalletFromMnemonic invalidPhrase zero WithStakeKey) diff --git a/test/Wallet/Cip30/SignData.js b/test/Wallet/Cip30/SignData.js deleted file mode 100644 index 353135d76..000000000 --- a/test/Wallet/Cip30/SignData.js +++ /dev/null @@ -1,135 +0,0 @@ -import * as csl from "@mlabs-haskell/cardano-serialization-lib-gc"; -import * as lib from "@mlabs-haskell/cardano-message-signing"; - -function opt_chain(maybe, obj) { - const isNothing = x => x === null || x === undefined; - let result = obj; - for (let i = 2; i < arguments.length; i++) { - if (isNothing(result)) { - return maybe.nothing; - } else { - result = result[arguments[i]](); - } - } - return isNothing(result) ? maybe.nothing : maybe.just(result); -} - -const fromBytes = name => bytes => () => { - return lib[name].from_bytes(bytes); -}; - -// ----------------------------------------------------------------------------- -// PublicKey -// ----------------------------------------------------------------------------- - -// verifySignature :: COSESign1 -> PublicKey -> CborBytes -> Effect Boolean -export function verifySignature(coseSign1) { - return publicKey => sigStructBytes => () => { - const signature = csl.Ed25519Signature.from_bytes(coseSign1.signature()); - return publicKey.verify(sigStructBytes, signature); - }; -} - -// ----------------------------------------------------------------------------- -// COSESign1 -// ----------------------------------------------------------------------------- - -// _fromBytesCoseSign1 :: CborBytes -> Effect COSESign1 -export const fromBytesCoseSign1 = fromBytes("COSESign1"); - -// getSignedData :: COSESign1 -> Effect CborBytes -export function getSignedData(coseSign1) { - return () => { - return coseSign1.signed_data(null, null).to_bytes(); - }; -} - -// getCoseSign1ProtectedHeaders :: COSESign1 -> HeaderMap -const getCoseSign1ProtectedHeaders = coseSign1 => { - return coseSign1.headers().protected().deserialized_headers(); -}; - -// getCoseSign1ProtectedHeaderAlg :: MaybeFfiHelper -> COSESign1 -> Maybe Int -export function _getCoseSign1ProtectedHeaderAlg(maybe) { - return coseSign1 => { - const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); - return opt_chain( - maybe, - protectedHeaders, - "algorithm_id", - "as_int", - "as_i32" - ); - }; -} - -// _getCoseSign1ProtectedHeaderAddress -// :: MaybeFfiHelper -> COSESign1 -> Maybe CborBytes -export function _getCoseSign1ProtectedHeaderAddress(maybe) { - return coseSign1 => { - const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); - const cborValue = protectedHeaders.header(lib.Label.new_text("address")); - return opt_chain(maybe, cborValue, "as_bytes"); - }; -} - -// _getCoseSign1ProtectedHeaderKid -// :: MaybeFfiHelper -> COSESign1 -> Maybe RawBytes -export function _getCoseSign1ProtectedHeaderKid(maybe) { - return coseSign1 => { - const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); - return opt_chain(maybe, protectedHeaders, "key_id"); - }; -} - -// ----------------------------------------------------------------------------- -// COSEKey -// ----------------------------------------------------------------------------- - -// _fromBytesCoseKey :: CborBytes -> Effect COSEKey -export const fromBytesCoseKey = fromBytes("COSEKey"); - -// _getCoseKeyHeaderKty :: MaybeFfiHelper -> COSEKey -> Maybe Int -export function _getCoseKeyHeaderKty(maybe) { - return coseKey => { - return opt_chain(maybe, coseKey.key_type(), "as_int", "as_i32"); - }; -} - -// _getCoseKeyHeaderAlg :: MaybeFfiHelper -> COSEKey -> Maybe Int -export function _getCoseKeyHeaderAlg(maybe) { - return coseKey => { - return opt_chain(maybe, coseKey, "algorithm_id", "as_int", "as_i32"); - }; -} - -// _getCoseKeyHeaderCrv :: MaybeFfiHelper -> COSEKey -> Maybe Int -export function _getCoseKeyHeaderCrv(maybe) { - return coseKey => { - const cborValue = coseKey.header( - lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) - ) - ); - return opt_chain(maybe, cborValue, "as_int", "as_i32"); - }; -} - -// _getCoseKeyHeaderX :: MaybeFfiHelper -> COSEKey -> Maybe RawBytes -export function _getCoseKeyHeaderX(maybe) { - return coseKey => { - const cborValue = coseKey.header( - lib.Label.new_int( - lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) - ) - ); - return opt_chain(maybe, cborValue, "as_bytes"); - }; -} - -// _getCoseKeyHeaderKid :: MaybeFfiHelper -> COSESign1 -> Maybe RawBytes -export function _getCoseKeyHeaderKid(maybe) { - return coseKey => { - return opt_chain(maybe, coseKey, "key_id"); - }; -} diff --git a/test/Wallet/Cip30/SignData.purs b/test/Wallet/Cip30/SignData.purs deleted file mode 100644 index 0d9e5abe0..000000000 --- a/test/Wallet/Cip30/SignData.purs +++ /dev/null @@ -1,230 +0,0 @@ -module Test.Ctl.Wallet.Cip30.SignData - ( suite - , COSEKey - , COSESign1 - , checkCip30SignDataResponse - ) where - -import Prelude - -import Cardano.AsCbor (encodeCbor) -import Cardano.MessageSigning (signData) -import Cardano.Types - ( Address - , CborBytes - , PrivateKey(PrivateKey) - , PublicKey - , RawBytes - ) -import Cardano.Types.NetworkId (NetworkId(MainnetId)) -import Cardano.Types.NetworkId as NetworkId -import Cardano.Types.PrivateKey as PrivateKey -import Cardano.Types.PublicKey as PublicKey -import Contract.Keys (publicKeyFromBytes) -import Ctl.Internal.FfiHelpers (MaybeFfiHelper, maybeFfiHelper) -import Ctl.Internal.Wallet.Cip30 (DataSignature) -import Ctl.Internal.Wallet.Key - ( PrivatePaymentKey - , PrivateStakeKey - , privateKeysToAddress - ) -import Data.ByteArray (byteArrayFromIntArrayUnsafe) -import Data.Maybe (Maybe(Just), fromJust, fromMaybe) -import Data.Newtype (class Newtype, unwrap, wrap) -import Data.Traversable (traverse_) -import Effect (Effect) -import Effect.Aff (Aff) -import Effect.Class (liftEffect) -import Mote (group, test) -import Mote.TestPlanM (TestPlanM) -import Partial.Unsafe (unsafePartial) -import Test.Ctl.Utils (assertTrue, errMaybe) -import Test.QuickCheck.Arbitrary (class Arbitrary, arbitrary) -import Test.QuickCheck.Gen (Gen, chooseInt, randomSample, vectorOf) - -suite :: TestPlanM (Aff Unit) Unit -suite = - group "signData (CIP-30)" do - test "generates a valid signature and key for a given payload" do - traverse_ testCip30SignData =<< liftEffect (randomSample arbitrary) - --------------------------------------------------------------------------------- --- Tests --------------------------------------------------------------------------------- - -type TestInput = - { privateKey :: ArbitraryPrivatePaymentKey - , privateStakeKey :: Maybe ArbitraryPrivateStakeKey - , payload :: RawBytes - , networkId :: ArbitraryNetworkId - } - -type DeserializedDataSignature = - { coseKey :: COSEKey - , coseSign1 :: COSESign1 - } - -testCip30SignData :: TestInput -> Aff Unit -testCip30SignData { privateKey, privateStakeKey, payload, networkId } = do - let - address = privateKeysToAddress (unwrap privateKey) - (unwrap <$> privateStakeKey) - (unwrap networkId) - - dataSignature <- liftEffect $ signData (privatePaymentKey) address - payload - { coseKey } <- checkCip30SignDataResponse address dataSignature - - assertTrue "COSE_Key's x (-2) header must be set to public key bytes" - (getCoseKeyHeaderX coseKey == Just (PublicKey.toRawBytes publicPaymentKey)) - where - privatePaymentKey :: PrivateKey - privatePaymentKey = unwrap $ unwrap privateKey - - publicPaymentKey :: PublicKey - publicPaymentKey = PrivateKey.toPublicKey privatePaymentKey - -checkCip30SignDataResponse - :: Address -> DataSignature -> Aff DeserializedDataSignature -checkCip30SignDataResponse address { key, signature } = do - coseSign1 <- liftEffect $ fromBytesCoseSign1 signature - coseKey <- liftEffect $ fromBytesCoseKey key - - checkCoseSign1ProtectedHeaders coseSign1 - checkCoseKeyHeaders coseKey - checkKidHeaders coseSign1 coseKey - liftEffect $ checkVerification coseSign1 coseKey - pure { coseKey, coseSign1 } - where - checkCoseSign1ProtectedHeaders :: COSESign1 -> Aff Unit - checkCoseSign1ProtectedHeaders coseSign1 = do - assertTrue "COSE_Sign1's alg (1) header must be set to EdDSA (-8)" - (getCoseSign1ProtectedHeaderAlg coseSign1 == Just (-8)) - - assertTrue "COSE_Sign1's \"address\" header must be set to address bytes" - ( getCoseSign1ProtectedHeaderAddress coseSign1 - == Just (encodeCbor address) - ) - - checkCoseKeyHeaders :: COSEKey -> Aff Unit - checkCoseKeyHeaders coseKey = do - assertTrue "COSE_Key's kty (1) header must be set to OKP (1)" - (getCoseKeyHeaderKty coseKey == Just 1) - - assertTrue "COSE_Key's alg (3) header must be set to EdDSA (-8)" - (getCoseKeyHeaderAlg coseKey == Just (-8)) - - assertTrue "COSE_Key's crv (-1) header must be set to Ed25519 (6)" - (getCoseKeyHeaderCrv coseKey == Just (6)) - - checkKidHeaders :: COSESign1 -> COSEKey -> Aff Unit - checkKidHeaders coseSign1 coseKey = - assertTrue - "COSE_Sign1's kid (4) and COSE_Key's kid (2) headers, if present, must \ - \be set to the same value" - (getCoseSign1ProtectedHeaderKid coseSign1 == getCoseKeyHeaderKid coseKey) - - checkVerification :: COSESign1 -> COSEKey -> Effect Unit - checkVerification coseSign1 coseKey = do - publicKey <- - errMaybe "COSE_Key's x (-2) header must be set to public key bytes" - $ getCoseKeyHeaderX coseKey >>= publicKeyFromBytes - sigStructBytes <- getSignedData coseSign1 - assertTrue "Signature verification failed" - =<< verifySignature coseSign1 publicKey sigStructBytes - --------------------------------------------------------------------------------- --- Arbitrary --------------------------------------------------------------------------------- - -newtype ArbitraryPrivatePaymentKey = - ArbitraryPrivatePaymentKey PrivatePaymentKey - -derive instance Newtype ArbitraryPrivatePaymentKey _ - -instance Arbitrary ArbitraryPrivatePaymentKey where - arbitrary = - wrap <<< wrap <<< unwrap <$> (arbitrary :: Gen ArbitraryPrivateKey) - -newtype ArbitraryPrivateStakeKey = ArbitraryPrivateStakeKey PrivateStakeKey - -derive instance Newtype ArbitraryPrivateStakeKey _ - -instance Arbitrary ArbitraryPrivateStakeKey where - arbitrary = - wrap <<< wrap <<< unwrap <$> (arbitrary :: Gen ArbitraryPrivateKey) - -newtype ArbitraryPrivateKey = ArbitraryPrivateKey PrivateKey - -derive instance Newtype ArbitraryPrivateKey _ - -instance Arbitrary ArbitraryPrivateKey where - arbitrary = - wrap <<< unsafePartial fromJust <$> - (PrivateKey.fromRawBytes <$> privateKeyBytes) - where - privateKeyBytes :: Gen RawBytes - privateKeyBytes = - wrap <<< byteArrayFromIntArrayUnsafe <$> vectorOf 32 (chooseInt 0 255) - -newtype ArbitraryNetworkId = ArbitraryNetworkId NetworkId - -derive instance Newtype ArbitraryNetworkId _ - -instance Arbitrary ArbitraryNetworkId where - arbitrary = - wrap <<< fromMaybe MainnetId <<< NetworkId.fromInt <$> chooseInt 0 1 - --------------------------------------------------------------------------------- --- FFI --------------------------------------------------------------------------------- - -foreign import data COSESign1 :: Type -foreign import _getCoseSign1ProtectedHeaderAlg - :: MaybeFfiHelper -> COSESign1 -> Maybe Int - -foreign import _getCoseSign1ProtectedHeaderAddress - :: MaybeFfiHelper -> COSESign1 -> Maybe CborBytes - -foreign import _getCoseSign1ProtectedHeaderKid - :: MaybeFfiHelper -> COSESign1 -> Maybe RawBytes - -foreign import data COSEKey :: Type -foreign import _getCoseKeyHeaderKty :: MaybeFfiHelper -> COSEKey -> Maybe Int -foreign import _getCoseKeyHeaderAlg :: MaybeFfiHelper -> COSEKey -> Maybe Int -foreign import _getCoseKeyHeaderCrv :: MaybeFfiHelper -> COSEKey -> Maybe Int -foreign import _getCoseKeyHeaderX :: MaybeFfiHelper -> COSEKey -> Maybe RawBytes -foreign import _getCoseKeyHeaderKid - :: MaybeFfiHelper -> COSEKey -> Maybe RawBytes - -foreign import fromBytesCoseSign1 :: CborBytes -> Effect COSESign1 -foreign import fromBytesCoseKey :: CborBytes -> Effect COSEKey - -foreign import getSignedData :: COSESign1 -> Effect CborBytes -foreign import verifySignature - :: COSESign1 -> PublicKey -> CborBytes -> Effect Boolean - -getCoseSign1ProtectedHeaderAlg :: COSESign1 -> Maybe Int -getCoseSign1ProtectedHeaderAlg = _getCoseSign1ProtectedHeaderAlg maybeFfiHelper - -getCoseSign1ProtectedHeaderAddress :: COSESign1 -> Maybe CborBytes -getCoseSign1ProtectedHeaderAddress = - _getCoseSign1ProtectedHeaderAddress maybeFfiHelper - -getCoseSign1ProtectedHeaderKid :: COSESign1 -> Maybe RawBytes -getCoseSign1ProtectedHeaderKid = _getCoseSign1ProtectedHeaderKid maybeFfiHelper - -getCoseKeyHeaderKty :: COSEKey -> Maybe Int -getCoseKeyHeaderKty = _getCoseKeyHeaderKty maybeFfiHelper - -getCoseKeyHeaderAlg :: COSEKey -> Maybe Int -getCoseKeyHeaderAlg = _getCoseKeyHeaderAlg maybeFfiHelper - -getCoseKeyHeaderCrv :: COSEKey -> Maybe Int -getCoseKeyHeaderCrv = _getCoseKeyHeaderCrv maybeFfiHelper - -getCoseKeyHeaderX :: COSEKey -> Maybe RawBytes -getCoseKeyHeaderX = _getCoseKeyHeaderX maybeFfiHelper - -getCoseKeyHeaderKid :: COSEKey -> Maybe RawBytes -getCoseKeyHeaderKid = _getCoseKeyHeaderKid maybeFfiHelper From 4627a2e88eab32610dcdf87a9bbe0f3167b5c753 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 3 Jul 2024 16:47:18 +0300 Subject: [PATCH 272/373] Nix formatting --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index c593fefad..1db377fd0 100644 --- a/flake.nix +++ b/flake.nix @@ -405,7 +405,7 @@ let ctlPkgsExp = import ./spago-packages.nix { inherit pkgs; }; ctlScaffoldPkgsExp = import ./templates/ctl-scaffold/spago-packages.nix { inherit pkgs; }; - ctlPs = (attrValues ctlPkgsExp.inputs); + ctlPs = attrValues ctlPkgsExp.inputs; ctlScaffoldPs = filter (p: p.name != "cardano-transaction-lib") (attrValues ctlScaffoldPkgsExp.inputs); intersection = pkgs.lib.lists.intersectLists ctlPs ctlScaffoldPs; From 999b8728dd6c86b2a155934165746649fc62bd27 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 3 Jul 2024 18:27:36 +0400 Subject: [PATCH 273/373] Fix CI --- examples/AlwaysSucceeds.purs | 4 +- examples/BalanceTxConstraints.purs | 2 +- examples/ChangeGeneration.purs | 8 +- examples/ContractTestUtils.purs | 16 +- examples/ExUnits.purs | 2 +- examples/IncludeDatum.purs | 6 +- examples/KeyWallet/SignMultiple.purs | 1 - examples/PlutusV2/ReferenceInputs.purs | 10 +- examples/SignMultiple.purs | 1 - examples/TxChaining.purs | 1 - packages.dhall | 55 ++++++ spago-packages.nix | 18 +- spago.dhall | 2 +- src/Contract/Constraints.purs | 1 + src/Contract/Test/Assert.purs | 6 +- src/Contract/Transaction.purs | 41 +---- src/Internal/BalanceTx/BalanceTx.purs | 37 ++-- src/Internal/BalanceTx/Collateral.purs | 10 +- src/Internal/BalanceTx/Error.purs | 9 +- src/Internal/BalanceTx/ExUnitsAndMinFee.purs | 4 +- src/Internal/Contract/MinFee.purs | 11 +- src/Internal/Contract/Sign.purs | 3 +- src/Internal/Lens.purs | 182 ------------------- src/Internal/ProcessConstraints.purs | 46 +++-- src/Internal/Serialization/MinFee.purs | 3 +- src/Internal/Test/KeyDir.purs | 3 +- src/Internal/Types/TxConstraints.purs | 3 +- src/Internal/Wallet/Key.purs | 2 +- templates/ctl-scaffold/packages.dhall | 58 +++++- templates/ctl-scaffold/spago-packages.nix | 18 +- test/Plutip/Contract.purs | 30 ++- test/Plutip/Staking.purs | 1 - test/PrivateKey.purs | 4 +- 33 files changed, 273 insertions(+), 325 deletions(-) delete mode 100644 src/Internal/Lens.purs diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index b449d7410..d227c52aa 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -17,6 +17,7 @@ import Cardano.Types , PlutusScript , ScriptHash , TransactionHash + , _input ) import Cardano.Types.BigNum as BigNum import Cardano.Types.PlutusData as Datum @@ -30,8 +31,7 @@ import Contract.PlutusData (unitRedeemer) import Contract.ScriptLookups as Lookups import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction - ( _input - , awaitTxConfirmed + ( awaitTxConfirmed , lookupTxHash , submitTxFromConstraints ) diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index 937329e40..13b54824c 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -56,7 +56,7 @@ import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) import Ctl.Examples.Helpers (mkAssetName) as Helpers import Data.Array (head) import Data.Array (sort) as Array -import Data.Map (empty, fromFoldable, keys, member) as Map +import Data.Map (fromFoldable, keys, member) as Map import Data.Set (findMin) as Set import JS.BigInt as BigInt diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index d96ef3387..012b6362c 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -2,6 +2,10 @@ module Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) where import Prelude +import Cardano.Types + ( _body + , _outputs + ) import Cardano.Types.BigNum as BigNum import Contract.BalanceTxConstraints (mustSendChangeWithDatum) import Contract.Monad (Contract) @@ -13,9 +17,7 @@ import Contract.PlutusData import Contract.ScriptLookups as Lookups import Contract.Scripts (validatorHash) import Contract.Transaction - ( _body - , _outputs - , awaitTxConfirmed + ( awaitTxConfirmed , balanceTx , signTransaction , submit diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index edc2ea175..b930bc44c 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -11,7 +11,16 @@ module Ctl.Examples.ContractTestUtils import Contract.Prelude -import Cardano.Types (BigNum, Coin, ExUnits(ExUnits), TransactionOutput) +import Cardano.Types + ( BigNum + , Coin + , ExUnits(ExUnits) + , TransactionOutput + , _body + , _datum + , _fee + , _output + ) import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(PubKeyHashCredential)) import Cardano.Types.Int as Int @@ -39,10 +48,6 @@ import Contract.Test.Assert import Contract.Transaction ( TransactionHash , TransactionUnspentOutput - , _body - , _datum - , _fee - , _output , awaitTxConfirmed , balanceTx , lookupTxHash @@ -63,7 +68,6 @@ import Contract.Wallet import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) import Data.Lens (_1, _2, view, (%~)) -import Data.Map as Map import Effect.Exception (throw) type ContractParams = diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index 434b27f33..9fc323912 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -2,6 +2,7 @@ module Ctl.Examples.ExUnits where import Contract.Prelude +import Cardano.Types (_input) import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(ScriptHashCredential)) import Contract.Address (mkAddress) @@ -15,7 +16,6 @@ import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash - , _input , awaitTxConfirmed , lookupTxHash , submitTxFromConstraints diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 4b5a97900..086e95250 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -12,7 +12,10 @@ module Ctl.Examples.IncludeDatum import Contract.Prelude -import Cardano.Types (Credential(ScriptHashCredential)) +import Cardano.Types + ( Credential(ScriptHashCredential) + , _input + ) import Cardano.Types.BigNum as BigNum import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) @@ -24,7 +27,6 @@ import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash - , _input , awaitTxConfirmed , lookupTxHash , submitTxFromConstraints diff --git a/examples/KeyWallet/SignMultiple.purs b/examples/KeyWallet/SignMultiple.purs index 3e4ee3c95..7e63e7a15 100644 --- a/examples/KeyWallet/SignMultiple.purs +++ b/examples/KeyWallet/SignMultiple.purs @@ -19,7 +19,6 @@ import Contract.Value (lovelaceValueOf) as Value import Control.Monad.Reader (asks) import Ctl.Examples.KeyWallet.Internal.Pkh2PkhContract (runKeyWalletContract_) import Data.Map (Map) -import Data.Map as Map import Data.Newtype (unwrap) import Data.Set (Set) import Data.UInt (UInt) diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index 8b4743102..5651e90e5 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -2,7 +2,11 @@ module Ctl.Examples.PlutusV2.ReferenceInputs (contract, example, main) where import Contract.Prelude -import Cardano.Types (Transaction) +import Cardano.Types + ( Transaction + , _body + , _referenceInputs + ) import Cardano.Types.BigNum as BigNum import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') @@ -23,8 +27,6 @@ import Contract.Test.Assert ) import Contract.Transaction ( TransactionInput - , _body - , _referenceInputs , awaitTxConfirmed , balanceTx , signTransaction @@ -42,7 +44,7 @@ import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (elem, head) as Array import Data.Lens.Getter ((^.)) -import Data.Map (empty, member, toUnfoldable) as Map +import Data.Map (member, toUnfoldable) as Map main :: Effect Unit main = example testnetNamiConfig diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 137444f72..2d644a907 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -38,7 +38,6 @@ import Contract.Wallet import Control.Monad.Reader (asks) import Data.Array (head) import Data.Map (Map, filter) -import Data.Map as Map import Data.Set (Set) import Data.UInt (UInt) import Effect.Ref as Ref diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index 80e995a3c..56c92096b 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -33,7 +33,6 @@ import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes) import Data.Array (head) -import Data.Map as Map main :: Effect Unit main = example testnetNamiConfig diff --git a/packages.dhall b/packages.dhall index a7021ff19..031e6285c 100644 --- a/packages.dhall +++ b/packages.dhall @@ -390,6 +390,61 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" , version = "v1.0.0" } + , cardano-transaction-builder = + { dependencies = + [ "aeson" + , "aff" + , "arraybuffer-types" + , "arrays" + , "bifunctors" + , "bytearrays" + , "cardano-plutus-data-schema" + , "cardano-serialization-lib" + , "cardano-types" + , "console" + , "control" + , "datetime" + , "effect" + , "either" + , "encoding" + , "exceptions" + , "foldable-traversable" + , "foreign-object" + , "integers" + , "js-bigints" + , "lattice" + , "lists" + , "literals" + , "maybe" + , "monad-logger" + , "mote" + , "mote-testplan" + , "newtype" + , "nonempty" + , "nullable" + , "ordered-collections" + , "partial" + , "prelude" + , "profunctor" + , "profunctor-lenses" + , "quickcheck" + , "rationals" + , "record" + , "safe-coerce" + , "spec" + , "strings" + , "these" + , "transformers" + , "tuples" + , "typelevel-prelude" + , "uint" + , "unfoldable" + , "unsafe-coerce" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" + , version = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1" + } , mote-testplan = { dependencies = [ "aff" diff --git a/spago-packages.nix b/spago-packages.nix index 081d8d789..3a41d7d07 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -257,13 +257,25 @@ let installPhase = "ln -s $src $out"; }; + "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { + name = "cardano-transaction-builder"; + version = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; + rev = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1"; + sha256 = "14hflxhl5g8yv43k4i7xh6lx5cf3vc0vzhy76jw2b4nrp83ks6l3"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v1.0.1"; + version = "40d9468a4712ad2bf57ebede19fae92208f082a0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; - sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; + rev = "40d9468a4712ad2bf57ebede19fae92208f082a0"; + sha256 = "1iawinsrsipqgjrcgv650x3i2iad1z2vlwlhvlcx9880qmv0m9gc"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/spago.dhall b/spago.dhall index c1d183644..cf65b5d00 100644 --- a/spago.dhall +++ b/spago.dhall @@ -21,6 +21,7 @@ You can edit this file as you like. , "cardano-message-signing" , "cardano-plutus-data-schema" , "cardano-serialization-lib" + , "cardano-transaction-builder" , "cardano-types" , "checked-exceptions" , "cip30" @@ -110,6 +111,5 @@ You can edit this file as you like. , "templates/ctl-scaffold/src/**/*.purs" , "templates/ctl-scaffold/test/**/*.purs" , "templates/ctl-scaffold/exe/**/*.purs" - , "../purescript-cardano-transaction-builder/src/**/*.purs" ] } diff --git a/src/Contract/Constraints.purs b/src/Contract/Constraints.purs index d9c7cd73e..1faa0c244 100644 --- a/src/Contract/Constraints.purs +++ b/src/Contract/Constraints.purs @@ -1,6 +1,7 @@ module Contract.Constraints where import Prelude +import Prim hiding (Constraint) import Cardano.Types (Slot) import Cardano.Types.AssetName (AssetName) diff --git a/src/Contract/Test/Assert.purs b/src/Contract/Test/Assert.purs index 4d663947d..2ad6194b2 100644 --- a/src/Contract/Test/Assert.purs +++ b/src/Contract/Test/Assert.purs @@ -79,6 +79,11 @@ import Cardano.Types , TransactionHash , TransactionOutput , Value + , _amount + , _datum + , _redeemers + , _scriptRef + , _witnessSet ) import Cardano.Types.BigNum as BigNum import Cardano.Types.Value as Value @@ -92,7 +97,6 @@ import Control.Monad.Error.Class as E import Control.Monad.Reader (ReaderT, ask, local, mapReaderT, runReaderT) import Control.Monad.Trans.Class (lift) import Ctl.Internal.Contract.Monad (ContractEnv) -import Ctl.Internal.Lens (_amount, _datum, _redeemers, _scriptRef, _witnessSet) import Ctl.Internal.Metadata.MetadataType (class MetadataType, metadataLabel) import Data.Array (foldr) import Data.Array (fromFoldable, length, mapWithIndex, partition) as Array diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index d7524907a..4d66f38eb 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -28,7 +28,6 @@ import Cardano.Transaction.Builder ) import Cardano.Types ( Bech32String - , Coin , GeneralTransactionMetadata , PoolPubKeyHash(PoolPubKeyHash) , Transaction(Transaction) @@ -38,7 +37,6 @@ import Cardano.Types , TransactionUnspentOutput(TransactionUnspentOutput) , UtxoMap , _body - , _fee , _outputs ) import Cardano.Types @@ -107,40 +105,6 @@ import Ctl.Internal.Contract.QueryHandle.Error ) as X import Ctl.Internal.Contract.Sign (signTransaction) import Ctl.Internal.Contract.Sign (signTransaction) as X -import Ctl.Internal.Lens - ( _address - , _amount - , _auxiliaryData - , _auxiliaryDataHash - , _body - , _certs - , _collateral - , _collateralReturn - , _datum - , _fee - , _input - , _inputs - , _isValid - , _mint - , _nativeScripts - , _networkId - , _output - , _outputs - , _plutusData - , _plutusScripts - , _redeemers - , _referenceInputs - , _requiredSigners - , _scriptDataHash - , _scriptRef - , _totalCollateral - , _ttl - , _update - , _validityStartInterval - , _vkeys - , _withdrawals - , _witnessSet - ) as X import Ctl.Internal.Service.Error (ClientError) import Ctl.Internal.Types.ScriptLookups (ScriptLookups) import Ctl.Internal.Types.TxConstraints (TxConstraints) @@ -155,14 +119,13 @@ import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right)) import Data.Foldable (foldl, length) import Data.Lens.Getter (view) -import Data.Map (Map) import Data.Map (empty, insert, toUnfoldable) as Map import Data.Maybe (Maybe(Nothing)) import Data.Newtype (unwrap) import Data.String.Utils (startsWith) import Data.Traversable (class Traversable, for_, traverse) -import Data.Tuple (Tuple(Tuple), fst) -import Data.Tuple.Nested (type (/\), (/\)) +import Data.Tuple (fst) +import Data.Tuple.Nested ((/\)) import Data.UInt (UInt) import Effect.Aff (bracket, error) import Effect.Aff.Class (liftAff) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 0eaeb3aef..6aa2ca9ed 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -4,11 +4,7 @@ module Ctl.Internal.BalanceTx import Prelude -import Cardano.Transaction.Edit - ( attachRedeemers - , editTransaction - , mkRedeemersContext - ) +import Cardano.Transaction.Edit (editTransaction) import Cardano.Types ( AssetClass(AssetClass) , Certificate(StakeDeregistration, StakeRegistration) @@ -20,6 +16,18 @@ import Cardano.Types , TransactionOutput , UtxoMap , Value(Value) + , _amount + , _body + , _certs + , _fee + , _inputs + , _mint + , _networkId + , _outputs + , _plutusScripts + , _referenceInputs + , _withdrawals + , _witnessSet ) import Cardano.Types.Address (Address) import Cardano.Types.BigNum as BigNum @@ -65,7 +73,6 @@ import Ctl.Internal.BalanceTx.Constraints import Ctl.Internal.BalanceTx.Error ( BalanceTxError ( CouldNotGetUtxos - , ReindexRedeemersError , CouldNotGetCollateral , InsufficientCollateralUtxos , NumericOverflowError @@ -96,20 +103,6 @@ import Ctl.Internal.Contract.Wallet , getWalletUtxos ) as Wallet import Ctl.Internal.Helpers (liftEither, pprintTagSet, unsafeFromJust, (??)) -import Ctl.Internal.Lens - ( _amount - , _body - , _certs - , _fee - , _inputs - , _mint - , _networkId - , _outputs - , _plutusScripts - , _referenceInputs - , _withdrawals - , _witnessSet - ) import Ctl.Internal.Partition ( equipartition , equipartitionValueWithTokenQuantityUpperBound @@ -133,7 +126,6 @@ import Data.Array.NonEmpty , zipWith ) as NEArray import Data.Array.NonEmpty as NEA -import Data.Bifunctor (lmap) import Data.Bitraversable (ltraverse) import Data.Either (Either, hush, note) import Data.Foldable (fold, foldMap, foldr, length, null, sum) @@ -861,8 +853,7 @@ getStakingBalance tx depositLovelacesPerCert = -------------------------------------------------------------------------------- logBalancerState - :: forall rest - . String + :: String -> UtxoMap -> BalancerState Transaction -> BalanceTxM Unit diff --git a/src/Internal/BalanceTx/Collateral.purs b/src/Internal/BalanceTx/Collateral.purs index faef30a39..3a773ea3e 100644 --- a/src/Internal/BalanceTx/Collateral.purs +++ b/src/Internal/BalanceTx/Collateral.purs @@ -13,6 +13,10 @@ import Cardano.Types , Transaction , TransactionOutput , TransactionUnspentOutput + , _body + , _collateral + , _collateralReturn + , _totalCollateral ) import Cardano.Types.Address (Address) import Cardano.Types.BigNum (add, max, maxValue, sub, zero) as BigNum @@ -27,12 +31,6 @@ import Ctl.Internal.BalanceTx.Error ) import Ctl.Internal.BalanceTx.Types (BalanceTxM, askCoinsPerUtxoUnit) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) -import Ctl.Internal.Lens - ( _body - , _collateral - , _collateralReturn - , _totalCollateral - ) import Data.Either (Either(Left, Right)) import Data.Foldable (foldl) import Data.Lens ((.~)) diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 7b2195cf2..3ed6911e5 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -27,14 +27,19 @@ import Prelude import Cardano.AsCbor (encodeCbor) import Cardano.Transaction.Edit (DetachedRedeemer) -import Cardano.Types (Coin, Redeemer(Redeemer), Transaction) +import Cardano.Types + ( Coin + , Redeemer(Redeemer) + , Transaction + , _redeemers + , _witnessSet + ) import Cardano.Types.BigNum as BigNum import Cardano.Types.TransactionInput (TransactionInput(TransactionInput)) import Cardano.Types.TransactionOutput (TransactionOutput) import Cardano.Types.UtxoMap (UtxoMap, pprintUtxoMap) import Cardano.Types.Value (Value) import Ctl.Internal.Helpers (bugTrackerLink, pprintTagSet) -import Ctl.Internal.Lens (_redeemers, _witnessSet) import Ctl.Internal.QueryM.Ogmios ( RedeemerPointer , ScriptFailure diff --git a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs index f44cc80f2..f82298db8 100644 --- a/src/Internal/BalanceTx/ExUnitsAndMinFee.purs +++ b/src/Internal/BalanceTx/ExUnitsAndMinFee.purs @@ -18,6 +18,9 @@ import Cardano.Types , TransactionOutput(TransactionOutput) , TransactionWitnessSet , UtxoMap + , _body + , _isValid + , _witnessSet ) import Cardano.Types.BigNum as BigNum import Cardano.Types.ScriptRef as ScriptRef @@ -38,7 +41,6 @@ import Ctl.Internal.BalanceTx.Types import Ctl.Internal.Contract.MinFee (calculateMinFee) as Contract.MinFee import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Helpers (unsafeFromJust) -import Ctl.Internal.Lens (_body, _isValid, _witnessSet) import Ctl.Internal.QueryM.Ogmios ( AdditionalUtxoSet , TxEvaluationFailure(AdditionalUtxoOverlap) diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index 05fd89c54..354321682 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -2,7 +2,15 @@ module Ctl.Internal.Contract.MinFee (calculateMinFee) where import Prelude -import Cardano.Types (Coin, Ed25519KeyHash, Transaction, UtxoMap) +import Cardano.Types + ( Coin + , Ed25519KeyHash + , Transaction + , UtxoMap + , _body + , _collateral + , _inputs + ) import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) import Cardano.Types.Credential (asPubKeyHash) import Cardano.Types.TransactionInput (TransactionInput) @@ -10,7 +18,6 @@ import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) import Ctl.Internal.Contract.Wallet (getWalletAddresses) import Ctl.Internal.Helpers (liftM, liftedM) -import Ctl.Internal.Lens (_body, _collateral, _inputs) import Ctl.Internal.Serialization.MinFee (calculateMinFeeCsl) import Data.Array (fromFoldable, mapMaybe) import Data.Array as Array diff --git a/src/Internal/Contract/Sign.purs b/src/Internal/Contract/Sign.purs index 6d269fc69..98c347a91 100644 --- a/src/Internal/Contract/Sign.purs +++ b/src/Internal/Contract/Sign.purs @@ -4,12 +4,11 @@ module Ctl.Internal.Contract.Sign import Prelude -import Cardano.Types (Transaction) +import Cardano.Types (Transaction, _body, _inputs, _witnessSet) import Control.Monad.Reader (asks) import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncWalletWithTxInputs) import Ctl.Internal.Contract.Monad (Contract) import Ctl.Internal.Contract.Wallet (withWallet) -import Ctl.Internal.Lens (_body, _inputs, _witnessSet) import Ctl.Internal.Wallet (Wallet(GenericCip30, KeyWallet)) import Data.Array (fromFoldable) import Data.Lens ((<>~)) diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs deleted file mode 100644 index 461d88a86..000000000 --- a/src/Internal/Lens.purs +++ /dev/null @@ -1,182 +0,0 @@ -module Ctl.Internal.Lens - ( _address - , _amount - , _auxiliaryData - , _auxiliaryDataHash - , _body - , _certs - , _collateral - , _collateralReturn - , _datum - , _fee - , _input - , _inputs - , _isValid - , _mint - , _nativeScripts - , _networkId - , _output - , _outputs - , _plutusData - , _plutusScripts - , _redeemers - , _referenceInputs - , _requiredSigners - , _scriptDataHash - , _scriptRef - , _totalCollateral - , _ttl - , _update - , _validityStartInterval - , _vkeys - , _withdrawals - , _witnessSet - ) where - -import Prelude - -import Cardano.Types - ( Address - , AuxiliaryData - , AuxiliaryDataHash - , BootstrapWitness - , Certificate - , Coin - , Ed25519KeyHash - , Mint - , NativeScript - , NetworkId - , OutputDatum - , PlutusData - , PlutusScript - , Redeemer - , ScriptDataHash - , ScriptRef - , Slot - , Transaction - , TransactionBody - , TransactionInput - , TransactionOutput - , TransactionUnspentOutput - , TransactionWitnessSet - , Update - , Value - , Vkeywitness - ) -import Cardano.Types.RewardAddress (RewardAddress) -import Data.Lens (Lens') -import Data.Lens.Iso.Newtype (_Newtype) -import Data.Lens.Record (prop) -import Data.Map (Map) -import Data.Maybe (Maybe) -import Type.Proxy (Proxy(Proxy)) - --- Transaction - -_body :: Lens' Transaction TransactionBody -_body = _Newtype <<< prop (Proxy :: Proxy "body") - -_isValid :: Lens' Transaction Boolean -_isValid = _Newtype <<< prop (Proxy :: Proxy "isValid") - -_witnessSet :: Lens' Transaction TransactionWitnessSet -_witnessSet = _Newtype <<< prop (Proxy :: Proxy "witnessSet") - -_auxiliaryData :: Lens' Transaction (Maybe AuxiliaryData) -_auxiliaryData = _Newtype <<< prop (Proxy :: Proxy "auxiliaryData") - --- TransactionBody - -_inputs :: Lens' TransactionBody (Array TransactionInput) -_inputs = _Newtype <<< prop (Proxy :: Proxy "inputs") - -_fee :: Lens' TransactionBody Coin -_fee = _Newtype <<< prop (Proxy :: Proxy "fee") - -_outputs :: Lens' TransactionBody (Array TransactionOutput) -_outputs = _Newtype <<< prop (Proxy :: Proxy "outputs") - -_certs :: Lens' TransactionBody (Array Certificate) -_certs = _Newtype <<< prop (Proxy :: Proxy "certs") - -_networkId :: Lens' TransactionBody (Maybe NetworkId) -_networkId = _Newtype <<< prop (Proxy :: Proxy "networkId") - -_scriptDataHash :: Lens' TransactionBody (Maybe ScriptDataHash) -_scriptDataHash = _Newtype <<< prop (Proxy :: Proxy "scriptDataHash") - -_collateral :: Lens' TransactionBody (Array TransactionInput) -_collateral = _Newtype <<< prop (Proxy :: Proxy "collateral") - -_collateralReturn :: Lens' TransactionBody (Maybe TransactionOutput) -_collateralReturn = _Newtype <<< prop (Proxy :: Proxy "collateralReturn") - -_totalCollateral :: Lens' TransactionBody (Maybe Coin) -_totalCollateral = _Newtype <<< prop (Proxy :: Proxy "totalCollateral") - -_referenceInputs :: Lens' TransactionBody (Array TransactionInput) -_referenceInputs = _Newtype <<< prop (Proxy :: Proxy "referenceInputs") - -_requiredSigners :: Lens' TransactionBody (Array Ed25519KeyHash) -_requiredSigners = _Newtype <<< prop (Proxy :: Proxy "requiredSigners") - -_withdrawals :: Lens' TransactionBody (Map RewardAddress Coin) -_withdrawals = _Newtype <<< prop (Proxy :: Proxy "withdrawals") - -_mint :: Lens' TransactionBody (Maybe Mint) -_mint = _Newtype <<< prop (Proxy :: Proxy "mint") - -_auxiliaryDataHash :: Lens' TransactionBody (Maybe AuxiliaryDataHash) -_auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") - -_ttl :: Lens' TransactionBody (Maybe Slot) -_ttl = _Newtype <<< prop (Proxy :: Proxy "ttl") - -_update :: Lens' TransactionBody (Maybe Update) -_update = _Newtype <<< prop (Proxy :: Proxy "update") - -_validityStartInterval :: Lens' TransactionBody (Maybe Slot) -_validityStartInterval = _Newtype <<< prop - (Proxy :: Proxy "validityStartInterval") - --- TransactionUnspentOutput - -_output :: Lens' TransactionUnspentOutput TransactionOutput -_output = _Newtype <<< prop (Proxy :: Proxy "output") - -_input :: Lens' TransactionUnspentOutput TransactionInput -_input = _Newtype <<< prop (Proxy :: Proxy "input") - --- TransactionOutput - -_amount :: Lens' TransactionOutput Value -_amount = _Newtype <<< prop (Proxy :: Proxy "amount") - -_scriptRef :: Lens' TransactionOutput (Maybe ScriptRef) -_scriptRef = _Newtype <<< prop (Proxy :: Proxy "scriptRef") - -_datum :: Lens' TransactionOutput (Maybe OutputDatum) -_datum = _Newtype <<< prop (Proxy :: Proxy "datum") - -_address :: Lens' TransactionOutput Address -_address = _Newtype <<< prop (Proxy :: Proxy "address") - --- TransactionWitnessSet - -_redeemers :: Lens' TransactionWitnessSet (Array Redeemer) -_redeemers = _Newtype <<< prop (Proxy :: Proxy "redeemers") - -_plutusData :: Lens' TransactionWitnessSet (Array PlutusData) -_plutusData = _Newtype <<< prop (Proxy :: Proxy "plutusData") - -_plutusScripts :: Lens' TransactionWitnessSet (Array PlutusScript) -_plutusScripts = _Newtype <<< prop (Proxy :: Proxy "plutusScripts") - -_nativeScripts :: Lens' TransactionWitnessSet (Array NativeScript) -_nativeScripts = _Newtype <<< prop (Proxy :: Proxy "nativeScripts") - -_vkeys :: Lens' TransactionWitnessSet (Array Vkeywitness) -_vkeys = _Newtype <<< prop (Proxy :: Proxy "vkeys") - -_bootstraps :: Lens' TransactionWitnessSet (Array BootstrapWitness) -_bootstraps = _Newtype <<< prop (Proxy :: Proxy "bootstraps") diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index ad69f9280..c1cf2434f 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -31,6 +31,16 @@ import Cardano.Types , TransactionUnspentOutput(TransactionUnspentOutput) , UtxoMap , Value(Value) + , _body + , _certs + , _inputs + , _isValid + , _mint + , _networkId + , _outputs + , _referenceInputs + , _requiredSigners + , _withdrawals , _witnessSet ) import Cardano.Types as Cardano @@ -60,19 +70,31 @@ import Control.Monad.Trans.Class (lift) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle, wrapQueryM) import Ctl.Internal.Helpers (liftEither, liftM, unsafeFromJust) -import Ctl.Internal.Lens - ( _body - , _certs - , _inputs - , _isValid - , _mint - , _networkId - , _outputs - , _referenceInputs - , _requiredSigners - , _withdrawals +import Ctl.Internal.ProcessConstraints.Error + ( MkUnbalancedTxError + ( CannotSatisfyAny + , CannotWithdrawRewardsNativeScript + , CannotWithdrawRewardsPlutusScript + , CannotWithdrawRewardsPubKey + , DatumWrongHash + , CannotMintZero + , ExpectedPlutusScriptGotNativeScript + , CannotFindDatum + , CannotQueryDatum + , CannotGetValidatorHashFromAddress + , TxOutRefWrongType + , CannotConvertPOSIXTimeRange + , WrongRefScriptHash + , ValidatorHashNotFound + , MintingPolicyNotFound + , DatumNotFound + , TxOutRefNotFound + , CannotSolveTimeConstraints + , NumericOverflow + , OwnPubKeyAndStakeKeyMissing + , CannotAttachRedeemer + ) ) -import Ctl.Internal.ProcessConstraints.Error (MkUnbalancedTxError(..)) import Ctl.Internal.ProcessConstraints.State ( ConstraintProcessingState , ConstraintsM diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index c6511ae68..9a882efb0 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -10,6 +10,8 @@ import Cardano.Types , Transaction , Vkey(Vkey) , Vkeywitness(Vkeywitness) + , _vkeys + , _witnessSet ) import Cardano.Types.BigNum as BigNum import Cardano.Types.Ed25519Signature as Ed25519Signature @@ -19,7 +21,6 @@ import Cardano.Types.PublicKey as PublicKey import Cardano.Types.Transaction as Transaction import Control.Monad.Error.Class (class MonadThrow) import Ctl.Internal.Helpers (unsafeFromJust) -import Ctl.Internal.Lens (_vkeys, _witnessSet) import Ctl.Internal.NativeScripts (getMaximumSigners) import Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 7c523f04c..77f2314eb 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -4,7 +4,7 @@ module Ctl.Internal.Test.KeyDir import Prelude -import Cardano.Types (BigNum, Value) +import Cardano.Types (BigNum, Value, _amount) import Cardano.Types.Address (toBech32) as Address import Cardano.Types.BigNum as BigNum import Cardano.Types.MultiAsset as MultiAsset @@ -52,7 +52,6 @@ import Control.Monad.Except (throwError) import Control.Monad.Reader (asks, local) import Control.Parallel (parTraverse, parTraverse_) import Ctl.Internal.Helpers (logWithLevel, unsafeFromJust) -import Ctl.Internal.Lens (_amount) import Ctl.Internal.ProcessConstraints (mkUnbalancedTxImpl) import Ctl.Internal.Test.ContractTest (ContractTest(ContractTest)) import Ctl.Internal.Test.UtxoDistribution diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index 92b6afbc1..3e1fb9a1f 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -114,7 +114,6 @@ import Cardano.Types.RedeemerDatum (RedeemerDatum) import Cardano.Types.RedeemerDatum as RedeemerDatum import Ctl.Internal.Types.Interval (POSIXTimeRange) import Data.Array (singleton) -import Data.Array (singleton) as X import Data.Array as Array import Data.Foldable (class Foldable) import Data.Generic.Rep (class Generic) @@ -122,7 +121,7 @@ import Data.Map (Map) import Data.Map (singleton) as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Monoid (guard) -import Data.Newtype (class Newtype, over, unwrap) +import Data.Newtype (class Newtype) import Data.Show.Generic (genericShow) import Data.Tuple.Nested (type (/\), (/\)) import Prim.TypeError (class Warn, Text) diff --git a/src/Internal/Wallet/Key.purs b/src/Internal/Wallet/Key.purs index be85f5218..377d64b8a 100644 --- a/src/Internal/Wallet/Key.purs +++ b/src/Internal/Wallet/Key.purs @@ -19,6 +19,7 @@ import Aeson ) import Cardano.MessageSigning (DataSignature) import Cardano.MessageSigning (signData) as MessageSigning +import Cardano.Types (_vkeys) import Cardano.Types.Address (Address(BaseAddress, EnterpriseAddress)) import Cardano.Types.Coin (Coin) import Cardano.Types.Credential (Credential(PubKeyHashCredential)) @@ -35,7 +36,6 @@ import Cardano.Types.TransactionWitnessSet (TransactionWitnessSet) import Cardano.Types.UtxoMap (UtxoMap) import Contract.Prelude (class Newtype) import Ctl.Internal.BalanceTx.Collateral.Select as Collateral -import Ctl.Internal.Lens (_vkeys) import Data.Array (fromFoldable) import Data.Either (note) import Data.Foldable (fold) diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 8513539b1..0d4794c8d 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -362,7 +362,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v1.0.1" + , version = "40d9468a4712ad2bf57ebede19fae92208f082a0" } , cardano-message-signing = { dependencies = @@ -409,6 +409,61 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-mote-testplan" , version = "v1.0.0" } + , cardano-transaction-builder = + { dependencies = + [ "aeson" + , "aff" + , "arraybuffer-types" + , "arrays" + , "bifunctors" + , "bytearrays" + , "cardano-plutus-data-schema" + , "cardano-serialization-lib" + , "cardano-types" + , "console" + , "control" + , "datetime" + , "effect" + , "either" + , "encoding" + , "exceptions" + , "foldable-traversable" + , "foreign-object" + , "integers" + , "js-bigints" + , "lattice" + , "lists" + , "literals" + , "maybe" + , "monad-logger" + , "mote" + , "mote-testplan" + , "newtype" + , "nonempty" + , "nullable" + , "ordered-collections" + , "partial" + , "prelude" + , "profunctor" + , "profunctor-lenses" + , "quickcheck" + , "rationals" + , "record" + , "safe-coerce" + , "spec" + , "strings" + , "these" + , "transformers" + , "tuples" + , "typelevel-prelude" + , "uint" + , "unfoldable" + , "unsafe-coerce" + ] + , repo = + "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" + , version = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1" + } , cardano-transaction-lib = { dependencies = [ "aeson" @@ -428,6 +483,7 @@ let additions = , "cardano-message-signing" , "cardano-plutus-data-schema" , "cardano-serialization-lib" + , "cardano-transaction-builder" , "cardano-types" , "checked-exceptions" , "cip30" diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 4797c481b..2b12f3f7e 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -257,6 +257,18 @@ let installPhase = "ln -s $src $out"; }; + "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { + name = "cardano-transaction-builder"; + version = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; + rev = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1"; + sha256 = "14hflxhl5g8yv43k4i7xh6lx5cf3vc0vzhy76jw2b4nrp83ks6l3"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; @@ -271,11 +283,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v1.0.1"; + version = "40d9468a4712ad2bf57ebede19fae92208f082a0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; - sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; + rev = "40d9468a4712ad2bf57ebede19fae92208f082a0"; + sha256 = "1iawinsrsipqgjrcgv650x3i2iad1z2vlwlhvlcx9880qmv0m9gc"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index ecbe18e71..eb5ccb90e 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -6,15 +6,14 @@ import Prelude import Cardano.AsCbor (decodeCbor) import Cardano.Serialization.Lib (fromBytes) -import Cardano.Transaction.Builder - ( TransactionBuilderStep(..) - , buildTransaction - ) +import Cardano.Transaction.Builder (TransactionBuilderStep(Pay)) import Cardano.Types ( Address , GeneralTransactionMetadata(GeneralTransactionMetadata) , StakeCredential(StakeCredential) , TransactionUnspentOutput(TransactionUnspentOutput) + , _input + , _output ) import Cardano.Types.AssetName as AssetName import Cardano.Types.Coin as Coin @@ -23,7 +22,7 @@ import Cardano.Types.Credential ) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint -import Cardano.Types.PaymentCredential (PaymentCredential(..)) +import Cardano.Types.PaymentCredential (PaymentCredential(PaymentCredential)) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Value (lovelaceValueOf) import Contract.Address @@ -88,8 +87,6 @@ import Contract.Transaction , TransactionHash(TransactionHash) , TransactionInput(TransactionInput) , TransactionOutput(TransactionOutput) - , _input - , _output , awaitTxConfirmed , balanceTx , balanceTxE @@ -174,7 +171,7 @@ import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (error, throw) import JS.BigInt as BigInt -import Mote (group, only, skip, test) +import Mote (group, skip, test) import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) @@ -243,7 +240,7 @@ suite = do lookups = mempty ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints res <- - ( balanceTxE ubTx Map.empty + ( balanceTxE ubTx usedUtxos (mustNotSpendUtxosWithOutRefs $ Map.keys utxos) ) res `shouldSatisfy` isLeft @@ -362,7 +359,7 @@ suite = do Constraints.mustSpendScriptOutput txInput unitRedeemer ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - res <- balanceTxE ubTx Map.empty (mustUseCollateralUtxos Map.empty) + res <- balanceTxE ubTx usedUtxos (mustUseCollateralUtxos Map.empty) res `shouldSatisfy` case _ of Left (InsufficientCollateralUtxos mp) -> Map.isEmpty mp _ -> false @@ -790,7 +787,7 @@ suite = do lookups' = lookups <> Lookups.ownPaymentPubKeyHash pkh ubTx /\ usedUtxos <- mkUnbalancedTx lookups' constraints' - result <- balanceTxE ubTx Map.empty mempty + result <- balanceTxE ubTx usedUtxos mempty result `shouldSatisfy` isLeft test "mustSpendAtLeast succeeds to spend" do @@ -1032,7 +1029,7 @@ suite = do ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints let ubTx' = setGeneralTxMetadata ubTx givenMetadata - bsTx <- signTransaction =<< balanceTx ubTx' Map.empty mempty + bsTx <- signTransaction =<< balanceTx ubTx' usedUtxos mempty txId <- submit bsTx awaitTxConfirmed txId @@ -1720,9 +1717,9 @@ suite = do lookups0 :: Lookups.ScriptLookups lookups0 = mempty - unbalancedTx0 /\ usedUtxos <- mkUnbalancedTx lookups0 constraints0 + unbalancedTx0 /\ usedUtxos0 <- mkUnbalancedTx lookups0 constraints0 - withBalancedTx unbalancedTx0 usedUtxos mempty \balancedTx0 -> do + withBalancedTx unbalancedTx0 usedUtxos0 mempty \balancedTx0 -> do balancedSignedTx0 <- signTransaction balancedTx0 additionalUtxos <- createAdditionalUtxos balancedSignedTx0 @@ -1744,8 +1741,9 @@ suite = do balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx1 /\ usedUtxos <- mkUnbalancedTx lookups1 constraints1 - balancedTx1 <- balanceTx unbalancedTx1 usedUtxos + unbalancedTx1 /\ usedUtxos1 <- mkUnbalancedTx lookups1 + constraints1 + balancedTx1 <- balanceTx unbalancedTx1 usedUtxos1 balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 0161a2f0a..5cd61a8c6 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -74,7 +74,6 @@ import Data.Array (head, (!!)) import Data.Array as Array import Data.Either (hush) import Data.Foldable (for_) -import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) import Data.Posix.Signal (Signal(SIGINT)) diff --git a/test/PrivateKey.purs b/test/PrivateKey.purs index ba463d1d6..46283a4ec 100644 --- a/test/PrivateKey.purs +++ b/test/PrivateKey.purs @@ -6,14 +6,14 @@ import Cardano.Types ( Ed25519Signature , TransactionWitnessSet(TransactionWitnessSet) , Vkeywitness(Vkeywitness) + , _witnessSet ) import Cardano.Types.Ed25519Signature as Ed25519Signature import Contract.Config (testnetConfig) import Contract.Hashing (publicKeyHash) import Contract.Monad (runContract) import Contract.Transaction - ( _witnessSet - , signTransaction + ( signTransaction ) import Contract.Wallet.Key (publicKeyFromPrivateKey) import Ctl.Internal.Wallet.KeyFile From fefcb0dbf69318dca81a1e59ea57721200a02c72 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 3 Jul 2024 16:48:07 +0200 Subject: [PATCH 274/373] Provide datum lookups in examples and tests --- examples/AlwaysSucceeds.purs | 10 +++--- examples/ExUnits.purs | 14 +++++--- examples/Lose7Ada.purs | 12 ++++--- .../PlutusV2/ReferenceInputsAndScripts.purs | 17 ++++++---- examples/PlutusV2/ReferenceScripts.purs | 10 +++--- test/Plutip/Contract.purs | 32 +++++++++++-------- 6 files changed, 58 insertions(+), 37 deletions(-) diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index b449d7410..df1aa2b47 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -19,7 +19,6 @@ import Cardano.Types , TransactionHash ) import Cardano.Types.BigNum as BigNum -import Cardano.Types.PlutusData as Datum import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript as Script import Contract.Address (mkAddress) @@ -80,7 +79,7 @@ payToAlwaysSucceeds vhash = do Just stakeKeyHash -> Constraints.mustPayToScriptAddress vhash (PubKeyHashCredential $ unwrap stakeKeyHash) - Datum.unit + PlutusData.unit Constraints.DatumWitness value @@ -113,8 +112,11 @@ spendFromAlwaysSucceeds vhash validator txId = do (view _input <$> head (lookupTxHash txId utxos)) let lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos + lookups = mconcat + [ Lookups.validator validator + , Lookups.unspentOutputs utxos + , Lookups.datum PlutusData.unit + ] constraints :: TxConstraints constraints = diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index 434b27f33..c3e902071 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -4,12 +4,13 @@ import Contract.Prelude import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Cardano.Types.PlutusData (unit) as PlutusData import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Credential (Credential(PubKeyHashCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (RedeemerDatum(RedeemerDatum), toData, unitDatum) +import Contract.PlutusData (RedeemerDatum(RedeemerDatum), toData) import Contract.ScriptLookups as Lookups import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) @@ -59,14 +60,14 @@ payToExUnits vhash = do constraints = case mbStakeKeyHash of Nothing -> - Constraints.mustPayToScript vhash unitDatum + Constraints.mustPayToScript vhash PlutusData.unit Constraints.DatumWitness $ Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 Just stakeKeyHash -> Constraints.mustPayToScriptAddress vhash (PubKeyHashCredential $ unwrap stakeKeyHash) - unitDatum + PlutusData.unit Constraints.DatumWitness $ Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 @@ -102,8 +103,11 @@ spendFromExUnits iters vhash validator txId = do (view _input <$> head (lookupTxHash txId utxos)) let lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos + lookups = mconcat + [ Lookups.validator validator + , Lookups.unspentOutputs utxos + , Lookups.datum PlutusData.unit + ] constraints :: TxConstraints constraints = diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index 5a0f04f62..6177cc0d6 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -15,11 +15,12 @@ import Contract.Prelude import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Cardano.Types.PlutusData (unit) as PlutusData import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (unitDatum, unitRedeemer) +import Contract.PlutusData (unitRedeemer) import Contract.ScriptLookups as Lookups import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) @@ -62,7 +63,7 @@ payToAlwaysFails vhash = do let constraints :: TxConstraints constraints = - Constraints.mustPayToScript vhash unitDatum + Constraints.mustPayToScript vhash PlutusData.unit Constraints.DatumWitness $ Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 @@ -92,8 +93,11 @@ spendFromAlwaysFails vhash validator txId = do (fst <$> find hasTransactionId (Map.toUnfoldable utxos :: Array _)) let lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos + lookups = mconcat + [ Lookups.validator validator + , Lookups.unspentOutputs utxos + , Lookups.datum PlutusData.unit + ] constraints :: TxConstraints constraints = diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index 21bab6eff..9cfa387b9 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -11,6 +11,7 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(ScriptHashCredential)) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusData (unit) as PlutusData import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) @@ -25,7 +26,7 @@ import Contract.Monad , liftedM , runContract ) -import Contract.PlutusData (unitDatum, unitRedeemer) +import Contract.PlutusData (unitRedeemer) import Contract.ScriptLookups as Lookups import Contract.Scripts (PlutusScript, Validator, ValidatorHash) import Contract.Transaction @@ -51,9 +52,7 @@ import Contract.Wallet , ownStakePubKeyHashes ) import Ctl.Examples.Helpers (mkAssetName) as Helpers -import Ctl.Examples.PlutusV2.Scripts.AlwaysMints - ( alwaysMintsPolicyScriptV2 - ) +import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Data.Array (head) import Data.Map (toUnfoldable) as Map @@ -103,7 +102,7 @@ payToAlwaysSucceedsAndCreateScriptRefOutput vhash validatorRef mpRef = do constraints :: TxConstraints constraints = - Constraints.mustPayToScript vhash unitDatum DatumWitness value + Constraints.mustPayToScript vhash PlutusData.unit DatumWitness value <> createOutputWithScriptRef validatorRef <> createOutputWithScriptRef mpRef @@ -155,7 +154,10 @@ spendFromAlwaysSucceeds vhash txId validator mp tokenName = do ] lookups :: Lookups.ScriptLookups - lookups = Lookups.unspentOutputs scriptAddressUtxos + lookups = mconcat + [ Lookups.unspentOutputs scriptAddressUtxos + , Lookups.datum PlutusData.unit + ] spendTxId <- submitTxFromConstraints lookups constraints awaitTxConfirmed spendTxId @@ -196,7 +198,8 @@ mintAlwaysMintsV2ToTheScript tokenName validator sum = do [ Constraints.mustMintValue $ Mint.singleton cs tokenName $ Int.fromInt sum - , Constraints.mustPayToScript vhash unitDatum Constraints.DatumWitness + , Constraints.mustPayToScript vhash PlutusData.unit + Constraints.DatumWitness $ Value.singleton cs tokenName $ BigNum.fromInt sum ] diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs index e85409230..531d7ab3a 100644 --- a/examples/PlutusV2/ReferenceScripts.purs +++ b/examples/PlutusV2/ReferenceScripts.purs @@ -11,12 +11,13 @@ import Cardano.Types , TransactionUnspentOutput(TransactionUnspentOutput) ) import Cardano.Types.BigNum as BigNum +import Cardano.Types.PlutusData (unit) as PlutusData import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Credential (Credential(PubKeyHashCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) -import Contract.PlutusData (unitDatum, unitRedeemer) +import Contract.PlutusData (unitRedeemer) import Contract.ScriptLookups as Lookups import Contract.Scripts (ValidatorHash, validatorHash) import Contract.Transaction @@ -77,14 +78,15 @@ payWithScriptRefToAlwaysSucceeds vhash scriptRef = do constraints = case mbStakeKeyHash of Nothing -> - Constraints.mustPayToScriptWithScriptRef vhash unitDatum DatumWitness + Constraints.mustPayToScriptWithScriptRef vhash PlutusData.unit + DatumWitness scriptRef (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) Just stakeKeyHash -> Constraints.mustPayToScriptAddressWithScriptRef vhash (PubKeyHashCredential $ unwrap stakeKeyHash) - unitDatum + PlutusData.unit DatumWitness scriptRef (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) @@ -114,7 +116,7 @@ spendFromAlwaysSucceeds vhash txId = do (SpendInput $ TransactionUnspentOutput { input, output }) lookups :: Lookups.ScriptLookups - lookups = mempty + lookups = Lookups.datum PlutusData.unit spendTxId <- submitTxFromConstraints lookups constraints awaitTxConfirmed spendTxId diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 2d45f21e4..ef5344278 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -18,6 +18,7 @@ import Cardano.Types.Credential ) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusData (unit) as PlutusData import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Value (lovelaceValueOf) import Contract.Address @@ -304,8 +305,11 @@ suite = do (view _input <$> head (lookupTxHash txId utxos)) let lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos + lookups = mconcat + [ Lookups.validator validator + , Lookups.unspentOutputs utxos + , Lookups.datum PlutusData.unit + ] constraints :: TxConstraints constraints = @@ -351,8 +355,11 @@ suite = do (view _input <$> head (lookupTxHash txId utxos)) let lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos + lookups = mconcat + [ Lookups.validator validator + , Lookups.unspentOutputs utxos + , Lookups.datum PlutusData.unit + ] constraints :: TxConstraints constraints = @@ -929,17 +936,16 @@ suite = do payToTest :: ValidatorHash -> Contract TransactionHash payToTest vhash = do let - constraints = - Constraints.mustPayToScript - vhash - datum1 - Constraints.DatumWitness - (Value.lovelaceValueOf $ BigNum.fromInt 1_000_000) - <> Constraints.mustPayToScript - vhash - datum2 + constraints = mconcat + [ Constraints.mustPayToScript vhash datum1 Constraints.DatumWitness (Value.lovelaceValueOf $ BigNum.fromInt 1_000_000) + , Constraints.mustPayToScript vhash datum2 + Constraints.DatumWitness + (Value.lovelaceValueOf $ BigNum.fromInt 1_000_000) + , Constraints.mustIncludeDatum datum1 + , Constraints.mustIncludeDatum datum2 + ] lookups :: Lookups.ScriptLookups lookups = mempty From 66d57991dac7759d590421063777232c984f4386 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 3 Jul 2024 17:30:28 +0200 Subject: [PATCH 275/373] Add IncludeDatum example to ByUrl --- examples/ByUrl.purs | 2 ++ examples/IncludeDatum.purs | 25 ++++++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 903070dbd..659b402c7 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -37,6 +37,7 @@ import Ctl.Examples.Cip30 as Cip30 import Ctl.Examples.Datums as Datums import Ctl.Examples.DropTokens as DropTokens import Ctl.Examples.ECDSA as ECDSA +import Ctl.Examples.IncludeDatum (contract) as IncludeDatum import Ctl.Examples.MintsMultipleTokens as MintsMultipleTokens import Ctl.Examples.NativeScriptMints as NativeScriptMints import Ctl.Examples.OneShotMinting as OneShotMinting @@ -223,6 +224,7 @@ examples = addSuccessLog <$> Map.fromFoldable ChangeGeneration.checkChangeOutputsDistribution 3 1 5 , "ChangeGeneration1-3" /\ ChangeGeneration.checkChangeOutputsDistribution 1 3 7 + , "IncludeDatum" /\ IncludeDatum.contract ] addSuccessLog :: Contract Unit -> Contract Unit diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 4b5a97900..5b7adb7f0 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -3,7 +3,8 @@ -- | and then spends the script Utxo. The script only checks -- | that the value of the datum is equal to 42. module Ctl.Examples.IncludeDatum - ( example + ( contract + , example , only42Script , main , payToIncludeDatum @@ -43,16 +44,18 @@ main :: Effect Unit main = example testnetNamiConfig example :: ContractParams -> Effect Unit -example cfg = launchAff_ do - runContract cfg do - logInfo' "Running Examples.IncludeDatum" - validator <- only42Script - let vhash = validatorHash validator - logInfo' "Attempt to lock value" - txId <- payToIncludeDatum vhash - awaitTxConfirmed txId - logInfo' "Tx submitted successfully, Try to spend locked values" - spendFromIncludeDatum vhash validator txId +example = launchAff_ <<< flip runContract contract + +contract :: Contract Unit +contract = do + logInfo' "Running Examples.IncludeDatum" + validator <- only42Script + let vhash = validatorHash validator + logInfo' "Attempt to lock value" + txId <- payToIncludeDatum vhash + awaitTxConfirmed txId + logInfo' "Tx submitted successfully, Try to spend locked values" + spendFromIncludeDatum vhash validator txId datum :: PlutusData datum = Integer $ BigInt.fromInt 42 From 8cdb6950a16828aaeb0fdf4e38ae7fe4b1db0dda Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 3 Jul 2024 16:47:18 +0300 Subject: [PATCH 276/373] Nix formatting --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index c593fefad..1db377fd0 100644 --- a/flake.nix +++ b/flake.nix @@ -405,7 +405,7 @@ let ctlPkgsExp = import ./spago-packages.nix { inherit pkgs; }; ctlScaffoldPkgsExp = import ./templates/ctl-scaffold/spago-packages.nix { inherit pkgs; }; - ctlPs = (attrValues ctlPkgsExp.inputs); + ctlPs = attrValues ctlPkgsExp.inputs; ctlScaffoldPs = filter (p: p.name != "cardano-transaction-lib") (attrValues ctlScaffoldPkgsExp.inputs); intersection = pkgs.lib.lists.intersectLists ctlPs ctlScaffoldPs; From 274673657c3fec262a21c66f4b4669db156df5da Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 4 Jul 2024 03:47:33 +0400 Subject: [PATCH 277/373] Rename extraUtxos -> usedUtxos --- examples/KeyWallet/SignMultiple.purs | 4 ++-- examples/SignMultiple.purs | 4 ++-- src/Contract/Transaction.purs | 14 +++++++------- test/Plutip/Contract.purs | 4 ++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/KeyWallet/SignMultiple.purs b/examples/KeyWallet/SignMultiple.purs index 7e63e7a15..8d9c68db6 100644 --- a/examples/KeyWallet/SignMultiple.purs +++ b/examples/KeyWallet/SignMultiple.purs @@ -48,11 +48,11 @@ main = runKeyWalletContract_ \pkh lovelace unlock -> do txIds <- withBalancedTxs [ { transaction: unbalancedTx0 - , extraUtxos: usedUtxos0 + , usedUtxos: usedUtxos0 , balancerConstraints: mempty } , { transaction: unbalancedTx1 - , extraUtxos: usedUtxos1 + , usedUtxos: usedUtxos1 , balancerConstraints: mempty } ] $ \balancedTxs -> do diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 2d644a907..6622c55a0 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -78,11 +78,11 @@ contract = do txIds <- withBalancedTxs [ { transaction: unbalancedTx0 - , extraUtxos: usedUtxos0 + , usedUtxos: usedUtxos0 , balancerConstraints: mempty } , { transaction: unbalancedTx1 - , extraUtxos: usedUtxos1 + , usedUtxos: usedUtxos1 , balancerConstraints: mempty } ] $ \balancedTxs -> do diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 4d66f38eb..c8a61f9a6 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -231,7 +231,7 @@ withBalancedTxs :: forall (a :: Type) . Array { transaction :: Transaction - , extraUtxos :: UtxoMap + , usedUtxos :: UtxoMap , balancerConstraints :: BalanceTxConstraintsBuilder } -> (Array Transaction -> Contract a) @@ -251,10 +251,10 @@ withBalancedTx -> BalanceTxConstraintsBuilder -> (Transaction -> Contract a) -> Contract a -withBalancedTx tx extraUtxos balancerConstraints = +withBalancedTx tx usedUtxos balancerConstraints = withSingleTransaction ( \transaction -> balanceAndLock - { transaction, extraUtxos, balancerConstraints } + { transaction, usedUtxos, balancerConstraints } ) identity tx @@ -290,7 +290,7 @@ balanceTx utx utxos constraints = do balanceTxs :: Array { transaction :: Transaction - , extraUtxos :: UtxoMap + , usedUtxos :: UtxoMap , balancerConstraints :: BalanceTxConstraintsBuilder } -> Contract (Array Transaction) @@ -305,12 +305,12 @@ balanceTxs unbalancedTxs = balanceAndLock :: { transaction :: Transaction - , extraUtxos :: UtxoMap + , usedUtxos :: UtxoMap , balancerConstraints :: BalanceTxConstraintsBuilder } -> Contract Transaction -balanceAndLock { transaction, extraUtxos, balancerConstraints } = do - balancedTx <- balanceTx transaction extraUtxos balancerConstraints +balanceAndLock { transaction, usedUtxos, balancerConstraints } = do + balancedTx <- balanceTx transaction usedUtxos balancerConstraints void $ withUsedTxOuts $ lockTransactionInputs balancedTx pure balancedTx diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index eb5ccb90e..65259e6ee 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -2086,11 +2086,11 @@ signMultipleContract = do withBalancedTxs [ { transaction: ubTx1 - , extraUtxos: usedUtxos1 + , usedUtxos: usedUtxos1 , balancerConstraints: mempty } , { transaction: ubTx2 - , extraUtxos: usedUtxos2 + , usedUtxos: usedUtxos2 , balancerConstraints: mempty } ] $ \txs -> do From 1a0fe889aa070cb3784c6aaf7010128c2301078e Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 4 Jul 2024 17:33:21 +0200 Subject: [PATCH 278/373] Revise cardano-testnet funds distribution logic (wip) --- spago-packages.nix | 24 ++ spago.dhall | 1 + src/Internal/Testnet/Contract.purs | 191 +++++++++----- src/Internal/Testnet/DistributeFundsV2.purs | 266 ++++++++++++++++++++ test/Testnet/DistributeFundsV2.purs | 205 +++++++++++++++ test/Unit.purs | 2 + 6 files changed, 624 insertions(+), 65 deletions(-) create mode 100644 src/Internal/Testnet/DistributeFundsV2.purs create mode 100644 test/Testnet/DistributeFundsV2.purs diff --git a/spago-packages.nix b/spago-packages.nix index 9a93e42d7..fe874005d 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -593,6 +593,18 @@ let installPhase = "ln -s $src $out"; }; + "freet" = pkgs.stdenv.mkDerivation { + name = "freet"; + version = "v7.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/purescript-contrib/purescript-freet.git"; + rev = "21be6fba22599a25812430dda6ba2ca8135920a1"; + sha256 = "006wbr7f19k7vs1jg4wgkwyx1q4wvvs2wqscfcxsp8fzfpn2yqw8"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "functions" = pkgs.stdenv.mkDerivation { name = "functions"; version = "v6.0.0"; @@ -1361,6 +1373,18 @@ let installPhase = "ln -s $src $out"; }; + "safely" = pkgs.stdenv.mkDerivation { + name = "safely"; + version = "v4.0.1"; + src = pkgs.fetchgit { + url = "https://github.com/paf31/purescript-safely.git"; + rev = "19f854737e17b4d058e5a1504a960821db36e4ab"; + sha256 = "1mrpz19smjsamz4cci287z89q715chzxna0gpbvdgivlca4z6879"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "spec" = pkgs.stdenv.mkDerivation { name = "spec"; version = "v7.2.0"; diff --git a/spago.dhall b/spago.dhall index 3a6efba8d..2d96e5b57 100644 --- a/spago.dhall +++ b/spago.dhall @@ -86,6 +86,7 @@ You can edit this file as you like. , "record" , "refs" , "safe-coerce" + , "safely" , "spec" , "spec-quickcheck" , "strings" diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index c1bc794b3..2ff1243a3 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -10,6 +10,9 @@ import Contract.Prelude import Cardano.Serialization.Lib (privateKey_generateEd25519) as Csl import Cardano.Types (NetworkId(TestnetId)) import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) +import Cardano.Types.BigInt (BigInt) +import Cardano.Types.BigInt (fromInt) as BigInt +import Cardano.Types.BigNum (fromBigInt, toBigInt) as BigNum import Cardano.Types.Credential (Credential(PubKeyHashCredential)) import Cardano.Types.PaymentCredential (PaymentCredential(PaymentCredential)) import Cardano.Types.StakeCredential (StakeCredential(StakeCredential)) @@ -19,6 +22,7 @@ import Contract.Log (logInfo') import Contract.Monad ( Contract , ContractEnv + , liftContractE , liftContractM , liftedM , runContractInEnv @@ -33,15 +37,17 @@ import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints (mustPayToPubKey, mustPayToPubKeyAddress) as Constraints import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (Value) -import Contract.Value (lovelaceValueOf) as Value +import Contract.Value (getCoin, lovelaceValueOf) as Value import Contract.Wallet ( getWalletAddress + , getWalletUtxos , mkKeyWalletFromPrivateKeys , withKeyWallet ) import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) +import Control.Parallel (parTraverse) import Ctl.Internal.Plutip.Server (makeClusterContractEnv) import Ctl.Internal.Plutip.Utils (cleanupOnExit, runCleanup, whenError) import Ctl.Internal.Test.ContractTest @@ -51,17 +57,18 @@ import Ctl.Internal.Test.ContractTest ) import Ctl.Internal.Test.UtxoDistribution ( class UtxoDistribution - , UtxoAmount , decodeWallets , encodeDistribution , keyWallets ) +import Ctl.Internal.Testnet.DistributeFundsV2 (DistrFundsParams) +import Ctl.Internal.Testnet.DistributeFundsV2 (Tx(Tx), makeDistributionPlan) as DistrFunds import Ctl.Internal.Testnet.Server (StartedTestnetCluster, startTestnetCluster) import Ctl.Internal.Testnet.Types (TestnetConfig) import Ctl.Internal.Testnet.Utils (read872GenesisKey) -import Ctl.Internal.Wallet.Key (KeyWallet(KeyWallet)) -import Data.Array (head, zip) as Array -import Data.Maybe (fromJust) +import Ctl.Internal.Wallet.Key (KeyWallet) +import Data.Array (concat, fromFoldable, zip) as Array +import Data.Map (values) as Map import Effect.Aff (bracket) as Aff import Effect.Aff (try) import Effect.Exception (error) @@ -72,7 +79,6 @@ import Mote (bracket) as Mote import Mote.Description (Description(Group, Test)) import Mote.Monad (MoteT(MoteT), mapTest) import Mote.TestPlanM (TestPlanM) -import Partial.Unsafe (unsafePartial) import Type.Proxy (Proxy(Proxy)) -- | Run a single `Contract` in cardano-testnet environment. @@ -245,27 +251,16 @@ startTestnetContractEnv cfg distr cleanupRef = do runContractInEnv env do genesisWallets <- liftEffect readGenesisWallets let - genesisWallet = unsafePartial fromJust $ Array.head genesisWallets -- FIXME - withKeyWallet genesisWallet do - let distrArray = encodeDistribution distr - privateKeys <- - for (encodeDistribution distr) \_ -> - liftEffect $ wrap <$> Csl.privateKey_generateEd25519 - wallets <- - liftContractM - "Impossible happened: could not decode wallets. Please report as bug" - $ decodeWallets distr privateKeys - let kws = keyWallets (Proxy :: _ distr) wallets - genesisAddr <- liftedM "Could not get genesis address" getWalletAddress - let - nodeCfg = - { socketPath: (unwrap cluster).paths.nodeSocketPath - , testnetMagic: cfg.clusterConfig.testnetMagic - } - withCardanoCliCompletion nodeCfg genesisAddr do - let walletsAmounts = Array.zip kws distrArray - fundWalletsFromGenesis walletsAmounts - pure wallets + nodeCfg = + { socketPath: (unwrap cluster).paths.nodeSocketPath + , testnetMagic: cfg.clusterConfig.testnetMagic + } + wallets /\ distrPlan <- makeDistrFundsPlan + (withCardanoCliCompletion nodeCfg) + genesisWallets + distr + execDistrFundsPlan (withCardanoCliCompletion nodeCfg) distrPlan + pure wallets where readGenesisWallets :: Effect (Array KeyWallet) readGenesisWallets = @@ -276,42 +271,108 @@ startTestnetContractEnv cfg distr cleanupRef = do ) (unwrap cluster).paths.genesisKeys - fundWalletsFromGenesis - :: Array (KeyWallet /\ Array UtxoAmount) -> Contract Unit - fundWalletsFromGenesis walletsAmounts = do - network <- getNetworkId - let - constraints :: TxConstraints - constraints = - foldMap - ( \(KeyWallet kw /\ amounts) -> - foldMap - ( mustPayToAddress (kw.address network) <<< - Value.lovelaceValueOf - ) - amounts - ) - walletsAmounts - unbalancedTx <- mkUnbalancedTx mempty constraints - balancedTx <- balanceTx unbalancedTx - balancedSignedTx <- signTransaction balancedTx - txHash <- submit balancedSignedTx - logInfo' $ "FundWalletsFromGenesis txHash: " <> show txHash - awaitTxConfirmed txHash +execDistrFundsPlan + :: (forall a. Address -> Contract a -> Contract a) + -> Array (Array (DistrFunds.Tx KeyWallet BigInt)) + -> Contract Unit +execDistrFundsPlan withCardanoCliUtxos rounds = do + network <- getNetworkId + roundsFixed <- + liftContractM "Could not convert target amounts to BigNum's" $ + traverse (traverse (traverse BigNum.fromBigInt)) rounds + traverse_ + ( parTraverse + ( \(DistrFunds.Tx { srcWallet: genesisWallet, utxos }) -> do + withKeyWallet genesisWallet do + genesisAddr <- liftedM "Could not get genesis address" + getWalletAddress + withCardanoCliUtxos genesisAddr do + let + constraints :: TxConstraints + constraints = + foldMap + ( \{ wallet, amount } -> + mustPayToAddress ((unwrap wallet).address network) $ + Value.lovelaceValueOf amount + ) + utxos - mustPayToAddress :: Address -> Value -> TxConstraints - mustPayToAddress addr = - let - mSkh = case getStakeCredential addr of - Just (StakeCredential (PubKeyHashCredential skh')) -> Just $ - StakePubKeyHash skh' - _ -> Nothing - in - case getPaymentCredential addr of - Just (PaymentCredential (PubKeyHashCredential pkh)) -> - case mSkh of - Nothing -> - Constraints.mustPayToPubKey $ wrap pkh - Just skh -> - Constraints.mustPayToPubKeyAddress (wrap pkh) skh - _ -> mempty + unbalancedTx <- mkUnbalancedTx mempty constraints + balancedTx <- balanceTx unbalancedTx + balancedSignedTx <- signTransaction balancedTx + txHash <- submit balancedSignedTx + logInfo' $ "FundWalletsFromGenesis txHash: " <> show txHash + awaitTxConfirmed txHash + ) + ) + roundsFixed + +makeDistrFundsPlan + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution distr wallets + => (forall a. Address -> Contract a -> Contract a) + -> Array KeyWallet + -> distr + -> Contract (wallets /\ Array (Array (DistrFunds.Tx KeyWallet BigInt))) +makeDistrFundsPlan withCardanoCliUtxos genesisWallets distr = do + let distrArray = map BigNum.toBigInt <$> encodeDistribution distr + privateKeys <- + for (encodeDistribution distr) \_ -> + liftEffect $ wrap <$> Csl.privateKey_generateEd25519 + wallets <- + liftContractM + "Impossible happened: could not decode wallets. Please report as bug" + $ decodeWallets distr privateKeys + let + kws = keyWallets (Proxy :: _ distr) wallets + targets = Array.concat $ sequence <$> Array.zip kws distrArray + sources <- Array.concat <$> + parTraverse (\kw -> map (Tuple kw) <$> getGenesisUtxos kw) + genesisWallets + distrPlan <- + liftContractE $ + DistrFunds.makeDistributionPlan distrFundsParams sources targets + pure $ wallets /\ distrPlan + where + getGenesisUtxos :: KeyWallet -> Contract (Array BigInt) + getGenesisUtxos genesisWallet = + withKeyWallet genesisWallet do + genesisAddr <- liftedM "Could not get genesis address" getWalletAddress + withCardanoCliUtxos genesisAddr do + liftedM "Could not get genesis wallet utxos" getWalletUtxos + <#> map + ( BigNum.toBigInt + <<< unwrap + <<< Value.getCoin + <<< _.amount + <<< unwrap + ) + <<< Array.fromFoldable + <<< Map.values + +-- FIXME: adjust values +distrFundsParams :: DistrFundsParams KeyWallet BigInt +distrFundsParams = + { maxRounds: 3 + , maxUtxosPerTx: 100 + , getUtxoMinAdaForWallet: const zero + , feePerTx: BigInt.fromInt 2_000_000 + } + +-- FIXME: move to helpers +mustPayToAddress :: Address -> Value -> TxConstraints +mustPayToAddress addr = + let + mSkh = case getStakeCredential addr of + Just (StakeCredential (PubKeyHashCredential skh')) -> Just $ + StakePubKeyHash skh' + _ -> Nothing + in + case getPaymentCredential addr of + Just (PaymentCredential (PubKeyHashCredential pkh)) -> + case mSkh of + Nothing -> + Constraints.mustPayToPubKey $ wrap pkh + Just skh -> + Constraints.mustPayToPubKeyAddress (wrap pkh) skh + _ -> mempty diff --git a/src/Internal/Testnet/DistributeFundsV2.purs b/src/Internal/Testnet/DistributeFundsV2.purs new file mode 100644 index 000000000..4476cc86f --- /dev/null +++ b/src/Internal/Testnet/DistributeFundsV2.purs @@ -0,0 +1,266 @@ +module Ctl.Internal.Testnet.DistributeFundsV2 where + +import Prelude + +import Control.Monad.Rec.Class (Step(Done, Loop), tailRecM) +import Control.Safely (foldM) +import Data.Array (fromFoldable, snoc) as Array +import Data.Bifunctor (class Bifunctor) +import Data.Either (Either(Left, Right)) +import Data.Foldable + ( class Foldable + , foldMap + , foldlDefault + , foldr + , foldrDefault + ) +import Data.Generic.Rep (class Generic) +import Data.List (List(Cons, Nil)) +import Data.List (filter, fromFoldable) as List +import Data.Newtype (class Newtype, modify, unwrap, wrap) +import Data.Show.Generic (genericShow) +import Data.Traversable (class Traversable, sequenceDefault, traverse) +import Data.Tuple (uncurry) +import Data.Tuple.Nested (type (/\), (/\)) + +type DistrFundsParams wallet amount = + { maxRounds :: Int + , maxUtxosPerTx :: Int + , getUtxoMinAdaForWallet :: wallet -> amount + , feePerTx :: amount + } + +-- + +newtype Tx wallet amount = Tx + { srcWallet :: wallet + , numUtxos :: Int + , utxos :: List { wallet :: wallet, amount :: amount } + } + +derive instance Generic (Tx wallet amount) _ +derive instance Newtype (Tx wallet amount) _ +derive instance (Eq wallet, Eq amount) => Eq (Tx wallet amount) + +instance (Show wallet, Show amount) => Show (Tx wallet amount) where + show = genericShow + +instance Functor (Tx wallet) where + map f (Tx tx) = + wrap $ tx + { utxos = + map (\utxo -> utxo { amount = f utxo.amount }) + tx.utxos + } + +instance Bifunctor Tx where + bimap f g (Tx tx) = + wrap $ tx + { srcWallet = f tx.srcWallet + , utxos = map (\utxo -> { wallet: f utxo.wallet, amount: g utxo.amount }) + tx.utxos + } + +instance Foldable (Tx wallet) where + foldl f a = foldlDefault f a + foldr f a = foldrDefault f a + foldMap f = foldMap (f <<< _.amount) <<< _.utxos <<< unwrap + +instance Traversable (Tx wallet) where + sequence = sequenceDefault + traverse f (Tx tx) = ado + utxos <- traverse + (\{ wallet, amount } -> { wallet, amount: _ } <$> f amount) + tx.utxos + in wrap $ tx { utxos = utxos } + +emptyTx :: forall wallet amount. wallet -> Tx wallet amount +emptyTx srcWallet = wrap + { srcWallet + , numUtxos: zero + , utxos: Nil + } + +isTxNonEmpty :: forall wallet amount. Tx wallet amount -> Boolean +isTxNonEmpty (Tx { numUtxos }) = numUtxos > zero + +-- + +type SourceState wallet amount = + { srcWallet :: wallet + , leftover :: amount + , currentTx :: Tx wallet amount + } + +initSourceState + :: forall wallet amount + . wallet + -> amount + -> SourceState wallet amount +initSourceState srcWallet initFunds = + { srcWallet + , leftover: initFunds + , currentTx: emptyTx srcWallet + } + +resetSourceTx + :: forall wallet amount + . SourceState wallet amount + -> SourceState wallet amount +resetSourceTx src = src { currentTx = emptyTx src.srcWallet } + +-- + +data DistrFundsError + = DistrFunds_MaxUtxosPerTxLowerLimitError + | DistrFunds_AssignUtxoError + | DistrFunds_MaxRoundsExceededError + +derive instance Generic DistrFundsError _ +derive instance Eq DistrFundsError + +instance Show DistrFundsError where + show = genericShow + +type DistrFundsRoundResult wallet amount = + { sources :: List (SourceState wallet amount) + , deferredTargets :: List (wallet /\ amount) + } + +data AssignUtxoResult wallet amount + = AssignUtxo_Unassigned + | AssignUtxo_Deferred + | AssignUtxo_AssignedToSource (SourceState wallet amount) + +derive instance Generic (AssignUtxoResult wallet amount) _ +derive instance (Eq wallet, Eq amount) => Eq (AssignUtxoResult wallet amount) + +instance (Show wallet, Show amount) => Show (AssignUtxoResult wallet amount) where + show = genericShow + +makeDistributionPlan + :: forall wallet amount + . Ord amount + => Ring amount + => DistrFundsParams wallet amount + -> Array (wallet /\ amount) + -> Array (wallet /\ amount) + -> Either DistrFundsError (Array (Array (Tx wallet amount))) +makeDistributionPlan params initSources initTargets + | params.maxUtxosPerTx < one = Left DistrFunds_MaxUtxosPerTxLowerLimitError + | otherwise = + tailRecM worker + { sources: List.fromFoldable $ uncurry initSourceState <$> initSources + , targets: List.fromFoldable initTargets + , rounds: mempty + , roundIdx: zero + } + where + worker { sources, targets, rounds, roundIdx } + | roundIdx == params.maxRounds = + Left DistrFunds_MaxRoundsExceededError + | otherwise = + runDistrFundsRound params sources targets <#> \res -> + let + completedTxs = List.filter isTxNonEmpty $ _.currentTx <$> + res.sources + rounds' = Array.snoc rounds $ Array.fromFoldable completedTxs + in + case res.deferredTargets of + Nil -> Done rounds' + _ -> Loop + { sources: resetSourceTx <$> res.sources + , targets: res.deferredTargets + , rounds: rounds' + , roundIdx: roundIdx + one + } + +runDistrFundsRound + :: forall wallet amount + . Ord amount + => Ring amount + => DistrFundsParams wallet amount + -> List (SourceState wallet amount) + -> List (wallet /\ amount) + -> Either DistrFundsError (DistrFundsRoundResult wallet amount) +runDistrFundsRound params initSources targets = + foldM + ( \distrFundsAcc target -> + let + assignUtxoRes /\ sourcesUpdated = + foldr (tryNextSource params target) (AssignUtxo_Unassigned /\ Nil) + distrFundsAcc.sources + in + case assignUtxoRes of + AssignUtxo_Unassigned -> + Left DistrFunds_AssignUtxoError + AssignUtxo_Deferred -> + Right $ distrFundsAcc + { deferredTargets = Cons target distrFundsAcc.deferredTargets + } + AssignUtxo_AssignedToSource _ -> + Right $ distrFundsAcc + { sources = sourcesUpdated + } + ) + { sources: initSources + , deferredTargets: Nil + } + targets + +tryNextSource + :: forall wallet amount + . Ord amount + => Ring amount + => DistrFundsParams wallet amount + -> wallet /\ amount + -> SourceState wallet amount + -> AssignUtxoResult wallet amount /\ List (SourceState wallet amount) + -> AssignUtxoResult wallet amount /\ List (SourceState wallet amount) +tryNextSource params (targetWallet /\ amount) source (acc /\ sources) = + case acc of + AssignUtxo_AssignedToSource _ -> + -- utxo already assigned, skip other sources + acc /\ Cons source sources + _ -> + let + targetNormalized = + targetWallet /\ max (params.getUtxoMinAdaForWallet targetWallet) + amount + in + case acc, assignUtxoToSource params source targetNormalized of + AssignUtxo_Deferred, AssignUtxo_Unassigned -> + -- utxo marked as deferred that cannot fit into the current tx + -- should remain deferred + AssignUtxo_Deferred /\ Cons source sources + _, new@(AssignUtxo_AssignedToSource sourceUpdated) -> + new /\ Cons sourceUpdated sources + _, new -> + new /\ Cons source sources + +assignUtxoToSource + :: forall wallet amount + . Ord amount + => Ring amount + => DistrFundsParams wallet amount + -> SourceState wallet amount + -> wallet /\ amount + -> AssignUtxoResult wallet amount +assignUtxoToSource params source (targetWallet /\ amountNormalized) + | (source.leftover - params.feePerTx) < amountNormalized = + AssignUtxo_Unassigned + | (unwrap source.currentTx).numUtxos + one > params.maxUtxosPerTx = + AssignUtxo_Deferred + | otherwise = + AssignUtxo_AssignedToSource $ source + { leftover = source.leftover - amountNormalized + , currentTx = modify + ( \tx -> tx + { numUtxos = tx.numUtxos + one + , utxos = Cons + { wallet: targetWallet, amount: amountNormalized } + tx.utxos + } + ) + source.currentTx + } diff --git a/test/Testnet/DistributeFundsV2.purs b/test/Testnet/DistributeFundsV2.purs new file mode 100644 index 000000000..6105937e5 --- /dev/null +++ b/test/Testnet/DistributeFundsV2.purs @@ -0,0 +1,205 @@ +module Test.Ctl.Testnet.DistributeFundsV2 + ( suite + ) where + +import Prelude + +import Contract.Test.Mote (TestPlanM) +import Ctl.Internal.Testnet.DistributeFundsV2 + ( AssignUtxoResult + ( AssignUtxo_Unassigned + , AssignUtxo_Deferred + , AssignUtxo_AssignedToSource + ) + , DistrFundsError(DistrFunds_AssignUtxoError) + , DistrFundsParams + , SourceState + , assignUtxoToSource + , initSourceState + , makeDistributionPlan + , runDistrFundsRound + ) +import Data.Array (reverse) +import Data.Either (Either(Left, Right)) +import Data.List (fromFoldable) as List +import Data.Maybe (Maybe(Just, Nothing)) +import Data.Newtype (modify, wrap) +import Data.Tuple.Nested (type (/\), (/\)) +import Effect.Aff (Aff) +import Mote (group, test) +import Test.Spec.Assertions (shouldEqual) + +suite :: TestPlanM (Aff Unit) Unit +suite = + group "DistributeFundsV2" do + group "assignUtxoToSource" do + test "Leaves utxo unassigned if it cannot be covered by source" + let + src0 = initSourceState "src0" 1000 + utxo = "target0" /\ 2000 + in + assignUtxoToSource defaultParams src0 utxo `shouldEqual` + AssignUtxo_Unassigned + + test "Takes tx fee into account" + let + params = defaultParams { feePerTx = 10 } + src0 = initSourceState "src0" 1000 + utxo = "target0" /\ 1000 + in + assignUtxoToSource params src0 utxo `shouldEqual` + AssignUtxo_Unassigned + + test "Marks utxo as deferred if maxUtxosPerTx is exceeded" + let + params = defaultParams { maxUtxosPerTx = 0 } + src0 = initSourceState "src0" 1000 + utxo = "target0" /\ 1000 + in + assignUtxoToSource params src0 utxo `shouldEqual` + AssignUtxo_Deferred + + test "Correctly assigns utxos to source" + let + params = defaultParams { feePerTx = 100 } + src0 = initSourceState "src0" 2000 + utxo0 = "target0" /\ 1000 + utxo1 = "target1" /\ 500 + assignUtxo = flip (assignUtxoToSource params) + outcome = + (getSource <<< assignUtxo utxo1) + =<< getSource (assignUtxo utxo0 src0) + in + outcome `shouldEqual` Just + ( src0 + { leftover = 500 + , currentTx = modify + ( _ + { numUtxos = 2 + , utxos = List.fromFoldable + [ utxoToRec utxo1, utxoToRec utxo0 ] + } + ) + src0.currentTx + } + ) + + group "runDistrFundsRound" do + test "Fails if utxo cannot be covered by any source" + let + sources = List.fromFoldable + [ initSourceState "src0" 1000 + , initSourceState "src1" 2000 + , initSourceState "src2" 3000 + ] + utxos = List.fromFoldable + [ "target0" /\ 1000 + , "target1" /\ 3500 + ] + in + runDistrFundsRound defaultParams sources utxos `shouldEqual` + Left DistrFunds_AssignUtxoError + + test "Deferrs utxos that cannot be assigned in the current round" + let + params = defaultParams { maxUtxosPerTx = 1 } + src0 = initSourceState "src0" 2000 + src1 = initSourceState "src1" 1000 + sources = List.fromFoldable [ src0, src1 ] + utxo0 = "target0" /\ 1600 + utxo1 = "target1" /\ 800 + utxo2 = "target2" /\ 400 + utxos = List.fromFoldable [ utxo0, utxo1, utxo2 ] + in + runDistrFundsRound params sources utxos `shouldEqual` + Right + { sources: List.fromFoldable + [ src0 + { leftover = 400 + , currentTx = modify + ( _ + { numUtxos = 1 + , utxos = List.fromFoldable [ utxoToRec utxo0 ] + } + ) + src0.currentTx + } + , src1 + { leftover = 200 + , currentTx = modify + ( _ + { numUtxos = 1 + , utxos = List.fromFoldable [ utxoToRec utxo1 ] + } + ) + src1.currentTx + } + ] + , deferredTargets: List.fromFoldable [ utxo2 ] + } + + group "makeDistributionPlan" do + test "Prepares simple funds distribution plan (2 rounds)" + let + params = defaultParams { maxUtxosPerTx = 2, maxRounds = 5 } + + utxos0 = [ "01" /\ 2, "02" /\ 18 ] + utxos1 = [ "11" /\ 3, "12" /\ 17 ] + utxos2 = [ "21" /\ 9, "22" /\ 11 ] + utxos3 = [ "31" /\ 15, "32" /\ 5 ] + + -- total = 80 + utxos = utxos0 <> utxos1 <> utxos2 <> utxos3 + + -- sources have exactly enough funds to fit all the utxos + src0 = "src0" /\ 40 + src1 = "src1" /\ 40 + sources = [ src0, src1 ] + in + makeDistributionPlan params sources utxos `shouldEqual` + Right + [ [ wrap + { srcWallet: "src0" + , numUtxos: 2 + , utxos: List.fromFoldable $ utxoToRec <$> reverse utxos1 + } + , wrap + { srcWallet: "src1" + , numUtxos: 2 + , utxos: List.fromFoldable $ utxoToRec <$> reverse utxos0 + } + ] + , [ wrap + { srcWallet: "src0" + , numUtxos: 2 + , utxos: List.fromFoldable $ utxoToRec <$> utxos2 + } + , wrap + { srcWallet: "src1" + , numUtxos: 2 + , utxos: List.fromFoldable $ utxoToRec <$> utxos3 + } + ] + ] + +utxoToRec + :: forall wallet amount + . wallet /\ amount + -> { wallet :: wallet, amount :: amount } +utxoToRec (wallet /\ amount) = { wallet, amount } + +getSource + :: forall wallet amount + . AssignUtxoResult wallet amount + -> Maybe (SourceState wallet amount) +getSource = case _ of + AssignUtxo_AssignedToSource src -> Just src + _ -> Nothing + +defaultParams :: forall wallet. DistrFundsParams wallet Int +defaultParams = + { maxRounds: top + , maxUtxosPerTx: top + , getUtxoMinAdaForWallet: const zero + , feePerTx: zero + } diff --git a/test/Unit.purs b/test/Unit.purs index 2df8e4a08..49c48c675 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -29,6 +29,7 @@ import Test.Ctl.ProtocolParams as ProtocolParams import Test.Ctl.Serialization as Serialization import Test.Ctl.Serialization.Hash as Serialization.Hash import Test.Ctl.Testnet.DistributeFunds as Testnet.DistributeFunds +import Test.Ctl.Testnet.DistributeFundsV2 as Testnet.DistributeFundsV2 import Test.Ctl.Types.Interval as Types.Interval import Test.Ctl.Types.Ipv6 as Ipv6 import Test.Ctl.Types.TokenName as Types.TokenName @@ -49,6 +50,7 @@ main = interruptOnSignal SIGINT =<< launchAff do testPlan :: TestPlanM (Aff Unit) Unit testPlan = do Testnet.DistributeFunds.suite + Testnet.DistributeFundsV2.suite ApplyArgs.suite Ipv6.suite NativeScript.suite From bfa1b51d4f6647dafa5d4b12fe79f4e47b24b525 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 9 Jul 2024 00:26:43 +0400 Subject: [PATCH 279/373] Add retry logic for port checks --- src/Internal/Plutip/Server.purs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 104314d08..dbe4d522f 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -23,6 +23,7 @@ import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) import Contract.Chain (waitNSlots) import Contract.Config (defaultSynchronizationParams, defaultTimeParams) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) +import Control.Alternative (guard) import Control.Monad.Error.Class (liftEither, throwError) import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) @@ -102,6 +103,7 @@ import Effect.Aff.Class (liftAff) import Effect.Aff.Retry ( RetryPolicy , constantDelay + , exponentialBackoff , limitRetriesByCumulativeDelay , recovering ) @@ -438,16 +440,22 @@ configCheck cfg = do , cfg.ogmiosConfig.port /\ "ogmios" , cfg.kupoConfig.port /\ "kupo" ] - occupiedServices <- Array.catMaybes <$> for services \(port /\ service) -> do - isPortAvailable port <#> if _ then Nothing else Just (port /\ service) - unless (Array.null occupiedServices) do - liftEffect $ throw $ - "Unable to run the following services, because the ports are occupied:\ - \\n" <> foldMap printServiceEntry occupiedServices + totalDelay = 10000.00 + retryPolicy = limitRetriesByCumulativeDelay (Milliseconds totalDelay) $ + exponentialBackoff (Milliseconds 100.0) + recovering retryPolicy [ \_ _ -> pure true ] \_ -> do + occupiedServices <- Array.catMaybes <$> for services \service@(port /\ _) -> + do + isPortAvailable port <#> \isAvailable -> Just service <* guard + (not isAvailable) + unless (Array.null occupiedServices) do + liftEffect $ throw $ + "Unable to run the following services, because the ports are occupied:\ + \\n" <> foldMap printServiceEntry occupiedServices where printServiceEntry :: UInt /\ String -> String - printServiceEntry (port /\ service) = - "- " <> service <> " (port: " <> show (UInt.toInt port) <> ")\n" + printServiceEntry (port /\ name) = + "- " <> name <> " (port: " <> show (UInt.toInt port) <> ")\n" -- | Start the plutip cluster, initializing the state with the given -- | UTxO distribution. Also initializes an extra payment key (aka From 29994bffcc26c801d32c5d1030188acf33cff6c0 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Tue, 9 Jul 2024 15:05:14 -0300 Subject: [PATCH 280/373] Update package versions --- examples/SignData.js | 105 ++++++++++++++++ examples/SignData.purs | 144 +++++++++++++++++++++- package-lock.json | 48 ++++---- package.json | 4 +- packages.dhall | 4 +- spago-packages.nix | 20 +-- src/Contract/Transaction.purs | 1 - src/Contract/Wallet/Key.purs | 4 +- src/Internal/BalanceTx/RedeemerIndex.purs | 4 +- src/Internal/Contract/Wallet.purs | 4 +- src/Internal/Lens.purs | 5 - src/Internal/QueryM/Ogmios.purs | 7 +- src/Internal/Test/E2E/Runner.purs | 10 +- src/Internal/Test/KeyDir.purs | 48 ++++---- src/Internal/Wallet/Cip30Mock.purs | 9 +- src/Internal/Wallet/Key.purs | 4 +- templates/ctl-scaffold/package-lock.json | 48 ++++---- templates/ctl-scaffold/package.json | 4 +- templates/ctl-scaffold/packages.dhall | 4 +- templates/ctl-scaffold/spago-packages.nix | 22 ++-- test/Fixtures.purs | 128 +++++-------------- test/Plutip/Staking.purs | 7 +- test/Unit.purs | 6 - 23 files changed, 417 insertions(+), 223 deletions(-) create mode 100644 examples/SignData.js diff --git a/examples/SignData.js b/examples/SignData.js new file mode 100644 index 000000000..f681dc76a --- /dev/null +++ b/examples/SignData.js @@ -0,0 +1,105 @@ +"use strict"; + +// eslint-disable-next-line no-unused-vars +import * as lib from "@mlabs-haskell/cardano-message-signing"; +import * as CSL from "@mlabs-haskell/cardano-serialization-lib-gc"; + +function opt_chain(maybe, obj) { + const isNothing = x => x === null || x === undefined; + let result = obj; + for (let i = 2; i < arguments.length; i++) { + if (isNothing(result)) { + return maybe.nothing; + } else { + result = result[arguments[i]](); + } + } + return isNothing(result) ? maybe.nothing : maybe.just(result); +} + +const getCoseSign1ProtectedHeaders = coseSign1 => { + return coseSign1.headers().protected().deserialized_headers(); +}; + +export function _getCoseSign1ProtectedHeaderAlg(maybe) { + return coseSign1 => { + const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); + return opt_chain( + maybe, + protectedHeaders, + "algorithm_id", + "as_int", + "as_i32" + ); + }; +} + +export function _getCoseSign1ProtectedHeaderAddress(maybe) { + return coseSign1 => { + const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); + const cborValue = protectedHeaders.header(lib.Label.new_text("address")); + return opt_chain(maybe, cborValue, "as_bytes"); + }; +} + +export function _getCoseKeyHeaderKty(maybe) { + return coseKey => { + return opt_chain(maybe, coseKey.key_type(), "as_int", "as_i32"); + }; +} + +export function _getCoseKeyHeaderAlg(maybe) { + return coseKey => { + return opt_chain(maybe, coseKey, "algorithm_id", "as_int", "as_i32"); + }; +} + +export function _getCoseKeyHeaderCrv(maybe) { + return coseKey => { + const cborValue = coseKey.header( + lib.Label.new_int( + lib.Int.new_negative(lib.BigNum.from_str("1")) // crv (-1) + ) + ); + return opt_chain(maybe, cborValue, "as_int", "as_i32"); + }; +} + +export function _getCoseSign1ProtectedHeaderKid(maybe) { + return coseSign1 => { + const protectedHeaders = getCoseSign1ProtectedHeaders(coseSign1); + return opt_chain(maybe, protectedHeaders, "key_id"); + }; +} + +export function _getCoseKeyHeaderKid(maybe) { + return coseKey => { + return opt_chain(maybe, coseKey, "key_id"); + }; +} +export function _getCoseKeyHeaderX(maybe) { + return coseKey => { + const cborValue = coseKey.header( + lib.Label.new_int( + lib.Int.new_negative(lib.BigNum.from_str("2")) // x (-2) + ) + ); + return opt_chain(maybe, cborValue, "as_bytes"); + }; +} +export function getSignedData(coseSign1) { + return () => { + return coseSign1.signed_data(null, null).to_bytes(); + }; +} +export function verifySignature(coseSign1) { + return publicKey => sigStructBytes => () => { + const signature = CSL.Ed25519Signature.from_bytes(coseSign1.signature()); + return publicKey.verify(sigStructBytes, signature); + }; +} +const fromBytes = name => bytes => () => { + return lib[name].from_bytes(bytes); +}; +export const fromBytesCoseKey = fromBytes("COSEKey"); +export const fromBytesCoseSign1 = fromBytes("COSESign1"); diff --git a/examples/SignData.purs b/examples/SignData.purs index 36804b2f2..e777a4a1b 100644 --- a/examples/SignData.purs +++ b/examples/SignData.purs @@ -2,8 +2,11 @@ module Ctl.Examples.SignData (main, example, contract) where import Contract.Prelude -import Cardano.Types (RawBytes) -import Cardano.Wallet.Cip30.SignData (checkCip30SignDataResponse) +import Cardano.AsCbor (encodeCbor) +import Cardano.MessageSigning (DataSignature) +import Cardano.Types (CborBytes, PublicKey, RawBytes) +import Cardano.Types.PublicKey as PublicKey +import Cardano.Wallet.Cip30.SignData (COSEKey, COSESign1) import Contract.Address (Address) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') @@ -12,6 +15,9 @@ import Contract.Wallet (getChangeAddress, getRewardAddresses, signData) import Data.Array (head) as Array import Data.ByteArray (byteArrayFromAscii) import Data.Maybe (fromJust) +import Effect.Aff (error) +import Effect.Class (class MonadEffect) +import Effect.Exception (throw, throwException) import Partial.Unsafe (unsafePartial) main :: Effect Unit @@ -41,3 +47,137 @@ contract = do dataSignature <- signData address payload logInfo' $ "signData " <> addressLabel <> ": " <> show dataSignature void $ liftAff $ checkCip30SignDataResponse address dataSignature + +type DeserializedDataSignature = + { coseKey :: COSEKey + , coseSign1 :: COSESign1 + } + +checkCip30SignDataResponse + :: Address -> DataSignature -> Aff DeserializedDataSignature +checkCip30SignDataResponse address { key, signature } = do + coseSign1 <- liftEffect $ fromBytesCoseSign1 signature + coseKey <- liftEffect $ fromBytesCoseKey key + + checkCoseSign1ProtectedHeaders coseSign1 + checkCoseKeyHeaders coseKey + checkKidHeaders coseSign1 coseKey + liftEffect $ checkVerification coseSign1 coseKey + pure { coseKey, coseSign1 } + where + checkCoseSign1ProtectedHeaders :: COSESign1 -> Aff Unit + checkCoseSign1ProtectedHeaders coseSign1 = do + assertTrue "COSE_Sign1's alg (1) header must be set to EdDSA (-8)" + (getCoseSign1ProtectedHeaderAlg coseSign1 == Just (-8)) + + assertTrue "COSE_Sign1's \"address\" header must be set to address bytes" + ( getCoseSign1ProtectedHeaderAddress coseSign1 + == Just (encodeCbor address) + ) + + checkCoseKeyHeaders :: COSEKey -> Aff Unit + checkCoseKeyHeaders coseKey = do + assertTrue "COSE_Key's kty (1) header must be set to OKP (1)" + (getCoseKeyHeaderKty coseKey == Just 1) + + assertTrue "COSE_Key's alg (3) header must be set to EdDSA (-8)" + (getCoseKeyHeaderAlg coseKey == Just (-8)) + + assertTrue "COSE_Key's crv (-1) header must be set to Ed25519 (6)" + (getCoseKeyHeaderCrv coseKey == Just (6)) + + checkKidHeaders :: COSESign1 -> COSEKey -> Aff Unit + checkKidHeaders coseSign1 coseKey = + assertTrue + "COSE_Sign1's kid (4) and COSE_Key's kid (2) headers, if present, must \ + \be set to the same value" + (getCoseSign1ProtectedHeaderKid coseSign1 == getCoseKeyHeaderKid coseKey) + + checkVerification :: COSESign1 -> COSEKey -> Effect Unit + checkVerification coseSign1 coseKey = do + publicKey <- + errMaybe "COSE_Key's x (-2) header must be set to public key bytes" + $ getCoseKeyHeaderX coseKey + >>= PublicKey.fromRawBytes + sigStructBytes <- getSignedData coseSign1 + assertTrue "Signature verification failed" + =<< verifySignature coseSign1 publicKey sigStructBytes + +getCoseSign1ProtectedHeaderAlg :: COSESign1 -> Maybe Int +getCoseSign1ProtectedHeaderAlg = _getCoseSign1ProtectedHeaderAlg maybeFfiHelper + +getCoseSign1ProtectedHeaderAddress :: COSESign1 -> Maybe CborBytes +getCoseSign1ProtectedHeaderAddress = + _getCoseSign1ProtectedHeaderAddress maybeFfiHelper + +type MaybeFfiHelper = + { nothing :: forall (x :: Type). Maybe x + , just :: forall (x :: Type). x -> Maybe x + , from :: forall (x :: Type). x -> Maybe x -> x + } + +maybeFfiHelper :: MaybeFfiHelper +maybeFfiHelper = { nothing: Nothing, just: Just, from: fromMaybe } + +getCoseKeyHeaderKty :: COSEKey -> Maybe Int +getCoseKeyHeaderKty = _getCoseKeyHeaderKty maybeFfiHelper + +getCoseKeyHeaderAlg :: COSEKey -> Maybe Int +getCoseKeyHeaderAlg = _getCoseKeyHeaderAlg maybeFfiHelper + +getCoseKeyHeaderCrv :: COSEKey -> Maybe Int +getCoseKeyHeaderCrv = _getCoseKeyHeaderCrv maybeFfiHelper + +getCoseSign1ProtectedHeaderKid :: COSESign1 -> Maybe RawBytes +getCoseSign1ProtectedHeaderKid = _getCoseSign1ProtectedHeaderKid maybeFfiHelper + +getCoseKeyHeaderKid :: COSEKey -> Maybe RawBytes +getCoseKeyHeaderKid = _getCoseKeyHeaderKid maybeFfiHelper + +assertTrue + :: forall (m :: Type -> Type) + . Applicative m + => MonadEffect m + => String + -> Boolean + -> m Unit +assertTrue msg b = unless b $ liftEffect $ throwException $ error msg + +errMaybe + :: forall (m :: Type -> Type) (a :: Type) + . MonadEffect m + => String + -> Maybe a + -> m a +errMaybe msg = maybe (liftEffect $ throw msg) pure + +getCoseKeyHeaderX :: COSEKey -> Maybe RawBytes +getCoseKeyHeaderX = _getCoseKeyHeaderX maybeFfiHelper + +-------------------------------------------------------------------------------- +-- Foreign functions +-------------------------------------------------------------------------------- + +foreign import _getCoseSign1ProtectedHeaderAlg + :: MaybeFfiHelper -> COSESign1 -> Maybe Int + +foreign import _getCoseSign1ProtectedHeaderAddress + :: MaybeFfiHelper -> COSESign1 -> Maybe CborBytes + +foreign import _getCoseKeyHeaderX :: MaybeFfiHelper -> COSEKey -> Maybe RawBytes +foreign import _getCoseKeyHeaderKty :: MaybeFfiHelper -> COSEKey -> Maybe Int +foreign import _getCoseKeyHeaderAlg :: MaybeFfiHelper -> COSEKey -> Maybe Int +foreign import _getCoseKeyHeaderCrv :: MaybeFfiHelper -> COSEKey -> Maybe Int +foreign import _getCoseSign1ProtectedHeaderKid + :: MaybeFfiHelper -> COSESign1 -> Maybe RawBytes + +foreign import _getCoseKeyHeaderKid + :: MaybeFfiHelper -> COSEKey -> Maybe RawBytes + +foreign import getSignedData :: COSESign1 -> Effect CborBytes + +foreign import verifySignature + :: COSESign1 -> PublicKey -> CborBytes -> Effect Boolean + +foreign import fromBytesCoseSign1 :: CborBytes -> Effect COSESign1 +foreign import fromBytesCoseKey :: CborBytes -> Effect COSEKey diff --git a/package-lock.json b/package-lock.json index a9845f2b0..ab2b61785 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,10 @@ "name": "cardano-transaction-lib", "license": "MIT", "dependencies": { + "@emurgo/cardano-serialization-lib-browser": "v12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "v12.0.0-alpha.31", "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", + "@mlabs-haskell/cardano-serialization-lib-gc": "v12.0.0-alpha.31", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", @@ -60,14 +62,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", - "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.31.tgz", + "integrity": "sha512-LEMiaui1ByuVuesWGUQ4CzksZJW9FeL/KL8HN2smSTjuCA3IaAp2VXZPxPjxP/0VbF+EM1aLkPn6DD02U/qy5Q==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", - "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.31.tgz", + "integrity": "sha512-YvE4JmTwQTM+8Blbmfa7qv44vWr3qWRn5RsfjxmyptyJwAk0Z/AfGQjYyWO/LmFsj8YCIZD2lS80LhrzzkN+Kw==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -501,12 +503,12 @@ } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", - "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", + "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", "dependencies": { - "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, @@ -6391,14 +6393,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", - "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.31.tgz", + "integrity": "sha512-LEMiaui1ByuVuesWGUQ4CzksZJW9FeL/KL8HN2smSTjuCA3IaAp2VXZPxPjxP/0VbF+EM1aLkPn6DD02U/qy5Q==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", - "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.31.tgz", + "integrity": "sha512-YvE4JmTwQTM+8Blbmfa7qv44vWr3qWRn5RsfjxmyptyJwAk0Z/AfGQjYyWO/LmFsj8YCIZD2lS80LhrzzkN+Kw==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -6625,12 +6627,12 @@ } }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", - "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", + "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", "requires": { - "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, diff --git a/package.json b/package.json index 4cb9d9892..d47e7be01 100755 --- a/package.json +++ b/package.json @@ -32,7 +32,9 @@ "license": "MIT", "dependencies": { "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", + "@mlabs-haskell/cardano-serialization-lib-gc": "v12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "v12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-browser": "v12.0.0-alpha.31", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", diff --git a/packages.dhall b/packages.dhall index ab0b497fd..e85d9abb7 100644 --- a/packages.dhall +++ b/packages.dhall @@ -280,7 +280,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0" + , version = "v1.0.0" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -435,7 +435,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v1.0.1" + , version = "v2.0.0" } , cardano-message-signing = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 0c2469783..48997ba7f 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -214,8 +214,8 @@ let version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-collateral-select"; - rev = "296fe978a292f36d9fd2c18a2d173772301e71b9"; - sha256 = "09mcdjndalc9a91l0kx9s0p3bh5j58lji230b142yvgk8qmmayi9"; + rev = "193bf49be979b42aa1f0f9cb3d7582d6bc98e3b9"; + sha256 = "1jbl6k779brbqzf7jf80is63b23k3mqzf2mzr222qswd3wg8s5b0"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -238,8 +238,8 @@ let version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "f107d3dce0a0f1f866a4682783376ea9f476fd7d"; - sha256 = "0jxbzdjfvxvrf2nmay493x004d0y5jmnfqj06064nfihg5x0w2r8"; + rev = "fd50834bad329b3064b602e6487e9471ea102341"; + sha256 = "0bgizyhrpmj51lz24cnr6wvxwgvm41z24c66kk3lzhwq798n5q50"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -271,11 +271,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; - sha256 = "1ikz6j3jvls3cvl6znrw55f59abzdaf7ggd2x7j3f81m5cvkxggr"; + rev = "903bf0adeefedc4d065ad6523ad079433bdd8e32"; + sha256 = "0jlfxrx037hyd4v0j7l2b16yxlm6nw6qlnr992hj9nzip36vbpfg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -283,11 +283,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v1.0.1"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; - sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; + rev = "780c28ee27d0ba7e76884a565ad60dea0a414842"; + sha256 = "1my7fgk218h6yllw09zf1m55hpn787mjq79whxxm9lqgarrdp66z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 1c038632f..1ed8e59f2 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -132,7 +132,6 @@ import Ctl.Internal.Lens , _scriptRef , _totalCollateral , _ttl - , _update , _validityStartInterval , _vkeys , _withdrawals diff --git a/src/Contract/Wallet/Key.purs b/src/Contract/Wallet/Key.purs index 0849396a6..ddbb9e63c 100644 --- a/src/Contract/Wallet/Key.purs +++ b/src/Contract/Wallet/Key.purs @@ -8,8 +8,8 @@ import Cardano.Types (PrivateKey, PublicKey) import Cardano.Types.PrivateKey as PrivateKey import Ctl.Internal.Wallet.Key ( KeyWallet(KeyWallet) - , keyWalletPrivatePaymentKey - , keyWalletPrivateStakeKey + , getPrivatePaymentKey + , getPrivateStakeKey , privateKeysToKeyWallet ) as X import Ctl.Internal.Wallet.Spec diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 1b4182808..47a938810 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -81,7 +81,7 @@ unindexedRedeemerToRedeemer :: UnindexedRedeemer -> Redeemer unindexedRedeemerToRedeemer (UnindexedRedeemer { datum, purpose }) = Redeemer { tag: redeemerPurposeToRedeemerTag purpose - , "data": datum + , "data": wrap datum , index: BigNum.zero , exUnits: ExUnits.empty } @@ -107,7 +107,7 @@ indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = Redeemer { tag , index: BigNum.fromInt index - , data: datum + , data: wrap datum , exUnits: ExUnits.empty } diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 851939cfb..a2808b287 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -28,6 +28,7 @@ import Cardano.Types.Value (Value, valueToCoin) import Cardano.Types.Value (geq, lovelaceValueOf, sum) as Value import Control.Monad.Reader.Trans (asks) import Control.Parallel (parTraverse) +import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos, getQueryHandle) import Ctl.Internal.Helpers (bugTrackerLink, liftM, liftedM) @@ -136,7 +137,8 @@ getWalletCollateral = do utxos <- (liftAff $ queryHandle.utxosAt addr) <#> hush >>> fromMaybe Map.empty >>= filterLockedUtxos - mColl <- liftAff $ (unwrap kw).selectCollateral coinsPerUtxoByte + mColl <- liftAff $ (unwrap kw).selectCollateral minRequiredCollateral + coinsPerUtxoByte (UInt.toInt maxCollateralInputs) utxos pure mColl diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index 94a9bf786..4be16aa3e 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -25,7 +25,6 @@ module Ctl.Internal.Lens , _scriptRef , _totalCollateral , _ttl - , _update , _validityStartInterval , _vkeys , _withdrawals @@ -56,7 +55,6 @@ import Cardano.Types , TransactionOutput , TransactionUnspentOutput , TransactionWitnessSet - , Update , Value , Vkeywitness ) @@ -129,9 +127,6 @@ _auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") _ttl :: Lens' TransactionBody (Maybe Slot) _ttl = _Newtype <<< prop (Proxy :: Proxy "ttl") -_update :: Lens' TransactionBody (Maybe Update) -_update = _Newtype <<< prop (Proxy :: Proxy "update") - _validityStartInterval :: Lens' TransactionBody (Maybe Slot) _validityStartInterval = _Newtype <<< prop (Proxy :: Proxy "validityStartInterval") diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 8d1cb2eb8..2cdbd39c0 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -99,7 +99,7 @@ import Cardano.Serialization.Lib (fromBytes, ipv4_new) import Cardano.Types ( Bech32String , BigNum(BigNum) - , Language(PlutusV1, PlutusV2) + , Language(PlutusV1, PlutusV2, PlutusV3) , RedeemerTag , VRFKeyHash(VRFKeyHash) ) @@ -1220,6 +1220,11 @@ instance EncodeAeson AdditionalUtxoSet where { "language": "plutus:v2" , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps } + encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (_ /\ PlutusV3)))) = + encodeAeson + { "language": "plutus:v2" + , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps + } encodeValue :: Value -> Aeson encodeValue value = encodeMap $ map encodeMap $ Map.union adaPart nonAdaPart diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index debdd0673..76ec5618a 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -75,8 +75,8 @@ import Ctl.Internal.Test.E2E.Wallets import Ctl.Internal.Test.UtxoDistribution (withStakeKey) import Ctl.Internal.Wallet.Key ( PrivateStakeKey - , keyWalletPrivatePaymentKey - , keyWalletPrivateStakeKey + , getPrivatePaymentKey + , getPrivateStakeKey ) import Data.Array (catMaybes, mapMaybe, nub) import Data.Array as Array @@ -263,13 +263,15 @@ testPlan opts@{ tests } rt@{ wallets } = -- https://github.com/Plutonomicon/cardano-transaction-lib/issues/1197 liftAff $ withPlutipContractEnv (buildPlutipConfig opts) distr \env wallet -> do + kwPaymentKey <- liftAff $ getPrivatePaymentKey wallet + kwMStakeKey <- liftAff $ getPrivateStakeKey wallet (clusterSetup :: ClusterSetup) <- case env.backend of CtlBackend backend _ -> pure { ogmiosConfig: backend.ogmios.config , kupoConfig: backend.kupoConfig , keys: - { payment: keyWalletPrivatePaymentKey wallet - , stake: keyWalletPrivateStakeKey wallet + { payment: kwPaymentKey + , stake: kwMStakeKey } } _ -> liftEffect $ throw "Unsupported backend" diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 366c40d48..3738df2f7 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -38,8 +38,8 @@ import Contract.Wallet , withKeyWallet ) import Contract.Wallet.Key - ( keyWalletPrivatePaymentKey - , keyWalletPrivateStakeKey + ( getPrivatePaymentKey + , getPrivateStakeKey ) import Contract.Wallet.KeyFile ( privatePaymentKeyFromTextEnvelope @@ -287,9 +287,9 @@ backupWallets backup env walletsArray = do address <- liftAff $ Address.toBech32 <$> (unwrap wallet).address env.networkId + payment <- getPrivatePaymentKey wallet + mbStake <- getPrivateStakeKey wallet let - payment = keyWalletPrivatePaymentKey wallet - mbStake = keyWalletPrivateStakeKey wallet folder = Path.concat [ backup, address ] mkdir folder @@ -303,13 +303,12 @@ fundWallets :: ContractEnv -> Array KeyWallet -> Array (Array UtxoAmount) -> Aff BigNum fundWallets env walletsArray distrArray = runContractInEnv env $ noLogs do logTrace' "Funding wallets" - let - constraints = flip foldMap (Array.zip walletsArray distrArray) - \(wallet /\ walletDistr) -> flip foldMap walletDistr - \value -> mustPayToKeyWallet wallet $ - Value.mkValue - (wrap value) - MultiAsset.empty + constraints <- liftAff $ flip foldMap (Array.zip walletsArray distrArray) + \(wallet /\ walletDistr) -> flip foldMap walletDistr + \value -> mustPayToKeyWallet wallet $ + Value.mkValue + (wrap value) + MultiAsset.empty txHash <- submitTxFromConstraints mempty constraints awaitTxConfirmed txHash @@ -446,18 +445,19 @@ mustPayToKeyWallet :: forall (i :: Type) (o :: Type) . KeyWallet -> Value - -> TxConstraints -mustPayToKeyWallet wallet value = + -> Aff TxConstraints +mustPayToKeyWallet wallet value = do + kwPaymentKey <- getPrivatePaymentKey wallet + kwMStakeKey <- getPrivateStakeKey wallet let convert = PublicKey.hash <<< PrivateKey.toPublicKey - payment = over wrap convert $ keyWalletPrivatePaymentKey wallet - mbStake = over wrap convert <$> keyWalletPrivateStakeKey wallet - in - maybe - -- We don't use `mustPayToPubKey payment` to avoid the compile-time - -- warning that is tied to it (it should not be propagated to - -- `runContractTestWithKeyDir`) - (singleton <<< MustPayToPubKeyAddress payment Nothing Nothing Nothing) - (mustPayToPubKeyAddress payment) - mbStake - value + payment = over wrap convert $ kwPaymentKey + mbStake = over wrap convert <$> kwMStakeKey + pure $ maybe + -- We don't use `mustPayToPubKey payment` to avoid the compile-time + -- warning that is tied to it (it should not be propagated to + -- `runContractTestWithKeyDir`) + (singleton <<< MustPayToPubKeyAddress payment Nothing Nothing Nothing) + (mustPayToPubKeyAddress payment) + mbStake + value diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 3a0d4079e..e585d8efd 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -28,6 +28,7 @@ import Control.Monad.Error.Class (liftMaybe, try) import Control.Monad.Reader (ask) import Control.Monad.Reader.Class (local) import Control.Promise (fromAff) +import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Helpers (liftEither) import Ctl.Internal.Wallet @@ -92,8 +93,9 @@ withCip30Mock -> Contract a -> Contract a withCip30Mock (KeyWallet keyWallet) mock contract = do - cip30Mock <- mkCip30Mock keyWallet.paymentKey - keyWallet.stakeKey + kwPaymentKey <- liftAff keyWallet.paymentKey + kwMStakeKey <- liftAff keyWallet.stakeKey + cip30Mock <- mkCip30Mock kwPaymentKey kwMStakeKey deleteMock <- liftEffect $ injectCip30Mock mockString cip30Mock wallet <- liftAff mkWalletAff' res <- try $ local _ { wallet = Just wallet } contract @@ -131,7 +133,8 @@ mkCip30Mock pKey mSKey = do maxCollateralInputs = UInt.toInt $ pparams.maxCollateralInputs coll <- liftAff $ - (unwrap keyWallet).selectCollateral coinsPerUtxoByte + (unwrap keyWallet).selectCollateral minRequiredCollateral + coinsPerUtxoByte maxCollateralInputs utxos pure $ fold coll diff --git a/src/Internal/Wallet/Key.purs b/src/Internal/Wallet/Key.purs index add12d9cc..641d4df35 100644 --- a/src/Internal/Wallet/Key.purs +++ b/src/Internal/Wallet/Key.purs @@ -6,8 +6,8 @@ import Cardano.Wallet.Key ( KeyWallet(KeyWallet) , PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) - , keyWalletPrivatePaymentKey - , keyWalletPrivateStakeKey + , getPrivatePaymentKey + , getPrivateStakeKey , privateKeysToAddress , privateKeysToKeyWallet ) as KeyWallet diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 561dc93e3..6d800dbeb 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -9,8 +9,10 @@ "version": "0.1.0", "license": "MIT", "dependencies": { + "@emurgo/cardano-serialization-lib-browser": "v12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "v12.0.0-alpha.31", "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", + "@mlabs-haskell/cardano-serialization-lib-gc": "v12.0.0-alpha.31", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", @@ -58,14 +60,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", - "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.31.tgz", + "integrity": "sha512-LEMiaui1ByuVuesWGUQ4CzksZJW9FeL/KL8HN2smSTjuCA3IaAp2VXZPxPjxP/0VbF+EM1aLkPn6DD02U/qy5Q==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", - "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.31.tgz", + "integrity": "sha512-YvE4JmTwQTM+8Blbmfa7qv44vWr3qWRn5RsfjxmyptyJwAk0Z/AfGQjYyWO/LmFsj8YCIZD2lS80LhrzzkN+Kw==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -499,12 +501,12 @@ } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", - "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", + "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", "dependencies": { - "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, @@ -5518,14 +5520,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", - "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.31.tgz", + "integrity": "sha512-LEMiaui1ByuVuesWGUQ4CzksZJW9FeL/KL8HN2smSTjuCA3IaAp2VXZPxPjxP/0VbF+EM1aLkPn6DD02U/qy5Q==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", - "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.31.tgz", + "integrity": "sha512-YvE4JmTwQTM+8Blbmfa7qv44vWr3qWRn5RsfjxmyptyJwAk0Z/AfGQjYyWO/LmFsj8YCIZD2lS80LhrzzkN+Kw==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -5752,12 +5754,12 @@ } }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", - "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", + "version": "12.0.0-alpha.31", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", + "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", "requires": { - "@emurgo/cardano-serialization-lib-browser": "^11.2.1", - "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", + "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index f34f4d9e3..b746c3ce7 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -26,7 +26,9 @@ "license": "MIT", "dependencies": { "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", + "@mlabs-haskell/cardano-serialization-lib-gc": "v12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-nodejs": "v12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-browser": "v12.0.0-alpha.31", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 669048fce..342736980 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -280,7 +280,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0" + , version = "v1.0.0" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -435,7 +435,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v1.0.1" + , version = "v2.0.0" } , cardano-message-signing = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index f2c859bbf..6d317917f 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -214,8 +214,8 @@ let version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-collateral-select"; - rev = "296fe978a292f36d9fd2c18a2d173772301e71b9"; - sha256 = "09mcdjndalc9a91l0kx9s0p3bh5j58lji230b142yvgk8qmmayi9"; + rev = "193bf49be979b42aa1f0f9cb3d7582d6bc98e3b9"; + sha256 = "1jbl6k779brbqzf7jf80is63b23k3mqzf2mzr222qswd3wg8s5b0"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -238,8 +238,8 @@ let version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "f107d3dce0a0f1f866a4682783376ea9f476fd7d"; - sha256 = "0jxbzdjfvxvrf2nmay493x004d0y5jmnfqj06064nfihg5x0w2r8"; + rev = "fd50834bad329b3064b602e6487e9471ea102341"; + sha256 = "0bgizyhrpmj51lz24cnr6wvxwgvm41z24c66kk3lzhwq798n5q50"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -271,17 +271,17 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; - sha256 = "1ikz6j3jvls3cvl6znrw55f59abzdaf7ggd2x7j3f81m5cvkxggr"; + rev = "903bf0adeefedc4d065ad6523ad079433bdd8e32"; + sha256 = "0jlfxrx037hyd4v0j7l2b16yxlm6nw6qlnr992hj9nzip36vbpfg"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; }; - "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { + "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; src = pkgs.fetchgit { @@ -295,11 +295,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v1.0.1"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; - sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; + rev = "780c28ee27d0ba7e76884a565ad60dea0a414842"; + sha256 = "1my7fgk218h6yllw09zf1m55hpn787mjq79whxxm9lqgarrdp66z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/test/Fixtures.purs b/test/Fixtures.purs index e4a9f0783..25e6f80b5 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -86,25 +86,19 @@ import Cardano.Types ( AuxiliaryData(AuxiliaryData) , Bech32String , Certificate - ( StakeRegistration - , StakeDeregistration - , StakeDelegation + ( PoolRetirement , PoolRegistration - , PoolRetirement - , GenesisKeyDelegation - , MoveInstantaneousRewardsCert + , StakeDelegation + , StakeDeregistration + , StakeRegistration ) , Coin(Coin) , Credential(PubKeyHashCredential) , Ed25519KeyHash , Epoch(Epoch) - , ExUnitPrices(ExUnitPrices) , ExUnits(ExUnits) , GeneralTransactionMetadata(GeneralTransactionMetadata) , Language(PlutusV2) - , MIRPot(Reserves, Treasury) - , MIRToStakeCredentials(MIRToStakeCredentials) - , MoveInstantaneousReward(ToOtherPot, ToStakeCreds) , NativeScript ( TimelockExpiry , TimelockStart @@ -121,12 +115,9 @@ import Cardano.Types , PoolMetadata(PoolMetadata) , PoolParams(PoolParams) , PoolPubKeyHash(PoolPubKeyHash) - , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) - , ProtocolParamUpdate(ProtocolParamUpdate) - , ProtocolVersion(ProtocolVersion) , Redeemer(Redeemer) , RedeemerTag(Spend) - , Relay(SingleHostAddr, SingleHostName, MultiHostName) + , Relay(MultiHostName, SingleHostName, SingleHostAddr) , RewardAddress , ScriptHash , ScriptRef(NativeScriptRef) @@ -139,7 +130,6 @@ import Cardano.Types , TransactionWitnessSet(TransactionWitnessSet) , URL(URL) , UnitInterval(UnitInterval) - , Update(Update) , UtxoMap , Value(Value) , Vkey(Vkey) @@ -177,7 +167,6 @@ import JS.BigInt as BigInt import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) import Partial.Unsafe (unsafePartial) -import Test.Ctl.Fixtures.CostModels (costModelsFixture1) txOutputFixture1 :: TransactionOutput txOutputFixture1 = @@ -254,49 +243,6 @@ bigNumOne = BigNum.fromInt 1 rewardAddress1 :: RewardAddress rewardAddress1 = { networkId: TestnetId, stakeCredential: wrap stake1 } -proposedProtocolParameterUpdates1 :: ProposedProtocolParameterUpdates -proposedProtocolParameterUpdates1 = ProposedProtocolParameterUpdates $ - Map.fromFoldable - [ ( unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - ) /\ - ProtocolParamUpdate - { minfeeA: Just $ Coin $ BigNum.fromInt 1 - , minfeeB: Just $ Coin $ BigNum.fromInt 1 - , maxBlockBodySize: Just $ UInt.fromInt 10000 - , maxTxSize: Just $ UInt.fromInt 10000 - , maxBlockHeaderSize: Just $ UInt.fromInt 1000 - , keyDeposit: Just $ Coin $ BigNum.fromInt 1 - , poolDeposit: Just $ Coin $ BigNum.fromInt 1 - , maxEpoch: Just $ Epoch one - , nOpt: Just $ UInt.fromInt 1 - , poolPledgeInfluence: Just $ UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - , expansionRate: Just $ UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - , treasuryGrowthRate: Just $ UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - , protocolVersion: Just $ ProtocolVersion - { major: 1, minor: 1 } - , minPoolCost: Just $ wrap bigNumOne - , adaPerUtxoByte: Just $ wrap bigNumOne - , costModels: Just costModelsFixture1 - , executionCosts: Just $ ExUnitPrices - { memPrice: UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - , stepPrice: UnitInterval - { numerator: bigNumOne, denominator: bigNumOne } - } - , maxTxExUnits: Just $ ExUnits - { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } - , maxBlockExUnits: Just $ ExUnits - { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } - , maxValueSize: Just $ UInt.fromInt 1 - , collateralPercentage: Just $ UInt.fromInt 140 - , maxCollateralInputs: Just $ UInt.fromInt 10 - } - ] - -- | Extend this for your needs. type SampleTxConfig = { inputs :: Array TransactionInput } @@ -325,7 +271,6 @@ mkSampleTx startTx changes = , ttl , certs , withdrawals - , update , auxiliaryDataHash , validityStartInterval , mint @@ -351,7 +296,6 @@ mkSampleTx startTx changes = , ttl , certs , withdrawals - , update , auxiliaryDataHash , validityStartInterval , mint @@ -362,6 +306,10 @@ mkSampleTx startTx changes = , networkId , collateralReturn , totalCollateral + , votingProposals: [] + , votingProcedures: wrap Map.empty + , currentTreasuryValue: Nothing + , donation: Nothing } , witnessSet , isValid @@ -404,7 +352,6 @@ txFixture1 = , ttl: Nothing , certs: [] , withdrawals: Map.empty - , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -415,6 +362,10 @@ txFixture1 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing + , votingProposals: [] + , votingProcedures: wrap Map.empty + , currentTreasuryValue: Nothing + , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -438,7 +389,6 @@ txFixture2 = , ttl: Nothing , certs: [] , withdrawals: Map.empty - , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -449,6 +399,10 @@ txFixture2 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing + , votingProposals: [] + , votingProcedures: wrap Map.empty + , currentTreasuryValue: Nothing + , donation: Nothing } , witnessSet: witnessSetFixture3Value , isValid: true @@ -490,7 +444,6 @@ txFixture3 = , ttl: Nothing , certs: [] , withdrawals: Map.empty - , update: Nothing , referenceInputs: [ txInputFixture1 ] , auxiliaryDataHash: Nothing , validityStartInterval: Nothing @@ -501,6 +454,10 @@ txFixture3 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing + , votingProposals: [] + , votingProcedures: wrap Map.empty + , currentTreasuryValue: Nothing + , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -607,36 +564,9 @@ txFixture4 = { poolKeyHash: PoolPubKeyHash ed25519KeyHash1 , epoch: Epoch one } - , GenesisKeyDelegation - { genesisHash: unsafePartial $ fromJust $ decodeCbor $ wrap $ - hexToByteArrayUnsafe - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - , genesisDelegateHash: unsafePartial $ fromJust $ decodeCbor - $ wrap - $ - hexToByteArrayUnsafe - "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" - , vrfKeyhash: unsafePartial $ fromJust $ decodeCbor $ wrap $ - hexToByteArrayUnsafe - "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" - } - , MoveInstantaneousRewardsCert $ ToOtherPot - { pot: Reserves - , amount: wrap bigNumOne - } - , MoveInstantaneousRewardsCert $ ToStakeCreds - { pot: Treasury - , amounts: MIRToStakeCredentials $ Map.fromFoldable - [ wrap stake1 /\ Int.newPositive bigNumOne ] - } ] , withdrawals: Map.fromFoldable [ rewardAddress1 /\ Coin BigNum.one ] - , update: Just $ Update - { proposedProtocolParameterUpdates: - proposedProtocolParameterUpdates1 - , epoch: Epoch zero - } , auxiliaryDataHash: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe $ Array.replicate 32 0 @@ -653,6 +583,10 @@ txFixture4 = , networkId: Just MainnetId , collateralReturn: Just txOutputFixture1 , totalCollateral: Just $ Coin $ BigNum.fromInt 5_000_000 + , votingProposals: [] + , votingProcedures: wrap Map.empty + , currentTreasuryValue: Nothing + , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -690,7 +624,6 @@ txFixture5 = , ttl: Nothing , certs: [] , withdrawals: Map.empty - , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -701,6 +634,10 @@ txFixture5 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing + , votingProposals: [] + , votingProcedures: wrap Map.empty + , currentTreasuryValue: Nothing + , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -724,7 +661,6 @@ txFixture6 = , ttl: Nothing , certs: [] , withdrawals: Map.empty - , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -735,6 +671,10 @@ txFixture6 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing + , votingProposals: [] + , votingProcedures: wrap Map.empty + , currentTreasuryValue: Nothing + , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -1351,7 +1291,7 @@ redeemerFixture1 :: Redeemer redeemerFixture1 = Redeemer { tag: Spend , index: BigNum.fromInt 0 - , data: plutusDataFixture7 + , data: wrap plutusDataFixture7 , exUnits: ExUnits { mem: BigNum.fromInt 1 , steps: BigNum.fromInt 1 diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index 630a407d1..076db91da 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -64,7 +64,7 @@ import Contract.Wallet , ownStakePubKeyHashes , withKeyWallet ) -import Contract.Wallet.Key (keyWalletPrivateStakeKey, publicKeyFromPrivateKey) +import Contract.Wallet.Key (getPrivateStakeKey, publicKeyFromPrivateKey) import Ctl.Examples.AlwaysSucceeds (alwaysSucceedsScript) import Ctl.Examples.Helpers (submitAndLog) import Ctl.Examples.IncludeDatum (only42Script) @@ -285,8 +285,9 @@ suite = do ubTx <- mkUnbalancedTx lookups constraints balanceTx ubTx >>= signTransaction >>= submitAndLog - privateStakeKey <- liftM (error "Failed to get private stake key") $ - keyWalletPrivateStakeKey alice + kwMStakeKey <- liftAff $ getPrivateStakeKey alice + privateStakeKey <- liftM (error "Failed to get private stake key") + kwMStakeKey networkId <- getNetworkId let poolOperator = PoolPubKeyHash $ publicKeyHash $ diff --git a/test/Unit.purs b/test/Unit.purs index b2802bd5f..9bd4da80e 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -2,7 +2,6 @@ module Test.Ctl.Unit (main, testPlan) where import Prelude -import Cardano.Wallet.Cip30.SignData as Cip30SignData import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Contract.Test.Utils (exitCode, interruptOnSignal) import Data.Maybe (Maybe(Just)) @@ -16,8 +15,6 @@ import Test.Ctl.ApplyArgs as ApplyArgs import Test.Ctl.Blockfrost.Aeson.Suite as Blockfrost.Aeson import Test.Ctl.Blockfrost.ProtocolParameters as Blockfrost.ProtocolParameters import Test.Ctl.CoinSelection as CoinSelection -import Test.Ctl.CslGc as CslGc -import Test.Ctl.Data as Data import Test.Ctl.Data.Interval as Ctl.Data.Interval import Test.Ctl.E2E.Route as E2E.Route import Test.Ctl.Hashing as Hashing @@ -51,9 +48,6 @@ testPlan = do Ipv6.suite NativeScript.suite Bip32.suite - Cip30SignData.suite - CslGc.suite - Data.suite Hashing.suite Partition.suite Plutus.Time.suite From a75de33cb96e9790d41fc2b65cf3560896bc68ec Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Tue, 9 Jul 2024 15:13:50 -0300 Subject: [PATCH 281/373] Remove `Ctl.Internal.Wallet.Key` module Use `Cardano.Wallet.Key` instead. --- src/Contract/Config.purs | 10 +++++----- src/Contract/Wallet.purs | 12 ++++++------ src/Contract/Wallet/Key.purs | 2 +- src/Contract/Wallet/KeyFile.purs | 2 +- src/Internal/Plutip/Server.purs | 2 +- src/Internal/QueryM.purs | 2 +- src/Internal/Test/E2E/Runner.purs | 10 +++++----- src/Internal/Test/KeyDir.purs | 2 +- src/Internal/Test/UtxoDistribution.purs | 12 ++++++------ src/Internal/Wallet.purs | 6 +++--- src/Internal/Wallet/Cip30Mock.purs | 2 +- src/Internal/Wallet/Key.purs | 13 ------------- src/Internal/Wallet/KeyFile.purs | 2 +- src/Internal/Wallet/Spec.purs | 12 ++++++------ test/Plutip/Common.purs | 2 +- test/Wallet/Bip32.purs | 2 +- 16 files changed, 40 insertions(+), 53 deletions(-) delete mode 100644 src/Internal/Wallet/Key.purs diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 57d523e14..b7b8fa560 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -23,11 +23,15 @@ module Contract.Config , module Data.Log.Message , module Ctl.Internal.ServerConfig , module Ctl.Internal.Wallet.Spec - , module Ctl.Internal.Wallet.Key + , module Cardano.Wallet.Key , module X ) where import Cardano.Types (NetworkId(MainnetId, TestnetId)) +import Cardano.Wallet.Key + ( PrivatePaymentKey(PrivatePaymentKey) + , PrivateStakeKey(PrivateStakeKey) + ) import Ctl.Internal.BalanceTx.Sync ( disabledSynchronizationParams ) as X @@ -67,10 +71,6 @@ import Ctl.Internal.ServerConfig , defaultKupoServerConfig , defaultOgmiosWsConfig ) -import Ctl.Internal.Wallet.Key - ( PrivatePaymentKey(PrivatePaymentKey) - , PrivateStakeKey(PrivateStakeKey) - ) import Ctl.Internal.Wallet.Spec ( Cip1852DerivationPath , MnemonicSource(MnemonicString, MnemonicFile) diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 391ea4693..4ad52a1ba 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -18,6 +18,12 @@ import Cardano.Types (Address, StakePubKeyHash, UtxoMap, Value) import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash) import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) import Cardano.Types.Value as Value +import Cardano.Wallet.Key + ( KeyWallet + , PrivatePaymentKey(PrivatePaymentKey) + , PrivateStakeKey(PrivateStakeKey) + , privateKeysToKeyWallet + ) as X import Contract.Config (PrivatePaymentKey, PrivateStakeKey) import Contract.Log (logTrace') import Contract.Monad (Contract) @@ -58,12 +64,6 @@ import Ctl.Internal.Wallet ) , isWalletAvailable ) as X -import Ctl.Internal.Wallet.Key - ( KeyWallet - , PrivatePaymentKey(PrivatePaymentKey) - , PrivateStakeKey(PrivateStakeKey) - , privateKeysToKeyWallet - ) as X import Ctl.Internal.Wallet.KeyFile (formatPaymentKey, formatStakeKey) as X import Ctl.Internal.Wallet.Spec ( Cip1852DerivationPath diff --git a/src/Contract/Wallet/Key.purs b/src/Contract/Wallet/Key.purs index ddbb9e63c..3b962f04c 100644 --- a/src/Contract/Wallet/Key.purs +++ b/src/Contract/Wallet/Key.purs @@ -6,7 +6,7 @@ module Contract.Wallet.Key import Cardano.Types (PrivateKey, PublicKey) import Cardano.Types.PrivateKey as PrivateKey -import Ctl.Internal.Wallet.Key +import Cardano.Wallet.Key ( KeyWallet(KeyWallet) , getPrivatePaymentKey , getPrivateStakeKey diff --git a/src/Contract/Wallet/KeyFile.purs b/src/Contract/Wallet/KeyFile.purs index eeec865eb..cb139e004 100644 --- a/src/Contract/Wallet/KeyFile.purs +++ b/src/Contract/Wallet/KeyFile.purs @@ -6,7 +6,7 @@ module Contract.Wallet.KeyFile import Prelude -import Ctl.Internal.Wallet.Key (KeyWallet, privateKeysToKeyWallet) +import Cardano.Wallet.Key (KeyWallet, privateKeysToKeyWallet) import Ctl.Internal.Wallet.KeyFile ( privatePaymentKeyFromFile , privatePaymentKeyFromTextEnvelope diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs index 104314d08..e717749c3 100644 --- a/src/Internal/Plutip/Server.purs +++ b/src/Internal/Plutip/Server.purs @@ -20,6 +20,7 @@ import Affjax.ResponseFormat as Affjax.ResponseFormat import Cardano.Types (NetworkId(MainnetId)) import Cardano.Types.BigNum as BigNum import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) +import Cardano.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) import Contract.Chain (waitNSlots) import Contract.Config (defaultSynchronizationParams, defaultTimeParams) import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) @@ -78,7 +79,6 @@ import Ctl.Internal.Test.UtxoDistribution , transferFundsFromEnterpriseToBase ) import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) -import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) import Data.Array as Array import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), either, isLeft) diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 6fd3fa298..052c5447b 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -154,7 +154,7 @@ import Ctl.Internal.Service.Error ) import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.SystemStart (SystemStart) -import Ctl.Internal.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) +import Cardano.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) import Data.Bifunctor (lmap) import Data.ByteArray (byteArrayToHex) import Data.Either (Either(Left, Right), either, isRight) diff --git a/src/Internal/Test/E2E/Runner.purs b/src/Internal/Test/E2E/Runner.purs index 76ec5618a..383fef8d1 100644 --- a/src/Internal/Test/E2E/Runner.purs +++ b/src/Internal/Test/E2E/Runner.purs @@ -12,6 +12,11 @@ import Affjax (printError) import Affjax.ResponseFormat as Affjax.ResponseFormat import Cardano.Types.BigNum as BigNum import Cardano.Types.PrivateKey as PrivateKey +import Cardano.Wallet.Key + ( PrivateStakeKey + , getPrivatePaymentKey + , getPrivateStakeKey + ) import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe) import Control.Promise (Promise, toAffE) @@ -73,11 +78,6 @@ import Ctl.Internal.Test.E2E.Wallets , namiSign ) import Ctl.Internal.Test.UtxoDistribution (withStakeKey) -import Ctl.Internal.Wallet.Key - ( PrivateStakeKey - , getPrivatePaymentKey - , getPrivateStakeKey - ) import Data.Array (catMaybes, mapMaybe, nub) import Data.Array as Array import Data.ByteArray (hexToByteArray) diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 3738df2f7..e36ed2243 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -70,7 +70,7 @@ import Ctl.Internal.Types.TxConstraints , mustSpendPubKeyOutput , singleton ) -import Ctl.Internal.Wallet.Key (KeyWallet) +import Cardano.Wallet.Key (KeyWallet) import Data.Array (catMaybes) import Data.Array as Array import Data.Either (Either(Right, Left), hush) diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index ef0461315..b6644938e 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -25,6 +25,12 @@ import Cardano.Types import Cardano.Types.Address (Address(EnterpriseAddress)) import Cardano.Types.PrivateKey (PrivateKey) import Cardano.Types.UtxoMap (UtxoMap) +import Cardano.Wallet.Key + ( KeyWallet + , PrivatePaymentKey(PrivatePaymentKey) + , PrivateStakeKey + , privateKeysToKeyWallet + ) import Contract.Address (getNetworkId) import Contract.Monad (Contract, liftedM) import Contract.Prelude (foldM, foldMap, null) @@ -48,12 +54,6 @@ import Contract.Wallet import Control.Alternative (guard) import Control.Monad.Reader (asks) import Control.Monad.State.Trans (StateT(StateT), runStateT) -import Ctl.Internal.Wallet.Key - ( KeyWallet - , PrivatePaymentKey(PrivatePaymentKey) - , PrivateStakeKey - , privateKeysToKeyWallet - ) import Data.Array (head) import Data.Array as Array import Data.FoldableWithIndex (foldMapWithIndex) diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 16d43bb31..8a6ba2180 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -19,14 +19,14 @@ module Ctl.Internal.Wallet import Prelude import Cardano.Wallet.Cip30 as Cip30 -import Control.Monad.Error.Class (catchError, throwError) -import Ctl.Internal.Wallet.Cip30 (Cip30Wallet, mkCip30WalletAff) -import Ctl.Internal.Wallet.Key +import Cardano.Wallet.Key ( KeyWallet , PrivatePaymentKey , PrivateStakeKey , privateKeysToKeyWallet ) +import Control.Monad.Error.Class (catchError, throwError) +import Ctl.Internal.Wallet.Cip30 (Cip30Wallet, mkCip30WalletAff) import Data.Int (toNumber) import Data.Maybe (Maybe) import Data.Newtype (wrap) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index e585d8efd..3a3a949c4 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -43,7 +43,7 @@ import Ctl.Internal.Wallet ) , mkWalletAff ) -import Ctl.Internal.Wallet.Key +import Cardano.Wallet.Key ( KeyWallet(KeyWallet) , PrivatePaymentKey , PrivateStakeKey diff --git a/src/Internal/Wallet/Key.purs b/src/Internal/Wallet/Key.purs deleted file mode 100644 index 641d4df35..000000000 --- a/src/Internal/Wallet/Key.purs +++ /dev/null @@ -1,13 +0,0 @@ -module Ctl.Internal.Wallet.Key - ( module KeyWallet - ) where - -import Cardano.Wallet.Key - ( KeyWallet(KeyWallet) - , PrivatePaymentKey(PrivatePaymentKey) - , PrivateStakeKey(PrivateStakeKey) - , getPrivatePaymentKey - , getPrivateStakeKey - , privateKeysToAddress - , privateKeysToKeyWallet - ) as KeyWallet diff --git a/src/Internal/Wallet/KeyFile.purs b/src/Internal/Wallet/KeyFile.purs index 3238cb04f..c18d7046b 100644 --- a/src/Internal/Wallet/KeyFile.purs +++ b/src/Internal/Wallet/KeyFile.purs @@ -27,7 +27,7 @@ import Ctl.Internal.Cardano.TextEnvelope , decodeTextEnvelope ) import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.Wallet.Key +import Cardano.Wallet.Key ( PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) ) diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index 29bd68780..21f2b5bdd 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -28,6 +28,12 @@ import Cardano.Wallet.HD , derivePaymentKey , deriveStakeKey ) +import Cardano.Wallet.Key + ( KeyWallet + , PrivatePaymentKey(PrivatePaymentKey) + , PrivateStakeKey(PrivateStakeKey) + , privateKeysToKeyWallet + ) import Control.Monad.Error.Class (liftEither) import Ctl.Internal.Wallet ( Wallet(KeyWallet) @@ -44,12 +50,6 @@ import Ctl.Internal.Wallet , mkKeyWallet , mkWalletAff ) -import Ctl.Internal.Wallet.Key - ( KeyWallet - , PrivatePaymentKey(PrivatePaymentKey) - , PrivateStakeKey(PrivateStakeKey) - , privateKeysToKeyWallet - ) import Ctl.Internal.Wallet.KeyFile ( privatePaymentKeyFromFile , privateStakeKeyFromFile diff --git a/test/Plutip/Common.purs b/test/Plutip/Common.purs index 3cd0304fb..604bc9a70 100644 --- a/test/Plutip/Common.purs +++ b/test/Plutip/Common.purs @@ -8,7 +8,7 @@ import Prelude import Contract.Keys (privateKeyFromBytes) import Contract.Test.Plutip (defaultPlutipConfig) import Ctl.Internal.Plutip.Types (PlutipConfig) -import Ctl.Internal.Wallet.Key (PrivateStakeKey) +import Cardano.Wallet.Key (PrivateStakeKey) import Data.ByteArray (hexToByteArray) import Data.Maybe (fromJust) import Data.Newtype (wrap) diff --git a/test/Wallet/Bip32.purs b/test/Wallet/Bip32.purs index 06f712ab7..074f84125 100644 --- a/test/Wallet/Bip32.purs +++ b/test/Wallet/Bip32.purs @@ -6,11 +6,11 @@ import Contract.Prelude import Cardano.Types.Address as Address import Cardano.Types.NetworkId (NetworkId(MainnetId)) +import Cardano.Wallet.Key (KeyWallet) import Contract.Wallet.Key ( StakeKeyPresence(WithStakeKey) , mkKeyWalletFromMnemonic ) -import Ctl.Internal.Wallet.Key (KeyWallet) import Data.Lens (_Left, preview) import Data.UInt as UInt import Effect.Aff (Aff) From cbcdf7d3b08ca563308a87e263bb7ea5fba60bd4 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Tue, 9 Jul 2024 15:23:24 -0300 Subject: [PATCH 282/373] Fix formatting --- src/Internal/QueryM.purs | 2 +- src/Internal/Test/KeyDir.purs | 2 +- src/Internal/Wallet/Cip30Mock.purs | 12 ++++++------ src/Internal/Wallet/KeyFile.purs | 8 ++++---- test/Plutip/Common.purs | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Internal/QueryM.purs b/src/Internal/QueryM.purs index 052c5447b..5dece7cc8 100644 --- a/src/Internal/QueryM.purs +++ b/src/Internal/QueryM.purs @@ -67,6 +67,7 @@ import Cardano.Types (PlutusScript) import Cardano.Types.CborBytes (CborBytes) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.TransactionHash (TransactionHash) +import Cardano.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) import Control.Alt (class Alt) import Control.Alternative (class Alternative) import Control.Monad.Error.Class @@ -154,7 +155,6 @@ import Ctl.Internal.Service.Error ) import Ctl.Internal.Types.Chain as Chain import Ctl.Internal.Types.SystemStart (SystemStart) -import Cardano.Wallet.Key (PrivatePaymentKey, PrivateStakeKey) import Data.Bifunctor (lmap) import Data.ByteArray (byteArrayToHex) import Data.Either (Either(Left, Right), either, isRight) diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index e36ed2243..075046de7 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -11,6 +11,7 @@ import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.PublicKey as PublicKey import Cardano.Types.Value as Value +import Cardano.Wallet.Key (KeyWallet) import Contract.Config (ContractParams) import Contract.Log (logError', logTrace') import Contract.Monad @@ -70,7 +71,6 @@ import Ctl.Internal.Types.TxConstraints , mustSpendPubKeyOutput , singleton ) -import Cardano.Wallet.Key (KeyWallet) import Data.Array (catMaybes) import Data.Array as Array import Data.Either (Either(Right, Left), hush) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 3a3a949c4..17a6117b4 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -23,6 +23,12 @@ import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.PublicKey as PublicKey import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutput import Cardano.Wallet.Cip30Mock (Cip30Mock, injectCip30Mock) +import Cardano.Wallet.Key + ( KeyWallet(KeyWallet) + , PrivatePaymentKey + , PrivateStakeKey + , privateKeysToKeyWallet + ) import Contract.Monad (Contract) import Control.Monad.Error.Class (liftMaybe, try) import Control.Monad.Reader (ask) @@ -43,12 +49,6 @@ import Ctl.Internal.Wallet ) , mkWalletAff ) -import Cardano.Wallet.Key - ( KeyWallet(KeyWallet) - , PrivatePaymentKey - , PrivateStakeKey - , privateKeysToKeyWallet - ) import Data.Array as Array import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Either (hush) diff --git a/src/Internal/Wallet/KeyFile.purs b/src/Internal/Wallet/KeyFile.purs index c18d7046b..80b0a7d94 100644 --- a/src/Internal/Wallet/KeyFile.purs +++ b/src/Internal/Wallet/KeyFile.purs @@ -16,6 +16,10 @@ import Prelude import Aeson (encodeAeson) import Cardano.Types.PrivateKey (PrivateKey) import Cardano.Types.PrivateKey as PrivateKey +import Cardano.Wallet.Key + ( PrivatePaymentKey(PrivatePaymentKey) + , PrivateStakeKey(PrivateStakeKey) + ) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Except (catchError) import Ctl.Internal.Cardano.TextEnvelope @@ -27,10 +31,6 @@ import Ctl.Internal.Cardano.TextEnvelope , decodeTextEnvelope ) import Ctl.Internal.Helpers (liftM) -import Cardano.Wallet.Key - ( PrivatePaymentKey(PrivatePaymentKey) - , PrivateStakeKey(PrivateStakeKey) - ) import Data.ByteArray (ByteArray, byteArrayToHex) import Data.Maybe (Maybe(Nothing)) import Data.Newtype (unwrap, wrap) diff --git a/test/Plutip/Common.purs b/test/Plutip/Common.purs index 604bc9a70..fbca65804 100644 --- a/test/Plutip/Common.purs +++ b/test/Plutip/Common.purs @@ -5,10 +5,10 @@ module Test.Ctl.Plutip.Common import Prelude +import Cardano.Wallet.Key (PrivateStakeKey) import Contract.Keys (privateKeyFromBytes) import Contract.Test.Plutip (defaultPlutipConfig) import Ctl.Internal.Plutip.Types (PlutipConfig) -import Cardano.Wallet.Key (PrivateStakeKey) import Data.ByteArray (hexToByteArray) import Data.Maybe (fromJust) import Data.Newtype (wrap) From ecc2308eb77c0dc816fcfc5d0974eb6628325ea5 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Tue, 9 Jul 2024 19:22:42 -0300 Subject: [PATCH 283/373] Revert dependencies version update --- package-lock.json | 48 ++++---- package.json | 4 +- packages.dhall | 4 +- spago-packages.nix | 16 +-- src/Contract/Transaction.purs | 1 + src/Internal/BalanceTx/RedeemerIndex.purs | 4 +- src/Internal/Contract/Wallet.purs | 3 +- src/Internal/Lens.purs | 5 + src/Internal/QueryM/Ogmios.purs | 7 +- src/Internal/Test/KeyDir.purs | 7 +- src/Internal/Wallet/Cip30Mock.purs | 3 +- templates/ctl-scaffold/package-lock.json | 48 ++++---- templates/ctl-scaffold/package.json | 4 +- templates/ctl-scaffold/packages.dhall | 4 +- templates/ctl-scaffold/spago-packages.nix | 18 +-- test/Fixtures.purs | 128 ++++++++++++++++------ test/Unit.purs | 4 + 17 files changed, 183 insertions(+), 125 deletions(-) diff --git a/package-lock.json b/package-lock.json index ab2b61785..a9845f2b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,10 +8,8 @@ "name": "cardano-transaction-lib", "license": "MIT", "dependencies": { - "@emurgo/cardano-serialization-lib-browser": "v12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-nodejs": "v12.0.0-alpha.31", "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "v12.0.0-alpha.31", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", @@ -62,14 +60,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.31.tgz", - "integrity": "sha512-LEMiaui1ByuVuesWGUQ4CzksZJW9FeL/KL8HN2smSTjuCA3IaAp2VXZPxPjxP/0VbF+EM1aLkPn6DD02U/qy5Q==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.31.tgz", - "integrity": "sha512-YvE4JmTwQTM+8Blbmfa7qv44vWr3qWRn5RsfjxmyptyJwAk0Z/AfGQjYyWO/LmFsj8YCIZD2lS80LhrzzkN+Kw==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -503,12 +501,12 @@ } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", - "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", + "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", "dependencies": { - "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-browser": "^11.2.1", + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, @@ -6393,14 +6391,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.31.tgz", - "integrity": "sha512-LEMiaui1ByuVuesWGUQ4CzksZJW9FeL/KL8HN2smSTjuCA3IaAp2VXZPxPjxP/0VbF+EM1aLkPn6DD02U/qy5Q==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.31.tgz", - "integrity": "sha512-YvE4JmTwQTM+8Blbmfa7qv44vWr3qWRn5RsfjxmyptyJwAk0Z/AfGQjYyWO/LmFsj8YCIZD2lS80LhrzzkN+Kw==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -6627,12 +6625,12 @@ } }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", - "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", + "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", "requires": { - "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-browser": "^11.2.1", + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, diff --git a/package.json b/package.json index d47e7be01..4cb9d9892 100755 --- a/package.json +++ b/package.json @@ -32,9 +32,7 @@ "license": "MIT", "dependencies": { "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "v12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-nodejs": "v12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-browser": "v12.0.0-alpha.31", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", diff --git a/packages.dhall b/packages.dhall index e85d9abb7..ab0b497fd 100644 --- a/packages.dhall +++ b/packages.dhall @@ -280,7 +280,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "v1.0.0" + , version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -435,7 +435,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v2.0.0" + , version = "v1.0.1" } , cardano-message-signing = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 48997ba7f..ecec85db8 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -238,8 +238,8 @@ let version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "fd50834bad329b3064b602e6487e9471ea102341"; - sha256 = "0bgizyhrpmj51lz24cnr6wvxwgvm41z24c66kk3lzhwq798n5q50"; + rev = "55f176dbedddbd37297a3d1f90c756420159454e"; + sha256 = "1fr77kvgdvxqi0jhg98balrwpf7rlhwiyrf1v8z2112yyln2myj9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -271,11 +271,11 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "v1.0.0"; + version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "903bf0adeefedc4d065ad6523ad079433bdd8e32"; - sha256 = "0jlfxrx037hyd4v0j7l2b16yxlm6nw6qlnr992hj9nzip36vbpfg"; + rev = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; + sha256 = "1ikz6j3jvls3cvl6znrw55f59abzdaf7ggd2x7j3f81m5cvkxggr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -283,11 +283,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v2.0.0"; + version = "v1.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "780c28ee27d0ba7e76884a565ad60dea0a414842"; - sha256 = "1my7fgk218h6yllw09zf1m55hpn787mjq79whxxm9lqgarrdp66z"; + rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; + sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 1ed8e59f2..1c038632f 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -132,6 +132,7 @@ import Ctl.Internal.Lens , _scriptRef , _totalCollateral , _ttl + , _update , _validityStartInterval , _vkeys , _withdrawals diff --git a/src/Internal/BalanceTx/RedeemerIndex.purs b/src/Internal/BalanceTx/RedeemerIndex.purs index 47a938810..1b4182808 100644 --- a/src/Internal/BalanceTx/RedeemerIndex.purs +++ b/src/Internal/BalanceTx/RedeemerIndex.purs @@ -81,7 +81,7 @@ unindexedRedeemerToRedeemer :: UnindexedRedeemer -> Redeemer unindexedRedeemerToRedeemer (UnindexedRedeemer { datum, purpose }) = Redeemer { tag: redeemerPurposeToRedeemerTag purpose - , "data": wrap datum + , "data": datum , index: BigNum.zero , exUnits: ExUnits.empty } @@ -107,7 +107,7 @@ indexedRedeemerToRedeemer (IndexedRedeemer { tag, datum, index }) = Redeemer { tag , index: BigNum.fromInt index - , data: wrap datum + , data: datum , exUnits: ExUnits.empty } diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index a2808b287..c0262a8c0 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -137,7 +137,8 @@ getWalletCollateral = do utxos <- (liftAff $ queryHandle.utxosAt addr) <#> hush >>> fromMaybe Map.empty >>= filterLockedUtxos - mColl <- liftAff $ (unwrap kw).selectCollateral minRequiredCollateral + mColl <- liftAff $ (unwrap kw).selectCollateral + minRequiredCollateral coinsPerUtxoByte (UInt.toInt maxCollateralInputs) utxos diff --git a/src/Internal/Lens.purs b/src/Internal/Lens.purs index 4be16aa3e..94a9bf786 100644 --- a/src/Internal/Lens.purs +++ b/src/Internal/Lens.purs @@ -25,6 +25,7 @@ module Ctl.Internal.Lens , _scriptRef , _totalCollateral , _ttl + , _update , _validityStartInterval , _vkeys , _withdrawals @@ -55,6 +56,7 @@ import Cardano.Types , TransactionOutput , TransactionUnspentOutput , TransactionWitnessSet + , Update , Value , Vkeywitness ) @@ -127,6 +129,9 @@ _auxiliaryDataHash = _Newtype <<< prop (Proxy :: Proxy "auxiliaryDataHash") _ttl :: Lens' TransactionBody (Maybe Slot) _ttl = _Newtype <<< prop (Proxy :: Proxy "ttl") +_update :: Lens' TransactionBody (Maybe Update) +_update = _Newtype <<< prop (Proxy :: Proxy "update") + _validityStartInterval :: Lens' TransactionBody (Maybe Slot) _validityStartInterval = _Newtype <<< prop (Proxy :: Proxy "validityStartInterval") diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 2cdbd39c0..8d1cb2eb8 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -99,7 +99,7 @@ import Cardano.Serialization.Lib (fromBytes, ipv4_new) import Cardano.Types ( Bech32String , BigNum(BigNum) - , Language(PlutusV1, PlutusV2, PlutusV3) + , Language(PlutusV1, PlutusV2) , RedeemerTag , VRFKeyHash(VRFKeyHash) ) @@ -1220,11 +1220,6 @@ instance EncodeAeson AdditionalUtxoSet where { "language": "plutus:v2" , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps } - encodeScriptRef (PlutusScriptRef (ps@(PlutusScript (_ /\ PlutusV3)))) = - encodeAeson - { "language": "plutus:v2" - , "cbor": byteArrayToHex $ unwrap $ PlutusScript.getBytes ps - } encodeValue :: Value -> Aeson encodeValue value = encodeMap $ map encodeMap $ Map.union adaPart nonAdaPart diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 075046de7..42ff140a8 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -285,13 +285,12 @@ backupWallets :: FilePath -> ContractEnv -> Array KeyWallet -> Aff Unit backupWallets backup env walletsArray = liftAff $ flip parTraverse_ walletsArray \wallet -> do - address <- liftAff $ Address.toBech32 <$> (unwrap wallet).address - env.networkId payment <- getPrivatePaymentKey wallet mbStake <- getPrivateStakeKey wallet + address <- liftAff $ Address.toBech32 <$> (unwrap wallet).address + env.networkId let folder = Path.concat [ backup, address ] - mkdir folder privatePaymentKeyToFile (Path.concat [ folder, "payment_signing_key" ]) payment @@ -309,7 +308,6 @@ fundWallets env walletsArray distrArray = runContractInEnv env $ noLogs do Value.mkValue (wrap value) MultiAsset.empty - txHash <- submitTxFromConstraints mempty constraints awaitTxConfirmed txHash let @@ -449,6 +447,7 @@ mustPayToKeyWallet mustPayToKeyWallet wallet value = do kwPaymentKey <- getPrivatePaymentKey wallet kwMStakeKey <- getPrivateStakeKey wallet + let convert = PublicKey.hash <<< PrivateKey.toPublicKey payment = over wrap convert $ kwPaymentKey diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 17a6117b4..95d5b9d50 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -133,7 +133,8 @@ mkCip30Mock pKey mSKey = do maxCollateralInputs = UInt.toInt $ pparams.maxCollateralInputs coll <- liftAff $ - (unwrap keyWallet).selectCollateral minRequiredCollateral + (unwrap keyWallet).selectCollateral + minRequiredCollateral coinsPerUtxoByte maxCollateralInputs utxos diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 6d800dbeb..561dc93e3 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -9,10 +9,8 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@emurgo/cardano-serialization-lib-browser": "v12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-nodejs": "v12.0.0-alpha.31", "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "v12.0.0-alpha.31", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", @@ -60,14 +58,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "node_modules/@emurgo/cardano-serialization-lib-browser": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.31.tgz", - "integrity": "sha512-LEMiaui1ByuVuesWGUQ4CzksZJW9FeL/KL8HN2smSTjuCA3IaAp2VXZPxPjxP/0VbF+EM1aLkPn6DD02U/qy5Q==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.31.tgz", - "integrity": "sha512-YvE4JmTwQTM+8Blbmfa7qv44vWr3qWRn5RsfjxmyptyJwAk0Z/AfGQjYyWO/LmFsj8YCIZD2lS80LhrzzkN+Kw==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "node_modules/@esbuild/android-arm": { "version": "0.18.11", @@ -501,12 +499,12 @@ } }, "node_modules/@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", - "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", + "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", "dependencies": { - "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-browser": "^11.2.1", + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, @@ -5520,14 +5518,14 @@ "integrity": "sha512-PoKh1tQnJX18f8iEr8Jk1KXxKCn9eqaSslMI1pyOJvYRJhQVDLCh0+9YReufjp0oFJIY1ShcrR+4/WnECVZUKQ==" }, "@emurgo/cardano-serialization-lib-browser": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-12.0.0-alpha.31.tgz", - "integrity": "sha512-LEMiaui1ByuVuesWGUQ4CzksZJW9FeL/KL8HN2smSTjuCA3IaAp2VXZPxPjxP/0VbF+EM1aLkPn6DD02U/qy5Q==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-11.5.0.tgz", + "integrity": "sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==" }, "@emurgo/cardano-serialization-lib-nodejs": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-12.0.0-alpha.31.tgz", - "integrity": "sha512-YvE4JmTwQTM+8Blbmfa7qv44vWr3qWRn5RsfjxmyptyJwAk0Z/AfGQjYyWO/LmFsj8YCIZD2lS80LhrzzkN+Kw==" + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-11.5.0.tgz", + "integrity": "sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==" }, "@esbuild/android-arm": { "version": "0.18.11", @@ -5754,12 +5752,12 @@ } }, "@mlabs-haskell/cardano-serialization-lib-gc": { - "version": "12.0.0-alpha.31", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-12.0.0-alpha.31.tgz", - "integrity": "sha512-QQBzl7rNRy7wk37uxzWJXCZfZRt3aTlfQb3kmb10ulY/janlUNETmS09OtiJbK/BdV5Fu7Gv+Mdda3ggMIL/bg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/cardano-serialization-lib-gc/-/cardano-serialization-lib-gc-1.0.10.tgz", + "integrity": "sha512-7XFxxMvZH6oogWVP/teveVRUTRboWfY5fT0bkRDu68u9yb2HBjoMxkCkmF7MvJBVs2i0unt4UnzcrNm0dmHriQ==", "requires": { - "@emurgo/cardano-serialization-lib-browser": "^12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-nodejs": "^12.0.0-alpha.31", + "@emurgo/cardano-serialization-lib-browser": "^11.2.1", + "@emurgo/cardano-serialization-lib-nodejs": "^11.2.1", "@mlabs-haskell/csl-gc-wrapper": "^1.0.2" } }, diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index b746c3ce7..f34f4d9e3 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -26,9 +26,7 @@ "license": "MIT", "dependencies": { "@mlabs-haskell/cardano-message-signing": "^1.0.1", - "@mlabs-haskell/cardano-serialization-lib-gc": "v12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-nodejs": "v12.0.0-alpha.31", - "@emurgo/cardano-serialization-lib-browser": "v12.0.0-alpha.31", + "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", "@mlabs-haskell/uplc-apply-args": "2.0.1", "@noble/secp256k1": "^1.7.0", diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 342736980..669048fce 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -280,7 +280,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib" - , version = "v1.0.0" + , version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0" } , cardano-plutus-data-schema = { dependencies = [ "prelude" ] @@ -435,7 +435,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "v2.0.0" + , version = "v1.0.1" } , cardano-message-signing = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 6d317917f..e80b0fecb 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -238,8 +238,8 @@ let version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "fd50834bad329b3064b602e6487e9471ea102341"; - sha256 = "0bgizyhrpmj51lz24cnr6wvxwgvm41z24c66kk3lzhwq798n5q50"; + rev = "55f176dbedddbd37297a3d1f90c756420159454e"; + sha256 = "1fr77kvgdvxqi0jhg98balrwpf7rlhwiyrf1v8z2112yyln2myj9"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -271,17 +271,17 @@ let "cardano-serialization-lib" = pkgs.stdenv.mkDerivation { name = "cardano-serialization-lib"; - version = "v1.0.0"; + version = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-serialization-lib"; - rev = "903bf0adeefedc4d065ad6523ad079433bdd8e32"; - sha256 = "0jlfxrx037hyd4v0j7l2b16yxlm6nw6qlnr992hj9nzip36vbpfg"; + rev = "26d437c3f398172c839b93b57c30eb43a7fa7ca0"; + sha256 = "1ikz6j3jvls3cvl6znrw55f59abzdaf7ggd2x7j3f81m5cvkxggr"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; }; - "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { + "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; src = pkgs.fetchgit { @@ -295,11 +295,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "v2.0.0"; + version = "v1.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "780c28ee27d0ba7e76884a565ad60dea0a414842"; - sha256 = "1my7fgk218h6yllw09zf1m55hpn787mjq79whxxm9lqgarrdp66z"; + rev = "715d4b2dcf8b29cb45001209ee562f758a513261"; + sha256 = "1xcrdmpwd3qcdiyjfrj0z2dh56l4z1s97r25b6nhlqwmwz7qz19z"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/test/Fixtures.purs b/test/Fixtures.purs index 25e6f80b5..e4a9f0783 100644 --- a/test/Fixtures.purs +++ b/test/Fixtures.purs @@ -86,19 +86,25 @@ import Cardano.Types ( AuxiliaryData(AuxiliaryData) , Bech32String , Certificate - ( PoolRetirement - , PoolRegistration - , StakeDelegation + ( StakeRegistration , StakeDeregistration - , StakeRegistration + , StakeDelegation + , PoolRegistration + , PoolRetirement + , GenesisKeyDelegation + , MoveInstantaneousRewardsCert ) , Coin(Coin) , Credential(PubKeyHashCredential) , Ed25519KeyHash , Epoch(Epoch) + , ExUnitPrices(ExUnitPrices) , ExUnits(ExUnits) , GeneralTransactionMetadata(GeneralTransactionMetadata) , Language(PlutusV2) + , MIRPot(Reserves, Treasury) + , MIRToStakeCredentials(MIRToStakeCredentials) + , MoveInstantaneousReward(ToOtherPot, ToStakeCreds) , NativeScript ( TimelockExpiry , TimelockStart @@ -115,9 +121,12 @@ import Cardano.Types , PoolMetadata(PoolMetadata) , PoolParams(PoolParams) , PoolPubKeyHash(PoolPubKeyHash) + , ProposedProtocolParameterUpdates(ProposedProtocolParameterUpdates) + , ProtocolParamUpdate(ProtocolParamUpdate) + , ProtocolVersion(ProtocolVersion) , Redeemer(Redeemer) , RedeemerTag(Spend) - , Relay(MultiHostName, SingleHostName, SingleHostAddr) + , Relay(SingleHostAddr, SingleHostName, MultiHostName) , RewardAddress , ScriptHash , ScriptRef(NativeScriptRef) @@ -130,6 +139,7 @@ import Cardano.Types , TransactionWitnessSet(TransactionWitnessSet) , URL(URL) , UnitInterval(UnitInterval) + , Update(Update) , UtxoMap , Value(Value) , Vkey(Vkey) @@ -167,6 +177,7 @@ import JS.BigInt as BigInt import Node.Encoding (Encoding(UTF8)) import Node.FS.Sync (readTextFile) import Partial.Unsafe (unsafePartial) +import Test.Ctl.Fixtures.CostModels (costModelsFixture1) txOutputFixture1 :: TransactionOutput txOutputFixture1 = @@ -243,6 +254,49 @@ bigNumOne = BigNum.fromInt 1 rewardAddress1 :: RewardAddress rewardAddress1 = { networkId: TestnetId, stakeCredential: wrap stake1 } +proposedProtocolParameterUpdates1 :: ProposedProtocolParameterUpdates +proposedProtocolParameterUpdates1 = ProposedProtocolParameterUpdates $ + Map.fromFoldable + [ ( unsafePartial $ fromJust $ decodeCbor $ wrap $ hexToByteArrayUnsafe + "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" + ) /\ + ProtocolParamUpdate + { minfeeA: Just $ Coin $ BigNum.fromInt 1 + , minfeeB: Just $ Coin $ BigNum.fromInt 1 + , maxBlockBodySize: Just $ UInt.fromInt 10000 + , maxTxSize: Just $ UInt.fromInt 10000 + , maxBlockHeaderSize: Just $ UInt.fromInt 1000 + , keyDeposit: Just $ Coin $ BigNum.fromInt 1 + , poolDeposit: Just $ Coin $ BigNum.fromInt 1 + , maxEpoch: Just $ Epoch one + , nOpt: Just $ UInt.fromInt 1 + , poolPledgeInfluence: Just $ UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + , expansionRate: Just $ UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + , treasuryGrowthRate: Just $ UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + , protocolVersion: Just $ ProtocolVersion + { major: 1, minor: 1 } + , minPoolCost: Just $ wrap bigNumOne + , adaPerUtxoByte: Just $ wrap bigNumOne + , costModels: Just costModelsFixture1 + , executionCosts: Just $ ExUnitPrices + { memPrice: UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + , stepPrice: UnitInterval + { numerator: bigNumOne, denominator: bigNumOne } + } + , maxTxExUnits: Just $ ExUnits + { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } + , maxBlockExUnits: Just $ ExUnits + { mem: BigNum.fromInt 1, steps: BigNum.fromInt 1 } + , maxValueSize: Just $ UInt.fromInt 1 + , collateralPercentage: Just $ UInt.fromInt 140 + , maxCollateralInputs: Just $ UInt.fromInt 10 + } + ] + -- | Extend this for your needs. type SampleTxConfig = { inputs :: Array TransactionInput } @@ -271,6 +325,7 @@ mkSampleTx startTx changes = , ttl , certs , withdrawals + , update , auxiliaryDataHash , validityStartInterval , mint @@ -296,6 +351,7 @@ mkSampleTx startTx changes = , ttl , certs , withdrawals + , update , auxiliaryDataHash , validityStartInterval , mint @@ -306,10 +362,6 @@ mkSampleTx startTx changes = , networkId , collateralReturn , totalCollateral - , votingProposals: [] - , votingProcedures: wrap Map.empty - , currentTreasuryValue: Nothing - , donation: Nothing } , witnessSet , isValid @@ -352,6 +404,7 @@ txFixture1 = , ttl: Nothing , certs: [] , withdrawals: Map.empty + , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -362,10 +415,6 @@ txFixture1 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing - , votingProposals: [] - , votingProcedures: wrap Map.empty - , currentTreasuryValue: Nothing - , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -389,6 +438,7 @@ txFixture2 = , ttl: Nothing , certs: [] , withdrawals: Map.empty + , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -399,10 +449,6 @@ txFixture2 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing - , votingProposals: [] - , votingProcedures: wrap Map.empty - , currentTreasuryValue: Nothing - , donation: Nothing } , witnessSet: witnessSetFixture3Value , isValid: true @@ -444,6 +490,7 @@ txFixture3 = , ttl: Nothing , certs: [] , withdrawals: Map.empty + , update: Nothing , referenceInputs: [ txInputFixture1 ] , auxiliaryDataHash: Nothing , validityStartInterval: Nothing @@ -454,10 +501,6 @@ txFixture3 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing - , votingProposals: [] - , votingProcedures: wrap Map.empty - , currentTreasuryValue: Nothing - , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -564,9 +607,36 @@ txFixture4 = { poolKeyHash: PoolPubKeyHash ed25519KeyHash1 , epoch: Epoch one } + , GenesisKeyDelegation + { genesisHash: unsafePartial $ fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe + "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" + , genesisDelegateHash: unsafePartial $ fromJust $ decodeCbor + $ wrap + $ + hexToByteArrayUnsafe + "5d677265fa5bb21ce6d8c7502aca70b9316d10e958611f3c6b758f65" + , vrfKeyhash: unsafePartial $ fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe + "fbf6d41985670b9041c5bf362b5262cf34add5d265975de176d613ca05f37096" + } + , MoveInstantaneousRewardsCert $ ToOtherPot + { pot: Reserves + , amount: wrap bigNumOne + } + , MoveInstantaneousRewardsCert $ ToStakeCreds + { pot: Treasury + , amounts: MIRToStakeCredentials $ Map.fromFoldable + [ wrap stake1 /\ Int.newPositive bigNumOne ] + } ] , withdrawals: Map.fromFoldable [ rewardAddress1 /\ Coin BigNum.one ] + , update: Just $ Update + { proposedProtocolParameterUpdates: + proposedProtocolParameterUpdates1 + , epoch: Epoch zero + } , auxiliaryDataHash: decodeCbor $ wrap $ byteArrayFromIntArrayUnsafe $ Array.replicate 32 0 @@ -583,10 +653,6 @@ txFixture4 = , networkId: Just MainnetId , collateralReturn: Just txOutputFixture1 , totalCollateral: Just $ Coin $ BigNum.fromInt 5_000_000 - , votingProposals: [] - , votingProcedures: wrap Map.empty - , currentTreasuryValue: Nothing - , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -624,6 +690,7 @@ txFixture5 = , ttl: Nothing , certs: [] , withdrawals: Map.empty + , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -634,10 +701,6 @@ txFixture5 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing - , votingProposals: [] - , votingProcedures: wrap Map.empty - , currentTreasuryValue: Nothing - , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -661,6 +724,7 @@ txFixture6 = , ttl: Nothing , certs: [] , withdrawals: Map.empty + , update: Nothing , auxiliaryDataHash: Nothing , validityStartInterval: Nothing , mint: Nothing @@ -671,10 +735,6 @@ txFixture6 = , networkId: Just MainnetId , collateralReturn: Nothing , totalCollateral: Nothing - , votingProposals: [] - , votingProcedures: wrap Map.empty - , currentTreasuryValue: Nothing - , donation: Nothing } , witnessSet: TransactionWitnessSet { vkeys: [] @@ -1291,7 +1351,7 @@ redeemerFixture1 :: Redeemer redeemerFixture1 = Redeemer { tag: Spend , index: BigNum.fromInt 0 - , data: wrap plutusDataFixture7 + , data: plutusDataFixture7 , exUnits: ExUnits { mem: BigNum.fromInt 1 , steps: BigNum.fromInt 1 diff --git a/test/Unit.purs b/test/Unit.purs index 9bd4da80e..da961ca05 100644 --- a/test/Unit.purs +++ b/test/Unit.purs @@ -15,6 +15,8 @@ import Test.Ctl.ApplyArgs as ApplyArgs import Test.Ctl.Blockfrost.Aeson.Suite as Blockfrost.Aeson import Test.Ctl.Blockfrost.ProtocolParameters as Blockfrost.ProtocolParameters import Test.Ctl.CoinSelection as CoinSelection +import Test.Ctl.CslGc as CslGc +import Test.Ctl.Data as Data import Test.Ctl.Data.Interval as Ctl.Data.Interval import Test.Ctl.E2E.Route as E2E.Route import Test.Ctl.Hashing as Hashing @@ -48,6 +50,8 @@ testPlan = do Ipv6.suite NativeScript.suite Bip32.suite + CslGc.suite + Data.suite Hashing.suite Partition.suite Plutus.Time.suite From 43103b828e8e11e46c00f90ca39fb86fc9d82f63 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Wed, 10 Jul 2024 14:48:39 -0300 Subject: [PATCH 284/373] Remove `Ctl.Internal.Plutip` module --- src/Contract/Test/Plutip.purs | 578 +++++++++++++- src/Internal/CardanoCli.purs | 6 +- src/Internal/Plutip/PortCheck.purs | 15 - src/Internal/Plutip/Server.purs | 739 ------------------ src/Internal/Plutip/Spawn.js | 30 - src/Internal/Plutip/Types.purs | 196 ----- src/Internal/Plutip/Utils.purs | 423 ---------- .../{Plutip/PortCheck.js => Spawn.js} | 31 + src/Internal/{Plutip => }/Spawn.purs | 14 +- src/Internal/Testnet/Contract.purs | 18 +- src/Internal/Testnet/Server.purs | 294 ++++++- src/Internal/{Plutip => Testnet}/Utils.js | 0 src/Internal/Testnet/Utils.purs | 418 +++++++++- templates/ctl-scaffold/spago-packages.nix | 24 + test/Plutip/Common.purs | 3 +- 15 files changed, 1320 insertions(+), 1469 deletions(-) delete mode 100644 src/Internal/Plutip/PortCheck.purs delete mode 100644 src/Internal/Plutip/Server.purs delete mode 100644 src/Internal/Plutip/Spawn.js delete mode 100644 src/Internal/Plutip/Types.purs delete mode 100644 src/Internal/Plutip/Utils.purs rename src/Internal/{Plutip/PortCheck.js => Spawn.js} (50%) rename src/Internal/{Plutip => }/Spawn.purs (96%) rename src/Internal/{Plutip => Testnet}/Utils.js (100%) diff --git a/src/Contract/Test/Plutip.purs b/src/Contract/Test/Plutip.purs index 459fd40f7..80e3cc3c7 100644 --- a/src/Contract/Test/Plutip.purs +++ b/src/Contract/Test/Plutip.purs @@ -2,29 +2,57 @@ -- | environment. module Contract.Test.Plutip ( PlutipTest + , PlutipConfig , PlutipTestPlan + , testPlutipContracts , defaultPlutipConfig , module X ) where +import Prelude + +import Aeson + ( class DecodeAeson + , class EncodeAeson + , JsonDecodeError(TypeMismatch, UnexpectedValue) + , decodeAeson + , encodeAeson + , finiteNumber + , parseJsonStringToAeson + , stringifyAeson + , toStringifiedNumbersJson + , (.:) + ) +import Affjax (defaultRequest) as Affjax +import Affjax.RequestBody as RequestBody +import Affjax.RequestHeader as Header +import Affjax.ResponseFormat as Affjax.ResponseFormat +import Cardano.Types (PrivateKey, RawBytes(RawBytes)) +import Cardano.Types.BigNum as BigNum +import Cardano.Types.PrivateKey as PrivateKey +import Contract.ClientError + ( ClientError(ClientHttpError, ClientDecodeJsonError) + ) +import Contract.Config (Hooks, ServerConfig) +import Contract.Monad (ContractEnv, liftContractM, runContractInEnv) import Contract.Monad (runContractInEnv) as X +import Contract.Prelude (fst, liftEither, wrap) +import Contract.Test (class UtxoDistribution, InitialUTxOs) import Contract.Wallet (withKeyWallet) as X +import Control.Monad.Error.Class (throwError) +import Control.Monad.Trans.Class (lift) +import Ctl.Internal.Affjax (request) as Affjax import Ctl.Internal.Contract.Hooks (emptyHooks) -import Ctl.Internal.Plutip.Server - ( runPlutipContract - , runPlutipTestPlan - , testPlutipContracts - , withPlutipContractEnv - ) as X -import Ctl.Internal.Plutip.Types (PlutipConfig) -import Ctl.Internal.Plutip.Types (PlutipConfig) as X -import Ctl.Internal.Test.ContractTest (ContractTest) -import Ctl.Internal.Test.ContractTest (ContractTestPlan) as Server +import Ctl.Internal.Contract.WaitUntilSlot (waitNSlots) +import Ctl.Internal.Helpers (unsafeFromJust, (<>)) +import Ctl.Internal.Service.Error (pprintClientError) +import Ctl.Internal.Spawn (ManagedProcess, isPortAvailable, spawn, stop) import Ctl.Internal.Test.ContractTest - ( noWallet - , sameWallets - , withWallets - ) as X + ( ContractTest + , ContractTestPlan(ContractTestPlan) + ) +import Ctl.Internal.Test.ContractTest (ContractTestPlan) as Server +import Ctl.Internal.Test.ContractTest (noWallet, sameWallets, withWallets) as X import Ctl.Internal.Test.UtxoDistribution ( class UtxoDistribution , InitialUTxODistribution @@ -33,15 +61,83 @@ import Ctl.Internal.Test.UtxoDistribution , UtxoAmount , withStakeKey ) as X +import Ctl.Internal.Test.UtxoDistribution + ( InitialUTxODistribution + , decodeWallets + , encodeDistribution + , keyWallets + , transferFundsFromEnterpriseToBase + ) +import Ctl.Internal.Testnet.Contract (execDistribution) +import Ctl.Internal.Testnet.Server + ( makeClusterContractEnv + , startKupo + , startOgmios + ) +import Ctl.Internal.Testnet.Utils (after, runCleanup, whenError) +import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) +import Data.Array as Array +import Data.Bifunctor (lmap) +import Data.ByteArray (hexToByteArray) +import Data.Either (Either(Left, Right), either, note) +import Data.Foldable (fold, foldMap) +import Data.Generic.Rep (class Generic) +import Data.HTTP.Method as Method import Data.Log.Level (LogLevel(Trace)) -import Data.Maybe (Maybe(Nothing)) +import Data.Log.Message (Message) +import Data.Maybe (Maybe(Just, Nothing), fromMaybe) +import Data.Newtype (class Newtype, unwrap) +import Data.Show.Generic (genericShow) import Data.Time.Duration (Seconds(Seconds)) +import Data.Traversable (for, for_, traverse_) +import Data.Tuple.Nested (type (/\), (/\)) +import Data.UInt (UInt) import Data.UInt as UInt +import Effect.Aff (Aff, Milliseconds(Milliseconds), try) +import Effect.Aff (bracket) as Aff +import Effect.Aff.Class (liftAff) +import Effect.Aff.Retry + ( RetryPolicy + , constantDelay + , limitRetriesByCumulativeDelay + , recovering + ) +import Effect.Class (liftEffect) +import Effect.Exception (error, message, throw) +import Effect.Ref (Ref) +import Effect.Ref as Ref +import Mote (bracket) as Mote +import Mote.Monad (mapTest) +import Mote.TestPlanM (TestPlanM) +import Node.ChildProcess (defaultSpawnOptions) +import Partial.Unsafe (unsafePartial) +import Safe.Coerce (coerce) +import Type.Prelude (Proxy(Proxy)) -- | Type synonym for backwards compatibility. type PlutipTest = ContractTest type PlutipTestPlan = Server.ContractTestPlan +-- | A config that is used to run tests on Plutip clusters. +-- | Note that the test suite starts the services on the specified ports. +type PlutipConfig = + { host :: String + , port :: UInt + , logLevel :: LogLevel + -- Server configs are used to deploy the corresponding services: + , ogmiosConfig :: ServerConfig + , kupoConfig :: ServerConfig + , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) + , suppressLogs :: Boolean + , hooks :: Hooks + , clusterConfig :: + { slotLength :: Seconds + , epochSize :: Maybe UInt + , maxTxSize :: Maybe UInt + , raiseExUnitsToMax :: Boolean + } + } + -- | A default value for `PlutipConfig` type. defaultPlutipConfig :: PlutipConfig defaultPlutipConfig = @@ -71,3 +167,455 @@ defaultPlutipConfig = , raiseExUnitsToMax: false } } + +-- | Run several `Contract`s in tests in a (single) Plutip environment (plutip-server and cluster, kupo, etc.). +-- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. +-- | Namely, brackets are run for each of the top-level groups and tests +-- | inside the bracket. +-- | If you wish to only set up Plutip once, ensure all tests that are passed +-- | to `testPlutipContracts` are wrapped in a single group. +-- | https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#testing-with-mote +testPlutipContracts + :: PlutipConfig + -> TestPlanM ContractTest Unit + -> TestPlanM (Aff Unit) Unit +testPlutipContracts plutipCfg tp = do + plutipTestPlan <- lift $ execDistribution tp + runPlutipTestPlan plutipCfg plutipTestPlan + +-- | Run a `ContractTestPlan` in a (single) Plutip environment. +-- | Supports wallet reuse - see docs on sharing wallet state between +-- | wallets in `doc/plutip-testing.md`. +runPlutipTestPlan + :: PlutipConfig + -> ContractTestPlan + -> TestPlanM (Aff Unit) Unit +runPlutipTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = do + -- Modify tests to pluck out parts of a single combined distribution + runContractTestPlan \distr tests -> do + cleanupRef <- liftEffect $ Ref.new mempty + -- Sets a single Mote bracket at the top level, it will be run for all + -- immediate tests and groups + bracket (startPlutipContractEnv plutipCfg distr cleanupRef) + (runCleanup cleanupRef) + $ flip mapTest tests \test { env, wallets, printLogs, clearLogs } -> do + whenError printLogs (runContractInEnv env (test wallets)) + clearLogs + where + -- `MoteT`'s bracket doesn't support supplying the constructed resource into + -- the main action, so we use a `Ref` to store and read the result. + bracket + :: forall (a :: Type) (b :: Type) + . Aff a + -> Aff Unit + -> TestPlanM (a -> Aff b) Unit + -> TestPlanM (Aff b) Unit + bracket before' after' act = do + resultRef <- liftEffect $ Ref.new (Left $ error "Plutip not initialized") + let + before = do + res <- try $ before' + liftEffect $ Ref.write res resultRef + pure res + after = const $ after' + Mote.bracket { before, after } $ flip mapTest act \t -> do + result <- liftEffect $ Ref.read resultRef >>= liftEither + t result + +-- | Provide a `ContractEnv` connected to Plutip. +-- | Can be used to run multiple `Contract`s using `runContractInEnv`. +-- | Resources which are allocated in the `Aff` computation must be de-allocated +-- | via the `Ref (Array (Aff Unit))` parameter, even if the computation did not +-- | succesfully complete. +-- Startup is implemented sequentially, rather than with nested `Aff.bracket`, +-- to allow non-`Aff` computations to occur between setup and cleanup. +startPlutipContractEnv + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution distr wallets + => PlutipConfig + -> distr + -> Ref (Array (Aff Unit)) + -> Aff + { env :: ContractEnv + , wallets :: wallets + , printLogs :: Aff Unit + , clearLogs :: Aff Unit + } +startPlutipContractEnv plutipCfg distr cleanupRef = do + configCheck plutipCfg + tryWithReport startPlutipServer' "Could not start Plutip server" + (ourKey /\ response) <- tryWithReport startPlutipCluster' + "Could not start Plutip cluster" + tryWithReport (startOgmios' response) "Could not start Ogmios" + tryWithReport (startKupo' response) "Could not start Kupo" + { env, printLogs, clearLogs } <- makeClusterContractEnv cleanupRef plutipCfg + wallets <- mkWallets' env ourKey response + void $ try $ liftEffect do + for_ env.hooks.onClusterStartup \clusterParamsCb -> do + clusterParamsCb + { privateKeys: response.privateKeys <#> unwrap + , nodeSocketPath: response.nodeSocketPath + , nodeConfigPath: response.nodeConfigPath + , privateKeysDirectory: response.keysDirectory + } + pure + { env + , wallets + , printLogs + , clearLogs + } + where + tryWithReport + :: forall (a :: Type) + . Aff a + -> String + -> Aff a + tryWithReport what prefix = do + result <- try what + case result of + Left err -> throwError $ error $ prefix <> ": " <> message err + Right result' -> pure result' + + startPlutipServer' :: Aff Unit + startPlutipServer' = + cleanupBracket + cleanupRef + (startPlutipServer plutipCfg) + (stopChildProcessWithPort plutipCfg.port) + (const $ checkPlutipServer plutipCfg) + + startPlutipCluster' + :: Aff (PrivatePaymentKey /\ ClusterStartupParameters) + startPlutipCluster' = do + let + distrArray = + encodeDistribution $ + ourInitialUtxos (encodeDistribution distr) /\ + distr + for_ distrArray $ traverse_ \n -> when (n < BigNum.fromInt 1_000_000) do + liftEffect $ throw $ "UTxO is too low: " <> BigNum.toString n <> + ", must be at least 1_000_000 Lovelace" + cleanupBracket + cleanupRef + (startPlutipCluster plutipCfg distrArray) + (const $ void $ stopPlutipCluster plutipCfg) + pure + + startOgmios' :: ClusterStartupParameters -> Aff Unit + startOgmios' response = + void + $ after (startOgmios plutipCfg response) + $ stopChildProcessWithPort plutipCfg.ogmiosConfig.port + + startKupo' :: ClusterStartupParameters -> Aff Unit + startKupo' response = + void + $ after (startKupo plutipCfg response cleanupRef) + $ fst + >>> stopChildProcessWithPort plutipCfg.kupoConfig.port + + mkWallets' + :: ContractEnv + -> PrivatePaymentKey + -> ClusterStartupParameters + -> Aff wallets + mkWallets' env ourKey response = do + runContractInEnv + env { customLogger = Just (\_ _ -> pure unit) } + do + wallets <- + liftContractM + "Impossible happened: could not decode wallets. Please report as bug" + $ decodeWallets distr (coerce response.privateKeys) + let walletsArray = keyWallets (Proxy :: Proxy distr) wallets + void $ waitNSlots BigNum.one + transferFundsFromEnterpriseToBase ourKey walletsArray + pure wallets + +startPlutipServer :: PlutipConfig -> Aff ManagedProcess +startPlutipServer cfg = do + spawn "plutip-server" [ "-p", UInt.toString cfg.port ] + defaultSpawnOptions + Nothing + +-- | Start the plutip cluster, initializing the state with the given +-- | UTxO distribution. Also initializes an extra payment key (aka +-- | `ourKey`) with some UTxOs for use with further plutip +-- | setup. `ourKey` has funds proportional to the total amount of the +-- | UTxOs in the passed distribution, so it can be used to handle +-- | transaction fees. +startPlutipCluster + :: PlutipConfig + -> InitialUTxODistribution + -> Aff (PrivatePaymentKey /\ ClusterStartupParameters) +startPlutipCluster cfg keysToGenerate = do + let + url = mkServerEndpointUrl cfg "start" + -- TODO: Non-default values for `slotLength` and `epochSize` break staking + -- rewards, see https://github.com/mlabs-haskell/plutip/issues/149 + epochSize = fromMaybe (UInt.fromInt 80) cfg.clusterConfig.epochSize + res <- do + response <- liftAff + ( Affjax.request + Affjax.defaultRequest + { content = Just + $ RequestBody.String + $ stringifyAeson + $ encodeAeson + $ ClusterStartupRequest + { keysToGenerate + , epochSize + , slotLength: cfg.clusterConfig.slotLength + , maxTxSize: cfg.clusterConfig.maxTxSize + , raiseExUnitsToMax: cfg.clusterConfig.raiseExUnitsToMax + } + , responseFormat = Affjax.ResponseFormat.string + , headers = [ Header.ContentType (wrap "application/json") ] + , url = url + , method = Left Method.POST + } + ) + pure $ response # either + (Left <<< ClientHttpError) + \{ body } -> lmap (ClientDecodeJsonError body) + $ (decodeAeson <=< parseJsonStringToAeson) body + either (liftEffect <<< throw <<< pprintClientError) pure res >>= + case _ of + ClusterStartupFailure reason -> do + liftEffect $ throw + $ "Failed to start up cluster. Reason: " + <> show reason + ClusterStartupSuccess response@{ privateKeys } -> + case Array.uncons privateKeys of + Nothing -> + liftEffect $ throw $ + "Impossible happened: insufficient private keys provided by plutip. Please report as bug." + Just { head: PrivateKeyResponse ourKey, tail } -> + pure $ PrivatePaymentKey ourKey /\ response { privateKeys = tail } + +stopPlutipCluster :: PlutipConfig -> Aff StopClusterResponse +stopPlutipCluster cfg = do + let url = mkServerEndpointUrl cfg "stop" + res <- do + response <- liftAff + ( Affjax.request + Affjax.defaultRequest + { content = Just + $ RequestBody.String + $ stringifyAeson + $ encodeAeson + $ StopClusterRequest + , responseFormat = Affjax.ResponseFormat.string + , headers = [ Header.ContentType (wrap "application/json") ] + , url = url + , method = Left Method.POST + } + ) + pure $ response # either + (Left <<< ClientHttpError) + \{ body } -> lmap (ClientDecodeJsonError body) + $ (decodeAeson <=< parseJsonStringToAeson) + body + either (liftEffect <<< throw <<< show) pure res + +-- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run +-- later. +cleanupBracket + :: forall (a :: Type) (b :: Type) + . Ref (Array (Aff Unit)) + -> Aff a + -> (a -> Aff Unit) + -> (a -> Aff b) + -> Aff b +cleanupBracket cleanupRef before after action = do + Aff.bracket + before + (\res -> liftEffect $ Ref.modify_ ([ after res ] <> _) cleanupRef) + action + +-- | Kill a process and wait for it to stop listening on a specific port. +stopChildProcessWithPort :: UInt -> ManagedProcess -> Aff Unit +stopChildProcessWithPort port childProcess = do + stop childProcess + void $ recovering defaultRetryPolicy ([ \_ _ -> pure true ]) + \_ -> do + isAvailable <- isPortAvailable port + unless isAvailable do + liftEffect $ throw "retry" + +checkPlutipServer :: PlutipConfig -> Aff Unit +checkPlutipServer cfg = do + -- We are trying to call stopPlutipCluster endpoint to ensure that + -- `plutip-server` has started. + void + $ recovering defaultRetryPolicy + ([ \_ _ -> pure true ]) + $ const + $ stopPlutipCluster cfg + +defaultRetryPolicy :: RetryPolicy +defaultRetryPolicy = limitRetriesByCumulativeDelay (Milliseconds 3000.00) $ + constantDelay (Milliseconds 100.0) + +type ErrorMessage = String +data StopClusterResponse = StopClusterSuccess | StopClusterFailure ErrorMessage + +data StopClusterRequest = StopClusterRequest + +derive instance Generic StopClusterResponse _ + +instance EncodeAeson StopClusterRequest where + encodeAeson _ = encodeAeson ([] :: Array Int) + +instance Show StopClusterResponse where + show = genericShow + +instance DecodeAeson StopClusterResponse where + decodeAeson aeson = do + obj <- decodeAeson aeson + obj .: "tag" >>= case _ of + "StopClusterSuccess" -> pure StopClusterSuccess + "StopClusterFailure" -> do + failure <- obj .: "contents" + StopClusterFailure <$> decodeAeson failure + _ -> do + Left (UnexpectedValue (toStringifiedNumbersJson aeson)) + +type FilePath = String + +type ClusterStartupParameters = + { privateKeys :: Array PrivateKeyResponse + , nodeSocketPath :: FilePath + , nodeConfigPath :: FilePath + , keysDirectory :: FilePath + } + +newtype PrivateKeyResponse = PrivateKeyResponse PrivateKey + +derive instance Newtype PrivateKeyResponse _ +derive instance Generic PrivateKeyResponse _ + +instance Show PrivateKeyResponse where + show _ = "(PrivateKeyResponse \"\")" + +instance DecodeAeson PrivateKeyResponse where + decodeAeson json = do + cborStr <- decodeAeson json + cborBytes <- note err $ hexToByteArray cborStr + PrivateKeyResponse <$> note err + (PrivateKey.fromRawBytes (RawBytes cborBytes)) + where + err :: JsonDecodeError + err = TypeMismatch "PrivateKey" + +newtype ClusterStartupRequest = ClusterStartupRequest + { keysToGenerate :: InitialUTxODistribution + , epochSize :: UInt + , slotLength :: Seconds + , maxTxSize :: Maybe UInt + , raiseExUnitsToMax :: Boolean + } + +instance EncodeAeson ClusterStartupRequest where + encodeAeson + ( ClusterStartupRequest + { keysToGenerate + , epochSize + , slotLength: Seconds slotLength + , maxTxSize + , raiseExUnitsToMax + } + ) = encodeAeson + { keysToGenerate + , epochSize + , slotLength: unsafeFromJust "instance EncodeAeson ClusterStartupRequest" $ + finiteNumber slotLength + , maxTxSize + , raiseExUnitsToMax + } + +data ClusterStartupFailureReason + = ClusterIsRunningAlready + | NegativeLovelaces + | NodeConfigNotFound + +derive instance Generic ClusterStartupFailureReason _ + +instance Show ClusterStartupFailureReason where + show = genericShow + +instance DecodeAeson ClusterStartupFailureReason where + decodeAeson aeson = do + decodeAeson aeson >>= case _ of + "ClusterIsRunningAlready" -> do + pure ClusterIsRunningAlready + "NegativeLovelaces" -> pure NegativeLovelaces + "NodeConfigNotFound" -> pure NodeConfigNotFound + _ -> do + Left (UnexpectedValue (toStringifiedNumbersJson aeson)) + +data StartClusterResponse + = ClusterStartupFailure ClusterStartupFailureReason + | ClusterStartupSuccess ClusterStartupParameters + +derive instance Generic StartClusterResponse _ + +instance Show StartClusterResponse where + show = genericShow + +instance DecodeAeson StartClusterResponse where + decodeAeson aeson = do + obj <- decodeAeson aeson + obj .: "tag" >>= case _ of + "ClusterStartupSuccess" -> do + contents <- obj .: "contents" + ClusterStartupSuccess <$> decodeAeson contents + "ClusterStartupFailure" -> do + failure <- obj .: "contents" + ClusterStartupFailure <$> decodeAeson failure + _ -> do + Left (UnexpectedValue (toStringifiedNumbersJson aeson)) + +-- | Calculate the initial UTxOs needed for `ourKey` to cover +-- | transaction costs for the given initial distribution +ourInitialUtxos :: InitialUTxODistribution -> InitialUTxOs +ourInitialUtxos utxoDistribution = + let + total = Array.foldr (\e acc -> unsafePartial $ fold e # append acc) + BigNum.zero + utxoDistribution + in + [ -- Take the total value of the UTxOs and add some extra on top + -- of it to cover the possible transaction fees. Also make sure + -- we don't request a 0 ada UTxO + unsafePartial $ append total (BigNum.fromInt 1_000_000) + ] + +mkServerEndpointUrl :: PlutipConfig -> String -> String +mkServerEndpointUrl cfg path = do + "http://" <> cfg.host <> ":" <> UInt.toString cfg.port <> path + +-- | Throw an exception if `PlutipConfig` contains ports that are occupied. +configCheck :: PlutipConfig -> Aff Unit +configCheck cfg = + checkPortsAreFree + [ { port: cfg.port, service: "plutip-server" } + , { port: cfg.ogmiosConfig.port, service: "ogmios" } + , { port: cfg.kupoConfig.port, service: "kupo" } + ] + +-- | Throw an exception if any of the given ports is occupied. +checkPortsAreFree :: Array { port :: UInt, service :: String } -> Aff Unit +checkPortsAreFree ports = do + occupiedServices <- Array.catMaybes <$> for ports \{ port, service } -> do + isPortAvailable port <#> if _ then Nothing else Just (port /\ service) + unless (Array.null occupiedServices) do + liftEffect $ throw + $ + "Unable to run the following services, because the ports are occupied:\ + \\n" + <> foldMap printServiceEntry occupiedServices + where + printServiceEntry :: UInt /\ String -> String + printServiceEntry (port /\ service) = + "- " <> service <> " (port: " <> show (UInt.toInt port) <> ")\n" diff --git a/src/Internal/CardanoCli.purs b/src/Internal/CardanoCli.purs index 98870ddcf..44f0a5c01 100644 --- a/src/Internal/CardanoCli.purs +++ b/src/Internal/CardanoCli.purs @@ -17,8 +17,8 @@ import Contract.Value as Contract.Value import Control.Alt ((<|>)) import Control.Monad.Except (throwError) import Control.Parallel (parallel, sequential) -import Ctl.Internal.Plutip.Spawn as Ctl.Internal.Plutip.Spawn -import Ctl.Internal.Plutip.Utils (annotateError) +import Ctl.Internal.Spawn as Ctl.Internal.Spawn +import Ctl.Internal.Testnet.Utils (annotateError) import Data.Array as Array import Data.Bifunctor (lmap) import Data.ByteArray (ByteArray) @@ -141,7 +141,7 @@ execCardanoCli execCardanoCli params = annotateError "execCardanoCli" do let cmd = "cardano-cli " <> intercalate " " params -- log $ show { execCardanoCli: cmd } - { channels, process } <- Ctl.Internal.Plutip.Spawn.exec cmd + { channels, process } <- Ctl.Internal.Spawn.exec cmd let bufferToLines = map (String.split (String.Pattern "\n") <<< String.trim) diff --git a/src/Internal/Plutip/PortCheck.purs b/src/Internal/Plutip/PortCheck.purs deleted file mode 100644 index ca4343128..000000000 --- a/src/Internal/Plutip/PortCheck.purs +++ /dev/null @@ -1,15 +0,0 @@ -module Ctl.Internal.Plutip.PortCheck - ( isPortAvailable - ) where - -import Prelude - -import Control.Promise (Promise, toAffE) -import Data.UInt (UInt, toInt) -import Effect (Effect) -import Effect.Aff (Aff) - -foreign import _isPortAvailable :: Int -> Effect (Promise Boolean) - -isPortAvailable :: UInt -> Aff Boolean -isPortAvailable = toAffE <<< _isPortAvailable <<< toInt diff --git a/src/Internal/Plutip/Server.purs b/src/Internal/Plutip/Server.purs deleted file mode 100644 index 31cd3a6bf..000000000 --- a/src/Internal/Plutip/Server.purs +++ /dev/null @@ -1,739 +0,0 @@ -module Ctl.Internal.Plutip.Server - ( checkPlutipServer - , execDistribution - , runPlutipContract - , runPlutipTestPlan - , startOgmios - , startKupo - , startPlutipCluster - , startPlutipServer - , stopChildProcessWithPort - , stopPlutipCluster - , testPlutipContracts - , withPlutipContractEnv - , makeNaiveClusterContractEnv - , makeClusterContractEnv - , mkLogging - , checkPortsAreFree - ) where - -import Contract.Prelude - -import Aeson (decodeAeson, encodeAeson, parseJsonStringToAeson, stringifyAeson) -import Affjax (defaultRequest) as Affjax -import Affjax.RequestBody as RequestBody -import Affjax.RequestHeader as Header -import Affjax.ResponseFormat as Affjax.ResponseFormat -import Cardano.Types (NetworkId(MainnetId)) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) -import Contract.Chain (waitNSlots) -import Contract.Config (Hooks, defaultSynchronizationParams, defaultTimeParams) -import Contract.Monad (Contract, ContractEnv, liftContractM, runContractInEnv) -import Control.Monad.Error.Class (throwError) -import Control.Monad.State (State, execState, modify_) -import Control.Monad.Trans.Class (lift) -import Control.Monad.Writer (censor, execWriterT, tell) -import Ctl.Internal.Affjax (request) as Affjax -import Ctl.Internal.Contract.Monad - ( buildBackend - , getLedgerConstants - , mkQueryHandle - , stopContractEnv - ) -import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) -import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Logging (Logger, mkLogger, setupLogs) -import Ctl.Internal.Plutip.PortCheck (isPortAvailable) -import Ctl.Internal.Plutip.Spawn - ( ManagedProcess - , NewOutputAction(Success, NoOp) - , _rmdirSync - , spawn - , stop - ) -import Ctl.Internal.Plutip.Types - ( ClusterStartupParameters - , ClusterStartupRequest(ClusterStartupRequest) - , PlutipConfig - , PrivateKeyResponse(PrivateKeyResponse) - , StartClusterResponse(ClusterStartupSuccess, ClusterStartupFailure) - , StopClusterRequest(StopClusterRequest) - , StopClusterResponse - ) -import Ctl.Internal.Plutip.Utils - ( addCleanup - , after - , runCleanup - , tmpdir - , whenError - ) -import Ctl.Internal.QueryM.UniqueId (uniqueId) -import Ctl.Internal.ServerConfig (ServerConfig) -import Ctl.Internal.Service.Error - ( ClientError(ClientDecodeJsonError, ClientHttpError) - , pprintClientError - ) -import Ctl.Internal.Test.ContractTest - ( ContractTest(ContractTest) - , ContractTestPlan(ContractTestPlan) - , ContractTestPlanHandler - ) -import Ctl.Internal.Test.UtxoDistribution - ( class UtxoDistribution - , InitialUTxODistribution - , InitialUTxOs - , decodeWallets - , encodeDistribution - , keyWallets - , transferFundsFromEnterpriseToBase - ) -import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) -import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) -import Data.Array as Array -import Data.Bifunctor (lmap) -import Data.Either (Either(Left, Right), either) -import Data.Foldable (fold) -import Data.HTTP.Method as Method -import Data.Log.Level (LogLevel) -import Data.Log.Message (Message) -import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) -import Data.Newtype (over, unwrap, wrap) -import Data.Set as Set -import Data.String.CodeUnits (indexOf) as String -import Data.String.Pattern (Pattern(Pattern)) -import Data.Traversable (foldMap, for, for_, traverse_) -import Data.Tuple (fst, snd) -import Data.Tuple.Nested (type (/\), (/\)) -import Data.UInt (UInt) -import Data.UInt as UInt -import Effect.Aff (Aff, Milliseconds(Milliseconds), try) -import Effect.Aff (bracket) as Aff -import Effect.Aff.Class (liftAff) -import Effect.Aff.Retry - ( RetryPolicy - , constantDelay - , limitRetriesByCumulativeDelay - , recovering - ) -import Effect.Class (liftEffect) -import Effect.Exception (error, message, throw) -import Effect.Ref (Ref) -import Effect.Ref as Ref -import Mote (bracket) as Mote -import Mote.Description (Description(Group, Test)) -import Mote.Monad (MoteT(MoteT), mapTest) -import Mote.TestPlanM (TestPlanM) -import Node.ChildProcess (defaultSpawnOptions) -import Node.FS.Sync (exists, mkdir) as FSSync -import Node.Path (FilePath) -import Partial.Unsafe (unsafePartial) -import Safe.Coerce (coerce) -import Type.Prelude (Proxy(Proxy)) - --- | Run a single `Contract` in Plutip environment. -runPlutipContract - :: forall (distr :: Type) (wallets :: Type) (a :: Type) - . UtxoDistribution distr wallets - => PlutipConfig - -> distr - -> (wallets -> Contract a) - -> Aff a -runPlutipContract cfg distr cont = withPlutipContractEnv cfg distr - \env wallets -> - runContractInEnv env (cont wallets) - --- | Provide a `ContractEnv` connected to Plutip. --- | can be used to run multiple `Contract`s using `runContractInEnv`. -withPlutipContractEnv - :: forall (distr :: Type) (wallets :: Type) (a :: Type) - . UtxoDistribution distr wallets - => PlutipConfig - -> distr - -> (ContractEnv -> wallets -> Aff a) - -> Aff a -withPlutipContractEnv plutipCfg distr cont = do - cleanupRef <- liftEffect $ Ref.new mempty - Aff.bracket - (try $ startPlutipContractEnv plutipCfg distr cleanupRef) - (const $ runCleanup cleanupRef) - $ liftEither - >=> \{ env, wallets, printLogs } -> - whenError printLogs (cont env wallets) - --- | Run several `Contract`s in tests in a (single) Plutip environment (plutip-server and cluster, kupo, etc.). --- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. --- | Namely, brackets are run for each of the top-level groups and tests --- | inside the bracket. --- | If you wish to only set up Plutip once, ensure all tests that are passed --- | to `testPlutipContracts` are wrapped in a single group. --- | https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#testing-with-mote -testPlutipContracts - :: PlutipConfig - -> TestPlanM ContractTest Unit - -> TestPlanM (Aff Unit) Unit -testPlutipContracts plutipCfg tp = do - plutipTestPlan <- lift $ execDistribution tp - runPlutipTestPlan plutipCfg plutipTestPlan - --- | Run a `ContractTestPlan` in a (single) Plutip environment. --- | Supports wallet reuse - see docs on sharing wallet state between --- | wallets in `doc/plutip-testing.md`. -runPlutipTestPlan - :: PlutipConfig - -> ContractTestPlan - -> TestPlanM (Aff Unit) Unit -runPlutipTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = do - -- Modify tests to pluck out parts of a single combined distribution - runContractTestPlan \distr tests -> do - cleanupRef <- liftEffect $ Ref.new mempty - -- Sets a single Mote bracket at the top level, it will be run for all - -- immediate tests and groups - bracket (startPlutipContractEnv plutipCfg distr cleanupRef) - (runCleanup cleanupRef) - $ flip mapTest tests \test { env, wallets, printLogs, clearLogs } -> do - whenError printLogs (runContractInEnv env (test wallets)) - clearLogs - where - -- `MoteT`'s bracket doesn't support supplying the constructed resource into - -- the main action, so we use a `Ref` to store and read the result. - bracket - :: forall (a :: Type) (b :: Type) - . Aff a - -> Aff Unit - -> TestPlanM (a -> Aff b) Unit - -> TestPlanM (Aff b) Unit - bracket before' after' act = do - resultRef <- liftEffect $ Ref.new (Left $ error "Plutip not initialized") - let - before = do - res <- try $ before' - liftEffect $ Ref.write res resultRef - pure res - after = const $ after' - Mote.bracket { before, after } $ flip mapTest act \t -> do - result <- liftEffect $ Ref.read resultRef >>= liftEither - t result - --- | Lifts the UTxO distributions of each test out of Mote, into a combined --- | distribution. Adapts the tests to pick their distribution out of the --- | combined distribution. --- | NOTE: Skipped tests still have their distribution generated. --- | This is the current method of constructing all the wallets with required distributions --- | in one go during Plutip startup. -execDistribution :: TestPlanM ContractTest Unit -> Aff ContractTestPlan -execDistribution (MoteT mote) = execWriterT mote <#> go - where - -- Recursively go over the tree of test `Description`s and construct a `ContractTestPlan` callback. - -- When run the `ContractTestPlan` will reconstruct the whole `MoteT` value passed to `execDistribution` - -- via similar writer effects (plus combining distributions) which append test descriptions - -- or wrap them in a group. - go :: Array (Description Aff ContractTest) -> ContractTestPlan - go = flip execState emptyContractTestPlan <<< traverse_ case _ of - Test rm { bracket, label, value: ContractTest runTest } -> - runTest \distr test -> do - addTests distr $ MoteT - (tell [ Test rm { bracket, label, value: test } ]) - Group rm { bracket, label, value } -> do - let ContractTestPlan runGroupPlan = go value - runGroupPlan \distr tests -> - addTests distr $ over MoteT - (censor (pure <<< Group rm <<< { bracket, label, value: _ })) - tests - - -- This function is used by `go` for iteratively adding Mote tests (internally Writer monad actions) - -- to the `ContractTestPlan` in the State monad _and_ for combining UTxO distributions used by tests. - -- Given a distribution and tests (a MoteT value) this runs a `ContractTestPlan`, i.e. passes its - -- stored distribution and tests to our handler, and then makes a new `ContractTestPlan`, but this time - -- storing a tuple of stored and passed distributions and also storing a pair of Mote tests, modifying - -- the previously stored tests to use the first distribution, and the passed tests the second distribution - -- - -- `go` starts at the top of the test tree and step-by-step constructs a big `ContractTestPlan` which - -- stores distributions of all inner tests tupled together and tests from the original test tree, which - -- know how to get their distribution out of the big tuple. - addTests - :: forall (distr :: Type) (wallets :: Type) - . ContractTestPlanHandler distr wallets (State ContractTestPlan Unit) - addTests distr tests = do - modify_ \(ContractTestPlan runContractTestPlan) -> runContractTestPlan - \distr' tests' -> ContractTestPlan \h -> h (distr' /\ distr) do - mapTest (_ <<< fst) tests' - mapTest (_ <<< snd) tests - - -- Start with an empty plan, which passes an empty distribution - -- and an empty array of test `Description`s to the function that - -- will run tests. - emptyContractTestPlan :: ContractTestPlan - emptyContractTestPlan = ContractTestPlan \h -> h unit (pure unit) - --- | Provide a `ContractEnv` connected to Plutip. --- | Can be used to run multiple `Contract`s using `runContractInEnv`. --- | Resources which are allocated in the `Aff` computation must be de-allocated --- | via the `Ref (Array (Aff Unit))` parameter, even if the computation did not --- | succesfully complete. --- Startup is implemented sequentially, rather than with nested `Aff.bracket`, --- to allow non-`Aff` computations to occur between setup and cleanup. -startPlutipContractEnv - :: forall (distr :: Type) (wallets :: Type) - . UtxoDistribution distr wallets - => PlutipConfig - -> distr - -> Ref (Array (Aff Unit)) - -> Aff - { env :: ContractEnv - , wallets :: wallets - , printLogs :: Aff Unit - , clearLogs :: Aff Unit - } -startPlutipContractEnv plutipCfg distr cleanupRef = do - configCheck plutipCfg - tryWithReport startPlutipServer' "Could not start Plutip server" - (ourKey /\ response) <- tryWithReport startPlutipCluster' - "Could not start Plutip cluster" - tryWithReport (startOgmios' response) "Could not start Ogmios" - tryWithReport (startKupo' response) "Could not start Kupo" - { env, printLogs, clearLogs } <- makeClusterContractEnv cleanupRef plutipCfg - wallets <- mkWallets' env ourKey response - void $ try $ liftEffect do - for_ env.hooks.onClusterStartup \clusterParamsCb -> do - clusterParamsCb - { privateKeys: response.privateKeys <#> unwrap - , nodeSocketPath: response.nodeSocketPath - , nodeConfigPath: response.nodeConfigPath - , privateKeysDirectory: response.keysDirectory - } - pure - { env - , wallets - , printLogs - , clearLogs - } - where - tryWithReport - :: forall (a :: Type) - . Aff a - -> String - -> Aff a - tryWithReport what prefix = do - result <- try what - case result of - Left err -> throwError $ error $ prefix <> ": " <> message err - Right result' -> pure result' - - startPlutipServer' :: Aff Unit - startPlutipServer' = - cleanupBracket - cleanupRef - (startPlutipServer plutipCfg) - (stopChildProcessWithPort plutipCfg.port) - (const $ checkPlutipServer plutipCfg) - - startPlutipCluster' - :: Aff (PrivatePaymentKey /\ ClusterStartupParameters) - startPlutipCluster' = do - let - distrArray = - encodeDistribution $ - ourInitialUtxos (encodeDistribution distr) /\ - distr - for_ distrArray $ traverse_ \n -> when (n < BigNum.fromInt 1_000_000) do - liftEffect $ throw $ "UTxO is too low: " <> BigNum.toString n <> - ", must be at least 1_000_000 Lovelace" - cleanupBracket - cleanupRef - (startPlutipCluster plutipCfg distrArray) - (const $ void $ stopPlutipCluster plutipCfg) - pure - - startOgmios' :: ClusterStartupParameters -> Aff Unit - startOgmios' response = - void - $ after (startOgmios plutipCfg response) - $ stopChildProcessWithPort plutipCfg.ogmiosConfig.port - - startKupo' :: ClusterStartupParameters -> Aff Unit - startKupo' response = - void - $ after (startKupo plutipCfg response cleanupRef) - $ fst - >>> stopChildProcessWithPort plutipCfg.kupoConfig.port - - mkWallets' - :: ContractEnv - -> PrivatePaymentKey - -> ClusterStartupParameters - -> Aff wallets - mkWallets' env ourKey response = do - runContractInEnv - env { customLogger = Just (\_ _ -> pure unit) } - do - wallets <- - liftContractM - "Impossible happened: could not decode wallets. Please report as bug" - $ decodeWallets distr (coerce response.privateKeys) - let walletsArray = keyWallets (Proxy :: Proxy distr) wallets - void $ waitNSlots BigNum.one - transferFundsFromEnterpriseToBase ourKey walletsArray - pure wallets - --- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run --- later. -cleanupBracket - :: forall (a :: Type) (b :: Type) - . Ref (Array (Aff Unit)) - -> Aff a - -> (a -> Aff Unit) - -> (a -> Aff b) - -> Aff b -cleanupBracket cleanupRef before after action = do - Aff.bracket - before - (\res -> liftEffect $ Ref.modify_ ([ after res ] <> _) cleanupRef) - action - -mkLogging - :: forall r - . Record (LogParams r) - -> Effect - { updatedConfig :: Record (LogParams r) - , logger :: Logger - , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) - , printLogs :: Aff Unit - , clearLogs :: Aff Unit - } -mkLogging cfg - | cfg.suppressLogs = ado - -- if logs should be suppressed, setup the machinery and continue with - -- the bracket - { addLogEntry, suppressedLogger, printLogs, clearLogs } <- - setupLogs cfg.logLevel cfg.customLogger - let - configLogger = Just $ map liftEffect <<< addLogEntry - in - { updatedConfig: cfg { customLogger = configLogger } - , logger: suppressedLogger - , customLogger: configLogger - , printLogs: liftEffect printLogs - , clearLogs: liftEffect clearLogs - } - | otherwise = pure - -- otherwise, proceed with the env setup and provide a normal logger - { updatedConfig: cfg - , logger: mkLogger cfg.logLevel cfg.customLogger - , customLogger: cfg.customLogger - , printLogs: pure unit - , clearLogs: pure unit - } - --- | Throw an exception if `PlutipConfig` contains ports that are occupied. -configCheck :: PlutipConfig -> Aff Unit -configCheck cfg = - checkPortsAreFree - [ { port: cfg.port, service: "plutip-server" } - , { port: cfg.ogmiosConfig.port, service: "ogmios" } - , { port: cfg.kupoConfig.port, service: "kupo" } - ] - --- | Throw an exception if any of the given ports is occupied. -checkPortsAreFree :: Array { port :: UInt, service :: String } -> Aff Unit -checkPortsAreFree ports = do - occupiedServices <- Array.catMaybes <$> for ports \{ port, service } -> do - isPortAvailable port <#> if _ then Nothing else Just (port /\ service) - unless (Array.null occupiedServices) do - liftEffect $ throw - $ - "Unable to run the following services, because the ports are occupied:\ - \\n" - <> foldMap printServiceEntry occupiedServices - where - printServiceEntry :: UInt /\ String -> String - printServiceEntry (port /\ service) = - "- " <> service <> " (port: " <> show (UInt.toInt port) <> ")\n" - --- | Start the plutip cluster, initializing the state with the given --- | UTxO distribution. Also initializes an extra payment key (aka --- | `ourKey`) with some UTxOs for use with further plutip --- | setup. `ourKey` has funds proportional to the total amount of the --- | UTxOs in the passed distribution, so it can be used to handle --- | transaction fees. -startPlutipCluster - :: PlutipConfig - -> InitialUTxODistribution - -> Aff (PrivatePaymentKey /\ ClusterStartupParameters) -startPlutipCluster cfg keysToGenerate = do - let - url = mkServerEndpointUrl cfg "start" - -- TODO: Non-default values for `slotLength` and `epochSize` break staking - -- rewards, see https://github.com/mlabs-haskell/plutip/issues/149 - epochSize = fromMaybe (UInt.fromInt 80) cfg.clusterConfig.epochSize - res <- do - response <- liftAff - ( Affjax.request - Affjax.defaultRequest - { content = Just - $ RequestBody.String - $ stringifyAeson - $ encodeAeson - $ ClusterStartupRequest - { keysToGenerate - , epochSize - , slotLength: cfg.clusterConfig.slotLength - , maxTxSize: cfg.clusterConfig.maxTxSize - , raiseExUnitsToMax: cfg.clusterConfig.raiseExUnitsToMax - } - , responseFormat = Affjax.ResponseFormat.string - , headers = [ Header.ContentType (wrap "application/json") ] - , url = url - , method = Left Method.POST - } - ) - pure $ response # either - (Left <<< ClientHttpError) - \{ body } -> lmap (ClientDecodeJsonError body) - $ (decodeAeson <=< parseJsonStringToAeson) body - either (liftEffect <<< throw <<< pprintClientError) pure res >>= - case _ of - ClusterStartupFailure reason -> do - liftEffect $ throw - $ "Failed to start up cluster. Reason: " - <> show reason - ClusterStartupSuccess response@{ privateKeys } -> - case Array.uncons privateKeys of - Nothing -> - liftEffect $ throw $ - "Impossible happened: insufficient private keys provided by plutip. Please report as bug." - Just { head: PrivateKeyResponse ourKey, tail } -> - pure $ PrivatePaymentKey ourKey /\ response { privateKeys = tail } - --- | Calculate the initial UTxOs needed for `ourKey` to cover --- | transaction costs for the given initial distribution -ourInitialUtxos :: InitialUTxODistribution -> InitialUTxOs -ourInitialUtxos utxoDistribution = - let - total = Array.foldr (\e acc -> unsafePartial $ fold e # append acc) - BigNum.zero - utxoDistribution - in - [ -- Take the total value of the UTxOs and add some extra on top - -- of it to cover the possible transaction fees. Also make sure - -- we don't request a 0 ada UTxO - unsafePartial $ append total (BigNum.fromInt 1_000_000) - ] - -stopPlutipCluster :: PlutipConfig -> Aff StopClusterResponse -stopPlutipCluster cfg = do - let url = mkServerEndpointUrl cfg "stop" - res <- do - response <- liftAff - ( Affjax.request - Affjax.defaultRequest - { content = Just - $ RequestBody.String - $ stringifyAeson - $ encodeAeson - $ StopClusterRequest - , responseFormat = Affjax.ResponseFormat.string - , headers = [ Header.ContentType (wrap "application/json") ] - , url = url - , method = Left Method.POST - } - ) - pure $ response # either - (Left <<< ClientHttpError) - \{ body } -> lmap (ClientDecodeJsonError body) - $ (decodeAeson <=< parseJsonStringToAeson) - body - either (liftEffect <<< throw <<< show) pure res - -startOgmios - :: forall r r' - . { ogmiosConfig :: ServerConfig | r } - -> { nodeSocketPath :: FilePath - , nodeConfigPath :: FilePath - | r' - } - -> Aff ManagedProcess -startOgmios cfg params = do - spawn "ogmios" ogmiosArgs defaultSpawnOptions - $ Just - $ _.output - >>> String.indexOf (Pattern "networkParameters") - >>> maybe NoOp (const Success) - >>> pure - where - ogmiosArgs :: Array String - ogmiosArgs = - [ "--host" - , cfg.ogmiosConfig.host - , "--port" - , UInt.toString cfg.ogmiosConfig.port - , "--node-socket" - , params.nodeSocketPath - , "--node-config" - , params.nodeConfigPath - , "--include-transaction-cbor" - ] - -startKupo - :: forall r r' - . { kupoConfig :: ServerConfig | r } - -> { nodeSocketPath :: FilePath - , nodeConfigPath :: FilePath - | r' - } - -> Ref (Array (Aff Unit)) - -> Aff (ManagedProcess /\ String) -startKupo cfg params cleanupRef = do - tmpDir <- liftEffect tmpdir - randomStr <- liftEffect $ uniqueId "" - let - workdir = tmpDir <> randomStr <> "-kupo-db" - liftEffect do - workdirExists <- FSSync.exists workdir - unless workdirExists (FSSync.mkdir workdir) - childProcess <- - after - (spawnKupoProcess workdir) - -- set up cleanup - $ const - $ liftEffect - $ addCleanup cleanupRef - $ liftEffect - $ _rmdirSync workdir - pure (childProcess /\ workdir) - where - spawnKupoProcess :: FilePath -> Aff ManagedProcess - spawnKupoProcess workdir = - spawn "kupo" (kupoArgs workdir) defaultSpawnOptions $ - Just - ( _.output >>> String.indexOf outputString - >>> maybe NoOp (const Success) - >>> pure - ) - where - outputString :: Pattern - outputString = Pattern "ConfigurationCheckpointsForIntersection" - - kupoArgs :: FilePath -> Array String - kupoArgs workdir = - [ "--match" - , "*/*" - , "--since" - , "origin" - , "--workdir" - , workdir - , "--host" - , cfg.kupoConfig.host - , "--port" - , UInt.toString cfg.kupoConfig.port - , "--node-socket" - , params.nodeSocketPath - , "--node-config" - , params.nodeConfigPath - ] - -startPlutipServer :: PlutipConfig -> Aff ManagedProcess -startPlutipServer cfg = do - spawn "plutip-server" [ "-p", UInt.toString cfg.port ] - defaultSpawnOptions - Nothing - -checkPlutipServer :: PlutipConfig -> Aff Unit -checkPlutipServer cfg = do - -- We are trying to call stopPlutipCluster endpoint to ensure that - -- `plutip-server` has started. - void - $ recovering defaultRetryPolicy - ([ \_ _ -> pure true ]) - $ const - $ stopPlutipCluster cfg - --- | Kill a process and wait for it to stop listening on a specific port. -stopChildProcessWithPort :: UInt -> ManagedProcess -> Aff Unit -stopChildProcessWithPort port childProcess = do - stop childProcess - void $ recovering defaultRetryPolicy ([ \_ _ -> pure true ]) - \_ -> do - isAvailable <- isPortAvailable port - unless isAvailable do - liftEffect $ throw "retry" - -type ClusterConfig r = - ( ogmiosConfig :: ServerConfig - , kupoConfig :: ServerConfig - , hooks :: Hooks - | LogParams r - ) - --- | TODO: Replace original log params with the row type -type LogParams r = - ( logLevel :: LogLevel - , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) - , suppressLogs :: Boolean - | r - ) - -makeNaiveClusterContractEnv - :: forall r - . Record (ClusterConfig r) - -> Logger - -> Maybe (LogLevel -> Message -> Aff Unit) - -> Aff ContractEnv -makeNaiveClusterContractEnv cfg logger customLogger = do - usedTxOuts <- newUsedTxOuts - backend <- buildBackend logger $ mkCtlBackendParams - { ogmiosConfig: cfg.ogmiosConfig - , kupoConfig: cfg.kupoConfig - } - ledgerConstants <- getLedgerConstants - cfg { customLogger = customLogger } - backend - backendKnownTxs <- liftEffect $ Ref.new Set.empty - pure - { backend - , handle: mkQueryHandle cfg backend - , networkId: MainnetId - , logLevel: cfg.logLevel - , customLogger: customLogger - , suppressLogs: cfg.suppressLogs - , hooks: cfg.hooks - , wallet: Nothing - , usedTxOuts - , ledgerConstants - -- timeParams have no effect when KeyWallet is used - , timeParams: defaultTimeParams - , synchronizationParams: defaultSynchronizationParams - , knownTxs: { backend: backendKnownTxs } - } - --- | Makes cluster ContractEnv with configured logs suppression and cleanup scheduled. -makeClusterContractEnv - :: forall r - . Ref (Array (Aff Unit)) - -> Record (ClusterConfig r) - -> Aff - { env :: ContractEnv - , clearLogs :: Aff Unit - , printLogs :: Aff Unit - } -makeClusterContractEnv cleanupRef cfg = do - { updatedConfig - , logger - , customLogger - , printLogs - , clearLogs - } <- liftEffect $ mkLogging cfg - cleanupBracket - cleanupRef - (makeNaiveClusterContractEnv updatedConfig logger customLogger) - stopContractEnv - $ pure - <<< { env: _, printLogs, clearLogs } - -defaultRetryPolicy :: RetryPolicy -defaultRetryPolicy = limitRetriesByCumulativeDelay (Milliseconds 3000.00) $ - constantDelay (Milliseconds 100.0) - -mkServerEndpointUrl :: PlutipConfig -> String -> String -mkServerEndpointUrl cfg path = do - "http://" <> cfg.host <> ":" <> UInt.toString cfg.port <> path diff --git a/src/Internal/Plutip/Spawn.js b/src/Internal/Plutip/Spawn.js deleted file mode 100644 index 7fb83aad1..000000000 --- a/src/Internal/Plutip/Spawn.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -import stream from "node:stream"; - -export function clearLineHandler(readline) { - return () => { - readline.removeAllListeners("line"); - }; -} - -export const readableFromBuffer = buf => () => - stream.Readable.from(buf, { objectMode: false }); - -import fs from "fs"; - -export function _rmdirSync(path) { - return () => fs.rmSync(path, { recursive: true }); -} - -export function removeOnSignal({ signal, callback }) { - return () => { - process.removeListener(signal, callback); - }; -} - -export function onSignalImpl(signal) { - return callback => () => { - process.on(signal, callback); - return { signal, callback }; - }; -} diff --git a/src/Internal/Plutip/Types.purs b/src/Internal/Plutip/Types.purs deleted file mode 100644 index 45f15943e..000000000 --- a/src/Internal/Plutip/Types.purs +++ /dev/null @@ -1,196 +0,0 @@ -module Ctl.Internal.Plutip.Types - ( ClusterStartupParameters - , ErrorMessage - , FilePath - , PlutipConfig - , ClusterStartupRequest(ClusterStartupRequest) - , PrivateKeyResponse(PrivateKeyResponse) - , ClusterStartupFailureReason - ( ClusterIsRunningAlready - , NegativeLovelaces - , NodeConfigNotFound - ) - , StartClusterResponse - ( ClusterStartupFailure - , ClusterStartupSuccess - ) - , StopClusterRequest(StopClusterRequest) - , StopClusterResponse(StopClusterSuccess, StopClusterFailure) - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) - , decodeAeson - , encodeAeson - , finiteNumber - , toStringifiedNumbersJson - , (.:) - ) -import Cardano.Types.PrivateKey (PrivateKey(PrivateKey)) -import Cardano.Types.PrivateKey as PrivateKey -import Cardano.Types.RawBytes (RawBytes(RawBytes)) -import Ctl.Internal.Contract.Hooks (Hooks) -import Ctl.Internal.Helpers (unsafeFromJust) -import Ctl.Internal.ServerConfig (ServerConfig) -import Ctl.Internal.Test.UtxoDistribution (InitialUTxODistribution) -import Data.ByteArray (hexToByteArray) -import Data.Either (Either(Left), note) -import Data.Generic.Rep (class Generic) -import Data.Log.Level (LogLevel) -import Data.Log.Message (Message) -import Data.Maybe (Maybe) -import Data.Newtype (class Newtype) -import Data.Show.Generic (genericShow) -import Data.Time.Duration (Seconds(Seconds)) -import Data.UInt (UInt) -import Effect.Aff (Aff) - --- | A config that is used to run tests on Plutip clusters. --- | Note that the test suite starts the services on the specified ports. --- | It does not expect them to be running. -type PlutipConfig = - { host :: String - , port :: UInt - , logLevel :: LogLevel - -- Server configs are used to deploy the corresponding services: - , ogmiosConfig :: ServerConfig - , kupoConfig :: ServerConfig - , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) - , suppressLogs :: Boolean - , hooks :: Hooks - , clusterConfig :: - { slotLength :: Seconds - , epochSize :: Maybe UInt - , maxTxSize :: Maybe UInt - , raiseExUnitsToMax :: Boolean - } - } - -type FilePath = String - -type ErrorMessage = String - -newtype ClusterStartupRequest = ClusterStartupRequest - { keysToGenerate :: InitialUTxODistribution - , epochSize :: UInt - , slotLength :: Seconds - , maxTxSize :: Maybe UInt - , raiseExUnitsToMax :: Boolean - } - -instance EncodeAeson ClusterStartupRequest where - encodeAeson - ( ClusterStartupRequest - { keysToGenerate - , epochSize - , slotLength: Seconds slotLength - , maxTxSize - , raiseExUnitsToMax - } - ) = encodeAeson - { keysToGenerate - , epochSize - , slotLength: unsafeFromJust "instance EncodeAeson ClusterStartupRequest" $ - finiteNumber slotLength - , maxTxSize - , raiseExUnitsToMax - } - -newtype PrivateKeyResponse = PrivateKeyResponse PrivateKey - -derive instance Newtype PrivateKeyResponse _ -derive instance Generic PrivateKeyResponse _ - -instance Show PrivateKeyResponse where - show _ = "(PrivateKeyResponse \"\")" - -instance DecodeAeson PrivateKeyResponse where - decodeAeson json = do - cborStr <- decodeAeson json - cborBytes <- note err $ hexToByteArray cborStr - PrivateKeyResponse <$> note err - (PrivateKey.fromRawBytes (RawBytes cborBytes)) - where - err :: JsonDecodeError - err = TypeMismatch "PrivateKey" - -type ClusterStartupParameters = - { privateKeys :: Array PrivateKeyResponse - , nodeSocketPath :: FilePath - , nodeConfigPath :: FilePath - , keysDirectory :: FilePath - } - -data ClusterStartupFailureReason - = ClusterIsRunningAlready - | NegativeLovelaces - | NodeConfigNotFound - -derive instance Generic ClusterStartupFailureReason _ - -instance Show ClusterStartupFailureReason where - show = genericShow - -instance DecodeAeson ClusterStartupFailureReason where - decodeAeson aeson = do - decodeAeson aeson >>= case _ of - "ClusterIsRunningAlready" -> do - pure ClusterIsRunningAlready - "NegativeLovelaces" -> pure NegativeLovelaces - "NodeConfigNotFound" -> pure NodeConfigNotFound - _ -> do - Left (UnexpectedValue (toStringifiedNumbersJson aeson)) - -data StartClusterResponse - = ClusterStartupFailure ClusterStartupFailureReason - | ClusterStartupSuccess ClusterStartupParameters - -derive instance Generic StartClusterResponse _ - -instance Show StartClusterResponse where - show = genericShow - -instance DecodeAeson StartClusterResponse where - decodeAeson aeson = do - obj <- decodeAeson aeson - obj .: "tag" >>= case _ of - "ClusterStartupSuccess" -> do - contents <- obj .: "contents" - ClusterStartupSuccess <$> decodeAeson contents - "ClusterStartupFailure" -> do - failure <- obj .: "contents" - ClusterStartupFailure <$> decodeAeson failure - _ -> do - Left (UnexpectedValue (toStringifiedNumbersJson aeson)) - -data StopClusterRequest = StopClusterRequest - -derive instance Generic StopClusterRequest _ - -instance Show StopClusterRequest where - show = genericShow - -instance EncodeAeson StopClusterRequest where - encodeAeson _ = encodeAeson ([] :: Array Int) - -data StopClusterResponse = StopClusterSuccess | StopClusterFailure ErrorMessage - -derive instance Generic StopClusterResponse _ - -instance Show StopClusterResponse where - show = genericShow - -instance DecodeAeson StopClusterResponse where - decodeAeson aeson = do - obj <- decodeAeson aeson - obj .: "tag" >>= case _ of - "StopClusterSuccess" -> pure StopClusterSuccess - "StopClusterFailure" -> do - failure <- obj .: "contents" - StopClusterFailure <$> decodeAeson failure - _ -> do - Left (UnexpectedValue (toStringifiedNumbersJson aeson)) diff --git a/src/Internal/Plutip/Utils.purs b/src/Internal/Plutip/Utils.purs deleted file mode 100644 index 3d5195606..000000000 --- a/src/Internal/Plutip/Utils.purs +++ /dev/null @@ -1,423 +0,0 @@ -module Ctl.Internal.Plutip.Utils - ( mkDirIfNotExists - , runCleanup - , tmpdir - , annotateError - , cleanupOnExit - , EventSource(EventSource) - , onLine - , makeEventSource - , narrowEventSource - , waitForEvent - , addCleanup - , scheduleCleanup - , after - , whenError - , suppressAndLogErrors - , tryAndLogErrors - , waitForBeforeExit - , waitForClose - , waitForError - , waitForExit - , waitForUncaughtException - , waitUntil - ) where - -import Contract.Prelude - -import Control.Alt ((<|>)) -import Control.Monad.Error.Class (class MonadError, catchError, throwError) -import Control.Monad.Rec.Class - ( Step(Done, Loop) - , tailRecM - ) -import Control.Parallel - ( parallel - , sequential - ) -import Ctl.Internal.Plutip.Spawn - ( ManagedProcess(ManagedProcess) - , OnSignalRef - , removeOnSignal - , waitForSignal - ) -import Ctl.Internal.QueryM.UniqueId (uniqueId) -import Data.Array as Array -import Data.Map as Map -import Data.Posix.Signal (Signal(SIGINT)) -import Data.Time.Duration (Milliseconds) -import Effect (Effect) -import Effect.Aff (try) -import Effect.Aff as Aff -import Effect.Class (class MonadEffect) -import Effect.Exception (Error, error, message) -import Effect.Random (randomInt) -import Effect.Ref (Ref) -import Effect.Ref as Ref -import Node.ChildProcess as Node.ChildProcess -import Node.FS.Sync as FS -import Node.Path (FilePath) -import Node.Process as Process -import Node.ReadLine as RL -import Node.Stream (Readable) - --- TODO: remove this function when PS bindings for os.tmpdir are available. --- https://github.com/Plutonomicon/cardano-transaction-lib/issues/726 -foreign import tmpdir :: Effect String - -foreign import setLineHandler - :: RL.Interface -> (String -> Effect Unit) -> Effect OnSignalRef - -foreign import setCloseHandler - :: RL.Interface -> Effect Unit -> Effect OnSignalRef - -foreign import setErrorHandler - :: RL.Interface -> (Error -> Effect Unit) -> Effect OnSignalRef - -foreign import onBeforeExit - :: Effect Unit -> Effect OnSignalRef - -foreign import onExit - :: (Int -> Effect Unit) -> Effect OnSignalRef - -foreign import onUncaughtException - :: (Error -> Effect Unit) -> Effect OnSignalRef - -suppressAndLogErrors - :: forall m. MonadEffect m => MonadError Error m => String -> m Unit -> m Unit -suppressAndLogErrors location = flip catchError $ message - >>> append ("An error occured and suppressed at " <> location <> ": ") - >>> log - --- | Waits until processe's stdout closes. --- Assuming this means that process is closed as well. -waitForClose :: ManagedProcess -> Aff Unit -waitForClose (ManagedProcess _ child _) = do - interface <- liftEffect - $ flip RL.createInterface mempty - $ Node.ChildProcess.stdout child - Aff.makeAff \cont -> do - { cancel } <- withOneShotHandler \{ justOnce } -> - setCloseHandler interface $ justOnce $ cont $ Right unit - pure $ Aff.Canceler \err -> liftEffect do - cancel - cont $ Left $ appendErrorMessage "waitForClose has been canceled" err - --- | Waits until processe's stdout closes. --- Assuming this means that process is closed as well. -waitForError :: ManagedProcess -> Aff Error -waitForError (ManagedProcess _ child _) = do - interface <- liftEffect - $ flip RL.createInterface mempty - $ Node.ChildProcess.stdout child - Aff.makeAff \cont -> do - { cancel } <- withOneShotHandler \{ justOnce } -> - setErrorHandler interface \err -> justOnce $ cont $ Right err - pure $ Aff.Canceler \err -> liftEffect do - cancel - cont $ Left $ appendErrorMessage "waitForClose has been canceled" err - -tryAndLogErrors - :: forall a m - . MonadEffect m - => MonadError Error m - => String - -> m a - -> m (Either Error a) -tryAndLogErrors location = try >=> case _ of - Left err -> do - log $ "An error occured and suppressed at " <> location <> ": " <> message - err - pure $ Left err - Right a -> pure $ Right a - -mkDirIfNotExists :: FilePath -> Effect Unit -mkDirIfNotExists dirName = do - exists <- FS.exists dirName - unless exists $ FS.mkdir dirName - -runCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -runCleanup cleanupRef = do - log "Cleaning up" - cleanups <- liftEffect do - cleanups <- Ref.read cleanupRef - Ref.write [] cleanupRef - pure cleanups - if null cleanups then log "No cleanup needed" - else do - sequence_ $ suppressAndLogErrors "runCleanup" <$> cleanups - log "Cleanup finished" - -waitForBeforeExit :: Aff Unit -waitForBeforeExit = Aff.makeAff \cont -> do - { cancel } <- withOneShotHandler \{ justOnce } -> onBeforeExit $ justOnce do - log "ON BEFORE EXIT" - cont $ Right unit - pure $ Aff.Canceler \err -> liftEffect do - cancel - suppressAndLogErrors "waitForBeforeExit" $ cont $ Left err - --- | Specifically for nodejs handlers: --- Makes sure that the callback is called at most once, and unregistering it --- on cancelation and on the first call. -withOneShotHandler - :: ({ justOnce :: Effect Unit -> Effect Unit } -> Effect OnSignalRef) - -> Effect { cancel :: Effect Unit } -withOneShotHandler with = do - removeHandler <- Ref.new mempty - isClosedRef <- Ref.new false - let - cancel = do - join $ Ref.read removeHandler - Ref.write true isClosedRef - handle <- with - { justOnce: \oneShotHandler -> do - -- otherwise it may be triggered multiple times, for unknown reason - Ref.read isClosedRef >>= flip unless do - cancel - oneShotHandler - } - Ref.write (removeOnSignal handle) removeHandler - pure { cancel } - -waitForUncaughtException :: Aff Error -waitForUncaughtException = Aff.makeAff \cont -> do - n <- randomInt 0 100 - { cancel } <- withOneShotHandler \{ justOnce } -> - onUncaughtException \err -> justOnce do - log $ "ON UNCAUGHT EXCEPTION " <> show n - cont $ Right err - pure $ Aff.Canceler \err -> liftEffect do - cancel - suppressAndLogErrors "waitForUncaughtException" $ cont $ Left err - -waitUntil :: forall a. Milliseconds -> Aff (Maybe a) -> Aff a -waitUntil checkingInterval fa = flip tailRecM unit \_ -> - fa >>= case _ of - Nothing -> do - Aff.delay checkingInterval - pure $ Loop unit - Just x -> pure $ Done x - -waitForExit :: Aff Int -waitForExit = Aff.makeAff \cont -> do - { cancel } <- withOneShotHandler \{ justOnce } -> onExit \exitcode -> justOnce - do - cont $ Right exitcode - pure $ Aff.Canceler \err -> liftEffect do - cancel - suppressAndLogErrors "waitForExit" $ cont $ Left err - -newtype EventSource b = EventSource - { subscribe :: - ( { unsubscribe :: Effect Unit - , event :: Either Error b - } - -> Effect Unit - ) - -> Effect (Either Error { unsubscribe :: Effect Unit }) - , cancel :: Error -> Effect Unit - } - --- | Waits for any event. Note, if the event source throws an async error, any joining process dies. -waitForEvent :: forall a. EventSource a -> Aff a -waitForEvent (EventSource { subscribe }) = annotateError "waitForEvent" $ - Aff.makeAff \cont -> do - subscriptionResult <- subscribe \{ unsubscribe, event } -> do - unsubscribe - cont event - case subscriptionResult of - Right { unsubscribe } -> pure $ Aff.Canceler \err -> liftEffect do - unsubscribe - cont $ Left $ appendErrorMessage "waitForEvent:canceled" err - Left subError -> do - suppressAndLogErrors "waitForEvent:badSubscription" - $ cont - $ Left - $ appendErrorMessage "Failed to subscribe" subError - pure Aff.nonCanceler - -onLine - :: forall a b - . Readable a - -> (String -> Maybe b) - -> Effect (EventSource b) -onLine readable = - map _.eventSource <<< makeEventSource \{ handle: mainHandler } -> do - interface <- RL.createInterface readable mempty - handlers <- Ref.new [] - lineHandler <- setLineHandler interface \x -> do - void - $ suppressAndLogErrors "onLine:setLineHandler" - $ mainHandler - $ Right x - let - cancel = \err -> do - Ref.read handlers >>= traverse_ (try <<< removeOnSignal) - void - $ suppressAndLogErrors "onLine:cancel" - $ mainHandler - $ Left err - closeHandler <- setCloseHandler interface - $ cancel - $ error "Line event source has been closed." - errorHandler <- setErrorHandler interface cancel - Ref.write [ lineHandler, closeHandler, errorHandler ] handlers - pure - { outcome: unit - , unsubscribe: do - cancel $ error "Unsubscribed from line event." - } - --- | Create an event source based on another event source, but --- with smaller variety of events. -narrowEventSource - :: forall a b - . (a -> Maybe b) - -> EventSource a - -> Effect (EventSource b) -narrowEventSource filter (EventSource source) = annotateError - "narrowEventSource" - do - { eventSource: new - , outcome: subscriptionResult -- this goes from the source - } <- flip makeEventSource filter \{ handle } -> - do -- this is how new event source subscribe on the source - source.subscribe (handle <<< _.event) >>= case _ of - Left err -> pure - { outcome: Left err -- this is not for makeEventSource - , unsubscribe: pure unit -- how do 'new' unsubscribe from the 'source' - } - Right { unsubscribe: unsubFromSource } -> pure - { outcome: Right unit -- this is not for makeEventSource - , unsubscribe: unsubFromSource -- how do 'new' unsubscribe from the 'source' - } - liftEither subscriptionResult - pure new - -makeEventSource - :: forall a b c - . ( { handle :: Either Error a -> Effect Unit } - -> Effect { unsubscribe :: Effect Unit, outcome :: c } - ) - -> (a -> Maybe b) - -> Effect { eventSource :: EventSource b, outcome :: c } -makeEventSource subscribeOnEvents filter = annotateError "make event source" do - handlers <- Ref.new $ Map.fromFoldable [] - isCanceled <- Ref.new false - cancelRef <- Ref.new mempty - let - markCanceled = Ref.write true isCanceled - cancel error = Ref.read cancelRef >>= (_ $ error) - subscribe handler = do - Ref.read isCanceled >>= - if _ then - pure $ Left $ error "Event source is closed." - else do - id <- uniqueId "sub" - let unsubscribe = Ref.modify_ (Map.delete id) handlers - _ <- Ref.modify_ - (Map.insert id \event -> handler { unsubscribe, event }) - handlers - pure $ Right { unsubscribe } - - { unsubscribe, outcome } <- subscribeOnEvents - { handle: \ea -> case ea of - Left error -> cancel error - Right a -> case filter a of - Just b -> do - Ref.read handlers >>= traverse_ (_ $ Right b) - Nothing -> pure unit - } - flip Ref.write cancelRef \error -> do - Ref.write mempty cancelRef -- canceler may be called only once - unsubscribe - markCanceled - Ref.read handlers >>= traverse_ \cont -> - void $ suppressAndLogErrors "makeEventSource:cancel" $ cont $ Left error - Ref.write (Map.fromFoldable []) handlers - - pure - { eventSource: EventSource { cancel, subscribe } - , outcome - } - -cleanupOnExit - :: Ref (Array (Aff Unit)) - -> Aff { fiber :: Aff.Fiber Unit } -cleanupOnExit cleanupRef = do - log "Cleanup scheduled" - let - handle handlers = do - handler <- sequential do - ( handlers.onExit - <$> parallel waitForExit - ) - <|> - ( handlers.onUncaughtException - <$> parallel waitForUncaughtException - ) - <|> - ( handlers.onBeforeExit - <$ parallel waitForBeforeExit - ) - <|> - ( handlers.onWaitForSignal - <$ parallel (waitForSignal SIGINT) - ) - handler - cleanup triggeredBy = do - log $ "Running cleanup on " <> triggeredBy - runCleanup cleanupRef - - fiber <- Aff.forkAff $ handle - { onExit: \code -> cleanup $ "exit with " <> show code - , onUncaughtException: \err -> do - cleanup "uncaught exception" - log $ "Failing irrecoverably after the cleanup after error: " <> show - err - liftEffect $ Process.exit 7 -- Failing irrecoverably - , onBeforeExit: cleanup "before exit" - , onWaitForSignal: cleanup "SIGINT" - } - pure { fiber } - -addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit -addCleanup = map void <<< flip - (Ref.modify <<< Array.cons <<< suppressAndLogErrors "[addCleanup][error]: ") - -scheduleCleanup - :: forall a - . Ref (Array (Aff Unit)) - -> Aff a - -> (a -> Aff Unit) - -> Aff a -scheduleCleanup cleanupRef create cleanup = - after create $ liftEffect <<< addCleanup cleanupRef <<< cleanup - --- Similar to `catchError` but preserves the error -whenError :: forall (a :: Type). Aff Unit -> Aff a -> Aff a -whenError whenErrorAction action = do - res <- try action - when (isLeft res) whenErrorAction - liftEither res - --- | Just as a bracket but without the body. -after :: forall a. Aff a -> (a -> Aff Unit) -> Aff a -after first second = Aff.bracket first second pure - -annotateError - :: forall (a :: Type) m - . MonadError Error m - => String - -> m a - -> m a -annotateError withPrefix action = - catchError action $ throwError <<< appendErrorMessage withPrefix - -appendErrorMessage - :: String - -> Error - -> Error -appendErrorMessage withPrefix = - error <<< append (withPrefix <> ": ") <<< message diff --git a/src/Internal/Plutip/PortCheck.js b/src/Internal/Spawn.js similarity index 50% rename from src/Internal/Plutip/PortCheck.js rename to src/Internal/Spawn.js index dedb2434a..cb5140b3a 100644 --- a/src/Internal/Plutip/PortCheck.js +++ b/src/Internal/Spawn.js @@ -1,5 +1,36 @@ +"use strict"; + +import stream from "node:stream"; import net from "net"; +export function clearLineHandler(readline) { + return () => { + readline.removeAllListeners("line"); + }; +} + +export const readableFromBuffer = buf => () => + stream.Readable.from(buf, { objectMode: false }); + +import fs from "fs"; + +export function _rmdirSync(path) { + return () => fs.rmSync(path, { recursive: true }); +} + +export function removeOnSignal({ signal, callback }) { + return () => { + process.removeListener(signal, callback); + }; +} + +export function onSignalImpl(signal) { + return callback => () => { + process.on(signal, callback); + return { signal, callback }; + }; +} + export function _isPortAvailable(port) { return () => new Promise((resolve, reject) => { diff --git a/src/Internal/Plutip/Spawn.purs b/src/Internal/Spawn.purs similarity index 96% rename from src/Internal/Plutip/Spawn.purs rename to src/Internal/Spawn.purs index 2e3ce6c43..7c9a08ef4 100644 --- a/src/Internal/Plutip/Spawn.purs +++ b/src/Internal/Spawn.purs @@ -1,7 +1,7 @@ -- | This module provides ability to spawn a program using `spawn` and wait -- | for some specific output that indicates that the program has started -- | successfully or failed, in which case an exception is thrown. -module Ctl.Internal.Plutip.Spawn +module Ctl.Internal.Spawn ( NewOutputAction(NoOp, Success, Cancel) , OnSignalRef , ManagedProcess(ManagedProcess) @@ -13,15 +13,16 @@ module Ctl.Internal.Plutip.Spawn , cleanupOnSigint , removeOnSignal , waitForSignal + , isPortAvailable , killProcessWithPort , _rmdirSync + , FilePath ) where import Contract.Prelude import Control.Monad.Error.Class (liftMaybe, throwError) -import Ctl.Internal.Plutip.PortCheck (isPortAvailable) -import Ctl.Internal.Plutip.Types (FilePath) +import Control.Promise (Promise, toAffE) import Data.Either (Either(Left)) import Data.Foldable (foldMap) import Data.Maybe (Maybe(Just, Nothing)) @@ -237,3 +238,10 @@ cleanupTmpDir :: ManagedProcess -> FilePath -> Effect Unit cleanupTmpDir (ManagedProcess _ child _) workingDir = do ChildProcess.onExit child \_ -> do _rmdirSync workingDir + +type FilePath = String + +foreign import _isPortAvailable :: Int -> Effect (Promise Boolean) + +isPortAvailable :: UInt -> Aff Boolean +isPortAvailable = toAffE <<< _isPortAvailable <<< UInt.toInt diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 2ff1243a3..b5bf55cbe 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -3,6 +3,7 @@ module Ctl.Internal.Testnet.Contract , runTestnetTestPlan , testTestnetContracts , withTestnetContractEnv + , execDistribution ) where import Contract.Prelude @@ -48,8 +49,6 @@ import Control.Monad.State (State, execState, modify_) import Control.Monad.Trans.Class (lift) import Control.Monad.Writer (censor, execWriterT, tell) import Control.Parallel (parTraverse) -import Ctl.Internal.Plutip.Server (makeClusterContractEnv) -import Ctl.Internal.Plutip.Utils (cleanupOnExit, runCleanup, whenError) import Ctl.Internal.Test.ContractTest ( ContractTest(ContractTest) , ContractTestPlan(ContractTestPlan) @@ -63,9 +62,18 @@ import Ctl.Internal.Test.UtxoDistribution ) import Ctl.Internal.Testnet.DistributeFundsV2 (DistrFundsParams) import Ctl.Internal.Testnet.DistributeFundsV2 (Tx(Tx), makeDistributionPlan) as DistrFunds -import Ctl.Internal.Testnet.Server (StartedTestnetCluster, startTestnetCluster) +import Ctl.Internal.Testnet.Server + ( StartedTestnetCluster + , makeClusterContractEnv + , startTestnetCluster + ) import Ctl.Internal.Testnet.Types (TestnetConfig) -import Ctl.Internal.Testnet.Utils (read872GenesisKey) +import Ctl.Internal.Testnet.Utils + ( cleanupOnExit + , read872GenesisKey + , runCleanup + , whenError + ) import Ctl.Internal.Wallet.Key (KeyWallet) import Data.Array (concat, fromFoldable, zip) as Array import Data.Map (values) as Map @@ -171,7 +179,7 @@ runTestnetTestPlan cfg (ContractTestPlan runContractTestPlan) = do -- | combined distribution. -- | NOTE: Skipped tests still have their distribution generated. -- | This is the current method of constructing all the wallets with required distributions --- | in one go during Plutip startup. +-- | in one go during TestNet startup. execDistribution :: TestPlanM ContractTest Unit -> Aff ContractTestPlan execDistribution (MoteT mote) = execWriterT mote <#> go where diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 717944c54..6e335baa5 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -1,33 +1,57 @@ module Ctl.Internal.Testnet.Server ( Channels , StartedTestnetCluster(MkStartedTestnetCluster) + , startKupo + , startOgmios , startTestnetCluster + , makeClusterContractEnv ) where import Contract.Prelude +import Cardano.Types (NetworkId(MainnetId)) +import Contract.Config (Hooks, defaultSynchronizationParams, defaultTimeParams) +import Contract.Monad (ContractEnv) import Control.Alt ((<|>)) import Control.Apply (applySecond) import Control.Monad.Error.Class (throwError) import Control.Monad.Rec.Class (Step(Loop), tailRecM) -import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Server - ( startKupo - , startOgmios - , stopChildProcessWithPort +import Ctl.Internal.Contract.Monad + ( buildBackend + , getLedgerConstants + , mkQueryHandle + , stopContractEnv ) -import Ctl.Internal.Plutip.Spawn +import Ctl.Internal.Contract.QueryBackend (mkCtlBackendParams) +import Ctl.Internal.Helpers ((<>)) +import Ctl.Internal.Logging (Logger, mkLogger, setupLogs) +import Ctl.Internal.QueryM.UniqueId (uniqueId) +import Ctl.Internal.ServerConfig (ServerConfig) +import Ctl.Internal.Spawn ( ManagedProcess(ManagedProcess) , NewOutputAction(NoOp, Success) , _rmdirSync + , isPortAvailable , killProcessWithPort , spawn + , stop ) -import Ctl.Internal.Plutip.Utils +import Ctl.Internal.Testnet.Types + ( Node + , TestnetClusterConfig + , TestnetConfig + , TestnetPaths + ) +import Ctl.Internal.Testnet.Utils ( EventSource , addCleanup + , after , annotateError + , findNodeDirs + , findTestnetPaths + , getRuntime , onLine + , readNodes , runCleanup , scheduleCleanup , suppressAndLogErrors @@ -38,33 +62,33 @@ import Ctl.Internal.Plutip.Utils , waitForEvent , waitUntil ) -import Ctl.Internal.Testnet.Types - ( Node - , TestnetClusterConfig - , TestnetConfig - , TestnetPaths - ) -import Ctl.Internal.Testnet.Utils - ( findNodeDirs - , findTestnetPaths - , getRuntime - , readNodes - ) +import Ctl.Internal.Types.UsedTxOuts (newUsedTxOuts) +import Data.Log.Message (Message) import Data.Maybe (Maybe(Nothing, Just)) -import Data.String (Pattern(Pattern)) +import Data.Set as Set import Data.String (stripPrefix, trim) as String +import Data.String.CodeUnits (indexOf) as String +import Data.String.Pattern (Pattern(Pattern)) import Data.Time.Duration (Milliseconds(Milliseconds)) +import Data.UInt (UInt) import Data.UInt (toString) as UInt import Debug (spy) import Effect.Aff (Aff) import Effect.Aff as Aff -import Effect.Exception (Error, error) +import Effect.Aff.Retry + ( RetryPolicy + , constantDelay + , limitRetriesByCumulativeDelay + , recovering + ) +import Effect.Exception (Error, error, throw) import Effect.Ref (Ref) -import Effect.Ref (new, read, write) as Ref +import Effect.Ref (modify_, new, read, write) as Ref import Foreign.Object as Object import Node.ChildProcess (defaultSpawnOptions) import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(UTF8)) +import Node.FS.Sync (exists, mkdir) as FSSync import Node.FS.Sync as Node.FS import Node.Path (FilePath) import Node.Process as Node.Process @@ -93,9 +117,96 @@ newtype StartedTestnetCluster = MkStartedTestnetCluster derive instance Newtype StartedTestnetCluster _ --- | Start the plutip cluster, initializing the state with the given +startOgmios + :: forall r r' + . { ogmiosConfig :: ServerConfig | r } + -> { nodeSocketPath :: FilePath + , nodeConfigPath :: FilePath + | r' + } + -> Aff ManagedProcess +startOgmios cfg params = do + spawn "ogmios" ogmiosArgs defaultSpawnOptions + $ Just + $ _.output + >>> String.indexOf (Pattern "networkParameters") + >>> maybe NoOp (const Success) + >>> pure + where + ogmiosArgs :: Array String + ogmiosArgs = + [ "--host" + , cfg.ogmiosConfig.host + , "--port" + , UInt.toString cfg.ogmiosConfig.port + , "--node-socket" + , params.nodeSocketPath + , "--node-config" + , params.nodeConfigPath + , "--include-transaction-cbor" + ] + +startKupo + :: forall r r' + . { kupoConfig :: ServerConfig | r } + -> { nodeSocketPath :: FilePath + , nodeConfigPath :: FilePath + | r' + } + -> Ref (Array (Aff Unit)) + -> Aff (ManagedProcess /\ String) +startKupo cfg params cleanupRef = do + tmpDir <- liftEffect tmpdir + randomStr <- liftEffect $ uniqueId "" + let + workdir = tmpDir <> randomStr <> "-kupo-db" + liftEffect do + workdirExists <- FSSync.exists workdir + unless workdirExists (FSSync.mkdir workdir) + childProcess <- + after + (spawnKupoProcess workdir) + -- set up cleanup + $ const + $ liftEffect + $ addCleanup cleanupRef + $ liftEffect + $ _rmdirSync workdir + pure (childProcess /\ workdir) + where + spawnKupoProcess :: FilePath -> Aff ManagedProcess + spawnKupoProcess workdir = + spawn "kupo" (kupoArgs workdir) defaultSpawnOptions $ + Just + ( _.output >>> String.indexOf outputString + >>> maybe NoOp (const Success) + >>> pure + ) + where + outputString :: Pattern + outputString = Pattern "ConfigurationCheckpointsForIntersection" + + kupoArgs :: FilePath -> Array String + kupoArgs workdir = + [ "--match" + , "*/*" + , "--since" + , "origin" + , "--workdir" + , workdir + , "--host" + , cfg.kupoConfig.host + , "--port" + , UInt.toString cfg.kupoConfig.port + , "--node-socket" + , params.nodeSocketPath + , "--node-config" + , params.nodeConfigPath + ] + +-- | Start the testnet cluster, initializing the state with the given -- | UTxO distribution. Also initializes an extra payment key (aka --- | `ourKey`) with some UTxOs for use with further plutip +-- | `ourKey`) with some UTxOs for use with further testnet -- | setup. `ourKey` has funds proportional to the total amount of the -- | UTxOs in the passed distribution, so it can be used to handle -- | transaction fees. @@ -352,3 +463,138 @@ redirectLogging events { handleLine, storeLogs } = for storeLogs \{ logFile, toString } -> Node.FS.appendTextFile UTF8 logFile $ toString line <> "\n" pure $ Loop unit + +type ClusterConfig r = + ( ogmiosConfig :: ServerConfig + , kupoConfig :: ServerConfig + , hooks :: Hooks + | LogParams r + ) + +-- | TODO: Replace original log params with the row type +type LogParams r = + ( logLevel :: LogLevel + , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) + , suppressLogs :: Boolean + | r + ) + +-- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run +-- later. +cleanupBracket + :: forall (a :: Type) (b :: Type) + . Ref (Array (Aff Unit)) + -> Aff a + -> (a -> Aff Unit) + -> (a -> Aff b) + -> Aff b +cleanupBracket cleanupRef before after action = do + Aff.bracket + before + (\res -> liftEffect $ Ref.modify_ ([ after res ] <> _) cleanupRef) + action + +mkLogging + :: forall r + . Record (LogParams r) + -> Effect + { updatedConfig :: Record (LogParams r) + , logger :: Logger + , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) + , printLogs :: Aff Unit + , clearLogs :: Aff Unit + } +mkLogging cfg + | cfg.suppressLogs = ado + -- if logs should be suppressed, setup the machinery and continue with + -- the bracket + { addLogEntry, suppressedLogger, printLogs, clearLogs } <- + setupLogs cfg.logLevel cfg.customLogger + let + configLogger = Just $ map liftEffect <<< addLogEntry + in + { updatedConfig: cfg { customLogger = configLogger } + , logger: suppressedLogger + , customLogger: configLogger + , printLogs: liftEffect printLogs + , clearLogs: liftEffect clearLogs + } + | otherwise = pure + -- otherwise, proceed with the env setup and provide a normal logger + { updatedConfig: cfg + , logger: mkLogger cfg.logLevel cfg.customLogger + , customLogger: cfg.customLogger + , printLogs: pure unit + , clearLogs: pure unit + } + +makeNaiveClusterContractEnv + :: forall r + . Record (ClusterConfig r) + -> Logger + -> Maybe (LogLevel -> Message -> Aff Unit) + -> Aff ContractEnv +makeNaiveClusterContractEnv cfg logger customLogger = do + usedTxOuts <- newUsedTxOuts + backend <- buildBackend logger $ mkCtlBackendParams + { ogmiosConfig: cfg.ogmiosConfig + , kupoConfig: cfg.kupoConfig + } + ledgerConstants <- getLedgerConstants + cfg { customLogger = customLogger } + backend + backendKnownTxs <- liftEffect $ Ref.new Set.empty + pure + { backend + , handle: mkQueryHandle cfg backend + , networkId: MainnetId + , logLevel: cfg.logLevel + , customLogger: customLogger + , suppressLogs: cfg.suppressLogs + , hooks: cfg.hooks + , wallet: Nothing + , usedTxOuts + , ledgerConstants + -- timeParams have no effect when KeyWallet is used + , timeParams: defaultTimeParams + , synchronizationParams: defaultSynchronizationParams + , knownTxs: { backend: backendKnownTxs } + } + +-- | Makes cluster ContractEnv with configured logs suppression and cleanup scheduled. +makeClusterContractEnv + :: forall r + . Ref (Array (Aff Unit)) + -> Record (ClusterConfig r) + -> Aff + { env :: ContractEnv + , clearLogs :: Aff Unit + , printLogs :: Aff Unit + } +makeClusterContractEnv cleanupRef cfg = do + { updatedConfig + , logger + , customLogger + , printLogs + , clearLogs + } <- liftEffect $ mkLogging cfg + cleanupBracket + cleanupRef + (makeNaiveClusterContractEnv updatedConfig logger customLogger) + stopContractEnv + $ pure + <<< { env: _, printLogs, clearLogs } + +-- | Kill a process and wait for it to stop listening on a specific port. +stopChildProcessWithPort :: UInt -> ManagedProcess -> Aff Unit +stopChildProcessWithPort port childProcess = do + stop childProcess + void $ recovering defaultRetryPolicy ([ \_ _ -> pure true ]) + \_ -> do + isAvailable <- isPortAvailable port + unless isAvailable do + liftEffect $ throw "retry" + +defaultRetryPolicy :: RetryPolicy +defaultRetryPolicy = limitRetriesByCumulativeDelay (Milliseconds 3000.00) $ + constantDelay (Milliseconds 100.0) diff --git a/src/Internal/Plutip/Utils.js b/src/Internal/Testnet/Utils.js similarity index 100% rename from src/Internal/Plutip/Utils.js rename to src/Internal/Testnet/Utils.js diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index 8a0c0cd02..429372e6c 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -1,16 +1,33 @@ module Ctl.Internal.Testnet.Utils ( find811TestnetWorkir , findNodeDirs + , EventSource(EventSource) + , onLine + , makeEventSource , findTestnetPaths , getNodePort , getRuntime + , scheduleCleanup + , addCleanup + , tmpdir + , runCleanup + , tryAndLogErrors + , suppressAndLogErrors + , after , is811TestnetDirectoryName , onTestnetEvent , parseEvent , readNodes , read872GenesisKey + , whenError , waitFor + , waitForClose + , waitForError + , waitForEvent + , waitUntil , waitForTestnet872Workdir + , cleanupOnExit + , annotateError ) where import Contract.Prelude @@ -21,20 +38,24 @@ import Contract.TextEnvelope , TextEnvelopeType(PaymentSigningKeyShelleyed25519) , decodeTextEnvelope ) -import Contract.Wallet.KeyFile - ( privatePaymentKeyFromTextEnvelope - ) +import Contract.Wallet.KeyFile (privatePaymentKeyFromTextEnvelope) +import Control.Alt ((<|>)) import Control.Monad.Error.Class - ( liftMaybe + ( class MonadError + , catchError + , liftMaybe , throwError ) import Control.Monad.Except (lift, runExceptT) import Control.Monad.Rec.Class (Step(Done, Loop), tailRecM) +import Control.Parallel (parallel, sequential) import Ctl.Internal.Helpers ((<>)) -import Ctl.Internal.Plutip.Utils - ( EventSource - , narrowEventSource - , waitForEvent +import Ctl.Internal.QueryM.UniqueId (uniqueId) +import Ctl.Internal.Spawn + ( ManagedProcess(ManagedProcess) + , OnSignalRef + , removeOnSignal + , waitForSignal ) import Ctl.Internal.Testnet.Types ( Event(Ready872, Finished, StartupFailed) @@ -47,16 +68,29 @@ import Ctl.Internal.Testnet.Types ) import Data.Array as Array import Data.Int as Int +import Data.Map as Map +import Data.Posix.Signal (Signal(SIGINT)) import Data.String (Pattern(Pattern)) import Data.String as String +import Data.Time.Duration (Milliseconds) import Data.UInt (UInt) import Data.UInt as UInt -import Effect.Exception (Error, error) +import Effect.Aff (try) +import Effect.Aff as Aff +import Effect.Class (class MonadEffect) +import Effect.Exception (Error, error, message) +import Effect.Random (randomInt) +import Effect.Ref (Ref) +import Effect.Ref as Ref +import Node.ChildProcess as Node.ChildProcess import Node.Encoding (Encoding(UTF8)) import Node.Encoding as Node.Encoding import Node.FS.Sync as Node.FS import Node.FS.Sync as Node.FS.Sync import Node.Path (FilePath) +import Node.Process as Process +import Node.ReadLine as RL +import Node.Stream (Readable) -- | For cardano-node 8.1.1 is811TestnetDirectoryName :: Int -> FilePath -> Boolean @@ -65,10 +99,10 @@ is811TestnetDirectoryName n = find811TestnetWorkir :: { tmpdir :: FilePath, dirIdx :: Int } -> Effect (Maybe FilePath) -find811TestnetWorkir { tmpdir, dirIdx } = - map (tmpdir <> _) +find811TestnetWorkir { tmpdir: tmpDir, dirIdx } = + map (tmpDir <> _) <<< Array.find (is811TestnetDirectoryName dirIdx) - <$> Node.FS.readdir tmpdir + <$> Node.FS.readdir tmpDir waitForTestnet872Workdir :: EventSource String -> { tmpdir :: FilePath } -> Aff { workdir :: FilePath } @@ -77,10 +111,10 @@ waitForTestnet872Workdir src = map { workdir: _ } <<< parseTestnet872Workdir parseTestnet872Workdir :: { tmpdir :: FilePath } -> String -> Maybe FilePath -parseTestnet872Workdir { tmpdir } = String.stripPrefix +parseTestnet872Workdir { tmpdir: tmpDir } = String.stripPrefix $ Pattern $ " Workspace: " - <> tmpdir + <> tmpDir <> "/" parseEvent :: String -> Maybe Event @@ -218,3 +252,359 @@ findTestnetPaths { workdir } = runExceptT do , genesisKeys , nodeDirs } + +makeEventSource + :: forall a b c + . ( { handle :: Either Error a -> Effect Unit } + -> Effect { unsubscribe :: Effect Unit, outcome :: c } + ) + -> (a -> Maybe b) + -> Effect { eventSource :: EventSource b, outcome :: c } +makeEventSource subscribeOnEvents filter = annotateError "make event source" do + handlers <- Ref.new $ Map.fromFoldable [] + isCanceled <- Ref.new false + cancelRef <- Ref.new mempty + let + markCanceled = Ref.write true isCanceled + cancel error = Ref.read cancelRef >>= (_ $ error) + subscribe handler = do + Ref.read isCanceled >>= + if _ then + pure $ Left $ error "Event source is closed." + else do + id <- uniqueId "sub" + let unsubscribe = Ref.modify_ (Map.delete id) handlers + _ <- Ref.modify_ + (Map.insert id \event -> handler { unsubscribe, event }) + handlers + pure $ Right { unsubscribe } + + { unsubscribe, outcome } <- subscribeOnEvents + { handle: \ea -> case ea of + Left error -> cancel error + Right a -> case filter a of + Just b -> do + Ref.read handlers >>= traverse_ (_ $ Right b) + Nothing -> pure unit + } + flip Ref.write cancelRef \error -> do + Ref.write mempty cancelRef -- canceler may be called only once + unsubscribe + markCanceled + Ref.read handlers >>= traverse_ \cont -> + void $ suppressAndLogErrors "makeEventSource:cancel" $ cont $ Left error + Ref.write (Map.fromFoldable []) handlers + + pure + { eventSource: EventSource { cancel, subscribe } + , outcome + } + +addCleanup :: Ref (Array (Aff Unit)) -> Aff Unit -> Effect Unit +addCleanup = map void <<< flip + (Ref.modify <<< Array.cons <<< suppressAndLogErrors "[addCleanup][error]: ") + +scheduleCleanup + :: forall a + . Ref (Array (Aff Unit)) + -> Aff a + -> (a -> Aff Unit) + -> Aff a +scheduleCleanup cleanupRef create cleanup = + after create $ liftEffect <<< addCleanup cleanupRef <<< cleanup + +-- Similar to `catchError` but preserves the error +whenError :: forall (a :: Type). Aff Unit -> Aff a -> Aff a +whenError whenErrorAction action = do + res <- try action + when (isLeft res) whenErrorAction + liftEither res + +-- | Just as a bracket but without the body. +after :: forall a. Aff a -> (a -> Aff Unit) -> Aff a +after first second = Aff.bracket first second pure + +-- | Create an event source based on another event source, but +-- with smaller variety of events. +narrowEventSource + :: forall a b + . (a -> Maybe b) + -> EventSource a + -> Effect (EventSource b) +narrowEventSource filter (EventSource source) = annotateError + "narrowEventSource" + do + { eventSource: new + , outcome: subscriptionResult -- this goes from the source + } <- flip makeEventSource filter \{ handle } -> + do -- this is how new event source subscribe on the source + source.subscribe (handle <<< _.event) >>= case _ of + Left err -> pure + { outcome: Left err -- this is not for makeEventSource + , unsubscribe: pure unit -- how do 'new' unsubscribe from the 'source' + } + Right { unsubscribe: unsubFromSource } -> pure + { outcome: Right unit -- this is not for makeEventSource + , unsubscribe: unsubFromSource -- how do 'new' unsubscribe from the 'source' + } + liftEither subscriptionResult + pure new + +-- TODO: remove this function when PS bindings for os.tmpdir are available. +-- https://github.com/Plutonomicon/cardano-transaction-lib/issues/726 +foreign import tmpdir :: Effect String + +foreign import setLineHandler + :: RL.Interface -> (String -> Effect Unit) -> Effect OnSignalRef + +foreign import setCloseHandler + :: RL.Interface -> Effect Unit -> Effect OnSignalRef + +foreign import setErrorHandler + :: RL.Interface -> (Error -> Effect Unit) -> Effect OnSignalRef + +foreign import onBeforeExit + :: Effect Unit -> Effect OnSignalRef + +foreign import onExit + :: (Int -> Effect Unit) -> Effect OnSignalRef + +foreign import onUncaughtException + :: (Error -> Effect Unit) -> Effect OnSignalRef + +suppressAndLogErrors + :: forall m. MonadEffect m => MonadError Error m => String -> m Unit -> m Unit +suppressAndLogErrors location = flip catchError $ message + >>> append ("An error occured and suppressed at " <> location <> ": ") + >>> log + +newtype EventSource b = EventSource + { subscribe :: + ( { unsubscribe :: Effect Unit + , event :: Either Error b + } + -> Effect Unit + ) + -> Effect (Either Error { unsubscribe :: Effect Unit }) + , cancel :: Error -> Effect Unit + } + +-- | Waits for any event. Note, if the event source throws an async error, any joining process dies. +waitForEvent :: forall a. EventSource a -> Aff a +waitForEvent (EventSource { subscribe }) = annotateError "waitForEvent" $ + Aff.makeAff \cont -> do + subscriptionResult <- subscribe \{ unsubscribe, event } -> do + unsubscribe + cont event + case subscriptionResult of + Right { unsubscribe } -> pure $ Aff.Canceler \err -> liftEffect do + unsubscribe + cont $ Left $ appendErrorMessage "waitForEvent:canceled" err + Left subError -> do + suppressAndLogErrors "waitForEvent:badSubscription" + $ cont + $ Left + $ appendErrorMessage "Failed to subscribe" subError + pure Aff.nonCanceler + +onLine + :: forall a b + . Readable a + -> (String -> Maybe b) + -> Effect (EventSource b) +onLine readable = + map _.eventSource <<< makeEventSource \{ handle: mainHandler } -> do + interface <- RL.createInterface readable mempty + handlers <- Ref.new [] + lineHandler <- setLineHandler interface \x -> do + void + $ suppressAndLogErrors "onLine:setLineHandler" + $ mainHandler + $ Right x + let + cancel = \err -> do + Ref.read handlers >>= traverse_ (try <<< removeOnSignal) + void + $ suppressAndLogErrors "onLine:cancel" + $ mainHandler + $ Left err + closeHandler <- setCloseHandler interface + $ cancel + $ error "Line event source has been closed." + errorHandler <- setErrorHandler interface cancel + Ref.write [ lineHandler, closeHandler, errorHandler ] handlers + pure + { outcome: unit + , unsubscribe: do + cancel $ error "Unsubscribed from line event." + } + +-- | Waits until processe's stdout closes. +-- Assuming this means that process is closed as well. +waitForClose :: ManagedProcess -> Aff Unit +waitForClose (ManagedProcess _ child _) = do + interface <- liftEffect + $ flip RL.createInterface mempty + $ Node.ChildProcess.stdout child + Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> + setCloseHandler interface $ justOnce $ cont $ Right unit + pure $ Aff.Canceler \err -> liftEffect do + cancel + cont $ Left $ appendErrorMessage "waitForClose has been canceled" err + +waitUntil :: forall a. Milliseconds -> Aff (Maybe a) -> Aff a +waitUntil checkingInterval fa = flip tailRecM unit \_ -> + fa >>= case _ of + Nothing -> do + Aff.delay checkingInterval + pure $ Loop unit + Just x -> pure $ Done x + +-- | Waits until processe's stdout closes. +-- Assuming this means that process is closed as well. +waitForError :: ManagedProcess -> Aff Error +waitForError (ManagedProcess _ child _) = do + interface <- liftEffect + $ flip RL.createInterface mempty + $ Node.ChildProcess.stdout child + Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> + setErrorHandler interface \err -> justOnce $ cont $ Right err + pure $ Aff.Canceler \err -> liftEffect do + cancel + cont $ Left $ appendErrorMessage "waitForClose has been canceled" err + +-- | Specifically for nodejs handlers: +-- Makes sure that the callback is called at most once, and unregistering it +-- on cancelation and on the first call. +withOneShotHandler + :: ({ justOnce :: Effect Unit -> Effect Unit } -> Effect OnSignalRef) + -> Effect { cancel :: Effect Unit } +withOneShotHandler with = do + removeHandler <- Ref.new mempty + isClosedRef <- Ref.new false + let + cancel = do + join $ Ref.read removeHandler + Ref.write true isClosedRef + handle <- with + { justOnce: \oneShotHandler -> do + -- otherwise it may be triggered multiple times, for unknown reason + Ref.read isClosedRef >>= flip unless do + cancel + oneShotHandler + } + Ref.write (removeOnSignal handle) removeHandler + pure { cancel } + +waitForBeforeExit :: Aff Unit +waitForBeforeExit = Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> onBeforeExit $ justOnce do + log "ON BEFORE EXIT" + cont $ Right unit + pure $ Aff.Canceler \err -> liftEffect do + cancel + suppressAndLogErrors "waitForBeforeExit" $ cont $ Left err + +waitForUncaughtException :: Aff Error +waitForUncaughtException = Aff.makeAff \cont -> do + n <- randomInt 0 100 + { cancel } <- withOneShotHandler \{ justOnce } -> + onUncaughtException \err -> justOnce do + log $ "ON UNCAUGHT EXCEPTION " <> show n + cont $ Right err + pure $ Aff.Canceler \err -> liftEffect do + cancel + suppressAndLogErrors "waitForUncaughtException" $ cont $ Left err + +waitForExit :: Aff Int +waitForExit = Aff.makeAff \cont -> do + { cancel } <- withOneShotHandler \{ justOnce } -> onExit \exitcode -> justOnce + do + cont $ Right exitcode + pure $ Aff.Canceler \err -> liftEffect do + cancel + suppressAndLogErrors "waitForExit" $ cont $ Left err + +tryAndLogErrors + :: forall a m + . MonadEffect m + => MonadError Error m + => String + -> m a + -> m (Either Error a) +tryAndLogErrors location = try >=> case _ of + Left err -> do + log $ "An error occured and suppressed at " <> location <> ": " <> message + err + pure $ Left err + Right a -> pure $ Right a + +runCleanup :: Ref (Array (Aff Unit)) -> Aff Unit +runCleanup cleanupRef = do + log "Cleaning up" + cleanups <- liftEffect do + cleanups <- Ref.read cleanupRef + Ref.write [] cleanupRef + pure cleanups + if null cleanups then log "No cleanup needed" + else do + sequence_ $ suppressAndLogErrors "runCleanup" <$> cleanups + log "Cleanup finished" + +cleanupOnExit + :: Ref (Array (Aff Unit)) + -> Aff { fiber :: Aff.Fiber Unit } +cleanupOnExit cleanupRef = do + log "Cleanup scheduled" + let + handle handlers = do + handler <- sequential do + ( handlers.onExit + <$> parallel waitForExit + ) + <|> + ( handlers.onUncaughtException + <$> parallel waitForUncaughtException + ) + <|> + ( handlers.onBeforeExit + <$ parallel waitForBeforeExit + ) + <|> + ( handlers.onWaitForSignal + <$ parallel (waitForSignal SIGINT) + ) + handler + cleanup triggeredBy = do + log $ "Running cleanup on " <> triggeredBy + runCleanup cleanupRef + + fiber <- Aff.forkAff $ handle + { onExit: \code -> cleanup $ "exit with " <> show code + , onUncaughtException: \err -> do + cleanup "uncaught exception" + log $ "Failing irrecoverably after the cleanup after error: " <> show + err + liftEffect $ Process.exit 7 -- Failing irrecoverably + , onBeforeExit: cleanup "before exit" + , onWaitForSignal: cleanup "SIGINT" + } + pure { fiber } + +annotateError + :: forall (a :: Type) m + . MonadError Error m + => String + -> m a + -> m a +annotateError withPrefix action = + catchError action $ throwError <<< appendErrorMessage withPrefix + +appendErrorMessage + :: String + -> Error + -> Error +appendErrorMessage withPrefix = + error <<< append (withPrefix <> ": ") <<< message diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index ad0c90735..270972243 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -605,6 +605,18 @@ let installPhase = "ln -s $src $out"; }; + "freet" = pkgs.stdenv.mkDerivation { + name = "freet"; + version = "v7.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/purescript-contrib/purescript-freet.git"; + rev = "21be6fba22599a25812430dda6ba2ca8135920a1"; + sha256 = "006wbr7f19k7vs1jg4wgkwyx1q4wvvs2wqscfcxsp8fzfpn2yqw8"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "functions" = pkgs.stdenv.mkDerivation { name = "functions"; version = "v6.0.0"; @@ -1373,6 +1385,18 @@ let installPhase = "ln -s $src $out"; }; + "safely" = pkgs.stdenv.mkDerivation { + name = "safely"; + version = "v4.0.1"; + src = pkgs.fetchgit { + url = "https://github.com/paf31/purescript-safely.git"; + rev = "19f854737e17b4d058e5a1504a960821db36e4ab"; + sha256 = "1mrpz19smjsamz4cci287z89q715chzxna0gpbvdgivlca4z6879"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "spec" = pkgs.stdenv.mkDerivation { name = "spec"; version = "v7.2.0"; diff --git a/test/Plutip/Common.purs b/test/Plutip/Common.purs index 3cd0304fb..b441db42c 100644 --- a/test/Plutip/Common.purs +++ b/test/Plutip/Common.purs @@ -6,8 +6,7 @@ module Test.Ctl.Plutip.Common import Prelude import Contract.Keys (privateKeyFromBytes) -import Contract.Test.Plutip (defaultPlutipConfig) -import Ctl.Internal.Plutip.Types (PlutipConfig) +import Contract.Test.Plutip (PlutipConfig, defaultPlutipConfig) import Ctl.Internal.Wallet.Key (PrivateStakeKey) import Data.ByteArray (hexToByteArray) import Data.Maybe (fromJust) From 7c865c2b8a5b2e87ab3195286f2c62eddacd0cac Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Wed, 10 Jul 2024 15:12:26 -0300 Subject: [PATCH 285/373] Deprecate `doc/plutip-testing` --- doc/cardano-testnet-testing.md | 3 + doc/plutip-testing.md | 368 +-------------------------------- 2 files changed, 7 insertions(+), 364 deletions(-) create mode 100644 doc/cardano-testnet-testing.md diff --git a/doc/cardano-testnet-testing.md b/doc/cardano-testnet-testing.md new file mode 100644 index 000000000..c755d2bc4 --- /dev/null +++ b/doc/cardano-testnet-testing.md @@ -0,0 +1,3 @@ +# CTL integration with Cardano Testnet + +TODO diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index f3629b055..60932d122 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -1,366 +1,6 @@ # CTL integration with Plutip -[Plutip](https://github.com/mlabs-haskell/plutip) is a tool to run private Cardano testnets. CTL provides integration with Plutip via [`plutip-server` binary](https://github.com/Plutonomicon/cardano-transaction-lib/tree/develop/plutip-server) that exposes an HTTP interface to control local Cardano clusters. - -**Table of Contents** - - - -- [Architecture](#architecture) -- [Testing contracts](#testing-contracts) - - [Testing with Mote](#testing-with-mote) - - [Overview](#overview) - - [Using Mote testing interface](#using-mote-testing-interface) - - [Internal implementation overview](#internal-implementation-overview) - - [Testing in Aff context](#testing-in-aff-context) - - [Sharing wallet state between tests](#sharing-wallet-state-between-tests) - - [Writing checks in tests](#writing-checks-in-tests) - - [Note on running clusters](#note-on-running-clusters) - - [Note on SIGINT](#note-on-sigint) - - [Testing with Nix](#testing-with-nix) -- [Cluster configuration options](#cluster-configuration-options) - - [Current limitations](#current-limitations) -- [Using addresses with staking key components](#using-addresses-with-staking-key-components) -- [Limitations](#limitations) -- [See also](#see-also) - - -## Architecture - -CTL depends on a number of binaries in the `$PATH` to execute Plutip tests: - -- `plutip-server` to launch a local `cardano-node` cluster -- [`ogmios`](https://ogmios.dev/) -- [`kupo`](https://cardanosolutions.github.io/kupo/) - -All of these are provided by CTL's `overlays.runtime` (and are provided in CTL's own `devShell`). You **must** use the `runtime` overlay or otherwise make the services available in your package set (e.g. by defining them within your own `overlays` when instantiating `nixpkgs`) as `purescriptProject.runPlutipTest` expects all of them; an example of using CTL's overlays is in the [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix#L35). - -The services are NOT run by `docker-compose` (via `arion`) as is the case with `launchCtlRuntime`: instead they are started and stopped on each CTL `ContractTest` execution by CTL itself. - -If you have based your project on the [`ctl-scaffold` template](../templates/ctl-scaffold) then you have two options to run Plutip tests: -1. `nix develop` followed by `npm run test` (recommended for development) -2. `nix run .#checks.x86_64-linux.ctl-scaffold-plutip-test` - * where you'd usually replace `x86_64-linux` with the system you run tests on - * and `ctl-scaffold-plutip-test` with the name of the plutip test derivation for your project; - * note that building of your project via Nix will fail in case there are any PureScript compile-time warnings. - -## Testing contracts - -CTL can help you test the offchain `Contract`s from your project (and consequently the interaction of onchain and offchain code) by spinning up a disposable private testnet via Plutip and making all your `Contract`s interact with it. - -There are two approaches to writing such tests. - -### Testing with Mote - -#### Overview - -[Mote](https://github.com/garyb/purescript-mote) is a DSL for defining and grouping tests (plus other quality of life features, e.g. skipping marked tests). - -First (and more widely used) approach is to first build a tree of tests (in CTL's case a tree of `ContractTest` types -- basically a function from some distribution of funds to a `Contract a`) via Mote and then use the `Contract.Test.Plutip.testPlutipContracts` function to execute them. -This allows to set up a Plutip cluster only once per top-level groups and tests passed to the `testPlutipContracts` and then use it in many independent tests. -The function will interpret a `MoteT` (effectful test tree) into `Aff`, which you can then actually run. - -The [`ctl-scaffold` template](../templates/ctl-scaffold) provides a simple `Mote`-based example. - -`Contract.Test.Plutip.testPlutipContracts` type is defined as follows: -```purescript -testPlutipContracts - :: PlutipConfig - -> TestPlanM ContractTest Unit - -> TestPlanM (Aff Unit) Unit -``` - -It takes a plutip config and a tree of Mote tests, where tests are of type `ContractTest`. - -To create tests of type `ContractTest`, you should either use `Contract.Test.Plutip.withWallets` or `Contract.Test.Plutip.noWallet`: - -```purescript -withWallets - :: forall (distr :: Type) (wallets :: Type) - . UtxoDistribution distr wallets - => distr - -> (wallets -> Contract Unit) - -> ContractTest - -noWallet :: Contract Unit -> ContractTest -noWallet test = withWallets unit (const test) -``` - -Usage of `testPlutipContracts` is similar to that of `runPlutipContract`, and distributions are handled in the same way. Here's an example: - -```purescript -suite :: MoteT Aff (Aff Unit) Aff -suite = testPlutipContracts config do - test "Test 1" do - let - distribution :: Array BigInt /\ Array BigInt - distribution = ... - withWallets distribution \(alice /\ bob) -> do - ... - - test "Test 2" do - let - distribution :: Array BigInt - distribution = ... - withWallets distribution \alice -> do - ... - - test "Test 3" do - noWallet do - ... -``` - -#### Using Mote testing interface - -To define tests suites you can use `test`, group them with `group` and also wrap tests or groups with `bracket` to execute custom actions before and after tests/groups that are inside the bracket. -Note that in Mote you can define several tests and several groups in a single block, and bracket that wraps them will be run for each such test or group. - -Internally `testPlutipContracts` places a bracket that sets up the CTL environment and starts up the Plutip cluster on the top level, so if you want to launch cluster only once wrap your tests or groups in a single group. -In the example above the environment and cluster setup will happen 3 times. - -#### Internal implementation overview - -`Contract.Test.Plutip.testPlutipContracts` type is defined as follows (after expansion of the CTL's `TestPlanM` type synonym): -```purescript -type TestPlanM :: Type -> Type -> Type -type TestPlanM test a = MoteT Aff test Aff a - -testPlutipContracts - :: PlutipConfig - -> MoteT Aff ContractTest Aff Unit - -> MoteT Aff (Aff Unit) Aff Unit - --- Recall that `MoteT` has three type variables -newtype MoteT bracket test m a -``` -where -* `bracket :: Type -> Type` is where brackets will be run (before/setup is `bracket r` and after/shutdown is of type `r -> bracket Unit`), - * in our case it's `Aff` and is where the CTL environment and Plutip cluster setup will happen, - * also environment setup and Plutip startup and teardown will happen once per each top-level test or group inside the `testPlutipContracts` call, - * so wrap your tests or groups in a single group if you want for the cluster to start only once, -* `test :: Type` is a type of tests themselves, - * in our case it's [`ContractTest`](../src/Internal/Test/ContractTest.purs), which in a nutshell describes a function from some wallet UTxO distribution to a `Contract r` - * wallet UTxO distribution is the one that you need to pattern-match on when writing tests -* `m :: Type -> Type` is a monad where effects during the construction of the test suite can be performed, - * here we use `Aff` again -* `a :: Type` is a result of the test suite, we use `Unit` here. - -`testPlutipContracts` also combines distributions of individual tests in a single big distribution (via nested tuples) and modifies tests to pluck their required distributions out of the big one. -This allows to create wallets and fund them in one step, during the Plutip setup. -See the comments in the [`Ctl.Internal.Plutip.Server` module](../src/Internal/Plutip/Server.purs) for more info (relevant ones are in `execDistribution` and `testPlutipContracts` functions). - -In complicated protocols you might want to execute some `Contract`s in one test and then execute other `Contract`s which depend on some wallet-dependent state set up by the first batch of contracts, e.g. some authorization token is present at some wallet. -Keeping these steps in separate sequential tests allows to pinpoint where things failed much easier, but currently CTL uses separate wallets for each test without an easy way to refer to wallets in other tests, so you have to call first batch of contracts again to replicate the state of the wallets, which in turn might fail or mess up your protocol, because the chain state is shared between tests for each top-level group. - -### Testing in Aff context - -Second approach is to use the `Contract.Test.Plutip.runPlutipContract` function, which takes a single `Contract`, launches a Plutip cluster and executes the passed contract. -This function runs in `Aff`; it will also throw an exception should contract fail for any reason. -After the contract execution the Plutip cluster is terminated. -You can either call it directly from your test's main or use any library for grouping and describing tests which support effects in the test body, like Mote. - -`Contract.Test.Plutip.runPlutipContract`'s function type is defined as follows: - -```purescript -runPlutipContract - :: forall (distr :: Type) (wallets :: Type) (a :: Type) - . UtxoDistribution distr wallets - => PlutipConfig - -> distr - -> (wallets -> Contract a) - -> Aff a -``` - -`distr` is a specification of how many wallets and with how much funds should be created. It should either be a `Unit` (for no wallets), nested tuples containing `Array BigInt` or an `Array (Array BigInt)`, where each element of the inner array specifies an UTxO amount in Lovelaces (0.000001 Ada). - -The `wallets` argument of the callback is either a `Unit`, a tuple of `KeyWallet`s (with the same nesting level as in `distr`, which is guaranteed by `UtxoDistribution`) or an `Array KeyWallet`. - -`wallets` should be pattern-matched on, and its components should be passed to `withKeyWallet`: - -An example `Contract` with two actors using nested tuples: - -```purescript -let - distribution :: Array BigInt /\ Array BigInt - distribution = - [ BigNum.fromInt 1_000_000_000 - , BigNum.fromInt 2_000_000_000 - ] /\ - [ BigNum.fromInt 2_000_000_000 ] -runPlutipContract config distribution \(alice /\ bob) -> do - withKeyWallet alice do - pure unit -- sign, balance, submit, etc. - withKeyWallet bob do - pure unit -- sign, balance, submit, etc. -``` - -An example `Contract` with two actors using `Array`: - -```purescript -let - distribution :: Array (Array BigInt) - distribution = - -- wallet one: two UTxOs - [ [ BigNum.fromInt 1_000_000_000, BigNum.fromInt 2_000_000_000] - -- wallet two: one UTxO - , [ BigNum.fromInt 2_000_000_000 ] - ] -runPlutipContract config distribution \wallets -> do - traverse_ ( \wallet -> do - withKeyWallet wallet do - pure unit -- sign, balance, submit, etc. - ) - wallets -``` - -In most cases at least two UTxOs per wallet are needed (one of which will be used as collateral, so it should exceed `5_000_000` Lovelace). - - -Internally `runPlutipContract` runs a contract in an `Aff.bracket`, which creates a Plutip cluster on setup and terminates it during the shutdown or in case of an exception. -Logs will be printed in case of an error. - -### Sharing wallet state between tests - -To execute tests that share the same wallet state, the use of `Contract.Test.Plutip.runPlutipTestPlan` is suggested, which has a type of: - -```purescript -runPlutipTestPlan - :: PlutipConfig - -> ContractTestPlan - -> TestPlanM (Aff Unit) Unit -``` - -`runPlutipTestPlan` uses the exact same logic to perform `testPlutipContracts`, except it requires that wallets are pre-allocated inside of the second parameter, which has a type of `ContractTestPlan`. `Contract.Test.Plutip.sameWallets` is a helper function that can be used to create a `ContractTestPlan` where all of the tests use the same wallets that are defined in the `UtxoDistribution`, this function has a type of: - -```purescript -sameWallets - :: forall (distr :: Type) (wallets :: Type) - . UtxoDistribution distr wallets - => distr - -> TestPlanM (wallets -> Contract Unit) Unit - -> ContractTestPlan -``` - -Usage of `runPlutipTestPlan` is similar to that of `testPlutipContracts`, except that the distributions are handled slightly differently. Here's an example of using `sameWallets`: - -```purescript -suite :: TestPlanM (Aff Unit) Unit -suite = runPlutipTestPlan config do - let - distribution :: Array BigInt /\ Array BigInt - distribution = ... - - sameWallets distribution $ - group "Test Plan" do - test "Test 1" \(alice /\ bob /\ charlie) -> do - ... - - test "Test 2" \(alice /\ bob /\ charlie) -> do - ... - - test "Test 3" \(alice /\ bob /\ charlie) -> do - ... -``` - -Another example for using `sameWallets` can be found [here](../test/Plutip/SameWallets.purs). - -### Writing checks in tests - -CTL will run contracts in your test bodies and will print errors for any failed tests. -For more complex checks you can use the [assertions library](./test-utils.md). - -### Note on running clusters - -The communication with Plutip happens via the `plutip-server`'s HTTP interface, which allows to start or stop a cluster. -`plutip-server` allows only once active cluster at a time. -CTL currently launches `plutip-server` and `kupo` on pre-defined ports, so you won't be able to launch multiple environments to get parallel cluster. - - - - -### Note on SIGINT - -Due to `testPlutipContracts`/`runPlutipContract` adding listeners to the SIGINT IPC signal, Node.js's default behaviour of exiting on CTRL+C no longer occurs. This was done to let cluster cleanup handlers run asynchronously. To restore the usual exit-by-CTRL+C, we provide helpers to cancel an `Aff` fiber and set the exit code, to let Node.js shut down gracefully when no more events are to be processed. - -```purescript -... -import Contract.Test.Utils (exitCode, interruptOnSignal) -import Data.Posix.Signal (Signal(SIGINT)) -import Effect.Aff (cancelWith, effectCanceler, launchAff) - -main :: Effect Unit -main = interruptOnSignal SIGINT =<< launchAff do - flip cancelWith (effectCanceler (exitCode 1)) do - ... test suite in Aff ... -``` - -### Testing with Nix - -You can run Plutip tests via CTL's `purescriptProject` as well. After creating your project, you can use the `runPlutipTest` attribute to create a Plutip testing environment that is suitable for use with your flake's `checks`. An example: - -```nix -{ - some-plutip-test = project.runPlutipTest { - name = "some-plutip-test"; - testMain = "Test.MyProject.Plutip"; - # The rest of the arguments are passed through to `runPursTest`: - env = { SOME_ENV_VAR = "${some-value}"; }; - }; -} -``` - -The usual approach is to put `projectname-plutip-test` in the `checks` attribute of your project's `flake.nix`. -This is done by default in the [`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix). - -## Cluster configuration options - -`PlutipConfig` type contains `clusterConfig` record with the following options: - -```purescript -{ slotLength :: Seconds -, epochSize :: Maybe UInt -, maxTxSize :: Maybe UInt -, raiseExUnitsToMax :: Boolean -} -``` - -- `slotLength` and `epochSize` define time-related protocol parameters. Epoch size is specified in slots. -- `maxTxSize` (in bytes) allows to stress-test protocols with more restrictive transaction size limits. -- `raiseExUnitsToMax` allows to bypass execution units limit (useful when compiling the contract with tracing in development and without it in production). - -### Current limitations - -* Non-default values of `epochSize` (current default is 80) break staking rewards - see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. `slotLength` can be changed without any problems. - -## Using addresses with staking key components - -It's possible to use stake keys with Plutip. `Contract.Test.Plutip.withStakeKey` function can be used to modify the distribution spec: - -```purescript -let - privateStakeKey :: PrivateStakeKey - privateStakeKey = wrap $ unsafePartial $ fromJust - $ privateKeyFromBytes =<< hexToRawBytes - "633b1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" - aliceUtxos = - [ BigNum.fromInt 2_000_000_000 - , BigNum.fromInt 2_000_000_000 - ] - distribution = withStakeKey privateStakeKey aliceUtxos -``` - -Although stake keys serve no real purpose in plutip context, they allow to use base addresses, and thus allow to have the same code for plutip testing, in-browser tests and production. - -Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses to base addresses, which requires a few transactions before the test can be run. These transactions happen on the CTL side, because Plutip can currently handle only enterprise addreses (see [this issue](https://github.com/mlabs-haskell/plutip/issues/103)). - -## Limitations -* See the `epochSize` configuration option problem [here](#current-limitations). -* Currently there's no way to share wallets between separate tests (which is useful for complex protocols). You can adapt [this PR](https://github.com/IndigoProtocol/cardano-transaction-lib/pull/1) (needs to be updated for the newer versions of CTL, likely won't need too many changes) if you need it now (and even better -- make a PR to CTL). -* If you've used the [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows to time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with Plutip doesn't allow this, as it's running a real network. A way around this problem can be to parametrize onchain logic by a time multiplier (and use a small one for tests). - -## See also - -- To actually write the test bodies, [assertions library](./test-utils.md) can be useful [(usage example)](../examples/ContractTestUtils.purs). -- Take a look at CTL's Plutip tests for the usage examples: - - the entry point with `main` that runs Plutip tests is [here](../test/Plutip.purs), - - folder with various test suites is [here](../test/Plutip/). +The use of [Plutip](https://github.com/mlabs-haskell/plutip) in CTL is +deprecated. For information on how to test with the Cardano Testnet, please +refer to the [CTL integration with Cardano Testnet](./cardano-testnet-testing.md) +documentation. From fbd6723310ab1efd0e615c7585131ea0235c6a6d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 11 Jul 2024 17:04:05 +0400 Subject: [PATCH 286/373] WIP: rewrite examples --- CHANGELOG.md | 5 +++ examples/AlwaysMints.purs | 53 +++++++++++++++-------- examples/AlwaysSucceeds.purs | 79 +++++++++++++++++----------------- examples/ECDSA.purs | 76 ++++++++++++++++++-------------- examples/Schnorr.purs | 81 ++++++++++++++++++++--------------- scripts/import-fixer.sh | 7 +++ src/Contract/Transaction.purs | 13 ++++++ 7 files changed, 190 insertions(+), 124 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b5ae290e..4b9d74416 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,8 +71,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added +- Ability to spend native script outputs using a reference input that contains an inline native script. + ### Removed +- `Contract.Transaction.submitTxFromConstraintsReturningFee` +- `Contract.Transaction` lens values + ### Changed ### Fixed diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index 85553e991..ab5620206 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -11,18 +11,37 @@ module Ctl.Examples.AlwaysMints import Contract.Prelude +import Cardano.Transaction.Builder + ( CredentialWitness(NativeScriptCredential, PlutusScriptCredential) + , ScriptWitness(ScriptValue, ScriptReference) + , TransactionBuilderStep + ( SpendOutput + , Pay + , MintAsset + , RegisterStake + , IssueCertificate + , WithdrawStake + , RequireSignature + , RegisterPool + , RetirePool + , IncludeDatum + , SetTTL + , SetValidityStartInterval + , SetIsValid + ) + ) import Cardano.Types (PlutusScript) import Cardano.Types.Int as Int -import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.Transaction as Transaction import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) -import Contract.ScriptLookups as Lookups +import Contract.PlutusData (unitRedeemer) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) -import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) -import Contract.TxConstraints as Constraints +import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Ctl.Examples.Helpers (mkAssetName) as Helpers +import Data.Map as Map main :: Effect Unit main = example testnetNamiConfig @@ -30,21 +49,17 @@ main = example testnetNamiConfig contract :: Contract Unit contract = do logInfo' "Running Examples.AlwaysMints" - mp <- alwaysMintsPolicy - let cs = PlutusScript.hash mp - tn <- Helpers.mkAssetName "TheToken" - let - constraints :: Constraints.TxConstraints - constraints = Constraints.mustMintValue - $ Mint.singleton cs tn - $ Int.fromInt 100 - - lookups :: Lookups.ScriptLookups - lookups = Lookups.plutusMintingPolicy mp - - txId <- submitTxFromConstraints lookups constraints - - awaitTxConfirmed txId + mintingPolicy <- alwaysMintsPolicy + let scriptHash = PlutusScript.hash mintingPolicy + tokenName <- Helpers.mkAssetName "TheToken" + awaitTxConfirmed <<< Transaction.hash =<< + submitTxFromBuildPlan Map.empty mempty + [ MintAsset + scriptHash + tokenName + (Int.fromInt 100) + (PlutusScriptCredential (ScriptValue mintingPolicy) unitRedeemer) + ] logInfo' "Tx submitted successfully!" example :: ContractParams -> Effect Unit diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index d227c52aa..4652c08c4 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -12,37 +12,47 @@ module Ctl.Examples.AlwaysSucceeds import Contract.Prelude +import Cardano.Transaction.Builder + ( DatumWitness(DatumValue, DatumReference) + , OutputWitness(NativeScriptOutput, PlutusScriptOutput) + , ScriptWitness(ScriptValue, ScriptReference) + , TransactionBuilderStep(SpendOutput, Pay) + ) import Cardano.Types ( Credential(PubKeyHashCredential, ScriptHashCredential) + , OutputDatum(OutputDatum) + , PaymentCredential(PaymentCredential) , PlutusScript , ScriptHash + , StakeCredential(StakeCredential) , TransactionHash - , _input + , TransactionOutput(TransactionOutput) ) import Cardano.Types.BigNum as BigNum -import Cardano.Types.PlutusData as Datum +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.DataHash as PlutusData +import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash, OutputDatum)) import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript as Script +import Cardano.Types.Transaction as Transaction +import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (unitRedeemer) -import Contract.ScriptLookups as Lookups import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( awaitTxConfirmed , lookupTxHash - , submitTxFromConstraints + , submitTxFromBuildPlan ) -import Contract.TxConstraints (TxConstraints) -import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (ownStakePubKeyHashes) import Control.Monad.Error.Class (liftMaybe) import Data.Array (head) -import Data.Lens (view) +import Data.Map as Map import Effect.Exception (error) main :: Effect Unit @@ -67,27 +77,16 @@ payToAlwaysSucceeds :: ScriptHash -> Contract TransactionHash payToAlwaysSucceeds vhash = do -- Send to own stake credential. This is used to test mustPayToScriptAddress. mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes - let - value = Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 - - constraints :: TxConstraints - constraints = - case mbStakeKeyHash of - Nothing -> - Constraints.mustPayToScript vhash PlutusData.unit - Constraints.DatumWitness - value - Just stakeKeyHash -> - Constraints.mustPayToScriptAddress vhash - (PubKeyHashCredential $ unwrap stakeKeyHash) - Datum.unit - Constraints.DatumWitness - value - - lookups :: Lookups.ScriptLookups - lookups = mempty - - submitTxFromConstraints lookups constraints + scriptAddress <- mkAddress (PaymentCredential $ ScriptHashCredential vhash) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> mbStakeKeyHash) + Transaction.hash <$> submitTxFromBuildPlan Map.empty mempty + [ Pay $ TransactionOutput + { address: scriptAddress + , amount: Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + ] spendFromAlwaysSucceeds :: ScriptHash @@ -101,7 +100,7 @@ spendFromAlwaysSucceeds vhash validator txId = do (wrap $ ScriptHashCredential vhash) (wrap <<< PubKeyHashCredential <<< unwrap <$> mbStakeKeyHash) utxos <- utxosAt scriptAddress - txInput <- + utxo <- liftM ( error ( "The id " @@ -110,17 +109,17 @@ spendFromAlwaysSucceeds vhash validator txId = do <> show scriptAddress ) ) - (view _input <$> head (lookupTxHash txId utxos)) - let - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos - - constraints :: TxConstraints - constraints = - Constraints.mustSpendScriptOutput txInput unitRedeemer - spendTxId <- submitTxFromConstraints lookups constraints - awaitTxConfirmed spendTxId + $ head (lookupTxHash txId utxos) + spendTx <- submitTxFromBuildPlan (Map.union utxos $ toUtxoMap [ utxo ]) + mempty + [ SpendOutput + utxo + ( Just $ PlutusScriptOutput (ScriptValue validator) unitRedeemer $ Just + $ DatumValue + $ PlutusData.unit + ) + ] + awaitTxConfirmed $ Transaction.hash spendTx logInfo' "Successfully spent locked values." alwaysSucceedsScript :: Contract PlutusScript diff --git a/examples/ECDSA.purs b/examples/ECDSA.purs index 7aeaaa6f7..1a99d2de5 100644 --- a/examples/ECDSA.purs +++ b/examples/ECDSA.purs @@ -2,7 +2,21 @@ module Ctl.Examples.ECDSA (contract) where import Contract.Prelude +import Cardano.Transaction.Builder + ( DatumWitness(DatumValue) + , OutputWitness(PlutusScriptOutput) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(SpendOutput, Pay) + ) +import Cardano.Types + ( OutputDatum(OutputDatumHash) + , TransactionOutput(TransactionOutput) + ) import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.Transaction as Transaction +import Cardano.Types.TransactionUnspentOutput (_input, fromUtxoMap, toUtxoMap) import Contract.Address (mkAddress) import Contract.Crypto.Secp256k1.ECDSA ( ECDSAPublicKey @@ -25,22 +39,20 @@ import Contract.PlutusData , PlutusData(Constr) , RedeemerDatum(RedeemerDatum) , toData - , unitDatum ) import Contract.Prim.ByteArray (byteArrayFromIntArrayUnsafe) -import Contract.ScriptLookups as Lookups import Contract.Scripts (Validator, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash , awaitTxConfirmed - , submitTxFromConstraints + , submitTxFromBuildPlan ) -import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value +import Data.Array as Array +import Data.Lens (view) import Data.Map as Map -import Data.Set as Set import Noble.Secp256k1.ECDSA (unECDSASignature) newtype ECDSARedemeer = ECDSARedemeer @@ -69,28 +81,29 @@ prepTest = do validator <- liftContractM "Caonnot get validator" getValidator let valHash = validatorHash validator - val = Value.lovelaceValueOf BigNum.one - - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - - constraints :: Constraints.TxConstraints - constraints = Constraints.mustPayToScript valHash unitDatum - Constraints.DatumInline - val - txId <- submitTxFromConstraints lookups constraints + scriptAddress <- mkAddress + (wrap $ ScriptHashCredential valHash) + Nothing + tx <- submitTxFromBuildPlan Map.empty mempty + [ Pay $ TransactionOutput + { address: scriptAddress + , amount: val + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + ] + let txId = Transaction.hash tx logInfo' $ "Submitted ECDSA test preparation tx: " <> show txId awaitTxConfirmed txId logInfo' $ "Transaction confirmed: " <> show txId - pure txId -- | Attempt to unlock one utxo using an ECDSA signature testVerification :: TransactionHash -> ECDSARedemeer -> Contract TransactionHash testVerification txId ecdsaRed = do - let red = RedeemerDatum $ toData ecdsaRed + let redeemer = RedeemerDatum $ toData ecdsaRed validator <- liftContractM "Can't get validator" getValidator let valHash = validatorHash validator @@ -98,20 +111,21 @@ testVerification txId ecdsaRed = do valAddr <- mkAddress (wrap $ ScriptHashCredential valHash) Nothing scriptUtxos <- utxosAt valAddr - txIn <- liftContractM "No UTxOs found at validator address" - $ Set.toUnfoldable - $ Set.filter (unwrap >>> _.transactionId >>> eq txId) - $ Map.keys scriptUtxos - - let - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs - (Map.filterKeys ((unwrap >>> _.transactionId >>> eq txId)) scriptUtxos) - - constraints :: Constraints.TxConstraints - constraints = Constraints.mustSpendScriptOutput txIn red - txId' <- submitTxFromConstraints lookups constraints + utxo <- liftContractM "No UTxOs found at validator address" + $ Array.head + $ Array.filter (view _input >>> unwrap >>> _.transactionId >>> eq txId) + $ fromUtxoMap scriptUtxos + + tx <- submitTxFromBuildPlan (toUtxoMap [ utxo ]) mempty + [ SpendOutput utxo $ Just + $ PlutusScriptOutput + (ScriptValue validator) + redeemer + $ Just + $ DatumValue + $ PlutusData.unit + ] + let txId' = Transaction.hash tx logInfo' $ "Submitted ECDSA test verification tx: " <> show txId' awaitTxConfirmed txId' logInfo' $ "Transaction confirmed: " <> show txId' diff --git a/examples/Schnorr.purs b/examples/Schnorr.purs index ea1f52615..f0228128e 100644 --- a/examples/Schnorr.purs +++ b/examples/Schnorr.purs @@ -2,9 +2,21 @@ module Ctl.Examples.Schnorr (contract) where import Contract.Prelude +import Cardano.Transaction.Builder + ( DatumWitness(DatumValue) + , OutputWitness(PlutusScriptOutput) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(SpendOutput, Pay) + ) import Cardano.Types (Credential(ScriptHashCredential)) import Cardano.Types.Address (Address(EnterpriseAddress)) -import Contract.Address (getNetworkId) +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash)) +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.Transaction as Transaction +import Cardano.Types.TransactionOutput (TransactionOutput(TransactionOutput)) +import Cardano.Types.TransactionUnspentOutput (_input, fromUtxoMap, toUtxoMap) +import Contract.Address (getNetworkId, mkAddress) import Contract.Crypto.Secp256k1.Schnorr ( deriveSchnorrSecp256k1PublicKey , signSchnorrSecp256k1 @@ -18,23 +30,21 @@ import Contract.PlutusData , PlutusData(Constr) , RedeemerDatum(RedeemerDatum) , toData - , unitDatum ) import Contract.Prim.ByteArray (ByteArray, byteArrayFromIntArrayUnsafe) -import Contract.ScriptLookups as Lookups import Contract.Scripts (Validator, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash , awaitTxConfirmed - , submitTxFromConstraints + , submitTxFromBuildPlan ) -import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value +import Data.Array as Array +import Data.Lens (view) import Data.Map as Map import Data.Newtype (unwrap) -import Data.Set as Set import Noble.Secp256k1.Schnorr ( SchnorrPublicKey , SchnorrSignature @@ -68,27 +78,29 @@ prepTest = do validator <- liftContractM "Caonnot get validator" getValidator let valHash = validatorHash validator - val = Value.lovelaceValueOf $ BigNum.one - - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - - constraints :: Constraints.TxConstraints - constraints = Constraints.mustPayToScript valHash unitDatum - Constraints.DatumInline - val - txId <- submitTxFromConstraints lookups constraints - logInfo' $ "Submitted Schnorr test preparation tx: " <> show txId + val = Value.lovelaceValueOf BigNum.one + scriptAddress <- mkAddress + (wrap $ ScriptHashCredential valHash) + Nothing + tx <- submitTxFromBuildPlan Map.empty mempty + [ Pay $ TransactionOutput + { address: scriptAddress + , amount: val + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + ] + let txId = Transaction.hash tx + logInfo' $ "Submitted ECDSA test preparation tx: " <> show txId awaitTxConfirmed txId logInfo' $ "Transaction confirmed: " <> show txId - pure txId -- | Attempt to unlock one utxo using an ECDSA signature testVerification :: TransactionHash -> SchnorrRedeemer -> Contract TransactionHash testVerification txId ecdsaRed = do - let red = RedeemerDatum $ toData ecdsaRed + let redeemer = RedeemerDatum $ toData ecdsaRed validator <- liftContractM "Can't get validator" getValidator let valHash = validatorHash validator @@ -99,21 +111,22 @@ testVerification txId ecdsaRed = do { networkId, paymentCredential: wrap $ ScriptHashCredential valHash } scriptUtxos <- utxosAt valAddr - txIn <- liftContractM "No UTxOs found at validator address" - $ Set.toUnfoldable - $ Set.filter (unwrap >>> _.transactionId >>> eq txId) - $ Map.keys scriptUtxos - - let - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs - (Map.filterKeys ((unwrap >>> _.transactionId >>> eq txId)) scriptUtxos) - - constraints :: Constraints.TxConstraints - constraints = Constraints.mustSpendScriptOutput txIn red - txId' <- submitTxFromConstraints lookups constraints - logInfo' $ "Submitted Schnorr test verification tx: " <> show txId' + utxo <- liftContractM "No UTxOs found at validator address" + $ Array.head + $ Array.filter (view _input >>> unwrap >>> _.transactionId >>> eq txId) + $ fromUtxoMap scriptUtxos + + tx <- submitTxFromBuildPlan (toUtxoMap [ utxo ]) mempty + [ SpendOutput utxo $ Just + $ PlutusScriptOutput + (ScriptValue validator) + redeemer + $ Just + $ DatumValue + $ PlutusData.unit + ] + let txId' = Transaction.hash tx + logInfo' $ "Submitted ECDSA test verification tx: " <> show txId' awaitTxConfirmed txId' logInfo' $ "Transaction confirmed: " <> show txId' pure txId' diff --git a/scripts/import-fixer.sh b/scripts/import-fixer.sh index ee0770fc2..27714ad94 100755 --- a/scripts/import-fixer.sh +++ b/scripts/import-fixer.sh @@ -41,6 +41,13 @@ constrs["NetworkId"]="MainnetId, TestnetId" constrs["ScriptRef"]="NativeScriptRef, PlutusScriptRef" constrs["RedeemerTag"]="Spend, Mint, Cert, Reward" constrs["Maybe"]="Just, Nothing" +constrs["PaymentCredential"]="PaymentCredential" +constrs["TransactionBuilderStep"]="SpendOutput, Pay, MintAsset, RegisterStake, IssueCertificate, WithdrawStake, RequireSignature, RegisterPool, RetirePool, IncludeDatum, SetTTL, SetValidityStartInterval, SetIsValid" +constrs["OutputWitness"]="NativeScriptOutput, PlutusScriptOutput" +constrs["CredentialWitness"]="NativeScriptCredential, PlutusScriptCredential" +constrs["ScriptWitness"]="ScriptValue, ScriptReference" +constrs["DatumWitness"]="DatumValue, DatumReference" +constrs["RefInputAction"]="ReferenceInput, SpendInput" for d in "src" "test" "examples"; do echo "processing $d" diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index c8a61f9a6..7f25e1ba2 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -17,6 +17,7 @@ module Contract.Transaction , mkPoolPubKeyHash , hashTransaction , buildTx + , submitTxFromBuildPlan ) where import Prelude @@ -355,6 +356,18 @@ submitTxFromConstraints lookups constraints = do balancedSignedTx <- signTransaction balancedTx submit balancedSignedTx +submitTxFromBuildPlan + :: UtxoMap + -> BalanceTxConstraintsBuilder + -> Array TransactionBuilderStep + -> Contract Transaction +submitTxFromBuildPlan usedUtxos balancerConstraints plan = do + unbalancedTx <- buildTx plan + balancedTx <- balanceTx unbalancedTx usedUtxos balancerConstraints + balancedSignedTx <- signTransaction balancedTx + void $ submit balancedSignedTx + pure balancedSignedTx + lookupTxHash :: TransactionHash -> UtxoMap -> Array TransactionUnspentOutput lookupTxHash txHash utxos = From 416d5d1b944402832494b267140ae643419aa023 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Thu, 11 Jul 2024 14:46:39 -0300 Subject: [PATCH 287/373] Remove Plutip code --- doc/cardano-testnet-testing.md | 7 +++ doc/plutip-testing.md | 7 +++ flake.nix | 4 +- package.json | 6 +-- src/Contract/Test/Testnet.purs | 18 +++++++ templates/ctl-scaffold/test/Main.purs | 6 +-- test/Blockfrost/Contract.purs | 6 +-- test/Plutip/Contract/ClusterParameters.purs | 52 ------------------- test/{Plutip.purs => Testnet.purs} | 24 ++++----- test/{Plutip => Testnet}/Common.purs | 9 +--- test/{Plutip => Testnet}/Contract.purs | 11 ++-- test/{Plutip => Testnet}/Contract/Assert.purs | 5 +- .../Contract/Mnemonics.purs | 5 +- .../Contract/OgmiosMempool.purs | 2 +- test/{Plutip => Testnet}/ExUnits.purs | 2 +- test/{Plutip => Testnet}/Logging.purs | 2 +- test/{Plutip => Testnet}/SameWallets.purs | 10 ++-- test/{Plutip => Testnet}/Staking.purs | 30 +++++++---- test/{Plutip => Testnet}/Utils.purs | 2 +- .../{Plutip => Testnet}/UtxoDistribution.purs | 18 +++---- 20 files changed, 105 insertions(+), 121 deletions(-) delete mode 100644 test/Plutip/Contract/ClusterParameters.purs rename test/{Plutip.purs => Testnet.purs} (82%) rename test/{Plutip => Testnet}/Common.purs (73%) rename test/{Plutip => Testnet}/Contract.purs (99%) rename test/{Plutip => Testnet}/Contract/Assert.purs (98%) rename test/{Plutip => Testnet}/Contract/Mnemonics.purs (92%) rename test/{Plutip => Testnet}/Contract/OgmiosMempool.purs (98%) rename test/{Plutip => Testnet}/ExUnits.purs (98%) rename test/{Plutip => Testnet}/Logging.purs (98%) rename test/{Plutip => Testnet}/SameWallets.purs (94%) rename test/{Plutip => Testnet}/Staking.purs (96%) rename test/{Plutip => Testnet}/Utils.purs (96%) rename test/{Plutip => Testnet}/UtxoDistribution.purs (95%) diff --git a/doc/cardano-testnet-testing.md b/doc/cardano-testnet-testing.md index c755d2bc4..23aad89f8 100644 --- a/doc/cardano-testnet-testing.md +++ b/doc/cardano-testnet-testing.md @@ -1,3 +1,10 @@ + + + +- [CTL integration with Cardano Testnet](#ctl-integration-with-cardano-testnet) + + + # CTL integration with Cardano Testnet TODO diff --git a/doc/plutip-testing.md b/doc/plutip-testing.md index 60932d122..a245dcdaf 100644 --- a/doc/plutip-testing.md +++ b/doc/plutip-testing.md @@ -1,3 +1,10 @@ + + + +- [CTL integration with Plutip](#ctl-integration-with-plutip) + + + # CTL integration with Plutip The use of [Plutip](https://github.com/mlabs-haskell/plutip) in CTL is diff --git a/flake.nix b/flake.nix index 6464f1410..9a1499f70 100644 --- a/flake.nix +++ b/flake.nix @@ -221,11 +221,11 @@ }; ctl-local-testnet-test = project.runLocalTestnetTest { name = "ctl-local-testnet-test"; - testMain = "Test.Ctl.Plutip"; + testMain = "Test.Ctl.Testnet"; }; ctl-staking-test = project.runLocalTestnetTest { name = "ctl-staking-test"; - testMain = "Test.Ctl.Plutip.Staking"; + testMain = "Test.Ctl.Testnet.Staking"; }; ctl-unit-test = project.runPursTest { name = "ctl-unit-test"; diff --git a/package.json b/package.json index f146609fa..7081c7812 100755 --- a/package.json +++ b/package.json @@ -9,15 +9,15 @@ "test": "test" }, "scripts": { - "test": "npm run unit-test && npm run integration-test && npm run plutip-test && npm run staking-test", + "test": "npm run unit-test && npm run integration-test && npm run testnet-test && npm run staking-test", "start-runtime": "nix run -L .#ctl-runtime", "start-blockfrost-runtime": "nix run -L .#ctl-runtime-blockfrost", "integration-test": "spago run --main Test.Ctl.Integration", "blockfrost-test": "source ./test/blockfrost.env && spago run --main Test.Ctl.Blockfrost.Contract", "blockfrost-local-test": "source ./test/blockfrost-local.env && spago run --main Test.Ctl.Blockfrost.Contract", "unit-test": "spago run --main Test.Ctl.Unit", - "plutip-test": "spago run --main Test.Ctl.Plutip", - "staking-test": "spago run --main Test.Ctl.Plutip.Staking", + "testnet-test": "spago run --main Test.Ctl.Testnet", + "staking-test": "spago run --main Test.Ctl.Testnet.Staking", "e2e-serve": "make esbuild-serve", "e2e-test": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run'", "e2e-test-debug": "source ./test/e2e.env && spago test --main Test.Ctl.E2E -a 'run --no-headless'", diff --git a/src/Contract/Test/Testnet.purs b/src/Contract/Test/Testnet.purs index ab69276f0..0d32b2511 100644 --- a/src/Contract/Test/Testnet.purs +++ b/src/Contract/Test/Testnet.purs @@ -1,8 +1,26 @@ module Contract.Test.Testnet ( defaultTestnetConfig + , module X ) where +import Contract.Monad (runContractInEnv) as X +import Contract.Wallet (withKeyWallet) as X import Ctl.Internal.Contract.Hooks (emptyHooks) +import Ctl.Internal.Test.ContractTest + ( ContractTest + , ContractTestPlan(ContractTestPlan) + , noWallet + , sameWallets + , withWallets + ) as X +import Ctl.Internal.Test.UtxoDistribution + ( class UtxoDistribution + , InitialUTxODistribution + , InitialUTxOs + , InitialUTxOsWithStakeKey(InitialUTxOsWithStakeKey) + , UtxoAmount + , withStakeKey + ) as X import Ctl.Internal.Testnet.Types (Era(Babbage), TestnetConfig) import Data.Log.Level (LogLevel(Trace)) import Data.Maybe (Maybe(Nothing)) diff --git a/templates/ctl-scaffold/test/Main.purs b/templates/ctl-scaffold/test/Main.purs index 86c3f3e57..3a5b47d42 100644 --- a/templates/ctl-scaffold/test/Main.purs +++ b/templates/ctl-scaffold/test/Main.purs @@ -7,13 +7,11 @@ import Contract.Prelude import Contract.Numeric.BigNum as BigNum import Contract.Test.Mote (TestPlanM, interpretWithConfig) import Contract.Test.Plutip - ( InitialUTxOs - , PlutipTest + ( PlutipTest , defaultPlutipConfig , testPlutipContracts - , withKeyWallet - , withWallets ) +import Contract.Test.Testnet (InitialUTxOs, withKeyWallet, withWallets) import Contract.Test.Utils (exitCode, interruptOnSignal) import Data.Posix.Signal (Signal(SIGINT)) import Effect.Aff diff --git a/test/Blockfrost/Contract.purs b/test/Blockfrost/Contract.purs index 138afc2cd..691862449 100644 --- a/test/Blockfrost/Contract.purs +++ b/test/Blockfrost/Contract.purs @@ -1,4 +1,4 @@ --- | Module to run `Test.Ctl.Plutip.Contract`s suite without Plutip, using +-- | Module to run `Test.Ctl.Testnet.Contract`s suite without Testnet, using -- | an already running instance of Blockfrost (preview). -- | -- | Use `npm run blockfrost-test` to run. @@ -13,7 +13,7 @@ import Data.Maybe (Maybe(Just)) import Data.Time.Duration (Milliseconds(Milliseconds)) import Effect (Effect) import Test.Ctl.Integration as IntegrationTest -import Test.Ctl.Plutip.Contract as Plutip +import Test.Ctl.Testnet.Contract as Testnet import Test.Spec.Runner (defaultConfig) as TestSpec main :: Effect Unit @@ -22,5 +22,5 @@ main = launchAff_ do TestSpec.defaultConfig { timeout = Just $ Milliseconds 1000000.0 } testnetConfig { suppressLogs = true } do - Plutip.suite + Testnet.suite IntegrationTest.stakingSuite diff --git a/test/Plutip/Contract/ClusterParameters.purs b/test/Plutip/Contract/ClusterParameters.purs deleted file mode 100644 index a7239e963..000000000 --- a/test/Plutip/Contract/ClusterParameters.purs +++ /dev/null @@ -1,52 +0,0 @@ -module Test.Ctl.Plutip.Contract.ClusterParameters (mkSuite, runTest) where - -import Prelude - -import Cardano.Types.BigNum as BigNum -import Contract.Test (ContractTest, InitialUTxOs, withWallets) -import Contract.Test.Mote (TestPlanM) -import Contract.Test.Plutip (testPlutipContracts) -import Ctl.Internal.Contract.Hooks (ClusterParameters) -import Data.Array as Array -import Data.Maybe (Maybe(Just)) -import Data.Tuple.Nested (type (/\), (/\)) -import Effect.Aff (Aff) -import Effect.Class (liftEffect) -import Effect.Ref (Ref) -import Effect.Ref as Ref -import Mote (group, test) -import Test.Ctl.Plutip.Common (config) -import Test.Spec.Assertions (shouldEqual) - -runTest :: TestPlanM (Aff Unit) Unit -runTest = - do - clusterParamsRef <- - liftEffect $ Ref.new - { privateKeys: [] - , nodeSocketPath: "" - , nodeConfigPath: "" - , privateKeysDirectory: "" - } - testPlutipContracts - config - { hooks = config.hooks - { onClusterStartup = Just (flip Ref.write clusterParamsRef) } - } - (mkSuite clusterParamsRef) - -mkSuite :: Ref ClusterParameters -> TestPlanM ContractTest Unit -mkSuite ref = do - group "Getting ClusterParameters" do - let - initialUtxos :: InitialUTxOs - initialUtxos = - [ BigNum.fromInt 2_000_000_000, BigNum.fromInt 2_000_000_000 ] - - distribution :: InitialUTxOs /\ InitialUTxOs - distribution = initialUtxos /\ initialUtxos - test "getting cluster parameters" do - withWallets distribution \(_alice /\ _bob) -> do - clusterParams <- liftEffect $ Ref.read ref - Array.length clusterParams.privateKeys `shouldEqual` 2 - pure unit diff --git a/test/Plutip.purs b/test/Testnet.purs similarity index 82% rename from test/Plutip.purs rename to test/Testnet.purs index 86504a001..8c33f11f3 100644 --- a/test/Plutip.purs +++ b/test/Testnet.purs @@ -1,10 +1,10 @@ -module Test.Ctl.Plutip +module Test.Ctl.Testnet ( main ) where import Prelude -import Contract.Test.Plutip (noWallet) +import Contract.Test (noWallet) import Contract.Test.Testnet (defaultTestnetConfig) import Contract.Test.Utils (exitCode, interruptOnSignal) import Ctl.Internal.Contract.Monad (wrapQueryM) @@ -22,18 +22,18 @@ import Mote (group) import Mote.Monad (mapTest) import Mote.TestPlanM as Utils import Test.Ctl.BalanceTx.ChangeGeneration as ChangeGeneration -import Test.Ctl.Plutip.Contract as Contract -import Test.Ctl.Plutip.Contract.Assert as Assert -import Test.Ctl.Plutip.Contract.Mnemonics as Mnemonics -import Test.Ctl.Plutip.Contract.OgmiosMempool as OgmiosMempool -import Test.Ctl.Plutip.ExUnits as ExUnits -import Test.Ctl.Plutip.Logging as Logging -import Test.Ctl.Plutip.SameWallets as SameWallets -import Test.Ctl.Plutip.UtxoDistribution as UtxoDistribution import Test.Ctl.QueryM.AffInterface as QueryM.AffInterface +import Test.Ctl.Testnet.Contract as Contract +import Test.Ctl.Testnet.Contract.Assert as Assert +import Test.Ctl.Testnet.Contract.Mnemonics as Mnemonics +import Test.Ctl.Testnet.Contract.OgmiosMempool as OgmiosMempool +import Test.Ctl.Testnet.ExUnits as ExUnits +import Test.Ctl.Testnet.Logging as Logging +import Test.Ctl.Testnet.SameWallets as SameWallets +import Test.Ctl.Testnet.UtxoDistribution as UtxoDistribution import Test.Spec.Runner (defaultConfig) --- Run with `npm run plutip-test` +-- Run with `npm run testnet-test` main :: Effect Unit main = interruptOnSignal SIGINT =<< launchAff do let config = defaultTestnetConfig @@ -76,4 +76,4 @@ testStartPlutipCluster = group "Server" do stopRes `shouldSatisfy` case _ of StopClusterSuccess -> true _ -> false --} + -} diff --git a/test/Plutip/Common.purs b/test/Testnet/Common.purs similarity index 73% rename from test/Plutip/Common.purs rename to test/Testnet/Common.purs index b441db42c..004d088c1 100644 --- a/test/Plutip/Common.purs +++ b/test/Testnet/Common.purs @@ -1,21 +1,16 @@ -module Test.Ctl.Plutip.Common - ( config - , privateStakeKey +module Test.Ctl.Testnet.Common + ( privateStakeKey ) where import Prelude import Contract.Keys (privateKeyFromBytes) -import Contract.Test.Plutip (PlutipConfig, defaultPlutipConfig) import Ctl.Internal.Wallet.Key (PrivateStakeKey) import Data.ByteArray (hexToByteArray) import Data.Maybe (fromJust) import Data.Newtype (wrap) import Partial.Unsafe (unsafePartial) -config :: PlutipConfig -config = defaultPlutipConfig - privateStakeKey :: PrivateStakeKey privateStakeKey = wrap $ unsafePartial $ fromJust $ privateKeyFromBytes =<< map wrap diff --git a/test/Plutip/Contract.purs b/test/Testnet/Contract.purs similarity index 99% rename from test/Plutip/Contract.purs rename to test/Testnet/Contract.purs index ef5344278..f2ef4425a 100644 --- a/test/Plutip/Contract.purs +++ b/test/Testnet/Contract.purs @@ -1,4 +1,4 @@ -module Test.Ctl.Plutip.Contract +module Test.Ctl.Testnet.Contract ( suite ) where @@ -67,7 +67,7 @@ import Contract.Scripts ) import Contract.Test (ContractTest) import Contract.Test.Assert (runChecks) -import Contract.Test.Plutip +import Contract.Test.Testnet ( InitialUTxOs , InitialUTxOsWithStakeKey , withStakeKey @@ -186,9 +186,9 @@ import Test.Ctl.Fixtures , partiallyAppliedScriptFixture , unappliedScriptFixture ) -import Test.Ctl.Plutip.Common (privateStakeKey) -import Test.Ctl.Plutip.Utils (getLockedInputs, submitAndLog) -import Test.Ctl.Plutip.UtxoDistribution (checkUtxoDistribution) +import Test.Ctl.Testnet.Common (privateStakeKey) +import Test.Ctl.Testnet.Utils (getLockedInputs, submitAndLog) +import Test.Ctl.Testnet.UtxoDistribution (checkUtxoDistribution) import Test.Spec.Assertions (shouldEqual, shouldNotEqual, shouldSatisfy) suite :: TestPlanM ContractTest Unit @@ -196,7 +196,6 @@ suite = do group "WaitUntilSlot" do test "wait for slot far in the future" do withWallets unit \_ -> do - -- Plutip increases last known slot by 80 at a time void $ waitUntilSlot $ Slot $ BigNum.fromInt 10 void $ waitUntilSlot $ Slot $ BigNum.fromInt 160 void $ waitUntilSlot $ Slot $ BigNum.fromInt 161 diff --git a/test/Plutip/Contract/Assert.purs b/test/Testnet/Contract/Assert.purs similarity index 98% rename from test/Plutip/Contract/Assert.purs rename to test/Testnet/Contract/Assert.purs index 38bb779a2..2a1b933ce 100644 --- a/test/Plutip/Contract/Assert.purs +++ b/test/Testnet/Contract/Assert.purs @@ -1,5 +1,5 @@ -- | Testing assertions interface provided by `Contract.Test.Assert` -module Test.Ctl.Plutip.Contract.Assert (suite) where +module Test.Ctl.Testnet.Contract.Assert (suite) where import Prelude @@ -8,14 +8,13 @@ import Cardano.Types.PlutusScript as PlutusScript import Contract.Monad (liftedM) import Contract.Numeric.BigNum as BigNum import Contract.PlutusData (PlutusData(Integer)) -import Contract.Test (ContractTest) +import Contract.Test (ContractTest, InitialUTxOs, withWallets) import Contract.Test.Assert ( checkExUnitsNotExceed , collectAssertionFailures , printContractAssertionFailures ) import Contract.Test.Mote (TestPlanM) -import Contract.Test.Plutip (InitialUTxOs, withWallets) import Contract.Wallet ( ownPaymentPubKeyHashes , ownStakePubKeyHashes diff --git a/test/Plutip/Contract/Mnemonics.purs b/test/Testnet/Contract/Mnemonics.purs similarity index 92% rename from test/Plutip/Contract/Mnemonics.purs rename to test/Testnet/Contract/Mnemonics.purs index ffc88711a..b21d1ac3b 100644 --- a/test/Plutip/Contract/Mnemonics.purs +++ b/test/Testnet/Contract/Mnemonics.purs @@ -1,11 +1,10 @@ -module Test.Ctl.Plutip.Contract.Mnemonics (suite) where +module Test.Ctl.Testnet.Contract.Mnemonics (suite) where import Prelude import Contract.Address (addressFromBech32) -import Contract.Test (ContractTest) +import Contract.Test (ContractTest, withWallets) import Contract.Test.Mote (TestPlanM) -import Contract.Test.Plutip (withWallets) import Contract.Wallet (getWalletAddresses, withKeyWalletFromMnemonic) import Contract.Wallet.Key (StakeKeyPresence(WithStakeKey)) import Data.Array (head) diff --git a/test/Plutip/Contract/OgmiosMempool.purs b/test/Testnet/Contract/OgmiosMempool.purs similarity index 98% rename from test/Plutip/Contract/OgmiosMempool.purs rename to test/Testnet/Contract/OgmiosMempool.purs index 0af7dd40c..6edd6cb46 100644 --- a/test/Plutip/Contract/OgmiosMempool.purs +++ b/test/Testnet/Contract/OgmiosMempool.purs @@ -1,4 +1,4 @@ -module Test.Ctl.Plutip.Contract.OgmiosMempool +module Test.Ctl.Testnet.Contract.OgmiosMempool ( suite ) where diff --git a/test/Plutip/ExUnits.purs b/test/Testnet/ExUnits.purs similarity index 98% rename from test/Plutip/ExUnits.purs rename to test/Testnet/ExUnits.purs index 822569b15..a3bb79368 100644 --- a/test/Plutip/ExUnits.purs +++ b/test/Testnet/ExUnits.purs @@ -1,4 +1,4 @@ -module Test.Ctl.Plutip.ExUnits +module Test.Ctl.Testnet.ExUnits ( mkSuite , mkFailingSuite ) where diff --git a/test/Plutip/Logging.purs b/test/Testnet/Logging.purs similarity index 98% rename from test/Plutip/Logging.purs rename to test/Testnet/Logging.purs index 9d459a626..4df8b9ac2 100644 --- a/test/Plutip/Logging.purs +++ b/test/Testnet/Logging.purs @@ -1,4 +1,4 @@ -module Test.Ctl.Plutip.Logging +module Test.Ctl.Testnet.Logging ( suite ) where diff --git a/test/Plutip/SameWallets.purs b/test/Testnet/SameWallets.purs similarity index 94% rename from test/Plutip/SameWallets.purs rename to test/Testnet/SameWallets.purs index a100bdf81..d53804405 100644 --- a/test/Plutip/SameWallets.purs +++ b/test/Testnet/SameWallets.purs @@ -1,4 +1,4 @@ -module Test.Ctl.Plutip.SameWallets +module Test.Ctl.Testnet.SameWallets ( suite ) where @@ -11,7 +11,11 @@ import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (PaymentPubKeyHash) import Contract.Monad (Contract, liftedM) import Contract.ScriptLookups as Lookups -import Contract.Test.Plutip (PlutipTestPlan, sameWallets, withKeyWallet) +import Contract.Test.Testnet + ( ContractTestPlan + , sameWallets + , withKeyWallet + ) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints as Constraints import Contract.Value (TokenName, Value) @@ -23,7 +27,7 @@ import Ctl.Internal.Test.UtxoDistribution (InitialUTxOs) import Data.Array as Array import Mote (group, test) -suite :: PlutipTestPlan +suite :: ContractTestPlan suite = let distribution :: InitialUTxOs /\ InitialUTxOs diff --git a/test/Plutip/Staking.purs b/test/Testnet/Staking.purs similarity index 96% rename from test/Plutip/Staking.purs rename to test/Testnet/Staking.purs index 7c3c6857c..088fdb0d2 100644 --- a/test/Plutip/Staking.purs +++ b/test/Testnet/Staking.purs @@ -1,4 +1,4 @@ -module Test.Ctl.Plutip.Staking +module Test.Ctl.Testnet.Staking ( main , suite ) where @@ -29,7 +29,6 @@ import Contract.Staking , getValidatorHashDelegationsAndRewards ) import Contract.Test.Mote (TestPlanM, interpretWithConfig) -import Contract.Test.Plutip (withStakeKey) import Contract.Test.Testnet (defaultTestnetConfig) import Contract.Test.Utils (exitCode, interruptOnSignal) import Contract.Time (getCurrentEpoch) @@ -68,7 +67,12 @@ import Contract.Wallet.Key (keyWalletPrivateStakeKey, publicKeyFromPrivateKey) import Ctl.Examples.AlwaysSucceeds (alwaysSucceedsScript) import Ctl.Examples.Helpers (submitAndLog) import Ctl.Examples.IncludeDatum (only42Script) +import Ctl.Internal.Test.UtxoDistribution + ( InitialUTxOs + , InitialUTxOsWithStakeKey(InitialUTxOsWithStakeKey) + ) import Ctl.Internal.Testnet.Contract (runTestnetContract) +import Ctl.Internal.Wallet.Key (PrivateStakeKey) import Data.Array (head) import Data.Array as Array import Data.Foldable (for_) @@ -91,7 +95,7 @@ import Effect.Aff import Effect.Aff.Class (liftAff) import Effect.Exception (error) import Mote (group, skip, test) -import Test.Ctl.Plutip.Common (privateStakeKey) +import Test.Ctl.Testnet.Common (privateStakeKey) import Test.Spec.Assertions (shouldEqual, shouldSatisfy) import Test.Spec.Runner (defaultConfig) @@ -119,7 +123,7 @@ suite = do group "Stake keys: register & deregister" do test "PubKey" do let - distribution = withStakeKey privateStakeKey + distribution = withStakeKey privateStakeKeyForDist [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] @@ -159,7 +163,7 @@ suite = do test "PlutusScript" do let - distribution = withStakeKey privateStakeKey + distribution = withStakeKey privateStakeKeyForDist [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] @@ -209,7 +213,7 @@ suite = do test "NativeScript" do let - distribution = withStakeKey privateStakeKey + distribution = withStakeKey privateStakeKeyForDist [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] @@ -253,7 +257,7 @@ suite = do test "Pool registration & retirement" do let - distribution = withStakeKey privateStakeKey + distribution = withStakeKey privateStakeKeyForDist [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] @@ -372,7 +376,7 @@ suite = do "Plutus Stake script: delegate to existing pool & withdraw rewards" do let - distribution = withStakeKey privateStakeKey + distribution = withStakeKey privateStakeKeyForDist [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] @@ -481,7 +485,7 @@ suite = do [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] /\ - withStakeKey privateStakeKey + withStakeKey privateStakeKeyForDist [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] @@ -591,7 +595,7 @@ suite = do skip $ test "PubKey: delegate to existing pool & withdraw rewards" do let - distribution = withStakeKey privateStakeKey + distribution = withStakeKey privateStakeKeyForDist [ BigNum.fromInt 1_000_000_000 , BigNum.fromInt 2_000_000_000 ] @@ -685,3 +689,9 @@ suite = do , epochSize = Just $ UInt.fromInt 80 } } + +withStakeKey :: PrivateStakeKey -> InitialUTxOs -> InitialUTxOsWithStakeKey +withStakeKey = InitialUTxOsWithStakeKey + +privateStakeKeyForDist :: PrivateStakeKey +privateStakeKeyForDist = privateStakeKey diff --git a/test/Plutip/Utils.purs b/test/Testnet/Utils.purs similarity index 96% rename from test/Plutip/Utils.purs rename to test/Testnet/Utils.purs index 42e4e87e4..f9be6991d 100644 --- a/test/Plutip/Utils.purs +++ b/test/Testnet/Utils.purs @@ -1,4 +1,4 @@ -module Test.Ctl.Plutip.Utils +module Test.Ctl.Testnet.Utils ( submitAndLog , getLockedInputs ) where diff --git a/test/Plutip/UtxoDistribution.purs b/test/Testnet/UtxoDistribution.purs similarity index 95% rename from test/Plutip/UtxoDistribution.purs rename to test/Testnet/UtxoDistribution.purs index 11cf6f481..dd6743ac1 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Testnet/UtxoDistribution.purs @@ -1,10 +1,10 @@ -module Test.Ctl.Plutip.UtxoDistribution +module Test.Ctl.Testnet.UtxoDistribution ( ArbitraryUtxoDistr , assertContract , assertCorrectDistribution , assertNoUtxosAtAddress , assertNoUtxosAtEnterpriseAddress - , assertUtxosAtPlutipWalletAddress + , assertUtxosAtTestnetWalletAddress , checkUtxoDistribution , genInitialUtxo , ppArbitraryUtxoDistr @@ -25,13 +25,13 @@ import Cardano.Types.Address (Address(EnterpriseAddress)) import Cardano.Types.BigNum as BigNum import Contract.Address (Address, getNetworkId) import Contract.Monad (Contract, liftedM) -import Contract.Test.Plutip +import Contract.Test.Testnet ( class UtxoDistribution , InitialUTxOs , InitialUTxOsWithStakeKey(InitialUTxOsWithStakeKey) + , defaultTestnetConfig , withStakeKey ) -import Contract.Test.Testnet (defaultTestnetConfig) import Contract.Utxos (utxosAt) import Contract.Value (Value, lovelaceValueOf) import Contract.Wallet @@ -60,7 +60,7 @@ import Effect.Exception (throw) import Mote (group, test) import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) -import Test.Ctl.Plutip.Common (privateStakeKey) +import Test.Ctl.Testnet.Common (privateStakeKey) import Test.QuickCheck (class Arbitrary, arbitrary) import Test.QuickCheck.Gen ( Gen @@ -128,7 +128,7 @@ checkUtxoDistribution distr wallets = do let walletsArray = keyWallets (Proxy :: Proxy distr) wallets walletUtxos = encodeDistribution distr - for_ walletsArray assertUtxosAtPlutipWalletAddress + for_ walletsArray assertUtxosAtTestnetWalletAddress assertCorrectDistribution $ zip walletsArray walletUtxos -- TODO: minimum value of 1 ada is hardcoded, tests become flaky below @@ -197,14 +197,14 @@ withArbUtxoDistr d f = case d of assertContract :: String -> Boolean -> Contract Unit assertContract msg cond = if cond then pure unit else liftEffect $ throw msg --- | For a plutip test wallet, assert that any utxos held by the +-- | For a testnet wallet, assert that any utxos held by the -- | wallet are at the expected address. If the wallet has a stake -- | key, this function assumes the expected address is the base -- | address, otherwise it assumes the expected address is the -- | enterprise address. -assertUtxosAtPlutipWalletAddress +assertUtxosAtTestnetWalletAddress :: KeyWallet -> Contract Unit -assertUtxosAtPlutipWalletAddress wallet = withKeyWallet wallet do +assertUtxosAtTestnetWalletAddress wallet = withKeyWallet wallet do maybeStake <- join <<< head <$> ownStakePubKeyHashes when (isJust maybeStake) $ assertNoUtxosAtEnterpriseAddress wallet From 64028db993083b09ff9875a59def48e2f84de04b Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Thu, 11 Jul 2024 15:16:50 -0300 Subject: [PATCH 288/373] Fix broken links --- CHANGELOG.md | 2 +- doc/development.md | 8 ++++---- doc/staking.md | 2 +- doc/test-utils.md | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fa31a775..29ee0921a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,7 +107,7 @@ Starting from this version, CTL does not use Plutus-domain types anymore. This c - Sharing wallets between Plutip tests - see [the docs for this feature](./doc/plutip-testing.md#sharing-wallet-state-between-tests) ([#1585](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1585)) - `runPlutipTestPlan` is a new function that executes a `ContractTestPlan`. - `sameWallets` is a new function that creates a `ContractTestPlan` from a `UtxoDistribution` and a `TestPlanM` of the same wallets running different `Contract`s. -- new `onClusterStartup` hook that allows to get cluster startup parameters (private keys, `cardano-node` socket and config paths). See [`Test.Ctl.Plutip.Contract.ClusterParameters`](./test/Plutip/Contract/ClusterParameters.purs). ([#1610](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1610)) +- new `onClusterStartup` hook that allows to get cluster startup parameters (private keys, `cardano-node` socket and config paths). See [`Test.Ctl.Plutip.Contract.ClusterParameters`](https://github.com/Plutonomicon/cardano-transaction-lib/blob/a5f9947/test/Plutip/Contract/ClusterParameters.purs). ([#1610](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1610)) ### Changed diff --git a/doc/development.md b/doc/development.md index 6ffc51091..e5c7c81af 100644 --- a/doc/development.md +++ b/doc/development.md @@ -73,8 +73,8 @@ To **build** the project **without bundling and for a NodeJS environment**: - `npm run unit-test` for unit tests (no need for a runtime) - [entry point](../test/Unit.purs) - `npm run integration-test` for integration tests (requires a [runtime](./runtime.md#ctl-backend)) - [entry point](../test/Integration.purs) -- `npm run plutip-test` for Plutip integration tests (does not require a runtime) - [entry point](../test/Plutip.purs) -- `npm run staking-test` to run [Plutip](./plutip-testing.md)-powered tests for ADA staking functionality - [entry point](../test/Plutip/Staking.purs) +- `npm run testnet-test` for Cardano Testnet integration tests (does not require a runtime) - [entry point](../test/Testnet.purs) +- `npm run staking-test` to run [Cardano Testnet](./cardano-testnet-testing.md)-powered tests for ADA staking functionality - [entry point](../test/Testnet/Staking.purs) - `npm run blockfrost-test` for [Blockfrost-powered tests](./blockfrost.md) (does not require a runtime, but needs [some setup](./blockfrost.md#setting-up-a-blockfrost-powered-test-suite)) - [entry point](../test/Blockfrost/Contract.purs) - `npm run blockfrost-local-test` for self-hosted [Blockfrost-powered tests](./blockfrost.md) (requires a [local Blockfrost runtime](./blockfrost.md#running-blockfrost-locally)) - [entry point](../test/Blockfrost/Contract.purs) - `npm run e2e-test` for [tests with a headless browser](./e2e-testing.md) (requires a runtime and the tests served via HTTP: `npm run start-runtime` and `npm run e2e-serve` or `esbuild-serve`) @@ -85,8 +85,8 @@ Here and below, `` should be replaced with [one of the supported systems - Unit tests: `nix build .#checks..ctl-unit-test` - [E2E tests in Nix with wallet mocks](./e2e-testing.md#using-cip-30-mock-with-plutip): `nix build -L .#checks..ctl-e2e-test` -- Contract tests ([Plutip](./plutip-testing.md)): `nix build -L .#checks..ctl-plutip-test` -- [Staking](./staking.md) tests ([Plutip](./plutip-testing.md)): `nix build -L .#checks..ctl-staking-test` +- Contract tests ([Cardano Testnet](./cardano-testnet-testing.md)): `nix build -L .#checks..ctl-local-testnet-test` +- [Staking](./staking.md) tests ([Cardano Testnet](./cardano-testnet-testing.md)): `nix build -L .#checks..ctl-staking-test` #### Nix checks diff --git a/doc/staking.md b/doc/staking.md index a25f62006..a93ba783e 100644 --- a/doc/staking.md +++ b/doc/staking.md @@ -14,4 +14,4 @@ CTL supports all operations with stake: - Receiving rewards - Withdrawing rewards -[Our tests](../test/Plutip/Staking.purs) include examples for each of the supported cases. +[Our tests](../test/Testnet/Staking.purs) include examples for each of the supported cases. diff --git a/doc/test-utils.md b/doc/test-utils.md index 0290683dc..f2339d92b 100644 --- a/doc/test-utils.md +++ b/doc/test-utils.md @@ -87,6 +87,6 @@ type ContractCheck a = Particular values can be constructed with utility functions, as demonstrated in the [ContractTestUtils example](../examples/ContractTestUtils.purs) (see `mkAssertions`). -An example for using checks in the tests is [here](../test/Plutip/Contract/Assert.purs). +An example for using checks in the tests is [here](../test/Testnet/Contract/Assert.purs). All the functions require `Labeled` arguments, that can be constructed with `label` function; or `noLabel`, if descriptive names in error messages are not needed. From e2ada41973a78d2513425afea05bbdae088d3e97 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Thu, 11 Jul 2024 17:57:35 -0300 Subject: [PATCH 289/373] Remove `Contract.Test.Plutip` --- src/Contract/Test/Plutip.purs | 621 ---------------------- src/Contract/Test/Utils.purs | 2 +- src/Internal/Testnet/Contract.purs | 8 +- templates/ctl-scaffold/flake.lock | 4 +- templates/ctl-scaffold/flake.nix | 4 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +- templates/ctl-scaffold/spago.dhall | 1 + templates/ctl-scaffold/test/Main.purs | 18 +- 9 files changed, 24 insertions(+), 642 deletions(-) delete mode 100644 src/Contract/Test/Plutip.purs diff --git a/src/Contract/Test/Plutip.purs b/src/Contract/Test/Plutip.purs deleted file mode 100644 index 80e3cc3c7..000000000 --- a/src/Contract/Test/Plutip.purs +++ /dev/null @@ -1,621 +0,0 @@ --- | This module contains everything needed for `Contract` testing in Plutip --- | environment. -module Contract.Test.Plutip - ( PlutipTest - , PlutipConfig - , PlutipTestPlan - , testPlutipContracts - , defaultPlutipConfig - , module X - ) where - -import Prelude - -import Aeson - ( class DecodeAeson - , class EncodeAeson - , JsonDecodeError(TypeMismatch, UnexpectedValue) - , decodeAeson - , encodeAeson - , finiteNumber - , parseJsonStringToAeson - , stringifyAeson - , toStringifiedNumbersJson - , (.:) - ) -import Affjax (defaultRequest) as Affjax -import Affjax.RequestBody as RequestBody -import Affjax.RequestHeader as Header -import Affjax.ResponseFormat as Affjax.ResponseFormat -import Cardano.Types (PrivateKey, RawBytes(RawBytes)) -import Cardano.Types.BigNum as BigNum -import Cardano.Types.PrivateKey as PrivateKey -import Contract.ClientError - ( ClientError(ClientHttpError, ClientDecodeJsonError) - ) -import Contract.Config (Hooks, ServerConfig) -import Contract.Monad (ContractEnv, liftContractM, runContractInEnv) -import Contract.Monad (runContractInEnv) as X -import Contract.Prelude (fst, liftEither, wrap) -import Contract.Test (class UtxoDistribution, InitialUTxOs) -import Contract.Wallet (withKeyWallet) as X -import Control.Monad.Error.Class (throwError) -import Control.Monad.Trans.Class (lift) -import Ctl.Internal.Affjax (request) as Affjax -import Ctl.Internal.Contract.Hooks (emptyHooks) -import Ctl.Internal.Contract.WaitUntilSlot (waitNSlots) -import Ctl.Internal.Helpers (unsafeFromJust, (<>)) -import Ctl.Internal.Service.Error (pprintClientError) -import Ctl.Internal.Spawn (ManagedProcess, isPortAvailable, spawn, stop) -import Ctl.Internal.Test.ContractTest - ( ContractTest - , ContractTestPlan(ContractTestPlan) - ) -import Ctl.Internal.Test.ContractTest (ContractTestPlan) as Server -import Ctl.Internal.Test.ContractTest (noWallet, sameWallets, withWallets) as X -import Ctl.Internal.Test.UtxoDistribution - ( class UtxoDistribution - , InitialUTxODistribution - , InitialUTxOs - , InitialUTxOsWithStakeKey(InitialUTxOsWithStakeKey) - , UtxoAmount - , withStakeKey - ) as X -import Ctl.Internal.Test.UtxoDistribution - ( InitialUTxODistribution - , decodeWallets - , encodeDistribution - , keyWallets - , transferFundsFromEnterpriseToBase - ) -import Ctl.Internal.Testnet.Contract (execDistribution) -import Ctl.Internal.Testnet.Server - ( makeClusterContractEnv - , startKupo - , startOgmios - ) -import Ctl.Internal.Testnet.Utils (after, runCleanup, whenError) -import Ctl.Internal.Wallet.Key (PrivatePaymentKey(PrivatePaymentKey)) -import Data.Array as Array -import Data.Bifunctor (lmap) -import Data.ByteArray (hexToByteArray) -import Data.Either (Either(Left, Right), either, note) -import Data.Foldable (fold, foldMap) -import Data.Generic.Rep (class Generic) -import Data.HTTP.Method as Method -import Data.Log.Level (LogLevel(Trace)) -import Data.Log.Message (Message) -import Data.Maybe (Maybe(Just, Nothing), fromMaybe) -import Data.Newtype (class Newtype, unwrap) -import Data.Show.Generic (genericShow) -import Data.Time.Duration (Seconds(Seconds)) -import Data.Traversable (for, for_, traverse_) -import Data.Tuple.Nested (type (/\), (/\)) -import Data.UInt (UInt) -import Data.UInt as UInt -import Effect.Aff (Aff, Milliseconds(Milliseconds), try) -import Effect.Aff (bracket) as Aff -import Effect.Aff.Class (liftAff) -import Effect.Aff.Retry - ( RetryPolicy - , constantDelay - , limitRetriesByCumulativeDelay - , recovering - ) -import Effect.Class (liftEffect) -import Effect.Exception (error, message, throw) -import Effect.Ref (Ref) -import Effect.Ref as Ref -import Mote (bracket) as Mote -import Mote.Monad (mapTest) -import Mote.TestPlanM (TestPlanM) -import Node.ChildProcess (defaultSpawnOptions) -import Partial.Unsafe (unsafePartial) -import Safe.Coerce (coerce) -import Type.Prelude (Proxy(Proxy)) - --- | Type synonym for backwards compatibility. -type PlutipTest = ContractTest -type PlutipTestPlan = Server.ContractTestPlan - --- | A config that is used to run tests on Plutip clusters. --- | Note that the test suite starts the services on the specified ports. -type PlutipConfig = - { host :: String - , port :: UInt - , logLevel :: LogLevel - -- Server configs are used to deploy the corresponding services: - , ogmiosConfig :: ServerConfig - , kupoConfig :: ServerConfig - , customLogger :: Maybe (LogLevel -> Message -> Aff Unit) - , suppressLogs :: Boolean - , hooks :: Hooks - , clusterConfig :: - { slotLength :: Seconds - , epochSize :: Maybe UInt - , maxTxSize :: Maybe UInt - , raiseExUnitsToMax :: Boolean - } - } - --- | A default value for `PlutipConfig` type. -defaultPlutipConfig :: PlutipConfig -defaultPlutipConfig = - { host: "127.0.0.1" - , port: UInt.fromInt 8082 - , logLevel: Trace - -- Server configs are used to deploy the corresponding services. - , ogmiosConfig: - { port: UInt.fromInt 1338 - , host: "127.0.0.1" - , secure: false - , path: Nothing - } - , kupoConfig: - { port: UInt.fromInt 1443 - , host: "127.0.0.1" - , secure: false - , path: Nothing - } - , suppressLogs: true - , customLogger: Nothing - , hooks: emptyHooks - , clusterConfig: - { slotLength: Seconds 0.1 - , epochSize: Nothing - , maxTxSize: Nothing - , raiseExUnitsToMax: false - } - } - --- | Run several `Contract`s in tests in a (single) Plutip environment (plutip-server and cluster, kupo, etc.). --- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. --- | Namely, brackets are run for each of the top-level groups and tests --- | inside the bracket. --- | If you wish to only set up Plutip once, ensure all tests that are passed --- | to `testPlutipContracts` are wrapped in a single group. --- | https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#testing-with-mote -testPlutipContracts - :: PlutipConfig - -> TestPlanM ContractTest Unit - -> TestPlanM (Aff Unit) Unit -testPlutipContracts plutipCfg tp = do - plutipTestPlan <- lift $ execDistribution tp - runPlutipTestPlan plutipCfg plutipTestPlan - --- | Run a `ContractTestPlan` in a (single) Plutip environment. --- | Supports wallet reuse - see docs on sharing wallet state between --- | wallets in `doc/plutip-testing.md`. -runPlutipTestPlan - :: PlutipConfig - -> ContractTestPlan - -> TestPlanM (Aff Unit) Unit -runPlutipTestPlan plutipCfg (ContractTestPlan runContractTestPlan) = do - -- Modify tests to pluck out parts of a single combined distribution - runContractTestPlan \distr tests -> do - cleanupRef <- liftEffect $ Ref.new mempty - -- Sets a single Mote bracket at the top level, it will be run for all - -- immediate tests and groups - bracket (startPlutipContractEnv plutipCfg distr cleanupRef) - (runCleanup cleanupRef) - $ flip mapTest tests \test { env, wallets, printLogs, clearLogs } -> do - whenError printLogs (runContractInEnv env (test wallets)) - clearLogs - where - -- `MoteT`'s bracket doesn't support supplying the constructed resource into - -- the main action, so we use a `Ref` to store and read the result. - bracket - :: forall (a :: Type) (b :: Type) - . Aff a - -> Aff Unit - -> TestPlanM (a -> Aff b) Unit - -> TestPlanM (Aff b) Unit - bracket before' after' act = do - resultRef <- liftEffect $ Ref.new (Left $ error "Plutip not initialized") - let - before = do - res <- try $ before' - liftEffect $ Ref.write res resultRef - pure res - after = const $ after' - Mote.bracket { before, after } $ flip mapTest act \t -> do - result <- liftEffect $ Ref.read resultRef >>= liftEither - t result - --- | Provide a `ContractEnv` connected to Plutip. --- | Can be used to run multiple `Contract`s using `runContractInEnv`. --- | Resources which are allocated in the `Aff` computation must be de-allocated --- | via the `Ref (Array (Aff Unit))` parameter, even if the computation did not --- | succesfully complete. --- Startup is implemented sequentially, rather than with nested `Aff.bracket`, --- to allow non-`Aff` computations to occur between setup and cleanup. -startPlutipContractEnv - :: forall (distr :: Type) (wallets :: Type) - . UtxoDistribution distr wallets - => PlutipConfig - -> distr - -> Ref (Array (Aff Unit)) - -> Aff - { env :: ContractEnv - , wallets :: wallets - , printLogs :: Aff Unit - , clearLogs :: Aff Unit - } -startPlutipContractEnv plutipCfg distr cleanupRef = do - configCheck plutipCfg - tryWithReport startPlutipServer' "Could not start Plutip server" - (ourKey /\ response) <- tryWithReport startPlutipCluster' - "Could not start Plutip cluster" - tryWithReport (startOgmios' response) "Could not start Ogmios" - tryWithReport (startKupo' response) "Could not start Kupo" - { env, printLogs, clearLogs } <- makeClusterContractEnv cleanupRef plutipCfg - wallets <- mkWallets' env ourKey response - void $ try $ liftEffect do - for_ env.hooks.onClusterStartup \clusterParamsCb -> do - clusterParamsCb - { privateKeys: response.privateKeys <#> unwrap - , nodeSocketPath: response.nodeSocketPath - , nodeConfigPath: response.nodeConfigPath - , privateKeysDirectory: response.keysDirectory - } - pure - { env - , wallets - , printLogs - , clearLogs - } - where - tryWithReport - :: forall (a :: Type) - . Aff a - -> String - -> Aff a - tryWithReport what prefix = do - result <- try what - case result of - Left err -> throwError $ error $ prefix <> ": " <> message err - Right result' -> pure result' - - startPlutipServer' :: Aff Unit - startPlutipServer' = - cleanupBracket - cleanupRef - (startPlutipServer plutipCfg) - (stopChildProcessWithPort plutipCfg.port) - (const $ checkPlutipServer plutipCfg) - - startPlutipCluster' - :: Aff (PrivatePaymentKey /\ ClusterStartupParameters) - startPlutipCluster' = do - let - distrArray = - encodeDistribution $ - ourInitialUtxos (encodeDistribution distr) /\ - distr - for_ distrArray $ traverse_ \n -> when (n < BigNum.fromInt 1_000_000) do - liftEffect $ throw $ "UTxO is too low: " <> BigNum.toString n <> - ", must be at least 1_000_000 Lovelace" - cleanupBracket - cleanupRef - (startPlutipCluster plutipCfg distrArray) - (const $ void $ stopPlutipCluster plutipCfg) - pure - - startOgmios' :: ClusterStartupParameters -> Aff Unit - startOgmios' response = - void - $ after (startOgmios plutipCfg response) - $ stopChildProcessWithPort plutipCfg.ogmiosConfig.port - - startKupo' :: ClusterStartupParameters -> Aff Unit - startKupo' response = - void - $ after (startKupo plutipCfg response cleanupRef) - $ fst - >>> stopChildProcessWithPort plutipCfg.kupoConfig.port - - mkWallets' - :: ContractEnv - -> PrivatePaymentKey - -> ClusterStartupParameters - -> Aff wallets - mkWallets' env ourKey response = do - runContractInEnv - env { customLogger = Just (\_ _ -> pure unit) } - do - wallets <- - liftContractM - "Impossible happened: could not decode wallets. Please report as bug" - $ decodeWallets distr (coerce response.privateKeys) - let walletsArray = keyWallets (Proxy :: Proxy distr) wallets - void $ waitNSlots BigNum.one - transferFundsFromEnterpriseToBase ourKey walletsArray - pure wallets - -startPlutipServer :: PlutipConfig -> Aff ManagedProcess -startPlutipServer cfg = do - spawn "plutip-server" [ "-p", UInt.toString cfg.port ] - defaultSpawnOptions - Nothing - --- | Start the plutip cluster, initializing the state with the given --- | UTxO distribution. Also initializes an extra payment key (aka --- | `ourKey`) with some UTxOs for use with further plutip --- | setup. `ourKey` has funds proportional to the total amount of the --- | UTxOs in the passed distribution, so it can be used to handle --- | transaction fees. -startPlutipCluster - :: PlutipConfig - -> InitialUTxODistribution - -> Aff (PrivatePaymentKey /\ ClusterStartupParameters) -startPlutipCluster cfg keysToGenerate = do - let - url = mkServerEndpointUrl cfg "start" - -- TODO: Non-default values for `slotLength` and `epochSize` break staking - -- rewards, see https://github.com/mlabs-haskell/plutip/issues/149 - epochSize = fromMaybe (UInt.fromInt 80) cfg.clusterConfig.epochSize - res <- do - response <- liftAff - ( Affjax.request - Affjax.defaultRequest - { content = Just - $ RequestBody.String - $ stringifyAeson - $ encodeAeson - $ ClusterStartupRequest - { keysToGenerate - , epochSize - , slotLength: cfg.clusterConfig.slotLength - , maxTxSize: cfg.clusterConfig.maxTxSize - , raiseExUnitsToMax: cfg.clusterConfig.raiseExUnitsToMax - } - , responseFormat = Affjax.ResponseFormat.string - , headers = [ Header.ContentType (wrap "application/json") ] - , url = url - , method = Left Method.POST - } - ) - pure $ response # either - (Left <<< ClientHttpError) - \{ body } -> lmap (ClientDecodeJsonError body) - $ (decodeAeson <=< parseJsonStringToAeson) body - either (liftEffect <<< throw <<< pprintClientError) pure res >>= - case _ of - ClusterStartupFailure reason -> do - liftEffect $ throw - $ "Failed to start up cluster. Reason: " - <> show reason - ClusterStartupSuccess response@{ privateKeys } -> - case Array.uncons privateKeys of - Nothing -> - liftEffect $ throw $ - "Impossible happened: insufficient private keys provided by plutip. Please report as bug." - Just { head: PrivateKeyResponse ourKey, tail } -> - pure $ PrivatePaymentKey ourKey /\ response { privateKeys = tail } - -stopPlutipCluster :: PlutipConfig -> Aff StopClusterResponse -stopPlutipCluster cfg = do - let url = mkServerEndpointUrl cfg "stop" - res <- do - response <- liftAff - ( Affjax.request - Affjax.defaultRequest - { content = Just - $ RequestBody.String - $ stringifyAeson - $ encodeAeson - $ StopClusterRequest - , responseFormat = Affjax.ResponseFormat.string - , headers = [ Header.ContentType (wrap "application/json") ] - , url = url - , method = Left Method.POST - } - ) - pure $ response # either - (Left <<< ClientHttpError) - \{ body } -> lmap (ClientDecodeJsonError body) - $ (decodeAeson <=< parseJsonStringToAeson) - body - either (liftEffect <<< throw <<< show) pure res - --- Similar to `Aff.bracket`, except cleanup is pushed onto a stack to be run --- later. -cleanupBracket - :: forall (a :: Type) (b :: Type) - . Ref (Array (Aff Unit)) - -> Aff a - -> (a -> Aff Unit) - -> (a -> Aff b) - -> Aff b -cleanupBracket cleanupRef before after action = do - Aff.bracket - before - (\res -> liftEffect $ Ref.modify_ ([ after res ] <> _) cleanupRef) - action - --- | Kill a process and wait for it to stop listening on a specific port. -stopChildProcessWithPort :: UInt -> ManagedProcess -> Aff Unit -stopChildProcessWithPort port childProcess = do - stop childProcess - void $ recovering defaultRetryPolicy ([ \_ _ -> pure true ]) - \_ -> do - isAvailable <- isPortAvailable port - unless isAvailable do - liftEffect $ throw "retry" - -checkPlutipServer :: PlutipConfig -> Aff Unit -checkPlutipServer cfg = do - -- We are trying to call stopPlutipCluster endpoint to ensure that - -- `plutip-server` has started. - void - $ recovering defaultRetryPolicy - ([ \_ _ -> pure true ]) - $ const - $ stopPlutipCluster cfg - -defaultRetryPolicy :: RetryPolicy -defaultRetryPolicy = limitRetriesByCumulativeDelay (Milliseconds 3000.00) $ - constantDelay (Milliseconds 100.0) - -type ErrorMessage = String -data StopClusterResponse = StopClusterSuccess | StopClusterFailure ErrorMessage - -data StopClusterRequest = StopClusterRequest - -derive instance Generic StopClusterResponse _ - -instance EncodeAeson StopClusterRequest where - encodeAeson _ = encodeAeson ([] :: Array Int) - -instance Show StopClusterResponse where - show = genericShow - -instance DecodeAeson StopClusterResponse where - decodeAeson aeson = do - obj <- decodeAeson aeson - obj .: "tag" >>= case _ of - "StopClusterSuccess" -> pure StopClusterSuccess - "StopClusterFailure" -> do - failure <- obj .: "contents" - StopClusterFailure <$> decodeAeson failure - _ -> do - Left (UnexpectedValue (toStringifiedNumbersJson aeson)) - -type FilePath = String - -type ClusterStartupParameters = - { privateKeys :: Array PrivateKeyResponse - , nodeSocketPath :: FilePath - , nodeConfigPath :: FilePath - , keysDirectory :: FilePath - } - -newtype PrivateKeyResponse = PrivateKeyResponse PrivateKey - -derive instance Newtype PrivateKeyResponse _ -derive instance Generic PrivateKeyResponse _ - -instance Show PrivateKeyResponse where - show _ = "(PrivateKeyResponse \"\")" - -instance DecodeAeson PrivateKeyResponse where - decodeAeson json = do - cborStr <- decodeAeson json - cborBytes <- note err $ hexToByteArray cborStr - PrivateKeyResponse <$> note err - (PrivateKey.fromRawBytes (RawBytes cborBytes)) - where - err :: JsonDecodeError - err = TypeMismatch "PrivateKey" - -newtype ClusterStartupRequest = ClusterStartupRequest - { keysToGenerate :: InitialUTxODistribution - , epochSize :: UInt - , slotLength :: Seconds - , maxTxSize :: Maybe UInt - , raiseExUnitsToMax :: Boolean - } - -instance EncodeAeson ClusterStartupRequest where - encodeAeson - ( ClusterStartupRequest - { keysToGenerate - , epochSize - , slotLength: Seconds slotLength - , maxTxSize - , raiseExUnitsToMax - } - ) = encodeAeson - { keysToGenerate - , epochSize - , slotLength: unsafeFromJust "instance EncodeAeson ClusterStartupRequest" $ - finiteNumber slotLength - , maxTxSize - , raiseExUnitsToMax - } - -data ClusterStartupFailureReason - = ClusterIsRunningAlready - | NegativeLovelaces - | NodeConfigNotFound - -derive instance Generic ClusterStartupFailureReason _ - -instance Show ClusterStartupFailureReason where - show = genericShow - -instance DecodeAeson ClusterStartupFailureReason where - decodeAeson aeson = do - decodeAeson aeson >>= case _ of - "ClusterIsRunningAlready" -> do - pure ClusterIsRunningAlready - "NegativeLovelaces" -> pure NegativeLovelaces - "NodeConfigNotFound" -> pure NodeConfigNotFound - _ -> do - Left (UnexpectedValue (toStringifiedNumbersJson aeson)) - -data StartClusterResponse - = ClusterStartupFailure ClusterStartupFailureReason - | ClusterStartupSuccess ClusterStartupParameters - -derive instance Generic StartClusterResponse _ - -instance Show StartClusterResponse where - show = genericShow - -instance DecodeAeson StartClusterResponse where - decodeAeson aeson = do - obj <- decodeAeson aeson - obj .: "tag" >>= case _ of - "ClusterStartupSuccess" -> do - contents <- obj .: "contents" - ClusterStartupSuccess <$> decodeAeson contents - "ClusterStartupFailure" -> do - failure <- obj .: "contents" - ClusterStartupFailure <$> decodeAeson failure - _ -> do - Left (UnexpectedValue (toStringifiedNumbersJson aeson)) - --- | Calculate the initial UTxOs needed for `ourKey` to cover --- | transaction costs for the given initial distribution -ourInitialUtxos :: InitialUTxODistribution -> InitialUTxOs -ourInitialUtxos utxoDistribution = - let - total = Array.foldr (\e acc -> unsafePartial $ fold e # append acc) - BigNum.zero - utxoDistribution - in - [ -- Take the total value of the UTxOs and add some extra on top - -- of it to cover the possible transaction fees. Also make sure - -- we don't request a 0 ada UTxO - unsafePartial $ append total (BigNum.fromInt 1_000_000) - ] - -mkServerEndpointUrl :: PlutipConfig -> String -> String -mkServerEndpointUrl cfg path = do - "http://" <> cfg.host <> ":" <> UInt.toString cfg.port <> path - --- | Throw an exception if `PlutipConfig` contains ports that are occupied. -configCheck :: PlutipConfig -> Aff Unit -configCheck cfg = - checkPortsAreFree - [ { port: cfg.port, service: "plutip-server" } - , { port: cfg.ogmiosConfig.port, service: "ogmios" } - , { port: cfg.kupoConfig.port, service: "kupo" } - ] - --- | Throw an exception if any of the given ports is occupied. -checkPortsAreFree :: Array { port :: UInt, service :: String } -> Aff Unit -checkPortsAreFree ports = do - occupiedServices <- Array.catMaybes <$> for ports \{ port, service } -> do - isPortAvailable port <#> if _ then Nothing else Just (port /\ service) - unless (Array.null occupiedServices) do - liftEffect $ throw - $ - "Unable to run the following services, because the ports are occupied:\ - \\n" - <> foldMap printServiceEntry occupiedServices - where - printServiceEntry :: UInt /\ String -> String - printServiceEntry (port /\ service) = - "- " <> service <> " (port: " <> show (UInt.toInt port) <> ")\n" diff --git a/src/Contract/Test/Utils.purs b/src/Contract/Test/Utils.purs index 8ad509696..d02298aa1 100644 --- a/src/Contract/Test/Utils.purs +++ b/src/Contract/Test/Utils.purs @@ -18,7 +18,7 @@ import Node.Process as Process foreign import exitCode :: Int -> Effect Unit -- | Attaches a custom handler on SIGINT to kill the fiber. --- | see https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#note-on-sigint +-- | see https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/cardano-testnet-testing.md#note-on-sigint interruptOnSignal :: forall a. Signal -> Fiber a -> Effect Unit interruptOnSignal signal fiber = Process.onSignal signal do launchAff_ do diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index b5bf55cbe..fe19afeaf 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -123,9 +123,9 @@ withTestnetContractEnv cfg distr cont = do -- | NOTE: This uses `MoteT`s bracketing, and thus has the same caveats. -- | Namely, brackets are run for each of the top-level groups and tests -- | inside the bracket. --- | If you wish to only set up Plutip once, ensure all tests that are passed --- | to `testPlutipContracts` are wrapped in a single group. --- | https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/plutip-testing.md#testing-with-mote FIXME +-- | If you wish to only set up Testnet once, ensure all tests that are passed +-- | to `testTestnetContracts` are wrapped in a single group. +-- | https://github.com/Plutonomicon/cardano-transaction-lib/blob/develop/doc/cardano-testnet-testing.md#testing-with-mote FIXME testTestnetContracts :: TestnetConfig -> TestPlanM ContractTest Unit @@ -136,7 +136,7 @@ testTestnetContracts cfg tp = do -- | Run a `ContractTestPlan` in a (single) cardano-testnet environment. -- | Supports wallet reuse - see docs on sharing wallet state between --- | wallets in `doc/plutip-testing.md`. FIXME +-- | wallets in `doc/cardano-testnet-testing.md`. FIXME runTestnetTestPlan :: TestnetConfig -> ContractTestPlan diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 76c942bfc..85a2bdca3 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -4503,13 +4503,13 @@ "narHash": "sha256-8P5jkszksOIEExjVXfnL1TSBhrjpfneEDuC+sqiii4w=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "095f5bee58690fd51af3d879ce2c5cd65bce4ee4", + "rev": "64028db993083b09ff9875a59def48e2f84de04b", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "095f5bee58690fd51af3d879ce2c5cd65bce4ee4", + "rev": "64028db993083b09ff9875a59def48e2f84de04b", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index e7dbcb55d..f5e2e76ae 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "095f5bee58690fd51af3d879ce2c5cd65bce4ee4"; + rev = "64028db993083b09ff9875a59def48e2f84de04b"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; @@ -158,7 +158,7 @@ pkgs = nixpkgsFor system; in { - ctl-scaffold-plutip-test = (psProjectFor pkgs).runPlutipTest { + ctl-scaffold-local-testnet-test = (psProjectFor pkgs).runLocalTestnetTest { testMain = "Test.Scaffold.Main"; }; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 001fb5415..58ea77dd4 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -416,7 +416,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "095f5bee58690fd51af3d879ce2c5cd65bce4ee4" + , version = "64028db993083b09ff9875a59def48e2f84de04b" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 270972243..e44a6f40f 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -259,11 +259,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "095f5bee58690fd51af3d879ce2c5cd65bce4ee4"; + version = "64028db993083b09ff9875a59def48e2f84de04b"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "095f5bee58690fd51af3d879ce2c5cd65bce4ee4"; - sha256 = "134blalb5gp01s27fzp9p2382d6mrgwmvm8q2c2f5c74rj967zph"; + rev = "64028db993083b09ff9875a59def48e2f84de04b" ; + sha256 = "157n05frzx7lzz165ph224gzghbkqs0layj8ghnwchzpkjkaggqy"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/spago.dhall b/templates/ctl-scaffold/spago.dhall index 40de0f604..5fd002bf5 100644 --- a/templates/ctl-scaffold/spago.dhall +++ b/templates/ctl-scaffold/spago.dhall @@ -23,6 +23,7 @@ You can edit this file as you like. , "plutus-types" , "posix-types" , "prelude" + , "safely" , "spec" ] , packages = ./packages.dhall diff --git a/templates/ctl-scaffold/test/Main.purs b/templates/ctl-scaffold/test/Main.purs index 3a5b47d42..a48919ac7 100644 --- a/templates/ctl-scaffold/test/Main.purs +++ b/templates/ctl-scaffold/test/Main.purs @@ -1,4 +1,4 @@ --- | This module implements a test suite that uses Plutip to automate running +-- | This module implements a test suite that uses Cardano Testnet to automate running -- | contracts in temporary, private networks. module Test.Scaffold.Main (main, suite) where @@ -6,13 +6,15 @@ import Contract.Prelude import Contract.Numeric.BigNum as BigNum import Contract.Test.Mote (TestPlanM, interpretWithConfig) -import Contract.Test.Plutip - ( PlutipTest - , defaultPlutipConfig - , testPlutipContracts +import Contract.Test.Testnet + ( ContractTest + , InitialUTxOs + , defaultTestnetConfig + , withKeyWallet + , withWallets ) -import Contract.Test.Testnet (InitialUTxOs, withKeyWallet, withWallets) import Contract.Test.Utils (exitCode, interruptOnSignal) +import Ctl.Internal.Testnet.Contract (testTestnetContracts) import Data.Posix.Signal (Signal(SIGINT)) import Effect.Aff ( Milliseconds(Milliseconds) @@ -30,9 +32,9 @@ main = interruptOnSignal SIGINT =<< launchAff do flip cancelWith (effectCanceler (exitCode 1)) do interpretWithConfig defaultConfig { timeout = Just $ Milliseconds 70_000.0, exit = true } $ - testPlutipContracts defaultPlutipConfig suite + testTestnetContracts defaultTestnetConfig suite -suite :: TestPlanM PlutipTest Unit +suite :: TestPlanM ContractTest Unit suite = do group "Project tests" do test "Print PubKey" do From b4d7f4eef26681fd2c0eff824b2520397c71cab9 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Fri, 12 Jul 2024 13:56:32 -0300 Subject: [PATCH 290/373] Partially update documentation --- README.md | 2 +- doc/cardano-testnet-testing.md | 428 ++++++++++++++++++++++++++++++++- doc/comparisons.md | 2 +- doc/ctl-as-dependency.md | 6 +- doc/development.md | 2 +- doc/e2e-testing.md | 14 +- doc/faq.md | 7 - doc/getting-started.md | 6 +- doc/key-management.md | 2 +- doc/testing.md | 12 +- src/Contract/Test/Testnet.purs | 5 + 11 files changed, 452 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index a4ded1dce..9ccdbe83b 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Please explore our documentation to discover how to use CTL, how to set up its r - [Importing Plutus Scripts](./doc/importing-scripts.md) - [Migrating from Plutus Application Backend to CTL](./doc/plutus-comparison.md) - [Overview of testing approaches](./doc/testing.md) - - [Testing on local testnets with Plutip](./doc/plutip-testing.md) + - [Testing on local Cardano testnets](./doc/cardano-testnet-testing.md) - [End-to-end dApp testing with headless browsers](./doc/e2e-testing.md) - [Assertion utilities for testing](./doc/test-utils.md) - [Using a directory with private keys to run tests](./doc/keydir.md) diff --git a/doc/cardano-testnet-testing.md b/doc/cardano-testnet-testing.md index 23aad89f8..fdb430a1d 100644 --- a/doc/cardano-testnet-testing.md +++ b/doc/cardano-testnet-testing.md @@ -1,10 +1,432 @@ +# CTL integration with Cardano Testnet + +**Table of Contents** -- [CTL integration with Cardano Testnet](#ctl-integration-with-cardano-testnet) +- [Architecture](#architecture) +- [Testing contracts](#testing-contracts) + - [Testing with Mote](#testing-with-mote) + - [Overview](#overview) + - [Using Mote testing interface](#using-mote-testing-interface) + - [Internal implementation overview](#internal-implementation-overview) + - [Testing in Aff context](#testing-in-aff-context) + - [Sharing wallet state between tests](#sharing-wallet-state-between-tests) + - [Writing checks in tests](#writing-checks-in-tests) + - [Note on SIGINT](#note-on-sigint) + - [Testing with Nix](#testing-with-nix) +- [Cluster configuration options](#cluster-configuration-options) + - [Current limitations](#current-limitations) +- [Using addresses with staking key components](#using-addresses-with-staking-key-components) +- [Limitations](#limitations) +- [See also](#see-also) +## Architecture -# CTL integration with Cardano Testnet +CTL depends on a number of binaries in the `$PATH` to execute tests on the +Cardano Testnet: + +- [`cardano-node`](https://github.com/IntersectMBO/cardano-node) to connect to the Cardano Testnet +- [`ogmios`](https://ogmios.dev/) +- [`kupo`](https://cardanosolutions.github.io/kupo/) + +All of these are provided by CTL's `overlays.runtime` (and are provided in +CTL's own `devShell`). You **must** use the `runtime` overlay or otherwise make +the services available in your package set (e.g. by defining them within your +own `overlays` when instantiating `nixpkgs`) as `purescriptProject.runTest` +expects all of them; an example of using CTL's overlays is in the +[`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix#L35). + +The services are NOT run by `docker-compose` (via `arion`) as is the case with +`launchCtlRuntime`: instead, they are started and stopped on each CTL +`ContractTest` execution by CTL itself. + +If you have based your project on the [`ctl-scaffold` +template](../templates/ctl-scaffold) then you have two options to run tests on +the Cardano Testnet: +1. `nix develop` followed by `npm run test` (recommended for development) +2. `nix run .#checks.x86_64-linux.ctl-scaffold-local-testnet-test` + * where you'd usually replace `x86_64-linux` with the system you run tests on + * and `ctl-scaffold-local-testnet-test` with the name of the test derivation for your project; + * note that building of your project via Nix will fail in case there are any PureScript compile-time warnings. + +## Testing contracts + +CTL can help you test the offchain `Contract`s from your project (and +consequently the interaction of onchain and offchain code) by connecting to the +Cardano Testnet and making all your `Contract`s interact with it. + +There are two approaches to writing such tests. + +### Testing with Mote + +#### Overview + +[Mote](https://github.com/garyb/purescript-mote) is a DSL for defining and +grouping tests (plus other quality of life features, e.g. skipping marked +tests). + +First (and more widely used) approach is to first build a tree of tests (in +CTL's case a tree of `ContractTest` types -- basically a function from some +distribution of funds to a `Contract a`) via Mote and then use the +`Contract.Test.Testnet.testTestnetContracts` function to execute them. This +allows setting up the Cardano Testnet only once per top-level groups and tests +passed to the `testTestnetContracts` and then use it in many independent tests. +The function will interpret a `MoteT` (effectful test tree) into `Aff`, which +you can then actually run. + +The [`ctl-scaffold` template](../templates/ctl-scaffold) provides a simple +`Mote`-based example. + +`Contract.Test.Testnet.testTestnetContracts` type is defined as follows: +```purescript +testTestnetContracts + :: TestnetConfig + -> TestPlanM ContractTest Unit + -> TestPlanM (Aff Unit) Unit +``` +It takes a configuration and a tree of Mote tests, where tests are of type +`ContractTest`. + +To create tests of type `ContractTest`, you should either use +`Contract.Test.Testnet.withWallets` or `Contract.Test.Testnet.noWallet`: + +```purescript +withWallets + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution distr wallets + => distr + -> (wallets -> Contract Unit) + -> ContractTest + +noWallet :: Contract Unit -> ContractTest +noWallet test = withWallets unit (const test) +``` + +Usage of `testTestnetContracts` is similar to that of `runTestnetContract`, +and distributions are handled in the same way. Here's an example: + +```purescript +suite :: MoteT Aff (Aff Unit) Aff +suite = testTestnetContracts config do + test "Test 1" do + let + distribution :: Array BigInt /\ Array BigInt + distribution = ... + withWallets distribution \(alice /\ bob) -> do + ... + + test "Test 2" do + let + distribution :: Array BigInt + distribution = ... + withWallets distribution \alice -> do + ... + + test "Test 3" do + noWallet do + ... +``` + +#### Using Mote testing interface + +To define tests suites you can use `test`, group them with `group` and also +wrap tests or groups with `bracket` to execute custom actions before and +after tests/groups that are inside the bracket. Note that in Mote you can +define several tests and several groups in a single block, and bracket that +wraps them will be run for each such test or group. + +Internally `testTestnetContracts` places a bracket that sets up the CTL +environment and connects to the Cardano Testnet on the top level, so if you +want to connect only once wrap your tests or groups in a single group. In +the example above the environment and Testnet setup will happen 3 times. + +#### Internal implementation overview + +`Contract.Test.Testnet.testTestnetContracts` type is defined as follows (after +expansion of the CTL's `TestPlanM` type synonym): + +```purescript +type TestPlanM :: Type -> Type -> Type +type TestPlanM test a = MoteT Aff test Aff a + +testTestnetContracts + :: TestnetConfig + -> TestPlanM ContractTest Unit + -> TestPlanM (Aff Unit) Unit + +``` +where +* `test :: Type` is a type of tests themselves, + * in our case it's [`ContractTest`](../src/Internal/Test/ContractTest.purs), + which in a nutshell describes a function from some wallet UTxO distribution to + a `Contract r` + * wallet UTxO distribution is the one that you need to pattern-match on when + writing tests +* `m :: Type -> Type` is a monad where effects during the construction of the + test suite can be performed, + * here we use `Aff` again +* `a :: Type` is a result of the test suite, we use `Unit` here. + +`testTestnetContracts` also combines distributions of individual tests in a single +big distribution (via nested tuples) and modifies tests to pluck their required +distributions out of the big one. This allows to create wallets and fund them in +one step, during the Testnet setup. See the comments in the +[`Ctl.Internal.Testnet.Server` module](../src/Internal/Testnet/Contract.purs) for +more info (relevant ones are in `execDistribution` and `testTestnetContracts` +functions). + +In complicated protocols you might want to execute some `Contract`s in one test and +then execute other `Contract`s which depend on some wallet-dependent state set up +by the first batch of contracts, e.g. some authorization token is present at some +wallet. Keeping these steps in separate sequential tests allows to pinpoint where +things failed much easier, but currently CTL uses separate wallets for each test +without an easy way to refer to wallets in other tests, so you have to call the +first batch of contracts again to replicate the state of the wallets, which in turn +might fail or mess up your protocol, because the chain state is shared between +tests for each top-level group. + +### Testing in Aff context + +Second approach is to use the `Contract.Test.Testnet.runTestnetContract` function, +which takes a single `Contract`, connects to the Testnet and executes the passed +contract. This function runs in `Aff`; it will also throw an exception should +contract fail for any reason. After the contract execution the Testnet is +terminated. You can either call it directly from your test's main or use any +library for grouping and describing tests which support effects in the test body, +like Mote. + +`Contract.Test.Testnet.runTestnetContract`'s function type is defined as follows: + +```purescript +runTestnetContract + :: forall (distr :: Type) (wallets :: Type) (a :: Type) + . UtxoDistribution distr wallets + => TestnetConfig + -> distr + -> (wallets -> Contract a) + -> Aff a +``` + +`distr` is a specification of how many wallets and with how much funds should be +created. It should either be a `Unit` (for no wallets), nested tuples containing +`Array BigInt` or an `Array (Array BigInt)`, where each element of the inner array +specifies an UTxO amount in Lovelaces (0.000001 Ada). + +The `wallets` argument of the callback is either a `Unit`, a tuple of `KeyWallet`s +(with the same nesting level as in `distr`, which is guaranteed by +`UtxoDistribution`) or an `Array KeyWallet`. + +`wallets` should be pattern-matched on, and its components should be passed to +`withKeyWallet`: + +An example `Contract` with two actors using nested tuples: + +```purescript +let + distribution :: Array BigInt /\ Array BigInt + distribution = + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 2_000_000_000 + ] /\ + [ BigNum.fromInt 2_000_000_000 ] +runTestnetContract config distribution \(alice /\ bob) -> do + withKeyWallet alice do + pure unit -- sign, balance, submit, etc. + withKeyWallet bob do + pure unit -- sign, balance, submit, etc. +``` + +An example `Contract` with two actors using `Array`: + +```purescript +let + distribution :: Array (Array BigInt) + distribution = + -- wallet one: two UTxOs + [ [ BigNum.fromInt 1_000_000_000, BigNum.fromInt 2_000_000_000] + -- wallet two: one UTxO + , [ BigNum.fromInt 2_000_000_000 ] + ] +runTestnetContract config distribution \wallets -> do + traverse_ ( \wallet -> do + withKeyWallet wallet do + pure unit -- sign, balance, submit, etc. + ) + wallets +``` + +In most cases at least two UTxOs per wallet are needed (one of which will be used +as collateral, so it should exceed `5_000_000` Lovelace). + +Internally `runTestnetContract` runs a contract in an `Aff.bracket`, which creates +a Testnet setup on setup and terminates it during the shutdown or in case of an +exception. Logs will be printed in case of an error. + +### Sharing wallet state between tests + +To execute tests that share the same wallet state, the use of +`Contract.Test.Testnet.runTestnetTestPlan` is suggested, which has a type of: + +```purescript +runTestnetTestPlan + :: TestnetConfig + -> ContractTestPlan + -> TestPlanM (Aff Unit) Unit +``` + +`runTestnetTestPlan` uses the exact same logic as `testTestnetContracts`, except it +requires that wallets are pre-allocated inside of the second parameter, which has a +type of `ContractTestPlan`. `Contract.Test.Testnet.sameWallets` is a helper +function that can be used to create a `ContractTestPlan` where all of the tests use +the same wallets that are defined in the `UtxoDistribution`, this function has a +type of: + +```purescript +sameWallets + :: forall (distr :: Type) (wallets :: Type) + . UtxoDistribution distr wallets + => distr + -> TestPlanM (wallets -> Contract Unit) Unit + -> ContractTestPlan +``` + +Usage of `runTestnetTestPlan` is similar to that of `testTestnetContracts`, except +that the distributions are handled slightly differently. Here's an example of +using `sameWallets`: + +```purescript +suite :: TestPlanM (Aff Unit) Unit +suite = runTestnetTestPlan config do + let + distribution :: Array BigInt /\ Array BigInt + distribution = ... + + sameWallets distribution $ + group "Test Plan" do + test "Test 1" \(alice /\ bob /\ charlie) -> do + ... + + test "Test 2" \(alice /\ bob /\ charlie) -> do + ... + + test "Test 3" \(alice /\ bob /\ charlie) -> do + ... +``` + +Another example for using `sameWallets` can be found [here](../test/Testnet/SameWallets.purs). + +### Writing checks in tests + +CTL will run contracts in your test bodies and will print errors for any failed +tests. For more complex checks you can use the [assertions library](./test-utils.md). + +### Note on SIGINT + +Due to `testTestnetContracts`/`runTestnetContract` adding listeners to the SIGINT +IPC signal, Node.js's default behavior of exiting on CTRL+C no longer occurs. This +was done to let cluster cleanup handlers run asynchronously. To restore the usual +exit-by-CTRL+C, we provide helpers to cancel an `Aff` fiber and set the exit code, +to let Node.js shut down gracefully when no more events are to be processed. + +```purescript +... +import Contract.Test.Utils (exitCode, interruptOnSignal) +import Data.Posix.Signal (Signal(SIGINT)) +import Effect.Aff (cancelWith, effectCanceler, launchAff) + +main :: Effect Unit +main = interruptOnSignal SIGINT =<< launchAff do + flip cancelWith (effectCanceler (exitCode 1)) do + ... test suite in Aff ... +``` + +### Testing with Nix + +You can run Testnet tests via CTL's `purescriptProject` as well. After creating +your project, you can use the `runLocalTestnetTest` attribute to create a Testnet testing +environment that is suitable for use with your flake's `checks`. An example: + +```nix +{ + some-testnet-test = project.runLocalTestnetTest { + name = "some-testnet-test"; + testMain = "Test.MyProject.Testnet"; + # The rest of the arguments are passed through to `runPursTest`: + env = { SOME_ENV_VAR = "${some-value}"; }; + }; +} +``` + +The usual approach is to put `projectname-testnet-test` in the `checks` attribute of +your project's `flake.nix`. This is done by default in the +[`ctl-scaffold` template](../templates/ctl-scaffold/flake.nix). + +## Cluster configuration options + +`TestnetConfig` type contains `clusterConfig` record with the following options: + +```purescript + { testnetMagic :: Int + , era :: Era + , slotLength :: Seconds + , epochSize :: Maybe UInt + -- FIXME: , maxTxSize :: Maybe UInt + -- FIXME: , raiseExUnitsToMax :: Boolean + } +``` + +- `slotLength` and `epochSize` define time-related protocol parameters. Epoch size + is specified in slots. +- `maxTxSize` (in bytes) allows to stress-test protocols with more restrictive + transaction size limits. +- `raiseExUnitsToMax` allows to bypass execution units limit (useful when compiling + the contract with tracing in development and without it in production). + +### Current limitations + +* Non-default values of `epochSize` (current default is 80) break staking rewards - + see [this issue](https://github.com/mlabs-haskell/plutip/issues/149) for more info. + `slotLength` can be changed without any problems. + +## Using addresses with staking key components + +It's possible to use stake keys with the Testnet. `Contract.Test.Testnet.withStakeKey` +function can be used to modify the distribution spec: + +```purescript +let + privateStakeKey :: PrivateStakeKey + privateStakeKey = wrap $ unsafePartial $ fromJust + $ privateKeyFromBytes =<< hexToRawBytes + "633b1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" + aliceUtxos = + [ BigNum.fromInt 2_000_000_000 + , BigNum.fromInt 2_000_000_000 + ] + distribution = withStakeKey privateStakeKey aliceUtxos +``` + +Although stake keys serve no real purpose in the Testnet context, they allow the +use of base addresses, and thus allow the same code for Testnet testing, in-browser +tests, and production. + +Note that CTL re-distributes tADA from payment key-only ("enterprise") addresses to +base addresses, which requires a few transactions before the test can be run. These +transactions happen on the CTL side, because the Testnet can currently handle only +enterprise addresses (see [this issue](https://github.com/mlabs-haskell/plutip/issues/103)). + +## Limitations +* See the `epochSize` configuration option problem [here](#current-limitations). +* Currently there's no way to share wallets between separate tests (which is useful + for complex protocols). You can adapt [this PR](https://github.com/IndigoProtocol/cardano-transaction-lib/pull/1) (needs to be updated for the newer versions of CTL, likely won't need too many changes) if you need it now (and even better -- make a PR to CTL). +* If you've used the [`plutus-simple-model`](https://github.com/mlabs-haskell/plutus-simple-model) library then you might know that it allows to time travel in tests, which can be very useful for testing vesting schedules, etc. Testing with the Testnet doesn't allow this, as it's running a real network. A way around this problem can be to parametrize onchain logic by a time multiplier (and use a small one for tests). + +## See also -TODO +- To actually write the test bodies, [assertions library](./test-utils.md) can be + useful [(usage example)](../examples/ContractTestUtils.purs). +- Take a look at CTL's Testnet tests for the usage examples: + - the entry point with `main` that runs Testnet tests is [here](../test/Testnet.purs), + - folder with various test suites is [here](../test/Testnet/). diff --git a/doc/comparisons.md b/doc/comparisons.md index 25311bd30..7318009be 100644 --- a/doc/comparisons.md +++ b/doc/comparisons.md @@ -71,7 +71,7 @@ Both [CTL](./staking.md) and [Lucid](https://lucid.spacebudz.io/docs/getting-sta ### Testing -CTL uses [Plutip](./plutip-testing.md), which is a tool to spawn real Cardano testnets on the fly, while Lucid uses an [emulator](https://lucid.spacebudz.io/docs/getting-started/test-emulate/). +CTL uses [Cardano Testnet](./cardano-testnet-testing.md), while Lucid uses an [emulator](https://lucid.spacebudz.io/docs/getting-started/test-emulate/). Additionally, CTL supports [testing with real wallets](./e2e-testing.md) via headless browsers and provides [an assertion library](./test-utils.md). diff --git a/doc/ctl-as-dependency.md b/doc/ctl-as-dependency.md index 035bde426..eab80d799 100644 --- a/doc/ctl-as-dependency.md +++ b/doc/ctl-as-dependency.md @@ -16,12 +16,12 @@ CTL can be imported as an additional dependency into a Purescript project built CTL exposes two `overlay`s from its flake. You can use these in the Nix setup of your own project to use the same setup as we do, e.g. the same packages and PS builders: -- `overlays.purescript` contains Purescript builders to compile Purescript sources, build bundles with Webpack/esbuild (`bundlePursProject`), run unit tests using NodeJS (`runPursTest`), and run CTL contracts on a private testnet using Plutip (`runPlutipTest`). -- `overlays.runtime` contains various packages and other tools used in CTL's runtime, including `ogmios`, `kupo`, and `plutip-server`. It also defines `buildCtlRuntime` and `launchCtlRuntime` to help you quickly launch all runtime services (see the [runtime docs](./runtime.md)) +- `overlays.purescript` contains Purescript builders to compile Purescript sources, build bundles with Webpack/esbuild (`bundlePursProject`), run unit tests using NodeJS (`runPursTest`), and run CTL contracts using Cardano Testnet (`runLocalTestnetTest`). +- `overlays.runtime` contains various packages and other tools used in CTL's runtime, including `ogmios`, `kupo`, and `cardano-node`. It also defines `buildCtlRuntime` and `launchCtlRuntime` to help you quickly launch all runtime services (see the [runtime docs](./runtime.md)) We've split the overlays into two components to allow users to more easily choose which parts of CTL's Nix infrastructure they would like to directly consume. For example, some users do not require a pre-packaged runtime and would prefer to build it themselves with more control over its components (e.g. by directly using `ogmios` from their own `inputs`). Such users might still like to use our `purescript` overlay -- splitting the `overlays` allows us to support this. `overlays.runtime` also contains several haskell.nix packages which may cause issues with `hackage.nix` versions in your own project. -Do note that `runPlutipTest` in `overlays.purescript` requires the presence of all of our runtime components. If you choose not to consume `overlays.runtime`, please ensure that your package set contains these (e.g. by adding them to your own `overlays` when instantiating `nixpkgs`). You can find a complete list of the required runtime services [here](./plutip-testing.md#architecture). +Do note that `runLocalTestnetTest` in `overlays.purescript` requires the presence of all of our runtime components. If you choose not to consume `overlays.runtime`, please ensure that your package set contains these (e.g. by adding them to your own `overlays` when instantiating `nixpkgs`). You can find a complete list of the required runtime services [here](./cardano-testnet-testing.md#architecture). To see an example project that uses both `overlays`, please refer to our [scaffolding template](../templates/ctl-scaffold/flake.nix). You can also use this template to conveniently initialize a new CTL-based project (`nix flake init -t github:Plutonomicon/cardano-transaction-lib` in a new directory). It will take a significant amount of time for spago to download the dependencies. diff --git a/doc/development.md b/doc/development.md index e5c7c81af..7ca0912f1 100644 --- a/doc/development.md +++ b/doc/development.md @@ -84,7 +84,7 @@ To **build** the project **without bundling and for a NodeJS environment**: Here and below, `` should be replaced with [one of the supported systems](https://github.com/Plutonomicon/cardano-transaction-lib/blob/15fd9c5b683df47134dce4a0479f1edc30d4b6f7/flake.nix#L51) that you use, e.g. `x86_64-linux`. - Unit tests: `nix build .#checks..ctl-unit-test` -- [E2E tests in Nix with wallet mocks](./e2e-testing.md#using-cip-30-mock-with-plutip): `nix build -L .#checks..ctl-e2e-test` +- [E2E tests in Nix with wallet mocks](./e2e-testing.md#using-cip-30-mock-with-cardano-testnet): `nix build -L .#checks..ctl-e2e-test` - Contract tests ([Cardano Testnet](./cardano-testnet-testing.md)): `nix build -L .#checks..ctl-local-testnet-test` - [Staking](./staking.md) tests ([Cardano Testnet](./cardano-testnet-testing.md)): `nix build -L .#checks..ctl-staking-test` diff --git a/doc/e2e-testing.md b/doc/e2e-testing.md index 25550cc00..2aa978b28 100644 --- a/doc/e2e-testing.md +++ b/doc/e2e-testing.md @@ -22,7 +22,7 @@ CTL comes with advanced machinery for E2E testing in the browser, which can be u - [Using custom unauthorized extensions](#using-custom-unauthorized-extensions) - [Serving the Contract to be tested](#serving-the-contract-to-be-tested) - [Mocking CIP-30 interface](#mocking-cip-30-interface) - - [Using CIP-30 mock with Plutip](#using-cip-30-mock-with-plutip) + - [Using CIP-30 mock with Cardano Testnet](#using-cip-30-mock-with-cardano-testnet) @@ -293,9 +293,9 @@ The `nami:` prefix should not be specified, otherwise CTL will refuse to overwri In order to use the keys, their corresponding address must be pre-funded using the [faucet](https://docs.cardano.org/cardano-testnet/tools/faucet) (beware of IP-based rate-limiting) or from another wallet. Most contracts require at least two UTxOs to run (one will be used as collateral), so it's best to make two transactions. -### Using CIP-30 mock with Plutip +### Using CIP-30 mock with Cardano Testnet -It's possible to run headless browser tests on top of a temporary plutip cluster. In this case, key generation and pre-funding will be handled by `plutip-server`, as well as deployment of all the query layer services. +It's possible to run headless browser tests on top of a Cardano Testnet cluster. To do that, it's enough to define a config name that: @@ -307,10 +307,10 @@ E.g.: ```purescript wallets :: Map E2EConfigName (ContractParams /\ Maybe WalletMock) wallets = Map.fromFoldable - [ "plutip-nami-mock" /\ mainnetNamiConfig /\ Just MockNami - , "plutip-gero-mock" /\ mainnetGeroConfig /\ Just MockGero - , "plutip-flint-mock" /\ mainnetFlintConfig /\ Just MockFlint - , "plutip-lode-mock" /\ mainnetLodeConfig /\ Just MockLode + [ "testnet-nami-mock" /\ mainnetNamiConfig /\ Just MockNami + , "testnet-gero-mock" /\ mainnetGeroConfig /\ Just MockGero + , "testnet-flint-mock" /\ mainnetFlintConfig /\ Just MockFlint + , "testnet-lode-mock" /\ mainnetLodeConfig /\ Just MockLode ] ``` diff --git a/doc/faq.md b/doc/faq.md index dc5575a71..14be88ea7 100644 --- a/doc/faq.md +++ b/doc/faq.md @@ -28,7 +28,6 @@ This document lists common problems encountered by CTL users and developers. - [Package 'chromium-105.0.5195.125' is not supported on 'x86_64-darwin'](#package-chromium-10505195125-is-not-supported-on-x86_64-darwin) - [Miscellaneous](#miscellaneous) - [Q: Why am I getting `Error: (AtKey "coinsPerUtxoByte" MissingValue)`?](#q-why-am-i-getting-error-atkey-coinsperutxobyte-missingvalue) - - [Q: Why do I get an error from `foreign.js` when running Plutip tests locally?](#q-why-do-i-get-an-error-from-foreignjs-when-running-plutip-tests-locally) - [Q: How can I write my own Nix derivations using the project returned by `purescriptProject`?](#q-how-can-i-write-my-own-nix-derivations-using-the-project-returned-by-purescriptproject) @@ -99,8 +98,6 @@ To do anything time-related, it's best to rely on local node chain tip time, ins Time/slot conversion functions depend on `eraSummaries` [Ogmios local state query](https://ogmios.dev/mini-protocols/local-state-query/), that returns era bounds and slotting parameters details, required for proper slot arithmetic. The most common source of the problem is that Ogmios does not return enough epochs into the future. [A possible symptom](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1057) is `CannotFindTimeInEraSummaries` in the error message. -When using Plutip, a solution may be [to increase the `epochSize` parameter](https://github.com/Plutonomicon/cardano-transaction-lib/issues/1057#issuecomment-1450692539). - ### Q: I'm getting `Uncomputable slot arithmetic; transaction's validity bounds go beyond the foreseeable end of the current era: PastHorizon` Ensure your transaction's validity range does not go over `SafeZone` slots of the current era. The reason for this kind of errors is that time-related estimations are slot-based, and future forks may change slot lengths. So there is only a relatively small time window in the future during which it is known that forks cannot occur. @@ -168,10 +165,6 @@ To disable, set `withChromium` to `false` in [`purescriptProject`'s `shell` argu This is because the node hasn't fully synced. The protocol parameter name changed from `coinsPerUtxoWord` to `coinsPerUtxoByte` in Babbage. CTL only supports the latest era, but Ogmios returns different protocol parameters format depending on current era of a local node. -### Q: Why do I get an error from `foreign.js` when running Plutip tests locally? - -The most likely reason for this is that spawning the external processes from `Contract.Test.Plutip` fails. Make sure that all of the required services are on your `$PATH` (see more [here](./runtime.md); you can also set `shell.withRuntime = true;` to ensure that these are always added to your shell environment when running `nix develop`). - ### Q: How can I write my own Nix derivations using the project returned by `purescriptProject`? If the different derivation builders that `purescriptProject` gives you out-of-the-box (e.g. `runPursTest`, `bundlePursProject`, etc...) are not sufficient, you can access the compiled project (all of the original `src` argument plus the `output` directory that `purs` produces) and the generated `node_modules` using the `compiled` and `nodeModules` attributes, respectively. These can be used to write your own derivations without needing to recompile the entire project (that is, the generated output can be shared between all of your Nix components). For example: diff --git a/doc/getting-started.md b/doc/getting-started.md index f758fa847..c334c1b88 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -20,7 +20,7 @@ This guide will help you get started writing contracts with CTL. Please also see - [Testing](#testing) - [Without a light wallet](#without-a-light-wallet) - [With a light wallet](#with-a-light-wallet) - - [Plutip integration](#plutip-integration) + - [Cardano Testnet integration](#cardano-testnet-integration) @@ -227,6 +227,6 @@ See [here](./key-management.md) For full testing with browser-based light wallets see [E2E Testing in the Browser](./e2e-testing.md). -### Plutip integration +### Cardano Testnet integration -Plutip is a tool for testing contracts on a local testnet. See [CTL integration with Plutip](./plutip-testing.md). +See [CTL integration with Cardano Testnet](./cardano-testnet-testing.md). diff --git a/doc/key-management.md b/doc/key-management.md index f4635b65c..65d95fe08 100644 --- a/doc/key-management.md +++ b/doc/key-management.md @@ -66,7 +66,7 @@ Contract.Wallet.Key.mkKeyWalletFromMnemonic :: String -> Cip1852DerivationPath -> StakeKeyPresence -> Either String KeyWallet ``` -`Contract.Wallet.withKeyWalletFromMnemonic` is another helper function that lets to construct and use wallets on the fly, which is convenient for [Plutip tests](./plutip-testing.md). +`Contract.Wallet.withKeyWalletFromMnemonic` is another helper function that lets to construct and use wallets on the fly, which is convenient for [Cardano Testnet tests](./cardano-testnet-testing.md). In `ContractParams`, these values can be conveniently passed as the `walletSpec` via the `UseMnemonic` constructor: diff --git a/doc/testing.md b/doc/testing.md index 19de1f429..c079c8eb7 100644 --- a/doc/testing.md +++ b/doc/testing.md @@ -4,11 +4,9 @@ This page summarizes various approaches to testing with CTL. -## Testing with Plutip +## Testing with Cardano Testnet -Plutip is a tool that allows to manage temporary `cardano-node` clusters. CTL has a test engine that controls these clusters and runs users' `Contract`s in their disposable environment. No setup is needed. - -[See here for more info](./plutip-testing.md). +[See here for more info](./cardano-testnet-testing.md). ## Testing with a headless browser (E2E testing) @@ -28,11 +26,11 @@ It is possible to test `Contract`s that explicitly use wallet connections in Nod See `Contract.Test.Cip30Mock` module. -## Plutip and CIP-30 mocking in headless browsers +## Cardano Testnet and CIP-30 mocking in headless browsers -We also provide abilities to test `Contract`s in a headless browser using query layer of a temporary Plutip cluster as backend and CIP-30 mock instead of a wallet. This method provides stronger guarantees than just CIP-30 mocking in NodeJS, while retaining the ability to be used in Nix builds (by not depending on a real light wallet extension). +We also provide abilities to test `Contract`s in a headless browser using query layer of a Cardano Testnet cluster as backend and CIP-30 mock instead of a wallet. This method provides stronger guarantees than just CIP-30 mocking in NodeJS, while retaining the ability to be used in Nix builds (by not depending on a real light wallet extension). -[See here for more info](./e2e-testing.md#using-cip-30-mock-with-plutip). +[See here for more info](./e2e-testing.md#using-cip-30-mock-with-cardano-testnet). ## Assertion helpers in PureScript diff --git a/src/Contract/Test/Testnet.purs b/src/Contract/Test/Testnet.purs index 0d32b2511..8b4c3222d 100644 --- a/src/Contract/Test/Testnet.purs +++ b/src/Contract/Test/Testnet.purs @@ -21,6 +21,11 @@ import Ctl.Internal.Test.UtxoDistribution , UtxoAmount , withStakeKey ) as X +import Ctl.Internal.Testnet.Contract + ( runTestnetContract + , runTestnetTestPlan + , testTestnetContracts + ) as X import Ctl.Internal.Testnet.Types (Era(Babbage), TestnetConfig) import Data.Log.Level (LogLevel(Trace)) import Data.Maybe (Maybe(Nothing)) From 44fd4a0a2039570c4f85abf88f7e31fe7ab63027 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Fri, 12 Jul 2024 15:58:36 -0300 Subject: [PATCH 291/373] Fix `develop` merge --- src/Internal/Testnet/Contract.purs | 17 +++++++++-------- test/Testnet/Staking.purs | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index fe19afeaf..25f89c4ae 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -18,6 +18,7 @@ import Cardano.Types.Credential (Credential(PubKeyHashCredential)) import Cardano.Types.PaymentCredential (PaymentCredential(PaymentCredential)) import Cardano.Types.StakeCredential (StakeCredential(StakeCredential)) import Cardano.Types.StakePubKeyHash (StakePubKeyHash(StakePubKeyHash)) +import Cardano.Wallet.Key (KeyWallet) import Contract.Address (getNetworkId) import Contract.Log (logInfo') import Contract.Monad @@ -74,7 +75,6 @@ import Ctl.Internal.Testnet.Utils , runCleanup , whenError ) -import Ctl.Internal.Wallet.Key (KeyWallet) import Data.Array (concat, fromFoldable, zip) as Array import Data.Map (values) as Map import Effect.Aff (bracket) as Aff @@ -295,15 +295,16 @@ execDistrFundsPlan withCardanoCliUtxos rounds = do genesisAddr <- liftedM "Could not get genesis address" getWalletAddress withCardanoCliUtxos genesisAddr do + constraintList <- liftAff $ traverse + ( \{ wallet, amount } -> do + addrs <- (unwrap wallet).address network + pure $ mustPayToAddress addrs $ Value.lovelaceValueOf + amount + ) + utxos let constraints :: TxConstraints - constraints = - foldMap - ( \{ wallet, amount } -> - mustPayToAddress ((unwrap wallet).address network) $ - Value.lovelaceValueOf amount - ) - utxos + constraints = fold constraintList unbalancedTx <- mkUnbalancedTx mempty constraints balancedTx <- balanceTx unbalancedTx diff --git a/test/Testnet/Staking.purs b/test/Testnet/Staking.purs index 24ebe5f7a..f44105238 100644 --- a/test/Testnet/Staking.purs +++ b/test/Testnet/Staking.purs @@ -12,6 +12,7 @@ import Cardano.Types.Credential ) import Cardano.Types.NativeScript as NativeScript import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Wallet.Key (PrivateStakeKey) import Contract.Address (getNetworkId) import Contract.Backend.Ogmios (getPoolParameters) import Contract.Hashing (publicKeyHash) @@ -72,7 +73,6 @@ import Ctl.Internal.Test.UtxoDistribution , InitialUTxOsWithStakeKey(InitialUTxOsWithStakeKey) ) import Ctl.Internal.Testnet.Contract (runTestnetContract) -import Ctl.Internal.Wallet.Key (PrivateStakeKey) import Data.Array (head) import Data.Array as Array import Data.Foldable (for_) From 16845ca8efe0a9a04562a6de27c4a375041ba87c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Sun, 14 Jul 2024 23:14:20 +0400 Subject: [PATCH 292/373] WIP: refactoring the examples. Found, supposedly, an ogmios bug --- examples/AdditionalUtxos.purs | 96 +++++++++++++++----------------- examples/AlwaysMints.purs | 26 +++------ examples/Helpers.purs | 7 ++- examples/Lose7Ada.purs | 99 ++++++++++++++++++--------------- examples/NativeScriptMints.purs | 76 ++++++++++++++----------- examples/OneShotMinting.purs | 70 +++++++++-------------- examples/Pkh2Pkh.purs | 47 +++++++++------- examples/SendsToken.purs | 72 +++++++++++++++--------- examples/SignMultiple.purs | 97 +++++++++++++++++++------------- examples/TxChaining.purs | 50 ++++++++++------- examples/Utxos.purs | 85 ++++++++++++++-------------- scripts/import-fixer.sh | 7 ++- src/Contract/Scripts.purs | 2 +- src/Contract/Transaction.purs | 6 +- test/Plutip/Contract.purs | 8 +-- 15 files changed, 394 insertions(+), 354 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index b11109d6c..a7681cff6 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -5,48 +5,46 @@ module Ctl.Examples.AdditionalUtxos import Contract.Prelude -import Cardano.Types (Transaction) +import Cardano.Transaction.Builder + ( OutputWitness(PlutusScriptOutput) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(SpendOutput, Pay) + ) +import Cardano.Types + ( OutputDatum(OutputDatum) + , PaymentCredential(PaymentCredential) + , Transaction + ) import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(ScriptHashCredential)) import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.RedeemerDatum as RedeemerDatum +import Cardano.Types.TransactionOutput (TransactionOutput(TransactionOutput)) +import Cardano.Types.TransactionUnspentOutput (fromUtxoMap) import Contract.Address (mkAddress) import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder) import Contract.BalanceTxConstraints (mustUseAdditionalUtxos) as BalancerConstraints import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (Datum, PlutusData(Integer), unitRedeemer) -import Contract.ScriptLookups (ScriptLookups) -import Contract.ScriptLookups (datum, unspentOutputs, validator) as Lookups +import Contract.PlutusData (Datum, PlutusData(Integer)) import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.Sync (withoutSync) import Contract.Transaction ( ScriptRef(NativeScriptRef) - , TransactionInput , awaitTxConfirmed , balanceTx + , buildTx , createAdditionalUtxos , signTransaction , submit , withBalancedTx ) -import Contract.TxConstraints - ( DatumPresence(DatumInline, DatumWitness) - , TxConstraints - ) -import Contract.TxConstraints - ( mustPayToScript - , mustPayToScriptWithScriptRef - , mustSpendPubKeyOutput - , mustSpendScriptOutput - ) as Constraints -import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (UtxoMap) import Contract.Value (Value) import Contract.Value (lovelaceValueOf) as Value import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) -import Data.Array (fromFoldable) as Array -import Data.Map (difference, filter, keys) as Map +import Data.Map (difference, empty, filter) as Map import JS.BigInt (fromInt) as BigInt import Test.QuickCheck (arbitrary) import Test.QuickCheck.Gen (randomSampleOne) @@ -63,8 +61,8 @@ contract testAdditionalUtxoOverlap = withoutSync do logInfo' "Running Examples.AdditionalUtxos" validator <- alwaysSucceedsScriptV2 let vhash = validatorHash validator - { unbalancedTx, usedUtxos, datum } <- payToValidator vhash - withBalancedTx unbalancedTx usedUtxos mempty \balancedTx -> do + { unbalancedTx, datum } <- payToValidator vhash + withBalancedTx unbalancedTx Map.empty mempty \balancedTx -> do balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx when testAdditionalUtxoOverlap $ awaitTxConfirmed txHash @@ -77,7 +75,6 @@ payToValidator :: ValidatorHash -> Contract { unbalancedTx :: Transaction - , usedUtxos :: UtxoMap , datum :: Datum } payToValidator vhash = do @@ -87,19 +84,25 @@ payToValidator vhash = do value = Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 datum = Integer $ BigInt.fromInt 42 + scriptAddress <- mkAddress (PaymentCredential $ ScriptHashCredential vhash) + Nothing - constraints :: TxConstraints - constraints = - Constraints.mustPayToScript vhash datum DatumWitness value - <> Constraints.mustPayToScriptWithScriptRef vhash datum DatumInline - scriptRef - value - - lookups :: ScriptLookups - lookups = Lookups.datum datum - - unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - pure { unbalancedTx, usedUtxos, datum } + tx <- buildTx + [ Pay $ TransactionOutput + { address: scriptAddress + , amount: value + , datum: Just $ OutputDatum $ datum + , scriptRef: Nothing + } + , Pay $ TransactionOutput + { address: scriptAddress + , amount: value + , datum: Just $ OutputDatum $ datum + , scriptRef: Just scriptRef + } + ] + + pure { unbalancedTx: tx, datum } spendFromValidator :: Validator -> UtxoMap -> Datum -> Contract Unit spendFromValidator validator additionalUtxos datum = do @@ -111,30 +114,23 @@ spendFromValidator validator additionalUtxos datum = do additionalUtxos # Map.filter \out -> (unwrap out).address == addr - scriptOrefs :: Array TransactionInput - scriptOrefs = Array.fromFoldable $ Map.keys scriptUtxos - - pubKeyOrefs :: Array TransactionInput - pubKeyOrefs = - Array.fromFoldable $ Map.keys $ Map.difference additionalUtxos scriptUtxos + spendScriptOutputs = fromUtxoMap scriptUtxos <#> \output -> + SpendOutput output $ Just $ PlutusScriptOutput (ScriptValue validator) + RedeemerDatum.unit + Nothing - constraints :: TxConstraints - constraints = - foldMap (flip Constraints.mustSpendScriptOutput unitRedeemer) scriptOrefs - <> foldMap Constraints.mustSpendPubKeyOutput pubKeyOrefs + spendPubkeyOutputs = + fromUtxoMap (Map.difference additionalUtxos scriptUtxos) <#> \output -> + SpendOutput output Nothing - lookups :: ScriptLookups - lookups = - Lookups.validator validator - <> Lookups.unspentOutputs additionalUtxos - <> Lookups.datum datum + plan = spendScriptOutputs <> spendPubkeyOutputs balancerConstraints :: BalanceTxConstraintsBuilder balancerConstraints = BalancerConstraints.mustUseAdditionalUtxos additionalUtxos - unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx usedUtxos balancerConstraints + unbalancedTx <- buildTx plan + balancedTx <- balanceTx unbalancedTx additionalUtxos balancerConstraints balancedSignedTx <- signTransaction balancedTx txHash <- submit balancedSignedTx diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index ab5620206..6269acc36 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -12,32 +12,18 @@ module Ctl.Examples.AlwaysMints import Contract.Prelude import Cardano.Transaction.Builder - ( CredentialWitness(NativeScriptCredential, PlutusScriptCredential) - , ScriptWitness(ScriptValue, ScriptReference) - , TransactionBuilderStep - ( SpendOutput - , Pay - , MintAsset - , RegisterStake - , IssueCertificate - , WithdrawStake - , RequireSignature - , RegisterPool - , RetirePool - , IncludeDatum - , SetTTL - , SetValidityStartInterval - , SetIsValid - ) + ( CredentialWitness(PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(MintAsset) ) import Cardano.Types (PlutusScript) import Cardano.Types.Int as Int import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.RedeemerDatum as RedeemerDatum import Cardano.Types.Transaction as Transaction import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) -import Contract.PlutusData (unitRedeemer) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Ctl.Examples.Helpers (mkAssetName) as Helpers @@ -58,7 +44,9 @@ contract = do scriptHash tokenName (Int.fromInt 100) - (PlutusScriptCredential (ScriptValue mintingPolicy) unitRedeemer) + ( PlutusScriptCredential (ScriptValue mintingPolicy) + RedeemerDatum.unit + ) ] logInfo' "Tx submitted successfully!" diff --git a/examples/Helpers.purs b/examples/Helpers.purs index bd79deec1..c52cfdb6a 100644 --- a/examples/Helpers.purs +++ b/examples/Helpers.purs @@ -26,9 +26,10 @@ import Contract.TxConstraints (DatumPresence) import Contract.TxConstraints as Constraints mkAssetName :: String -> Contract AssetName -mkAssetName = - liftContractM "Cannot make token name" - <<< (AssetName.mkAssetName <=< byteArrayFromAscii) +mkAssetName str = + liftContractM ("Cannot make token name from: " <> str) + $ AssetName.mkAssetName + =<< byteArrayFromAscii str mustPayToPubKeyStakeAddress :: forall (i :: Type) (o :: Type) diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index 5a0f04f62..732ad0af6 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -13,30 +13,47 @@ module Ctl.Examples.Lose7Ada import Contract.Prelude +import Cardano.Transaction.Builder + ( OutputWitness(PlutusScriptOutput) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(SpendOutput, Pay) + ) +import Cardano.Types + ( Credential(ScriptHashCredential) + , OutputDatum(OutputDatum) + , PaymentCredential(PaymentCredential) + , TransactionOutput(TransactionOutput) + , _isValid + ) import Cardano.Types.BigNum as BigNum -import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.Transaction as Transaction +import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (unitDatum, unitRedeemer) -import Contract.ScriptLookups as Lookups +import Contract.PlutusData (unitRedeemer) import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash - , TransactionInput(TransactionInput) , awaitTxConfirmed - , submitTxFromConstraints + , balanceTx + , buildTx + , lookupTxHash + , signTransaction + , submit + , submitTxFromBuildPlan ) -import Contract.TxConstraints (TxConstraints) -import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value (lovelaceValueOf, minus) as Value import Contract.Wallet (getWalletBalance) import Control.Monad.Error.Class (liftMaybe) +import Data.Array (head) import Data.Foldable (fold) import Data.Functor ((<$>)) +import Data.Lens ((.~)) import Data.Map as Map import Effect.Exception (error) import Partial.Unsafe (unsafePartial) @@ -59,18 +76,16 @@ example cfg = launchAff_ do payToAlwaysFails :: ValidatorHash -> Contract TransactionHash payToAlwaysFails vhash = do - let - constraints :: TxConstraints - constraints = - Constraints.mustPayToScript vhash unitDatum - Constraints.DatumWitness - $ Value.lovelaceValueOf - $ BigNum.fromInt 2_000_000 - - lookups :: Lookups.ScriptLookups - lookups = mempty - - submitTxFromConstraints lookups constraints + scriptAddress <- + mkAddress (PaymentCredential $ ScriptHashCredential vhash) Nothing + Transaction.hash <$> submitTxFromBuildPlan Map.empty mempty + [ Pay $ TransactionOutput + { address: scriptAddress + , amount: Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 + , datum: Just $ OutputDatum PlutusData.unit + , scriptRef: Nothing + } + ] spendFromAlwaysFails :: ValidatorHash @@ -81,39 +96,33 @@ spendFromAlwaysFails vhash validator txId = do balanceBefore <- unsafePartial $ fold <$> getWalletBalance scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing utxos <- utxosAt scriptAddress - txInput <- liftM - ( error - ( "The id " - <> show txId - <> " does not have output locked at: " - <> show scriptAddress - ) - ) - (fst <$> find hasTransactionId (Map.toUnfoldable utxos :: Array _)) - let - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos - - constraints :: TxConstraints - constraints = - Constraints.mustSpendScriptOutput txInput unitRedeemer - <> Constraints.mustNotBeValid - - spendTxId <- submitTxFromConstraints lookups constraints + utxo <- + liftM + ( error + ( "The id " + <> show txId + <> " does not have output locked at: " + <> show scriptAddress + ) + ) + $ head (lookupTxHash txId utxos) + unbalancedTx <- + buildTx + [ SpendOutput + utxo + $ Just + $ PlutusScriptOutput (ScriptValue validator) unitRedeemer Nothing + ] <#> _isValid .~ false + balancedTx <- balanceTx unbalancedTx (toUtxoMap [ utxo ]) mempty + balancedSignedTx <- signTransaction $ balancedTx # _isValid .~ true + spendTxId <- submit balancedSignedTx logInfo' $ "Tx ID: " <> show spendTxId awaitTxConfirmed spendTxId logInfo' "Successfully spent locked values." - balance <- unsafePartial $ fold <$> getWalletBalance let collateralLoss = Value.lovelaceValueOf $ BigNum.fromInt (5_000_000) Just balance `shouldEqual` (Value.minus balanceBefore collateralLoss) - where - hasTransactionId :: TransactionInput /\ _ -> Boolean - hasTransactionId (TransactionInput tx /\ _) = - tx.transactionId == txId - alwaysFailsScript :: Contract Validator alwaysFailsScript = do liftMaybe (error "Error decoding alwaysFails") do diff --git a/examples/NativeScriptMints.purs b/examples/NativeScriptMints.purs index e83c1abd2..2808fce87 100644 --- a/examples/NativeScriptMints.purs +++ b/examples/NativeScriptMints.purs @@ -4,23 +4,34 @@ module Ctl.Examples.NativeScriptMints (main, example, contract, pkhPolicy) where import Contract.Prelude -import Cardano.Types (BigNum) +import Cardano.Transaction.Builder + ( CredentialWitness(NativeScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(Pay, MintAsset) + ) +import Cardano.Types + ( BigNum + , Credential(PubKeyHashCredential) + , PaymentCredential(PaymentCredential) + , StakeCredential(StakeCredential) + , TransactionOutput(TransactionOutput) + ) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.NativeScript as NativeScript -import Contract.Address (PaymentPubKeyHash) +import Cardano.Types.Transaction as Transaction +import Contract.Address (PaymentPubKeyHash, mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) -import Contract.ScriptLookups as Lookups import Contract.Scripts (NativeScript(ScriptPubkey)) -import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) -import Contract.TxConstraints as Constraints +import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Contract.Value (CurrencySymbol, TokenName) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) -import Ctl.Examples.Helpers (mkAssetName, mustPayToPubKeyStakeAddress) as Helpers +import Ctl.Examples.Helpers (mkAssetName) as Helpers import Data.Array (head) +import Data.Map as Map import JS.BigInt as BigInt main :: Effect Unit @@ -32,44 +43,43 @@ contract = do pkh <- liftedM "Couldn't get own pkh" $ head <$> ownPaymentPubKeyHashes - let mp = pkhPolicy pkh - let cs = NativeScript.hash mp - tn <- Helpers.mkAssetName "NSToken" + let mintingPolicy = pkhPolicy pkh + let scriptHash = NativeScript.hash mintingPolicy + assetName <- Helpers.mkAssetName "NSToken" - let - constraints :: Constraints.TxConstraints - constraints = - Constraints.mustMintCurrencyUsingNativeScript - (pkhPolicy pkh) - tn $ Int.fromInt 100 - - lookups :: Lookups.ScriptLookups - lookups = Lookups.nativeMintingPolicy mp - - txId <- submitTxFromConstraints lookups constraints + txId <- Transaction.hash <$> submitTxFromBuildPlan Map.empty mempty + [ MintAsset + scriptHash + assetName + (Int.fromInt 100) + (NativeScriptCredential (ScriptValue mintingPolicy)) + ] awaitTxConfirmed txId logInfo' "Minted successfully" - toSelfContract cs tn $ BigNum.fromInt 50 + toSelfContract scriptHash assetName $ BigNum.fromInt 50 toSelfContract :: CurrencySymbol -> TokenName -> BigNum -> Contract Unit toSelfContract cs tn amount = do pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes skh <- join <<< head <$> ownStakePubKeyHashes - + address <- mkAddress + (PaymentCredential $ PubKeyHashCredential $ unwrap pkh) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> skh) let - constraints :: Constraints.TxConstraints - constraints = Helpers.mustPayToPubKeyStakeAddress pkh skh - $ Value.singleton cs tn - $ amount - - lookups :: Lookups.ScriptLookups - lookups = mempty - - txId <- submitTxFromConstraints lookups constraints - - awaitTxConfirmed txId + plan = + [ Pay $ TransactionOutput + { address + , amount: Value.singleton cs tn amount + , datum: Nothing + , scriptRef: Nothing + } + ] + + tx <- submitTxFromBuildPlan Map.empty mempty plan + + awaitTxConfirmed $ Transaction.hash tx logInfo' $ "Moved " <> show (BigInt.fromInt 50) <> " to self successfully" example :: ContractParams -> Effect Unit diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 8c0b1eb61..4370e749a 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -12,12 +12,18 @@ module Ctl.Examples.OneShotMinting import Contract.Prelude -import Cardano.Types (Coin, TransactionHash, UtxoMap, _body, _fee) +import Cardano.Transaction.Builder + ( CredentialWitness(PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(SpendOutput, MintAsset) + ) +import Cardano.Types (_body, _fee, _input) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int -import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript -import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder) +import Cardano.Types.RedeemerDatum as RedeemerDatum +import Cardano.Types.Transaction as Transaction +import Cardano.Types.TransactionUnspentOutput (fromUtxoMap) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad @@ -29,8 +35,6 @@ import Contract.Monad , runContract ) import Contract.PlutusData (PlutusData, toData) -import Contract.ScriptLookups (ScriptLookups) -import Contract.ScriptLookups as Lookups import Contract.Scripts (PlutusScript, applyArgs) import Contract.Test.Assert ( ContractCheck @@ -42,21 +46,16 @@ import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionInput , awaitTxConfirmed - , balanceTx - , signTransaction - , submit + , submitTxFromBuildPlan ) -import Contract.TxConstraints (TxConstraints) -import Contract.TxConstraints as Constraints -import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (AssetName, ScriptHash) import Contract.Wallet (getWalletUtxos) import Control.Monad.Error.Class (liftMaybe) import Control.Monad.Trans.Class (lift) import Ctl.Examples.Helpers (mkAssetName) as Helpers import Data.Array (head, singleton) as Array -import Data.Lens (view) -import Data.Map (empty, toUnfoldable, union) as Map +import Data.Lens ((^.)) +import Data.Map (empty) as Map import Effect.Exception (error, throw) import JS.BigInt (BigInt) @@ -89,53 +88,34 @@ mkContractWithAssertions -> Contract Unit mkContractWithAssertions exampleName mkMintingPolicy = do logInfo' ("Running " <> exampleName) - utxos <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos + utxos <- liftedM "Failed to get UTxOs from wallet" $ getWalletUtxos <#> map + fromUtxoMap oref <- liftContractM "Utxo set is empty" - (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) + (Array.head utxos) - ps <- mkMintingPolicy oref + ps <- mkMintingPolicy (oref ^. _input) let cs = PlutusScript.hash ps tn <- Helpers.mkAssetName "CTLNFT" let - constraints :: Constraints.TxConstraints - constraints = - Constraints.mustMintValue (Mint.singleton cs tn $ Int.fromInt one) - <> Constraints.mustSpendPubKeyOutput oref - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.plutusMintingPolicy ps - <> Lookups.unspentOutputs utxos + plan = + [ MintAsset cs tn (Int.fromInt one) + (PlutusScriptCredential (ScriptValue ps) RedeemerDatum.unit) + , SpendOutput (oref) Nothing + ] let checks = mkChecks (cs /\ tn /\ one) void $ runChecks checks $ lift do - { txHash, txFinalFee } <- - submitTxFromConstraintsReturningFee lookups constraints Map.empty mempty + tx <- submitTxFromBuildPlan Map.empty mempty plan + let + txHash = Transaction.hash tx + txFinalFee = tx ^. _body <<< _fee logInfo' $ "Tx ID: " <> show txHash awaitTxConfirmed txHash logInfo' "Tx submitted successfully!" pure { txFinalFee: BigNum.toBigInt $ unwrap txFinalFee } -submitTxFromConstraintsReturningFee - :: ScriptLookups - -> TxConstraints - -> UtxoMap - -> BalanceTxConstraintsBuilder - -> Contract { txHash :: TransactionHash, txFinalFee :: Coin } -submitTxFromConstraintsReturningFee - lookups - constraints - extraUtxos - balancerConstraints = do - unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx (Map.union extraUtxos usedUtxos) - balancerConstraints - balancedSignedTx <- signTransaction balancedTx - txHash <- submit balancedSignedTx - pure { txHash, txFinalFee: view (_body <<< _fee) balancedSignedTx } - oneShotMintingPolicyScript :: TransactionInput -> Contract PlutusScript oneShotMintingPolicyScript txInput = do script <- liftMaybe (error "Error decoding oneShotMinting") do diff --git a/examples/Pkh2Pkh.purs b/examples/Pkh2Pkh.purs index 88b37a4cd..0a3d5be28 100644 --- a/examples/Pkh2Pkh.purs +++ b/examples/Pkh2Pkh.purs @@ -5,19 +5,29 @@ module Ctl.Examples.Pkh2Pkh (main, contract, example) where import Contract.Prelude +import Cardano.Transaction.Builder + ( TransactionBuilderStep(Pay) + ) +import Cardano.Types + ( Credential(PubKeyHashCredential) + , OutputDatum(OutputDatumHash) + , PaymentCredential(PaymentCredential) + , StakeCredential(StakeCredential) + , TransactionOutput(TransactionOutput) + ) import Cardano.Types.BigNum as BigNum +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.Transaction as Transaction +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) -import Contract.ScriptLookups as Lookups -import Contract.Transaction - ( awaitTxConfirmedWithTimeout - , submitTxFromConstraints - ) -import Contract.TxConstraints as Constraints +import Contract.Transaction (awaitTxConfirmedWithTimeout, submitTxFromBuildPlan) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Data.Array (head) +import Data.Map as Map main :: Effect Unit main = example testnetNamiConfig @@ -26,20 +36,19 @@ contract :: Contract Unit contract = do logInfo' "Running Examples.Pkh2Pkh" pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes - skh <- liftedM "Failed to get own SKH" $ join <<< head <$> + skh <- liftedM "Failed to get own SKH" $ head <$> ownStakePubKeyHashes - - let - constraints :: Constraints.TxConstraints - constraints = Constraints.mustPayToPubKeyAddress pkh skh - $ Value.lovelaceValueOf - $ BigNum.fromInt 2_000_000 - - lookups :: Lookups.ScriptLookups - lookups = mempty - - txId <- submitTxFromConstraints lookups constraints - + address <- mkAddress + (PaymentCredential $ PubKeyHashCredential $ unwrap pkh) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> skh) + txId <- Transaction.hash <$> submitTxFromBuildPlan Map.empty mempty + [ Pay $ TransactionOutput + { address + , amount: Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + ] awaitTxConfirmedWithTimeout (wrap 100.0) txId logInfo' $ "Tx submitted successfully!" diff --git a/examples/SendsToken.purs b/examples/SendsToken.purs index ee9211f84..241550076 100644 --- a/examples/SendsToken.purs +++ b/examples/SendsToken.purs @@ -6,28 +6,41 @@ module Ctl.Examples.SendsToken (main, example, contract) where import Contract.Prelude -import Cardano.Types (PlutusScript) +import Cardano.Transaction.Builder + ( CredentialWitness(PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(Pay, MintAsset) + ) +import Cardano.Types + ( AssetName + , Credential(PubKeyHashCredential) + , PaymentCredential(PaymentCredential) + , PlutusScript + , ScriptHash + , StakeCredential(StakeCredential) + , TransactionOutput(TransactionOutput) + ) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int -import Cardano.Types.Mint (Mint) -import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.RedeemerDatum as RedeemerDatum +import Cardano.Types.Transaction as Transaction +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) -import Contract.ScriptLookups as Lookups import Contract.Transaction ( TransactionHash , awaitTxConfirmed - , submitTxFromConstraints + , submitTxFromBuildPlan ) -import Contract.TxConstraints as Constraints import Contract.Value (Value) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Ctl.Examples.AlwaysMints (alwaysMintsPolicy) -import Ctl.Examples.Helpers (mkAssetName, mustPayToPubKeyStakeAddress) as Helpers +import Ctl.Examples.Helpers (mkAssetName) as Helpers import Data.Array (head) +import Data.Map as Map main :: Effect Unit main = example testnetNamiConfig @@ -48,34 +61,39 @@ contract = do mintToken :: Contract TransactionHash mintToken = do - mp /\ mint /\ _value <- tokenValue - let - constraints :: Constraints.TxConstraints - constraints = Constraints.mustMintValue mint - - lookups :: Lookups.ScriptLookups - lookups = Lookups.plutusMintingPolicy mp + mp /\ sh /\ an /\ amount /\ _value <- tokenValue - submitTxFromConstraints lookups constraints + tx <- submitTxFromBuildPlan Map.empty mempty + [ MintAsset + sh + an + amount + (PlutusScriptCredential (ScriptValue mp) RedeemerDatum.unit) + ] + pure $ Transaction.hash tx sendToken :: Contract TransactionHash sendToken = do pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes skh <- join <<< head <$> ownStakePubKeyHashes - _ /\ _mint /\ value <- tokenValue - let - constraints :: Constraints.TxConstraints - constraints = Helpers.mustPayToPubKeyStakeAddress pkh skh value - - lookups :: Lookups.ScriptLookups - lookups = mempty - - submitTxFromConstraints lookups constraints + _ /\ _ /\ _ /\ _ /\ value <- tokenValue + address <- mkAddress (PaymentCredential $ PubKeyHashCredential $ unwrap pkh) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> skh) + tx <- submitTxFromBuildPlan Map.empty mempty + [ Pay $ TransactionOutput + { address + , amount: value + , datum: Nothing + , scriptRef: Nothing + } + ] + pure $ Transaction.hash tx -tokenValue :: Contract (PlutusScript /\ Mint /\ Value) +tokenValue + :: Contract (PlutusScript /\ ScriptHash /\ AssetName /\ Int.Int /\ Value) tokenValue = do mp <- alwaysMintsPolicy let cs = PlutusScript.hash mp - tn <- Helpers.mkAssetName "TheToken" - pure $ mp /\ Mint.singleton cs tn (Int.fromInt 1) /\ Value.singleton cs tn + an <- Helpers.mkAssetName "TheToken" + pure $ mp /\ cs /\ an /\ Int.fromInt 1 /\ Value.singleton cs an (BigNum.fromInt 1) diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 6622c55a0..e9d1cfe49 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -5,7 +5,21 @@ module Ctl.Examples.SignMultiple (example, contract, main) where import Contract.Prelude -import Cardano.Types (Transaction) +import Cardano.Transaction.Builder + ( TransactionBuilderStep(Pay) + ) +import Cardano.Types + ( Credential(PubKeyHashCredential) + , OutputDatum(OutputDatumHash) + , PaymentCredential(PaymentCredential) + , StakeCredential(StakeCredential) + , Transaction + , TransactionOutput(TransactionOutput) + ) +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.Transaction as Transaction +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo', logWarn') import Contract.Monad @@ -16,18 +30,16 @@ import Contract.Monad , throwContractError ) import Contract.Numeric.BigNum as BigNum -import Contract.ScriptLookups as Lookups import Contract.Transaction ( TransactionHash , awaitTxConfirmed , awaitTxConfirmedWithTimeout + , buildTx , signTransaction , submit - , submitTxFromConstraints + , submitTxFromBuildPlan , withBalancedTxs ) -import Contract.TxConstraints as Constraints -import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (leq) import Contract.Value as Value import Contract.Wallet @@ -38,6 +50,7 @@ import Contract.Wallet import Control.Monad.Reader (asks) import Data.Array (head) import Data.Map (Map, filter) +import Data.Map as Map import Data.Set (Set) import Data.UInt (UInt) import Effect.Ref as Ref @@ -55,34 +68,36 @@ contract :: Contract Unit contract = do logInfo' "Running Examples.SignMultiple" pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes - skh <- liftedM "Failed to get own SKH" $ join <<< head <$> - ownStakePubKeyHashes + skh <- liftedM "Failed to get own SKH" $ head <$> ownStakePubKeyHashes -- Early fail if not enough utxos present for 2 transactions unlessM hasSufficientUtxos do logWarn' "Insufficient Utxos for 2 transactions" createAdditionalUtxos - + address <- mkAddress + (PaymentCredential $ PubKeyHashCredential $ unwrap pkh) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> skh) let - constraints :: Constraints.TxConstraints - constraints = Constraints.mustPayToPubKeyAddress pkh skh - $ Value.lovelaceValueOf - $ BigNum.fromInt 2_000_000 - - lookups :: Lookups.ScriptLookups - lookups = mempty - - unbalancedTx0 /\ usedUtxos0 <- mkUnbalancedTx lookups constraints - unbalancedTx1 /\ usedUtxos1 <- mkUnbalancedTx lookups constraints + plan = + [ Pay $ TransactionOutput + { address + , amount: Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + ] + + unbalancedTx0 <- buildTx plan + unbalancedTx1 <- buildTx plan txIds <- withBalancedTxs [ { transaction: unbalancedTx0 - , usedUtxos: usedUtxos0 + , usedUtxos: Map.empty , balancerConstraints: mempty } , { transaction: unbalancedTx1 - , usedUtxos: usedUtxos1 + , usedUtxos: Map.empty , balancerConstraints: mempty } ] $ \balancedTxs -> do @@ -128,27 +143,29 @@ createAdditionalUtxos :: Contract Unit createAdditionalUtxos = do logInfo' "Creating additional UTxOs for SignMultiple example" pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes - skh <- liftedM "Failed to get own SKH" $ join <<< head <$> - ownStakePubKeyHashes - + skh <- liftedM "Failed to get own SKH" $ head <$> ownStakePubKeyHashes + address <- mkAddress + (PaymentCredential $ PubKeyHashCredential $ unwrap pkh) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> skh) let - constraints :: Constraints.TxConstraints - constraints = - Constraints.mustPayToPubKeyAddress pkh skh - ( Value.lovelaceValueOf - $ BigNum.fromInt 2_000_000 - ) <> - Constraints.mustPayToPubKeyAddress pkh skh - ( Value.lovelaceValueOf - $ BigNum.fromInt 2_000_000 - ) - - lookups :: Lookups.ScriptLookups - lookups = mempty - - txId <- submitTxFromConstraints lookups constraints - - awaitTxConfirmedWithTimeout (wrap 100.0) txId + plan = + [ Pay $ TransactionOutput + { address + , amount: Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + , Pay $ TransactionOutput + { address + , amount: Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + ] + + tx <- submitTxFromBuildPlan Map.empty mempty plan + + awaitTxConfirmedWithTimeout (wrap 100.0) $ Transaction.hash tx logInfo' $ "Tx submitted successfully!" example :: ContractParams -> Effect Unit diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index 56c92096b..a9dec9554 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -10,7 +10,17 @@ module Ctl.Examples.TxChaining import Contract.Prelude +import Cardano.Transaction.Builder (TransactionBuilderStep(Pay)) +import Cardano.Types + ( Credential(PubKeyHashCredential) + , OutputDatum(OutputDatumHash) + , PaymentCredential(PaymentCredential) + , TransactionOutput(TransactionOutput) + ) import Cardano.Types.BigNum as BigNum +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.PlutusData as PlutusData +import Contract.Address (mkAddress) import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder , mustUseAdditionalUtxos @@ -18,21 +28,20 @@ import Contract.BalanceTxConstraints import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) -import Contract.ScriptLookups as Lookups import Contract.Transaction ( awaitTxConfirmed , balanceTx + , buildTx , createAdditionalUtxos , signTransaction , submit , withBalancedTx ) -import Contract.TxConstraints (TxConstraints) -import Contract.TxConstraints as Constraints -import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value as Value import Contract.Wallet (ownPaymentPubKeyHashes) import Data.Array (head) +import Data.Map as Map +import Effect.Exception (throw) main :: Effect Unit main = example testnetNamiConfig @@ -44,33 +53,34 @@ example cfg = launchAff_ do contract :: Contract Unit contract = do pkh <- liftedM "Failed to get PKH" $ head <$> ownPaymentPubKeyHashes + address <- mkAddress (PaymentCredential $ PubKeyHashCredential $ unwrap pkh) + Nothing let - constraints :: TxConstraints - constraints = - Constraints.mustPayToPubKey pkh - (Value.lovelaceValueOf $ BigNum.fromInt 1_000_000) - - lookups0 :: Lookups.ScriptLookups - lookups0 = mempty + plan = + [ Pay $ TransactionOutput + { address: address + , amount: Value.lovelaceValueOf $ BigNum.fromInt 1_000_000 + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + ] - unbalancedTx0 /\ usedUtxos0 <- mkUnbalancedTx lookups0 constraints + unbalancedTx0 <- buildTx plan - withBalancedTx unbalancedTx0 usedUtxos0 mempty \balancedTx0 -> do + withBalancedTx unbalancedTx0 Map.empty mempty \balancedTx0 -> do + logInfo' $ "balanced" balancedSignedTx0 <- signTransaction balancedTx0 additionalUtxos <- createAdditionalUtxos balancedSignedTx0 logInfo' $ "Additional utxos: " <> show additionalUtxos - + when (Map.isEmpty additionalUtxos) do + liftEffect $ throw "empty utxos" let - lookups1 :: Lookups.ScriptLookups - lookups1 = Lookups.unspentOutputs additionalUtxos - balanceTxConstraints :: BalanceTxConstraints.BalanceTxConstraintsBuilder balanceTxConstraints = BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos - - unbalancedTx1 /\ usedUtxos1 <- mkUnbalancedTx lookups1 constraints - balancedTx1 <- balanceTx unbalancedTx1 usedUtxos1 balanceTxConstraints + unbalancedTx1 <- buildTx plan + balancedTx1 <- balanceTx unbalancedTx1 additionalUtxos balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 txId0 <- submit balancedSignedTx0 diff --git a/examples/Utxos.purs b/examples/Utxos.purs index 23cc6eaa5..4cf0754ed 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -2,12 +2,25 @@ module Ctl.Examples.Utxos (main, example, contract) where import Contract.Prelude +import Cardano.Transaction.Builder + ( CredentialWitness(PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(Pay, MintAsset) + ) +import Cardano.Types + ( Credential(PubKeyHashCredential) + , OutputDatum(OutputDatum, OutputDatumHash) + , PaymentCredential(PaymentCredential) + , StakeCredential(StakeCredential) + , TransactionOutput(TransactionOutput) + ) import Cardano.Types.BigNum as BigNum +import Cardano.Types.DataHash (hashPlutusData) import Cardano.Types.Int as Int -import Cardano.Types.Mint (Mint) -import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript -import Contract.Address (PaymentPubKeyHash, StakePubKeyHash) +import Cardano.Types.RedeemerDatum as RedeemerDatum +import Cardano.Types.Transaction as Transaction +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo, logInfo') import Contract.Monad @@ -18,14 +31,11 @@ import Contract.Monad , runContract ) import Contract.PlutusData (PlutusData(Integer)) -import Contract.ScriptLookups as Lookups import Contract.Transaction ( ScriptRef(NativeScriptRef, PlutusScriptRef) , awaitTxConfirmed - , submitTxFromConstraints + , submitTxFromBuildPlan ) -import Contract.TxConstraints (DatumPresence(DatumInline, DatumWitness)) -import Contract.TxConstraints as Constraints import Contract.Value (Value) import Contract.Value (lovelaceValueOf, singleton) as Value import Contract.Wallet @@ -37,7 +47,7 @@ import Ctl.Examples.Helpers (mkAssetName) as Helpers import Ctl.Examples.PlutusV2.OneShotMinting (oneShotMintingPolicyScriptV2) import Data.Array (head) as Array import Data.Log.Tag (tag) -import Data.Map (toUnfoldable) as Map +import Data.Map (empty, toUnfoldable) as Map import JS.BigInt (fromInt) as BigInt import Partial.Unsafe (unsafePartial) import Test.QuickCheck.Arbitrary (arbitrary) @@ -54,6 +64,9 @@ contract = do logInfo' "Running Examples.Utxos" pkh <- liftedM "Failed to get own PKH" ownPaymentPubKeyHash skh <- ownStakePubKeyHash + address <- mkAddress + (PaymentCredential $ PubKeyHashCredential $ unwrap pkh) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> skh) datum <- liftEffect $ Integer @@ -77,45 +90,33 @@ contract = do adaValue :: Value adaValue = Value.lovelaceValueOf (BigNum.fromInt 2_000_000) - mintValue :: Mint - mintValue = Mint.singleton cs0 tn0 (Int.fromInt one) - tokenValue = Value.singleton cs0 tn0 BigNum.one - constraints :: Constraints.TxConstraints - constraints = mconcat - [ Constraints.mustMintValue mintValue - , mustPayWithDatumAndScriptRef pkh skh datum DatumWitness plutusScriptRef - (unsafePartial $ tokenValue <> adaValue) - , mustPayWithDatumAndScriptRef pkh skh datum DatumInline nativeScriptRef - adaValue + plan = + [ MintAsset + cs0 + tn0 + (Int.fromInt one) + ( PlutusScriptCredential (ScriptValue oneShotMintingPolicy) + RedeemerDatum.unit + ) + , Pay $ TransactionOutput + { address + , amount: unsafePartial $ tokenValue <> adaValue + , datum: Just $ OutputDatumHash $ hashPlutusData datum + , scriptRef: Just plutusScriptRef + } + , Pay $ TransactionOutput + { address + , amount: adaValue + , datum: Just $ OutputDatum datum + , scriptRef: Just nativeScriptRef + } ] - lookups :: Lookups.ScriptLookups - lookups = Lookups.plutusMintingPolicy oneShotMintingPolicy <> - Lookups.unspentOutputs utxos - - txHash <- submitTxFromConstraints lookups constraints - awaitTxConfirmed txHash + tx <- submitTxFromBuildPlan Map.empty mempty plan + awaitTxConfirmed $ Transaction.hash tx logInfo' "Tx submitted successfully!" utxos' <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos logInfo (tag "utxos" $ show utxos') "Utxos after transaction confirmation:" - --------------------------------------------------------------------------------- --- Helpers --------------------------------------------------------------------------------- - -mustPayWithDatumAndScriptRef - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash - -> Maybe StakePubKeyHash - -> PlutusData - -> DatumPresence - -> ScriptRef - -> Value - -> Constraints.TxConstraints -mustPayWithDatumAndScriptRef pkh Nothing = - Constraints.mustPayToPubKeyWithDatumAndScriptRef pkh -mustPayWithDatumAndScriptRef pkh (Just skh) = - Constraints.mustPayToPubKeyAddressWithDatumAndScriptRef pkh skh diff --git a/scripts/import-fixer.sh b/scripts/import-fixer.sh index 27714ad94..66e90ff44 100755 --- a/scripts/import-fixer.sh +++ b/scripts/import-fixer.sh @@ -42,6 +42,7 @@ constrs["ScriptRef"]="NativeScriptRef, PlutusScriptRef" constrs["RedeemerTag"]="Spend, Mint, Cert, Reward" constrs["Maybe"]="Just, Nothing" constrs["PaymentCredential"]="PaymentCredential" +constrs["StakeCredential"]="StakeCredential" constrs["TransactionBuilderStep"]="SpendOutput, Pay, MintAsset, RegisterStake, IssueCertificate, WithdrawStake, RequireSignature, RegisterPool, RetirePool, IncludeDatum, SetTTL, SetValidityStartInterval, SetIsValid" constrs["OutputWitness"]="NativeScriptOutput, PlutusScriptOutput" constrs["CredentialWitness"]="NativeScriptCredential, PlutusScriptCredential" @@ -52,9 +53,11 @@ constrs["RefInputAction"]="ReferenceInput, SpendInput" for d in "src" "test" "examples"; do echo "processing $d" pushd "./$d" + command='' for key in "${!constrs[@]}"; do - echo -n "$key," - find -type f | grep '\.purs$' --color=never | xargs -I'{}' -exec sed -i 's/'"$key"'(..)/'"$key(${constrs[$key]})"'/g;' '{}' + command="$command"'s/\b'"$key"'(..)/'"$key(${constrs[$key]})"'/g;' done + find -type f | grep '\.purs$' --color=never | xargs -I'{}' -exec sed -i -e "$command" '{}' + echo "$command" popd done; diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index 8133e8fec..c23c326bf 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -65,7 +65,7 @@ type Validator = PlutusScript type ValidatorHash = ScriptHash validatorHash - :: Warn (Text "Deprecated: Validator. Use Cardano.Types.PlutusData.hash") + :: Warn (Text "Deprecated: validatorHash. Use Cardano.Types.PlutusData.hash") => PlutusScript -> ScriptHash validatorHash = PlutusScript.hash diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 7f25e1ba2..52bbd851e 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -140,10 +140,8 @@ buildTx :: Array TransactionBuilderStep -> Contract Transaction buildTx steps = do - id <- asks _.networkId - let - eiRes = buildTransaction id steps - case eiRes of + networkId <- asks _.networkId + case buildTransaction networkId steps of Left err -> do throwError (error $ explainTxBuildError err) Right res -> pure res diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 65259e6ee..f88ceaf36 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -171,7 +171,7 @@ import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (error, throw) import JS.BigInt as BigInt -import Mote (group, skip, test) +import Mote (group, only, skip, test) import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) @@ -270,7 +270,7 @@ suite = do withWallets distribution \_ → pure unit - group "Contract interface" do + only $ group "Contract interface" do test "mustUseCollateralUtxos should not fail if enough UTxOs are provided" do @@ -1452,8 +1452,8 @@ suite = do logInfo' "Try to spend locked values" AlwaysSucceeds.spendFromAlwaysSucceeds vhash validator txId - group "CIP-40 Collateral Output" do - test "Always failing script triggers Collateral Return (ADA-only)" do + only $ group "CIP-40 Collateral Output" do + only $ test "Always failing script triggers Collateral Return (ADA-only)" do let distribution :: InitialUTxOs /\ InitialUTxOs distribution = From 9431f6a0597287b9b0bd6ce887a7e654d0c6a3c0 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 Jul 2024 13:42:39 +0400 Subject: [PATCH 293/373] WIP: more examples. Make the tests more stable by fixing the seed --- examples/AdditionalUtxos.purs | 12 +-- examples/AlwaysSucceeds.purs | 15 ++-- examples/ContractTestUtils.purs | 71 ++++++++-------- examples/Lose7Ada.purs | 11 +-- examples/ManyAssets.purs | 46 ++++------ src/Contract/Scripts.purs | 3 +- src/Internal/BalanceTx/Error.purs | 2 - test/Plutip/Contract.purs | 135 +++++++++++++++++------------- test/Plutip/UtxoDistribution.purs | 9 +- 9 files changed, 155 insertions(+), 149 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index a7681cff6..4436d4718 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -6,13 +6,16 @@ module Ctl.Examples.AdditionalUtxos import Contract.Prelude import Cardano.Transaction.Builder - ( OutputWitness(PlutusScriptOutput) + ( DatumWitness(DatumValue) + , OutputWitness(PlutusScriptOutput) , ScriptWitness(ScriptValue) , TransactionBuilderStep(SpendOutput, Pay) ) import Cardano.Types ( OutputDatum(OutputDatum) , PaymentCredential(PaymentCredential) + , PlutusScript + , ScriptHash , Transaction ) import Cardano.Types.BigNum as BigNum @@ -28,7 +31,6 @@ import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (Datum, PlutusData(Integer)) -import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.Sync (withoutSync) import Contract.Transaction ( ScriptRef(NativeScriptRef) @@ -60,7 +62,7 @@ contract :: Boolean -> Contract Unit contract testAdditionalUtxoOverlap = withoutSync do logInfo' "Running Examples.AdditionalUtxos" validator <- alwaysSucceedsScriptV2 - let vhash = validatorHash validator + let vhash = PlutusScript.hash validator { unbalancedTx, datum } <- payToValidator vhash withBalancedTx unbalancedTx Map.empty mempty \balancedTx -> do balancedSignedTx <- signTransaction balancedTx @@ -72,7 +74,7 @@ contract testAdditionalUtxoOverlap = withoutSync do spendFromValidator validator additionalUtxos datum payToValidator - :: ValidatorHash + :: ScriptHash -> Contract { unbalancedTx :: Transaction , datum :: Datum @@ -104,7 +106,7 @@ payToValidator vhash = do pure { unbalancedTx: tx, datum } -spendFromValidator :: Validator -> UtxoMap -> Datum -> Contract Unit +spendFromValidator :: PlutusScript -> UtxoMap -> Datum -> Contract Unit spendFromValidator validator additionalUtxos datum = do addr <- mkAddress (wrap $ ScriptHashCredential $ PlutusScript.hash validator) Nothing diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index 4652c08c4..7225f0d8f 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -13,14 +13,13 @@ module Ctl.Examples.AlwaysSucceeds import Contract.Prelude import Cardano.Transaction.Builder - ( DatumWitness(DatumValue, DatumReference) - , OutputWitness(NativeScriptOutput, PlutusScriptOutput) - , ScriptWitness(ScriptValue, ScriptReference) + ( DatumWitness(DatumValue) + , OutputWitness(PlutusScriptOutput) + , ScriptWitness(ScriptValue) , TransactionBuilderStep(SpendOutput, Pay) ) import Cardano.Types ( Credential(PubKeyHashCredential, ScriptHashCredential) - , OutputDatum(OutputDatum) , PaymentCredential(PaymentCredential) , PlutusScript , ScriptHash @@ -30,17 +29,16 @@ import Cardano.Types ) import Cardano.Types.BigNum as BigNum import Cardano.Types.DataHash (hashPlutusData) -import Cardano.Types.DataHash as PlutusData -import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash, OutputDatum)) +import Cardano.Types.OutputDatum (OutputDatum(OutputDatumHash)) import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript as Script +import Cardano.Types.RedeemerDatum as RedeemerDatum import Cardano.Types.Transaction as Transaction import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (unitRedeemer) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( awaitTxConfirmed @@ -114,7 +112,8 @@ spendFromAlwaysSucceeds vhash validator txId = do mempty [ SpendOutput utxo - ( Just $ PlutusScriptOutput (ScriptValue validator) unitRedeemer $ Just + ( Just $ PlutusScriptOutput (ScriptValue validator) RedeemerDatum.unit + $ Just $ DatumValue $ PlutusData.unit ) diff --git a/examples/ContractTestUtils.purs b/examples/ContractTestUtils.purs index b930bc44c..570776223 100644 --- a/examples/ContractTestUtils.purs +++ b/examples/ContractTestUtils.purs @@ -11,11 +11,18 @@ module Ctl.Examples.ContractTestUtils import Contract.Prelude +import Cardano.Transaction.Builder + ( CredentialWitness(PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(Pay, MintAsset) + ) import Cardano.Types ( BigNum , Coin , ExUnits(ExUnits) - , TransactionOutput + , PaymentCredential(PaymentCredential) + , StakeCredential(StakeCredential) + , TransactionOutput(TransactionOutput) , _body , _datum , _fee @@ -23,17 +30,16 @@ import Cardano.Types ) import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(PubKeyHashCredential)) +import Cardano.Types.DataHash (hashPlutusData) import Cardano.Types.Int as Int -import Cardano.Types.Mint (Mint) -import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript (PlutusScript) +import Cardano.Types.RedeemerDatum as RedeemerDatum import Cardano.Types.ScriptRef (ScriptRef(PlutusScriptRef)) import Contract.Address (Address, PaymentPubKeyHash, StakePubKeyHash, mkAddress) import Contract.Hashing (datumHash) import Contract.Log (logInfo') import Contract.Monad (Contract, liftContractM, liftedM) import Contract.PlutusData (Datum, OutputDatum(OutputDatumHash)) -import Contract.ScriptLookups as Lookups import Contract.Test.Assert ( ContractCheck , assertOutputHasDatum @@ -50,13 +56,11 @@ import Contract.Transaction , TransactionUnspentOutput , awaitTxConfirmed , balanceTx + , buildTx , lookupTxHash , signTransaction , submit ) -import Contract.TxConstraints (DatumPresence(DatumWitness)) -import Contract.TxConstraints as Constraints -import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Utxos (utxosAt) import Contract.Value (CurrencySymbol, TokenName, Value) import Contract.Value (lovelaceValueOf, singleton) as Value @@ -65,9 +69,9 @@ import Contract.Wallet , ownPaymentPubKeyHashes , ownStakePubKeyHashes ) -import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers import Data.Array (head) -import Data.Lens (_1, _2, view, (%~)) +import Data.Lens (view) +import Data.Map as Map import Effect.Exception (throw) type ContractParams = @@ -132,39 +136,40 @@ mkContract p = do logInfo' "Running Examples.ContractTestUtils" ownPkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes ownSkh <- join <<< head <$> ownStakePubKeyHashes + receiverAddress <- mkAddress + (PaymentCredential $ PubKeyHashCredential $ unwrap p.receiverPkh) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> p.receiverSkh) + ownAddress <- mkAddress + (PaymentCredential $ PubKeyHashCredential $ unwrap ownPkh) + (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> ownSkh) let - mustPayToPubKeyStakeAddressWithDatumAndScriptRef = - ownSkh # maybe Constraints.mustPayToPubKeyWithDatumAndScriptRef - \skh pkh -> - Constraints.mustPayToPubKeyAddressWithDatumAndScriptRef pkh skh - adaValue :: Value adaValue = Value.lovelaceValueOf (unwrap p.adaToSend) - nonAdaMint :: Mint - nonAdaMint = uncurry3 Mint.singleton - (p.tokensToMint <#> _2 <<< _1 %~ Int.newPositive) - nonAdaValue :: Value nonAdaValue = uncurry3 Value.singleton p.tokensToMint - constraints :: Constraints.TxConstraints - constraints = mconcat - [ Helpers.mustPayToPubKeyStakeAddress p.receiverPkh p.receiverSkh adaValue - - , Constraints.mustMintValue nonAdaMint - - , mustPayToPubKeyStakeAddressWithDatumAndScriptRef ownPkh p.datumToAttach - DatumWitness - (PlutusScriptRef p.mintingPolicy) - nonAdaValue + scriptHash /\ assetName /\ mintAmount /\ _ = p.tokensToMint + plan = + [ Pay $ TransactionOutput + { address: receiverAddress + , amount: adaValue + , datum: Nothing + , scriptRef: Nothing + } + , MintAsset scriptHash assetName (Int.newPositive mintAmount) + $ PlutusScriptCredential (ScriptValue p.mintingPolicy) + RedeemerDatum.unit + , Pay $ TransactionOutput + { address: ownAddress + , amount: nonAdaValue + , datum: Just $ OutputDatumHash $ hashPlutusData p.datumToAttach + , scriptRef: Just $ PlutusScriptRef p.mintingPolicy + } ] - lookups :: Lookups.ScriptLookups - lookups = Lookups.plutusMintingPolicy p.mintingPolicy - - unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx usedUtxos mempty + unbalancedTx <- buildTx plan + balancedTx <- balanceTx unbalancedTx Map.empty mempty balancedSignedTx <- signTransaction balancedTx txId <- submit balancedSignedTx diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index 732ad0af6..54a8326a3 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -27,13 +27,13 @@ import Cardano.Types ) import Cardano.Types.BigNum as BigNum import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.RedeemerDatum as RedeemerDatum import Cardano.Types.Transaction as Transaction import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (unitRedeemer) import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction @@ -111,11 +111,12 @@ spendFromAlwaysFails vhash validator txId = do [ SpendOutput utxo $ Just - $ PlutusScriptOutput (ScriptValue validator) unitRedeemer Nothing + $ PlutusScriptOutput (ScriptValue validator) RedeemerDatum.unit + Nothing ] <#> _isValid .~ false - balancedTx <- balanceTx unbalancedTx (toUtxoMap [ utxo ]) mempty - balancedSignedTx <- signTransaction $ balancedTx # _isValid .~ true - spendTxId <- submit balancedSignedTx + spendTx <- balanceTx unbalancedTx (toUtxoMap [ utxo ]) mempty + signedTx <- signTransaction (spendTx # _isValid .~ true) + spendTxId <- submit signedTx logInfo' $ "Tx ID: " <> show spendTxId awaitTxConfirmed spendTxId logInfo' "Successfully spent locked values." diff --git a/examples/ManyAssets.purs b/examples/ManyAssets.purs index 3d2a8f1e3..32ee45a4f 100644 --- a/examples/ManyAssets.purs +++ b/examples/ManyAssets.purs @@ -8,26 +8,23 @@ module Ctl.Examples.ManyAssets import Contract.Prelude +import Cardano.Transaction.Builder + ( CredentialWitness(PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(MintAsset) + ) import Cardano.Types.Int as Int -import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.RedeemerDatum as RedeemerDatum +import Cardano.Types.Transaction as Transaction import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') -import Contract.Monad - ( Contract - , launchAff_ - , liftContractM - , liftedM - , runContract - ) -import Contract.ScriptLookups as Lookups -import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) -import Contract.TxConstraints as Constraints -import Contract.Wallet (getWalletUtxos) +import Contract.Monad (Contract, launchAff_, runContract) +import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Ctl.Examples.Helpers (mkAssetName) as Helpers import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) -import Data.Array (head, range) as Array -import Data.Map (toUnfoldable) as Map +import Data.Array (range) as Array +import Data.Map as Map main :: Effect Unit main = example testnetNamiConfig @@ -45,29 +42,16 @@ mkContractWithAssertions -> Contract Unit mkContractWithAssertions exampleName = do logInfo' ("Running " <> exampleName) - utxos <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos - oref <- - liftContractM "Utxo set is empty" - (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) - mp <- alwaysMintsPolicyScriptV2 let cs = PlutusScript.hash mp tns <- for (Array.range 0 600) \i -> Helpers.mkAssetName $ "CTLNFT" <> show i let - constraints :: Constraints.TxConstraints - constraints = - fold - ( tns <#> \tn -> Constraints.mustMintValue - (Mint.singleton cs tn $ Int.fromInt one) - ) - <> Constraints.mustSpendPubKeyOutput oref - - lookups :: Lookups.ScriptLookups - lookups = Lookups.plutusMintingPolicy mp - <> Lookups.unspentOutputs utxos + plan = + tns <#> \tn -> MintAsset cs tn (Int.fromInt one) + (PlutusScriptCredential (ScriptValue mp) RedeemerDatum.unit) - txHash <- submitTxFromConstraints lookups constraints + txHash <- Transaction.hash <$> submitTxFromBuildPlan Map.empty mempty plan logInfo' $ "Tx ID: " <> show txHash awaitTxConfirmed txHash logInfo' "Tx submitted successfully!" diff --git a/src/Contract/Scripts.purs b/src/Contract/Scripts.purs index c23c326bf..d9e76f4d6 100644 --- a/src/Contract/Scripts.purs +++ b/src/Contract/Scripts.purs @@ -65,7 +65,8 @@ type Validator = PlutusScript type ValidatorHash = ScriptHash validatorHash - :: Warn (Text "Deprecated: validatorHash. Use Cardano.Types.PlutusData.hash") + :: Warn + (Text "Deprecated: validatorHash. Use Cardano.Types.PlutusScript.hash") => PlutusScript -> ScriptHash validatorHash = PlutusScript.hash diff --git a/src/Internal/BalanceTx/Error.purs b/src/Internal/BalanceTx/Error.purs index 3ed6911e5..a644f57f8 100644 --- a/src/Internal/BalanceTx/Error.purs +++ b/src/Internal/BalanceTx/Error.purs @@ -142,8 +142,6 @@ explainBalanceTxError = case _ of <> pprintTagSet "for" (pprintTransactionInput ti) <> " from a " <> pprintTagSet "given set of UTxOs:" (pprintUtxoMap mp) - <> "\nThis should be impossible: please report this as a bug to " - <> bugTrackerLink UtxoMinAdaValueCalculationFailed -> "Could not calculate min ADA for UTxO" NumericOverflowError mbVal -> diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index f88ceaf36..32ac37db7 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -6,10 +6,17 @@ import Prelude import Cardano.AsCbor (decodeCbor) import Cardano.Serialization.Lib (fromBytes) -import Cardano.Transaction.Builder (TransactionBuilderStep(Pay)) +import Cardano.Transaction.Builder + ( DatumWitness(DatumValue) + , OutputWitness(PlutusScriptOutput) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(Pay, SpendOutput) + ) import Cardano.Types ( Address + , Credential(PubKeyHashCredential, ScriptHashCredential) , GeneralTransactionMetadata(GeneralTransactionMetadata) + , PaymentCredential(PaymentCredential) , StakeCredential(StakeCredential) , TransactionUnspentOutput(TransactionUnspentOutput) , _input @@ -17,13 +24,12 @@ import Cardano.Types ) import Cardano.Types.AssetName as AssetName import Cardano.Types.Coin as Coin -import Cardano.Types.Credential - ( Credential(PubKeyHashCredential, ScriptHashCredential) - ) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint -import Cardano.Types.PaymentCredential (PaymentCredential(PaymentCredential)) +import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.RedeemerDatum as RedeemerDatum +import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Cardano.Types.Value (lovelaceValueOf) import Contract.Address ( PaymentPubKeyHash(PaymentPubKeyHash) @@ -82,7 +88,7 @@ import Contract.Transaction ( BalanceTxError(BalanceInsufficientError, InsufficientCollateralUtxos) , DataHash , NativeScript(ScriptPubkey, ScriptNOfK, ScriptAll) - , OutputDatum(OutputDatumHash, OutputDatum) + , OutputDatum(OutputDatum, OutputDatumHash) , ScriptRef(PlutusScriptRef, NativeScriptRef) , TransactionHash(TransactionHash) , TransactionInput(TransactionInput) @@ -142,7 +148,9 @@ import Ctl.Examples.PaysWithDatum (contract) as PaysWithDatum import Ctl.Examples.PlutusV2.InlineDatum as InlineDatum import Ctl.Examples.PlutusV2.OneShotMinting (contract) as OneShotMintingV2 import Ctl.Examples.PlutusV2.ReferenceInputs (contract) as ReferenceInputs -import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts (contract) as ReferenceInputsAndScripts +import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts + ( contract + ) as ReferenceInputsAndScripts import Ctl.Examples.PlutusV2.ReferenceScripts (contract) as ReferenceScripts import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) @@ -171,7 +179,7 @@ import Data.UInt (UInt) import Effect.Class (liftEffect) import Effect.Exception (error, throw) import JS.BigInt as BigInt -import Mote (group, only, skip, test) +import Mote (group, skip, test) import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Safe.Coerce (coerce) @@ -201,7 +209,6 @@ suite = do void $ waitUntilSlot $ Slot $ BigNum.fromInt 10 void $ waitUntilSlot $ Slot $ BigNum.fromInt 160 void $ waitUntilSlot $ Slot $ BigNum.fromInt 161 - void $ waitUntilSlot $ Slot $ BigNum.fromInt 241 group "Regressions" do skip $ test "#1441 - Mint many assets at once - fails with TooManyAssetsInOutput" @@ -270,7 +277,7 @@ suite = do withWallets distribution \_ → pure unit - only $ group "Contract interface" do + group "Contract interface" do test "mustUseCollateralUtxos should not fail if enough UTxOs are provided" do @@ -294,7 +301,7 @@ suite = do scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing utxos <- utxosAt scriptAddress - txInput <- + utxo <- liftM ( error ( "The id " @@ -303,17 +310,21 @@ suite = do <> show scriptAddress ) ) - (view _input <$> head (lookupTxHash txId utxos)) + $ head (lookupTxHash txId utxos) let - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos - - constraints :: TxConstraints - constraints = - Constraints.mustSpendScriptOutput txInput unitRedeemer + usedUtxos = Map.union utxos $ toUtxoMap [ utxo ] + ubTx <- buildTx + [ SpendOutput + utxo + ( Just + $ PlutusScriptOutput (ScriptValue validator) + RedeemerDatum.unit + $ Just + $ DatumValue + $ PlutusData.unit + ) + ] - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints res <- balanceTxE ubTx usedUtxos (mustUseCollateralUtxos bobsCollateral) res `shouldSatisfy` isRight @@ -339,7 +350,7 @@ suite = do scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing utxos <- utxosAt scriptAddress - txInput <- + utxo <- liftM ( error ( "The id " @@ -348,17 +359,20 @@ suite = do <> show scriptAddress ) ) - (view _input <$> head (lookupTxHash txId utxos)) + $ head (lookupTxHash txId utxos) let - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos - - constraints :: TxConstraints - constraints = - Constraints.mustSpendScriptOutput txInput unitRedeemer - - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints + usedUtxos = Map.union utxos $ toUtxoMap [ utxo ] + ubTx <- buildTx + [ SpendOutput + utxo + ( Just + $ PlutusScriptOutput (ScriptValue validator) + RedeemerDatum.unit + $ Just + $ DatumValue + $ PlutusData.unit + ) + ] res <- balanceTxE ubTx usedUtxos (mustUseCollateralUtxos Map.empty) res `shouldSatisfy` case _ of Left (InsufficientCollateralUtxos mp) -> Map.isEmpty mp @@ -1452,36 +1466,37 @@ suite = do logInfo' "Try to spend locked values" AlwaysSucceeds.spendFromAlwaysSucceeds vhash validator txId - only $ group "CIP-40 Collateral Output" do - only $ test "Always failing script triggers Collateral Return (ADA-only)" do - let - distribution :: InitialUTxOs /\ InitialUTxOs - distribution = - [ BigNum.fromInt 10_000_000 - , BigNum.fromInt 50_000_000 - ] /\ [ BigNum.fromInt 50_000_000 ] - withWallets distribution \(alice /\ seed) -> do - validator <- AlwaysFails.alwaysFailsScript - let vhash = validatorHash validator - txId <- withKeyWallet seed do - logInfo' "Attempt to lock value" - txId <- AlwaysFails.payToAlwaysFails vhash - awaitTxConfirmed txId - pure txId + group "CIP-40 Collateral Output" do + test "Always failing script triggers Collateral Return (ADA-only)" + do + let + distribution :: InitialUTxOs /\ InitialUTxOs + distribution = + [ BigNum.fromInt 10_000_000 + , BigNum.fromInt 50_000_000 + ] /\ [ BigNum.fromInt 50_000_000 ] + withWallets distribution \(alice /\ seed) -> do + validator <- AlwaysFails.alwaysFailsScript + let vhash = validatorHash validator + txId <- withKeyWallet seed do + logInfo' "Attempt to lock value" + txId <- AlwaysFails.payToAlwaysFails vhash + awaitTxConfirmed txId + pure txId - withKeyWallet alice do - awaitTxConfirmed txId - logInfo' "Try to spend locked values" - balanceBefore <- unsafePartial $ fold <$> getWalletBalance - AlwaysFails.spendFromAlwaysFails vhash validator txId - balance <- unsafePartial $ fold <$> getWalletBalance - let - collateralLoss = Value.lovelaceValueOf $ BigNum.fromInt $ - 5_000_000 - balance `shouldEqual` - ( unsafePartial $ fromJust $ balanceBefore `Value.minus` - collateralLoss - ) + withKeyWallet alice do + awaitTxConfirmed txId + logInfo' "Try to spend locked values" + balanceBefore <- unsafePartial $ fold <$> getWalletBalance + AlwaysFails.spendFromAlwaysFails vhash validator txId + balance <- unsafePartial $ fold <$> getWalletBalance + let + collateralLoss = Value.lovelaceValueOf $ BigNum.fromInt $ + 5_000_000 + balance `shouldEqual` + ( unsafePartial $ fromJust $ balanceBefore `Value.minus` + collateralLoss + ) test "AlwaysFails script triggers Native Asset Collateral Return (tokens)" do diff --git a/test/Plutip/UtxoDistribution.purs b/test/Plutip/UtxoDistribution.purs index fd7afd736..a6bd33cdc 100644 --- a/test/Plutip/UtxoDistribution.purs +++ b/test/Plutip/UtxoDistribution.purs @@ -60,14 +60,14 @@ import Mote (group, test) import Mote.TestPlanM (TestPlanM) import Partial.Unsafe (unsafePartial) import Test.Ctl.Plutip.Common (config, privateStakeKey) -import Test.QuickCheck (class Arbitrary, arbitrary) +import Test.QuickCheck (class Arbitrary, arbitrary, mkSeed) import Test.QuickCheck.Gen ( Gen , arrayOf , chooseInt , frequency - , randomSample' , resize + , sample , sized ) import Type.Prelude (Proxy(Proxy)) @@ -102,8 +102,9 @@ suite = group "UtxoDistribution" do (withStakeKey privateStakeKey <$> distribution1) runPlutipContract config distribution $ checkUtxoDistribution distribution - distrs <- liftEffect $ randomSample' 5 arbitrary - for_ distrs $ \distr -> + -- set seed to 5 and size to 10 to fail + let distrs = sample (mkSeed 2) 5 arbitrary + for_ distrs $ \distr -> do test ( "stake key transfers with random distribution: " <> ppArbitraryUtxoDistr distr From 2e72416a4a7f4eb677267afb2c0b73e77df20455 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 Jul 2024 13:43:30 +0400 Subject: [PATCH 294/373] Deprecate Contract.TxConstraints --- src/Internal/Types/TxConstraints.purs | 122 ++++++++++++++++---------- 1 file changed, 78 insertions(+), 44 deletions(-) diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index 3e1fb9a1f..4ca42ce6a 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -249,6 +249,9 @@ instance Show OutputConstraint where -- | Restrictions placed on the allocation of funds to outputs of transactions. type TxConstraints = Array TxConstraint +type TxConstraintsDeprecated = Text + "Contract.TxConstraints is deprecated. Use `purescript-cardano-transaction-builder`" + -------------------------------------------------------------------------------- -- Helpers -------------------------------------------------------------------------------- @@ -256,27 +259,28 @@ type TxConstraints = Array TxConstraint -- | `mustValidateIn r` requires the transaction's time range to be contained -- | in `r`. mustValidateIn - :: POSIXTimeRange -> TxConstraints + :: Warn TxConstraintsDeprecated => POSIXTimeRange -> TxConstraints mustValidateIn = singleton <<< MustValidateIn -- | Require the transaction to be signed by the public key. mustBeSignedBy - :: PaymentPubKeyHash -> TxConstraints + :: Warn TxConstraintsDeprecated => PaymentPubKeyHash -> TxConstraints mustBeSignedBy = singleton <<< MustBeSignedBy -- | Require the transaction to include a datum. -mustIncludeDatum :: PlutusData -> TxConstraints +mustIncludeDatum :: Warn TxConstraintsDeprecated => PlutusData -> TxConstraints mustIncludeDatum = singleton <<< MustIncludeDatum -- | Require the transaction to reference (not spend!) the given unspent -- | transaction output. mustReferenceOutput - :: TransactionInput -> TxConstraints + :: Warn TxConstraintsDeprecated => TransactionInput -> TxConstraints mustReferenceOutput = singleton <<< MustReferenceOutput -- | Lock the value with a public key address. (Base Address) mustPayToPubKeyAddress - :: PaymentPubKeyHash + :: Warn TxConstraintsDeprecated + => PaymentPubKeyHash -> StakePubKeyHash -> Value -> TxConstraints @@ -285,7 +289,8 @@ mustPayToPubKeyAddress pkh skh = -- | Lock the value and datum with a public key address. mustPayToPubKeyAddressWithDatum - :: PaymentPubKeyHash + :: Warn TxConstraintsDeprecated + => PaymentPubKeyHash -> StakePubKeyHash -> PlutusData -> DatumPresence @@ -297,7 +302,8 @@ mustPayToPubKeyAddressWithDatum pkh skh datum dtp = -- | Lock the value and reference script with a public key address. mustPayToPubKeyAddressWithScriptRef - :: PaymentPubKeyHash + :: Warn TxConstraintsDeprecated + => PaymentPubKeyHash -> StakePubKeyHash -> ScriptRef -> Value @@ -307,7 +313,8 @@ mustPayToPubKeyAddressWithScriptRef pkh skh scriptRef = -- | Lock the value, datum and reference script with a public key address. mustPayToPubKeyAddressWithDatumAndScriptRef - :: PaymentPubKeyHash + :: Warn TxConstraintsDeprecated + => PaymentPubKeyHash -> StakePubKeyHash -> PlutusData -> DatumPresence @@ -324,6 +331,7 @@ mustPayToPubKey ( Text "Some wallets may not recognize addresses without a staking key component. Consider using mustPayToPubKeyAddress" ) + => Warn TxConstraintsDeprecated => PaymentPubKeyHash -> Value -> TxConstraints @@ -332,7 +340,8 @@ mustPayToPubKey pkh = -- | Lock the value and datum with a payment public key hash. mustPayToPubKeyWithDatum - :: PaymentPubKeyHash + :: Warn TxConstraintsDeprecated + => PaymentPubKeyHash -> PlutusData -> DatumPresence -> Value @@ -342,7 +351,8 @@ mustPayToPubKeyWithDatum pkh datum dtp = -- | Lock the value and reference script with a payment public key hash. mustPayToPubKeyWithScriptRef - :: PaymentPubKeyHash + :: Warn TxConstraintsDeprecated + => PaymentPubKeyHash -> ScriptRef -> Value -> TxConstraints @@ -367,7 +377,8 @@ mustPayToPubKeyWithDatumAndScriptRef pkh datum dtp scriptRef = -- | `mustPayToScript`, and all scripts must be explicitly provided to build -- | the transaction. mustPayToScript - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> PlutusData -> DatumPresence -> Value @@ -377,7 +388,8 @@ mustPayToScript vh dt dtp vl = <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) mustPayToScriptAddress - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> Credential -> PlutusData -> DatumPresence @@ -391,7 +403,8 @@ mustPayToScriptAddress vh credential dt dtp vl = -- | Note that the provided reference script does *not* necessarily need to -- | control the spending of the output, i.e. both scripts can be different. mustPayToScriptWithScriptRef - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> PlutusData -> DatumPresence -> ScriptRef @@ -405,7 +418,8 @@ mustPayToScriptWithScriptRef vh dt dtp scriptRef vl = -- | Note that the provided reference script does *not* necessarily need to -- | control the spending of the output, i.e. both scripts can be different. mustPayToScriptAddressWithScriptRef - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> Credential -> PlutusData -> DatumPresence @@ -417,14 +431,16 @@ mustPayToScriptAddressWithScriptRef vh credential dt dtp scriptRef vl = <> guard (dtp == DatumWitness) (singleton $ MustIncludeDatum dt) mustPayToNativeScript - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> Value -> TxConstraints mustPayToNativeScript nsHash vl = singleton (MustPayToNativeScript nsHash Nothing vl) mustPayToNativeScriptAddress - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> Credential -> Value -> TxConstraints @@ -433,13 +449,14 @@ mustPayToNativeScriptAddress nsHash credential vl = -- | Mint the given `Value` -- | The amount to mint must not be zero. -mustMintValue :: Mint -> TxConstraints +mustMintValue :: Warn TxConstraintsDeprecated => Mint -> TxConstraints mustMintValue = mustMintValueWithRedeemer RedeemerDatum.unit -- | Mint the given `Value` by accessing non-Ada assets. -- | The amount to mint must not be zero. mustMintValueWithRedeemer - :: RedeemerDatum + :: Warn TxConstraintsDeprecated + => RedeemerDatum -> Mint -> TxConstraints mustMintValueWithRedeemer redeemer = @@ -453,7 +470,8 @@ mustMintValueWithRedeemer redeemer = -- | Create the given amount of the currency. -- | The amount to mint must not be zero. mustMintCurrency - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> AssetName -> Int.Int -> TxConstraints @@ -461,7 +479,8 @@ mustMintCurrency mph = mustMintCurrencyWithRedeemer mph RedeemerDatum.unit mustMintCurrencyUsingNativeScript - :: NativeScript + :: Warn TxConstraintsDeprecated + => NativeScript -> AssetName -> Int.Int -> TxConstraints @@ -471,7 +490,8 @@ mustMintCurrencyUsingNativeScript ns tk i = singleton -- | Create the given amount of the currency using a reference minting policy. -- | The amount to mint must not be zero. mustMintCurrencyUsingScriptRef - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> AssetName -> Int.Int -> InputWithScriptRef @@ -482,7 +502,8 @@ mustMintCurrencyUsingScriptRef mph = -- | Create the given amount of the currency. -- | The amount to mint must not be zero. mustMintCurrencyWithRedeemer - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> RedeemerDatum -> AssetName -> Int.Int @@ -493,7 +514,8 @@ mustMintCurrencyWithRedeemer mph red tn amount = -- | Create the given amount of the currency using a reference minting policy. -- | The amount to mint must not be zero. mustMintCurrencyWithRedeemerUsingScriptRef - :: ScriptHash + :: Warn TxConstraintsDeprecated + => ScriptHash -> RedeemerDatum -> AssetName -> Int.Int @@ -503,21 +525,22 @@ mustMintCurrencyWithRedeemerUsingScriptRef mph red tn amount = singleton <<< MustMintValue mph red tn amount <<< Just -- | Requirement to spend inputs with at least the given value -mustSpendAtLeast :: Value -> TxConstraints +mustSpendAtLeast :: Warn TxConstraintsDeprecated => Value -> TxConstraints mustSpendAtLeast = singleton <<< MustSpendAtLeast -- | Requirement to produce outputs with at least the given value -mustProduceAtLeast :: Value -> TxConstraints +mustProduceAtLeast :: Warn TxConstraintsDeprecated => Value -> TxConstraints mustProduceAtLeast = singleton <<< MustProduceAtLeast -- | Spend the given unspent transaction public key output. mustSpendPubKeyOutput - :: TransactionInput -> TxConstraints + :: Warn TxConstraintsDeprecated => TransactionInput -> TxConstraints mustSpendPubKeyOutput = singleton <<< MustSpendPubKeyOutput -- | Spend the given unspent transaction script output. mustSpendScriptOutput - :: TransactionInput + :: Warn TxConstraintsDeprecated + => TransactionInput -> RedeemerDatum -> TxConstraints mustSpendScriptOutput txOutRef red = @@ -526,7 +549,8 @@ mustSpendScriptOutput txOutRef red = -- | Spend the given unspent transaction script output, using a reference script -- | to satisfy the script witnessing requirement. mustSpendScriptOutputUsingScriptRef - :: TransactionInput + :: Warn TxConstraintsDeprecated + => TransactionInput -> RedeemerDatum -> InputWithScriptRef -> TxConstraints @@ -534,59 +558,65 @@ mustSpendScriptOutputUsingScriptRef txOutRef red = singleton <<< MustSpendScriptOutput txOutRef red <<< Just mustSpendNativeScriptOutput - :: TransactionInput + :: Warn TxConstraintsDeprecated + => TransactionInput -> NativeScript -> TxConstraints mustSpendNativeScriptOutput txOutRef = singleton <<< MustSpendNativeScriptOutput txOutRef mustHashDatum - :: DataHash -> PlutusData -> TxConstraints + :: Warn TxConstraintsDeprecated => DataHash -> PlutusData -> TxConstraints mustHashDatum dhsh = singleton <<< MustHashDatum dhsh mustRegisterStakePubKey - :: StakePubKeyHash -> TxConstraints + :: Warn TxConstraintsDeprecated => StakePubKeyHash -> TxConstraints mustRegisterStakePubKey = singleton <<< MustRegisterStakePubKey mustDeregisterStakePubKey - :: StakePubKeyHash -> TxConstraints + :: Warn TxConstraintsDeprecated => StakePubKeyHash -> TxConstraints mustDeregisterStakePubKey = singleton <<< MustDeregisterStakePubKey mustRegisterStakeScript - :: ScriptHash -> TxConstraints + :: Warn TxConstraintsDeprecated => ScriptHash -> TxConstraints mustRegisterStakeScript = singleton <<< MustRegisterStakeScript mustDeregisterStakePlutusScript - :: PlutusScript + :: Warn TxConstraintsDeprecated + => PlutusScript -> RedeemerDatum -> TxConstraints mustDeregisterStakePlutusScript sv = singleton <<< MustDeregisterStakePlutusScript sv mustDeregisterStakeNativeScript - :: NativeScript + :: Warn TxConstraintsDeprecated + => NativeScript -> TxConstraints mustDeregisterStakeNativeScript = singleton <<< MustDeregisterStakeNativeScript mustRegisterPool - :: PoolParams -> TxConstraints + :: Warn TxConstraintsDeprecated => PoolParams -> TxConstraints mustRegisterPool = singleton <<< MustRegisterPool mustRetirePool - :: PoolPubKeyHash + :: Warn TxConstraintsDeprecated + => PoolPubKeyHash -> Epoch -> TxConstraints mustRetirePool poolPubKeyHash = singleton <<< MustRetirePool poolPubKeyHash mustDelegateStakePubKey - :: StakePubKeyHash + :: Warn TxConstraintsDeprecated + => StakePubKeyHash -> PoolPubKeyHash -> TxConstraints mustDelegateStakePubKey spkh ppkh = singleton $ MustDelegateStakePubKey spkh ppkh mustDelegateStakePlutusScript - :: PlutusScript + :: Warn TxConstraintsDeprecated + => PlutusScript -> RedeemerDatum -> PoolPubKeyHash -> TxConstraints @@ -594,25 +624,28 @@ mustDelegateStakePlutusScript sv redeemer ppkh = singleton $ MustDelegateStakePlutusScript sv redeemer ppkh mustDelegateStakeNativeScript - :: NativeScript + :: Warn TxConstraintsDeprecated + => NativeScript -> PoolPubKeyHash -> TxConstraints mustDelegateStakeNativeScript sv ppkh = singleton $ MustDelegateStakeNativeScript sv ppkh mustWithdrawStakePubKey - :: StakePubKeyHash -> TxConstraints + :: Warn TxConstraintsDeprecated => StakePubKeyHash -> TxConstraints mustWithdrawStakePubKey spkh = singleton $ MustWithdrawStakePubKey spkh mustWithdrawStakePlutusScript - :: PlutusScript + :: Warn TxConstraintsDeprecated + => PlutusScript -> RedeemerDatum -> TxConstraints mustWithdrawStakePlutusScript validator redeemer = singleton $ MustWithdrawStakePlutusScript validator redeemer mustWithdrawStakeNativeScript - :: NativeScript + :: Warn TxConstraintsDeprecated + => NativeScript -> TxConstraints mustWithdrawStakeNativeScript = singleton <<< MustWithdrawStakeNativeScript @@ -624,6 +657,7 @@ mustWithdrawStakeNativeScript = mustSatisfyAnyOf :: forall (f :: Type -> Type) . Foldable f + => Warn TxConstraintsDeprecated => f (TxConstraints) -> TxConstraints mustSatisfyAnyOf = @@ -634,5 +668,5 @@ mustSatisfyAnyOf = -- | Marks the transaction as invalid, requiring at least one script execution -- | to fail. Despite failure, the transaction can still be submitted into the -- | chain and collateral will be lost. -mustNotBeValid :: TxConstraints +mustNotBeValid :: Warn TxConstraintsDeprecated => TxConstraints mustNotBeValid = singleton $ MustNotBeValid From 6eb9ba26877f478c4353a858d3fee2f16606f4c5 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Wed, 17 Jul 2024 09:35:24 -0300 Subject: [PATCH 295/373] Complete implementation of Blockfrost's `getTxAuxiliaryData` --- src/Internal/Contract/QueryHandle.purs | 13 +----- src/Internal/QueryM/Kupo.purs | 2 +- src/Internal/Service/Blockfrost.purs | 59 +++++++++++++++++++++++--- 3 files changed, 57 insertions(+), 17 deletions(-) diff --git a/src/Internal/Contract/QueryHandle.purs b/src/Internal/Contract/QueryHandle.purs index 360c6bf91..c678c7854 100644 --- a/src/Internal/Contract/QueryHandle.purs +++ b/src/Internal/Contract/QueryHandle.purs @@ -10,7 +10,6 @@ import Cardano.AsCbor (encodeCbor) import Cardano.Types.Transaction (hash) as Transaction import Contract.Log (logDebug') import Control.Monad.Error.Class (throwError) -import Control.Monad.Except (ExceptT(ExceptT), runExceptT) import Ctl.Internal.Contract.LogParams (LogParams) import Ctl.Internal.Contract.QueryBackend (BlockfrostBackend, CtlBackend) import Ctl.Internal.Contract.QueryHandle.Type (QueryHandle) @@ -41,7 +40,7 @@ import Ctl.Internal.Service.Blockfrost import Ctl.Internal.Service.Blockfrost as Blockfrost import Ctl.Internal.Service.Error (ClientError(ClientOtherError)) import Data.Either (Either(Left, Right)) -import Data.Maybe (Maybe(Just, Nothing), fromMaybe, isJust) +import Data.Maybe (fromMaybe, isJust) import Data.Newtype (wrap) import Effect.Aff (Aff) import Effect.Exception (error) @@ -101,15 +100,7 @@ queryHandleForBlockfrostBackend logParams backend = , getOutputAddressesByTxHash: runBlockfrostServiceM' <<< Blockfrost.getOutputAddressesByTxHash , doesTxExist: runBlockfrostServiceM' <<< Blockfrost.doesTxExist - , getTxAuxiliaryData: \txHash -> runExceptT do - -- FIXME: check if Blockfrost also returns full aux data - metadata <- ExceptT $ runBlockfrostServiceM' $ Blockfrost.getTxMetadata - txHash - pure $ wrap - { metadata: Just metadata - , nativeScripts: Nothing - , plutusScripts: Nothing - } + , getTxAuxiliaryData: runBlockfrostServiceM' <<< Blockfrost.getTxAuxiliaryData , utxosAt: runBlockfrostServiceM' <<< Blockfrost.utxosAt , getChainTip: runBlockfrostServiceM' Blockfrost.getChainTip , getCurrentEpoch: diff --git a/src/Internal/QueryM/Kupo.purs b/src/Internal/QueryM/Kupo.purs index 5ae6ef14b..3a5eb589b 100644 --- a/src/Internal/QueryM/Kupo.purs +++ b/src/Internal/QueryM/Kupo.purs @@ -457,7 +457,7 @@ unwrapKupoUtxoSlot :: KupoUtxoSlot -> Slot unwrapKupoUtxoSlot (KupoUtxoSlot slot) = slot -------------------------------------------------------------------------------- --- `getTxAuxiliaryData` reponse parsing +-- `getTxAuxiliaryData` response parsing -------------------------------------------------------------------------------- newtype KupoAuxiliaryData = KupoAuxiliaryData (Maybe AuxiliaryData) diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 1e9708af2..3e31e298f 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -49,6 +49,7 @@ module Ctl.Internal.Service.Blockfrost , getScriptByHash , getScriptInfo , getSystemStart + , getTxAuxiliaryData , getTxMetadata , getUtxoByOref , getValidatorHashDelegationsAndRewards @@ -85,9 +86,10 @@ import Cardano.AsCbor (decodeCbor, encodeCbor) import Cardano.Serialization.Lib (toBytes) import Cardano.Types ( AssetClass(AssetClass) + , AuxiliaryData , DataHash , GeneralTransactionMetadata(GeneralTransactionMetadata) - , Language(PlutusV1, PlutusV2, PlutusV3) + , Language(PlutusV3, PlutusV2, PlutusV1) , PlutusData , PoolPubKeyHash , RawBytes @@ -128,6 +130,7 @@ import Cardano.Types.NativeScript ) import Cardano.Types.NetworkId (NetworkId) import Cardano.Types.OutputDatum (OutputDatum(OutputDatum, OutputDatumHash)) +import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.PoolPubKeyHash as PoolPubKeyHash import Cardano.Types.RedeemerTag (RedeemerTag(Spend, Mint, Cert, Reward)) as RedeemerTag @@ -201,6 +204,7 @@ import Ctl.Internal.Types.ProtocolParameters import Ctl.Internal.Types.Rational (Rational, reduce) import Ctl.Internal.Types.StakeValidatorHash (StakeValidatorHash) import Ctl.Internal.Types.SystemStart (SystemStart(SystemStart)) +import Data.Array (catMaybes) import Data.Array (find, length) as Array import Data.Bifunctor (lmap) import Data.BigNumber (BigNumber, toFraction) @@ -673,9 +677,38 @@ doesTxExist txHash = do Left e -> Left e -------------------------------------------------------------------------------- --- Get transaction metadata --------------------------------------------------------------------------------- +-- Get transaction auxiliary data +getTxAuxiliaryData + :: TransactionHash + -> BlockfrostServiceM (Either GetTxMetadataError AuxiliaryData) +getTxAuxiliaryData txHash = runExceptT do + metadata <- ExceptT $ getTxMetadata txHash + (scriptRefs :: Array ScriptRef) <- ExceptT $ getTxScripts txHash + pure $ wrap + { metadata: Just metadata + , nativeScripts: arrayToMaybe $ getNativeScripts scriptRefs + -- , nativeScripts: Nothing + , plutusScripts: arrayToMaybe $ getPlutusScripts scriptRefs + } + + where + arrayToMaybe :: forall a. Array a -> Maybe (Array a) + arrayToMaybe [] = Nothing + arrayToMaybe xs = Just xs + + getNativeScripts :: Array ScriptRef -> Array NativeScript + getNativeScripts = catMaybes <<< map isNativeScript + where + isNativeScript (NativeScriptRef script) = Just script + isNativeScript (PlutusScriptRef _) = Nothing + getPlutusScripts :: Array ScriptRef -> Array PlutusScript + getPlutusScripts = catMaybes <<< map isPlutusScript + where + isPlutusScript (PlutusScriptRef script) = Just script + isPlutusScript (NativeScriptRef _) = Nothing + +-- TODO: refactor to aux and remove metadat from tests. add aux tests. getTxMetadata :: TransactionHash -> BlockfrostServiceM (Either GetTxMetadataError GeneralTransactionMetadata) @@ -684,13 +717,29 @@ getTxMetadata txHash = do pure case unwrapBlockfrostMetadata <$> handleBlockfrostResponse response of Left (ClientHttpResponseError (Affjax.StatusCode 404) _) -> Left GetTxMetadataTxNotFoundError - Left e -> - Left (GetTxMetadataClientError e) + Left e -> Left (GetTxMetadataClientError e) Right metadata | Map.isEmpty (unwrap metadata) -> Left GetTxMetadataMetadataEmptyOrMissingError | otherwise -> Right metadata +getTxScripts + :: TransactionHash + -> BlockfrostServiceM (Either GetTxMetadataError (Array ScriptRef)) +getTxScripts txHash = runExceptT do + (blockfrostUtxoMap :: BlockfrostUtxosOfTransaction) <- ExceptT $ + blockfrostGetRequest (UtxosOfTransaction txHash) + <#> lmap GetTxMetadataClientError <<< handle404AsMempty <<< + handleBlockfrostResponse + let + (scriptHashes :: Array ScriptHash) = catMaybes + $ map (_.scriptHash <<< unwrap <<< snd) + $ unwrap blockfrostUtxoMap + catMaybes <$> traverse (ExceptT <<< scriptByHash) scriptHashes + + where + scriptByHash t = (lmap GetTxMetadataClientError) <$> getScriptByHash t + -------------------------------------------------------------------------------- -- Get current epoch information -------------------------------------------------------------------------------- From 50a30863f08f3ee0cf6135f60d213df6c2649976 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 Jul 2024 18:14:10 +0400 Subject: [PATCH 296/373] WIP: rewrite more examples --- examples/ChangeGeneration.purs | 73 ++++++++++++++------------- examples/ExUnits.purs | 83 +++++++++++++++---------------- examples/IncludeDatum.purs | 67 ++++++++++++------------- examples/MintsMultipleTokens.purs | 48 +++++++++--------- examples/Pkh2Pkh.purs | 19 ++----- src/Contract/Wallet.purs | 2 +- 6 files changed, 140 insertions(+), 152 deletions(-) diff --git a/examples/ChangeGeneration.purs b/examples/ChangeGeneration.purs index 012b6362c..1c15e1bb5 100644 --- a/examples/ChangeGeneration.purs +++ b/examples/ChangeGeneration.purs @@ -2,36 +2,37 @@ module Ctl.Examples.ChangeGeneration (checkChangeOutputsDistribution) where import Prelude +import Cardano.Transaction.Builder (TransactionBuilderStep(Pay)) import Cardano.Types - ( _body + ( Credential(ScriptHashCredential) + , OutputDatum(OutputDatumHash) + , PaymentCredential(PaymentCredential) + , TransactionOutput(TransactionOutput) + , _body , _outputs ) import Cardano.Types.BigNum as BigNum +import Cardano.Types.DataHash (hashPlutusData) +import Cardano.Types.PlutusData as PlutusData +import Contract.Address (mkAddress) import Contract.BalanceTxConstraints (mustSendChangeWithDatum) -import Contract.Monad (Contract) -import Contract.PlutusData - ( OutputDatum(OutputDatum) - , PlutusData(Integer) - , unitDatum - ) -import Contract.ScriptLookups as Lookups +import Contract.Monad (Contract, liftedM) +import Contract.PlutusData (OutputDatum(OutputDatum), PlutusData(Integer)) import Contract.Scripts (validatorHash) import Contract.Transaction ( awaitTxConfirmed , balanceTx + , buildTx , signTransaction , submit ) -import Contract.TxConstraints (TxConstraints) -import Contract.TxConstraints as Constraints -import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value as Value -import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) +import Contract.Wallet (getWalletAddress) import Ctl.Examples.AlwaysSucceeds as AlwaysSucceeds -import Data.Array (fold, length, replicate, take, zip) +import Data.Array (length, replicate) import Data.Lens ((^.)) +import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing)) -import Data.Tuple.Nested ((/\)) import JS.BigInt (fromInt) as BigInt import Test.Spec.Assertions (shouldEqual) @@ -41,32 +42,36 @@ import Test.Spec.Assertions (shouldEqual) checkChangeOutputsDistribution :: Int -> Int -> Int -> Contract Unit checkChangeOutputsDistribution outputsToScript outputsToSelf expectedOutputs = do - pkhs <- ownPaymentPubKeyHashes - skhs <- ownStakePubKeyHashes validator <- AlwaysSucceeds.alwaysSucceedsScript + address <- liftedM "Failed to get own address" $ getWalletAddress let vhash = validatorHash validator + scriptAddress <- mkAddress + (PaymentCredential $ ScriptHashCredential $ vhash) + Nothing + let value = Value.lovelaceValueOf $ BigNum.fromInt 1000001 - constraintsToSelf :: TxConstraints - constraintsToSelf = fold <<< take outputsToSelf <<< fold - $ replicate outputsToSelf - $ zip pkhs skhs <#> \(pkh /\ mbSkh) -> case mbSkh of - Nothing -> Constraints.mustPayToPubKey pkh value - Just skh -> Constraints.mustPayToPubKeyAddress pkh skh value - - constraintsToScripts :: TxConstraints - constraintsToScripts = fold $ replicate outputsToScript - $ Constraints.mustPayToScript vhash unitDatum - Constraints.DatumWitness - value - - constraints = constraintsToSelf <> constraintsToScripts + plan = + replicate outputsToSelf + ( Pay $ TransactionOutput + { address: address + , amount: value + , datum: Nothing + , scriptRef: Nothing + } + ) <> + replicate outputsToScript + ( Pay $ TransactionOutput + { address: scriptAddress + , amount: value + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + ) - lookups :: Lookups.ScriptLookups - lookups = mempty - unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balancedTx <- balanceTx unbalancedTx usedUtxos + unbalancedTx <- buildTx plan + balancedTx <- balanceTx unbalancedTx Map.empty -- just to check that attaching datums works ( mustSendChangeWithDatum $ OutputDatum $ Integer $ BigInt.fromInt 1000 diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index 9fc323912..54ff6abf7 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -2,32 +2,41 @@ module Ctl.Examples.ExUnits where import Contract.Prelude -import Cardano.Types (_input) +import Cardano.Transaction.Builder + ( OutputWitness(PlutusScriptOutput) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(Pay, SpendOutput) + ) +import Cardano.Types + ( Credential(ScriptHashCredential) + , OutputDatum(OutputDatum) + , PaymentCredential(PaymentCredential) + , TransactionOutput(TransactionOutput) + ) import Cardano.Types.BigNum as BigNum -import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Cardano.Types.PlutusData as PlutusData +import Cardano.Types.Transaction as Transaction +import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Credential (Credential(PubKeyHashCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.PlutusData (RedeemerDatum(RedeemerDatum), toData, unitDatum) -import Contract.ScriptLookups as Lookups +import Contract.PlutusData (RedeemerDatum(RedeemerDatum), toData) import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash , awaitTxConfirmed , lookupTxHash - , submitTxFromConstraints + , submitTxFromBuildPlan ) -import Contract.TxConstraints (TxConstraints) -import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value import Contract.Wallet (ownStakePubKeyHashes) import Control.Monad.Error.Class (liftMaybe) import Data.Array (head) -import Data.Lens (view) +import Data.Map as Map import Effect.Exception (error) import JS.BigInt (BigInt) import JS.BigInt as BigInt @@ -52,29 +61,17 @@ example cfg = launchAff_ do payToExUnits :: ValidatorHash -> Contract TransactionHash payToExUnits vhash = do - -- Send to own stake credential. This is used to test mustPayToScriptAddress. - mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes - let - constraints :: TxConstraints - constraints = - case mbStakeKeyHash of - Nothing -> - Constraints.mustPayToScript vhash unitDatum - Constraints.DatumWitness - $ Value.lovelaceValueOf - $ BigNum.fromInt 2_000_000 - Just stakeKeyHash -> - Constraints.mustPayToScriptAddress vhash - (PubKeyHashCredential $ unwrap stakeKeyHash) - unitDatum - Constraints.DatumWitness - $ Value.lovelaceValueOf - $ BigNum.fromInt 2_000_000 - - lookups :: Lookups.ScriptLookups - lookups = mempty - - submitTxFromConstraints lookups constraints + address <- mkAddress + (PaymentCredential $ ScriptHashCredential vhash) + Nothing + Transaction.hash <$> submitTxFromBuildPlan Map.empty mempty + [ Pay $ TransactionOutput + { address: address + , amount: Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 + , datum: Just $ OutputDatum PlutusData.unit + , scriptRef: Nothing + } + ] -- | ExUnits script loops a given number of iterations provided as redeemer. spendFromExUnits @@ -90,7 +87,7 @@ spendFromExUnits iters vhash validator txId = do mkAddress (wrap $ ScriptHashCredential vhash) (wrap <<< PubKeyHashCredential <<< unwrap <$> mbStakeKeyHash) utxos <- utxosAt scriptAddress - txInput <- + utxo <- liftM ( error ( "The id " @@ -99,18 +96,18 @@ spendFromExUnits iters vhash validator txId = do <> show scriptAddress ) ) - (view _input <$> head (lookupTxHash txId utxos)) - let - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos - - constraints :: TxConstraints - constraints = - Constraints.mustSpendScriptOutput txInput (RedeemerDatum $ toData iters) + (head (lookupTxHash txId utxos)) - spendTxId <- submitTxFromConstraints lookups constraints - awaitTxConfirmed spendTxId + spendTx <- submitTxFromBuildPlan (toUtxoMap [ utxo ]) + mempty + [ SpendOutput + utxo + $ Just + $ PlutusScriptOutput (ScriptValue validator) + (RedeemerDatum $ toData iters) + Nothing + ] + awaitTxConfirmed $ Transaction.hash spendTx logInfo' "Successfully spent locked values." exUnitsScript :: Contract Validator diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 086e95250..c17aed717 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -12,32 +12,38 @@ module Ctl.Examples.IncludeDatum import Contract.Prelude +import Cardano.Transaction.Builder + ( OutputWitness(PlutusScriptOutput) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(SpendOutput, Pay) + ) import Cardano.Types ( Credential(ScriptHashCredential) - , _input + , OutputDatum(OutputDatum) + , TransactionOutput(TransactionOutput) ) import Cardano.Types.BigNum as BigNum +import Cardano.Types.RedeemerDatum as RedeemerDatum +import Cardano.Types.Transaction as Transaction +import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) -import Contract.PlutusData (PlutusData(Integer), unitRedeemer) -import Contract.ScriptLookups as Lookups +import Contract.PlutusData (PlutusData(Integer)) import Contract.Scripts (Validator, ValidatorHash, validatorHash) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction ( TransactionHash , awaitTxConfirmed , lookupTxHash - , submitTxFromConstraints + , submitTxFromBuildPlan ) -import Contract.TxConstraints (TxConstraints) -import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value as Value import Control.Monad.Error.Class (liftMaybe) import Data.Array (head) -import Data.Lens (view) +import Data.Map as Map import Effect.Exception (error) import JS.BigInt as BigInt @@ -60,20 +66,16 @@ datum :: PlutusData datum = Integer $ BigInt.fromInt 42 payToIncludeDatum :: ValidatorHash -> Contract TransactionHash -payToIncludeDatum vhash = - let - constraints :: TxConstraints - constraints = - ( Constraints.mustPayToScript vhash datum Constraints.DatumWitness - $ Value.lovelaceValueOf - $ BigNum.fromInt 2_000_000 - ) - <> Constraints.mustIncludeDatum datum - - lookups :: Lookups.ScriptLookups - lookups = mempty - in - submitTxFromConstraints lookups constraints +payToIncludeDatum vhash = do + address <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing + Transaction.hash <$> submitTxFromBuildPlan Map.empty mempty + [ Pay $ TransactionOutput + { address + , amount: Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 + , datum: Just $ OutputDatum datum + , scriptRef: Nothing + } + ] spendFromIncludeDatum :: ValidatorHash @@ -83,19 +85,16 @@ spendFromIncludeDatum spendFromIncludeDatum vhash validator txId = do scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing utxos <- utxosAt scriptAddress - txInput <- liftContractM "no locked output at address" - (view _input <$> head (lookupTxHash txId utxos)) - let - lookups :: Lookups.ScriptLookups - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos - - constraints :: TxConstraints - constraints = - Constraints.mustSpendScriptOutput txInput unitRedeemer - <> Constraints.mustIncludeDatum datum - spendTxId <- submitTxFromConstraints lookups constraints - awaitTxConfirmed spendTxId + utxo <- liftContractM "no locked output at address" + (head (lookupTxHash txId utxos)) + spendTx <- submitTxFromBuildPlan (toUtxoMap [ utxo ]) + mempty + [ SpendOutput + utxo + ( Just $ PlutusScriptOutput (ScriptValue validator) RedeemerDatum.unit Nothing + ) + ] + awaitTxConfirmed $ Transaction.hash spendTx logInfo' "Successfully spent locked values." -- | checks if the datum equals 42 diff --git a/examples/MintsMultipleTokens.purs b/examples/MintsMultipleTokens.purs index 141692ad7..fc8733835 100644 --- a/examples/MintsMultipleTokens.purs +++ b/examples/MintsMultipleTokens.purs @@ -12,23 +12,26 @@ module Ctl.Examples.MintsMultipleTokens import Contract.Prelude +import Cardano.Transaction.Builder + ( CredentialWitness(PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(MintAsset) + ) import Cardano.Types.Int as Int -import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.Transaction as Transaction import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (PlutusData(Integer), RedeemerDatum(RedeemerDatum)) -import Contract.ScriptLookups as Lookups import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) -import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) -import Contract.TxConstraints as Constraints +import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Control.Monad.Error.Class (liftMaybe) import Ctl.Examples.Helpers (mkAssetName) as Helpers +import Data.Map as Map import Effect.Exception (error) import JS.BigInt (fromInt) as BigInt -import Partial.Unsafe (unsafePartial) main :: Effect Unit main = example testnetNamiConfig @@ -47,28 +50,23 @@ contract = do cs3 = PlutusScript.hash mp3 let - constraints :: Constraints.TxConstraints - constraints = unsafePartial $ mconcat - [ Constraints.mustMintValueWithRedeemer - (RedeemerDatum $ Integer (BigInt.fromInt 1)) - (Mint.singleton cs1 tn1 Int.one <> Mint.singleton cs1 tn2 Int.one) - , Constraints.mustMintValueWithRedeemer - (RedeemerDatum $ Integer (BigInt.fromInt 2)) - (Mint.singleton cs2 tn1 Int.one <> Mint.singleton cs2 tn2 Int.one) - , Constraints.mustMintValueWithRedeemer - (RedeemerDatum $ Integer (BigInt.fromInt 3)) - (Mint.singleton cs3 tn1 Int.one <> Mint.singleton cs3 tn2 Int.one) + plan = + [ MintAsset cs1 tn1 Int.one + ( PlutusScriptCredential (ScriptValue mp1) $ RedeemerDatum $ Integer + (BigInt.fromInt 1) + ) + , MintAsset cs2 tn2 Int.one + ( PlutusScriptCredential (ScriptValue mp2) $ RedeemerDatum $ Integer + (BigInt.fromInt 2) + ) + , MintAsset cs3 tn2 Int.one + ( PlutusScriptCredential (ScriptValue mp3) $ RedeemerDatum $ Integer + (BigInt.fromInt 3) + ) ] - lookups :: Lookups.ScriptLookups - lookups = - Lookups.plutusMintingPolicy mp1 - <> Lookups.plutusMintingPolicy mp2 - <> Lookups.plutusMintingPolicy mp3 - - txId <- submitTxFromConstraints lookups constraints - - awaitTxConfirmed txId + tx <- submitTxFromBuildPlan Map.empty mempty plan + awaitTxConfirmed $ Transaction.hash tx logInfo' $ "Tx submitted successfully!" example :: ContractParams -> Effect Unit diff --git a/examples/Pkh2Pkh.purs b/examples/Pkh2Pkh.purs index 0a3d5be28..237971e61 100644 --- a/examples/Pkh2Pkh.purs +++ b/examples/Pkh2Pkh.purs @@ -5,27 +5,21 @@ module Ctl.Examples.Pkh2Pkh (main, contract, example) where import Contract.Prelude -import Cardano.Transaction.Builder - ( TransactionBuilderStep(Pay) - ) +import Cardano.Transaction.Builder (TransactionBuilderStep(Pay)) import Cardano.Types - ( Credential(PubKeyHashCredential) - , OutputDatum(OutputDatumHash) - , PaymentCredential(PaymentCredential) - , StakeCredential(StakeCredential) + ( OutputDatum(OutputDatumHash) , TransactionOutput(TransactionOutput) ) import Cardano.Types.BigNum as BigNum import Cardano.Types.DataHash (hashPlutusData) import Cardano.Types.PlutusData as PlutusData import Cardano.Types.Transaction as Transaction -import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.Transaction (awaitTxConfirmedWithTimeout, submitTxFromBuildPlan) import Contract.Value as Value -import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) +import Contract.Wallet (getWalletAddresses) import Data.Array (head) import Data.Map as Map @@ -35,12 +29,7 @@ main = example testnetNamiConfig contract :: Contract Unit contract = do logInfo' "Running Examples.Pkh2Pkh" - pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes - skh <- liftedM "Failed to get own SKH" $ head <$> - ownStakePubKeyHashes - address <- mkAddress - (PaymentCredential $ PubKeyHashCredential $ unwrap pkh) - (StakeCredential <<< PubKeyHashCredential <<< unwrap <$> skh) + address <- liftedM "Failed to get own address" $ head <$> getWalletAddresses txId <- Transaction.hash <$> submitTxFromBuildPlan Map.empty mempty [ Pay $ TransactionOutput { address diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 4ad52a1ba..a80d125ac 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -129,7 +129,7 @@ mkKeyWalletFromPrivateKeys payment mbStake = privateKeysToKeyWallet payment getWalletAddress :: Warn ( Text - "This function returns only one `Adress` even in case multiple `Adress`es are available. Use `getWalletAdresses` instead" + "This function returns only one `Address` even in case multiple `Address`es are available. Use `getWalletAddresses` instead" ) => Contract (Maybe Address) getWalletAddress = head <$> getWalletAddresses From 80bc5a0954cc2501140fd3daf70f8c1692598d49 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 17 Jul 2024 21:20:31 +0400 Subject: [PATCH 297/373] WIP: updating the examples. Remove overlapping tests. --- examples/ByUrl.purs | 2 - examples/IncludeDatum.purs | 12 +- examples/MultipleRedeemers.purs | 34 ++- examples/PlutusV2/ReferenceInputs.purs | 121 ----------- .../PlutusV2/ReferenceInputsAndScripts.purs | 205 +++++++----------- examples/PlutusV2/ReferenceScripts.purs | 125 ----------- test/Plutip/Contract.purs | 44 +--- 7 files changed, 123 insertions(+), 420 deletions(-) delete mode 100644 examples/PlutusV2/ReferenceInputs.purs delete mode 100644 examples/PlutusV2/ReferenceScripts.purs diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 3119dff8d..8d027d171 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -48,7 +48,6 @@ import Ctl.Examples.PaysWithDatum as PaysWithDatum import Ctl.Examples.Pkh2Pkh as Pkh2Pkh import Ctl.Examples.PlutusV2.AlwaysSucceeds as AlwaysSucceedsV2 import Ctl.Examples.PlutusV2.OneShotMinting as OneShotMintingV2 -import Ctl.Examples.PlutusV2.ReferenceInputs as ReferenceInputsV2 import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts as ReferenceInputsAndScriptsV2 import Ctl.Examples.Schnorr as Schnorr import Ctl.Examples.SendsToken as SendsToken @@ -214,7 +213,6 @@ examples = addSuccessLog <$> Map.fromFoldable , "OneShotMinting" /\ OneShotMinting.contract , "OneShotMintingV2" /\ OneShotMintingV2.contract , "Cip30" /\ Cip30.contract - , "ReferenceInputs" /\ ReferenceInputsV2.contract , "ReferenceInputsAndScripts" /\ ReferenceInputsAndScriptsV2.contract , "Utxos" /\ Utxos.contract , "ApplyArgs" /\ ApplyArgs.contract diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index c17aed717..42135a565 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -13,16 +13,18 @@ module Ctl.Examples.IncludeDatum import Contract.Prelude import Cardano.Transaction.Builder - ( OutputWitness(PlutusScriptOutput) + ( DatumWitness(DatumValue) + , OutputWitness(PlutusScriptOutput) , ScriptWitness(ScriptValue) , TransactionBuilderStep(SpendOutput, Pay) ) import Cardano.Types ( Credential(ScriptHashCredential) - , OutputDatum(OutputDatum) + , OutputDatum(OutputDatumHash) , TransactionOutput(TransactionOutput) ) import Cardano.Types.BigNum as BigNum +import Cardano.Types.DataHash (hashPlutusData) import Cardano.Types.RedeemerDatum as RedeemerDatum import Cardano.Types.Transaction as Transaction import Cardano.Types.TransactionUnspentOutput (toUtxoMap) @@ -72,7 +74,7 @@ payToIncludeDatum vhash = do [ Pay $ TransactionOutput { address , amount: Value.lovelaceValueOf $ BigNum.fromInt 2_000_000 - , datum: Just $ OutputDatum datum + , datum: Just $ OutputDatumHash $ hashPlutusData datum , scriptRef: Nothing } ] @@ -91,7 +93,9 @@ spendFromIncludeDatum vhash validator txId = do mempty [ SpendOutput utxo - ( Just $ PlutusScriptOutput (ScriptValue validator) RedeemerDatum.unit Nothing + ( Just $ PlutusScriptOutput (ScriptValue validator) RedeemerDatum.unit + $ Just + $ DatumValue datum ) ] awaitTxConfirmed $ Transaction.hash spendTx diff --git a/examples/MultipleRedeemers.purs b/examples/MultipleRedeemers.purs index a27e33e12..2e7c6a430 100644 --- a/examples/MultipleRedeemers.purs +++ b/examples/MultipleRedeemers.purs @@ -8,10 +8,13 @@ module Ctl.Examples.MultipleRedeemers import Contract.Prelude -import Cardano.Types.Credential (Credential(ScriptHashCredential)) +import Cardano.Types (AssetName, Credential(ScriptHashCredential)) +import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.Value as Value import Contract.Address (mkAddress) import Contract.Monad (Contract) import Contract.PlutusData @@ -27,9 +30,6 @@ import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Control.Monad.Error.Class (liftMaybe) import Ctl.Examples.Helpers (mkAssetName) -import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts - ( mintAlwaysMintsV2ToTheScript - ) import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Data.List as List import Data.Map as Map @@ -137,3 +137,29 @@ redeemerIs3Validator = do liftMaybe (error "Error decoding redeemerIs3Script") do envelope <- decodeTextEnvelope redeemerIs3Script plutusScriptFromEnvelope envelope + +mintAlwaysMintsV2ToTheScript + :: AssetName -> Validator -> Int -> Contract Unit +mintAlwaysMintsV2ToTheScript tokenName validator sum = do + mp <- alwaysMintsPolicyScriptV2 + let cs = PlutusScript.hash mp + + let + vhash = PlutusScript.hash validator + + constraints :: Constraints.TxConstraints + constraints = mconcat + [ Constraints.mustMintValue + $ Mint.singleton cs tokenName + $ Int.fromInt sum + , Constraints.mustPayToScript vhash PlutusData.unit + Constraints.DatumWitness + $ Value.singleton cs tokenName + $ BigNum.fromInt sum + ] + + lookups :: Lookups.ScriptLookups + lookups = Lookups.plutusMintingPolicy mp + + txHash <- submitTxFromConstraints lookups constraints + void $ awaitTxConfirmed txHash diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs deleted file mode 100644 index 5651e90e5..000000000 --- a/examples/PlutusV2/ReferenceInputs.purs +++ /dev/null @@ -1,121 +0,0 @@ -module Ctl.Examples.PlutusV2.ReferenceInputs (contract, example, main) where - -import Contract.Prelude - -import Cardano.Types - ( Transaction - , _body - , _referenceInputs - ) -import Cardano.Types.BigNum as BigNum -import Contract.Config (ContractParams, testnetNamiConfig) -import Contract.Log (logInfo') -import Contract.Monad - ( Contract - , launchAff_ - , liftContractM - , liftedM - , runContract - ) -import Contract.ScriptLookups as Lookups -import Contract.Test.Assert - ( ContractAssertionFailure(CustomFailure) - , ContractCheck - , assertContract - , assertionToCheck - , runChecks - ) -import Contract.Transaction - ( TransactionInput - , awaitTxConfirmed - , balanceTx - , signTransaction - , submit - ) -import Contract.TxConstraints as Constraints -import Contract.UnbalancedTx (mkUnbalancedTx) -import Contract.Value (lovelaceValueOf) as Value -import Contract.Wallet - ( getWalletUtxos - , ownPaymentPubKeyHashes - , ownStakePubKeyHashes - ) -import Control.Monad.Trans.Class (lift) -import Ctl.Examples.Helpers (mustPayToPubKeyStakeAddress) as Helpers -import Data.Array (elem, head) as Array -import Data.Lens.Getter ((^.)) -import Data.Map (member, toUnfoldable) as Map - -main :: Effect Unit -main = example testnetNamiConfig - -example :: ContractParams -> Effect Unit -example = launchAff_ <<< flip runContract contract - -contract :: Contract Unit -contract = do - logInfo' "Running Examples.PlutusV2.ReferenceInputs" - - pkh <- liftedM "Failed to get own PKH" - (Array.head <$> ownPaymentPubKeyHashes) - skh <- join <<< Array.head <$> ownStakePubKeyHashes - - utxos <- liftedM "Failed to get UTxOs from wallet" getWalletUtxos - oref <- - liftContractM "Utxo set is empty" - (fst <$> Array.head (Map.toUnfoldable utxos :: Array _)) - - let - constraints :: Constraints.TxConstraints - constraints = mconcat - [ Constraints.mustReferenceOutput oref - , Helpers.mustPayToPubKeyStakeAddress pkh skh - (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) - ] - - lookups :: Lookups.ScriptLookups - lookups = mempty - - void $ runChecks checks $ lift do - unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balancedSignedTx <- signTransaction - =<< balanceTx unbalancedTx usedUtxos mempty - txHash <- submit balancedSignedTx - logInfo' $ "Tx ID: " <> show txHash - awaitTxConfirmed txHash - logInfo' "Tx submitted successfully!" - - pure { referenceInput: oref, balancedSignedTx } - -type ContractResult = - { referenceInput :: TransactionInput - , balancedSignedTx :: Transaction - } - -assertTxContainsReferenceInput :: ContractCheck ContractResult -assertTxContainsReferenceInput = - assertionToCheck "Tx contains a reference input" - \{ balancedSignedTx, referenceInput } -> do - let - assertionFailure :: ContractAssertionFailure - assertionFailure = CustomFailure - "Could not find given input in `referenceInputs`" - assertContract assertionFailure do - Array.elem referenceInput - (balancedSignedTx ^. _body <<< _referenceInputs) - -assertReferenceInputNotSpent :: ContractCheck ContractResult -assertReferenceInputNotSpent = assertionToCheck "A reference input UTxO" - \{ referenceInput } -> do - let - assertionFailure :: ContractAssertionFailure - assertionFailure = CustomFailure "Reference input has been spent" - utxos <- lift $ liftedM "Failed to get UTxOs from wallet" getWalletUtxos - assertContract assertionFailure do - Map.member referenceInput utxos - -checks :: Array (ContractCheck ContractResult) -checks = - [ assertTxContainsReferenceInput - , assertReferenceInputNotSpent - ] diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index 21bab6eff..6c55b4b04 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -2,61 +2,51 @@ module Ctl.Examples.PlutusV2.ReferenceInputsAndScripts ( contract , example , main - , mintAlwaysMintsV2ToTheScript ) where import Contract.Prelude +import Cardano.Transaction.Builder + ( CredentialWitness(PlutusScriptCredential) + , OutputWitness(PlutusScriptOutput) + , RefInputAction(ReferenceInput) + , ScriptWitness(ScriptReference) + , TransactionBuilderStep(MintAsset, SpendOutput, Pay) + ) +import Cardano.Types + ( Credential(ScriptHashCredential) + , OutputDatum(OutputDatum) + , ScriptHash + , TransactionOutput(TransactionOutput) + ) import Cardano.Types.BigNum as BigNum -import Cardano.Types.Credential (Credential(ScriptHashCredential)) import Cardano.Types.Int as Int -import Cardano.Types.Mint as Mint +import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript as PlutusScript -import Cardano.Types.TransactionUnspentOutput - ( TransactionUnspentOutput(TransactionUnspentOutput) - ) -import Contract.Address (PaymentPubKeyHash, StakePubKeyHash, mkAddress) +import Cardano.Types.RedeemerDatum as RedeemerDatum +import Cardano.Types.Transaction as Transaction +import Contract.Address (mkAddress) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') -import Contract.Monad - ( Contract - , launchAff_ - , liftContractM - , liftedM - , runContract - ) -import Contract.PlutusData (unitDatum, unitRedeemer) -import Contract.ScriptLookups as Lookups -import Contract.Scripts (PlutusScript, Validator, ValidatorHash) +import Contract.Monad (Contract, launchAff_, liftContractM, runContract) +import Contract.Scripts (PlutusScript) import Contract.Transaction ( ScriptRef(PlutusScriptRef) , TransactionHash - , TransactionInput(TransactionInput) , TransactionOutput , awaitTxConfirmed - , submitTxFromConstraints + , lookupTxHash + , submitTxFromBuildPlan ) -import Contract.TxConstraints - ( DatumPresence(DatumWitness) - , InputWithScriptRef(RefInput) - , TxConstraints - ) -import Contract.TxConstraints as Constraints import Contract.Utxos (utxosAt) import Contract.Value (TokenName, Value) import Contract.Value as Value -import Contract.Wallet - ( getWalletAddresses - , ownPaymentPubKeyHashes - , ownStakePubKeyHashes - ) import Ctl.Examples.Helpers (mkAssetName) as Helpers -import Ctl.Examples.PlutusV2.Scripts.AlwaysMints - ( alwaysMintsPolicyScriptV2 - ) +import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) -import Data.Array (head) -import Data.Map (toUnfoldable) as Map +import Data.Array (find, head) as Array +import Data.Map (empty, toUnfoldable) as Map +import Effect.Exception (error) main :: Effect Unit main = example testnetNamiConfig @@ -72,7 +62,7 @@ contract = do mintsScript <- alwaysMintsPolicyScriptV2 tokenName <- Helpers.mkAssetName "TheToken" let - vhash :: ValidatorHash + vhash :: ScriptHash vhash = PlutusScript.hash validator validatorRef :: ScriptRef @@ -89,31 +79,35 @@ contract = do tokenName payToAlwaysSucceedsAndCreateScriptRefOutput - :: ValidatorHash -> ScriptRef -> ScriptRef -> Contract TransactionHash + :: ScriptHash -> ScriptRef -> ScriptRef -> Contract TransactionHash payToAlwaysSucceedsAndCreateScriptRefOutput vhash validatorRef mpRef = do - pkh <- liftedM "Failed to get own PKH" $ head <$> ownPaymentPubKeyHashes - skh <- join <<< head <$> ownStakePubKeyHashes + scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing let value :: Value value = Value.lovelaceValueOf (BigNum.fromInt 2_000_000) - - createOutputWithScriptRef :: ScriptRef -> TxConstraints - createOutputWithScriptRef scriptRef = - mustPayToPubKeyStakeAddressWithScriptRef pkh skh scriptRef value - - constraints :: TxConstraints - constraints = - Constraints.mustPayToScript vhash unitDatum DatumWitness value - <> createOutputWithScriptRef validatorRef - <> createOutputWithScriptRef mpRef - - lookups :: Lookups.ScriptLookups - lookups = mempty - - submitTxFromConstraints lookups constraints + Transaction.hash <$> submitTxFromBuildPlan Map.empty mempty + [ Pay $ TransactionOutput + { address: scriptAddress + , amount: value + , datum: Just $ OutputDatum PlutusData.unit + , scriptRef: Just validatorRef + } + , Pay $ TransactionOutput + { address: scriptAddress + , amount: value + , datum: Just $ OutputDatum PlutusData.unit + , scriptRef: Just mpRef + } + , Pay $ TransactionOutput + { address: scriptAddress + , amount: value + , datum: Just $ OutputDatum PlutusData.unit + , scriptRef: Nothing + } + ] spendFromAlwaysSucceeds - :: ValidatorHash + :: ScriptHash -> TransactionHash -> PlutusScript -> PlutusScript @@ -121,88 +115,49 @@ spendFromAlwaysSucceeds -> Contract Unit spendFromAlwaysSucceeds vhash txId validator mp tokenName = do scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing - ownAddress <- liftedM "Failed to get own address" $ head <$> - getWalletAddresses - (utxos :: Array _) <- Map.toUnfoldable <$> utxosAt ownAddress scriptAddressUtxos <- utxosAt scriptAddress + utxos <- utxosAt scriptAddress + utxo <- + liftM + ( error + ( "The id " + <> show txId + <> " does not have output locked at: " + <> show scriptAddress + ) + ) + $ Array.head (lookupTxHash txId utxos) - txInput /\ _ <- - liftContractM "Could not find unspent output locked at script address" - $ find hasTransactionId (Map.toUnfoldable scriptAddressUtxos :: Array _) - - refValidatorInput /\ refValidatorOutput <- + refValidatorInput /\ _ <- liftContractM "Could not find unspent output containing ref validator" - $ find (hasRefPlutusScript validator) utxos + $ Array.find (hasRefPlutusScript validator) + $ Map.toUnfoldable utxos - refMpInput /\ refMpOutput <- + refMpInput /\ _ <- liftContractM "Could not find unspent output containing ref minting policy" - $ find (hasRefPlutusScript mp) utxos + $ Array.find (hasRefPlutusScript mp) + $ Map.toUnfoldable utxos let mph = PlutusScript.hash mp - - constraints :: TxConstraints - constraints = mconcat - [ Constraints.mustSpendScriptOutputUsingScriptRef txInput unitRedeemer - ( RefInput $ TransactionUnspentOutput - { input: refValidatorInput, output: refValidatorOutput } - ) - - , Constraints.mustMintCurrencyUsingScriptRef mph tokenName (Int.fromInt 1) - ( RefInput $ TransactionUnspentOutput - { input: refMpInput, output: refMpOutput } - ) - ] - - lookups :: Lookups.ScriptLookups - lookups = Lookups.unspentOutputs scriptAddressUtxos - - spendTxId <- submitTxFromConstraints lookups constraints - awaitTxConfirmed spendTxId + spendTx <- submitTxFromBuildPlan scriptAddressUtxos mempty + [ SpendOutput + utxo + ( Just + $ PlutusScriptOutput + (ScriptReference refValidatorInput ReferenceInput) + RedeemerDatum.unit + Nothing + ) + , MintAsset mph tokenName (Int.fromInt 1) + $ PlutusScriptCredential (ScriptReference refMpInput ReferenceInput) + RedeemerDatum.unit + ] + awaitTxConfirmed $ Transaction.hash spendTx logInfo' "Successfully spent locked values and minted tokens." where - hasTransactionId :: TransactionInput /\ _ -> Boolean - hasTransactionId (TransactionInput txInput /\ _) = - txInput.transactionId == txId hasRefPlutusScript :: PlutusScript -> _ /\ TransactionOutput -> Boolean hasRefPlutusScript plutusScript (_ /\ txOutput) = (unwrap txOutput).scriptRef == Just (PlutusScriptRef plutusScript) - -mustPayToPubKeyStakeAddressWithScriptRef - :: forall (i :: Type) (o :: Type) - . PaymentPubKeyHash - -> Maybe StakePubKeyHash - -> ScriptRef - -> Value - -> TxConstraints -mustPayToPubKeyStakeAddressWithScriptRef pkh Nothing = - Constraints.mustPayToPubKeyWithScriptRef pkh -mustPayToPubKeyStakeAddressWithScriptRef pkh (Just skh) = - Constraints.mustPayToPubKeyAddressWithScriptRef pkh skh - -mintAlwaysMintsV2ToTheScript - :: TokenName -> Validator -> Int -> Contract Unit -mintAlwaysMintsV2ToTheScript tokenName validator sum = do - mp <- alwaysMintsPolicyScriptV2 - let cs = PlutusScript.hash mp - - let - vhash = PlutusScript.hash validator - - constraints :: Constraints.TxConstraints - constraints = mconcat - [ Constraints.mustMintValue - $ Mint.singleton cs tokenName - $ Int.fromInt sum - , Constraints.mustPayToScript vhash unitDatum Constraints.DatumWitness - $ Value.singleton cs tokenName - $ BigNum.fromInt sum - ] - - lookups :: Lookups.ScriptLookups - lookups = Lookups.plutusMintingPolicy mp - - txHash <- submitTxFromConstraints lookups constraints - void $ awaitTxConfirmed txHash diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs deleted file mode 100644 index e85409230..000000000 --- a/examples/PlutusV2/ReferenceScripts.purs +++ /dev/null @@ -1,125 +0,0 @@ -module Ctl.Examples.PlutusV2.ReferenceScripts - ( main - , example - , contract - ) where - -import Contract.Prelude - -import Cardano.Types - ( Credential(ScriptHashCredential) - , TransactionUnspentOutput(TransactionUnspentOutput) - ) -import Cardano.Types.BigNum as BigNum -import Contract.Address (mkAddress) -import Contract.Config (ContractParams, testnetNamiConfig) -import Contract.Credential (Credential(PubKeyHashCredential)) -import Contract.Log (logInfo') -import Contract.Monad (Contract, launchAff_, liftContractM, runContract) -import Contract.PlutusData (unitDatum, unitRedeemer) -import Contract.ScriptLookups as Lookups -import Contract.Scripts (ValidatorHash, validatorHash) -import Contract.Transaction - ( ScriptRef(PlutusScriptRef) - , TransactionHash - , TransactionInput(TransactionInput) - , awaitTxConfirmed - , submitTxFromConstraints - ) -import Contract.TxConstraints - ( DatumPresence(DatumWitness) - , InputWithScriptRef(SpendInput) - , TxConstraints - ) -import Contract.TxConstraints as Constraints -import Contract.Utxos (utxosAt) -import Contract.Value (lovelaceValueOf) as Value -import Contract.Wallet (ownStakePubKeyHashes) -import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) -import Data.Array (head) -import Data.Map (toUnfoldable) as Map - -main :: Effect Unit -main = example testnetNamiConfig - -example :: ContractParams -> Effect Unit -example cfg = launchAff_ do - runContract cfg contract - --- NOTE: If you are looking for an example of the most common case of --- using reference scripts by referencing an output and not spending it, --- you likely need to look at the example in `ReferenceInputsAndScripts.purs`. -contract :: Contract Unit -contract = do - logInfo' "Running Examples.PlutusV2.ReferenceScripts" - validator <- alwaysSucceedsScriptV2 - let - vhash :: ValidatorHash - vhash = validatorHash validator - - scriptRef :: ScriptRef - scriptRef = PlutusScriptRef validator - - logInfo' "Attempt to lock value" - txId <- payWithScriptRefToAlwaysSucceeds vhash scriptRef - awaitTxConfirmed txId - logInfo' "Tx submitted successfully, Try to spend locked values" - spendFromAlwaysSucceeds vhash txId - -payWithScriptRefToAlwaysSucceeds - :: ValidatorHash -> ScriptRef -> Contract TransactionHash -payWithScriptRefToAlwaysSucceeds vhash scriptRef = do - -- Send to own stake credential. This is used to test - -- `mustPayToScriptAddressWithScriptRef` - mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes - let - constraints :: TxConstraints - constraints = - case mbStakeKeyHash of - Nothing -> - Constraints.mustPayToScriptWithScriptRef vhash unitDatum DatumWitness - scriptRef - (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) - Just stakeKeyHash -> - Constraints.mustPayToScriptAddressWithScriptRef - vhash - (PubKeyHashCredential $ unwrap stakeKeyHash) - unitDatum - DatumWitness - scriptRef - (Value.lovelaceValueOf $ BigNum.fromInt 2_000_000) - - lookups :: Lookups.ScriptLookups - lookups = mempty - - submitTxFromConstraints lookups constraints - -spendFromAlwaysSucceeds :: ValidatorHash -> TransactionHash -> Contract Unit -spendFromAlwaysSucceeds vhash txId = do - -- Send to own stake credential. This is used to test - -- `mustPayToScriptAddressWithScriptRef` - mbStakeKeyHash <- join <<< head <$> ownStakePubKeyHashes - scriptAddress <- mkAddress (wrap $ ScriptHashCredential $ vhash) - (wrap <<< PubKeyHashCredential <<< unwrap <$> mbStakeKeyHash) - utxos <- utxosAt scriptAddress - - input /\ output <- - liftContractM "Could not find unspent output locked at script address" - $ find hasTransactionId (Map.toUnfoldable utxos :: Array _) - - let - constraints :: TxConstraints - constraints = - Constraints.mustSpendScriptOutputUsingScriptRef input unitRedeemer - (SpendInput $ TransactionUnspentOutput { input, output }) - - lookups :: Lookups.ScriptLookups - lookups = mempty - - spendTxId <- submitTxFromConstraints lookups constraints - awaitTxConfirmed spendTxId - logInfo' "Successfully spent locked values." - where - hasTransactionId :: TransactionInput /\ _ -> Boolean - hasTransactionId (TransactionInput tx /\ _) = - tx.transactionId == txId diff --git a/test/Plutip/Contract.purs b/test/Plutip/Contract.purs index 0a5552258..26a197d98 100644 --- a/test/Plutip/Contract.purs +++ b/test/Plutip/Contract.purs @@ -147,11 +147,9 @@ import Ctl.Examples.OneShotMinting (contract) as OneShotMinting import Ctl.Examples.PaysWithDatum (contract) as PaysWithDatum import Ctl.Examples.PlutusV2.InlineDatum as InlineDatum import Ctl.Examples.PlutusV2.OneShotMinting (contract) as OneShotMintingV2 -import Ctl.Examples.PlutusV2.ReferenceInputs (contract) as ReferenceInputs import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts ( contract ) as ReferenceInputsAndScripts -import Ctl.Examples.PlutusV2.ReferenceScripts (contract) as ReferenceScripts import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Ctl.Examples.Schnorr as Schnorr @@ -1556,49 +1554,17 @@ suite = do logInfo' "Try to spend locked values" AlwaysFails.spendFromAlwaysFails vhash validator txId - group "CIP-33 Reference Scripts" do - test "Use reference scripts for spending" do - let - distribution :: InitialUTxOs - distribution = - [ BigNum.fromInt 5_000_000 - , BigNum.fromInt 50_000_000 - ] - withWallets distribution \alice -> - withKeyWallet alice ReferenceScripts.contract - - test - "Use reference scripts for spending (with Base Address, testing `mustPayToScriptAddressWithScriptRef`)" + group "CIP-33 Reference Scripts + CIP-31 Reference Inputs" do + test "Use reference inputs and reference scripts at the same time" do let - distribution :: InitialUTxOsWithStakeKey - distribution = withStakeKey privateStakeKey + distribution :: InitialUTxOs + distribution = [ BigNum.fromInt 5_000_000 , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> - withKeyWallet alice ReferenceScripts.contract - - group "CIP-31 Reference Inputs" do - test "Use reference inputs" do - let - distribution :: InitialUTxOs - distribution = - [ BigNum.fromInt 5_000_000 - , BigNum.fromInt 50_000_000 - ] - withWallets distribution \alice -> - withKeyWallet alice ReferenceInputs.contract - - test "Use reference inputs and reference scripts at the same time" do - let - distribution :: InitialUTxOs - distribution = - [ BigNum.fromInt 5_000_000 - , BigNum.fromInt 50_000_000 - ] - withWallets distribution \alice -> - withKeyWallet alice ReferenceInputsAndScripts.contract + withKeyWallet alice ReferenceInputsAndScripts.contract test "One-Shot Minting example" do let From f72387c677351613b2c7ccbb57fd459c1e07bf0d Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Wed, 17 Jul 2024 19:55:10 -0300 Subject: [PATCH 298/373] Implement `getTxMetadata` via `getTxAuxiliaryData` and deprecate it --- src/Internal/Service/Blockfrost.purs | 47 ++++++++++++++++++---------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 3e31e298f..717cb9f15 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -240,6 +240,7 @@ import Effect.Exception (error) import Foreign.Object (Object) import Foreign.Object as ForeignObject import JS.BigInt (fromString, toNumber) as BigInt +import Prim.TypeError (class Warn, Text) -------------------------------------------------------------------------------- -- BlockfrostServiceM @@ -682,19 +683,26 @@ getTxAuxiliaryData :: TransactionHash -> BlockfrostServiceM (Either GetTxMetadataError AuxiliaryData) getTxAuxiliaryData txHash = runExceptT do - metadata <- ExceptT $ getTxMetadata txHash - (scriptRefs :: Array ScriptRef) <- ExceptT $ getTxScripts txHash + metadata <- ExceptT $ getMetadata + scriptRefs <- ExceptT $ getTxScripts txHash pure $ wrap { metadata: Just metadata , nativeScripts: arrayToMaybe $ getNativeScripts scriptRefs - -- , nativeScripts: Nothing , plutusScripts: arrayToMaybe $ getPlutusScripts scriptRefs } where - arrayToMaybe :: forall a. Array a -> Maybe (Array a) - arrayToMaybe [] = Nothing - arrayToMaybe xs = Just xs + + getMetadata = do + response <- blockfrostGetRequest (TransactionMetadata txHash) + pure case unwrapBlockfrostMetadata <$> handleBlockfrostResponse response of + Left (ClientHttpResponseError (Affjax.StatusCode 404) _) -> + Left GetTxMetadataTxNotFoundError + Left e -> Left (GetTxMetadataClientError e) + Right metadata + | Map.isEmpty (unwrap metadata) -> + Left GetTxMetadataMetadataEmptyOrMissingError + | otherwise -> Right metadata getNativeScripts :: Array ScriptRef -> Array NativeScript getNativeScripts = catMaybes <<< map isNativeScript @@ -708,20 +716,25 @@ getTxAuxiliaryData txHash = runExceptT do isPlutusScript (PlutusScriptRef script) = Just script isPlutusScript (NativeScriptRef _) = Nothing --- TODO: refactor to aux and remove metadat from tests. add aux tests. + arrayToMaybe :: forall a. Array a -> Maybe (Array a) + arrayToMaybe [] = Nothing + arrayToMaybe xs = Just xs + + getTxMetadata - :: TransactionHash + :: Warn + ( Text + "deprecated: getTxMetadata. use Ctl.Internal.Service.Blockfrost.getTxAuxiliaryData" + ) + => TransactionHash -> BlockfrostServiceM (Either GetTxMetadataError GeneralTransactionMetadata) getTxMetadata txHash = do - response <- blockfrostGetRequest (TransactionMetadata txHash) - pure case unwrapBlockfrostMetadata <$> handleBlockfrostResponse response of - Left (ClientHttpResponseError (Affjax.StatusCode 404) _) -> - Left GetTxMetadataTxNotFoundError - Left e -> Left (GetTxMetadataClientError e) - Right metadata - | Map.isEmpty (unwrap metadata) -> - Left GetTxMetadataMetadataEmptyOrMissingError - | otherwise -> Right metadata + eAuxData <- getTxAuxiliaryData txHash + pure $ case eAuxData of + Left err -> Left err + Right auxiliaryData -> case (unwrap auxiliaryData).metadata of + Nothing -> Left GetTxMetadataMetadataEmptyOrMissingError + Just metadata -> Right metadata getTxScripts :: TransactionHash From 8faceb14333abcb2d7f84913a834e67a783ca6de Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Wed, 17 Jul 2024 20:00:37 -0300 Subject: [PATCH 299/373] Fix formatting --- src/Internal/Service/Blockfrost.purs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 717cb9f15..e833f083a 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -720,7 +720,6 @@ getTxAuxiliaryData txHash = runExceptT do arrayToMaybe [] = Nothing arrayToMaybe xs = Just xs - getTxMetadata :: Warn ( Text From 877b2c3ce45fbec881ba042072357fb2aa784b82 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 18 Jul 2024 21:35:22 +0400 Subject: [PATCH 300/373] Update the docs --- CHANGELOG.md | 22 +- doc/babbage-features.md | 31 +-- doc/balancing.md | 6 +- doc/development.md | 10 + doc/getting-started.md | 53 +++-- doc/plutus-comparison.md | 50 ++--- doc/side-by-side-ctl-plutus-comparison.md | 209 +------------------ doc/test-plan.md | 243 ---------------------- src/Contract/Config.purs | 16 +- src/Contract/Constraints.purs | 176 ---------------- 10 files changed, 92 insertions(+), 724 deletions(-) delete mode 100644 doc/test-plan.md delete mode 100644 src/Contract/Constraints.purs diff --git a/CHANGELOG.md b/CHANGELOG.md index d4fa8c2f6..b5de6bcc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [[Unreleased]](#unreleased) + - [Deprecated](#deprecated) - [Added](#added) - [Removed](#removed) - [Changed](#changed) @@ -69,18 +70,31 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## [Unreleased] +### Deprecated + +- **IMPORTANT** Constraints interface (`Contract.TxConstraints`) has been deprecated and will be removed in a future version. Please use [`purescript-cardano-transaction-builder`](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder) for any new contracts. + ### Added -- Ability to spend native script outputs using a reference input that contains an inline native script. +- `Contract.Transaction.buildTx :: Array TransactionBuilderStep -> Contract Transaction` that provides a `Contract`-based interface for the [new transaction builder](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder). +- `submitTxFromBuildPlan :: UtxoMap -> BalanceTxConstraintsBuilder -> Array TransactionBuilderStep -> Contract Transaction` - a convenience function that executes the whole transaction creation pipeline starting from a build plan for [the new transaction builder](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder). +- `Contract.ClientError.pprintClientError` to provide readable error reports. +- ### Removed -- `Contract.Transaction.submitTxFromConstraintsReturningFee` -- `Contract.Transaction` lens values -- `Contract.Scripts.applyArgs` - use `Cardano.Plutus.ApplyArgs.applyArgs` from [purescript-uplc-apply-args](https://github.com/mlabs-haskell/purescript-uplc-apply-args) +- **IMPORTANT** `UnbalancedTx` type has been removed. This change was motivated by the fact that `UnbalancedTx` existed simply to tie together transaction building and balancing by keeping extra context. Now that transaction builder is placed in [its own package](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder), there is no more need in `UnbalancedTx`, that is not used with the new builder. +- **IMPORTANT** `Contract.Scripts.applyArgs` - use `Cardano.Plutus.ApplyArgs.applyArgs` from [purescript-uplc-apply-args](https://github.com/mlabs-haskell/purescript-uplc-apply-args) +- **IMPORTANT** `balanceTxWithConstraints` - use `balanceTx` +- `Contract.Transaction.submitTxFromConstraintsReturningFee` - too niche case to be allowed in the public API. +- `Contract.Transaction` lens values. ### Changed +- `Contract.Transaction.mkUnbalancedTx` now returns a tuple: a transaction and its used UTxOs. +- `Contract.Transaction.balanceTx` accepts two extra argument: a list of used UTxOs (set to `Data.Map.empty` if none of them are coming from the outside of the wallet) and balancer constraints (set to `mempty` if not needed) +- Default synchronization parameters: all [wallet <-> query layer synchronization primitives](./doc/query-layer.md) are now off by default. The reason is that the runtime overhead made the users unhappy and it was not worth it for most of the users. If your dApp sends transactions in quick succession, consider enabling the synchronization again. + ### Fixed ## [v8.0.0] diff --git a/doc/babbage-features.md b/doc/babbage-features.md index 02a32211a..1cfac81e7 100644 --- a/doc/babbage-features.md +++ b/doc/babbage-features.md @@ -6,48 +6,29 @@ This document is a reference/explainer for the new CTL APIs introduced for Babba -- [Reference Inputs](#reference-inputs) -- [Reference Scripts](#reference-scripts) +- [Reference Inputs & Reference Scripts](#reference-inputs--reference-scripts) - [Inline Data](#inline-data) - [Collateral Output](#collateral-output) -## Reference Inputs +## Reference Inputs & Reference Scripts [Reference inputs](https://cips.cardano.org/cip/CIP-0031#reference-inputs) allow looking at an output without spending it in Plutus scripts. -There are two ways to use an input as a reference in the constraints API: - -1. via `mustReferenceOutput`, which allows Plutus scripts to access the information (e.g. datum, locked value) contained in the output. - -[Usage example](../examples/PlutusV2/ReferenceInputs.purs) - -2. by providing constraints which accept a value of the type `InputWithScriptRef` with the `RefInput` constructor. These allow scripts (validating or minting) to be reused by reference between multiple transactions without including them in those transactions, explained further in [Reference Scripts](#reference-scripts). - -[Usage example](../examples/PlutusV2/ReferenceInputsAndScripts.purs) - -## Reference Scripts - [Reference Scripts](https://cips.cardano.org/cip/CIP-0033) allows the use of scripts without attaching them to the transaction (and using a reference instead). -Reference scripts can be utilized in CTL by first creating a reference point for the script to be used later via `mustPayToScriptWithScriptRef` (or its variants). +Reference scripts can be utilized in CTL by first creating a UTxO containing the script to be used later. -This constraint utilises a new `ScriptRef` type that includes either a native script or a Plutus script. - -Then, `mustSpendScriptOutputUsingScriptRef` (or its variants) can be used to use a reference script. It accepts a value of type `InputWithScriptRef` that specifies whether the UTxO with the reference script should be spent or referenced. - -[Usage example](../examples/PlutusV2/ReferenceScripts.purs) +[Usage example](../examples/PlutusV2/ReferenceInputsAndScripts.purs) ## Inline Data [CIP-32](https://cips.cardano.org/cip/CIP-0032) introduces the inline data feature that allows storing datum values directly in transaction outputs, instead of just the hashes. -In CTL, alternating between datum storage options can be achieved by specifying a `DatumPresence` value with constraints that accept it, like `mustPayToPubKeyWithDatum`. - -[Usage example](../examples/PlutusV2/InlineDatum.purs) - ## Collateral Output [CIP-40](https://cips.cardano.org/cip/CIP-0040) introduces explicit collateral output. On validation failure, previously the entire collateral was consumed. Now, if excess collateral is supplied, even with native assets, the surplus can be returned on validation failure. Collateral output is automatically added to transactions in CTL. To trigger a collateral return, the `mustNotBeValid` constraint should be explicitly specified, otherwise a script error would be detected earlier and the transaction will not be sent. + +[Usage example](../examples/Lose7Ada.purs) diff --git a/doc/balancing.md b/doc/balancing.md index 961e357a4..f3681101e 100644 --- a/doc/balancing.md +++ b/doc/balancing.md @@ -1,7 +1,7 @@ -- [Configuring balancing process](#configuring-balancing-process) +- [Configuring the balancing process](#configuring-the-balancing-process) - [Balancer constraints](#balancer-constraints) - [Concurrent spending](#concurrent-spending) - [Balancing a Tx for other wallet](#balancing-a-tx-for-other-wallet) @@ -10,7 +10,7 @@ -# Configuring balancing process +# Configuring the balancing process Transaction balancing in Cardano is the process of finding a set of inputs and outputs that that sum up to zero, covering all the required fees for the transaction to be valid. @@ -37,7 +37,7 @@ Setting `mustUseUtxosAtAddress`, `mustSendChangeToAddress` and `mustUseCollatera ## Synchronization -Before balancing, CTL tries to synchronize the wallet state with the query layer, i.e. waits until all UTxOs that the wallet returns are visible in the query layer. Thus the situation when the query layer refuses to validate a Tx (either during ex-units evaluation or on Tx submission) is only possible due to a rollback or a synchronization timeout. Please see [our docs for query layer synchronization](./query-layers.md). +It's possible to make CTL try to synchronize the wallet state with the query layer, i.e. wait until all UTxOs that the wallet returns are visible in the query layer. Thus the situation when the query layer refuses to validate a Tx (either during ex-units evaluation or on Tx submission) is only possible due to a rollback or a synchronization timeout. Please see [our docs for query layer synchronization](./query-layers.md). ## Balancing process limitations diff --git a/doc/development.md b/doc/development.md index 6ffc51091..ef2af0575 100644 --- a/doc/development.md +++ b/doc/development.md @@ -22,6 +22,7 @@ This document outlines development workflows for CTL itself. You may also wish t - [JS](#js) - [Switching development networks](#switching-development-networks) - [Maintaining the template](#maintaining-the-template) +- [Updating the template](#updating-the-template) @@ -148,4 +149,13 @@ Set new `network.name` and `network.magic` in `runtime.nix`. Also see [Changing [The template](../templates/ctl-scaffold/) must be kept up-to-date with the repo. Although there are some checks for common problems in CI, it's still possible to forget to update the `package-lock.json` file. +## Updating the template + +1. Update the revision of CTL in the template's `flake.nix` +2. Update the npm packages in the `package.json` (if needed) +3. Run `npm i` to update the lockfile (if there are NPM dependency version changes) +4. Update the revisions in the template's `packages.dhall` (CTL version must match the one in `flake.nix`) +5. Run `spago2nix generate` +6. Run `nix develop` + [This helper script](../scripts/template-check.sh) can be used to make sure the template can be initialized properly from a given revision. diff --git a/doc/getting-started.md b/doc/getting-started.md index f758fa847..41b1de809 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -16,11 +16,6 @@ This guide will help you get started writing contracts with CTL. Please also see - [Executing contracts and the `ContractEnv`](#executing-contracts-and-the-contractenv) - [Making the `ContractEnv`](#making-the-contractenv) - [Building and submitting transactions](#building-and-submitting-transactions) - - [Using compiled scripts](#using-compiled-scripts) -- [Testing](#testing) - - [Without a light wallet](#without-a-light-wallet) - - [With a light wallet](#with-a-light-wallet) - - [Plutip integration](#plutip-integration) @@ -140,9 +135,13 @@ main = Contract.Monad.launchAff_ do -- we re-export this for you , kupoConfig: defaultKupoServerConfig } , networkId: TestnetId - , logLevel: Trace , walletSpec: Just ConnectToNami + , logLevel: Trace , customLogger: Nothing + , suppressLogs: false + , hooks: emptyHooks + , timeParams: defaultTimeParams + , synchronizationParams: defaultSynchronizationParams } runContract config someContract @@ -167,49 +166,49 @@ customOgmiosWsConfig = Unlike PAB, CTL obscures less of the build-balance-sign-submit pipeline for transactions and most of the steps are called individually. The general workflow in CTL is similar to the following: -- Build a transaction using `Contract.ScriptLookups`, `Contract.TxConstraints` and `Contract.BalanceTxConstraints` (it is also possible to directly build a `Transaction` if you require even greater low-level control over the process, although we recommend the constraints/lookups approach for most users): +- Build a transaction using [`cardano-transaction-builder`](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder): ```purescript contract = do let - constraints :: TxConstraints Unit Unit - constraints = - TxConstraints.mustPayToScript vhash unitDatum - (Value.lovelaceValueOf $ BigInt.fromInt 2_000_000) - - lookups :: ScriptLookups PlutusData - lookups = ScriptLookups.validator validator - - balanceTxConstraints :: BalanceTxConstraints.BalanceTxConstraintsBuilder - balanceTxConstraints = - BalanceTxConstraints.mustUseUtxosAtAddress address - <> BalanceTxConstraints.mustSendChangeToAddress address - <> BalanceTxConstraints.mustNotSpendUtxoWithOutRef nonSpendableOref - - -- `liftedE` will throw a runtime exception on `Left`s - unbalancedTx <- liftedE $ Lookups.mkUnbalancedTx lookups constraints + plan = + [ Pay $ TransactionOutput + { address: address + , amount: Value.lovelaceValueOf $ BigNum.fromInt 1_000_000 + , datum: Just $ OutputDatumHash $ hashPlutusData PlutusData.unit + , scriptRef: Nothing + } + ] + unbalancedTx <- buildTx plan ... ``` -- Balance it using `Contract.Transaction.balanceTx` (or `Contract.Transaction.balanceTxWithConstraints` if you need to adjust the balancer behaviour) and then sign it using `signTransaction`: +- Balance it using `Contract.Transaction.balanceTx`, and then sign it using `signTransaction`: ```purescript contract = do ... + let + balanceTxConstraints :: BalanceTxConstraints.BalanceTxConstraintsBuilder + balanceTxConstraints = + BalanceTxConstraints.mustUseUtxosAtAddress address + <> BalanceTxConstraints.mustSendChangeToAddress address + <> BalanceTxConstraints.mustNotSpendUtxoWithOutRef nonSpendableOref -- `liftedE` will throw a runtime exception on `Left`s balancedTx <- - liftedE $ balanceTxWithConstraints unbalancedTx balanceTxConstraints + balanceTx unbalancedTx usedUtxos balanceTxConstraints balancedSignedTx <- signTransaction balancedTx ... ``` -- Submit using `Contract.Transaction.submit`: +- Submit using `Contract.Transaction.submit` and await for confirmation using `awaitTxConfirmed`: ```purescript contract = do ... txId <- submit balancedSignedTx + awaitTxConfirmed txId logInfo' $ "Tx ID: " <> show txId - ``` +``` ### Using compiled scripts diff --git a/doc/plutus-comparison.md b/doc/plutus-comparison.md index 603df9dc8..65fa249b4 100644 --- a/doc/plutus-comparison.md +++ b/doc/plutus-comparison.md @@ -10,10 +10,10 @@ This document outlines the core differences between CTL and Plutus Application B - [Library vs. process](#library-vs-process) - [The `Contract` type](#the-contract-type) - [API differences](#api-differences) - - [Transaction manipulation API](#transaction-manipulation-api) - - [Constraints and lookups](#constraints-and-lookups) - - [Babbage-era constraints](#babbage-era-constraints) - - [Typed scripts](#typed-scripts) + - [DEPRECATION WARNING](#deprecation-warning) + - [**DEPRECATED** Transaction manipulation API](#deprecated-transaction-manipulation-api) + - [**DEPRECATED** Constraints and lookups](#deprecated-constraints-and-lookups) + - [**DEPRECATED** Babbage-era constraints](#deprecated-babbage-era-constraints) - [Working with scripts](#working-with-scripts) - [Using scripts from the frontend](#using-scripts-from-the-frontend) - [Applying arguments to parameterized scripts](#applying-arguments-to-parameterized-scripts) @@ -25,7 +25,7 @@ This document outlines the core differences between CTL and Plutus Application B Unlike contracts written for PAB, which are compiled to a single process, CTL is a library. CTL itself can be [imported as a Purescript library](./ctl-as-dependency.md) and offchain contracts written in CTL compile to Javascript that can be run in the browser or NodeJS. Accordingly, there is no need to activate endpoints in CTL -- contracts are executed by calling effectful functions written using the library. This distinction has influenced our adaption of Plutus' `Contract` type, as outlined [below](#the-contract-type). -Note, however, that CTL still requires a number of runtime dependencies. In some respects, this is similar to PAB, which also needs to communicate with plutus-chain-index and a running node. Please see the [documentation](./runtime.md) for more details on CTL's runtime. +Note, however, that CTL still requires a number of runtime dependencies. In some respects, this is similar to PAB, which also needs to communicate with plutus-chain-index and a running node. Please see the [runtime documentation](./runtime.md) for more details. ### The `Contract` type @@ -66,13 +66,17 @@ Finally, CTL's `Contract` is not parameterized by an error type as in Plutus. `C ## API differences -### Transaction manipulation API +### DEPRECATION WARNING + +The original constraints interface has been deprecated and will be removed. Use [`cardano-transaction-builder`](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder) for any new code. + +### **DEPRECATED** Transaction manipulation API | Plutus | CTL | | --------------------------- | ----------------------------- | | `submitTxConstraintsWith` | `submitTxFromConstraints` | -### Constraints and lookups +### **DEPRECATED** Constraints and lookups CTL has adapted Plutus' Alonzo-era constraints/lookups interface fairly closely and it functions largely the same. One key difference is that CTL does not, and cannot, have the notion of a "current" script. All scripts must be explicitly provided to CTL (serialized as CBOR, see below). This has led us to depart from Plutus' naming conventions for certain constraints/lookups: @@ -87,7 +91,7 @@ CTL has adapted Plutus' Alonzo-era constraints/lookups interface fairly closely Additionally, we implement `NativeScript` (multi-signature phase-1 script) support, which is not covered by Plutus. -#### Babbage-era constraints +#### **DEPRECATED** Babbage-era constraints CIPs 0031-0033 brought several improvements to Plutus and are supported from the Babbage era onwards: @@ -97,36 +101,6 @@ CIPs 0031-0033 brought several improvements to Plutus and are supported from the CTL has upgraded its constraints interface to work with these new features. At the time of writing, however, `plutus-apps` has not yet upgraded their constraints/lookups interface to support these new features. This means a direct comparison between `plutus-apps` and CTL regarding Babbage-era features is not currently possible. It also implies that, moving forward, CTL's constraints implementation will increasingly no longer match that of `plutus-apps`' to the same degree. -### Typed scripts - -Another difference between Plutus and CTL is our implementation of typed scripts. Recall that Plutus' `ValidatorTypes` class: - -```haskell -class ValidatorTypes (a :: Type) where - type RedeemerType a :: Type - type DatumType a :: Type - - type instance RedeemerType a = () - type instance DatumType a = () -``` - -Purescript lacks most of Haskell's more advanced type-level faculties, including type/data families. Purescript does, however, support functional dependencies, allowing us to encode `ValidatorTypes` as follows: - -```purescript -class ValidatorTypes :: Type -> Type -> Type -> Constraint -class - ( DatumType validator datum - , RedeemerType validator redeemer - ) <= - ValidatorTypes validator datum redeemer - -class DatumType :: Type -> Type -> Constraint -class DatumType validator datum | validator -> datum - -class RedeemerType :: Type -> Type -> Constraint -class RedeemerType validator redeemer | validator -> redeemer -``` - ### Working with scripts #### Using scripts from the frontend diff --git a/doc/side-by-side-ctl-plutus-comparison.md b/doc/side-by-side-ctl-plutus-comparison.md index 61fea0b9a..5bf75b70a 100644 --- a/doc/side-by-side-ctl-plutus-comparison.md +++ b/doc/side-by-side-ctl-plutus-comparison.md @@ -11,10 +11,7 @@ both of them. - [About `Contract` in CTL and Plutus](#about-contract-in-ctl-and-plutus) -- [Contract comparison](#contract-comparison) - - [MustPayTo functions](#mustpayto-functions) - - [The `give` contract](#the-give-contract) - - [The `grab` contract](#the-grab-contract) +- [Contract code comparison](#contract-code-comparison) @@ -62,206 +59,6 @@ effectful actions are defined directly in terms of those provided by `Aff`, logging is provided by a configurable logger stored in `ContractEnv`. -## Contract comparison - -We can now begin to compare contracts. - -The most famous contracts are those contained as part of -the [Plutus pioneer program](https://plutus-pioneer-program.readthedocs.io/en/latest/pioneer/week2.html) in week2. -Both of them use the same on-chain contract that allows an arbitrary -datum and arbitrary redeemer. - -### MustPayTo functions - - -In the case of Plutus `Contract`, we use the function -`mustPayToOtherScript`, according to Plutus ledger, is defined as: - -```Haskell -{-# INLINABLE mustPayToOtherScript #-} --- | @mustPayToOtherScript vh d v@ locks the value @v@ with the given script --- hash @vh@ alonside a datum @d@. --- --- If used in 'Ledger.Constraints.OffChain', this constraint creates a script --- output with @vh@, @d@ and @v@ and adds @d@ in the transaction's datum --- witness set. --- --- If used in 'Ledger.Constraints.OnChain', this constraint verifies that @d@ is --- part of the datum witness set and that the script transaction output with --- @vh@, @d@ and @v@ is part of the transaction's outputs. -mustPayToOtherScript - :: forall i o. ValidatorHash -> Datum -> Value -> TxConstraints i o -``` - -While in the case of CTL we would use `mustPayToScript`: - -```PureScript --- | Note that CTL does not have explicit equivalents of Plutus' --- | `mustPayToTheScript` or `mustPayToOtherScript`, as we have no notion --- | of a "current" script. Thus, we have the single constraint --- | `mustPayToScript`, and all scripts must be explicitly provided to build --- | the transaction. -mustPayToScript - :: forall (i :: Type) (o :: Type) - . ValidatorHash - -> Datum - -> Value - -> TxConstraints i o -``` - -### The `give` contract - -Now we can write and compare the `give` contract. -This contract takes and amount of Ada from our wallet -an lock it to the script that validates any -transactions. - -```Haskell --- Haskell -give :: - forall (w :: Type) (s :: Type) (e :: Type). - AsContractError e => - Integer -> Contract w s e () -give amount = do - let tx = mustPayToOtherScript vHash (Datum $ Constr 0 []) - $ Ada.lovelaceValueOf amount - ledgerTx <- submitTx tx - void $ awaitTxConfirmed $ txId ledgerTx - logInfo @String $ printf "made a gift of %d lovelace" amount -``` - -We include some of the imports for the PureScript -contract. - -```PureScript --- PureScript -import Contract.PlutusData (PlutusData, unitDatum) -import Contract.ScriptLookups as Lookups -import Contract.TxConstraints as Constraints -import Contract.Prelude -import Data.BigInt as BigInt - -give :: ValidatorHash -> Contract TransactionHash -give vhash = do - let - constraints :: Constraints.TxConstraints Unit Unit - constraints = Constraints.mustPayToScript vhash unitDatum - $ Value.lovelaceValueOf - $ BigInt.fromInt 2_000_000 - - lookups :: Lookups.ScriptLookups PlutusData - lookups = mempty - - submitTxFromConstraints lookups constraints -``` - - -### The `grab` contract - -The Plutus `grab` example takes all the UTxOs locked by -the on-chain contract that always validates a transaction, and spends -them to get all in the wallet of the user running the example. -This isn't a problem as the example is intended to run inside a -Plutus `EmulatorTrace` in a local toy environment. - -```Haskell --- Haskell -grab :: forall w s e. AsContractError e => Contract w s e () -grab = do - utxos <- utxoAt scrAddress - let orefs = fst <$> Map.toList utxos - lookups = Constraints.unspentOutputs utxos <> - Constraints.otherScript validator - tx :: TxConstraints Void Void - tx = - mconcat [mustSpendScriptOutput oref $ Redeemer $ I 17 | oref <- orefs] - ledgerTx <- submitTxFromConstraints @Void lookups tx - void $ awaitTxConfirmed $ txId ledgerTx - logInfo @String $ "collected gifts" -``` - -To talk about the grab contract in CTL we need to talk about some -functions and types of CTL first. - -```PureScript -module Ctl.Internal.Plutus.Types.Transaction ... -. -. -. -type UtxoMap = Map TransactionInput TransactionOutputWithRefScript -``` - -```PureScript -module Contract.Utxos ... -. -. -. --- | Queries for utxos at the given Plutus `Address`. -utxosAt - :: forall (address :: Type) - . PlutusAddress address - => address - -> Contract UtxoMap -``` - - -In the case of the CTL version of `grab`, we cannot use all the UTxOs locked by -the validator that always validates, since the example is -intended to run in the `testnet` and other people could have some -values locked by the script. -This is the reason we assume we have already run the `give` contract to -pay some `testAda` to the validator first, and then We got a `TransactionHash`. -We would use the `TransactionHash` to locate the right UTxO to spend. - -```PureScript --- PureScript -grab - :: ValidatorHash - -> Validator - -> TransactionHash - -> Contract Unit -grab vhash validator txId = do - let scriptAddress = scriptHashAddress vhash Nothing - utxos <- fromMaybe Map.empty <$> utxosAt scriptAddress - case fst <$> find hasTransactionId (Map.toUnfoldable utxos :: Array _) of - Just txInput -> - let - lookups :: Lookups.ScriptLookups PlutusData - lookups = Lookups.validator validator - <> Lookups.unspentOutputs utxos - - constraints :: TxConstraints Unit Unit - constraints = - Constraints.mustSpendScriptOutput txInput unitRedeemer - in - void $ submitTxFromConstraints lookups constraints - _ -> - logInfo' $ "The id " - <> show txId - <> " does not have output locked at: " - <> show scriptAddress - where - hasTransactionId :: TransactionInput /\ _ -> Boolean - hasTransactionId (TransactionInput tx /\ _) = - tx.transactionId == txId -``` - -Notice the explicit signature in: - -```PureScript - fst <$> find hasTransactionId (Map.toUnfoldable utxos :: Array _) -``` - -Since PureScript has JS as the backend, `Array` is the most used container -(instead of `List` as in Haskell), so, we prefer the use of `Array` over `List` -whenever it's adequate. -A downside of this is the lack of pattern matching over arbitrary arrays. - - -Both versions of the contract use the same kind of constraints. -Both need to add the validator and the UTxOs to the `lookups` -and both need the `SpendScriptOutput` constraint. -In the case of Plutus, this is done by a special function -that accept lookups, while in CTL this is done by the explicit -construction of an unbalanced transaction. +## Contract code comparison +Compare the contracts defined in week2 of the [Plutus pioneer program](https://plutus-pioneer-program.readthedocs.io/en/latest/pioneer/week2.html) with the [`AlwaysSucceeds`](../examples/AlwaysSucceeds.purs) example in CTL. diff --git a/doc/test-plan.md b/doc/test-plan.md deleted file mode 100644 index 27c312d7f..000000000 --- a/doc/test-plan.md +++ /dev/null @@ -1,243 +0,0 @@ -# CTL Test Plan - -This document outlines CTL's test plan, i.e. a formalized description of testing CTL itself. - -**Table of Contents** - - - - -- [User interactions](#user-interactions) - - [Constraints/lookups](#constraintslookups) - - [Stake operations](#stake-operations) - - [Stake pools](#stake-pools) - - [Stake credential registration](#stake-credential-registration) - - [Delegation](#delegation) - - [Rewards withdrawal](#rewards-withdrawal) - - [Stake credential deregistration](#stake-credential-deregistration) - - [Other functionality](#other-functionality) -- [Acceptance criteria](#acceptance-criteria) - - [Example contracts as tests](#example-contracts-as-tests) - - [Test environments](#test-environments) - - [Unit and integration testing](#unit-and-integration-testing) - - [Required parsing tests](#required-parsing-tests) - - - -## User interactions - -This section outlines the parts of CTL's interface that we aim to guarantee function as expected. Each of the following functionality **must** be covered by an example contract (see our [Acceptance criteria](#acceptance-criteria) below for more details about coverage). - -### Constraints/lookups - -CTL's primary user interface is its constraints and lookups API, modeled after that of Plutus. We must ensure then that **all** of this interface is covered by complete examples (see [Acceptance criteria](#acceptance-criteria) below for a definition of an "example"). Each of the following constraints should be covered, along with the lookup that it implies (indicated in parentheses where applicable): - -- [x] `mustMintValue` (`mintingPolicy`). Also implies - - `mustMintCurrency` -- [x] `mustPayToScript` (`validator`) -- [x] `mustPayToScriptAddress` -- [x] `mustPayToPubKey` - - **Note**: This invokes the same code as `mustPayToPubKeyAddress`, but does not include a stake key component -- [x] `mustPayToPubKeyAddress` -- [x] `mustMintValueWithRedeemer` (`mintingPolicy`). Also implies - - `mustMintCurrencyWithRedeemer` -- [x] `mustSpendScriptOutput` -- [x] `mustSpendPubKeyOutput` -- [x] `mustBeSignedBy` -- [x] `mustHashDatum` -- [x] `mustIncludeDatum` -- [x] `mustPayToPubKeyWithDatum` -- [x] `mustPayToPubKeyAddressWithDatum` -- [x] `mustSatisfyAnyOf` -- [x] `mustSpendAtLeastTotal`. Also implies - - [x] `mustSpendAtLeast` -- [x] `mustValidateIn` - -The following constraints were added for `PlutusV2` features as part of our `v2.0.0` release. They do not have direct correspondances in `plutus-apps`: - -- [x] `mustMintCurrencyUsingScriptRef` -- [x] `mustMintCurrencyWithRedeemerUsingScriptRef` -- [x] `mustPayToScriptWithScriptRef` -- [x] `mustPayToScriptAddressWithScriptRef` -- [x] `mustPayToPubKeyAddressWithDatumAndScriptRef` -- [x] `mustPayToPubKeyAddressWithScriptRef` -- [x] `mustPayToPubKeyWithDatumAndScriptRef` -- [x] `mustPayToPubKeyWithScriptRef` -- [x] `mustReferenceOutput` -- [x] `mustSpendScriptOutputUsingScriptRef` - -That release also included the following constraints for working with native scripts, which also have no `plutus-apps` analogue: - -- [x] `mustPayToNativeScript` -- [x] `mustPayToNativeScriptAddress` -- [x] `mustSpendNativeScriptOutput` - -In addition, several redeemer combinations in a **single transaction** must be covered by tests or examples as well, namely - -- [x] Two or more `Mint` redeemers -- [x] Two or more `Spend` redeemers -- [x] (At least) One each of a `Spend` and `Mint` redeemer - -#### Stake operations - -New constraints for operations with stake will be added in `v3`. - -##### Stake pools - -- [x] mustRegisterPool -- [x] mustRetirePool - -##### Stake credential registration - -- [x] mustRegisterStakePubKey -- [x] mustRegisterStakeScript - -##### Delegation - -- [x] mustDelegateStakePubKey -- [x] mustDelegateStakePlutusScript -- [x] mustDelegateStakeNativeScript - -##### Rewards withdrawal - -- [x] mustWithdrawStakePubKey -- [x] mustWithdrawStakePlutusScript -- [x] mustWithdrawStakeNativeScript - -##### Stake credential deregistration - -- [x] mustDeregisterStakePubKey -- [x] mustDeregisterStakePlutusScript -- [x] mustDeregisterStakeNativeScript - -### Other functionality - -In addition to the constraints/lookups listed above, there are several other critical pieces of functionality that CTL must guarantee. This functionality is subject to the same criteria as our constraints/lookups. - -- `Contract.Transaction.*` - - [x] `balanceTx` - - [x] `signTransaction` - - [x] `submit` - - [x] `awaitTxConfirmed` (implies `awaitTxConfirmedWithTimeout`) - - [x] `getTxMetadata` -- `Contract.Scripts.*` - - [x] `validatorHash` - - [x] `mintingPolicy` - - [x] `applyArgs` - - [x] `getScriptByHash` - - [x] `getScriptsByHashes` -- `Contract.Hashing.*` - - [x] `datumHash` - - [x] `plutusScriptHash` -- `Contract.PlutusData.*` - - [x] `getDatumByHash` - - [x] `getDatumsByHashes` -- `Contract.Utxos.*` - - [x] `utxosAt` - -## Acceptance criteria - -Coverage of particular functionality is measured by the inclusion of the **public** interface in full example contracts and tests. CTL's public API is defined in its `Contract.*` modules. - -Most user interactions defined [above](#user-interactions) also call various parsers and serialization/deserialization code defined in CTL's private/internal modules. Acceptance criteria for these aspects of CTL are defined in [Unit testing](#unit-and-integration-testing) below. - -### Example contracts as tests - -In the case of CTL's constraints/lookups API, in order to be qualified as "covered", the relevant part of the API **must** be included in a **complete example** (such examples are currently contained in our [`examples/`](../examples) directory). Such examples must successfully - -- build an unbalanced transaction specified using the constraints/lookups interface - - **Note**: For implemented transaction features _not_ supported by our current constraints/lookups implementation, such as the features introduced by CIPs 31-33 (inline datums, etc...), modifying the transaction directly is also acceptable -- balance the transaction while calculating sufficient fees/execution units -- sign the transaction using the attached wallet (either a browser-based light wallet or our own `KeyWallet`) -- submit the transaction to the node - -The functionality to achieve the above **must** be taken from our public API. That is, we must consume the public interface directly in all example contracts rather than importing internal CTL modules (anything outside of `Contract.*`). - -#### Test environments - -Furthermore, **all** example contracts must be able to execute in both of the environments that CTL supports. The following sections will refer to two different approachs for testing CTL: - -- **Plutip** testing - - This represents CTL's support for running in a Node.js environment (for `KeyWallet` examples), without a browser or light wallet - - These examples must use our Plutip integrations (`Contract.Test.Plutip` and `purescriptProject.runPlutipTest` from our Nix infrastructure) - - As these do not require network access, they can be executed in an entirely pure environment - - These must be run on CI on each pull request against the CTL repository using `runPlutipTest` by adding the contract to `Test.Plutip` -- **e2e** (end-to-end) testing - - This represents our browser integration and uses real light wallets and a public testnet - - **All** currently supported wallets must be tested against each example contract - - In the future, all e2e tests using real light wallets and a headless Chromium instance might also be run on CI - - See [issue #929](https://github.com/Plutonomicon/cardano-transaction-lib/issues/929) for more details - -Example contracts should be implemented such that the same contract can be reused in both environments. An example module might look like: - -```purescript - -module Examples.MintsToken - ( example - ) where - -import Contract.Prelude - -import Contract.Config (ContractParams) -import Contract.Log (logInfo') -import Contract.Monad (launchAff_) - -example :: ContractParams -> Effect Unit -example cfg = launchAff_ do - runContract cfg do - logInfo' "Running Examples.MintsToken" - -- rest of the contract -``` - -Then, the exported `example` must be added to `Examples.ByUrl` to be run with `make e2e-test`. In some cases, it can be reused directly in a Plutip test (contained in the module `Test.Plutip`); in other cases, an indentical contract can be reimplemented inline in the Plutip test suite. - -The **only** exception to the above rule is when the particulars of a contract preclude running it in one of the environments. For example, a contract that requires interaction between two or more wallets cannot currently be adapted to our e2e testing (as it assumes one connected wallet with one account). - -### Unit and integration testing - -CTL relies heavily on various runtime components to provide the necessary information to perform chain queries and construct transactions. We depend on a large amount of parsers, including serialization/deserialization code (i.e. to and from CTL's own domain type to `cardano-serialization-lib` FFI types), to consume the responses to websocket and HTTP requests made against CTL's runtime. - -Although such parsers are included implicitly in the example contracts defined above, we must also ensure good coverage of edge cases that may arise when making runtime requests. Our approach to such testing can be formalized as: - -- **Unit tests** - - These tests rely on fixtures generated from runtime responses (see [`fixtures/`](../fixtures/test) for examples), stored in the same format as they are received in genuine responses - - The corresponding tests can be largely pure functions which read the fixture and parse it - - Success is defined as a parse returning a `Just` or `Right` value, depending on the parser - - Due to the large number and semi-random nature of our test fixtures, we do not require comparing parsed values to an expected result - - If possible, we should validate a parser against a component's _own_ test fixtures - - See `Test.Ogmios.GenerateFixtures` for an example of this approach, which uses Ogmios' generated test vectors for our own testing -- **Integration tests** - - These tests are run against a full runtime and make real requests to different components - - These are intended to augment the unit tests described above and are a step below our full example contracts - - These can be effects from the `Contract` interface and the underlying backends - -#### Required parsing tests - -Currently, we require parsing tests for the following data structures, organized by dependency (including runtime dependencies): - -- Ogmios - - [x] `ChainTipQR` - - [x] `CurrentEpoch` - - [x] `SystemStart` - - [x] `EraSummaries` - - [x] `ProtocolParameters` - - [x] `TxEvaluationR` - - [x] `SubmitTxR` -- `cardano-serialization-lib` - - `Transaction` - - [x] Serialization - - [x] Deserialization - - `TxBody` - - [x] Serialization - - [x] Deserialization - - `TransactionWitnessSet` - - [x] Serialization - - [x] Deserialization -- Kupo - - [ ] `KupoUtxoMap` - - [ ] `KupoDatum` - - [ ] `KupoScriptRef` - - [ ] `KupoUtxoSlot` - - [ ] `KupoMetadata` -- Blockfrost - - TODO diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index b7b8fa560..991a8ddc2 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -18,6 +18,7 @@ module Contract.Config , mainnetLaceConfig , defaultSynchronizationParams , strictSynchronizationParams + , softSynchronizationParams , defaultTimeParams , module Data.Log.Level , module Data.Log.Message @@ -136,11 +137,22 @@ defaultTimeParams = , waitUntilSlot: { delay: Milliseconds 1_000.0 } } --- | Default synchronization parameters with all synchronization primitives --- | enabled. `errorOnTimeout` options are all set to `false`. +-- | Default synchronization parameters with all synchronizations +-- | disabled. -- | See `doc/query-layers.md` for more info. defaultSynchronizationParams :: ContractSynchronizationParams defaultSynchronizationParams = + { syncBackendWithWallet: + { errorOnTimeout: false, beforeCip30Methods: false, beforeBalancing: false } + , syncWalletWithTxInputs: { errorOnTimeout: false, beforeCip30Sign: false } + , syncWalletWithTransaction: + { errorOnTimeout: false, beforeTxConfirmed: false } + } + +-- | Attempt to synchronize, but do not throw an exception on failure. Used to be the default option in CTL up to and including v8. +-- | See `doc/query-layers.md` for more info. +softSynchronizationParams :: ContractSynchronizationParams +softSynchronizationParams = { syncBackendWithWallet: { errorOnTimeout: false, beforeCip30Methods: true, beforeBalancing: true } , syncWalletWithTxInputs: { errorOnTimeout: false, beforeCip30Sign: true } diff --git a/src/Contract/Constraints.purs b/src/Contract/Constraints.purs deleted file mode 100644 index 1faa0c244..000000000 --- a/src/Contract/Constraints.purs +++ /dev/null @@ -1,176 +0,0 @@ -module Contract.Constraints where - -import Prelude -import Prim hiding (Constraint) - -import Cardano.Types (Slot) -import Cardano.Types.AssetName (AssetName) -import Cardano.Types.Certificate (Certificate) -import Cardano.Types.Coin (Coin) -import Cardano.Types.Epoch (Epoch) -import Cardano.Types.Int as Int -import Cardano.Types.NativeScript (NativeScript) -import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash) -import Cardano.Types.PlutusData (PlutusData) -import Cardano.Types.PlutusScript (PlutusScript) -import Cardano.Types.PoolParams (PoolParams) -import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash) -import Cardano.Types.RedeemerDatum (RedeemerDatum) -import Cardano.Types.ScriptHash (ScriptHash) -import Cardano.Types.StakeCredential (StakeCredential) -import Cardano.Types.StakePubKeyHash (StakePubKeyHash) -import Cardano.Types.TransactionInput (TransactionInput) -import Cardano.Types.TransactionOutput (TransactionOutput) -import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) -import Data.Generic.Rep (class Generic) -import Data.Maybe (Maybe) -import Data.Show.Generic (genericShow) - -type Constraints = Array Constraint - --- TODO: consider using Maybe for witnesses -data Constraint - = SpendOutput TransactionUnspentOutput (Maybe OutputWitness) - | Pay TransactionOutput - | MintAsset ScriptHash AssetName Int.Int CredentialWitness - | RegisterStake StakeCredential - | IssueCertificate Certificate (Maybe CredentialWitness) - | WithdrawStake StakeCredential Coin (Maybe CredentialWitness) - | RequireSignature PaymentPubKeyHash - | RegisterPool PoolParams - | RetirePool PoolPubKeyHash Epoch - | IncludeDatum PlutusData - | SetTTL (Maybe Slot) - | SetValidityStartInterval (Maybe Slot) - | SetIsValid Boolean - -derive instance Generic Constraint _ -instance Show Constraint where - show = genericShow - --- | `OutputWitness` is used to provide the evidence needed to consume an --- | output. It must correspond to a `TransactionUnspentOutput` address' --- | payment credential to unlock it. -data OutputWitness - = NativeScriptOutput (ScriptWitness NativeScript) - | PlutusScriptOutput (ScriptWitness PlutusScript) RedeemerDatum - (Maybe DatumWitness) - -derive instance Generic OutputWitness _ -instance Show OutputWitness where - show = genericShow - --- | `CredentialWitness` is used to provide the evidence needed to perform --- | operations on behalf of a credential, which include: --- | --- | - Minting --- | - Certificate witnessing --- | - Rewards withdrawal --- | --- | Unlike `OutputWitness`, it does not include a `DatumWitness`, because --- | minting policies and stake scripts do not have a datum. -data CredentialWitness - = NativeScriptCredential (ScriptWitness NativeScript) - | PlutusScriptCredential (ScriptWitness PlutusScript) RedeemerDatum - -derive instance Generic CredentialWitness _ -instance Show CredentialWitness where - show = genericShow - --- | Gives the user options for specifying everything needed to spend an UTxO --- | located at an address with a ScriptHash payment credential. --- | --- | - `ScriptValue` contains a script for the witness set. --- | --- | - `ScriptReference` contains a CIP-31 reference input where the inline script should be available at, and a flag to either spend the referenced input or just reference it. -data ScriptWitness a - = ScriptValue a - | ScriptReference TransactionInput RefInputAction - -derive instance Show a => Generic (ScriptWitness a) _ -instance Show a => Show (ScriptWitness a) where - show = genericShow - --- | Inputs can be referenced or spent in a transaction (See CIP-31). --- | Inline datums (CIP-32) and reference scripts (CIP-33) contained within --- | transaction outputs become visible to the script context of the --- | transaction, regardless of whether the output is spent or just --- | referenced. This data type lets the developer to specify, which --- | action to perform with a referenced input. -data RefInputAction - = ReferenceInput - | SpendInput - -derive instance Generic RefInputAction _ -instance Show RefInputAction where - show = genericShow - --- | Datums in UTxOs can be stored in two forms: inline datums or datum hashes. --- | When there's a hash, we need to provide a datum corresponding to this hash, --- | which can be done by either providing the value literally, or using a --- | reference input where it is stored inline. -data DatumWitness - = DatumValue PlutusData - | DatumReference TransactionInput RefInputAction - -derive instance Generic DatumWitness _ -instance Show DatumWitness where - show = genericShow - -data StakeWitness - = PubKeyHashStakeWitness StakePubKeyHash - | PlutusScriptStakeWitness (ScriptWitness PlutusScript) - | NativeScriptStakeWitness (ScriptWitness NativeScript) - -derive instance Generic StakeWitness _ -instance Show StakeWitness where - show = genericShow - --- Stake operations - --- registerStake :: StakeRegistration -> TxConstraints --- registerStake = singleton <<< case _ of --- StakePubKeyRegistration spkh -> MustRegisterStakePubKey spkh --- StakeScriptRegistration ssh -> MustRegisterStakeScript ssh - --- delegateStake :: PoolPubKeyHash -> StakeDelegation -> TxConstraints --- delegateStake ppkh = singleton <<< case _ of --- DelegatePubKeyHashStake spkh -> --- MustDelegateStakePubKey spkh ppkh --- DelegateNativeScriptStake ns -> --- MustDelegateStakeNativeScript ns ppkh --- DelegatePlutusScriptStake ps redeemer -> --- MustDelegateStakePlutusScript ps redeemer ppkh - --- withdrawStake :: StakeWithdrawal -> TxConstraints --- withdrawStake = singleton <<< case _ of --- WithdrawNativeScriptStake ns -> --- MustWithdrawStakeNativeScript ns --- WithdrawPlutusScriptStake ps redeemer -> --- MustWithdrawStakePlutusScript ps redeemer --- WithdrawPubKeyStake spkh -> --- MustWithdrawStakePubKey spkh - --- data StakeDelegation --- = DelegatePubKeyHashStake StakePubKeyHash --- | DelegateNativeScriptStake NativeScriptWitness --- | DelegatePlutusScriptStake PlutusScriptWitness - --- data StakeWithdrawal --- = WithdrawNativeScriptStake NativeScriptWitness --- | WithdrawPlutusScriptStake PlutusScriptWitness --- | WithdrawPubKeyStake StakePubKeyHash - --- data DeregisterStake --- = DeregisterNativeScriptStake NativeScriptWitness --- | DeregisterPlutusScriptStake PlutusScriptWitness --- | DeregisterPubKeyStake StakePubKeyHash - --- deregisterStake :: DeregisterStake -> TxConstraints --- deregisterStake = singleton <<< case _ of --- DeregisterNativeScriptStake ns -> --- MustDeregisterStakeNativeScript ns --- DeregisterPlutusScriptStake ps redeemer -> --- MustDeregisterStakePlutusScript ps redeemer --- DeregisterPubKeyStake spkh -> --- MustDeregisterStakePubKey spkh From dbc4608610b1e0d53e583b1402bf1f2765f7056f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Thu, 18 Jul 2024 21:43:00 +0400 Subject: [PATCH 301/373] Rename BalanceTxConstraintsBuilder to BalancerConstraints (backward-compatible change) --- CHANGELOG.md | 1 + examples/AdditionalUtxos.purs | 10 ++-- examples/BalanceTxConstraints.purs | 16 +++--- examples/TxChaining.purs | 8 +-- src/Contract/BalanceTxConstraints.purs | 2 + src/Contract/Config.purs | 5 +- src/Internal/BalanceTx/BalanceTx.purs | 4 +- src/Internal/BalanceTx/Constraints.purs | 67 +++++++++++++------------ src/Internal/BalanceTx/Types.purs | 22 ++++---- 9 files changed, 73 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5de6bcc9..98ebffd7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.Transaction.mkUnbalancedTx` now returns a tuple: a transaction and its used UTxOs. - `Contract.Transaction.balanceTx` accepts two extra argument: a list of used UTxOs (set to `Data.Map.empty` if none of them are coming from the outside of the wallet) and balancer constraints (set to `mempty` if not needed) - Default synchronization parameters: all [wallet <-> query layer synchronization primitives](./doc/query-layer.md) are now off by default. The reason is that the runtime overhead made the users unhappy and it was not worth it for most of the users. If your dApp sends transactions in quick succession, consider enabling the synchronization again. +- `BalanceTxConstraintsBuilder` has been renamed to `BalancerConstraints`. It is still available under the old name as a type synonym. ### Fixed diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index 7aa80ded9..4184ed772 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -24,8 +24,10 @@ import Cardano.Types.RedeemerDatum as RedeemerDatum import Cardano.Types.TransactionOutput (TransactionOutput(TransactionOutput)) import Cardano.Types.TransactionUnspentOutput (fromUtxoMap) import Contract.Address (mkAddress) -import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder) -import Contract.BalanceTxConstraints (mustUseAdditionalUtxos) as BalancerConstraints +import Contract.BalanceTxConstraints + ( BalancerConstraints + , mustUseAdditionalUtxos + ) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -126,9 +128,9 @@ spendFromValidator validator additionalUtxos _datum = do plan = spendScriptOutputs <> spendPubkeyOutputs - balancerConstraints :: BalanceTxConstraintsBuilder + balancerConstraints :: BalancerConstraints balancerConstraints = - BalancerConstraints.mustUseAdditionalUtxos additionalUtxos + mustUseAdditionalUtxos additionalUtxos unbalancedTx <- buildTx plan balancedTx <- balanceTx unbalancedTx additionalUtxos balancerConstraints diff --git a/examples/BalanceTxConstraints.purs b/examples/BalanceTxConstraints.purs index 13b54824c..048013dcb 100644 --- a/examples/BalanceTxConstraints.purs +++ b/examples/BalanceTxConstraints.purs @@ -12,13 +12,13 @@ import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (Address) import Contract.BalanceTxConstraints - ( BalanceTxConstraintsBuilder + ( BalancerConstraints , mustGenChangeOutsWithMaxTokenQuantity , mustNotSpendUtxoWithOutRef , mustSendChangeToAddress , mustUseCollateralUtxos , mustUseUtxosAtAddress - ) as BalanceTxConstraints + ) import Contract.Log (logInfo') import Contract.Monad (Contract, liftedM) import Contract.ScriptLookups as Lookups @@ -166,14 +166,14 @@ contract (ContractParams p) = do lookups :: Lookups.ScriptLookups lookups = Lookups.plutusMintingPolicy mp - balanceTxConstraints :: BalanceTxConstraints.BalanceTxConstraintsBuilder + balanceTxConstraints :: BalancerConstraints balanceTxConstraints = - BalanceTxConstraints.mustGenChangeOutsWithMaxTokenQuantity + mustGenChangeOutsWithMaxTokenQuantity (BigInt.fromInt 4) - <> BalanceTxConstraints.mustUseUtxosAtAddress bobAddress - <> BalanceTxConstraints.mustSendChangeToAddress bobAddress - <> BalanceTxConstraints.mustNotSpendUtxoWithOutRef nonSpendableOref - <> BalanceTxConstraints.mustUseCollateralUtxos bobsCollateral + <> mustUseUtxosAtAddress bobAddress + <> mustSendChangeToAddress bobAddress + <> mustNotSpendUtxoWithOutRef nonSpendableOref + <> mustUseCollateralUtxos bobsCollateral void $ runChecks checks $ lift do unbalancedTx /\ usedUtxos <- mkUnbalancedTx lookups constraints diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index a9dec9554..4ca765ff9 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -22,9 +22,9 @@ import Cardano.Types.DataHash (hashPlutusData) import Cardano.Types.PlutusData as PlutusData import Contract.Address (mkAddress) import Contract.BalanceTxConstraints - ( BalanceTxConstraintsBuilder + ( BalancerConstraints , mustUseAdditionalUtxos - ) as BalanceTxConstraints + ) import Contract.Config (ContractParams, testnetNamiConfig) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -76,9 +76,9 @@ contract = do when (Map.isEmpty additionalUtxos) do liftEffect $ throw "empty utxos" let - balanceTxConstraints :: BalanceTxConstraints.BalanceTxConstraintsBuilder + balanceTxConstraints :: BalancerConstraints balanceTxConstraints = - BalanceTxConstraints.mustUseAdditionalUtxos additionalUtxos + mustUseAdditionalUtxos additionalUtxos unbalancedTx1 <- buildTx plan balancedTx1 <- balanceTx unbalancedTx1 additionalUtxos balanceTxConstraints balancedSignedTx1 <- signTransaction balancedTx1 diff --git a/src/Contract/BalanceTxConstraints.purs b/src/Contract/BalanceTxConstraints.purs index 531e16c63..67d95706d 100644 --- a/src/Contract/BalanceTxConstraints.purs +++ b/src/Contract/BalanceTxConstraints.purs @@ -4,6 +4,8 @@ module Contract.BalanceTxConstraints (module BalanceTxConstraints) where import Ctl.Internal.BalanceTx.Constraints ( BalanceTxConstraintsBuilder + , BalancerConfig(BalancerConfig) + , BalancerConstraints(BalancerConstraints) , mustGenChangeOutsWithMaxTokenQuantity , mustNotSpendUtxoWithOutRef , mustNotSpendUtxosWithOutRefs diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 991a8ddc2..55660a150 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -143,7 +143,10 @@ defaultTimeParams = defaultSynchronizationParams :: ContractSynchronizationParams defaultSynchronizationParams = { syncBackendWithWallet: - { errorOnTimeout: false, beforeCip30Methods: false, beforeBalancing: false } + { errorOnTimeout: false + , beforeCip30Methods: false + , beforeBalancing: false + } , syncWalletWithTxInputs: { errorOnTimeout: false, beforeCip30Sign: false } , syncWalletWithTransaction: { errorOnTimeout: false, beforeTxConfirmed: false } diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 6aa2ca9ed..d3128a083 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -91,7 +91,7 @@ import Ctl.Internal.BalanceTx.Types , asksConstraints , liftContract , liftEitherContract - , withBalanceTxConstraints + , withBalancerConstraints ) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex, buildUtxoIndex) @@ -168,7 +168,7 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do pparams <- getProtocolParameters - withBalanceTxConstraints constraintsBuilder $ runExceptT do + withBalancerConstraints constraintsBuilder $ runExceptT do let depositValuePerCert = BigNum.toBigInt $ unwrap (unwrap pparams).stakeAddressDeposit diff --git a/src/Internal/BalanceTx/Constraints.purs b/src/Internal/BalanceTx/Constraints.purs index 8fd509df9..edc89414b 100644 --- a/src/Internal/BalanceTx/Constraints.purs +++ b/src/Internal/BalanceTx/Constraints.purs @@ -1,7 +1,8 @@ module Ctl.Internal.BalanceTx.Constraints - ( BalanceTxConstraints(BalanceTxConstraints) - , BalanceTxConstraintsBuilder(BalanceTxConstraintsBuilder) - , buildBalanceTxConstraints + ( BalanceTxConstraintsBuilder + , BalancerConstraints(BalancerConstraints) + , buildBalancerConfig + , BalancerConfig(BalancerConfig) , mustGenChangeOutsWithMaxTokenQuantity , mustNotSpendUtxosWithOutRefs , mustNotSpendUtxoWithOutRef @@ -43,7 +44,7 @@ import Data.Set (singleton) as Set import JS.BigInt (BigInt) import Type.Proxy (Proxy(Proxy)) -newtype BalanceTxConstraints = BalanceTxConstraints +newtype BalancerConfig = BalancerConfig { additionalUtxos :: UtxoMap , collateralUtxos :: Maybe UtxoMap , maxChangeOutputTokenQuantity :: Maybe BigInt @@ -54,48 +55,50 @@ newtype BalanceTxConstraints = BalanceTxConstraints , selectionStrategy :: SelectionStrategy } -derive instance Newtype BalanceTxConstraints _ +derive instance Newtype BalancerConfig _ -_additionalUtxos :: Lens' BalanceTxConstraints UtxoMap +_additionalUtxos :: Lens' BalancerConfig UtxoMap _additionalUtxos = _Newtype <<< prop (Proxy :: Proxy "additionalUtxos") -_collateralUtxos :: Lens' BalanceTxConstraints (Maybe UtxoMap) +_collateralUtxos :: Lens' BalancerConfig (Maybe UtxoMap) _collateralUtxos = _Newtype <<< prop (Proxy :: Proxy "collateralUtxos") -_maxChangeOutputTokenQuantity :: Lens' BalanceTxConstraints (Maybe BigInt) +_maxChangeOutputTokenQuantity :: Lens' BalancerConfig (Maybe BigInt) _maxChangeOutputTokenQuantity = _Newtype <<< prop (Proxy :: Proxy "maxChangeOutputTokenQuantity") -_nonSpendableInputs :: Lens' BalanceTxConstraints (Set TransactionInput) +_nonSpendableInputs :: Lens' BalancerConfig (Set TransactionInput) _nonSpendableInputs = _Newtype <<< prop (Proxy :: Proxy "nonSpendableInputs") -_srcAddresses :: Lens' BalanceTxConstraints (Maybe (Array Address)) +_srcAddresses :: Lens' BalancerConfig (Maybe (Array Address)) _srcAddresses = _Newtype <<< prop (Proxy :: Proxy "srcAddresses") -_changeAddress :: Lens' BalanceTxConstraints (Maybe Address) +_changeAddress :: Lens' BalancerConfig (Maybe Address) _changeAddress = _Newtype <<< prop (Proxy :: Proxy "changeAddress") -_changeDatum :: Lens' BalanceTxConstraints (Maybe OutputDatum) +_changeDatum :: Lens' BalancerConfig (Maybe OutputDatum) _changeDatum = _Newtype <<< prop (Proxy :: Proxy "changeDatum") -_selectionStrategy :: Lens' BalanceTxConstraints SelectionStrategy +_selectionStrategy :: Lens' BalancerConfig SelectionStrategy _selectionStrategy = _Newtype <<< prop (Proxy :: Proxy "selectionStrategy") -newtype BalanceTxConstraintsBuilder = - BalanceTxConstraintsBuilder (BalanceTxConstraints -> BalanceTxConstraints) +type BalanceTxConstraintsBuilder = BalancerConstraints -derive instance Newtype BalanceTxConstraintsBuilder _ +newtype BalancerConstraints = + BalancerConstraints (BalancerConfig -> BalancerConfig) -instance Semigroup BalanceTxConstraintsBuilder where - append = over2 BalanceTxConstraintsBuilder (>>>) +derive instance Newtype BalancerConstraints _ -instance Monoid BalanceTxConstraintsBuilder where +instance Semigroup BalancerConstraints where + append = over2 BalancerConstraints (>>>) + +instance Monoid BalancerConstraints where mempty = wrap identity -buildBalanceTxConstraints :: BalanceTxConstraintsBuilder -> BalanceTxConstraints -buildBalanceTxConstraints = applyFlipped defaultConstraints <<< unwrap +buildBalancerConfig :: BalancerConstraints -> BalancerConfig +buildBalancerConfig = applyFlipped defaultConstraints <<< unwrap where - defaultConstraints :: BalanceTxConstraints + defaultConstraints :: BalancerConfig defaultConstraints = wrap { additionalUtxos: Map.empty , collateralUtxos: Nothing @@ -114,13 +117,13 @@ buildBalanceTxConstraints = applyFlipped defaultConstraints <<< unwrap -- | NOTE: Setting `mustUseUtxosAtAddresses` or `mustUseUtxosAtAddress` -- | does NOT have any effect on which address will be used as a change address. mustSendChangeToAddress - :: Address -> BalanceTxConstraintsBuilder + :: Address -> BalancerConstraints mustSendChangeToAddress = wrap <<< setJust _changeAddress -- | Tells the balancer to include the datum in each change UTxO. Useful when -- | balancing a transactions for script owned UTxOs. -mustSendChangeWithDatum :: OutputDatum -> BalanceTxConstraintsBuilder +mustSendChangeWithDatum :: OutputDatum -> BalancerConstraints mustSendChangeWithDatum = wrap <<< setJust _changeDatum @@ -131,7 +134,7 @@ mustSendChangeWithDatum = -- | NOTE: Setting `mustUseUtxosAtAddresses` or `mustUseUtxosAtAddress` -- | does NOT have any effect on which address will be used as a change address. mustUseUtxosAtAddresses - :: Array Address -> BalanceTxConstraintsBuilder + :: Array Address -> BalancerConstraints mustUseUtxosAtAddresses = wrap <<< setJust _srcAddresses @@ -142,7 +145,7 @@ mustUseUtxosAtAddresses = -- | NOTE: Setting `mustUseUtxosAtAddresses` or `mustUseUtxosAtAddress` -- | does NOT have any effect on which address will be used as a change address. mustUseUtxosAtAddress - :: Address -> BalanceTxConstraintsBuilder + :: Address -> BalancerConstraints mustUseUtxosAtAddress address = mustUseUtxosAtAddresses (Array.singleton address) @@ -150,31 +153,31 @@ mustUseUtxosAtAddress address = -- | between them if the total change `Value` contains token quantities -- | exceeding the specified upper bound. -- | (See `Cardano.Types.Value.equipartitionValueWithTokenQuantityUpperBound`) -mustGenChangeOutsWithMaxTokenQuantity :: BigInt -> BalanceTxConstraintsBuilder +mustGenChangeOutsWithMaxTokenQuantity :: BigInt -> BalancerConstraints mustGenChangeOutsWithMaxTokenQuantity = wrap <<< setJust _maxChangeOutputTokenQuantity <<< max one -- | Tells the balancer not to spend UTxO's with the specified output references. mustNotSpendUtxosWithOutRefs - :: Set TransactionInput -> BalanceTxConstraintsBuilder + :: Set TransactionInput -> BalancerConstraints mustNotSpendUtxosWithOutRefs = wrap <<< appendOver _nonSpendableInputs -- | Tells the balancer not to spend a UTxO with the specified output reference. -mustNotSpendUtxoWithOutRef :: TransactionInput -> BalanceTxConstraintsBuilder +mustNotSpendUtxoWithOutRef :: TransactionInput -> BalancerConstraints mustNotSpendUtxoWithOutRef = mustNotSpendUtxosWithOutRefs <<< Set.singleton -- | Tells the balancer to use the provided UTxO set when evaluating script -- | execution units (sets `additionalUtxoSet` of Ogmios `EvaluateTx`). -- | Note that you need to use `unspentOutputs` lookup to make these UTxO's -- | spendable by the transaction (see `Examples.TxChaining` for reference). -mustUseAdditionalUtxos :: UtxoMap -> BalanceTxConstraintsBuilder +mustUseAdditionalUtxos :: UtxoMap -> BalancerConstraints mustUseAdditionalUtxos = wrap <<< set _additionalUtxos -- | Tells the balancer to select from the provided UTxO set when choosing -- | collateral UTxOs, instead of UTxOs provided by the browser wallet. -mustUseCollateralUtxos :: UtxoMap -> BalanceTxConstraintsBuilder +mustUseCollateralUtxos :: UtxoMap -> BalancerConstraints mustUseCollateralUtxos = wrap <<< set _collateralUtxos <<< Just -- | Tells the balancer to use the given strategy for coin selection. -mustUseCoinSelectionStrategy :: SelectionStrategy -> BalanceTxConstraintsBuilder +mustUseCoinSelectionStrategy :: SelectionStrategy -> BalancerConstraints mustUseCoinSelectionStrategy = wrap <<< set _selectionStrategy diff --git a/src/Internal/BalanceTx/Types.purs b/src/Internal/BalanceTx/Types.purs index 42640cd0c..2ce82ab87 100644 --- a/src/Internal/BalanceTx/Types.purs +++ b/src/Internal/BalanceTx/Types.purs @@ -7,7 +7,7 @@ module Ctl.Internal.BalanceTx.Types , asksConstraints , liftEitherContract , liftContract - , withBalanceTxConstraints + , withBalancerConstraints ) where import Prelude @@ -18,9 +18,9 @@ import Control.Monad.Reader.Class (asks) import Control.Monad.Reader.Trans (ReaderT, runReaderT) import Control.Monad.Trans.Class (lift) import Ctl.Internal.BalanceTx.Constraints - ( BalanceTxConstraints - , BalanceTxConstraintsBuilder - , buildBalanceTxConstraints + ( BalancerConfig + , BalancerConstraints + , buildBalancerConfig ) import Ctl.Internal.BalanceTx.Error (BalanceTxError) import Ctl.Internal.Contract.Monad (Contract, ContractEnv) @@ -35,7 +35,7 @@ import Data.Set (Set) import Data.Set (fromFoldable, member) as Set type BalanceTxMContext = - { constraints :: BalanceTxConstraints, ownAddresses :: Set Address } + { constraints :: BalancerConfig, ownAddresses :: Set Address } type BalanceTxM (a :: Type) = ExceptT BalanceTxError (ReaderT BalanceTxMContext Contract) a @@ -48,7 +48,7 @@ liftEitherContract liftEitherContract = ExceptT <<< lift asksConstraints - :: forall (a :: Type). Lens' BalanceTxConstraints a -> BalanceTxM a + :: forall (a :: Type). Lens' BalancerConfig a -> BalanceTxM a asksConstraints l = asks (view l <<< _.constraints) asksContractEnv :: forall (a :: Type). (ContractEnv -> a) -> BalanceTxM a @@ -62,19 +62,19 @@ askCoinsPerUtxoUnit = askNetworkId :: BalanceTxM NetworkId askNetworkId = asksContractEnv _.networkId -withBalanceTxConstraints +withBalancerConstraints :: forall (a :: Type) - . BalanceTxConstraintsBuilder + . BalancerConstraints -> ReaderT BalanceTxMContext Contract a -> Contract a -withBalanceTxConstraints constraintsBuilder m = do +withBalancerConstraints constraintsBuilder m = do -- we can ignore failures due to reward addresses because reward addresses -- do not receive transaction outputs from dApps ownAddresses <- Set.fromFoldable <$> getWalletAddresses flip runReaderT { constraints, ownAddresses } m where - constraints :: BalanceTxConstraints - constraints = buildBalanceTxConstraints constraintsBuilder + constraints :: BalancerConfig + constraints = buildBalancerConfig constraintsBuilder askCostModelsForLanguages :: Set Language -> BalanceTxM (Map Language CostModel) askCostModelsForLanguages languages = From 87db9a0be0d6bd486f45e75c9525a0f41be4b239 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 19 Jul 2024 16:39:10 +0400 Subject: [PATCH 302/373] Update uplc-apply-args --- package-lock.json | 46 ++++++++++++------------ package.json | 2 +- templates/ctl-scaffold/package-lock.json | 46 ++++++++++++------------ templates/ctl-scaffold/package.json | 2 +- 4 files changed, 48 insertions(+), 48 deletions(-) diff --git a/package-lock.json b/package-lock.json index a9845f2b0..b3cb8577d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.1", + "@mlabs-haskell/uplc-apply-args": "1.0.29-alpha", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", @@ -521,23 +521,23 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "node_modules/@mlabs-haskell/uplc-apply-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", - "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", + "version": "1.0.29-alpha", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.29-alpha.tgz", + "integrity": "sha512-eTazItNZlOvuK/ZNHBKUOM3fL1mhRaY0GFYPtalo6PrkGcwZeSzlD6+B8Mbgmb18HusDZPSRi3zhp/urxOygFA==", "dependencies": { - "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", - "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" + "@mlabs-haskell/uplc-apply-args-browser": "^1.0.29-alpha", + "@mlabs-haskell/uplc-apply-args-nodejs": "^1.0.29-alpha2" } }, "node_modules/@mlabs-haskell/uplc-apply-args-browser": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", - "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + "version": "1.0.29-alpha", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-1.0.29-alpha.tgz", + "integrity": "sha512-U/FEEI1UbHGRLblNHX4WxF5KpPR3S/C1rgXvN8X6gL2CDc4iAqvbP88d5vqwLL+seG2aO4pqqJXQnnKtlLHk7A==" }, "node_modules/@mlabs-haskell/uplc-apply-args-nodejs": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", - "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + "version": "1.0.29-alpha2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-1.0.29-alpha2.tgz", + "integrity": "sha512-91Lfk0SGH3cEHGE/F/If9lot42OJ6+bpM4HsHZr5PDvHFNOICFdTwLq/6BFmIClCkdZZNuDZIc1EpRCBgtdROw==" }, "node_modules/@noble/hashes": { "version": "1.3.1", @@ -6645,23 +6645,23 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "@mlabs-haskell/uplc-apply-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", - "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", + "version": "1.0.29-alpha", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.29-alpha.tgz", + "integrity": "sha512-eTazItNZlOvuK/ZNHBKUOM3fL1mhRaY0GFYPtalo6PrkGcwZeSzlD6+B8Mbgmb18HusDZPSRi3zhp/urxOygFA==", "requires": { - "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", - "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" + "@mlabs-haskell/uplc-apply-args-browser": "^1.0.29-alpha", + "@mlabs-haskell/uplc-apply-args-nodejs": "^1.0.29-alpha2" } }, "@mlabs-haskell/uplc-apply-args-browser": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", - "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + "version": "1.0.29-alpha", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-1.0.29-alpha.tgz", + "integrity": "sha512-U/FEEI1UbHGRLblNHX4WxF5KpPR3S/C1rgXvN8X6gL2CDc4iAqvbP88d5vqwLL+seG2aO4pqqJXQnnKtlLHk7A==" }, "@mlabs-haskell/uplc-apply-args-nodejs": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", - "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + "version": "1.0.29-alpha2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-1.0.29-alpha2.tgz", + "integrity": "sha512-91Lfk0SGH3cEHGE/F/If9lot42OJ6+bpM4HsHZr5PDvHFNOICFdTwLq/6BFmIClCkdZZNuDZIc1EpRCBgtdROw==" }, "@noble/hashes": { "version": "1.3.1", diff --git a/package.json b/package.json index 4cb9d9892..c73fcfb90 100755 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.1", + "@mlabs-haskell/uplc-apply-args": "1.0.29-alpha", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", diff --git a/templates/ctl-scaffold/package-lock.json b/templates/ctl-scaffold/package-lock.json index 561dc93e3..60ff20c84 100644 --- a/templates/ctl-scaffold/package-lock.json +++ b/templates/ctl-scaffold/package-lock.json @@ -12,7 +12,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.1", + "@mlabs-haskell/uplc-apply-args": "1.0.29-alpha", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", @@ -519,23 +519,23 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "node_modules/@mlabs-haskell/uplc-apply-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", - "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", + "version": "1.0.29-alpha", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.29-alpha.tgz", + "integrity": "sha512-eTazItNZlOvuK/ZNHBKUOM3fL1mhRaY0GFYPtalo6PrkGcwZeSzlD6+B8Mbgmb18HusDZPSRi3zhp/urxOygFA==", "dependencies": { - "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", - "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" + "@mlabs-haskell/uplc-apply-args-browser": "^1.0.29-alpha", + "@mlabs-haskell/uplc-apply-args-nodejs": "^1.0.29-alpha2" } }, "node_modules/@mlabs-haskell/uplc-apply-args-browser": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", - "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + "version": "1.0.29-alpha", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-1.0.29-alpha.tgz", + "integrity": "sha512-U/FEEI1UbHGRLblNHX4WxF5KpPR3S/C1rgXvN8X6gL2CDc4iAqvbP88d5vqwLL+seG2aO4pqqJXQnnKtlLHk7A==" }, "node_modules/@mlabs-haskell/uplc-apply-args-nodejs": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", - "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + "version": "1.0.29-alpha2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-1.0.29-alpha2.tgz", + "integrity": "sha512-91Lfk0SGH3cEHGE/F/If9lot42OJ6+bpM4HsHZr5PDvHFNOICFdTwLq/6BFmIClCkdZZNuDZIc1EpRCBgtdROw==" }, "node_modules/@noble/hashes": { "version": "1.3.1", @@ -5772,23 +5772,23 @@ "integrity": "sha512-JX9TON+nZbt+1TJ5MNV1Gcpxp3/m56x1/glDwzGtydrzQzyZbKg4XFw9Frib6fh89YVqjSFJ9xmVeIyDJ5DxTQ==" }, "@mlabs-haskell/uplc-apply-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-2.0.1.tgz", - "integrity": "sha512-of0zlgBEk9vpTBFISDHADoYRzfbw84MQBMnGCXFhdSvdOIWsoGV4kvQJBdufYYh8BJNSyy0MLJ9uX7ARr7reig==", + "version": "1.0.29-alpha", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args/-/uplc-apply-args-1.0.29-alpha.tgz", + "integrity": "sha512-eTazItNZlOvuK/ZNHBKUOM3fL1mhRaY0GFYPtalo6PrkGcwZeSzlD6+B8Mbgmb18HusDZPSRi3zhp/urxOygFA==", "requires": { - "@mlabs-haskell/uplc-apply-args-browser": "^0.0.3", - "@mlabs-haskell/uplc-apply-args-nodejs": "^0.0.3" + "@mlabs-haskell/uplc-apply-args-browser": "^1.0.29-alpha", + "@mlabs-haskell/uplc-apply-args-nodejs": "^1.0.29-alpha2" } }, "@mlabs-haskell/uplc-apply-args-browser": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-0.0.3.tgz", - "integrity": "sha512-U2GFMN2Q2KLwTKjrwDXcOBznIvib3Jvdg79xmXDx3/L94PGoBfLN9bBByfVTwKP+ETRfJgRXwi5xxctwKXvT+g==" + "version": "1.0.29-alpha", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-browser/-/uplc-apply-args-browser-1.0.29-alpha.tgz", + "integrity": "sha512-U/FEEI1UbHGRLblNHX4WxF5KpPR3S/C1rgXvN8X6gL2CDc4iAqvbP88d5vqwLL+seG2aO4pqqJXQnnKtlLHk7A==" }, "@mlabs-haskell/uplc-apply-args-nodejs": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-0.0.3.tgz", - "integrity": "sha512-0uLz+67U1yiXvt3qu/7NBd0WK6LWXf9XteaInQk56RqRbxi4WKA/1Rm73VuciZzLWohXMDNbVNCiirmXi6k+9A==" + "version": "1.0.29-alpha2", + "resolved": "https://registry.npmjs.org/@mlabs-haskell/uplc-apply-args-nodejs/-/uplc-apply-args-nodejs-1.0.29-alpha2.tgz", + "integrity": "sha512-91Lfk0SGH3cEHGE/F/If9lot42OJ6+bpM4HsHZr5PDvHFNOICFdTwLq/6BFmIClCkdZZNuDZIc1EpRCBgtdROw==" }, "@noble/hashes": { "version": "1.3.1", diff --git a/templates/ctl-scaffold/package.json b/templates/ctl-scaffold/package.json index f34f4d9e3..addbe6799 100644 --- a/templates/ctl-scaffold/package.json +++ b/templates/ctl-scaffold/package.json @@ -28,7 +28,7 @@ "@mlabs-haskell/cardano-message-signing": "^1.0.1", "@mlabs-haskell/cardano-serialization-lib-gc": "^1.0.10", "@mlabs-haskell/json-bigint": "2.0.0", - "@mlabs-haskell/uplc-apply-args": "2.0.1", + "@mlabs-haskell/uplc-apply-args": "1.0.29-alpha", "@noble/secp256k1": "^1.7.0", "base64-js": "^1.5.1", "bignumber.js": "^9.1.1", From e4d540ac677cf8019e1049825ee661845f9af1c8 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 19 Jul 2024 17:19:07 +0400 Subject: [PATCH 303/373] Override kupo version --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 1b28d6989..0211172ae 100644 --- a/flake.nix +++ b/flake.nix @@ -54,6 +54,7 @@ url = "github:Fourierlabs/kupo-nixos/add-conway"; inputs = { CHaP.follows = "CHaP"; + kupo.url = "github:klarkc/kupo/d95a324f6a94a963cd91cb5d5f88ef50640e7b8d"; }; }; From 34b6b92a6c8d27da102460e484f94ed725c128bf Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 19 Jul 2024 19:39:43 +0400 Subject: [PATCH 304/373] Update the template dependencies --- templates/ctl-scaffold/packages.dhall | 7 ++- templates/ctl-scaffold/spago-packages.nix | 60 +++++++++++++++++++++++ templates/ctl-scaffold/spago.dhall | 5 ++ 3 files changed, 70 insertions(+), 2 deletions(-) diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index adfe30ae0..8694c6708 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -553,12 +553,15 @@ let additions = , "bignumber" , "bytearrays" , "cardano-hd-wallet" + , "cardano-key-wallet" + , "cardano-message-signing" , "cardano-plutus-data-schema" , "cardano-serialization-lib" , "cardano-transaction-builder" , "cardano-types" , "checked-exceptions" , "cip30" + , "cip30-mock" , "cip30-typesafe" , "console" , "control" @@ -614,7 +617,6 @@ let additions = , "profunctor-lenses" , "quickcheck" , "quickcheck-combinators" - , "quickcheck-laws" , "random" , "rationals" , "record" @@ -634,12 +636,13 @@ let additions = , "unfoldable" , "unsafe-coerce" , "untagged-union" + , "uplc-apply-args" , "variant" , "web-html" , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da" + , version = "dbc4608610b1e0d53e583b1402bf1f2765f7056f" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index cd0e4d5dc..369921ee0 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -209,6 +209,18 @@ let installPhase = "ln -s $src $out"; }; + "cardano-collateral-select" = pkgs.stdenv.mkDerivation { + name = "cardano-collateral-select"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-collateral-select"; + rev = "193bf49be979b42aa1f0f9cb3d7582d6bc98e3b9"; + sha256 = "1jbl6k779brbqzf7jf80is63b23k3mqzf2mzr222qswd3wg8s5b0"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cardano-hd-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-hd-wallet"; version = "v1.0.0"; @@ -221,6 +233,30 @@ let installPhase = "ln -s $src $out"; }; + "cardano-key-wallet" = pkgs.stdenv.mkDerivation { + name = "cardano-key-wallet"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; + rev = "55f176dbedddbd37297a3d1f90c756420159454e"; + sha256 = "1fr77kvgdvxqi0jhg98balrwpf7rlhwiyrf1v8z2112yyln2myj9"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cardano-message-signing" = pkgs.stdenv.mkDerivation { + name = "cardano-message-signing"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cardano-message-signing"; + rev = "97f6f97a258ae3490df0be6b39fa6769677aa04f"; + sha256 = "1ns7m9awn4w5amvf9ffldxk7acm73fg8clw4hja4nnl61mskqr5w"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cardano-plutus-data-schema" = pkgs.stdenv.mkDerivation { name = "cardano-plutus-data-schema"; version = "v1.0.0"; @@ -317,6 +353,18 @@ let installPhase = "ln -s $src $out"; }; + "cip30-mock" = pkgs.stdenv.mkDerivation { + name = "cip30-mock"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip30-mock"; + rev = "7b4b7b2800f6d0ebd25554de63141cbd8c1e14a0"; + sha256 = "1b412s7p144h98csvy5w9z6vjhlpya9mqkxm2k8nxfdhq2znwfih"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "cip30-typesafe" = pkgs.stdenv.mkDerivation { name = "cip30-typesafe"; version = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; @@ -1577,6 +1625,18 @@ let installPhase = "ln -s $src $out"; }; + "uplc-apply-args" = pkgs.stdenv.mkDerivation { + name = "uplc-apply-args"; + version = "v1.0.0"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-uplc-apply-args"; + rev = "aa528d5310cbfbd01b4d94557f404d95cfb6bb3c"; + sha256 = "1r064ca2m16hkbcswrvlng032ax1ygbpr2gxrlaqmjlf2gnin280"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "variant" = pkgs.stdenv.mkDerivation { name = "variant"; version = "v8.0.0"; diff --git a/templates/ctl-scaffold/spago.dhall b/templates/ctl-scaffold/spago.dhall index b25547240..3d2677eb4 100644 --- a/templates/ctl-scaffold/spago.dhall +++ b/templates/ctl-scaffold/spago.dhall @@ -8,6 +8,11 @@ You can edit this file as you like. , "bytearrays" , "cardano-hd-wallet" , "cardano-plutus-data-schema" + , "cardano-collateral-select" + , "cardano-key-wallet" + , "cardano-message-signing" + , "cip30-mock" + , "uplc-apply-args" , "cardano-serialization-lib" , "cardano-transaction-lib" , "cardano-types" From d17bbb30b49287018d8d00b9cfd9aa6ee07cce0c Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 19 Jul 2024 19:51:16 +0400 Subject: [PATCH 305/373] Fix broken link --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98ebffd7d..bb4f221af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,7 +93,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.Transaction.mkUnbalancedTx` now returns a tuple: a transaction and its used UTxOs. - `Contract.Transaction.balanceTx` accepts two extra argument: a list of used UTxOs (set to `Data.Map.empty` if none of them are coming from the outside of the wallet) and balancer constraints (set to `mempty` if not needed) -- Default synchronization parameters: all [wallet <-> query layer synchronization primitives](./doc/query-layer.md) are now off by default. The reason is that the runtime overhead made the users unhappy and it was not worth it for most of the users. If your dApp sends transactions in quick succession, consider enabling the synchronization again. +- Default synchronization parameters: all [wallet <-> query layer synchronization primitives](./doc/query-layers.md) are now off by default. The reason is that the runtime overhead made the users unhappy and it was not worth it for most of the users. If your dApp sends transactions in quick succession, consider enabling the synchronization again. - `BalanceTxConstraintsBuilder` has been renamed to `BalancerConstraints`. It is still available under the old name as a type synonym. ### Fixed From 4781fd5b23bc9199ec2431b7fd9330ea64e1a514 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Sat, 20 Jul 2024 18:41:14 +0200 Subject: [PATCH 306/373] Bump cardano-node to v9.0.0, Fix arion Arion should use docker-compose v2, otherwise we get: TypeError: kwargs_from_env() got an unexpected keyword argument 'ssl_version'. See https://github.com/hercules-ci/arion/issues/230 and https://github.com/NixOS/nixpkgs/pull/325802. --- flake.lock | 33787 ++++++++++++++++++++++++++++++++++------------ flake.nix | 25 +- nix/runtime.nix | 1 - 3 files changed, 25260 insertions(+), 8553 deletions(-) diff --git a/flake.lock b/flake.lock index 1cb6b4e5d..7da529812 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,181 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1718790880, - "narHash": "sha256-8lIMAxIBYRVs4uQXVnmWT3N5SND5zE2s1t9/chn7DX8=", + "lastModified": 1721391352, + "narHash": "sha256-scqGnAT3tofRQUb9av5+lhGnpK03HzSKMmKk80wDb2A=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "5ba8c1a3835b87954354757f2aa6611174067165", + "rev": "ef6499225aab60d39690732fac110377ff8b8324", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_10": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_11": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_12": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_13": { + "flake": false, + "locked": { + "lastModified": 1714517469, + "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_14": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_15": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_16": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_17": { + "flake": false, + "locked": { + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_18": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_19": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -34,6 +204,23 @@ "type": "github" } }, + "CHaP_20": { + "flake": false, + "locked": { + "lastModified": 1694601145, + "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "e8298604717dbaa311c1e42e021b571670f4b039", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, "CHaP_3": { "flake": false, "locked": { @@ -71,11 +258,28 @@ "CHaP_5": { "flake": false, "locked": { - "lastModified": 1686070892, - "narHash": "sha256-0yAYqvCg2/aby4AmW0QQK9RKnU1siQczfbUC6hOU02w=", + "lastModified": 1719971647, + "narHash": "sha256-Q/u1ZklzmymTSSY6/F48rGsWewVYf108torqR9+nFJU=", + "owner": "intersectmbo", + "repo": "cardano-haskell-packages", + "rev": "bfd6987c14410757c6cde47e6c45621e9664347f", + "type": "github" + }, + "original": { + "owner": "intersectmbo", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_6": { + "flake": false, + "locked": { + "lastModified": 1714517469, + "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "596cf203a0a1ba252a083a79d384325000faeb49", + "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", "type": "github" }, "original": { @@ -85,14 +289,48 @@ "type": "github" } }, - "CHaP_6": { + "CHaP_7": { "flake": false, "locked": { - "lastModified": 1694601145, - "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", + "lastModified": 1713778255, + "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "e8298604717dbaa311c1e42e021b571670f4b039", + "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_8": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_9": { + "flake": false, + "locked": { + "lastModified": 1703398734, + "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "owner": "input-output-hk", + "repo": "cardano-haskell-packages", + "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", "type": "github" }, "original": { @@ -150,7 +388,7 @@ "type": "github" } }, - "HTTP_2": { + "HTTP_12": { "flake": false, "locked": { "lastModified": 1451647621, @@ -166,7 +404,7 @@ "type": "github" } }, - "HTTP_3": { + "HTTP_13": { "flake": false, "locked": { "lastModified": 1451647621, @@ -182,7 +420,7 @@ "type": "github" } }, - "HTTP_4": { + "HTTP_14": { "flake": false, "locked": { "lastModified": 1451647621, @@ -198,7 +436,7 @@ "type": "github" } }, - "HTTP_5": { + "HTTP_15": { "flake": false, "locked": { "lastModified": 1451647621, @@ -214,7 +452,7 @@ "type": "github" } }, - "HTTP_6": { + "HTTP_16": { "flake": false, "locked": { "lastModified": 1451647621, @@ -230,7 +468,7 @@ "type": "github" } }, - "HTTP_7": { + "HTTP_17": { "flake": false, "locked": { "lastModified": 1451647621, @@ -246,7 +484,7 @@ "type": "github" } }, - "HTTP_8": { + "HTTP_18": { "flake": false, "locked": { "lastModified": 1451647621, @@ -262,7 +500,7 @@ "type": "github" } }, - "HTTP_9": { + "HTTP_19": { "flake": false, "locked": { "lastModified": 1451647621, @@ -278,54 +516,278 @@ "type": "github" } }, - "agenix": { - "inputs": { - "nixpkgs": "nixpkgs_37" - }, + "HTTP_2": { + "flake": false, "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix-cli": { - "inputs": { - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_38" - }, + "HTTP_20": { + "flake": false, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", "type": "github" }, "original": { - "owner": "cole-h", - "repo": "agenix-cli", + "owner": "phadej", + "repo": "HTTP", "type": "github" } }, - "agenix-cli_2": { - "inputs": { - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_40" - }, + "HTTP_21": { + "flake": false, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_22": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_23": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_24": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_25": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_3": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_4": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_5": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_6": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_7": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_8": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_9": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "agenix": { + "inputs": { + "nixpkgs": "nixpkgs_38" + }, + "locked": { + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "type": "github" + }, + "original": { + "owner": "ryantm", + "repo": "agenix", + "type": "github" + } + }, + "agenix-cli": { + "inputs": { + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_39" + }, + "locked": { + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "type": "github" + }, + "original": { + "owner": "cole-h", + "repo": "agenix-cli", + "type": "github" + } + }, + "agenix-cli_2": { + "inputs": { + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_41" + }, + "locked": { + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { @@ -337,7 +799,7 @@ "agenix-cli_3": { "inputs": { "flake-utils": "flake-utils_33", - "nixpkgs": "nixpkgs_69" + "nixpkgs": "nixpkgs_70" }, "locked": { "lastModified": 1641404293, @@ -355,7 +817,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_39" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -448,7 +910,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_68" + "nixpkgs": "nixpkgs_69" }, "locked": { "lastModified": 1641576265, @@ -516,7 +978,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_63" + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1646360966, @@ -726,7 +1188,7 @@ "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_5", + "blank": "blank_6", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", @@ -734,14 +1196,14 @@ "hydra": "hydra_7", "n2c": "n2c_5", "nix": "nix_10", - "nixpkgs": "nixpkgs_57", + "nixpkgs": "nixpkgs_58", "nixpkgs-docker": "nixpkgs-docker", "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", "ops-lib": "ops-lib_5", "ragenix": "ragenix_3", - "std": "std_5", + "std": "std_6", "terranix": "terranix_3", "utils": "utils_17" }, @@ -821,12 +1283,12 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_6", + "blank": "blank_7", "deploy": "deploy", "fenix": "fenix_4", "hydra": "hydra_6", "nix": "nix_7", - "nixpkgs": "nixpkgs_43", + "nixpkgs": "nixpkgs_44", "nixpkgs-unstable": "nixpkgs-unstable_7", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", @@ -855,12 +1317,12 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_7", + "blank": "blank_8", "deploy": "deploy_3", "fenix": "fenix_8", "hydra": "hydra_8", "nix": "nix_14", - "nixpkgs": "nixpkgs_72", + "nixpkgs": "nixpkgs_73", "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", @@ -990,25 +1452,59 @@ "type": "github" } }, - "blockfrost": { - "inputs": { - "nixpkgs": "nixpkgs" - }, + "blank_8": { "locked": { - "lastModified": 1693412637, - "narHash": "sha256-uA2U7ZCdWv2Rxmi10uaMNNw8tiMbgcu2nnO6NTNp3VE=", - "owner": "blockfrost", - "repo": "blockfrost-backend-ryo", - "rev": "8d455ab1f710b7bd27d2aa87c82f0c5129101647", - "type": "github" - }, - "original": { - "owner": "blockfrost", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blockfrost": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1693412637, + "narHash": "sha256-uA2U7ZCdWv2Rxmi10uaMNNw8tiMbgcu2nnO6NTNp3VE=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "8d455ab1f710b7bd27d2aa87c82f0c5129101647", + "type": "github" + }, + "original": { + "owner": "blockfrost", "ref": "v1.7.0", "repo": "blockfrost-backend-ryo", "type": "github" } }, + "blockfrost_2": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1716466734, + "narHash": "sha256-h1LdfN/2KlD/XRjgj7rDNRInxSKZCOx6OF4jak/3c/E=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "7204204615be69b2f298ddf11f9a23dbbb184e55", + "type": "github" + }, + "original": { + "owner": "blockfrost", + "ref": "v2.0.3", + "repo": "blockfrost-backend-ryo", + "type": "github" + } + }, "blst": { "flake": false, "locked": { @@ -1026,24 +1522,24 @@ "type": "github" } }, - "blst_2": { + "blst_10": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", "owner": "supranational", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { "owner": "supranational", + "ref": "v0.3.11", "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "blst_3": { + "blst_11": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1060,7 +1556,7 @@ "type": "github" } }, - "blst_4": { + "blst_12": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1077,7 +1573,41 @@ "type": "github" } }, - "blst_5": { + "blst_13": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_14": { + "flake": false, + "locked": { + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "type": "github" + }, + "original": { + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", + "type": "github" + } + }, + "blst_15": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1094,7 +1624,7 @@ "type": "github" } }, - "blst_6": { + "blst_16": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1111,7 +1641,7 @@ "type": "github" } }, - "blst_7": { + "blst_17": { "flake": false, "locked": { "lastModified": 1691598027, @@ -1128,13914 +1658,30061 @@ "type": "github" } }, - "byron-chain": { + "blst_18": { "flake": false, "locked": { - "lastModified": 1557232434, - "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32": { + "blst_19": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32_10": { + "blst_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32_11": { + "blst_20": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cabal-32_2": { + "blst_21": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cabal-32_3": { + "blst_22": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cabal-32_4": { + "blst_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32_5": { + "blst_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32_6": { + "blst_5": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32_7": { + "blst_6": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cabal-32_8": { + "blst_7": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1691598027, + "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "owner": "supranational", + "repo": "blst", + "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "ref": "v0.3.11", + "repo": "blst", "type": "github" } }, - "cabal-32_9": { + "blst_8": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-34": { + "blst_9": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-34_10": { + "byron-chain": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-34_11": { + "cabal-32": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_2": { + "cabal-32_10": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_3": { + "cabal-32_11": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_4": { + "cabal-32_12": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_5": { + "cabal-32_13": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_6": { + "cabal-32_14": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_7": { + "cabal-32_15": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_8": { + "cabal-32_16": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-34_9": { + "cabal-32_17": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36": { + "cabal-32_18": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_10": { + "cabal-32_19": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_11": { + "cabal-32_2": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_2": { + "cabal-32_20": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_3": { + "cabal-32_21": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_4": { + "cabal-32_22": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_5": { + "cabal-32_23": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_6": { + "cabal-32_24": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_7": { + "cabal-32_25": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_8": { + "cabal-32_3": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "cabal-36_9": { + "cabal-32_4": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.6", + "ref": "3.2", "repo": "cabal", "type": "github" } }, - "capkgs": { + "cabal-32_5": { + "flake": false, "locked": { - "lastModified": 1697123727, - "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", - "owner": "input-output-hk", - "repo": "capkgs", - "rev": "b197e225592dfe38afb80c94b628d99968c0541d", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "capkgs", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "capsules": { - "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_51", - "ragenix": "ragenix_2" - }, + "cabal-32_6": { + "flake": false, "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "capsules_2": { - "inputs": { - "bitte": "bitte_3", - "iogo": "iogo_2", - "nixpkgs": "nixpkgs_80", - "ragenix": "ragenix_5" - }, + "cabal-32_7": { + "flake": false, "locked": { - "lastModified": 1659466315, - "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-automation": { - "inputs": { - "flake-utils": "flake-utils_4", - "haskellNix": [ - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "tullia": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia" - ] - }, + "cabal-32_8": { + "flake": false, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-automation_2": { - "inputs": { - "flake-utils": "flake-utils_9", - "haskellNix": [ - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "tullia": "tullia_2" - }, + "cabal-32_9": { + "flake": false, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "cardano-automation_3": { - "inputs": { - "flake-utils": "flake-utils_16", - "haskellNix": [ - "cardano-node", - "haskellNix" - ], - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "tullia": [ - "cardano-node", - "tullia" - ] - }, + "cabal-34": { + "flake": false, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-configurations": { + "cabal-34_10": { "flake": false, "locked": { - "lastModified": 1699561895, - "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-configurations-8.1.1": { + "cabal-34_11": { "flake": false, "locked": { - "lastModified": 1692193634, - "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-configurations-8.7.3": { + "cabal-34_12": { "flake": false, "locked": { - "lastModified": 1702085095, - "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-db-sync": { - "inputs": { - "CHaP": "CHaP_2", - "cardano-parts": "cardano-parts", - "flake-compat": "flake-compat_4", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "iohkNix": "iohkNix", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils" - }, + "cabal-34_13": { + "flake": false, "locked": { - "lastModified": 1707925775, - "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", - "owner": "intersectmbo", - "repo": "cardano-db-sync", - "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "13.2.0.1", - "repo": "cardano-db-sync", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-db-sync-schema": { + "cabal-34_14": { "flake": false, "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.1.3", - "repo": "cardano-db-sync", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-db-sync-schema-ng": { + "cabal-34_15": { "flake": false, "locked": { - "lastModified": 1694078776, - "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "sancho-1-1-0", - "repo": "cardano-db-sync", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-db-sync-service": { + "cabal-34_16": { "flake": false, "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.1.3", - "repo": "cardano-db-sync", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-explorer-app": { + "cabal-34_17": { "flake": false, "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", - "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-graphql": { + "cabal-34_18": { "flake": false, "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", - "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-graphql", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_14" - }, + "cabal-34_19": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_24" - }, + "cabal-34_2": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_30" - }, + "cabal-34_20": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-nix": { - "inputs": { - "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", - "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", - "cardano-db-sync": "cardano-db-sync", - "cardano-node-8.1.1": "cardano-node-8.1.1", - "cardano-node-8.7.3": "cardano-node-8.7.3", - "devour-flake": "devour-flake", - "devshell": "devshell_4", - "flake-parts": "flake-parts_5", - "flake-root": "flake-root", - "hercules-ci-effects": "hercules-ci-effects", - "nixpkgs": [ - "nixpkgs" - ], - "pre-commit-hooks-nix": "pre-commit-hooks-nix", - "treefmt-nix": "treefmt-nix_3" + "cabal-34_21": { + "flake": false, + "locked": { + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "type": "github" }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34_22": { + "flake": false, "locked": { - "lastModified": 1717782115, - "narHash": "sha256-RfG3Z7Ph8UDQUsTAfGJ3lbLZK5W9p2i9iyceBJISb5Q=", - "owner": "mlabs-haskell", - "repo": "cardano.nix", - "rev": "f641fb662d17d38a2d7ca543966d36f39c9a6cba", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "cardano.nix", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_5", - "cardano-automation": "cardano-automation_3", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "customConfig": "customConfig_3", - "em": "em_3", - "empty-flake": "empty-flake_4", - "flake-compat": "flake-compat_14", - "hackageNix": "hackageNix_4", - "haskellNix": "haskellNix_4", - "hostNixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_4", - "nix2container": "nix2container_5", - "nixpkgs": [ - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_3", - "std": [ - "cardano-node", - "tullia", - "std" - ], - "tullia": "tullia_3", - "utils": "utils_7" + "cabal-34_23": { + "flake": false, + "locked": { + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "type": "github" }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34_24": { + "flake": false, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "8.1.1", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-8.1.1": { - "inputs": { - "CHaP": "CHaP_3", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake_2", - "flake-compat": "flake-compat_6", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_2", - "hostNixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "iohkNix": "iohkNix_2", - "nix2container": "nix2container", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib", - "std": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std" - ], - "tullia": "tullia", - "utils": "utils_3" - }, + "cabal-34_25": { + "flake": false, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.1.1", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-8.7.3": { - "inputs": { - "CHaP": "CHaP_4", - "cardano-automation": "cardano-automation_2", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "customConfig": "customConfig_2", - "em": "em_2", - "empty-flake": "empty-flake_3", - "flake-compat": "flake-compat_10", - "hackageNix": "hackageNix_3", - "haskellNix": "haskellNix_3", - "hostNixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "iohkNix": "iohkNix_3", - "nix2container": "nix2container_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_2", - "std": "std_3", - "utils": "utils_5" - }, + "cabal-34_3": { + "flake": false, "locked": { - "lastModified": 1702654749, - "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.7.3", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node-service": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1690209950, - "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "8.1.2", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-node_2": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-parts": { - "inputs": { - "auth-keys-hub": "auth-keys-hub", - "capkgs": "capkgs", - "cardano-db-sync-schema": "cardano-db-sync-schema", - "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", - "cardano-db-sync-service": "cardano-db-sync-service", - "cardano-node-service": "cardano-node-service", - "cardano-wallet-service": "cardano-wallet-service", - "colmena": "colmena", - "empty-flake": "empty-flake", - "flake-parts": "flake-parts_3", - "haskell-nix": "haskell-nix", - "inputs-check": "inputs-check", - "iohk-nix": "iohk-nix", - "iohk-nix-ng": "iohk-nix-ng", - "nix": "nix_2", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "nixpkgs-unstable": "nixpkgs-unstable_2", - "offchain-metadata-tools-service": "offchain-metadata-tools-service", - "sops-nix": "sops-nix", - "terraform-providers": "terraform-providers", - "terranix": "terranix", - "treefmt-nix": "treefmt-nix_2" - }, + "cabal-34_6": { + "flake": false, "locked": { - "lastModified": 1697147999, - "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", - "owner": "input-output-hk", - "repo": "cardano-parts", - "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-parts", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_10": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_11": { + "cabal-34_9": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "cardano-shell_2": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_3": { + "cabal-36_10": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_4": { + "cabal-36_11": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_5": { + "cabal-36_12": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_6": { + "cabal-36_13": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_7": { + "cabal-36_14": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_8": { + "cabal-36_15": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-shell_9": { + "cabal-36_16": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-wallet": { - "inputs": { - "customConfig": "customConfig_4", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_21", - "flake-utils": "flake-utils_40", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "nixpkgs-unstable" - ] - }, + "cabal-36_17": { + "flake": false, "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-wallet-service": { + "cabal-36_18": { "flake": false, "locked": { - "lastModified": 1689751896, - "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", - "owner": "cardano-foundation", - "repo": "cardano-wallet", - "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "cardano-foundation", - "ref": "v2023-07-18", - "repo": "cardano-wallet", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cardano-world": { - "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ - "db-sync" - ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node_2", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_22", - "hackage": "hackage_4", - "haskell-nix": "haskell-nix_3", - "iohk-nix": "iohk-nix_2", - "n2c": "n2c_6", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_91", - "nixpkgs-haskell": [ - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios", - "std": "std_6", - "tullia": "tullia_4" - }, + "cabal-36_19": { + "flake": false, "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", - "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-world", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "cicero": { - "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_12", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix_2", - "inclusive": "inclusive_9", - "nix": "nix_13", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_67", - "poetry2nix": "poetry2nix", - "utils": "utils_21" - }, + "cabal-36_2": { + "flake": false, "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", - "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cicero", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "colmena": { - "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "nixpkgs" - ], - "stable": "stable" - }, + "cabal-36_20": { + "flake": false, "locked": { - "lastModified": 1684127108, - "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", - "owner": "zhaofengli", - "repo": "colmena", - "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "zhaofengli", - "ref": "v0.4.0", - "repo": "colmena", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "crane": { - "inputs": { - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_14", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ], - "rust-overlay": "rust-overlay" - }, + "cabal-36_21": { + "flake": false, "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "ipetkov", - "repo": "crane", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "crystal": { - "inputs": { - "ameba-src": "ameba-src", - "bdwgc-src": "bdwgc-src", - "crystal-aarch64-darwin": "crystal-aarch64-darwin", - "crystal-src": "crystal-src", - "crystal-x86_64-darwin": "crystal-x86_64-darwin", - "crystal-x86_64-linux": "crystal-x86_64-linux", - "crystalline-src": "crystalline-src", - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_2" - }, + "cabal-36_22": { + "flake": false, "locked": { - "lastModified": 1683429373, - "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", - "owner": "manveru", - "repo": "crystal-flake", - "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "manveru", - "repo": "crystal-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "crystal-aarch64-darwin": { + "cabal-36_23": { "flake": false, "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" } }, - "crystal-src": { + "cabal-36_24": { "flake": false, "locked": { - "lastModified": 1681995387, - "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", - "owner": "crystal-lang", - "repo": "crystal", - "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "crystal-lang", - "ref": "1.8.1", - "repo": "crystal", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "crystal-x86_64-darwin": { + "cabal-36_25": { "flake": false, "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" } }, - "crystal-x86_64-linux": { + "cabal-36_3": { "flake": false, "locked": { - "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" } }, - "crystalline-src": { + "cabal-36_4": { "flake": false, "locked": { - "lastModified": 1681549124, - "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", - "owner": "elbywan", - "repo": "crystalline", - "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "elbywan", - "ref": "v0.9.0", - "repo": "crystalline", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig": { + "cabal-36_5": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_2": { + "cabal-36_6": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_3": { + "cabal-36_7": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_4": { + "cabal-36_8": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "customConfig_5": { + "cabal-36_9": { + "flake": false, "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" }, "original": { - "path": "./custom-config", - "type": "path" + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" } }, - "data-merge": { - "inputs": { - "nixlib": "nixlib", - "yants": "yants_5" - }, + "call-flake": { "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "lastModified": 1687380775, + "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", + "repo": "call-flake", + "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", "type": "github" }, "original": { "owner": "divnix", - "repo": "data-merge", + "repo": "call-flake", "type": "github" } }, - "data-merge_2": { - "inputs": { - "nixlib": "nixlib_2" - }, + "capkgs": { "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", + "lastModified": 1697123727, + "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", + "owner": "input-output-hk", + "repo": "capkgs", + "rev": "b197e225592dfe38afb80c94b628d99968c0541d", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "capkgs", "type": "github" } }, - "data-merge_3": { + "capsules": { "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_7" + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_52", + "ragenix": "ragenix_2" }, "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "db-sync": { + "capsules_2": { "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_23", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "nixpkgs": [ - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_28" + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_81", + "ragenix": "ragenix_5" }, "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "13.1.0.0", - "repo": "cardano-db-sync", + "repo": "devshell-capsules", "type": "github" } }, - "deploy": { + "cardano-automation": { "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_17", + "flake-utils": "flake-utils_4", + "haskellNix": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix" + ], "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", + "cardano-nix", + "cardano-node-8.1.1", "nixpkgs" ], - "utils": "utils_8" + "tullia": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia" + ] }, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "cardano-automation", "type": "github" } }, - "deploy_2": { + "cardano-automation_2": { "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_18", + "flake-utils": "flake-utils_9", + "haskellNix": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix" + ], "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", + "cardano-nix", + "cardano-node-8.7.3", "nixpkgs" ], - "utils": "utils_14" + "tullia": "tullia_2" }, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "cardano-automation", "type": "github" } }, - "deploy_3": { + "cardano-automation_3": { "inputs": { - "fenix": "fenix_7", - "flake-compat": "flake-compat_19", + "flake-utils": "flake-utils_16", + "haskellNix": [ + "cardano-node", + "haskellNix" + ], "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", + "cardano-node", "nixpkgs" ], - "utils": "utils_22" + "tullia": "tullia_3" }, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "cardano-automation", "type": "github" } }, - "devour-flake": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1709858306, - "narHash": "sha256-Vey9n9hIlWiSAZ6CCTpkrL6jt4r2JvT2ik9wa2bjeC0=", - "owner": "srid", - "repo": "devour-flake", - "rev": "17b711b9deadbbc5629cb7d2b64cf86ae72af3fa", + "lastModified": 1720834069, + "narHash": "sha256-jWFjTUTpwAgvsSJsQ4INgKl/paR489n1si35GLtSkuU=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" }, "original": { - "owner": "srid", - "repo": "devour-flake", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, + "cardano-configurations-8.1.1": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1692193634, + "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" } }, - "devshell_10": { + "cardano-configurations-8.7.3": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1702085095, + "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" } }, - "devshell_11": { + "cardano-db-sync": { "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], + "CHaP": "CHaP_2", + "cardano-parts": "cardano-parts", + "flake-compat": "flake-compat_4", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "iohkNix": "iohkNix", "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils" }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1707925775, + "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", + "owner": "intersectmbo", + "repo": "cardano-db-sync", + "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "intersectmbo", + "ref": "13.2.0.1", + "repo": "cardano-db-sync", "type": "github" } }, - "devshell_12": { - "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_64" - }, + "cardano-db-sync-schema": { + "flake": false, "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "devshell_13": { + "cardano-db-sync-schema-ng": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1694078776, + "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "sancho-1-1-0", + "repo": "cardano-db-sync", "type": "github" } }, - "devshell_14": { + "cardano-db-sync-service": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "devshell_15": { + "cardano-explorer-app": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "devshell_16": { + "cardano-graphql": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-graphql", "type": "github" } }, - "devshell_17": { + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_15" + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "devshell_18": { + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_25" + }, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "devshell_19": { + "cardano-mainnet-mirror_3": { "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_34" }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "devshell_2": { + "cardano-nix": { "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], + "blockfrost": "blockfrost_2", + "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", + "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", + "cardano-db-sync": "cardano-db-sync", + "cardano-node-8.1.1": "cardano-node-8.1.1", + "cardano-node-8.7.3": "cardano-node-8.7.3", + "devour-flake": "devour-flake", + "devshell": "devshell_4", + "flake-parts": "flake-parts_5", + "flake-root": "flake-root", + "hercules-ci-effects": "hercules-ci-effects", "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", "nixpkgs" - ] + ], + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1721488215, + "narHash": "sha256-FWNozULI4EFXvcOjXdIFazSh3rsiDKK46JkgZKLS9qc=", + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "rev": "ee593df780086cb158ffa4bda046a0797b409059", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "mlabs-haskell", + "ref": "dshuiski/ogmios-v6.5.0", + "repo": "cardano.nix", "type": "github" } }, - "devshell_20": { + "cardano-node": { "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": [ - "db-sync", - "cardano-world", - "tullia", - "std", + "CHaP": "CHaP_5", + "cardano-automation": "cardano-automation_3", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "customConfig": "customConfig_3", + "em": "em_3", + "empty-flake": "empty-flake_4", + "flake-compat": "flake-compat_15", + "hackageNix": "hackageNix_4", + "haskellNix": "haskellNix_4", + "hostNixpkgs": [ + "cardano-node", "nixpkgs" - ] + ], + "iohkNix": "iohkNix_4", + "nix2container": "nix2container_6", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_3", + "std": "std_5", + "utils": "utils_7" }, "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "lastModified": 1720029730, + "narHash": "sha256-ESE5/7XzXeIZldkYPbMd8CoMKQo9ghY1vOkhHpOj0K4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "2820a63dc934c6d5b5f450b6c2543b81c6476696", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "9.0.0", + "repo": "cardano-node", "type": "github" } }, - "devshell_3": { + "cardano-node-8.1.1": { "inputs": { - "nixpkgs": [ + "CHaP": "CHaP_3", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake_2", + "flake-compat": "flake-compat_6", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ "cardano-nix", - "cardano-node-8.7.3", - "std", + "cardano-node-8.1.1", "nixpkgs" ], - "systems": "systems_2" + "iohkNix": "iohkNix_2", + "nix2container": "nix2container", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_3" }, "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", - "owner": "numtide", - "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "intersectmbo", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "devshell_4": { + "cardano-node-8.7.3": { "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": [ + "CHaP": "CHaP_4", + "cardano-automation": "cardano-automation_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "customConfig": "customConfig_2", + "em": "em_2", + "empty-flake": "empty-flake_3", + "flake-compat": "flake-compat_10", + "hackageNix": "hackageNix_3", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ "cardano-nix", + "cardano-node-8.7.3", "nixpkgs" - ] + ], + "iohkNix": "iohkNix_3", + "nix2container": "nix2container_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_2", + "std": "std_3", + "utils": "utils_5" }, "locked": { - "lastModified": 1713532798, - "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", - "owner": "numtide", - "repo": "devshell", - "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", + "lastModified": 1702654749, + "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "intersectmbo", + "ref": "8.7.3", + "repo": "cardano-node", "type": "github" } }, - "devshell_5": { - "inputs": { - "flake-utils": [ - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "cardano-node-service": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1690209950, + "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "8.1.2", + "repo": "cardano-node", "type": "github" } }, - "devshell_6": { + "cardano-node_2": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "devshell_7": { + "cardano-parts": { + "inputs": { + "auth-keys-hub": "auth-keys-hub", + "capkgs": "capkgs", + "cardano-db-sync-schema": "cardano-db-sync-schema", + "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", + "cardano-db-sync-service": "cardano-db-sync-service", + "cardano-node-service": "cardano-node-service", + "cardano-wallet-service": "cardano-wallet-service", + "colmena": "colmena", + "empty-flake": "empty-flake", + "flake-parts": "flake-parts_3", + "haskell-nix": "haskell-nix", + "inputs-check": "inputs-check", + "iohk-nix": "iohk-nix", + "iohk-nix-ng": "iohk-nix-ng", + "nix": "nix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "nixpkgs-unstable": "nixpkgs-unstable_2", + "offchain-metadata-tools-service": "offchain-metadata-tools-service", + "sops-nix": "sops-nix", + "terraform-providers": "terraform-providers", + "terranix": "terranix", + "treefmt-nix": "treefmt-nix_2" + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1697147999, + "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", + "owner": "input-output-hk", + "repo": "cardano-parts", + "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-parts", "type": "github" } }, - "devshell_8": { + "cardano-shell": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_9": { + "cardano-shell_10": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "yants" - ] - }, + "cardano-shell_11": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_2": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "cardano-shell_12": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_3": { - "inputs": { - "haumea": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea" - ], - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ], - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, + "cardano-shell_13": { + "flake": false, "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_4": { - "inputs": { - "nixlib": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-node", - "tullia", - "std", - "yants" - ] - }, + "cardano-shell_14": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_5": { - "inputs": { - "nixlib": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] - }, + "cardano-shell_15": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "dmerge_6": { - "inputs": { - "nixlib": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "db-sync", - "cardano-world", - "std", - "yants" - ] - }, + "cardano-shell_16": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "driver": { - "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_7", - "nix": "nix_12", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_18" - }, + "cardano-shell_17": { + "flake": false, "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "repo": "cardano-shell", "type": "github" } }, - "easy-purescript-nix": { + "cardano-shell_18": { "flake": false, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "em": { + "cardano-shell_19": { "flake": false, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "em_2": { + "cardano-shell_2": { "flake": false, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "em_3": { + "cardano-shell_20": { "flake": false, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "ema": { - "inputs": { - "flake-compat": "flake-compat_20", - "flake-utils": "flake-utils_37", - "nixpkgs": "nixpkgs_82", - "pre-commit-hooks": "pre-commit-hooks" - }, + "cardano-shell_21": { + "flake": false, "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "srid", - "repo": "ema", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "ema_2": { + "cardano-shell_22": { "flake": false, "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", - "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "srid", - "ref": "multisite", - "repo": "ema", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "emanote": { - "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts_6", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_85", - "tailwind-haskell": "tailwind-haskell" - }, + "cardano-shell_23": { + "flake": false, "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "srid", - "repo": "emanote", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "empty-flake": { + "cardano-shell_24": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-shell", "type": "github" } }, - "empty-flake_2": { + "cardano-shell_25": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-shell", "type": "github" } }, - "empty-flake_3": { + "cardano-shell_3": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-shell", "type": "github" } }, - "empty-flake_4": { + "cardano-shell_4": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "cardano-shell", "type": "github" } }, - "fenix": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "auth-keys-hub", - "statix", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, + "cardano-shell_5": { + "flake": false, "locked": { - "lastModified": 1645251813, - "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", - "owner": "nix-community", - "repo": "fenix", - "rev": "9892337b588c38ec59466a1c89befce464aae7f8", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "fenix_2": { - "inputs": { - "nixpkgs": "nixpkgs_29", - "rust-analyzer-src": "rust-analyzer-src_2" - }, + "cardano-shell_6": { + "flake": false, "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "fenix_3": { - "inputs": { - "nixpkgs": "nixpkgs_41", - "rust-analyzer-src": "rust-analyzer-src_3" - }, + "cardano-shell_7": { + "flake": false, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "fenix_4": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_4" - }, + "cardano-shell_8": { + "flake": false, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "fenix_5": { - "inputs": { - "nixpkgs": "nixpkgs_54", - "rust-analyzer-src": "rust-analyzer-src_5" - }, + "cardano-shell_9": { + "flake": false, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "fenix_6": { + "cardano-wallet": { "inputs": { + "customConfig": "customConfig_4", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_40", + "haskellNix": "haskellNix_5", + "hostNixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix_5", "nixpkgs": [ "db-sync", "cardano-world", - "bitte", + "cardano-wallet", + "haskellNix", "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_6" + ] }, "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "fenix_7": { - "inputs": { - "nixpkgs": "nixpkgs_70", - "rust-analyzer-src": "rust-analyzer-src_7" - }, + "cardano-wallet-service": { + "flake": false, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1689751896, + "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", + "owner": "cardano-foundation", + "repo": "cardano-wallet", + "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" + "owner": "cardano-foundation", + "ref": "v2023-07-18", + "repo": "cardano-wallet", + "type": "github" } }, - "fenix_8": { + "cardano-world": { "inputs": { - "nixpkgs": [ + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_22", + "hackage": "hackage_4", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "n2c": "n2c_6", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_92", + "nixpkgs-haskell": [ "db-sync", "cardano-world", - "capsules", - "bitte", + "haskell-nix", "nixpkgs-unstable" ], - "rust-analyzer-src": "rust-analyzer-src_8" + "ogmios": "ogmios", + "std": "std_7", + "tullia": "tullia_4" }, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "flake-compat": { - "flake": false, + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_12", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix_2", + "inclusive": "inclusive_9", + "nix": "nix_13", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_68", + "poetry2nix": "poetry2nix", + "utils": "utils_21" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "cicero", "type": "github" } }, - "flake-compat_10": { - "flake": false, + "colmena": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ], + "stable": "stable" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1684127108, + "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", + "owner": "zhaofengli", + "repo": "colmena", + "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "zhaofengli", + "ref": "v0.4.0", + "repo": "colmena", "type": "github" } }, - "flake-compat_11": { - "flake": false, + "crane": { + "inputs": { + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_14", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "ipetkov", + "repo": "crane", "type": "github" } }, - "flake-compat_12": { - "flake": false, + "crystal": { + "inputs": { + "ameba-src": "ameba-src", + "bdwgc-src": "bdwgc-src", + "crystal-aarch64-darwin": "crystal-aarch64-darwin", + "crystal-src": "crystal-src", + "crystal-x86_64-darwin": "crystal-x86_64-darwin", + "crystal-x86_64-linux": "crystal-x86_64-linux", + "crystalline-src": "crystalline-src", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1683429373, + "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", + "owner": "manveru", + "repo": "crystal-flake", + "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "manveru", + "repo": "crystal-flake", "type": "github" } }, - "flake-compat_13": { + "crystal-aarch64-darwin": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "flake-compat_14": { + "crystal-src": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1681995387, + "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", + "owner": "crystal-lang", + "repo": "crystal", + "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "crystal-lang", + "ref": "1.8.1", + "repo": "crystal", "type": "github" } }, - "flake-compat_15": { + "crystal-x86_64-darwin": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "flake-compat_16": { + "crystal-x86_64-linux": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" + "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" } }, - "flake-compat_17": { + "crystalline-src": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1681549124, + "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", + "owner": "elbywan", + "repo": "crystalline", + "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "elbywan", + "ref": "v0.9.0", + "repo": "crystalline", "type": "github" } }, - "flake-compat_18": { - "flake": false, + "customConfig": { "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-compat_19": { - "flake": false, + "customConfig_2": { "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-compat_2": { - "flake": false, + "customConfig_3": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "empty-flake", "type": "github" } }, - "flake-compat_20": { - "flake": false, + "customConfig_4": { "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-compat_21": { - "flake": false, + "customConfig_5": { "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" }, "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" + "path": "./custom-config", + "type": "path" } }, - "flake-compat_22": { - "flake": false, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants_6" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-compat_23": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-compat_24": { - "flake": false, + "data-merge_3": { + "inputs": { + "nixlib": "nixlib_3", + "yants": "yants_8" + }, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-compat_25": { - "flake": false, + "db-sync": { + "inputs": { + "cardano-world": "cardano-world", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_23", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_28" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "cardano-db-sync", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "ref": "13.1.0.0", + "repo": "cardano-db-sync", "type": "github" } }, - "flake-compat_26": { - "flake": false, + "deploy": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_17", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_8" + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "flake-compat_3": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_18", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_14" + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "flake-compat_4": { - "flake": false, + "deploy_3": { + "inputs": { + "fenix": "fenix_7", + "flake-compat": "flake-compat_19", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_22" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "repo": "deploy-rs", "type": "github" } }, - "flake-compat_5": { + "devour-flake": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1694098737, + "narHash": "sha256-O51F4YFOzlaQAc9b6xjkAqpvrvCtw/Os2M7TU0y4SKQ=", + "owner": "srid", + "repo": "devour-flake", + "rev": "30a34036b29b0d12989ef6c8be77aa949d85aef5", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "srid", + "repo": "devour-flake", "type": "github" } }, - "flake-compat_6": { - "flake": false, + "devshell": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_7": { - "flake": false, + "devshell_10": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_8": { - "flake": false, + "devshell_11": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_9": { - "flake": false, + "devshell_12": { + "inputs": { + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, + "devshell_13": { "locked": { - "lastModified": 1672152762, - "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_2" - }, + "devshell_14": { "locked": { - "lastModified": 1682984683, - "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "86684881e184f41aa322e653880e497b66429f3e", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_3" - }, + "devshell_15": { "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_4" - }, + "devshell_16": { "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_5" - }, + "devshell_17": { "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_6": { - "inputs": { - "nixpkgs": "nixpkgs_84" - }, + "devshell_18": { "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts_7": { + "devshell_19": { "inputs": { - "nixpkgs-lib": [ - "hercules-ci-effects", + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", "nixpkgs" ] }, "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "id": "flake-parts", - "type": "indirect" - } - }, - "flake-root": { - "locked": { - "lastModified": 1713493429, - "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", - "owner": "srid", - "repo": "flake-root", - "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "flake-root", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-utils": { + "devshell_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_10": { + "devshell_20": { + "inputs": { + "flake-utils": "flake-utils_46", + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_11": { + "devshell_3": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "systems": "systems_2" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_12": { + "devshell_4": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ], + "systems": "systems_3" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1695973661, + "narHash": "sha256-BP2H4c42GThPIhERtTpV1yCtwQHYHEKdRu7pjrmQAwo=", "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "repo": "devshell", + "rev": "cd4e2fda3150dd2f689caeac07b7f47df5197c31", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_13": { + "devshell_5": { + "inputs": { + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_14": { + "devshell_6": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_15": { - "inputs": { - "systems": "systems_3" - }, + "devshell_7": { "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_16": { + "devshell_8": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { "owner": "numtide", - "repo": "flake-utils", + "repo": "devshell", "type": "github" } }, - "flake-utils_17": { + "devshell_9": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-utils_18": { + "dmerge": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_19": { + "dmerge_2": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_2": { - "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "dmerge_3": { + "inputs": { + "haumea": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea" + ], + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "flake-utils_20": { + "dmerge_4": { + "inputs": { + "nixlib": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_21": { + "dmerge_5": { + "inputs": { + "haumea": [ + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "cardano-node", + "std", + "lib" + ], + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "flake-utils_22": { + "dmerge_6": { + "inputs": { + "nixlib": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ], + "yants": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_23": { + "dmerge_7": { + "inputs": { + "nixlib": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ], + "yants": [ + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_24": { + "driver": { + "inputs": { + "devshell": "devshell_13", + "inclusive": "inclusive_7", + "nix": "nix_12", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_18" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "flake-utils_25": { + "easy-purescript-nix": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_26": { + "easy-purescript-nix_10": { + "inputs": { + "flake-utils": "flake-utils_78" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_27": { + "easy-purescript-nix_11": { + "inputs": { + "flake-utils": "flake-utils_80" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_28": { + "easy-purescript-nix_12": { + "inputs": { + "flake-utils": "flake-utils_82" + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_29": { + "easy-purescript-nix_13": { + "inputs": { + "flake-utils": "flake-utils_86" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_3": { + "easy-purescript-nix_14": { + "inputs": { + "flake-utils": "flake-utils_92" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_30": { + "easy-purescript-nix_15": { + "inputs": { + "flake-utils": "flake-utils_94" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_31": { + "easy-purescript-nix_16": { + "inputs": { + "flake-utils": "flake-utils_98" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_32": { + "easy-purescript-nix_2": { + "inputs": { + "flake-utils": "flake-utils_48" + }, "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_33": { + "easy-purescript-nix_3": { + "inputs": { + "flake-utils": "flake-utils_50" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_34": { + "easy-purescript-nix_4": { + "inputs": { + "flake-utils": "flake-utils_52" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_35": { + "easy-purescript-nix_5": { + "inputs": { + "flake-utils": "flake-utils_54" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_36": { + "easy-purescript-nix_6": { + "inputs": { + "flake-utils": "flake-utils_58" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_37": { + "easy-purescript-nix_7": { + "inputs": { + "flake-utils": "flake-utils_64" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_38": { + "easy-purescript-nix_8": { + "inputs": { + "flake-utils": "flake-utils_66" + }, "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_39": { + "easy-purescript-nix_9": { + "inputs": { + "flake-utils": "flake-utils_70" + }, "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_4": { + "em": { + "flake": false, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_40": { + "em_2": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_41": { + "em_3": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1685015066, + "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", + "owner": "deepfire", + "repo": "em", + "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_42": { + "ema": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_83", + "pre-commit-hooks": "pre-commit-hooks" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "repo": "ema", "type": "github" } }, - "flake-utils_43": { + "ema_2": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "ref": "multisite", + "repo": "ema", "type": "github" } }, - "flake-utils_44": { - "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", - "type": "github" + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts_6", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_86", + "tailwind-haskell": "tailwind-haskell" }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_45": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "repo": "emanote", "type": "github" } }, - "flake-utils_46": { + "empty-flake": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_47": { + "empty-flake_2": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_48": { + "empty-flake_3": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_5": { + "empty-flake_4": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_6": { + "fenix": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "auth-keys-hub", + "statix", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1645251813, + "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", + "owner": "nix-community", + "repo": "fenix", + "rev": "9892337b588c38ec59466a1c89befce464aae7f8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_7": { + "fenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_30", + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_8": { + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_42", + "rust-analyzer-src": "rust-analyzer-src_3" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_9": { + "fenix_4": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flakeCompat": { - "flake": false, + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_55", + "rust-analyzer-src": "rust-analyzer-src_5" + }, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "follower": { + "fenix_6": { "inputs": { - "devshell": "devshell_14", - "inclusive": "inclusive_8", "nixpkgs": [ "db-sync", "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" + "bitte", + "nixpkgs-unstable" ], - "utils": "utils_19" + "rust-analyzer-src": "rust-analyzer-src_6" }, "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "ghc-8.6.5-iohk": { - "flake": false, + "fenix_7": { + "inputs": { + "nixpkgs": "nixpkgs_71", + "rust-analyzer-src": "rust-analyzer-src_7" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "ghc-8.6.5-iohk_10": { - "flake": false, + "fenix_8": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_8" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "ghc-8.6.5-iohk_11": { + "flake-compat": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_2": { + "flake-compat_10": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_3": { + "flake-compat_11": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_4": { + "flake-compat_12": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_5": { + "flake-compat_13": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_6": { + "flake-compat_14": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_7": { + "flake-compat_15": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_8": { + "flake-compat_16": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_9": { + "flake-compat_17": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc910X": { + "flake-compat_18": { "flake": false, "locked": { - "lastModified": 1714520650, - "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", - "ref": "ghc-9.10", - "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", - "revCount": 62663, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "ghc911": { + "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1714817013, - "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", - "ref": "refs/heads/master", - "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", - "revCount": 62816, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "ghc98X": { + "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" }, "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_2": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" } }, - "ghc99": { + "flake-compat_20": { "flake": false, "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "ghc99_2": { + "flake-compat_21": { "flake": false, "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", + "owner": "input-output-hk", + "repo": "flake-compat", "type": "github" } }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_17", - "utils": "utils_2" - }, + "flake-compat_22": { + "flake": false, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "gomod2nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_21", - "utils": "utils_4" - }, + "flake-compat_23": { + "flake": false, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "gomod2nix_3": { - "inputs": { - "nixpkgs": "nixpkgs_33", - "utils": "utils_6" - }, + "flake-compat_24": { + "flake": false, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage": { + "flake-compat_25": { "flake": false, "locked": { - "lastModified": 1692145451, - "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackage-nix": { + "flake-compat_26": { "flake": false, "locked": { - "lastModified": 1718757495, - "narHash": "sha256-xviuxucDjsQ2HbqzfwVyB4ZmDIyzOnf2oDbVtwBHIco=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "0bb764772a383a926e3f945397a0e59ab3c64d6d", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackageNix": { + "flake-compat_27": { "flake": false, "locked": { - "lastModified": 1702945378, - "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackageNix_2": { + "flake-compat_28": { "flake": false, "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackageNix_3": { + "flake-compat_29": { "flake": false, "locked": { - "lastModified": 1701303758, - "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackageNix_4": { + "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage_2": { + "flake-compat_30": { "flake": false, "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage_3": { + "flake-compat_31": { "flake": false, "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackage_4": { + "flake-compat_32": { "flake": false, "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", - "type": "github" + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_33": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" }, "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_34": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackage_5": { + "flake-compat_35": { "flake": false, "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackage_6": { + "flake-compat_36": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_37": { "flake": false, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskell-flake": { + "flake-compat_38": { + "flake": false, "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "srid", - "repo": "haskell-flake", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "empty-flake" - ] + "flake-compat_39": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "flake": false, "locked": { - "lastModified": 1692147008, - "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_31", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_6", - "nix-tools": "nix-tools", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-unstable": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_5" + "flake-compat_40": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_41": { + "flake": false, "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": [ - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_7" - }, + "flake-compat_42": { + "flake": false, "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-compat": "flake-compat_25", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "ghc910X": "ghc910X", - "ghc911": "ghc911", - "hackage": [ - "hackage-nix" - ], - "hls-1.10": "hls-1.10_6", - "hls-2.0": "hls-2.0_4", - "hls-2.2": "hls-2.2_3", - "hls-2.3": "hls-2.3_3", - "hls-2.4": "hls-2.4_3", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", - "hls-2.7": "hls-2.7", - "hls-2.8": "hls-2.8", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_12", - "iserv-proxy": "iserv-proxy_6", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-2205": "nixpkgs-2205_7", - "nixpkgs-2211": "nixpkgs-2211_6", - "nixpkgs-2305": "nixpkgs-2305_4", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_9" - }, + "flake-compat_43": { + "flake": false, "locked": { - "lastModified": 1718797200, - "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "cb139fa956158397aa398186bb32dd26f7318784", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskell-nix_5": { - "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_11", - "flake-utils": "flake-utils_48", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "hackage": "hackage_6", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_13", - "nix-tools": "nix-tools_5", - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_10" - }, + "flake-compat_44": { + "flake": false, "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ - "cardano-nix", - "cardano-db-sync", - "hackageNix" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0_2", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305_2", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage" - }, + "flake-compat_45": { + "flake": false, "locked": { - "lastModified": 1701053834, - "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": [ - "cardano-nix", - "cardano-node-8.1.1", - "hackageNix" - ], - "hls-1.10": "hls-1.10_3", - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_3", - "iserv-proxy": "iserv-proxy_3", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211_3", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_2" - }, + "flake-compat_46": { + "flake": false, "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-compat": "flake-compat_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "ghc98X": "ghc98X_2", - "ghc99": "ghc99_2", - "hackage": [ - "cardano-nix", - "cardano-node-8.7.3", - "hackageNix" - ], - "hls-1.10": "hls-1.10_4", - "hls-2.0": "hls-2.0_3", - "hls-2.2": "hls-2.2_2", - "hls-2.3": "hls-2.3_2", - "hls-2.4": "hls-2.4_2", - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_4", - "iserv-proxy": "iserv-proxy_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-2211": "nixpkgs-2211_4", - "nixpkgs-2305": "nixpkgs-2305_3", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_3" + "flake-compat_47": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_48": { + "flake": false, "locked": { - "lastModified": 1700441391, - "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "haskellNix_4": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-compat": "flake-compat_15", - "flake-utils": "flake-utils_17", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": [ - "cardano-node", - "hackageNix" - ], - "hls-1.10": "hls-1.10_5", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_5", - "iserv-proxy": "iserv-proxy_5", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-2205": "nixpkgs-2205_5", - "nixpkgs-2211": "nixpkgs-2211_5", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_4" + "flake-compat_49": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { + "flake": false, "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_50": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_51": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_52": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_53": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_54": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_55": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_56": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_6": { + "flake": false, + "locked": { + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_7": { + "flake": false, + "locked": { + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_8": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_9": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1672152762, + "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1682984683, + "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "86684881e184f41aa322e653880e497b66429f3e", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_3" + }, + "locked": { + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_4" + }, + "locked": { + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_5" + }, + "locked": { + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs": "nixpkgs_85" + }, + "locked": { + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "hercules-ci-effects", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-root": { + "locked": { + "lastModified": 1692742795, + "narHash": "sha256-f+Y0YhVCIJ06LemO+3Xx00lIcqQxSKJHXT/yk1RTKxw=", + "owner": "srid", + "repo": "flake-root", + "rev": "d9a70d9c7a5fd7f3258ccf48da9335e9b47c3937", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "flake-root", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_10": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_100": { + "inputs": { + "systems": "systems_59" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_101": { + "inputs": { + "systems": "systems_60" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_102": { + "inputs": { + "systems": "systems_61" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_103": { + "inputs": { + "systems": "systems_62" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_104": { + "inputs": { + "systems": "systems_63" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_105": { + "inputs": { + "systems": "systems_64" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_106": { + "inputs": { + "systems": "systems_65" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_107": { + "inputs": { + "systems": "systems_66" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_11": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_12": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_13": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_14": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_15": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_16": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_17": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_18": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_19": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_20": { + "inputs": { + "systems": "systems_5" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_21": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_22": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_23": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_24": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_25": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_26": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_27": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_28": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_29": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_30": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_31": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_32": { + "locked": { + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_33": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_34": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_35": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_36": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_37": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_38": { + "locked": { + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_39": { + "locked": { + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "type": "github" + }, + "original": { + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_40": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_41": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_42": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_43": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_44": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_45": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_46": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_47": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_48": { + "inputs": { + "systems": "systems_7" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_49": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_50": { + "inputs": { + "systems": "systems_9" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_51": { + "inputs": { + "systems": "systems_10" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_52": { + "inputs": { + "systems": "systems_11" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_53": { + "inputs": { + "systems": "systems_12" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_54": { + "inputs": { + "systems": "systems_13" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_55": { + "inputs": { + "systems": "systems_14" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_56": { + "inputs": { + "systems": "systems_15" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_57": { + "inputs": { + "systems": "systems_16" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_58": { + "inputs": { + "systems": "systems_17" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_59": { + "inputs": { + "systems": "systems_18" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_60": { + "inputs": { + "systems": "systems_19" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_61": { + "inputs": { + "systems": "systems_20" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_62": { + "inputs": { + "systems": "systems_21" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_63": { + "inputs": { + "systems": "systems_22" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_64": { + "inputs": { + "systems": "systems_23" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_65": { + "inputs": { + "systems": "systems_24" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_66": { + "inputs": { + "systems": "systems_25" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_67": { + "inputs": { + "systems": "systems_26" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_68": { + "inputs": { + "systems": "systems_27" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_69": { + "inputs": { + "systems": "systems_28" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_70": { + "inputs": { + "systems": "systems_29" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_71": { + "inputs": { + "systems": "systems_30" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_72": { + "inputs": { + "systems": "systems_31" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_73": { + "inputs": { + "systems": "systems_32" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_74": { + "inputs": { + "systems": "systems_33" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_75": { + "inputs": { + "systems": "systems_34" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_76": { + "inputs": { + "systems": "systems_35" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_77": { + "inputs": { + "systems": "systems_36" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_78": { + "inputs": { + "systems": "systems_37" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_79": { + "inputs": { + "systems": "systems_38" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_8": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_80": { + "inputs": { + "systems": "systems_39" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_81": { + "inputs": { + "systems": "systems_40" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_82": { + "inputs": { + "systems": "systems_41" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_83": { + "inputs": { + "systems": "systems_42" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_84": { + "inputs": { + "systems": "systems_43" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_85": { + "inputs": { + "systems": "systems_44" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_86": { + "inputs": { + "systems": "systems_45" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_87": { + "inputs": { + "systems": "systems_46" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_88": { + "inputs": { + "systems": "systems_47" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_89": { + "inputs": { + "systems": "systems_48" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_90": { + "inputs": { + "systems": "systems_49" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_91": { + "inputs": { + "systems": "systems_50" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_92": { + "inputs": { + "systems": "systems_51" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_93": { + "inputs": { + "systems": "systems_52" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_94": { + "inputs": { + "systems": "systems_53" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_95": { + "inputs": { + "systems": "systems_54" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_96": { + "inputs": { + "systems": "systems_55" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_97": { + "inputs": { + "systems": "systems_56" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_98": { + "inputs": { + "systems": "systems_57" + }, + "locked": { + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_99": { + "inputs": { + "systems": "systems_58" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flakeCompat": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "follower": { + "inputs": { + "devshell": "devshell_14", + "inclusive": "inclusive_8", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_19" + }, + "locked": { + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "ghc-8.6.5-iohk": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_10": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_11": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_12": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_13": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_14": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_15": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_16": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_17": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_18": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_19": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_2": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_20": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_21": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_22": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_23": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_24": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_25": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_4": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_5": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_6": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_7": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_8": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_9": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc910X": { + "flake": false, + "locked": { + "lastModified": 1714520650, + "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", + "ref": "ghc-9.10", + "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", + "revCount": 62663, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_2": { + "flake": false, + "locked": { + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "ref": "ghc-9.10", + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_3": { + "flake": false, + "locked": { + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "ref": "ghc-9.10", + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_4": { + "flake": false, + "locked": { + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_5": { + "flake": false, + "locked": { + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_6": { + "flake": false, + "locked": { + "lastModified": 1713193157, + "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", + "ref": "ghc-9.10", + "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", + "revCount": 62642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_7": { + "flake": false, + "locked": { + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc910X_8": { + "flake": false, + "locked": { + "lastModified": 1711543129, + "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", + "ref": "ghc-9.10", + "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", + "revCount": 62607, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911": { + "flake": false, + "locked": { + "lastModified": 1714817013, + "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", + "ref": "refs/heads/master", + "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", + "revCount": 62816, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_2": { + "flake": false, + "locked": { + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "ref": "refs/heads/master", + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_3": { + "flake": false, + "locked": { + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "ref": "refs/heads/master", + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_4": { + "flake": false, + "locked": { + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_5": { + "flake": false, + "locked": { + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_6": { + "flake": false, + "locked": { + "lastModified": 1713898958, + "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", + "ref": "refs/heads/master", + "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", + "revCount": 62764, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_7": { + "flake": false, + "locked": { + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc911_8": { + "flake": false, + "locked": { + "lastModified": 1711538967, + "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", + "ref": "refs/heads/master", + "rev": "0acfe391583d77a72051d505f05fab0ada056c49", + "revCount": 62632, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_10": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_2": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_3": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_4": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_5": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_6": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_7": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_8": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_9": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_10": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_2": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_3": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_4": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_5": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_6": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_7": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_8": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_9": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_10": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_11": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_12": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_13": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_14": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_15": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_16": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_3": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_4": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_5": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_6": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_7": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_8": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gitignore_9": { + "inputs": { + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_18", + "utils": "utils_2" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_22", + "utils": "utils_4" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_31", + "utils": "utils_6" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "hackage": { + "flake": false, + "locked": { + "lastModified": 1692145451, + "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage-nix": { + "flake": false, + "locked": { + "lastModified": 1721435160, + "narHash": "sha256-CskHvenAQdX0wXtA29Zvk/r1QX2O4Rjja+BhMfDtUP8=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "bb98a9438c4d652601869b92979093cc73503a92", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix": { + "flake": false, + "locked": { + "lastModified": 1702945378, + "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_2": { + "flake": false, + "locked": { + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_3": { + "flake": false, + "locked": { + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_4": { + "flake": false, + "locked": { + "lastModified": 1719794527, + "narHash": "sha256-qHo/KumtwAzPkfLWODu/6EFY/LeK+C7iPJyAUdT8tGA=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "da2a3bc9bd1b3dd41bb147279529c471c615fd3e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_10": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_11": { + "flake": false, + "locked": { + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_12": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_13": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_14": { + "flake": false, + "locked": { + "lastModified": 1714610224, + "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_15": { + "flake": false, + "locked": { + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_16": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_17": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_18": { + "flake": false, + "locked": { + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_19": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_2": { + "flake": false, + "locked": { + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_20": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_3": { + "flake": false, + "locked": { + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_4": { + "flake": false, + "locked": { + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_5": { + "flake": false, + "locked": { + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_6": { + "flake": false, + "locked": { + "lastModified": 1714955666, + "narHash": "sha256-2FHDnM7dK2FH7xGQmcoHbMMP1PGHgKkBmfXC5/LLNVc=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "69a0fce63963cf4299cb24c2a0d2ee0428d227dd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_7": { + "flake": false, + "locked": { + "lastModified": 1714610224, + "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_8": { + "flake": false, + "locked": { + "lastModified": 1713831926, + "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_9": { + "flake": false, + "locked": { + "lastModified": 1703636672, + "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "empty-flake" + ] + }, + "locked": { + "lastModified": 1692147008, + "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_10": { + "inputs": { + "HTTP": "HTTP_16", + "cabal-32": "cabal-32_16", + "cabal-34": "cabal-34_16", + "cabal-36": "cabal-36_16", + "cardano-shell": "cardano-shell_16", + "flake-compat": "flake-compat_34", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", + "ghc910X": "ghc910X_5", + "ghc911": "ghc911_5", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_12", + "hls-2.0": "hls-2.0_11", + "hls-2.2": "hls-2.2_10", + "hls-2.3": "hls-2.3_10", + "hls-2.4": "hls-2.4_10", + "hls-2.5": "hls-2.5_6", + "hls-2.6": "hls-2.6_6", + "hls-2.7": "hls-2.7_6", + "hpc-coveralls": "hpc-coveralls_16", + "hydra": "hydra_18", + "iserv-proxy": "iserv-proxy_12", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_16", + "nixpkgs-2105": "nixpkgs-2105_16", + "nixpkgs-2111": "nixpkgs-2111_16", + "nixpkgs-2205": "nixpkgs-2205_13", + "nixpkgs-2211": "nixpkgs-2211_12", + "nixpkgs-2305": "nixpkgs-2305_11", + "nixpkgs-2311": "nixpkgs-2311_8", + "nixpkgs-unstable": "nixpkgs-unstable_19", + "old-ghc-nix": "old-ghc-nix_16", + "stackage": "stackage_15" + }, + "locked": { + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_11": { + "inputs": { + "HTTP": "HTTP_17", + "cabal-32": "cabal-32_17", + "cabal-34": "cabal-34_17", + "cabal-36": "cabal-36_17", + "cardano-shell": "cardano-shell_17", + "flake-compat": "flake-compat_35", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", + "ghc98X": "ghc98X_5", + "ghc99": "ghc99_5", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_13", + "hls-2.0": "hls-2.0_12", + "hls-2.2": "hls-2.2_11", + "hls-2.3": "hls-2.3_11", + "hls-2.4": "hls-2.4_11", + "hpc-coveralls": "hpc-coveralls_17", + "hydra": "hydra_19", + "iserv-proxy": "iserv-proxy_13", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_17", + "nixpkgs-2105": "nixpkgs-2105_17", + "nixpkgs-2111": "nixpkgs-2111_17", + "nixpkgs-2205": "nixpkgs-2205_14", + "nixpkgs-2211": "nixpkgs-2211_13", + "nixpkgs-2305": "nixpkgs-2305_12", + "nixpkgs-2311": "nixpkgs-2311_9", + "nixpkgs-unstable": "nixpkgs-unstable_20", + "old-ghc-nix": "old-ghc-nix_17", + "stackage": "stackage_16" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_12": { + "inputs": { + "HTTP": "HTTP_18", + "cabal-32": "cabal-32_18", + "cabal-34": "cabal-34_18", + "cabal-36": "cabal-36_18", + "cardano-shell": "cardano-shell_18", + "flake-compat": "flake-compat_37", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", + "ghc98X": "ghc98X_6", + "ghc99": "ghc99_6", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_14", + "hls-2.0": "hls-2.0_13", + "hls-2.2": "hls-2.2_12", + "hls-2.3": "hls-2.3_12", + "hls-2.4": "hls-2.4_12", + "hpc-coveralls": "hpc-coveralls_18", + "hydra": "hydra_20", + "iserv-proxy": "iserv-proxy_14", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_18", + "nixpkgs-2105": "nixpkgs-2105_18", + "nixpkgs-2111": "nixpkgs-2111_18", + "nixpkgs-2205": "nixpkgs-2205_15", + "nixpkgs-2211": "nixpkgs-2211_14", + "nixpkgs-2305": "nixpkgs-2305_13", + "nixpkgs-2311": "nixpkgs-2311_10", + "nixpkgs-unstable": "nixpkgs-unstable_21", + "old-ghc-nix": "old-ghc-nix_18", + "stackage": "stackage_17" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_13": { + "inputs": { + "HTTP": "HTTP_19", + "cabal-32": "cabal-32_19", + "cabal-34": "cabal-34_19", + "cabal-36": "cabal-36_19", + "cardano-shell": "cardano-shell_19", + "flake-compat": "flake-compat_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", + "ghc910X": "ghc910X_6", + "ghc911": "ghc911_6", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_15", + "hls-2.0": "hls-2.0_14", + "hls-2.2": "hls-2.2_13", + "hls-2.3": "hls-2.3_13", + "hls-2.4": "hls-2.4_13", + "hls-2.5": "hls-2.5_7", + "hls-2.6": "hls-2.6_7", + "hls-2.7": "hls-2.7_7", + "hpc-coveralls": "hpc-coveralls_19", + "hydra": "hydra_21", + "iserv-proxy": "iserv-proxy_15", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_19", + "nixpkgs-2105": "nixpkgs-2105_19", + "nixpkgs-2111": "nixpkgs-2111_19", + "nixpkgs-2205": "nixpkgs-2205_16", + "nixpkgs-2211": "nixpkgs-2211_15", + "nixpkgs-2305": "nixpkgs-2305_14", + "nixpkgs-2311": "nixpkgs-2311_11", + "nixpkgs-unstable": "nixpkgs-unstable_22", + "old-ghc-nix": "old-ghc-nix_19", + "stackage": "stackage_18" + }, + "locked": { + "lastModified": 1714611016, + "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_14": { + "inputs": { + "HTTP": "HTTP_20", + "cabal-32": "cabal-32_20", + "cabal-34": "cabal-34_20", + "cabal-36": "cabal-36_20", + "cardano-shell": "cardano-shell_20", + "flake-compat": "flake-compat_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", + "ghc910X": "ghc910X_7", + "ghc911": "ghc911_7", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_16", + "hls-2.0": "hls-2.0_15", + "hls-2.2": "hls-2.2_14", + "hls-2.3": "hls-2.3_14", + "hls-2.4": "hls-2.4_14", + "hls-2.5": "hls-2.5_8", + "hls-2.6": "hls-2.6_8", + "hls-2.7": "hls-2.7_8", + "hpc-coveralls": "hpc-coveralls_20", + "hydra": "hydra_22", + "iserv-proxy": "iserv-proxy_16", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_20", + "nixpkgs-2105": "nixpkgs-2105_20", + "nixpkgs-2111": "nixpkgs-2111_20", + "nixpkgs-2205": "nixpkgs-2205_17", + "nixpkgs-2211": "nixpkgs-2211_16", + "nixpkgs-2305": "nixpkgs-2305_15", + "nixpkgs-2311": "nixpkgs-2311_12", + "nixpkgs-unstable": "nixpkgs-unstable_23", + "old-ghc-nix": "old-ghc-nix_20", + "stackage": "stackage_19" + }, + "locked": { + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_15": { + "inputs": { + "HTTP": "HTTP_21", + "cabal-32": "cabal-32_21", + "cabal-34": "cabal-34_21", + "cabal-36": "cabal-36_21", + "cardano-shell": "cardano-shell_21", + "flake-compat": "flake-compat_43", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", + "ghc98X": "ghc98X_7", + "ghc99": "ghc99_7", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_17", + "hls-2.0": "hls-2.0_16", + "hls-2.2": "hls-2.2_15", + "hls-2.3": "hls-2.3_15", + "hls-2.4": "hls-2.4_15", + "hpc-coveralls": "hpc-coveralls_21", + "hydra": "hydra_23", + "iserv-proxy": "iserv-proxy_17", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_21", + "nixpkgs-2105": "nixpkgs-2105_21", + "nixpkgs-2111": "nixpkgs-2111_21", + "nixpkgs-2205": "nixpkgs-2205_18", + "nixpkgs-2211": "nixpkgs-2211_17", + "nixpkgs-2305": "nixpkgs-2305_16", + "nixpkgs-2311": "nixpkgs-2311_13", + "nixpkgs-unstable": "nixpkgs-unstable_24", + "old-ghc-nix": "old-ghc-nix_21", + "stackage": "stackage_20" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_16": { + "inputs": { + "HTTP": "HTTP_22", + "cabal-32": "cabal-32_22", + "cabal-34": "cabal-34_22", + "cabal-36": "cabal-36_22", + "cardano-shell": "cardano-shell_22", + "flake-compat": "flake-compat_45", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", + "ghc98X": "ghc98X_8", + "ghc99": "ghc99_8", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_18", + "hls-2.0": "hls-2.0_17", + "hls-2.2": "hls-2.2_16", + "hls-2.3": "hls-2.3_16", + "hls-2.4": "hls-2.4_16", + "hpc-coveralls": "hpc-coveralls_22", + "hydra": "hydra_24", + "iserv-proxy": "iserv-proxy_18", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_22", + "nixpkgs-2105": "nixpkgs-2105_22", + "nixpkgs-2111": "nixpkgs-2111_22", + "nixpkgs-2205": "nixpkgs-2205_19", + "nixpkgs-2211": "nixpkgs-2211_18", + "nixpkgs-2305": "nixpkgs-2305_17", + "nixpkgs-2311": "nixpkgs-2311_14", + "nixpkgs-unstable": "nixpkgs-unstable_25", + "old-ghc-nix": "old-ghc-nix_22", + "stackage": "stackage_21" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_17": { + "inputs": { + "HTTP": "HTTP_23", + "cabal-32": "cabal-32_23", + "cabal-34": "cabal-34_23", + "cabal-36": "cabal-36_23", + "cardano-shell": "cardano-shell_23", + "flake-compat": "flake-compat_48", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", + "ghc910X": "ghc910X_8", + "ghc911": "ghc911_8", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_19", + "hls-2.0": "hls-2.0_18", + "hls-2.2": "hls-2.2_17", + "hls-2.3": "hls-2.3_17", + "hls-2.4": "hls-2.4_17", + "hls-2.5": "hls-2.5_9", + "hls-2.6": "hls-2.6_9", + "hls-2.7": "hls-2.7_9", + "hpc-coveralls": "hpc-coveralls_23", + "hydra": "hydra_25", + "iserv-proxy": "iserv-proxy_19", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_23", + "nixpkgs-2105": "nixpkgs-2105_23", + "nixpkgs-2111": "nixpkgs-2111_23", + "nixpkgs-2205": "nixpkgs-2205_20", + "nixpkgs-2211": "nixpkgs-2211_19", + "nixpkgs-2305": "nixpkgs-2305_18", + "nixpkgs-2311": "nixpkgs-2311_15", + "nixpkgs-unstable": "nixpkgs-unstable_26", + "old-ghc-nix": "old-ghc-nix_23", + "stackage": "stackage_22" + }, + "locked": { + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_18": { + "inputs": { + "HTTP": "HTTP_24", + "cabal-32": "cabal-32_24", + "cabal-34": "cabal-34_24", + "cabal-36": "cabal-36_24", + "cardano-shell": "cardano-shell_24", + "flake-compat": "flake-compat_49", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", + "ghc98X": "ghc98X_9", + "ghc99": "ghc99_9", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_20", + "hls-2.0": "hls-2.0_19", + "hls-2.2": "hls-2.2_18", + "hls-2.3": "hls-2.3_18", + "hls-2.4": "hls-2.4_18", + "hpc-coveralls": "hpc-coveralls_24", + "hydra": "hydra_26", + "iserv-proxy": "iserv-proxy_20", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_24", + "nixpkgs-2105": "nixpkgs-2105_24", + "nixpkgs-2111": "nixpkgs-2111_24", + "nixpkgs-2205": "nixpkgs-2205_21", + "nixpkgs-2211": "nixpkgs-2211_20", + "nixpkgs-2305": "nixpkgs-2305_19", + "nixpkgs-2311": "nixpkgs-2311_16", + "nixpkgs-unstable": "nixpkgs-unstable_27", + "old-ghc-nix": "old-ghc-nix_24", + "stackage": "stackage_23" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_19": { + "inputs": { + "HTTP": "HTTP_25", + "cabal-32": "cabal-32_25", + "cabal-34": "cabal-34_25", + "cabal-36": "cabal-36_25", + "cardano-shell": "cardano-shell_25", + "flake-compat": "flake-compat_51", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", + "ghc98X": "ghc98X_10", + "ghc99": "ghc99_10", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_21", + "hls-2.0": "hls-2.0_20", + "hls-2.2": "hls-2.2_19", + "hls-2.3": "hls-2.3_19", + "hls-2.4": "hls-2.4_19", + "hpc-coveralls": "hpc-coveralls_25", + "hydra": "hydra_27", + "iserv-proxy": "iserv-proxy_21", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_25", + "nixpkgs-2105": "nixpkgs-2105_25", + "nixpkgs-2111": "nixpkgs-2111_25", + "nixpkgs-2205": "nixpkgs-2205_22", + "nixpkgs-2211": "nixpkgs-2211_21", + "nixpkgs-2305": "nixpkgs-2305_20", + "nixpkgs-2311": "nixpkgs-2311_17", + "nixpkgs-unstable": "nixpkgs-unstable_28", + "old-ghc-nix": "old-ghc-nix_25", + "stackage": "stackage_24" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_6", + "nix-tools": "nix-tools", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" + }, + "locked": { + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": [ + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_25", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "hackage": [ + "hackage-nix" + ], + "hls-1.10": "hls-1.10_6", + "hls-2.0": "hls-2.0_5", + "hls-2.2": "hls-2.2_4", + "hls-2.3": "hls-2.3_4", + "hls-2.4": "hls-2.4_4", + "hls-2.5": "hls-2.5_2", + "hls-2.6": "hls-2.6_2", + "hls-2.7": "hls-2.7_2", + "hls-2.8": "hls-2.8_2", + "hls-2.9": "hls-2.9", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2305": "nixpkgs-2305_5", + "nixpkgs-2311": "nixpkgs-2311_2", + "nixpkgs-2405": "nixpkgs-2405", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" + }, + "locked": { + "lastModified": 1721436642, + "narHash": "sha256-DvtCcDfx9O1vJ28yPH30Ji9qOmdptwToku315XS2dQM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "4a1119544a4fb95851f5177eb08636ef2bc7ecfc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_5": { + "inputs": { + "HTTP": "HTTP_11", + "cabal-32": "cabal-32_11", + "cabal-34": "cabal-34_11", + "cabal-36": "cabal-36_11", + "cardano-shell": "cardano-shell_11", + "flake-compat": "flake-compat_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", + "ghc910X": "ghc910X_2", + "ghc911": "ghc911_2", + "hackage": [ + "kupo-nixos", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_7", + "hls-2.0": "hls-2.0_6", + "hls-2.2": "hls-2.2_5", + "hls-2.3": "hls-2.3_5", + "hls-2.4": "hls-2.4_5", + "hls-2.5": "hls-2.5_3", + "hls-2.6": "hls-2.6_3", + "hls-2.7": "hls-2.7_3", + "hpc-coveralls": "hpc-coveralls_11", + "hydra": "hydra_13", + "iserv-proxy": "iserv-proxy_7", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_11", + "nixpkgs-2105": "nixpkgs-2105_11", + "nixpkgs-2111": "nixpkgs-2111_11", + "nixpkgs-2205": "nixpkgs-2205_8", + "nixpkgs-2211": "nixpkgs-2211_7", + "nixpkgs-2305": "nixpkgs-2305_6", + "nixpkgs-2311": "nixpkgs-2311_3", + "nixpkgs-unstable": "nixpkgs-unstable_14", + "old-ghc-nix": "old-ghc-nix_11", + "stackage": "stackage_10" + }, + "locked": { + "lastModified": 1714956613, + "narHash": "sha256-h2n+7SsDHFE9SfStJjHxludjmhV5iupstehh6EGLUGU=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "6a9b5d11bdd09bcf739c5e837fa4a776b4c48646", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_6": { + "inputs": { + "HTTP": "HTTP_12", + "cabal-32": "cabal-32_12", + "cabal-34": "cabal-34_12", + "cabal-36": "cabal-36_12", + "cardano-shell": "cardano-shell_12", + "flake-compat": "flake-compat_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", + "ghc910X": "ghc910X_3", + "ghc911": "ghc911_3", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_8", + "hls-2.0": "hls-2.0_7", + "hls-2.2": "hls-2.2_6", + "hls-2.3": "hls-2.3_6", + "hls-2.4": "hls-2.4_6", + "hls-2.5": "hls-2.5_4", + "hls-2.6": "hls-2.6_4", + "hls-2.7": "hls-2.7_4", + "hpc-coveralls": "hpc-coveralls_12", + "hydra": "hydra_14", + "iserv-proxy": "iserv-proxy_8", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_12", + "nixpkgs-2105": "nixpkgs-2105_12", + "nixpkgs-2111": "nixpkgs-2111_12", + "nixpkgs-2205": "nixpkgs-2205_9", + "nixpkgs-2211": "nixpkgs-2211_8", + "nixpkgs-2305": "nixpkgs-2305_7", + "nixpkgs-2311": "nixpkgs-2311_4", + "nixpkgs-unstable": "nixpkgs-unstable_15", + "old-ghc-nix": "old-ghc-nix_12", + "stackage": "stackage_11" + }, + "locked": { + "lastModified": 1714611016, + "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_7": { + "inputs": { + "HTTP": "HTTP_13", + "cabal-32": "cabal-32_13", + "cabal-34": "cabal-34_13", + "cabal-36": "cabal-36_13", + "cardano-shell": "cardano-shell_13", + "flake-compat": "flake-compat_28", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", + "ghc910X": "ghc910X_4", + "ghc911": "ghc911_4", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_9", + "hls-2.0": "hls-2.0_8", + "hls-2.2": "hls-2.2_7", + "hls-2.3": "hls-2.3_7", + "hls-2.4": "hls-2.4_7", + "hls-2.5": "hls-2.5_5", + "hls-2.6": "hls-2.6_5", + "hls-2.7": "hls-2.7_5", + "hpc-coveralls": "hpc-coveralls_13", + "hydra": "hydra_15", + "iserv-proxy": "iserv-proxy_9", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_13", + "nixpkgs-2105": "nixpkgs-2105_13", + "nixpkgs-2111": "nixpkgs-2111_13", + "nixpkgs-2205": "nixpkgs-2205_10", + "nixpkgs-2211": "nixpkgs-2211_9", + "nixpkgs-2305": "nixpkgs-2305_8", + "nixpkgs-2311": "nixpkgs-2311_5", + "nixpkgs-unstable": "nixpkgs-unstable_16", + "old-ghc-nix": "old-ghc-nix_13", + "stackage": "stackage_12" + }, + "locked": { + "lastModified": 1713833402, + "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_8": { + "inputs": { + "HTTP": "HTTP_14", + "cabal-32": "cabal-32_14", + "cabal-34": "cabal-34_14", + "cabal-36": "cabal-36_14", + "cardano-shell": "cardano-shell_14", + "flake-compat": "flake-compat_29", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", + "ghc98X": "ghc98X_3", + "ghc99": "ghc99_3", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_10", + "hls-2.0": "hls-2.0_9", + "hls-2.2": "hls-2.2_8", + "hls-2.3": "hls-2.3_8", + "hls-2.4": "hls-2.4_8", + "hpc-coveralls": "hpc-coveralls_14", + "hydra": "hydra_16", + "iserv-proxy": "iserv-proxy_10", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_14", + "nixpkgs-2105": "nixpkgs-2105_14", + "nixpkgs-2111": "nixpkgs-2111_14", + "nixpkgs-2205": "nixpkgs-2205_11", + "nixpkgs-2211": "nixpkgs-2211_10", + "nixpkgs-2305": "nixpkgs-2305_9", + "nixpkgs-2311": "nixpkgs-2311_6", + "nixpkgs-unstable": "nixpkgs-unstable_17", + "old-ghc-nix": "old-ghc-nix_14", + "stackage": "stackage_13" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_9": { + "inputs": { + "HTTP": "HTTP_15", + "cabal-32": "cabal-32_15", + "cabal-34": "cabal-34_15", + "cabal-36": "cabal-36_15", + "cardano-shell": "cardano-shell_15", + "flake-compat": "flake-compat_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", + "ghc98X": "ghc98X_4", + "ghc99": "ghc99_4", + "hackage": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "hackage" + ], + "hls-1.10": "hls-1.10_11", + "hls-2.0": "hls-2.0_10", + "hls-2.2": "hls-2.2_9", + "hls-2.3": "hls-2.3_9", + "hls-2.4": "hls-2.4_9", + "hpc-coveralls": "hpc-coveralls_15", + "hydra": "hydra_17", + "iserv-proxy": "iserv-proxy_11", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_15", + "nixpkgs-2105": "nixpkgs-2105_15", + "nixpkgs-2111": "nixpkgs-2111_15", + "nixpkgs-2205": "nixpkgs-2205_12", + "nixpkgs-2211": "nixpkgs-2211_11", + "nixpkgs-2305": "nixpkgs-2305_10", + "nixpkgs-2311": "nixpkgs-2311_7", + "nixpkgs-unstable": "nixpkgs-unstable_18", + "old-ghc-nix": "old-ghc-nix_15", + "stackage": "stackage_14" + }, + "locked": { + "lastModified": 1703638209, + "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3e17b0afaa245a660e02af7323de96153124928b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-compat": "flake-compat_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "cardano-nix", + "cardano-db-sync", + "hackageNix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage" + }, + "locked": { + "lastModified": 1701053834, + "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "cardano-nix", + "cardano-node-8.1.1", + "hackageNix" + ], + "hls-1.10": "hls-1.10_3", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "iserv-proxy": "iserv-proxy_3", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_2" + }, + "locked": { + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-compat": "flake-compat_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", + "hackage": [ + "cardano-nix", + "cardano-node-8.7.3", + "hackageNix" + ], + "hls-1.10": "hls-1.10_4", + "hls-2.0": "hls-2.0_3", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_4", + "iserv-proxy": "iserv-proxy_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2211": "nixpkgs-2211_4", + "nixpkgs-2305": "nixpkgs-2305_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-compat": "flake-compat_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "ghc910X": "ghc910X", + "ghc911": "ghc911", + "hackage": [ + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10_5", + "hls-2.0": "hls-2.0_4", + "hls-2.2": "hls-2.2_3", + "hls-2.3": "hls-2.3_3", + "hls-2.4": "hls-2.4_3", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", + "hls-2.7": "hls-2.7", + "hls-2.8": "hls-2.8", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_5", + "iserv-proxy": "iserv-proxy_5", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2211": "nixpkgs-2211_5", + "nixpkgs-2305": "nixpkgs-2305_4", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_4" + }, + "locked": { + "lastModified": 1718797200, + "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cb139fa956158397aa398186bb32dd26f7318784", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" + }, + "locked": { + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_47", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" + }, + "locked": { + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_28" + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "haumea_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "lib" + ] + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "cardano-nix", + "flake-parts" + ], + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1710396488, + "narHash": "sha256-yniBB5i1un44uzR4+luTWvZ6uGvsHSYIBiDZ8Xox4nQ=", + "owner": "mlabs-haskell", + "repo": "hercules-ci-effects", + "rev": "f5ed263ab0585dfb7b067301419fb80d64e8c021", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "ref": "push-cache-effect", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hercules-ci-effects_2": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_99" + }, + "locked": { + "lastModified": 1719226092, + "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hls-1.10": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_10": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_11": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_12": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_13": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_14": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_15": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_16": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_17": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_18": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_19": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_2": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_20": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_21": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_3": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_4": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_5": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_6": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_7": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_8": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_9": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_10": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_11": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_12": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_13": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_14": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_15": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_16": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_17": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_18": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_19": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_2": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_20": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_3": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_4": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_5": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_6": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_7": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_8": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_9": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_10": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_11": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_12": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_13": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_14": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_15": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_16": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_17": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_18": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_19": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_3": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_4": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_5": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_6": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_7": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_8": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_9": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_10": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_11": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_12": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_13": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_14": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_15": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_16": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_17": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_18": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_19": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_2": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_4": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_5": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_6": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_7": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_8": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_9": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_10": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_11": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_12": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_13": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_14": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_15": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_16": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_17": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_18": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_19": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_2": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_3": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_4": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_5": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_6": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_7": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_8": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_9": { + "flake": false, + "locked": { + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_2": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_3": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_4": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_5": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_6": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_7": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_8": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5_9": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_2": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_3": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_4": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_5": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_6": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_7": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_8": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6_9": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_2": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_3": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_4": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_5": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_6": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_7": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_8": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.7_9": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.8": { + "flake": false, + "locked": { + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.8_2": { + "flake": false, + "locked": { + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.9": { + "flake": false, + "locked": { + "lastModified": 1718469202, + "narHash": "sha256-THXSz+iwB1yQQsr/PY151+2GvtoJnTIB2pIQ4OzfjD4=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "40891bccb235ebacce020b598b083eab9dda80f1", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.9.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_10": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_11": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_12": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_13": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_14": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_15": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_16": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_17": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_18": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_19": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_2": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_20": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_21": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_22": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_23": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_24": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_25": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_3": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_4": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_5": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_6": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_7": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_8": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_9": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hydra": { + "inputs": { + "nix": "nix", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_10": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_11": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_12": { + "inputs": { + "nix": "nix_20", + "nixpkgs": [ + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_13": { + "inputs": { + "nix": "nix_21", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_14": { + "inputs": { + "nix": "nix_22", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_15": { + "inputs": { + "nix": "nix_23", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_16": { + "inputs": { + "nix": "nix_24", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_17": { + "inputs": { + "nix": "nix_25", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_18": { + "inputs": { + "nix": "nix_26", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_19": { + "inputs": { + "nix": "nix_27", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_2": { + "inputs": { + "nix": "nix_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_20": { + "inputs": { + "nix": "nix_28", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_21": { + "inputs": { + "nix": "nix_29", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_22": { + "inputs": { + "nix": "nix_30", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_23": { + "inputs": { + "nix": "nix_31", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_24": { + "inputs": { + "nix": "nix_32", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_25": { + "inputs": { + "nix": "nix_33", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_26": { + "inputs": { + "nix": "nix_34", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_27": { + "inputs": { + "nix": "nix_35", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_3": { + "inputs": { + "nix": "nix_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_4": { + "inputs": { + "nix": "nix_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_5": { + "inputs": { + "nix": "nix_6", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_6": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_7": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_8": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "incl": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_2": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_3": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_4": { + "inputs": { + "nixlib": [ + "cardano-node", + "std", + "lib" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_11": { + "inputs": { + "stdlib": "stdlib_11" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_12": { + "inputs": { + "stdlib": "stdlib_12" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_2": { + "inputs": { + "stdlib": "stdlib_2" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_3": { + "inputs": { + "stdlib": "stdlib_3" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_4": { + "inputs": { + "stdlib": "stdlib_4" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_5": { + "inputs": { + "stdlib": "stdlib_5" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_6": { + "inputs": { + "stdlib": "stdlib_6" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_7": { + "inputs": { + "stdlib": "stdlib_7" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_9": { + "inputs": { + "stdlib": "stdlib_9" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inputs-check": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_7" + }, + "locked": { + "lastModified": 1692633913, + "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", + "owner": "input-output-hk", + "repo": "inputs-check", + "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "inputs-check", + "type": "github" + } + }, + "iogo": { + "inputs": { + "devshell": "devshell_8", + "inclusive": "inclusive_4", + "nixpkgs": "nixpkgs_51", + "utils": "utils_13" + }, + "locked": { + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogo_2": { + "inputs": { + "devshell": "devshell_18", + "inclusive": "inclusive_12", + "nixpkgs": "nixpkgs_80", + "utils": "utils_27" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogx": { + "inputs": { + "CHaP": [ + "kupo-nixos", + "CHaP" + ], + "easy-purescript-nix": "easy-purescript-nix_2", + "flake-utils": "flake-utils_49", + "hackage": "hackage_6", + "haskell-nix": "haskell-nix_5", + "iogx-template-haskell": "iogx-template-haskell", + "iogx-template-vanilla": "iogx-template-vanilla_4", + "iohk-nix": "iohk-nix_18", + "nix2container": "nix2container_22", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_30", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_16", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_15" + }, + "locked": { + "lastModified": 1714993151, + "narHash": "sha256-qnhgqo24celzlf+KjZ+oqypsCezgVZRueHbfiq73bDE=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "819ae1510a5ebdeb999c723033a2a641aa9bfd23", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell": { + "inputs": { + "iogx": "iogx_2" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1714715538, + "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_2": { + "inputs": { + "iogx": "iogx_3" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_3": { + "inputs": { + "iogx": "iogx_4" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_4": { + "inputs": { + "iogx": "iogx_7" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_5": { + "inputs": { + "iogx": "iogx_10" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_6": { + "inputs": { + "iogx": "iogx_11" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-haskell_7": { + "inputs": { + "iogx": "iogx_14" + }, + "locked": { + "dir": "templates/haskell", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/haskell", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla": { + "inputs": { + "iogx": "iogx_5" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_2": { + "inputs": { + "iogx": "iogx_6" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_3": { + "inputs": { + "iogx": "iogx_8" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_4": { + "inputs": { + "iogx": "iogx_9" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1714715538, + "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_5": { + "inputs": { + "iogx": "iogx_12" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_6": { + "inputs": { + "iogx": "iogx_13" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1714459006, + "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx-template-vanilla_7": { + "inputs": { + "iogx": "iogx_15" + }, + "locked": { + "dir": "templates/vanilla", + "lastModified": 1708614239, + "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", + "type": "github" + }, + "original": { + "dir": "templates/vanilla", + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_10": { + "inputs": { + "CHaP": "CHaP_14", + "easy-purescript-nix": "easy-purescript-nix_11", + "flake-utils": "flake-utils_81", + "hackage": "hackage_15", + "haskell-nix": "haskell-nix_14", + "iogx-template-haskell": "iogx-template-haskell_6", + "iogx-template-vanilla": "iogx-template-vanilla_5", + "iohk-nix": "iohk-nix_13", + "nix2container": "nix2container_17", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_20", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_11", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_10" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_11": { + "inputs": { + "CHaP": "CHaP_15", + "easy-purescript-nix": "easy-purescript-nix_12", + "flake-utils": "flake-utils_83", + "hackage": "hackage_16", + "haskell-nix": "haskell-nix_15", + "iohk-nix": "iohk-nix_11", + "nix2container": "nix2container_15", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_16", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_9", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_8" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_12": { + "inputs": { + "CHaP": "CHaP_16", + "easy-purescript-nix": "easy-purescript-nix_13", + "flake-utils": "flake-utils_87", + "hackage": "hackage_17", + "haskell-nix": "haskell-nix_16", + "iohk-nix": "iohk-nix_12", + "nix2container": "nix2container_16", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_18", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_10", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_9" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_13": { + "inputs": { + "CHaP": "CHaP_17", + "easy-purescript-nix": "easy-purescript-nix_14", + "flake-utils": "flake-utils_93", + "hackage": "hackage_18", + "haskell-nix": "haskell-nix_17", + "iogx-template-haskell": "iogx-template-haskell_7", + "iogx-template-vanilla": "iogx-template-vanilla_7", + "iohk-nix": "iohk-nix_16", + "nix2container": "nix2container_20", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_26", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_14", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_13" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_14": { + "inputs": { + "CHaP": "CHaP_18", + "easy-purescript-nix": "easy-purescript-nix_15", + "flake-utils": "flake-utils_95", + "hackage": "hackage_19", + "haskell-nix": "haskell-nix_18", + "iohk-nix": "iohk-nix_14", + "nix2container": "nix2container_18", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_22", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_12", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_11" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_15": { + "inputs": { + "CHaP": "CHaP_19", + "easy-purescript-nix": "easy-purescript-nix_16", + "flake-utils": "flake-utils_99", + "hackage": "hackage_20", + "haskell-nix": "haskell-nix_19", + "iohk-nix": "iohk-nix_15", + "nix2container": "nix2container_19", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_24", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_13", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_12" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_2": { + "inputs": { + "CHaP": "CHaP_6", + "easy-purescript-nix": "easy-purescript-nix_3", + "flake-utils": "flake-utils_51", + "hackage": "hackage_7", + "haskell-nix": "haskell-nix_6", + "iogx-template-haskell": "iogx-template-haskell_2", + "iogx-template-vanilla": "iogx-template-vanilla_2", + "iohk-nix": "iohk-nix_10", + "nix2container": "nix2container_14", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_14", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_8", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_7" + }, + "locked": { + "lastModified": 1714680367, + "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_3": { + "inputs": { + "CHaP": "CHaP_7", + "easy-purescript-nix": "easy-purescript-nix_4", + "flake-utils": "flake-utils_53", + "hackage": "hackage_8", + "haskell-nix": "haskell-nix_7", + "iogx-template-haskell": "iogx-template-haskell_3", + "iogx-template-vanilla": "iogx-template-vanilla", + "iohk-nix": "iohk-nix_6", + "nix2container": "nix2container_10", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_6", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_4", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_3" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_4": { + "inputs": { + "CHaP": "CHaP_8", + "easy-purescript-nix": "easy-purescript-nix_5", + "flake-utils": "flake-utils_55", + "hackage": "hackage_9", + "haskell-nix": "haskell-nix_8", + "iohk-nix": "iohk-nix_4", + "nix2container": "nix2container_8", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_2", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_2", + "sphinxcontrib-haddock": "sphinxcontrib-haddock" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_5": { + "inputs": { + "CHaP": "CHaP_9", + "easy-purescript-nix": "easy-purescript-nix_6", + "flake-utils": "flake-utils_59", + "hackage": "hackage_10", + "haskell-nix": "haskell-nix_9", + "iohk-nix": "iohk-nix_5", + "nix2container": "nix2container_9", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_4", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_3", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_2" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_6": { + "inputs": { + "CHaP": "CHaP_10", + "easy-purescript-nix": "easy-purescript-nix_7", + "flake-utils": "flake-utils_65", + "hackage": "hackage_11", + "haskell-nix": "haskell-nix_10", + "iogx-template-haskell": "iogx-template-haskell_4", + "iogx-template-vanilla": "iogx-template-vanilla_3", + "iohk-nix": "iohk-nix_9", + "nix2container": "nix2container_13", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_12", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_7", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_6" + }, + "locked": { + "lastModified": 1714120717, + "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_7": { + "inputs": { + "CHaP": "CHaP_11", + "easy-purescript-nix": "easy-purescript-nix_8", + "flake-utils": "flake-utils_67", + "hackage": "hackage_12", + "haskell-nix": "haskell-nix_11", + "iohk-nix": "iohk-nix_7", + "nix2container": "nix2container_11", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_8", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_5", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_4" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_8": { + "inputs": { + "CHaP": "CHaP_12", + "easy-purescript-nix": "easy-purescript-nix_9", + "flake-utils": "flake-utils_71", + "hackage": "hackage_13", + "haskell-nix": "haskell-nix_12", + "iohk-nix": "iohk-nix_8", + "nix2container": "nix2container_12", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_10", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_6", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_5" + }, + "locked": { + "lastModified": 1704707180, + "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iogx_9": { + "inputs": { + "CHaP": "CHaP_13", + "easy-purescript-nix": "easy-purescript-nix_10", + "flake-utils": "flake-utils_79", + "hackage": "hackage_14", + "haskell-nix": "haskell-nix_13", + "iogx-template-haskell": "iogx-template-haskell_5", + "iogx-template-vanilla": "iogx-template-vanilla_6", + "iohk-nix": "iohk-nix_17", + "nix2container": "nix2container_21", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "haskell-nix", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_28", + "pre-commit-hooks-nix": "pre-commit-hooks-nix_15", + "sphinxcontrib-haddock": "sphinxcontrib-haddock_14" + }, + "locked": { + "lastModified": 1714680367, + "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", + "owner": "input-output-hk", + "repo": "iogx", + "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iogx", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "blst": "blst", + "nixpkgs": "nixpkgs_8", + "secp256k1": "secp256k1", + "sodium": "sodium" + }, + "locked": { + "lastModified": 1691469905, + "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + } + }, + "iohk-nix-ng": { + "inputs": { + "blst": "blst_2", + "nixpkgs": "nixpkgs_9", + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" + }, + "locked": { + "lastModified": 1696471795, + "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_10": { + "inputs": { + "blst": "blst_14", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_14", + "sodium": "sodium_14" + }, + "locked": { + "lastModified": 1714467508, + "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "89387f07016fe416c16f7824715238b3d1a4390a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_11": { + "inputs": { + "blst": "blst_15", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_15", + "sodium": "sodium_15" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_12": { + "inputs": { + "blst": "blst_16", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_16", + "sodium": "sodium_16" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_13": { + "inputs": { + "blst": "blst_17", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_17", + "sodium": "sodium_17" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_14": { + "inputs": { + "blst": "blst_18", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_18", + "sodium": "sodium_18" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_15": { + "inputs": { + "blst": "blst_19", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_19", + "sodium": "sodium_19" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_16": { + "inputs": { + "blst": "blst_20", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_20", + "sodium": "sodium_20" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_17": { + "inputs": { + "blst": "blst_21", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_21", + "sodium": "sodium_21" + }, + "locked": { + "lastModified": 1714467508, + "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "89387f07016fe416c16f7824715238b3d1a4390a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_18": { + "inputs": { + "blst": "blst_22", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_22", + "sodium": "sodium_22" + }, + "locked": { + "lastModified": 1714467508, + "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "89387f07016fe416c16f7824715238b3d1a4390a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "blst": "blst_7", + "nixpkgs": [ + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" + }, + "locked": { + "lastModified": 1721411284, + "narHash": "sha256-NH345tWz4A2epDp9qRy87PlXtMiQTd4wbr57Qymn2uY=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "05fe9ba470544e615799492080b7f0f15bf7da3c", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_4": { + "inputs": { + "blst": "blst_8", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_8", + "sodium": "sodium_8" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_5": { + "inputs": { + "blst": "blst_9", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_9", + "sodium": "sodium_9" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_6": { + "inputs": { + "blst": "blst_10", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_10", + "sodium": "sodium_10" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_7": { + "inputs": { + "blst": "blst_11", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-haskell", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_11", + "sodium": "sodium_11" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_8": { + "inputs": { + "blst": "blst_12", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_12", + "sodium": "sodium_12" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_9": { + "inputs": { + "blst": "blst_13", + "nixpkgs": [ + "kupo-nixos", + "iogx", + "iogx-template-haskell", + "iogx", + "iogx-template-vanilla", + "iogx", + "nixpkgs" + ], + "secp256k1": "secp256k1_13", + "sodium": "sodium_13" + }, + "locked": { + "lastModified": 1713468256, + "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix": { + "inputs": { + "blst": "blst_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "secp256k1": "secp256k1_3", + "sodium": "sodium_3" + }, + "locked": { + "lastModified": 1698999258, + "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { + "blst": "blst_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "secp256k1": "secp256k1_4", + "sodium": "sodium_4" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_3": { + "inputs": { + "blst": "blst_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "secp256k1": "secp256k1_5", + "sodium": "sodium_5" + }, + "locked": { + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_4": { + "inputs": { + "blst": "blst_6", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "secp256k1": "secp256k1_6", + "sodium": "sodium_6" + }, + "locked": { + "lastModified": 1719237167, + "narHash": "sha256-ifW5Jfwu/iwYs0r7f8AdiWDQK+Pr1gZLz+p5u8OtOgo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "577f4d5072945a88dda6f5cfe205e6b4829a0423", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_5": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { + "inputs": { + "nixpkgs": [ + "db-sync", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "ref": "hkm/remote-iserv", + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_10": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_11": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_12": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_13": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_14": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_15": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_16": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_17": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_18": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_19": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_20": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_21": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_3": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_4": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_5": { + "flake": false, + "locked": { + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_6": { + "flake": false, + "locked": { + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_7": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_8": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "iserv-proxy_9": { + "flake": false, + "locked": { + "lastModified": 1708894040, + "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", + "type": "github" + }, + "original": { + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", + "type": "github" + } + }, + "kupo": { + "flake": false, + "locked": { + "lastModified": 1718734761, + "narHash": "sha256-J5eys+/VjeYqfBlcS+XW+Gzafq0/qkbOfY6b05JmFYI=", + "owner": "klarkc", + "repo": "kupo", + "rev": "d95a324f6a94a963cd91cb5d5f88ef50640e7b8d", + "type": "github" + }, + "original": { + "owner": "klarkc", + "ref": "patch-1", + "repo": "kupo", + "type": "github" + } + }, + "kupo-nixos": { + "inputs": { + "CHaP": [ + "CHaP" + ], + "iogx": "iogx", + "kupo": "kupo" + }, + "locked": { + "lastModified": 1718735503, + "narHash": "sha256-Dwpl5BUeGGvhH7+RcF3as7e9rzUFeHRwVGxjfj0fMAM=", + "owner": "Fourierlabs", + "repo": "kupo-nixos", + "rev": "4ab9be5d524bf2c003874aa225f20d00cb6defcf", + "type": "github" + }, + "original": { + "owner": "Fourierlabs", + "ref": "add-conway", + "repo": "kupo-nixos", + "type": "github" + } + }, + "lib": { + "locked": { + "lastModified": 1694306727, + "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_10": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_11": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_12": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_13": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_14": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_15": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_16": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_17": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_18": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_19": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_20": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_21": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_22": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_23": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_24": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_25": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_26": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_27": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_28": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_29": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_30": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_31": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_32": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_33": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_34": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_35": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_4": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_7": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_8": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_3": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_4": { + "inputs": { + "flake-utils": "flake-utils_19", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_5": { + "inputs": { + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_56" + }, + "locked": { + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_6": { + "inputs": { + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_91" + }, + "locked": { + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_6", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_15", + "inclusive": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_20" + }, + "locked": { + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "type": "github" + } + }, + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_13" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_8", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_9", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_14", + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_2": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_3": { + "flake": false, + "locked": { + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix-tools_4": { + "flake": false, + "locked": { + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-tools", + "type": "github" + } + }, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_17" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_10": { + "inputs": { + "flake-utils": "flake-utils_62", + "nixpkgs": "nixpkgs_109" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_11": { + "inputs": { + "flake-utils": "flake-utils_68", + "nixpkgs": "nixpkgs_113" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_12": { + "inputs": { + "flake-utils": "flake-utils_72", + "nixpkgs": "nixpkgs_116" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_13": { + "inputs": { + "flake-utils": "flake-utils_74", + "nixpkgs": "nixpkgs_118" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_14": { + "inputs": { + "flake-utils": "flake-utils_76", + "nixpkgs": "nixpkgs_120" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_15": { + "inputs": { + "flake-utils": "flake-utils_84", + "nixpkgs": "nixpkgs_125" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_16": { + "inputs": { + "flake-utils": "flake-utils_88", + "nixpkgs": "nixpkgs_128" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_17": { + "inputs": { + "flake-utils": "flake-utils_90", + "nixpkgs": "nixpkgs_130" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_18": { + "inputs": { + "flake-utils": "flake-utils_96", + "nixpkgs": "nixpkgs_134" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_19": { + "inputs": { + "flake-utils": "flake-utils_100", + "nixpkgs": "nixpkgs_137" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_19" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_20": { + "inputs": { + "flake-utils": "flake-utils_102", + "nixpkgs": "nixpkgs_139" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_21": { + "inputs": { + "flake-utils": "flake-utils_104", + "nixpkgs": "nixpkgs_141" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_22": { + "inputs": { + "flake-utils": "flake-utils_106", + "nixpkgs": "nixpkgs_143" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_23" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_27" + }, + "locked": { + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_5": { + "inputs": { + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_32" + }, + "locked": { + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_6": { + "inputs": { + "flake-utils": "flake-utils_20", + "nixpkgs": "nixpkgs_36" + }, + "locked": { + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_7": { + "inputs": { + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_94" + }, + "locked": { + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "type": "github" + }, + "original": { + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_8": { + "inputs": { + "flake-utils": "flake-utils_56", + "nixpkgs": "nixpkgs_104" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix2container_9": { + "inputs": { + "flake-utils": "flake-utils_60", + "nixpkgs": "nixpkgs_107" + }, + "locked": { + "lastModified": 1703410130, + "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_57", + "nixpkgs-regression": "nixpkgs-regression_9" + }, + "locked": { + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", + "type": "github" + } + }, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_59", + "nixpkgs-regression": "nixpkgs-regression_10" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_66", + "nixpkgs-regression": "nixpkgs-regression_11" + }, + "locked": { + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "type": "github" + } + }, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_67", + "nixpkgs-regression": "nixpkgs-regression_12" + }, + "locked": { + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "type": "github" + } + }, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_72", + "nixpkgs-regression": "nixpkgs-regression_13" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_74" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_76", + "nixpkgs-regression": "nixpkgs-regression_14" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_88", + "nixpkgs-regression": "nixpkgs-regression_15" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_90", + "nixpkgs-regression": "nixpkgs-regression_16" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_19": { + "inputs": { + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_97", + "nixpkgs-regression": "nixpkgs-regression_17" + }, + "locked": { + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" + } + }, + "nix_2": { + "inputs": { + "flake-compat": "flake-compat_3", + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_10", + "nixpkgs-regression": "nixpkgs-regression_2" + }, + "locked": { + "lastModified": 1693573010, + "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", + "owner": "nixos", + "repo": "nix", + "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "2.17-maintenance", + "repo": "nix", + "type": "github" + } + }, + "nix_20": { + "inputs": { + "lowdown-src": "lowdown-src_20", + "nixpkgs": "nixpkgs_98", + "nixpkgs-regression": "nixpkgs-regression_18" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_21": { + "inputs": { + "lowdown-src": "lowdown-src_21", + "nixpkgs": "nixpkgs_100", + "nixpkgs-regression": "nixpkgs-regression_19" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_22": { + "inputs": { + "lowdown-src": "lowdown-src_22", + "nixpkgs": "nixpkgs_101", + "nixpkgs-regression": "nixpkgs-regression_20" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_23": { + "inputs": { + "lowdown-src": "lowdown-src_23", + "nixpkgs": "nixpkgs_102", + "nixpkgs-regression": "nixpkgs-regression_21" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_24": { + "inputs": { + "lowdown-src": "lowdown-src_24", + "nixpkgs": "nixpkgs_103", + "nixpkgs-regression": "nixpkgs-regression_22" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_25": { + "inputs": { + "lowdown-src": "lowdown-src_25", + "nixpkgs": "nixpkgs_106", + "nixpkgs-regression": "nixpkgs-regression_23" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_26": { + "inputs": { + "lowdown-src": "lowdown-src_26", + "nixpkgs": "nixpkgs_111", + "nixpkgs-regression": "nixpkgs-regression_24" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_27": { + "inputs": { + "lowdown-src": "lowdown-src_27", + "nixpkgs": "nixpkgs_112", + "nixpkgs-regression": "nixpkgs-regression_25" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_28": { + "inputs": { + "lowdown-src": "lowdown-src_28", + "nixpkgs": "nixpkgs_115", + "nixpkgs-regression": "nixpkgs-regression_26" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_29": { + "inputs": { + "lowdown-src": "lowdown-src_29", + "nixpkgs": "nixpkgs_122", + "nixpkgs-regression": "nixpkgs-regression_27" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_14", + "nixpkgs-regression": "nixpkgs-regression_3" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_30": { + "inputs": { + "lowdown-src": "lowdown-src_30", + "nixpkgs": "nixpkgs_123", + "nixpkgs-regression": "nixpkgs-regression_28" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_31": { + "inputs": { + "lowdown-src": "lowdown-src_31", + "nixpkgs": "nixpkgs_124", + "nixpkgs-regression": "nixpkgs-regression_29" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_32": { + "inputs": { + "lowdown-src": "lowdown-src_32", + "nixpkgs": "nixpkgs_127", + "nixpkgs-regression": "nixpkgs-regression_30" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_33": { + "inputs": { + "lowdown-src": "lowdown-src_33", + "nixpkgs": "nixpkgs_132", + "nixpkgs-regression": "nixpkgs-regression_31" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_34": { + "inputs": { + "lowdown-src": "lowdown-src_34", + "nixpkgs": "nixpkgs_133", + "nixpkgs-regression": "nixpkgs-regression_32" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_35": { + "inputs": { + "lowdown-src": "lowdown-src_35", + "nixpkgs": "nixpkgs_136", + "nixpkgs-regression": "nixpkgs-regression_33" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_16", + "nixpkgs-regression": "nixpkgs-regression_4" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_26", + "nixpkgs-regression": "nixpkgs-regression_5" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_35", + "nixpkgs-regression": "nixpkgs-regression_6" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_43", + "nixpkgs-regression": "nixpkgs-regression_7" + }, + "locked": { + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" + } + }, + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_45" + }, + "locked": { + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nix", + "type": "github" + } + }, + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_47", + "nixpkgs-regression": "nixpkgs-regression_8" + }, + "locked": { + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nix", + "type": "github" + } + }, + "nixago": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago-exts": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago-exts_2": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_3": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_4": { + "inputs": { + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_5": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixago_6": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixago", + "type": "github" + } + }, + "nixlib": { + "locked": { + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_2": { + "locked": { + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixlib_3": { + "locked": { + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_10": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_11": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_12": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_13": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_14": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_15": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_16": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_17": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_18": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_19": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_2": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_20": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_21": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_22": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_23": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_24": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_25": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_3": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_4": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_5": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_6": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_7": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_8": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_9": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_10": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_11": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_12": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_13": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_14": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_15": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_16": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_17": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_18": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_19": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_2": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_20": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_21": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_22": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_23": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_24": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_25": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_3": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_4": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_5": { + "locked": { + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_6": { + "locked": { + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_7": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_8": { + "locked": { + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2105_9": { + "locked": { + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_10": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_11": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_12": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_13": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_14": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_15": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_16": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_17": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_18": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_19": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_2": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_20": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_21": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_22": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_23": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_24": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_25": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_3": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_4": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_5": { + "locked": { + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_6": { + "locked": { + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_7": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_8": { + "locked": { + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2111_9": { + "locked": { + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_10": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_11": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_12": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_13": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_14": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_15": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_16": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_17": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_18": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_19": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_2": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_20": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_21": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_22": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_3": { + "locked": { + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_4": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_5": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_6": { + "locked": { + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_7": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_8": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2205_9": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_10": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_11": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_12": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_13": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_14": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_15": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_16": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_17": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_18": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_19": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_2": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_20": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_21": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_3": { + "locked": { + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_4": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_5": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_6": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_7": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_8": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2211_9": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_10": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_11": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_12": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_13": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_14": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_15": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_16": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_17": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_18": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_19": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_2": { + "locked": { + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_20": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_3": { + "locked": { + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_4": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_5": { + "locked": { + "lastModified": 1705033721, + "narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_6": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_7": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_8": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2305_9": { + "locked": { + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_10": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_11": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_12": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_13": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_14": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_15": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_16": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_17": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_2": { + "locked": { + "lastModified": 1719957072, + "narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7144d6241f02d171d25fba3edeaf15e0f2592105", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_3": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_4": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_5": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_6": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_7": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_8": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2311_9": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2405": { + "locked": { + "lastModified": 1720122915, + "narHash": "sha256-Nby8WWxj0elBu1xuRaUcRjPi/rU3xVbkAt2kj4QwX2U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "835cf2d3f37989c5db6585a28de967a667a75fb1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-24.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-arion": { + "locked": { + "lastModified": 1721492093, + "narHash": "sha256-6Rhz2s4uXUncvsRhhMe/5QVkESZuLmHuySs50H9qpw8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ecc9d53af4e4cb7a7a3b83131c16ef89cf11762a", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-docker": { + "locked": { + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1671359686, + "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_3": { + "locked": { + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_4": { + "locked": { + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_5": { + "locked": { + "dir": "lib", + "lastModified": 1696019113, + "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-regression": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_10": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_11": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_12": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_13": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_14": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_15": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_16": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_17": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_18": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_19": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_2": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_20": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_21": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_22": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_23": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_24": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_25": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_26": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "haskellNix_5": { - "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_6" - }, + "nixpkgs-regression_27": { "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_47", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_9", - "hydra": "hydra_11", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_8" - }, + "nixpkgs-regression_28": { "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "haumea": { - "inputs": { - "nixpkgs": "nixpkgs_27" - }, + "nixpkgs-regression_29": { "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": [ - "cardano-nix", - "flake-parts" - ], - "nixpkgs": [ - "cardano-nix", - "nixpkgs" - ] - }, + "nixpkgs-regression_3": { "locked": { - "lastModified": 1714676393, - "narHash": "sha256-OA2LZPTCHyH0PcsNkjeTLvgsn4JmsV2VTvXQacHeUZU=", - "owner": "mlabs-haskell", - "repo": "hercules-ci-effects", - "rev": "5ad8f9613b735cb4f8222f07ae45ca37bfe76a23", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "ref": "push-cache-effect", - "repo": "hercules-ci-effects", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "hercules-ci-effects_2": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_98" + "nixpkgs-regression_30": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-regression_31": { "locked": { - "lastModified": 1718018037, - "narHash": "sha256-03rLBd/lKecgaKz0j5ESUf9lDn5R0SJatZTKLL5unWE=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "0ab08b23ce3c3f75fe9a5598756b6fb8bcf0b414", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "hls-1.10": { - "flake": false, + "nixpkgs-regression_32": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "hls-1.10_2": { - "flake": false, + "nixpkgs-regression_33": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "hls-1.10_3": { - "flake": false, + "nixpkgs-regression_4": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "hls-1.10_4": { - "flake": false, + "nixpkgs-regression_5": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "hls-1.10_5": { - "flake": false, + "nixpkgs-regression_6": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "hls-1.10_6": { - "flake": false, + "nixpkgs-regression_7": { "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "hls-2.0": { - "flake": false, + "nixpkgs-regression_8": { "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "hls-2.0_2": { - "flake": false, + "nixpkgs-regression_9": { "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "hls-2.0_3": { - "flake": false, + "nixpkgs-stable": { "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1690066826, + "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.0_4": { - "flake": false, + "nixpkgs-stable_10": { "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hls-2.2": { - "flake": false, + "nixpkgs-stable_11": { "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.2_2": { - "flake": false, + "nixpkgs-stable_12": { "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hls-2.2_3": { - "flake": false, + "nixpkgs-stable_13": { "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.3": { - "flake": false, + "nixpkgs-stable_14": { "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hls-2.3_2": { - "flake": false, + "nixpkgs-stable_15": { "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.3_3": { - "flake": false, + "nixpkgs-stable_16": { "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hls-2.4": { - "flake": false, + "nixpkgs-stable_17": { "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.4_2": { - "flake": false, + "nixpkgs-stable_18": { "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hls-2.4_3": { - "flake": false, + "nixpkgs-stable_19": { "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.5": { - "flake": false, + "nixpkgs-stable_2": { "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hls-2.6": { - "flake": false, + "nixpkgs-stable_20": { "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hls-2.7": { - "flake": false, + "nixpkgs-stable_21": { "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", "type": "github" } }, - "hls-2.8": { - "flake": false, + "nixpkgs-stable_22": { "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hpc-coveralls": { - "flake": false, + "nixpkgs-stable_23": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_10": { - "flake": false, + "nixpkgs-stable_24": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hpc-coveralls_11": { - "flake": false, + "nixpkgs-stable_25": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_2": { - "flake": false, + "nixpkgs-stable_26": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hpc-coveralls_3": { - "flake": false, + "nixpkgs-stable_27": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_4": { - "flake": false, + "nixpkgs-stable_28": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hpc-coveralls_5": { - "flake": false, + "nixpkgs-stable_29": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_6": { - "flake": false, + "nixpkgs-stable_3": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_7": { - "flake": false, + "nixpkgs-stable_30": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hpc-coveralls_8": { - "flake": false, + "nixpkgs-stable_31": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", "type": "github" } }, - "hpc-coveralls_9": { - "flake": false, + "nixpkgs-stable_4": { "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" } }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs-stable_5": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_10": { - "inputs": { - "nix": "nix_18", - "nixpkgs": [ - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "nixpkgs-stable_6": { + "locked": { + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" + } + }, + "nixpkgs-stable_7": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1710695816, + "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "614b4613980a522ba49f0d194531beddbb7220d3", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_11": { - "inputs": { - "nix": "nix_19", - "nixpkgs": [ - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs-stable_8": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "type": "github" } }, - "hydra_12": { - "inputs": { - "nix": "nix_20", - "nixpkgs": [ - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs-stable_9": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_13": { - "inputs": { - "nix": "nix_21", - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs-unstable": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_2": { - "inputs": { - "nix": "nix_3", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs-unstable_10": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_3": { - "inputs": { - "nix": "nix_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs-unstable_11": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nixpkgs", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_4": { - "inputs": { - "nix": "nix_5", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs-unstable_12": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_5": { - "inputs": { - "nix": "nix_6", - "nixpkgs": [ - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs-unstable_13": { "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1720181791, + "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nixpkgs", + "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "hydra_6": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] - }, + "nixpkgs-unstable_14": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "hydra_7": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] - }, + "nixpkgs-unstable_15": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "hydra_8": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] - }, + "nixpkgs-unstable_16": { "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "hydra_9": { - "inputs": { - "nix": "nix_17", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, + "nixpkgs-unstable_17": { "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "type": "github" } }, - "incl": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs-unstable_18": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "incl_2": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs-unstable_19": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "incl_3": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ] - }, + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1696577711, + "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "incl_4": { - "inputs": { - "nixlib": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs-unstable_20": { "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "inclusive": { - "inputs": { - "stdlib": "stdlib" - }, + "nixpkgs-unstable_21": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "inclusive_10": { - "inputs": { - "stdlib": "stdlib_10" - }, + "nixpkgs-unstable_22": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "inclusive_11": { - "inputs": { - "stdlib": "stdlib_11" - }, + "nixpkgs-unstable_23": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "inclusive_12": { - "inputs": { - "stdlib": "stdlib_12" - }, + "nixpkgs-unstable_24": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" - } - }, - "inclusive_2": { - "inputs": { - "stdlib": "stdlib_2" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + } + }, + "nixpkgs-unstable_25": { + "locked": { + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "inclusive_3": { - "inputs": { - "stdlib": "stdlib_3" - }, + "nixpkgs-unstable_26": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "inclusive_4": { - "inputs": { - "stdlib": "stdlib_4" - }, + "nixpkgs-unstable_27": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "inclusive_5": { - "inputs": { - "stdlib": "stdlib_5" - }, + "nixpkgs-unstable_28": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "inclusive_6": { - "inputs": { - "stdlib": "stdlib_6" - }, + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_7": { - "inputs": { - "stdlib": "stdlib_7" - }, + "nixpkgs-unstable_4": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_8": { - "inputs": { - "stdlib": "stdlib_8" - }, + "nixpkgs-unstable_5": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "inclusive_9": { - "inputs": { - "stdlib": "stdlib_9" - }, + "nixpkgs-unstable_6": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "inputs-check": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_6" - }, + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1692633913, - "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", - "owner": "input-output-hk", - "repo": "inputs-check", - "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "inputs-check", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iogo": { - "inputs": { - "devshell": "devshell_8", - "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_50", - "utils": "utils_13" - }, + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iogo_2": { - "inputs": { - "devshell": "devshell_18", - "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_79", - "utils": "utils_27" - }, + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix": { - "inputs": { - "blst": "blst", - "nixpkgs": "nixpkgs_7", - "secp256k1": "secp256k1", - "sodium": "sodium" - }, + "nixpkgs_10": { "locked": { - "lastModified": 1691469905, - "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix-ng": { - "inputs": { - "blst": "blst_2", - "nixpkgs": "nixpkgs_8", - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" - }, + "nixpkgs_100": { "locked": { - "lastModified": 1696471795, - "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_2": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "nixpkgs" - ] - }, + "nixpkgs_101": { "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_3": { - "inputs": { - "blst": "blst_7", - "nixpkgs": [ - "nixpkgs" - ], - "secp256k1": "secp256k1_7", - "sodium": "sodium_7" - }, + "nixpkgs_102": { "locked": { - "lastModified": 1715898223, - "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "29f19cd41dc593cf17bbc24194e34e7c20889fc9", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_4": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs_103": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix": { - "inputs": { - "blst": "blst_3", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "secp256k1": "secp256k1_3", - "sodium": "sodium_3" - }, + "nixpkgs_104": { "locked": { - "lastModified": 1698999258, - "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "blst": "blst_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "secp256k1": "secp256k1_4", - "sodium": "sodium_4" - }, + "nixpkgs_105": { "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "blst": "blst_5", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "secp256k1": "secp256k1_5", - "sodium": "sodium_5" - }, + "nixpkgs_106": { "locked": { - "lastModified": 1698746924, - "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_4": { - "inputs": { - "blst": "blst_6", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1_6", - "sodium": "sodium_6" - }, + "nixpkgs_107": { "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_5": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, + "nixpkgs_108": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "db-sync", - "nixpkgs" - ] - }, + "nixpkgs_109": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "iserv-proxy": { - "flake": false, + "nixpkgs_11": { "locked": { - "lastModified": 1688517130, - "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", - "ref": "hkm/remote-iserv", - "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", - "revCount": 13, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1690026219, + "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "iserv-proxy_2": { - "flake": false, + "nixpkgs_110": { "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_111": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "iserv-proxy_3": { - "flake": false, + "nixpkgs_112": { "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "iserv-proxy_4": { - "flake": false, + "nixpkgs_113": { "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, - "iserv-proxy_5": { - "flake": false, + "nixpkgs_114": { "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "iserv-proxy_6": { - "flake": false, + "nixpkgs_115": { "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "kupo": { - "flake": false, + "nixpkgs_116": { "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "kupo-nixos": { - "inputs": { - "haskell-nix": "haskell-nix_5", - "iohk-nix": "iohk-nix_4", - "kupo": [ - "kupo" - ], - "nixpkgs": [ - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs_117": { "locked": { - "lastModified": 1672905539, - "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src": { - "flake": false, + "nixpkgs_118": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_10": { - "flake": false, + "nixpkgs_119": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_11": { - "flake": false, + "nixpkgs_12": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_12": { - "flake": false, + "nixpkgs_120": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_13": { - "flake": false, + "nixpkgs_121": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_14": { - "flake": false, + "nixpkgs_122": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_15": { - "flake": false, + "nixpkgs_123": { "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_16": { - "flake": false, + "nixpkgs_124": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_17": { - "flake": false, + "nixpkgs_125": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_18": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "nixpkgs_126": { + "locked": { + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_19": { - "flake": false, + "nixpkgs_127": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_2": { - "flake": false, + "nixpkgs_128": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_20": { - "flake": false, + "nixpkgs_129": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_21": { - "flake": false, + "nixpkgs_13": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "nixos", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_3": { - "flake": false, + "nixpkgs_130": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_4": { - "flake": false, + "nixpkgs_131": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_5": { - "flake": false, + "nixpkgs_132": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_6": { - "flake": false, + "nixpkgs_133": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_7": { - "flake": false, + "nixpkgs_134": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_8": { - "flake": false, + "nixpkgs_135": { "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_9": { - "flake": false, + "nixpkgs_136": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor": { - "flake": false, + "nixpkgs_137": { "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1697269602, + "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { - "flake": false, + "nixpkgs_138": { "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1689261696, + "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "n2c": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_139": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_14": { "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, + "nixpkgs_140": { "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "n2c_4": { - "inputs": { - "flake-utils": [ - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_141": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "n2c_5": { - "inputs": { - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_55" - }, + "nixpkgs_142": { "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "n2c_6": { - "inputs": { - "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_90" - }, + "nixpkgs_143": { "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_5", - "nixpkgs-regression": "nixpkgs-regression" - }, + "nixpkgs_144": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "repo": "nixpkgs", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-cache-proxy": { - "inputs": { - "devshell": "devshell_15", - "inclusive": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_20" + "nixpkgs_15": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_16": { "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_13" - }, + "nixpkgs_17": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_8", - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ] + "nixpkgs_18": { + "locked": { + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "type": "github" }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_19": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad_2": { - "inputs": { - "flake-compat": "flake-compat_9", - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ] + "nixpkgs_2": { + "locked": { + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", + "type": "github" }, + "original": { + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_20": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad_3": { - "inputs": { - "flake-compat": "flake-compat_16", - "flake-utils": [ - "cardano-node", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_3", - "nixpkgs": [ - "cardano-node", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-node", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs_21": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools": { - "flake": false, + "nixpkgs_22": { "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_2": { - "flake": false, + "nixpkgs_23": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_3": { - "flake": false, + "nixpkgs_24": { "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_4": { - "flake": false, + "nixpkgs_25": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix-tools_5": { - "flake": false, + "nixpkgs_26": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_16" - }, + "nixpkgs_27": { "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_18" - }, + "nixpkgs_28": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_22" - }, + "nixpkgs_29": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_4": { - "inputs": { - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_26" - }, + "nixpkgs_3": { "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1677543769, + "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_5": { - "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_32" - }, + "nixpkgs_30": { "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_6": { - "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_34" - }, + "nixpkgs_31": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_7": { - "inputs": { - "flake-utils": "flake-utils_45", - "nixpkgs": "nixpkgs_93" - }, + "nixpkgs_32": { "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nix_10": { - "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_56", - "nixpkgs-regression": "nixpkgs-regression_9" - }, + "nixpkgs_33": { "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_58", - "nixpkgs-regression": "nixpkgs-regression_10" - }, + "nixpkgs_34": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix_12": { - "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_65", - "nixpkgs-regression": "nixpkgs-regression_11" - }, + "nixpkgs_35": { "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "nix_13": { - "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_66", - "nixpkgs-regression": "nixpkgs-regression_12" - }, + "nixpkgs_36": { "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "repo": "nixpkgs", "type": "github" } }, - "nix_14": { - "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_71", - "nixpkgs-regression": "nixpkgs-regression_13" - }, + "nixpkgs_37": { "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1708343346, + "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9312b935a538684049cb668885e60f15547d4c5f", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "nixos", + "ref": "release-23.11", + "repo": "nixpkgs", "type": "github" } }, - "nix_15": { - "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_73" + "nixpkgs_38": { + "locked": { + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "type": "github" }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_39": { "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { "owner": "NixOS", - "repo": "nix", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_16": { - "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_75", - "nixpkgs-regression": "nixpkgs-regression_14" - }, + "nixpkgs_4": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "lastModified": 1645013224, + "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "repo": "nixpkgs", + "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", "type": "github" }, "original": { "owner": "nixos", - "repo": "nix", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_17": { - "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_87", - "nixpkgs-regression": "nixpkgs-regression_15" - }, + "nixpkgs_40": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nix_18": { - "inputs": { - "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_89", - "nixpkgs-regression": "nixpkgs-regression_16" - }, + "nixpkgs_41": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_19": { - "inputs": { - "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_96", - "nixpkgs-regression": "nixpkgs-regression_17" - }, + "nixpkgs_42": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_2": { - "inputs": { - "flake-compat": "flake-compat_3", - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_9", - "nixpkgs-regression": "nixpkgs-regression_2" + "nixpkgs_43": { + "locked": { + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "type": "github" }, + "original": { + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_44": { "locked": { - "lastModified": 1693573010, - "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", "owner": "nixos", - "repo": "nix", - "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { "owner": "nixos", - "ref": "2.17-maintenance", - "repo": "nix", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nix_20": { - "inputs": { - "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_97", - "nixpkgs-regression": "nixpkgs-regression_18" - }, + "nixpkgs_45": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "nix_21": { - "inputs": { - "lowdown-src": "lowdown-src_21", - "nixpkgs": "nixpkgs_99", - "nixpkgs-regression": "nixpkgs-regression_19" - }, + "nixpkgs_46": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_13", - "nixpkgs-regression": "nixpkgs-regression_3" - }, + "nixpkgs_47": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_15", - "nixpkgs-regression": "nixpkgs-regression_4" - }, + "nixpkgs_48": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_25", - "nixpkgs-regression": "nixpkgs-regression_5" - }, + "nixpkgs_49": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_31", - "nixpkgs-regression": "nixpkgs-regression_6" - }, + "nixpkgs_5": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_7": { - "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_42", - "nixpkgs-regression": "nixpkgs-regression_7" - }, + "nixpkgs_50": { "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_8": { - "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_44" - }, + "nixpkgs_51": { "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { "owner": "NixOS", - "repo": "nix", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_9": { - "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_46", - "nixpkgs-regression": "nixpkgs-regression_8" - }, + "nixpkgs_52": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nixago": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixago-exts": { + "nixpkgs_53": { "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixago-exts_2": { + "nixpkgs_54": { "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { "owner": "nix-community", - "repo": "nixago-extensions", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_55": { "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", - "owner": "nix-community", - "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, + "nixpkgs_56": { "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nixago_4": { - "inputs": { - "flake-utils": [ - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs_57": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixago_5": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, + "nixpkgs_58": { "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "nixos", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "nixago_6": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "nixpkgs_59": { "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixlib": { + "nixpkgs_6": { "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "nixlib_2": { + "nixpkgs_60": { "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixlib_3": { + "nixpkgs_61": { "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nixpkgs": { + "nixpkgs_62": { "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "release-23.05", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003": { + "nixpkgs_63": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_10": { + "nixpkgs_64": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_11": { + "nixpkgs_65": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_2": { + "nixpkgs_66": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2003_3": { + "nixpkgs_67": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2003_4": { + "nixpkgs_68": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_5": { + "nixpkgs_69": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs-2003_6": { + "nixpkgs_7": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "owner": "nixos", + "ref": "nixos-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_7": { + "nixpkgs_70": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_8": { + "nixpkgs_71": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_9": { + "nixpkgs_72": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2105": { + "nixpkgs_73": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs-2105_10": { + "nixpkgs_74": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "nixpkgs-2105_11": { + "nixpkgs_75": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixos-21.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_2": { + "nixpkgs_76": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2105_3": { + "nixpkgs_77": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_4": { + "nixpkgs_78": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_5": { + "nixpkgs_79": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_6": { + "nixpkgs_8": { "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", - "owner": "NixOS", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "release-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_7": { + "nixpkgs_80": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_8": { + "nixpkgs_81": { "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_9": { + "nixpkgs_82": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111": { + "nixpkgs_83": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "owner": "nixos", "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "nixpkgs-2111_10": { + "nixpkgs_84": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs-2111_11": { + "nixpkgs_85": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_2": { + "nixpkgs_86": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs-2111_3": { + "nixpkgs_87": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs-2111_4": { + "nixpkgs_88": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2111_5": { + "nixpkgs_89": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs-2111_6": { + "nixpkgs_9": { "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", - "owner": "NixOS", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "owner": "nixos", + "ref": "release-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_7": { + "nixpkgs_90": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2111_8": { + "nixpkgs_91": { "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_9": { + "nixpkgs_92": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixos-22.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205": { + "nixpkgs_93": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_2": { + "nixpkgs_94": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_3": { + "nixpkgs_95": { "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", - "owner": "NixOS", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "owner": "nixos", + "ref": "nixos-22.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_4": { + "nixpkgs_96": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_5": { + "nixpkgs_97": { "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs-2205_6": { + "nixpkgs_98": { "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_7": { + "nixpkgs_99": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211": { + "nomad": { + "inputs": { + "nix": "nix_8", + "nixpkgs": "nixpkgs_46", + "utils": "utils_9" + }, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "nixpkgs-2211_2": { + "nomad-driver-nix": { + "inputs": { + "devshell": "devshell_6", + "inclusive": "inclusive_2", + "nix": "nix_9", + "nixpkgs": "nixpkgs_48", + "utils": "utils_10" + }, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2211_3": { + "nomad-driver-nix_2": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_5", + "nix": "nix_11", + "nixpkgs": "nixpkgs_60", + "utils": "utils_15" + }, "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2211_4": { + "nomad-driver-nix_3": { + "inputs": { + "devshell": "devshell_16", + "inclusive": "inclusive_10", + "nix": "nix_16", + "nixpkgs": "nixpkgs_77", + "utils": "utils_24" + }, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "nixpkgs-2211_5": { + "nomad-follower": { + "inputs": { + "devshell": "devshell_7", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_49", + "utils": "utils_11" + }, "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2211_6": { + "nomad-follower_2": { + "inputs": { + "devshell": "devshell_10", + "inclusive": "inclusive_6", + "nixpkgs": "nixpkgs_61", + "utils": "utils_16" + }, "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2305": { + "nomad-follower_3": { + "inputs": { + "devshell": "devshell_17", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_78", + "utils": "utils_25" + }, "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "nixpkgs-2305_2": { + "nomad_2": { + "inputs": { + "nix": "nix_15", + "nixpkgs": "nixpkgs_75", + "utils": "utils_23" + }, "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "nixpkgs-2305_3": { + "nosys": { "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "nixpkgs-2305_4": { + "nosys_2": { "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "nixpkgs-2311": { + "nosys_3": { "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "nixpkgs-docker": { + "nosys_4": { "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "nixpkgs-lib": { + "offchain-metadata-tools-service": { + "flake": false, "locked": { - "dir": "lib", - "lastModified": 1671359686, - "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", + "lastModified": 1684160858, + "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", + "owner": "input-output-hk", + "repo": "offchain-metadata-tools", + "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", "type": "github" }, "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "ref": "feat-add-password-to-db-conn-string", + "repo": "offchain-metadata-tools", "type": "github" } }, - "nixpkgs-lib_2": { + "ogmios": { + "flake": false, "locked": { - "dir": "lib", - "lastModified": 1682879489, - "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", "type": "github" }, "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", "type": "github" } }, - "nixpkgs-lib_3": { + "ogmios_2": { + "flake": false, "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "lastModified": 1720778275, + "narHash": "sha256-OpUeVbztfLy+9d2M5w2Jgx1b/IhDNAQdlr/eP1iKUQI=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "63a9e9d33eadbca22d1ecc90b9623b962148d174", "type": "github" }, "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "CardanoSolutions", + "ref": "v6.5.0", + "repo": "ogmios", "type": "github" } }, - "nixpkgs-lib_4": { + "old-ghc-nix": { + "flake": false, "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-lib_5": { + "old-ghc-nix_10": { + "flake": false, "locked": { - "lastModified": 1714640452, - "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression": { + "old-ghc-nix_11": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-regression_10": { + "old-ghc-nix_12": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_11": { + "old-ghc-nix_13": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_12": { + "old-ghc-nix_14": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_13": { + "old-ghc-nix_15": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_14": { + "old-ghc-nix_16": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_15": { + "old-ghc-nix_17": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_16": { + "old-ghc-nix_18": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_17": { + "old-ghc-nix_19": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_18": { + "old-ghc-nix_2": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-regression_19": { + "old-ghc-nix_20": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_2": { + "old-ghc-nix_21": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-regression_3": { + "old-ghc-nix_22": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-regression_4": { + "old-ghc-nix_23": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-regression_5": { + "old-ghc-nix_24": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-regression_6": { + "old-ghc-nix_25": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-regression_7": { + "old-ghc-nix_3": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_8": { + "old-ghc-nix_4": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-regression_9": { + "old-ghc-nix_5": { + "flake": false, "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" } }, - "nixpkgs-stable": { + "old-ghc-nix_6": { + "flake": false, "locked": { - "lastModified": 1690066826, - "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-unstable": { + "old-ghc-nix_7": { + "flake": false, "locked": { - "lastModified": 1690720142, - "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-unstable_10": { + "old-ghc-nix_8": { + "flake": false, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-unstable_11": { + "old-ghc-nix_9": { + "flake": false, "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "nixpkgs-unstable_12": { + "ops-lib": { + "flake": false, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-unstable_13": { + "ops-lib_2": { + "flake": false, "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-unstable_14": { + "ops-lib_3": { + "flake": false, "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "lastModified": 1713366514, + "narHash": "sha256-0hNlv+grFTE+TeXIbxSY97QoEEaUupOKMusZ4PesdrQ=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "19d83fa8eab1c0b7765f736eb4e8569d84d3e39d", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-unstable_2": { + "ops-lib_4": { + "flake": false, "locked": { - "lastModified": 1696577711, - "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-unstable_3": { + "ops-lib_5": { + "flake": false, "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-unstable_4": { + "ops-lib_6": { + "flake": false, "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "nixpkgs-unstable_5": { + "paisano": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys_2", + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "paisano-nix", + "repo": "core", "type": "github" } }, - "nixpkgs-unstable_6": { + "paisano-actions": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "paisano-nix", + "repo": "actions", "type": "github" } }, - "nixpkgs-unstable_7": { + "paisano-mdbook-preprocessor": { + "inputs": { + "crane": "crane", + "fenix": "fenix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", "type": "github" } }, - "nixpkgs-unstable_8": { + "paisano-tui": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std" + ] + }, "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "nixpkgs-unstable_9": { + "paisano-tui_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "nixpkgs_10": { + "paisano-tui_3": { + "flake": false, "locked": { - "lastModified": 1690026219, - "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", + "lastModified": 1708637035, + "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "231761b260587a64817e4ffae3afc15defaa15db", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "paisano-nix", + "ref": "v0.5.0", + "repo": "tui", "type": "github" } }, - "nixpkgs_11": { + "paisano_2": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "nosys": "nosys_3", + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1675249806, - "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, - "nixpkgs_12": { + "paisano_3": { + "inputs": { + "call-flake": "call-flake", + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "nosys": "nosys_4", + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1636823747, - "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", + "lastModified": 1708640854, + "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", + "owner": "paisano-nix", + "repo": "core", + "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", + "owner": "paisano-nix", + "ref": "0.2.0", + "repo": "core", "type": "github" } }, - "nixpkgs_13": { + "plutip": { + "inputs": { + "CHaP": "CHaP_20", + "cardano-node": [ + "cardano-node" + ], + "flake-compat": "flake-compat_56", + "hackage-nix": [ + "hackage-nix" + ], + "haskell-nix": [ + "haskell-nix" + ], + "iohk-nix": [ + "iohk-nix" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1695131439, + "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", + "owner": "mlabs-haskell", + "repo": "plutip", + "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "mlabs-haskell", + "ref": "gergely/version-bump", + "repo": "plutip", "type": "github" } }, - "nixpkgs_14": { + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils_32", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1641849362, + "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nix-community", + "ref": "fetched-projectdir-test", + "repo": "poetry2nix", + "type": "github" } }, - "nixpkgs_15": { + "pre-commit-hooks": { + "inputs": { + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_84" + }, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_16": { + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat_13", + "flake-utils": "flake-utils_15", + "gitignore": "gitignore", + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "cardano-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1708018599, + "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_17": { + "pre-commit-hooks-nix_10": { + "inputs": { + "flake-compat": "flake-compat_46", + "flake-utils": "flake-utils_89", + "gitignore": "gitignore_10", + "nixpkgs": "nixpkgs_129", + "nixpkgs-stable": "nixpkgs-stable_19" + }, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_18": { + "pre-commit-hooks-nix_11": { + "inputs": { + "flake-compat": "flake-compat_47", + "flake-utils": "flake-utils_91", + "gitignore": "gitignore_11", + "nixpkgs": "nixpkgs_131", + "nixpkgs-stable": "nixpkgs-stable_21" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", "type": "github" }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_19": { + "pre-commit-hooks-nix_12": { + "inputs": { + "flake-compat": "flake-compat_50", + "flake-utils": "flake-utils_97", + "gitignore": "gitignore_12", + "nixpkgs": "nixpkgs_135", + "nixpkgs-stable": "nixpkgs-stable_23" + }, "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_2": { + "pre-commit-hooks-nix_13": { + "inputs": { + "flake-compat": "flake-compat_52", + "flake-utils": "flake-utils_101", + "gitignore": "gitignore_13", + "nixpkgs": "nixpkgs_138", + "nixpkgs-stable": "nixpkgs-stable_25" + }, "locked": { - "lastModified": 1677543769, - "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_20": { + "pre-commit-hooks-nix_14": { + "inputs": { + "flake-compat": "flake-compat_53", + "flake-utils": "flake-utils_103", + "gitignore": "gitignore_14", + "nixpkgs": "nixpkgs_140", + "nixpkgs-stable": "nixpkgs-stable_27" + }, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_21": { + "pre-commit-hooks-nix_15": { + "inputs": { + "flake-compat": "flake-compat_54", + "flake-utils": "flake-utils_105", + "gitignore": "gitignore_15", + "nixpkgs": "nixpkgs_142", + "nixpkgs-stable": "nixpkgs-stable_29" + }, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_22": { + "pre-commit-hooks-nix_16": { + "inputs": { + "flake-compat": "flake-compat_55", + "flake-utils": "flake-utils_107", + "gitignore": "gitignore_16", + "nixpkgs": "nixpkgs_144", + "nixpkgs-stable": "nixpkgs-stable_31" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_23": { + "pre-commit-hooks-nix_2": { + "inputs": { + "flake-compat": "flake-compat_30", + "flake-utils": "flake-utils_57", + "gitignore": "gitignore_2", + "nixpkgs": "nixpkgs_105", + "nixpkgs-stable": "nixpkgs-stable_3" + }, "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_24": { + "pre-commit-hooks-nix_3": { + "inputs": { + "flake-compat": "flake-compat_32", + "flake-utils": "flake-utils_61", + "gitignore": "gitignore_3", + "nixpkgs": "nixpkgs_108", + "nixpkgs-stable": "nixpkgs-stable_5" + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" } }, - "nixpkgs_25": { + "pre-commit-hooks-nix_4": { + "inputs": { + "flake-compat": "flake-compat_33", + "flake-utils": "flake-utils_63", + "gitignore": "gitignore_4", + "nixpkgs": "nixpkgs_110", + "nixpkgs-stable": "nixpkgs-stable_7" + }, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_26": { + "pre-commit-hooks-nix_5": { + "inputs": { + "flake-compat": "flake-compat_36", + "flake-utils": "flake-utils_69", + "gitignore": "gitignore_5", + "nixpkgs": "nixpkgs_114", + "nixpkgs-stable": "nixpkgs-stable_9" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_27": { + "pre-commit-hooks-nix_6": { + "inputs": { + "flake-compat": "flake-compat_38", + "flake-utils": "flake-utils_73", + "gitignore": "gitignore_6", + "nixpkgs": "nixpkgs_117", + "nixpkgs-stable": "nixpkgs-stable_11" + }, "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_28": { + "pre-commit-hooks-nix_7": { + "inputs": { + "flake-compat": "flake-compat_39", + "flake-utils": "flake-utils_75", + "gitignore": "gitignore_7", + "nixpkgs": "nixpkgs_119", + "nixpkgs-stable": "nixpkgs-stable_13" + }, "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_29": { + "pre-commit-hooks-nix_8": { + "inputs": { + "flake-compat": "flake-compat_40", + "flake-utils": "flake-utils_77", + "gitignore": "gitignore_8", + "nixpkgs": "nixpkgs_121", + "nixpkgs-stable": "nixpkgs-stable_15" + }, "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2849da033884f54822af194400f8dff435ada242", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_3": { + "pre-commit-hooks-nix_9": { + "inputs": { + "flake-compat": "flake-compat_44", + "flake-utils": "flake-utils_85", + "gitignore": "gitignore_9", + "nixpkgs": "nixpkgs_126", + "nixpkgs-stable": "nixpkgs-stable_17" + }, "locked": { - "lastModified": 1645013224, - "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", + "lastModified": 1703426812, + "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "nixpkgs_30": { + "ragenix": { + "inputs": { + "agenix": "agenix_3", + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_50", + "rust-overlay": "rust-overlay_2" + }, "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "yaxitech", + "repo": "ragenix", + "type": "github" } }, - "nixpkgs_31": { + "ragenix_2": { + "inputs": { + "agenix": "agenix_4", + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_53", + "rust-overlay": "rust-overlay_3" + }, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs_32": { + "ragenix_3": { + "inputs": { + "agenix": "agenix_5", + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_62", + "rust-overlay": "rust-overlay_4" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs_33": { + "ragenix_4": { + "inputs": { + "agenix": "agenix_7", + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_79", + "rust-overlay": "rust-overlay_5" + }, "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "nixpkgs_34": { + "ragenix_5": { + "inputs": { + "agenix": "agenix_8", + "flake-utils": "flake-utils_36", + "nixpkgs": "nixpkgs_82", + "rust-overlay": "rust-overlay_6" + }, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "nixpkgs_35": { + "root": { + "inputs": { + "CHaP": "CHaP", + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-nix": "cardano-nix", + "cardano-node": "cardano-node", + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_24", + "hackage-nix": "hackage-nix", + "haskell-nix": "haskell-nix_4", + "hercules-ci-effects": "hercules-ci-effects_2", + "iohk-nix": "iohk-nix_3", + "kupo-nixos": "kupo-nixos", + "nixpkgs": [ + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-arion": "nixpkgs-arion", + "ogmios": "ogmios_2", + "plutip": "plutip" + } + }, + "rust-analyzer-src": { + "flake": false, "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "lastModified": 1645205556, + "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs_36": { + "rust-analyzer-src_2": { + "flake": false, "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs_37": { + "rust-analyzer-src_3": { + "flake": false, "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" } }, - "nixpkgs_38": { + "rust-analyzer-src_4": { + "flake": false, "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs_39": { + "rust-analyzer-src_5": { + "flake": false, "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" } }, - "nixpkgs_4": { + "rust-analyzer-src_6": { + "flake": false, "locked": { - "lastModified": 1680945546, - "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", + "lastModified": 1660579619, + "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs_40": { + "rust-analyzer-src_7": { + "flake": false, "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs_41": { + "rust-analyzer-src_8": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "nixpkgs_42": { + "rust-overlay": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_43": { + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs_44": { + "rust-overlay_3": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_45": { + "rust-overlay_4": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs_46": { + "rust-overlay_5": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" } }, - "nixpkgs_47": { + "rust-overlay_6": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "nixpkgs_48": { + "secp256k1": { + "flake": false, "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_49": { + "secp256k1_10": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_5": { + "secp256k1_11": { + "flake": false, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_50": { + "secp256k1_12": { + "flake": false, "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_51": { + "secp256k1_13": { + "flake": false, "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_52": { + "secp256k1_14": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_53": { + "secp256k1_15": { + "flake": false, "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_54": { + "secp256k1_16": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_55": { + "secp256k1_17": { + "flake": false, "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_56": { + "secp256k1_18": { + "flake": false, "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs_57": { + "secp256k1_19": { + "flake": false, "locked": { - "lastModified": 1652559422, - "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_58": { + "secp256k1_2": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs_59": { + "secp256k1_20": { + "flake": false, "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_6": { + "secp256k1_21": { + "flake": false, "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-23.05", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_60": { + "secp256k1_22": { + "flake": false, "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_61": { + "secp256k1_3": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_62": { + "secp256k1_4": { + "flake": false, "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_63": { + "secp256k1_5": { + "flake": false, "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_64": { + "secp256k1_6": { + "flake": false, "locked": { - "lastModified": 1643381941, - "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_65": { + "secp256k1_7": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs_66": { + "secp256k1_8": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" } }, - "nixpkgs_67": { + "secp256k1_9": { + "flake": false, "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "nixpkgs_68": { + "sodium": { + "flake": false, "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_69": { + "sodium_10": { + "flake": false, "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_7": { + "sodium_11": { + "flake": false, "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_70": { + "sodium_12": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_71": { + "sodium_13": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_72": { + "sodium_14": { + "flake": false, "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_73": { + "sodium_15": { + "flake": false, "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_74": { + "sodium_16": { + "flake": false, "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_75": { + "sodium_17": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_76": { + "sodium_18": { + "flake": false, "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_77": { + "sodium_19": { + "flake": false, "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_78": { + "sodium_2": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_79": { + "sodium_20": { + "flake": false, "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_8": { + "sodium_21": { + "flake": false, "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_80": { + "sodium_22": { + "flake": false, "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_81": { + "sodium_3": { + "flake": false, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_82": { + "sodium_4": { + "flake": false, "locked": { - "lastModified": 1646470760, - "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_83": { + "sodium_5": { + "flake": false, "locked": { - "lastModified": 1619531122, - "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_84": { + "sodium_6": { + "flake": false, "locked": { - "lastModified": 1656461576, - "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "nixpkgs_85": { + "sodium_7": { + "flake": false, "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_86": { + "sodium_8": { + "flake": false, "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_87": { + "sodium_9": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" } }, - "nixpkgs_88": { + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_11", + "nixpkgs-stable": "nixpkgs-stable" + }, "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1690199016, + "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "Mic92", + "repo": "sops-nix", "type": "github" } }, - "nixpkgs_89": { + "sphinxcontrib-haddock": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "type": "github" + }, + "original": { + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" } }, - "nixpkgs_9": { + "sphinxcontrib-haddock_10": { + "flake": false, "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_90": { + "sphinxcontrib-haddock_11": { + "flake": false, "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_91": { + "sphinxcontrib-haddock_12": { + "flake": false, "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_92": { + "sphinxcontrib-haddock_13": { + "flake": false, "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_93": { + "sphinxcontrib-haddock_14": { + "flake": false, "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_94": { + "sphinxcontrib-haddock_15": { + "flake": false, "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_95": { + "sphinxcontrib-haddock_2": { + "flake": false, "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_96": { + "sphinxcontrib-haddock_3": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" } }, - "nixpkgs_97": { + "sphinxcontrib-haddock_4": { + "flake": false, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_98": { + "sphinxcontrib-haddock_5": { + "flake": false, "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nixpkgs_99": { + "sphinxcontrib-haddock_6": { + "flake": false, "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "type": "github" } }, - "nomad": { - "inputs": { - "nix": "nix_8", - "nixpkgs": "nixpkgs_45", - "utils": "utils_9" - }, + "sphinxcontrib-haddock_7": { + "flake": false, "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nomad-driver-nix": { - "inputs": { - "devshell": "devshell_6", - "inclusive": "inclusive_2", - "nix": "nix_9", - "nixpkgs": "nixpkgs_47", - "utils": "utils_10" - }, + "sphinxcontrib-haddock_8": { + "flake": false, "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nomad-driver-nix_2": { - "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_5", - "nix": "nix_11", - "nixpkgs": "nixpkgs_59", - "utils": "utils_15" - }, + "sphinxcontrib-haddock_9": { + "flake": false, "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1594136664, + "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", + "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "michaelpj", + "repo": "sphinxcontrib-haddock", "type": "github" } }, - "nomad-driver-nix_3": { - "inputs": { - "devshell": "devshell_16", - "inclusive": "inclusive_10", - "nix": "nix_16", - "nixpkgs": "nixpkgs_76", - "utils": "utils_24" - }, + "stable": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1669735802, + "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "731cc710aeebecbf45a258e977e8b68350549522", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "nomad-follower": { - "inputs": { - "devshell": "devshell_7", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_48", - "utils": "utils_11" - }, + "stackage": { + "flake": false, "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "lastModified": 1701043780, + "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "repo": "stackage.nix", + "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-follower", + "repo": "stackage.nix", "type": "github" } }, - "nomad-follower_2": { - "inputs": { - "devshell": "devshell_10", - "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_60", - "utils": "utils_16" - }, + "stackage_10": { + "flake": false, "locked": { - "lastModified": 1658244176, - "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "lastModified": 1714954836, + "narHash": "sha256-ksReW99DOMNsNdRYDp/GIC2np/PVoqIIeuGbCB5YoFQ=", "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", + "repo": "stackage.nix", + "rev": "991de0dd2e48574c7aff96ea0b2315973c4d3458", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-follower", + "repo": "stackage.nix", "type": "github" } }, - "nomad-follower_3": { - "inputs": { - "devshell": "devshell_17", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_77", - "utils": "utils_25" - }, + "stackage_11": { + "flake": false, "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "lastModified": 1714608979, + "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "repo": "stackage.nix", + "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-follower", + "repo": "stackage.nix", "type": "github" } }, - "nomad_2": { - "inputs": { - "nix": "nix_15", - "nixpkgs": "nixpkgs_74", - "utils": "utils_23" - }, + "stackage_12": { + "flake": false, "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "repo": "stackage.nix", "type": "github" - } - }, - "nosys": { - "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + } + }, + "stackage_13": { + "flake": false, + "locked": { + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nosys_2": { + "stackage_14": { + "flake": false, "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nosys_3": { + "stackage_15": { + "flake": false, "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "nosys_4": { + "stackage_16": { + "flake": false, "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "offchain-metadata-tools-service": { + "stackage_17": { "flake": false, "locked": { - "lastModified": 1684160858, - "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", "owner": "input-output-hk", - "repo": "offchain-metadata-tools", - "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "feat-add-password-to-db-conn-string", - "repo": "offchain-metadata-tools", + "repo": "stackage.nix", "type": "github" } }, - "ogmios": { + "stackage_18": { "flake": false, "locked": { - "lastModified": 1657544501, - "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", + "lastModified": 1714608979, + "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v5.5.2", - "repo": "ogmios", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "ogmios_2": { + "stackage_19": { "flake": false, "locked": { - "lastModified": 1706884055, - "narHash": "sha256-GL3MYr9+VK7aTwfKK/ZtLVAS3ZTWJ4mZUJ10e+MR2U0=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "523f1cdcaf8451c4ee6ecb8cd2cd14e61f93e4be", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v6.0.3", - "repo": "ogmios", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix": { + "stackage_2": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_10": { + "stackage_20": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_11": { + "stackage_21": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_2": { + "stackage_22": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1713831135, + "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_3": { + "stackage_23": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_4": { + "stackage_24": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1703635755, + "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_5": { + "stackage_3": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_6": { + "stackage_4": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1718756571, + "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "027672fb6fd45828b0e623c8152572d4058429ad", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_7": { + "stackage_5": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_8": { + "stackage_6": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "old-ghc-nix_9": { + "stackage_7": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "ops-lib": { + "stackage_8": { "flake": false, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "ops-lib", + "repo": "stackage.nix", "type": "github" } }, - "ops-lib_2": { + "stackage_9": { "flake": false, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "lastModified": 1721434908, + "narHash": "sha256-I7fzy2F+UP+RNlYuuauDGPzdez7zcJGYWpwpgDXKvZo=", "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "repo": "stackage.nix", + "rev": "33160362221aed58db258b5cf7f30f8956870aac", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "ops-lib", + "repo": "stackage.nix", "type": "github" } }, - "ops-lib_3": { - "flake": false, + "statix": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1676888642, + "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", + "owner": "nerdypepper", + "repo": "statix", + "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "nerdypepper", + "repo": "statix", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "std": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_8", + "incl": "incl", + "makes": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_21", + "nosys": "nosys", + "yants": "yants" + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "ops-lib_5": { - "flake": false, + "std_2": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_11", + "incl": "incl_2", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_24", + "paisano": "paisano", + "paisano-tui": "paisano-tui", + "yants": "yants_2" + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "ops-lib_6": { - "flake": false, + "std_3": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "blank": "blank_3", + "devshell": "devshell_3", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_13", + "haumea": "haumea", + "incl": "incl_3", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_29", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", + "yants": "yants_3" + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "paisano": { + "std_4": { "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", + "blank": "blank_4", + "devshell": "devshell_5", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_18", + "makes": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "microvm": [ + "cardano-node", "cardano-automation", "tullia", "std", - "nixpkgs" + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_33", + "yants": "yants_4" + }, + "locked": { + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_5": { + "inputs": { + "arion": [ + "cardano-node", + "std", + "blank" + ], + "blank": "blank_5", + "devshell": [ + "cardano-node", + "std", + "blank" + ], + "dmerge": "dmerge_5", + "haumea": "haumea_2", + "incl": "incl_4", + "lib": "lib", + "makes": [ + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "std", + "blank" + ], + "n2c": [ + "cardano-node", + "std", + "blank" + ], + "nixago": [ + "cardano-node", + "std", + "blank" ], - "nosys": "nosys_2", - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", + "nixpkgs": "nixpkgs_37", + "paisano": "paisano_3", + "paisano-tui": "paisano-tui_3", + "terranix": [ + "cardano-node", "std", - "yants" - ] + "blank" + ], + "yants": "yants_5" }, "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "lastModified": 1715201063, + "narHash": "sha256-LcLYV5CDhIiJs3MfxGZFKsXPR4PtfnY4toZ75GM+2Pw=", + "owner": "divnix", + "repo": "std", + "rev": "b6924a7d37a46fc1dda8efe405040e27ecf1bbd6", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "core", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "paisano-actions": { + "std_6": { "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] + "devshell": "devshell_11", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_28", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_63", + "yants": "yants_7" }, "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "owner": "divnix", + "repo": "std", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "actions", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "paisano-mdbook-preprocessor": { + "std_7": { "inputs": { - "crane": "crane", - "fenix": "fenix_2", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions", - "std": [ - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] + "devshell": "devshell_19", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_44", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_93", + "yants": "yants_9" }, "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "owner": "divnix", + "repo": "std", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "paisano-tui": { + "std_8": { "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std" - ] + "devshell": "devshell_20", + "nixpkgs": "nixpkgs_96", + "yants": "yants_10" }, "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "owner": "divnix", + "repo": "std", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "tui", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "paisano-tui_2": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "std": [ - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] - }, + "stdlib": { "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "tui", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "paisano_2": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "nosys": "nosys_3", - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, + "stdlib_10": { "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", - "owner": "paisano-nix", - "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "core", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "plutip": { - "inputs": { - "CHaP": "CHaP_6", - "cardano-node": [ - "cardano-node" - ], - "flake-compat": "flake-compat_26", - "hackage-nix": [ - "hackage-nix" - ], - "haskell-nix": [ - "haskell-nix" - ], - "iohk-nix": [ - "iohk-nix" - ], - "nixpkgs": [ - "nixpkgs" - ] + "stdlib_11": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_12": { "locked": { - "lastModified": 1695131439, - "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "ref": "gergely/version-bump", - "repo": "plutip", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "poetry2nix": { - "inputs": { - "flake-utils": "flake-utils_32", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ] + "stdlib_13": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, + "stdlib_2": { "locked": { - "lastModified": 1641849362, - "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", - "owner": "nix-community", - "repo": "poetry2nix", - "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-community", - "ref": "fetched-projectdir-test", - "repo": "poetry2nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "pre-commit-hooks": { - "inputs": { - "flake-utils": "flake-utils_38", - "nixpkgs": "nixpkgs_83" - }, + "stdlib_3": { "locked": { - "lastModified": 1639823344, - "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "pre-commit-hooks-nix": { - "inputs": { - "flake-compat": "flake-compat_13", - "gitignore": "gitignore", - "nixpkgs": [ - "cardano-nix", - "nixpkgs" - ], - "nixpkgs-stable": [ - "cardano-nix", - "nixpkgs" - ] - }, + "stdlib_4": { "locked": { - "lastModified": 1716213921, - "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "ragenix": { - "inputs": { - "agenix": "agenix_3", - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_49", - "rust-overlay": "rust-overlay_2" - }, + "stdlib_5": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "ragenix_2": { - "inputs": { - "agenix": "agenix_4", - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_52", - "rust-overlay": "rust-overlay_3" - }, + "stdlib_6": { "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "ragenix_3": { - "inputs": { - "agenix": "agenix_5", - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_61", - "rust-overlay": "rust-overlay_4" - }, + "stdlib_7": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "ragenix_4": { - "inputs": { - "agenix": "agenix_7", - "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_78", - "rust-overlay": "rust-overlay_5" - }, + "stdlib_8": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "ragenix_5": { - "inputs": { - "agenix": "agenix_8", - "flake-utils": "flake-utils_36", - "nixpkgs": "nixpkgs_81", - "rust-overlay": "rust-overlay_6" - }, + "stdlib_9": { "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "root": { - "inputs": { - "CHaP": "CHaP", - "blockfrost": "blockfrost", - "cardano-configurations": "cardano-configurations", - "cardano-nix": "cardano-nix", - "cardano-node": "cardano-node", - "db-sync": "db-sync", - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_24", - "hackage-nix": "hackage-nix", - "haskell-nix": "haskell-nix_4", - "hercules-ci-effects": "hercules-ci-effects_2", - "iohk-nix": "iohk-nix_3", - "kupo": "kupo", - "kupo-nixos": "kupo-nixos", - "nixpkgs": [ - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios_2", - "plutip": "plutip" - } - }, - "rust-analyzer-src": { - "flake": false, + "systems": { "locked": { - "lastModified": 1645205556, - "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_2": { - "flake": false, + "systems_10": { "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_3": { - "flake": false, + "systems_11": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_4": { - "flake": false, + "systems_12": { "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_5": { - "flake": false, + "systems_13": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_6": { - "flake": false, + "systems_14": { "locked": { - "lastModified": 1660579619, - "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_7": { - "flake": false, + "systems_15": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-analyzer-src_8": { - "flake": false, + "systems_16": { "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "nixpkgs" - ] - }, + "systems_17": { "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay_2": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "systems_18": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay_3": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + "systems_19": { "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay_4": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "systems_2": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay_5": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "systems_20": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "rust-overlay_6": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "nixpkgs" - ] + "systems_21": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_22": { "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "secp256k1": { - "flake": false, + "systems_23": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "secp256k1_2": { - "flake": false, + "systems_24": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "secp256k1_3": { - "flake": false, + "systems_25": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "secp256k1_4": { - "flake": false, + "systems_26": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "secp256k1_5": { - "flake": false, + "systems_27": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "secp256k1_6": { - "flake": false, + "systems_28": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "secp256k1_7": { - "flake": false, + "systems_29": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sodium": { - "flake": false, + "systems_3": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sodium_2": { - "flake": false, + "systems_30": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sodium_3": { - "flake": false, + "systems_31": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sodium_4": { - "flake": false, + "systems_32": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sodium_5": { - "flake": false, + "systems_33": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sodium_6": { - "flake": false, + "systems_34": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sodium_7": { - "flake": false, + "systems_35": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_10", - "nixpkgs-stable": "nixpkgs-stable" - }, + "systems_36": { "locked": { - "lastModified": 1690199016, - "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "Mic92", - "repo": "sops-nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stable": { + "systems_37": { "locked": { - "lastModified": 1669735802, - "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "731cc710aeebecbf45a258e977e8b68350549522", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage": { - "flake": false, + "systems_38": { "locked": { - "lastModified": 1701043780, - "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_10": { - "flake": false, + "systems_39": { "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_2": { - "flake": false, + "systems_4": { "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_3": { - "flake": false, + "systems_40": { "locked": { - "lastModified": 1700438989, - "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_4": { - "flake": false, + "systems_41": { "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_5": { - "flake": false, + "systems_42": { "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_6": { - "flake": false, + "systems_43": { "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_7": { - "flake": false, + "systems_44": { "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_8": { - "flake": false, + "systems_45": { "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stackage_9": { - "flake": false, + "systems_46": { "locked": { - "lastModified": 1718756571, - "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "027672fb6fd45828b0e623c8152572d4058429ad", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "statix": { - "inputs": { - "fenix": "fenix", - "nixpkgs": "nixpkgs_3" - }, + "systems_47": { "locked": { - "lastModified": 1676888642, - "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", - "owner": "nerdypepper", - "repo": "statix", - "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "nerdypepper", - "repo": "statix", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std": { - "inputs": { - "arion": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_8", - "incl": "incl", - "makes": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "microvm": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_20", - "nosys": "nosys", - "yants": "yants" + "systems_48": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_49": { "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", - "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_2": { - "inputs": { - "arion": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "blank": "blank_2", - "devshell": "devshell_2", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_11", - "incl": "incl_2", - "makes": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "microvm": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_23", - "paisano": "paisano", - "paisano-tui": "paisano-tui", - "yants": "yants_2" - }, + "systems_5": { "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", - "owner": "divnix", - "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_3": { - "inputs": { - "arion": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "blank": "blank_3", - "devshell": "devshell_3", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_13", - "haumea": "haumea", - "incl": "incl_3", - "makes": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "microvm": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_28", - "paisano": "paisano_2", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", - "paisano-tui": "paisano-tui_2", - "yants": "yants_3" - }, + "systems_50": { "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", - "owner": "divnix", - "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_4": { - "inputs": { - "arion": [ - "cardano-node", - "tullia", - "std", - "blank" - ], - "blank": "blank_4", - "devshell": "devshell_5", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_20", - "incl": "incl_4", - "makes": [ - "cardano-node", - "tullia", - "std", - "blank" - ], - "microvm": [ - "cardano-node", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_36", - "nosys": "nosys_4", - "yants": "yants_4" - }, + "systems_51": { "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", - "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_5": { - "inputs": { - "devshell": "devshell_11", - "dmerge": "dmerge_5", - "flake-utils": "flake-utils_28", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "nixago": "nixago_5", - "nixpkgs": "nixpkgs_62", - "yants": "yants_6" - }, + "systems_52": { "locked": { - "lastModified": 1661370377, - "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", - "owner": "divnix", - "repo": "std", - "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_6": { - "inputs": { - "devshell": "devshell_19", - "dmerge": "dmerge_6", - "flake-utils": "flake-utils_44", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_6", - "nixpkgs": "nixpkgs_92", - "yants": "yants_8" - }, + "systems_53": { "locked": { - "lastModified": 1661367957, - "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", - "owner": "divnix", - "repo": "std", - "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "std_7": { - "inputs": { - "devshell": "devshell_20", - "nixpkgs": "nixpkgs_95", - "yants": "yants_9" - }, + "systems_54": { "locked": { - "lastModified": 1652784712, - "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", - "owner": "divnix", - "repo": "std", - "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib": { + "systems_55": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_10": { - "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "systems_56": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_11": { + "systems_57": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_12": { + "systems_58": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_13": { + "systems_59": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_2": { + "systems_6": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_3": { + "systems_60": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_4": { + "systems_61": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_5": { + "systems_62": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_6": { + "systems_63": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_7": { + "systems_64": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_8": { + "systems_65": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "stdlib_9": { + "systems_66": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-systems", + "repo": "default", "type": "github" } }, - "systems": { + "systems_7": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -15050,7 +31727,7 @@ "type": "github" } }, - "systems_2": { + "systems_8": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -15065,7 +31742,7 @@ "type": "github" } }, - "systems_3": { + "systems_9": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -15083,7 +31760,7 @@ "tailwind-haskell": { "inputs": { "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_86" + "nixpkgs": "nixpkgs_87" }, "locked": { "lastModified": 1654211622, @@ -15102,7 +31779,7 @@ }, "terraform-providers": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1695893013, @@ -15123,7 +31800,7 @@ "bats-assert": "bats-assert", "bats-support": "bats-support", "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_12", + "nixpkgs": "nixpkgs_13", "terranix-examples": "terranix-examples" }, "locked": { @@ -15286,7 +31963,7 @@ }, "treefmt-nix": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1683117219, @@ -15333,11 +32010,11 @@ ] }, "locked": { - "lastModified": 1715940852, - "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", + "lastModified": 1697388351, + "narHash": "sha256-63N2eBpKaziIy4R44vjpUu8Nz5fCJY7okKrkixvDQmY=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", + "rev": "aae39f64f5ecbe89792d05eacea5cb241891292a", "type": "github" }, "original": { @@ -15350,7 +32027,7 @@ "inputs": { "nix-nomad": "nix-nomad", "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_19", + "nixpkgs": "nixpkgs_20", "std": "std" }, "locked": { @@ -15396,16 +32073,20 @@ "tullia_3": { "inputs": { "nix-nomad": "nix-nomad_3", - "nix2container": "nix2container_6", - "nixpkgs": "nixpkgs_35", + "nix2container": "nix2container_5", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "nixpkgs" + ], "std": "std_4" }, "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "lastModified": 1668711738, + "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", "owner": "input-output-hk", "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", + "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", "type": "github" }, "original": { @@ -15417,8 +32098,8 @@ "tullia_4": { "inputs": { "nix2container": "nix2container_7", - "nixpkgs": "nixpkgs_94", - "std": "std_7" + "nixpkgs": "nixpkgs_95", + "std": "std_8" }, "locked": { "lastModified": 1657811465, @@ -15813,12 +32494,15 @@ } }, "utils_7": { + "inputs": { + "systems": "systems_6" + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -15915,6 +32599,30 @@ "type": "github" } }, + "yants_10": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, "yants_2": { "inputs": { "nixpkgs": [ @@ -15968,17 +32676,18 @@ "inputs": { "nixpkgs": [ "cardano-node", + "cardano-automation", "tullia", "std", "nixpkgs" ] }, "locked": { - "lastModified": 1667096281, - "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "lastModified": 1660507851, + "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", "owner": "divnix", "repo": "yants", - "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", "type": "github" }, "original": { @@ -15989,14 +32698,18 @@ }, "yants_5": { "inputs": { - "nixpkgs": "nixpkgs_53" + "nixpkgs": [ + "cardano-node", + "std", + "lib" + ] }, "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", "owner": "divnix", "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", "type": "github" }, "original": { @@ -16007,13 +32720,7 @@ }, "yants_6": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_54" }, "locked": { "lastModified": 1645126146, @@ -16031,7 +32738,13 @@ }, "yants_7": { "inputs": { - "nixpkgs": "nixpkgs_88" + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, @@ -16049,12 +32762,7 @@ }, "yants_8": { "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_89" }, "locked": { "lastModified": 1645126146, @@ -16075,7 +32783,6 @@ "nixpkgs": [ "db-sync", "cardano-world", - "tullia", "std", "nixpkgs" ] diff --git a/flake.nix b/flake.nix index 2e2d20113..ba74580e9 100644 --- a/flake.nix +++ b/flake.nix @@ -9,6 +9,7 @@ inputs = { nixpkgs.follows = "haskell-nix/nixpkgs-unstable"; + nixpkgs-arion.url = "github:NixOS/nixpkgs"; hackage-nix = { url = "github:input-output-hk/hackage.nix"; flake = false; @@ -32,35 +33,33 @@ flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/8.1.1"; + cardano-node.url = "github:input-output-hk/cardano-node/9.0.0"; # Get Ogmios from cardano-nix cardano-nix = { - url = "github:mlabs-haskell/cardano.nix"; + url = "github:mlabs-haskell/cardano.nix/dshuiski/ogmios-v6.5.0"; inputs.nixpkgs.follows = "nixpkgs"; }; # Get Ogmios test fixtures ogmios = { - url = "github:CardanoSolutions/ogmios/v6.0.3"; + url = "github:CardanoSolutions/ogmios/v6.5.0"; flake = false; }; kupo-nixos = { - url = "github:mlabs-haskell/kupo-nixos/6f89cbcc359893a2aea14dd380f9a45e04c6aa67"; - inputs.kupo.follows = "kupo"; - }; - - kupo = { - url = "github:CardanoSolutions/kupo/v2.2.0"; - flake = false; + url = "github:Fourierlabs/kupo-nixos/add-conway"; + inputs = { + CHaP.follows = "CHaP"; + kupo.url = "github:klarkc/kupo/d95a324f6a94a963cd91cb5d5f88ef50640e7b8d"; + }; }; # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations?rev=d952529afdfdf6d53ce190b1bf8af990a7ae9590"; + url = "github:input-output-hk/cardano-configurations?rev=de80edfd569d82d5191d2c6103834e700787bb2d"; flake = false; }; easy-purescript-nix = { @@ -90,6 +89,7 @@ outputs = { self , nixpkgs + , nixpkgs-arion , cardano-configurations , ... }@inputs: @@ -101,7 +101,7 @@ "aarch64-darwin" ]; - ogmiosVersion = "6.0.3"; + ogmiosVersion = "6.5.0"; perSystem = nixpkgs.lib.genAttrs supportedSystems; @@ -109,6 +109,7 @@ overlays = nixpkgs.lib.attrValues self.overlays ++ [ (_: _: { ogmios-fixtures = inputs.ogmios; + arion = (import nixpkgs-arion { inherit system; }).arion; }) ]; inherit system; diff --git a/nix/runtime.nix b/nix/runtime.nix index 4fef41131..029d3d3e2 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -27,7 +27,6 @@ rec { port = 1442; since = "origin"; match = "*/*"; # matches Shelley addresses only - tag = "v2.2.0"; deferDbIndexes = true; # whether to pass --defer-db-indexes pruneUtxo = true; # whether to pass --prune-utxo # TODO: Do we want to support connection through ogmios? From 57f331baa9483ca72f03226addc269b305c347b1 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Sat, 20 Jul 2024 19:29:27 +0200 Subject: [PATCH 307/373] Fix unit tests Ignore empty (corrupted) Ogmios fixtures. --- test/Ogmios/Aeson.purs | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/test/Ogmios/Aeson.purs b/test/Ogmios/Aeson.purs index f8af9bddd..b60492e4a 100644 --- a/test/Ogmios/Aeson.purs +++ b/test/Ogmios/Aeson.purs @@ -29,7 +29,7 @@ import Data.Bifunctor (lmap) import Data.Either (Either(Left, Right), hush) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), maybe) -import Data.String (toLower) +import Data.String (null, toLower) as String import Data.String.Regex (match, regex) import Data.String.Regex.Flags (noFlags) import Data.Traversable (for_) @@ -127,16 +127,19 @@ loadFixtures = do catMaybes <$> flip parTraverse (ourFixtures <> ogmiosFixtures) \fp -> do let bn = basename fp contents <- readTextFile UTF8 fp - aeson <- liftEither $ lmap - (error <<< ((bn <> "\n ") <> _) <<< printJsonDecodeError) - (Aeson.parseJsonStringToAeson contents) - pure case pattern >>= flip match bn >>> map tail of - Just [ Just query ] -> Just - { query - , bn - , aeson - } - _ -> Nothing + -- ignore empty (corrupted) fixtures + if String.null contents then pure Nothing + else do + aeson <- liftEither $ lmap + (error <<< ((bn <> "\n ") <> _) <<< printJsonDecodeError) + (Aeson.parseJsonStringToAeson contents) + pure case pattern >>= flip match bn >>> map tail of + Just [ Just query ] -> Just + { query + , bn + , aeson + } + _ -> Nothing let groupedFiles = @@ -151,12 +154,12 @@ suite = group "Ogmios Aeson tests" do groupedFiles <- lift loadFixtures let (tested' :: Map.Map String Check) = Map.fromFoldable $ map - (\(q /\ c) -> (toLower q /\ c)) + (\(q /\ c) -> (String.toLower q /\ c)) tested for_ groupedFiles \(query /\ files') -> let - query' = toLower query + query' = String.toLower query in let test' ch = test (query <> " (" <> show (length files') <> ")") $ for_ From 178dda53c733845dd0ab1586bed546295b6d5447 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Sat, 20 Jul 2024 21:07:46 +0200 Subject: [PATCH 308/373] Migrate eslint configuration, Fix formatting-check --- .eslintrc.json | 24 ------------------------ Makefile | 2 +- eslint.config.js | 33 +++++++++++++++++++++++++++++++++ flake.nix | 11 ++++++++--- package-lock.json | 35 +++++++++++++++++++++++++++++++++++ package.json | 4 +++- scripts/whitespace-check.sh | 2 +- 7 files changed, 81 insertions(+), 30 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.js diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 31c5b11fc..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "env": { - "browser": true, - "commonjs": true, - "es2021": true, - "node": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaVersion": "latest" - }, - "rules": { - "no-var": 2, - "no-case-declarations": 0, - "no-unused-vars": [ - "error", - { - "argsIgnorePattern": "^_", - "caughtErrorsIgnorePattern": "^_", - "vars": "local" - } - ] - } -} diff --git a/Makefile b/Makefile index 775ba5657..1e518ee4c 100644 --- a/Makefile +++ b/Makefile @@ -79,7 +79,7 @@ check-format: check-explicit-exports check-examples-imports check-whitespace @purs-tidy check ${ps-sources} @nixpkgs-fmt --check ${nix-sources} @prettier --log-level warn -c ${js-sources} - @eslint --quiet ${js-sources} --parser-options 'sourceType: module' + @eslint --quiet ${js-sources} format: @purs-tidy format-in-place ${ps-sources} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..36f30f1d9 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,33 @@ +import js from "@eslint/js"; +import globals from "globals"; + +export default [ + js.configs.recommended, + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.commonjs, + ...globals.es2021, + ...globals.node + }, + + ecmaVersion: "latest", + sourceType: "module" + }, + + rules: { + "no-var": 2, + "no-case-declarations": 0, + + "no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + caughtErrorsIgnorePattern: "^_", + vars: "local" + } + ] + } + } +]; diff --git a/flake.nix b/flake.nix index ba74580e9..6e199a80f 100644 --- a/flake.nix +++ b/flake.nix @@ -243,6 +243,8 @@ devShell = project.devShell; + nodeModules = project.nodeModules; + apps = { # TODO: restore this # https://github.com/Plutonomicon/cardano-transaction-lib/issues/1578 @@ -364,9 +366,9 @@ checks = perSystem (system: let pkgs = nixpkgsFor system; - + psProject = psProjectFor pkgs; in - (psProjectFor pkgs).checks + psProject.checks // { formatting-check = pkgs.runCommand "formatting-check" { @@ -379,7 +381,10 @@ ]; } '' - cd ${self} + cd $TMPDIR + ln -sfn ${psProject.nodeModules}/lib/node_modules node_modules + cp -r ${self}/* . + make check-format touch $out ''; diff --git a/package-lock.json b/package-lock.json index a9845f2b0..ed4a87579 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,12 +27,14 @@ "xhr2": "0.2.1" }, "devDependencies": { + "@eslint/js": "^9.7.0", "blakejs": "1.2.1", "buffer": "6.0.3", "doctoc": "^2.2.1", "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", + "globals": "^15.8.0", "jssha": "3.2.0", "node-polyfill-webpack-plugin": "2.0.1", "webpack": "5.88.1", @@ -421,6 +423,15 @@ "node": ">=12" } }, + "node_modules/@eslint/js": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", + "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -2884,6 +2895,18 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, + "node_modules/globals": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", + "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -6554,6 +6577,12 @@ "dev": true, "optional": true }, + "@eslint/js": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.7.0.tgz", + "integrity": "sha512-ChuWDQenef8OSFnvuxv0TCVxEwmu3+hPNKvM9B34qpM0rDRbjL8t5QkQeHHeAfsKQjuH9wS82WeCi1J/owatng==", + "dev": true + }, "@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -8549,6 +8578,12 @@ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, + "globals": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.8.0.tgz", + "integrity": "sha512-VZAJ4cewHTExBWDHR6yptdIBlx9YSSZuwojj9Nt5mBRXQzrKakDsVKQ1J63sklLvzAJm0X5+RpO4i3Y2hcOnFw==", + "dev": true + }, "gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", diff --git a/package.json b/package.json index 4cb9d9892..38d0a47a7 100755 --- a/package.json +++ b/package.json @@ -50,13 +50,15 @@ "xhr2": "0.2.1" }, "devDependencies": { + "@eslint/js": "^9.7.0", "blakejs": "1.2.1", - "jssha": "3.2.0", "buffer": "6.0.3", "doctoc": "^2.2.1", "esbuild": "0.18.11", "esbuild-plugin-polyfill-node": "^0.3.0", "esbuild-plugin-wasm": "^1.1.0", + "globals": "^15.8.0", + "jssha": "3.2.0", "node-polyfill-webpack-plugin": "2.0.1", "webpack": "5.88.1", "webpack-cli": "5.1.4", diff --git a/scripts/whitespace-check.sh b/scripts/whitespace-check.sh index 2e0f26cfb..02df695f2 100755 --- a/scripts/whitespace-check.sh +++ b/scripts/whitespace-check.sh @@ -6,7 +6,7 @@ files=" *.md *.nix *.dhall -.eslintrc.json +eslint.config.js .mlc_config.json .tidyrc.json LICENSE From 6fbe8add08cb1dec9aa20e1328bf5c897de35279 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Sat, 20 Jul 2024 21:14:55 +0200 Subject: [PATCH 309/373] Disable plutip-dependent nix checks --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 6e199a80f..fc7ad375b 100644 --- a/flake.nix +++ b/flake.nix @@ -220,6 +220,7 @@ }; checks = { + /* ctl-e2e-test = project.runE2ETest { name = "ctl-e2e-test"; runnerMain = "Test.Ctl.E2E"; @@ -234,6 +235,7 @@ name = "ctl-staking-test"; testMain = "Test.Ctl.Plutip.Staking"; }; + */ ctl-unit-test = project.runPursTest { name = "ctl-unit-test"; testMain = "Test.Ctl.Unit"; From f25782dbcce6b8806fe1528477bc91c8c2808563 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Sun, 21 Jul 2024 18:48:42 +0200 Subject: [PATCH 310/373] wip: drep registration --- examples/ByUrl.purs | 2 + examples/Gov/RegisterDrep.purs | 34 + flake.lock | 1265 +++++++++++--------- flake.nix | 13 +- packages.dhall | 33 + spago.dhall | 8 +- src/Contract/TxConstraints.purs | 1 + src/Contract/Wallet.purs | 1 + src/Internal/BalanceTx/BalanceTx.purs | 174 +-- src/Internal/Contract/Wallet.purs | 9 + src/Internal/ProcessConstraints.purs | 26 +- src/Internal/ProcessConstraints/Error.purs | 10 +- src/Internal/QueryM/Ogmios.purs | 4 + src/Internal/Service/Blockfrost.purs | 2 + src/Internal/Types/ProtocolParameters.purs | 2 + src/Internal/Types/TxConstraints.purs | 9 +- src/Internal/Wallet.purs | 4 +- src/Internal/Wallet/Cip30.purs | 22 +- 18 files changed, 879 insertions(+), 740 deletions(-) create mode 100644 examples/Gov/RegisterDrep.purs diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 659b402c7..e9a15a9ef 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -37,6 +37,7 @@ import Ctl.Examples.Cip30 as Cip30 import Ctl.Examples.Datums as Datums import Ctl.Examples.DropTokens as DropTokens import Ctl.Examples.ECDSA as ECDSA +import Ctl.Examples.Gov.RegisterDrep (contract) as RegisterDrep import Ctl.Examples.IncludeDatum (contract) as IncludeDatum import Ctl.Examples.MintsMultipleTokens as MintsMultipleTokens import Ctl.Examples.NativeScriptMints as NativeScriptMints @@ -225,6 +226,7 @@ examples = addSuccessLog <$> Map.fromFoldable , "ChangeGeneration1-3" /\ ChangeGeneration.checkChangeOutputsDistribution 1 3 7 , "IncludeDatum" /\ IncludeDatum.contract + , "Gov.RegisterDrep" /\ RegisterDrep.contract ] addSuccessLog :: Contract Unit -> Contract Unit diff --git a/examples/Gov/RegisterDrep.purs b/examples/Gov/RegisterDrep.purs new file mode 100644 index 000000000..d62056794 --- /dev/null +++ b/examples/Gov/RegisterDrep.purs @@ -0,0 +1,34 @@ +module Ctl.Examples.Gov.RegisterDrep + ( contract + , example + , main + ) where + +import Contract.Prelude + +import Cardano.Types.Credential (Credential(PubKeyHashCredential)) +import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Log (logInfo') +import Contract.Monad (Contract, launchAff_, runContract) +import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) +import Contract.TxConstraints (TxConstraints) +import Contract.TxConstraints (mustRegisterDrep) as Constraints +import Contract.Wallet (ownDrepKeyHash) + +main :: Effect Unit +main = example testnetNamiConfig + +example :: ContractParams -> Effect Unit +example = launchAff_ <<< flip runContract contract + +contract :: Contract Unit +contract = do + logInfo' "Running Examples.Gov.RegisterDrep" + drepCred <- PubKeyHashCredential <$> ownDrepKeyHash + let + constraints :: TxConstraints + constraints = Constraints.mustRegisterDrep drepCred Nothing + + txHash <- submitTxFromConstraints mempty constraints + awaitTxConfirmed txHash + logInfo' "Tx submitted successfully!" diff --git a/flake.lock b/flake.lock index 817b27a77..dfe9eca01 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1719559353, - "narHash": "sha256-oVMUrDPUbVVsTWOsmtZkpHFr+oKPEezlSADm/s3A2/o=", + "lastModified": 1721391352, + "narHash": "sha256-scqGnAT3tofRQUb9av5+lhGnpK03HzSKMmKk80wDb2A=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "35bd2072a08607a3b2e4b56cf9c243c449908017", + "rev": "ef6499225aab60d39690732fac110377ff8b8324", "type": "github" }, "original": { @@ -241,11 +241,11 @@ "CHaP_5": { "flake": false, "locked": { - "lastModified": 1719449018, - "narHash": "sha256-SHrUrjiohM2RMe0DctdO3vDDA40tI8NVTKmwc3egaeY=", + "lastModified": 1719971647, + "narHash": "sha256-Q/u1ZklzmymTSSY6/F48rGsWewVYf108torqR9+nFJU=", "owner": "intersectmbo", "repo": "cardano-haskell-packages", - "rev": "6b048d1ad84220d47f870635e84df63590f5efa3", + "rev": "bfd6987c14410757c6cde47e6c45621e9664347f", "type": "github" }, "original": { @@ -725,7 +725,7 @@ }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_37" + "nixpkgs": "nixpkgs_38" }, "locked": { "lastModified": 1641576265, @@ -744,7 +744,7 @@ "agenix-cli": { "inputs": { "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_38" + "nixpkgs": "nixpkgs_39" }, "locked": { "lastModified": 1641404293, @@ -763,7 +763,7 @@ "agenix-cli_2": { "inputs": { "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_40" + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641404293, @@ -782,7 +782,7 @@ "agenix-cli_3": { "inputs": { "flake-utils": "flake-utils_33", - "nixpkgs": "nixpkgs_69" + "nixpkgs": "nixpkgs_70" }, "locked": { "lastModified": 1641404293, @@ -800,7 +800,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_39" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -893,7 +893,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_68" + "nixpkgs": "nixpkgs_69" }, "locked": { "lastModified": 1641576265, @@ -961,7 +961,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_63" + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1646360966, @@ -1179,7 +1179,7 @@ "hydra": "hydra_7", "n2c": "n2c_5", "nix": "nix_10", - "nixpkgs": "nixpkgs_57", + "nixpkgs": "nixpkgs_58", "nixpkgs-docker": "nixpkgs-docker", "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad-driver-nix": "nomad-driver-nix_2", @@ -1271,7 +1271,7 @@ "fenix": "fenix_4", "hydra": "hydra_6", "nix": "nix_7", - "nixpkgs": "nixpkgs_43", + "nixpkgs": "nixpkgs_44", "nixpkgs-unstable": "nixpkgs-unstable_7", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", @@ -1305,7 +1305,7 @@ "fenix": "fenix_8", "hydra": "hydra_8", "nix": "nix_14", - "nixpkgs": "nixpkgs_72", + "nixpkgs": "nixpkgs_73", "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", @@ -1469,6 +1469,25 @@ "type": "github" } }, + "blockfrost_2": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1716466734, + "narHash": "sha256-h1LdfN/2KlD/XRjgj7rDNRInxSKZCOx6OF4jak/3c/E=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "7204204615be69b2f298ddf11f9a23dbbb184e55", + "type": "github" + }, + "original": { + "owner": "blockfrost", + "ref": "v2.0.3", + "repo": "blockfrost-backend-ryo", + "type": "github" + } + }, "blst": { "flake": false, "locked": { @@ -3168,7 +3187,7 @@ "inputs": { "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_51", + "nixpkgs": "nixpkgs_52", "ragenix": "ragenix_2" }, "locked": { @@ -3189,7 +3208,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_80", + "nixpkgs": "nixpkgs_81", "ragenix": "ragenix_5" }, "locked": { @@ -3298,17 +3317,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1715909148, - "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", + "lastModified": 1720834069, + "narHash": "sha256-jWFjTUTpwAgvsSJsQ4INgKl/paR489n1si35GLtSkuU=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" } }, @@ -3463,7 +3482,7 @@ }, "cardano-mainnet-mirror": { "inputs": { - "nixpkgs": "nixpkgs_14" + "nixpkgs": "nixpkgs_15" }, "locked": { "lastModified": 1642701714, @@ -3482,7 +3501,7 @@ }, "cardano-mainnet-mirror_2": { "inputs": { - "nixpkgs": "nixpkgs_24" + "nixpkgs": "nixpkgs_25" }, "locked": { "lastModified": 1642701714, @@ -3501,7 +3520,7 @@ }, "cardano-mainnet-mirror_3": { "inputs": { - "nixpkgs": "nixpkgs_33" + "nixpkgs": "nixpkgs_34" }, "locked": { "lastModified": 1642701714, @@ -3520,6 +3539,7 @@ }, "cardano-nix": { "inputs": { + "blockfrost": "blockfrost_2", "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", "cardano-db-sync": "cardano-db-sync", @@ -3537,15 +3557,16 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1719347639, - "narHash": "sha256-scs7lMJQ4kLSIh9nahzoxk9L6BRyt2hYFbr5nIaqCWY=", + "lastModified": 1721488215, + "narHash": "sha256-FWNozULI4EFXvcOjXdIFazSh3rsiDKK46JkgZKLS9qc=", "owner": "mlabs-haskell", "repo": "cardano.nix", - "rev": "5c8a8bffcee77189b72fea6123b2a2845d1e731e", + "rev": "ee593df780086cb158ffa4bda046a0797b409059", "type": "github" }, "original": { "owner": "mlabs-haskell", + "ref": "dshuiski/ogmios-v6.5.0", "repo": "cardano.nix", "type": "github" } @@ -3577,16 +3598,16 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1715793024, - "narHash": "sha256-BoTWJKRc7gWSzptEuk32A/uV6MRkRx7vKdz34k8IPY8=", + "lastModified": 1720733312, + "narHash": "sha256-8jDBmy8o8RhX8q9lNa0R1sMXhlzipoTaNVwReLDy9wQ=", "owner": "IntersectMBO", "repo": "cardano-node", - "rev": "38c7f1cf2db12dff9c814ad10049f411a4b30448", + "rev": "269dbda47ae538e355e837539d3e0e9833642fc7", "type": "github" }, "original": { "owner": "IntersectMBO", - "ref": "8.11.0-pre", + "ref": "9.0.0-sancho", "repo": "cardano-node", "type": "github" } @@ -4235,7 +4256,7 @@ "iohk-nix": "iohk-nix_2", "n2c": "n2c_6", "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_91", + "nixpkgs": "nixpkgs_92", "nixpkgs-haskell": [ "db-sync", "cardano-world", @@ -4271,7 +4292,7 @@ "inclusive": "inclusive_9", "nix": "nix_13", "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_67", + "nixpkgs": "nixpkgs_68", "poetry2nix": "poetry2nix", "utils": "utils_21" }, @@ -4353,7 +4374,7 @@ "crystal-x86_64-linux": "crystal-x86_64-linux", "crystalline-src": "crystalline-src", "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1683429373, @@ -4686,11 +4707,11 @@ "devour-flake": { "flake": false, "locked": { - "lastModified": 1709858306, - "narHash": "sha256-Vey9n9hIlWiSAZ6CCTpkrL6jt4r2JvT2ik9wa2bjeC0=", + "lastModified": 1694098737, + "narHash": "sha256-O51F4YFOzlaQAc9b6xjkAqpvrvCtw/Os2M7TU0y4SKQ=", "owner": "srid", "repo": "devour-flake", - "rev": "17b711b9deadbbc5629cb7d2b64cf86ae72af3fa", + "rev": "30a34036b29b0d12989ef6c8be77aa949d85aef5", "type": "github" }, "original": { @@ -4779,7 +4800,7 @@ "devshell_12": { "inputs": { "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_64" + "nixpkgs": "nixpkgs_65" }, "locked": { "lastModified": 1644227066, @@ -4998,18 +5019,18 @@ }, "devshell_4": { "inputs": { - "flake-utils": "flake-utils_15", "nixpkgs": [ "cardano-nix", "nixpkgs" - ] + ], + "systems": "systems_3" }, "locked": { - "lastModified": 1713532798, - "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", + "lastModified": 1695973661, + "narHash": "sha256-BP2H4c42GThPIhERtTpV1yCtwQHYHEKdRu7pjrmQAwo=", "owner": "numtide", "repo": "devshell", - "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", + "rev": "cd4e2fda3150dd2f689caeac07b7f47df5197c31", "type": "github" }, "original": { @@ -5700,7 +5721,7 @@ "inputs": { "flake-compat": "flake-compat_20", "flake-utils": "flake-utils_37", - "nixpkgs": "nixpkgs_82", + "nixpkgs": "nixpkgs_83", "pre-commit-hooks": "pre-commit-hooks" }, "locked": { @@ -5739,7 +5760,7 @@ "ema": "ema_2", "flake-parts": "flake-parts_6", "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_85", + "nixpkgs": "nixpkgs_86", "tailwind-haskell": "tailwind-haskell" }, "locked": { @@ -5844,7 +5865,7 @@ }, "fenix_2": { "inputs": { - "nixpkgs": "nixpkgs_29", + "nixpkgs": "nixpkgs_30", "rust-analyzer-src": "rust-analyzer-src_2" }, "locked": { @@ -5863,7 +5884,7 @@ }, "fenix_3": { "inputs": { - "nixpkgs": "nixpkgs_41", + "nixpkgs": "nixpkgs_42", "rust-analyzer-src": "rust-analyzer-src_3" }, "locked": { @@ -5908,7 +5929,7 @@ }, "fenix_5": { "inputs": { - "nixpkgs": "nixpkgs_54", + "nixpkgs": "nixpkgs_55", "rust-analyzer-src": "rust-analyzer-src_5" }, "locked": { @@ -5951,7 +5972,7 @@ }, "fenix_7": { "inputs": { - "nixpkgs": "nixpkgs_70", + "nixpkgs": "nixpkgs_71", "rust-analyzer-src": "rust-analyzer-src_7" }, "locked": { @@ -6976,11 +6997,11 @@ "nixpkgs-lib": "nixpkgs-lib_5" }, "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", "type": "github" }, "original": { @@ -6991,7 +7012,7 @@ }, "flake-parts_6": { "inputs": { - "nixpkgs": "nixpkgs_84" + "nixpkgs": "nixpkgs_85" }, "locked": { "lastModified": 1655570068, @@ -7029,11 +7050,11 @@ }, "flake-root": { "locked": { - "lastModified": 1713493429, - "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", + "lastModified": 1692742795, + "narHash": "sha256-f+Y0YhVCIJ06LemO+3Xx00lIcqQxSKJHXT/yk1RTKxw=", "owner": "srid", "repo": "flake-root", - "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", + "rev": "d9a70d9c7a5fd7f3258ccf48da9335e9b47c3937", "type": "github" }, "original": { @@ -7074,7 +7095,7 @@ }, "flake-utils_100": { "inputs": { - "systems": "systems_58" + "systems": "systems_59" }, "locked": { "lastModified": 1694529238, @@ -7092,7 +7113,7 @@ }, "flake-utils_101": { "inputs": { - "systems": "systems_59" + "systems": "systems_60" }, "locked": { "lastModified": 1685518550, @@ -7110,7 +7131,7 @@ }, "flake-utils_102": { "inputs": { - "systems": "systems_60" + "systems": "systems_61" }, "locked": { "lastModified": 1710146030, @@ -7128,7 +7149,7 @@ }, "flake-utils_103": { "inputs": { - "systems": "systems_61" + "systems": "systems_62" }, "locked": { "lastModified": 1710146030, @@ -7146,7 +7167,7 @@ }, "flake-utils_104": { "inputs": { - "systems": "systems_62" + "systems": "systems_63" }, "locked": { "lastModified": 1710146030, @@ -7164,7 +7185,7 @@ }, "flake-utils_105": { "inputs": { - "systems": "systems_63" + "systems": "systems_64" }, "locked": { "lastModified": 1710146030, @@ -7182,7 +7203,7 @@ }, "flake-utils_106": { "inputs": { - "systems": "systems_64" + "systems": "systems_65" }, "locked": { "lastModified": 1710146030, @@ -7200,7 +7221,7 @@ }, "flake-utils_107": { "inputs": { - "systems": "systems_65" + "systems": "systems_66" }, "locked": { "lastModified": 1710146030, @@ -7278,7 +7299,7 @@ }, "flake-utils_15": { "inputs": { - "systems": "systems_3" + "systems": "systems_4" }, "locked": { "lastModified": 1701680307, @@ -7372,7 +7393,7 @@ }, "flake-utils_20": { "inputs": { - "systems": "systems_4" + "systems": "systems_5" }, "locked": { "lastModified": 1710146030, @@ -7826,7 +7847,7 @@ }, "flake-utils_48": { "inputs": { - "systems": "systems_6" + "systems": "systems_7" }, "locked": { "lastModified": 1685518550, @@ -7844,7 +7865,7 @@ }, "flake-utils_49": { "inputs": { - "systems": "systems_7" + "systems": "systems_8" }, "locked": { "lastModified": 1710146030, @@ -7878,7 +7899,7 @@ }, "flake-utils_50": { "inputs": { - "systems": "systems_8" + "systems": "systems_9" }, "locked": { "lastModified": 1685518550, @@ -7896,7 +7917,7 @@ }, "flake-utils_51": { "inputs": { - "systems": "systems_9" + "systems": "systems_10" }, "locked": { "lastModified": 1710146030, @@ -7914,7 +7935,7 @@ }, "flake-utils_52": { "inputs": { - "systems": "systems_10" + "systems": "systems_11" }, "locked": { "lastModified": 1685518550, @@ -7932,7 +7953,7 @@ }, "flake-utils_53": { "inputs": { - "systems": "systems_11" + "systems": "systems_12" }, "locked": { "lastModified": 1710146030, @@ -7950,7 +7971,7 @@ }, "flake-utils_54": { "inputs": { - "systems": "systems_12" + "systems": "systems_13" }, "locked": { "lastModified": 1685518550, @@ -7968,7 +7989,7 @@ }, "flake-utils_55": { "inputs": { - "systems": "systems_13" + "systems": "systems_14" }, "locked": { "lastModified": 1701680307, @@ -7986,7 +8007,7 @@ }, "flake-utils_56": { "inputs": { - "systems": "systems_14" + "systems": "systems_15" }, "locked": { "lastModified": 1694529238, @@ -8004,7 +8025,7 @@ }, "flake-utils_57": { "inputs": { - "systems": "systems_15" + "systems": "systems_16" }, "locked": { "lastModified": 1685518550, @@ -8022,7 +8043,7 @@ }, "flake-utils_58": { "inputs": { - "systems": "systems_16" + "systems": "systems_17" }, "locked": { "lastModified": 1685518550, @@ -8040,7 +8061,7 @@ }, "flake-utils_59": { "inputs": { - "systems": "systems_17" + "systems": "systems_18" }, "locked": { "lastModified": 1701680307, @@ -8073,7 +8094,7 @@ }, "flake-utils_60": { "inputs": { - "systems": "systems_18" + "systems": "systems_19" }, "locked": { "lastModified": 1694529238, @@ -8091,7 +8112,7 @@ }, "flake-utils_61": { "inputs": { - "systems": "systems_19" + "systems": "systems_20" }, "locked": { "lastModified": 1685518550, @@ -8109,7 +8130,7 @@ }, "flake-utils_62": { "inputs": { - "systems": "systems_20" + "systems": "systems_21" }, "locked": { "lastModified": 1710146030, @@ -8127,7 +8148,7 @@ }, "flake-utils_63": { "inputs": { - "systems": "systems_21" + "systems": "systems_22" }, "locked": { "lastModified": 1710146030, @@ -8145,7 +8166,7 @@ }, "flake-utils_64": { "inputs": { - "systems": "systems_22" + "systems": "systems_23" }, "locked": { "lastModified": 1685518550, @@ -8163,7 +8184,7 @@ }, "flake-utils_65": { "inputs": { - "systems": "systems_23" + "systems": "systems_24" }, "locked": { "lastModified": 1710146030, @@ -8181,7 +8202,7 @@ }, "flake-utils_66": { "inputs": { - "systems": "systems_24" + "systems": "systems_25" }, "locked": { "lastModified": 1685518550, @@ -8199,7 +8220,7 @@ }, "flake-utils_67": { "inputs": { - "systems": "systems_25" + "systems": "systems_26" }, "locked": { "lastModified": 1701680307, @@ -8217,7 +8238,7 @@ }, "flake-utils_68": { "inputs": { - "systems": "systems_26" + "systems": "systems_27" }, "locked": { "lastModified": 1694529238, @@ -8235,7 +8256,7 @@ }, "flake-utils_69": { "inputs": { - "systems": "systems_27" + "systems": "systems_28" }, "locked": { "lastModified": 1685518550, @@ -8268,7 +8289,7 @@ }, "flake-utils_70": { "inputs": { - "systems": "systems_28" + "systems": "systems_29" }, "locked": { "lastModified": 1685518550, @@ -8286,7 +8307,7 @@ }, "flake-utils_71": { "inputs": { - "systems": "systems_29" + "systems": "systems_30" }, "locked": { "lastModified": 1701680307, @@ -8304,7 +8325,7 @@ }, "flake-utils_72": { "inputs": { - "systems": "systems_30" + "systems": "systems_31" }, "locked": { "lastModified": 1694529238, @@ -8322,7 +8343,7 @@ }, "flake-utils_73": { "inputs": { - "systems": "systems_31" + "systems": "systems_32" }, "locked": { "lastModified": 1685518550, @@ -8340,7 +8361,7 @@ }, "flake-utils_74": { "inputs": { - "systems": "systems_32" + "systems": "systems_33" }, "locked": { "lastModified": 1710146030, @@ -8358,7 +8379,7 @@ }, "flake-utils_75": { "inputs": { - "systems": "systems_33" + "systems": "systems_34" }, "locked": { "lastModified": 1710146030, @@ -8376,7 +8397,7 @@ }, "flake-utils_76": { "inputs": { - "systems": "systems_34" + "systems": "systems_35" }, "locked": { "lastModified": 1710146030, @@ -8394,7 +8415,7 @@ }, "flake-utils_77": { "inputs": { - "systems": "systems_35" + "systems": "systems_36" }, "locked": { "lastModified": 1710146030, @@ -8412,7 +8433,7 @@ }, "flake-utils_78": { "inputs": { - "systems": "systems_36" + "systems": "systems_37" }, "locked": { "lastModified": 1685518550, @@ -8430,7 +8451,7 @@ }, "flake-utils_79": { "inputs": { - "systems": "systems_37" + "systems": "systems_38" }, "locked": { "lastModified": 1710146030, @@ -8463,7 +8484,7 @@ }, "flake-utils_80": { "inputs": { - "systems": "systems_38" + "systems": "systems_39" }, "locked": { "lastModified": 1685518550, @@ -8481,7 +8502,7 @@ }, "flake-utils_81": { "inputs": { - "systems": "systems_39" + "systems": "systems_40" }, "locked": { "lastModified": 1710146030, @@ -8499,7 +8520,7 @@ }, "flake-utils_82": { "inputs": { - "systems": "systems_40" + "systems": "systems_41" }, "locked": { "lastModified": 1685518550, @@ -8517,7 +8538,7 @@ }, "flake-utils_83": { "inputs": { - "systems": "systems_41" + "systems": "systems_42" }, "locked": { "lastModified": 1701680307, @@ -8535,7 +8556,7 @@ }, "flake-utils_84": { "inputs": { - "systems": "systems_42" + "systems": "systems_43" }, "locked": { "lastModified": 1694529238, @@ -8553,7 +8574,7 @@ }, "flake-utils_85": { "inputs": { - "systems": "systems_43" + "systems": "systems_44" }, "locked": { "lastModified": 1685518550, @@ -8571,7 +8592,7 @@ }, "flake-utils_86": { "inputs": { - "systems": "systems_44" + "systems": "systems_45" }, "locked": { "lastModified": 1685518550, @@ -8589,7 +8610,7 @@ }, "flake-utils_87": { "inputs": { - "systems": "systems_45" + "systems": "systems_46" }, "locked": { "lastModified": 1701680307, @@ -8607,7 +8628,7 @@ }, "flake-utils_88": { "inputs": { - "systems": "systems_46" + "systems": "systems_47" }, "locked": { "lastModified": 1694529238, @@ -8625,7 +8646,7 @@ }, "flake-utils_89": { "inputs": { - "systems": "systems_47" + "systems": "systems_48" }, "locked": { "lastModified": 1685518550, @@ -8658,7 +8679,7 @@ }, "flake-utils_90": { "inputs": { - "systems": "systems_48" + "systems": "systems_49" }, "locked": { "lastModified": 1710146030, @@ -8676,7 +8697,7 @@ }, "flake-utils_91": { "inputs": { - "systems": "systems_49" + "systems": "systems_50" }, "locked": { "lastModified": 1710146030, @@ -8694,7 +8715,7 @@ }, "flake-utils_92": { "inputs": { - "systems": "systems_50" + "systems": "systems_51" }, "locked": { "lastModified": 1685518550, @@ -8712,7 +8733,7 @@ }, "flake-utils_93": { "inputs": { - "systems": "systems_51" + "systems": "systems_52" }, "locked": { "lastModified": 1710146030, @@ -8730,7 +8751,7 @@ }, "flake-utils_94": { "inputs": { - "systems": "systems_52" + "systems": "systems_53" }, "locked": { "lastModified": 1685518550, @@ -8748,7 +8769,7 @@ }, "flake-utils_95": { "inputs": { - "systems": "systems_53" + "systems": "systems_54" }, "locked": { "lastModified": 1701680307, @@ -8766,7 +8787,7 @@ }, "flake-utils_96": { "inputs": { - "systems": "systems_54" + "systems": "systems_55" }, "locked": { "lastModified": 1694529238, @@ -8784,7 +8805,7 @@ }, "flake-utils_97": { "inputs": { - "systems": "systems_55" + "systems": "systems_56" }, "locked": { "lastModified": 1685518550, @@ -8802,7 +8823,7 @@ }, "flake-utils_98": { "inputs": { - "systems": "systems_56" + "systems": "systems_57" }, "locked": { "lastModified": 1685518550, @@ -8820,7 +8841,7 @@ }, "flake-utils_99": { "inputs": { - "systems": "systems_57" + "systems": "systems_58" }, "locked": { "lastModified": 1701680307, @@ -9979,11 +10000,11 @@ ] }, "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", "type": "github" }, "original": { @@ -10407,7 +10428,7 @@ }, "gomod2nix": { "inputs": { - "nixpkgs": "nixpkgs_17", + "nixpkgs": "nixpkgs_18", "utils": "utils_2" }, "locked": { @@ -10426,7 +10447,7 @@ }, "gomod2nix_2": { "inputs": { - "nixpkgs": "nixpkgs_21", + "nixpkgs": "nixpkgs_22", "utils": "utils_4" }, "locked": { @@ -10445,7 +10466,7 @@ }, "gomod2nix_3": { "inputs": { - "nixpkgs": "nixpkgs_30", + "nixpkgs": "nixpkgs_31", "utils": "utils_6" }, "locked": { @@ -10481,11 +10502,11 @@ "hackage-nix": { "flake": false, "locked": { - "lastModified": 1719535035, - "narHash": "sha256-kCCfZytGgkRYlsiNe/dwLAnpNOvfywpjVl61hO/8l2M=", + "lastModified": 1721521743, + "narHash": "sha256-QaQGm8XnB86fAzkivPsJUcJ4HbJyBS0MhHtNHpGNwu4=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "66f23365685f71610460f3c2c0dfa91f96c532ac", + "rev": "0e72b229a40ce8cdf0d0f41caf9f23d544ca6578", "type": "github" }, "original": { @@ -10545,11 +10566,11 @@ "hackageNix_4": { "flake": false, "locked": { - "lastModified": 1718757495, - "narHash": "sha256-xviuxucDjsQ2HbqzfwVyB4ZmDIyzOnf2oDbVtwBHIco=", + "lastModified": 1719794527, + "narHash": "sha256-qHo/KumtwAzPkfLWODu/6EFY/LeK+C7iPJyAUdT8tGA=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "0bb764772a383a926e3f945397a0e59ab3c64d6d", + "rev": "da2a3bc9bd1b3dd41bb147279529c471c615fd3e", "type": "github" }, "original": { @@ -11704,6 +11725,7 @@ "hls-2.6": "hls-2.6_2", "hls-2.7": "hls-2.7_2", "hls-2.8": "hls-2.8_2", + "hls-2.9": "hls-2.9", "hpc-coveralls": "hpc-coveralls_10", "hydra": "hydra_12", "iserv-proxy": "iserv-proxy_6", @@ -11717,16 +11739,17 @@ "nixpkgs-2211": "nixpkgs-2211_6", "nixpkgs-2305": "nixpkgs-2305_5", "nixpkgs-2311": "nixpkgs-2311_2", + "nixpkgs-2405": "nixpkgs-2405", "nixpkgs-unstable": "nixpkgs-unstable_13", "old-ghc-nix": "old-ghc-nix_10", "stackage": "stackage_9" }, "locked": { - "lastModified": 1719535822, - "narHash": "sha256-IteIKK4+GEZI2nHqCz0zRVgQ3aqs/WXKTOt2sbHJmGk=", + "lastModified": 1721523035, + "narHash": "sha256-011KiatpklteNLAg7PkJsOnFpbmvhG5Ukg8vPnSqv2I=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "72bc84d0a4e8d0536505628040d96fd0a9e16c70", + "rev": "6bbe0755f28ea7798bf495d732fa92c3f20d6902", "type": "github" }, "original": { @@ -12346,7 +12369,7 @@ }, "haumea": { "inputs": { - "nixpkgs": "nixpkgs_27" + "nixpkgs": "nixpkgs_28" }, "locked": { "lastModified": 1685133229, @@ -12398,11 +12421,11 @@ ] }, "locked": { - "lastModified": 1714676393, - "narHash": "sha256-OA2LZPTCHyH0PcsNkjeTLvgsn4JmsV2VTvXQacHeUZU=", + "lastModified": 1710396488, + "narHash": "sha256-yniBB5i1un44uzR4+luTWvZ6uGvsHSYIBiDZ8Xox4nQ=", "owner": "mlabs-haskell", "repo": "hercules-ci-effects", - "rev": "5ad8f9613b735cb4f8222f07ae45ca37bfe76a23", + "rev": "f5ed263ab0585dfb7b067301419fb80d64e8c021", "type": "github" }, "original": { @@ -12415,7 +12438,7 @@ "hercules-ci-effects_2": { "inputs": { "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_98" + "nixpkgs": "nixpkgs_99" }, "locked": { "lastModified": 1719226092, @@ -14590,6 +14613,23 @@ "type": "github" } }, + "hls-2.9": { + "flake": false, + "locked": { + "lastModified": 1718469202, + "narHash": "sha256-THXSz+iwB1yQQsr/PY151+2GvtoJnTIB2pIQ4OzfjD4=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "40891bccb235ebacce020b598b083eab9dda80f1", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.9.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, "hpc-coveralls": { "flake": false, "locked": { @@ -16066,7 +16106,7 @@ "inputs-check": { "inputs": { "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_7" }, "locked": { "lastModified": 1692633913, @@ -16086,7 +16126,7 @@ "inputs": { "devshell": "devshell_8", "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_50", + "nixpkgs": "nixpkgs_51", "utils": "utils_13" }, "locked": { @@ -16107,7 +16147,7 @@ "inputs": { "devshell": "devshell_18", "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_79", + "nixpkgs": "nixpkgs_80", "utils": "utils_27" }, "locked": { @@ -16987,7 +17027,7 @@ "iohk-nix": { "inputs": { "blst": "blst", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_8", "secp256k1": "secp256k1", "sodium": "sodium" }, @@ -17009,7 +17049,7 @@ "iohk-nix-ng": { "inputs": { "blst": "blst_2", - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_9", "secp256k1": "secp256k1_2", "sodium": "sodium_2" }, @@ -17320,11 +17360,11 @@ "sodium": "sodium_7" }, "locked": { - "lastModified": 1719443312, - "narHash": "sha256-JNDuUSmV/o5ck1CfnBtX8GJE/Pli4zYE73LZZ7u0E2Q=", + "lastModified": 1721411284, + "narHash": "sha256-NH345tWz4A2epDp9qRy87PlXtMiQTd4wbr57Qymn2uY=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "b4025c38b609c6fb99762e2a6201e4e3488a39d3", + "rev": "05fe9ba470544e615799492080b7f0f15bf7da3c", "type": "github" }, "original": { @@ -17601,16 +17641,15 @@ "sodium": "sodium_6" }, "locked": { - "lastModified": 1715872246, - "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", + "lastModified": 1720729907, + "narHash": "sha256-V4GLBT8JdRiucMHnsZM23H0vUOsc3FYe/4ozHcblGwY=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "530c88c6f90be2191172a1b7cbc181d65112ef0a", + "rev": "7c47f37a9e6494dce0a81eb40badc7eaca2e4728", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "node-8.11", "repo": "iohk-nix", "type": "github" } @@ -18800,7 +18839,7 @@ "n2c_5": { "inputs": { "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_55" + "nixpkgs": "nixpkgs_56" }, "locked": { "lastModified": 1650568002, @@ -18819,7 +18858,7 @@ "n2c_6": { "inputs": { "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_90" + "nixpkgs": "nixpkgs_91" }, "locked": { "lastModified": 1655533513, @@ -18838,7 +18877,7 @@ "nix": { "inputs": { "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "nixpkgs-regression": "nixpkgs-regression" }, "locked": { @@ -19091,7 +19130,7 @@ "nix2container": { "inputs": { "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_16" + "nixpkgs": "nixpkgs_17" }, "locked": { "lastModified": 1671269339, @@ -19110,7 +19149,7 @@ "nix2container_10": { "inputs": { "flake-utils": "flake-utils_62", - "nixpkgs": "nixpkgs_108" + "nixpkgs": "nixpkgs_109" }, "locked": { "lastModified": 1712990762, @@ -19129,7 +19168,7 @@ "nix2container_11": { "inputs": { "flake-utils": "flake-utils_68", - "nixpkgs": "nixpkgs_112" + "nixpkgs": "nixpkgs_113" }, "locked": { "lastModified": 1703410130, @@ -19148,7 +19187,7 @@ "nix2container_12": { "inputs": { "flake-utils": "flake-utils_72", - "nixpkgs": "nixpkgs_115" + "nixpkgs": "nixpkgs_116" }, "locked": { "lastModified": 1703410130, @@ -19167,7 +19206,7 @@ "nix2container_13": { "inputs": { "flake-utils": "flake-utils_74", - "nixpkgs": "nixpkgs_117" + "nixpkgs": "nixpkgs_118" }, "locked": { "lastModified": 1712990762, @@ -19186,7 +19225,7 @@ "nix2container_14": { "inputs": { "flake-utils": "flake-utils_76", - "nixpkgs": "nixpkgs_119" + "nixpkgs": "nixpkgs_120" }, "locked": { "lastModified": 1712990762, @@ -19205,7 +19244,7 @@ "nix2container_15": { "inputs": { "flake-utils": "flake-utils_84", - "nixpkgs": "nixpkgs_124" + "nixpkgs": "nixpkgs_125" }, "locked": { "lastModified": 1703410130, @@ -19224,7 +19263,7 @@ "nix2container_16": { "inputs": { "flake-utils": "flake-utils_88", - "nixpkgs": "nixpkgs_127" + "nixpkgs": "nixpkgs_128" }, "locked": { "lastModified": 1703410130, @@ -19243,7 +19282,7 @@ "nix2container_17": { "inputs": { "flake-utils": "flake-utils_90", - "nixpkgs": "nixpkgs_129" + "nixpkgs": "nixpkgs_130" }, "locked": { "lastModified": 1712990762, @@ -19262,7 +19301,7 @@ "nix2container_18": { "inputs": { "flake-utils": "flake-utils_96", - "nixpkgs": "nixpkgs_133" + "nixpkgs": "nixpkgs_134" }, "locked": { "lastModified": 1703410130, @@ -19281,7 +19320,7 @@ "nix2container_19": { "inputs": { "flake-utils": "flake-utils_100", - "nixpkgs": "nixpkgs_136" + "nixpkgs": "nixpkgs_137" }, "locked": { "lastModified": 1703410130, @@ -19300,7 +19339,7 @@ "nix2container_2": { "inputs": { "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_18" + "nixpkgs": "nixpkgs_19" }, "locked": { "lastModified": 1658567952, @@ -19319,7 +19358,7 @@ "nix2container_20": { "inputs": { "flake-utils": "flake-utils_102", - "nixpkgs": "nixpkgs_138" + "nixpkgs": "nixpkgs_139" }, "locked": { "lastModified": 1712990762, @@ -19338,7 +19377,7 @@ "nix2container_21": { "inputs": { "flake-utils": "flake-utils_104", - "nixpkgs": "nixpkgs_140" + "nixpkgs": "nixpkgs_141" }, "locked": { "lastModified": 1712990762, @@ -19357,7 +19396,7 @@ "nix2container_22": { "inputs": { "flake-utils": "flake-utils_106", - "nixpkgs": "nixpkgs_142" + "nixpkgs": "nixpkgs_143" }, "locked": { "lastModified": 1712990762, @@ -19376,7 +19415,7 @@ "nix2container_3": { "inputs": { "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_22" + "nixpkgs": "nixpkgs_23" }, "locked": { "lastModified": 1658567952, @@ -19395,7 +19434,7 @@ "nix2container_4": { "inputs": { "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_26" + "nixpkgs": "nixpkgs_27" }, "locked": { "lastModified": 1671269339, @@ -19414,7 +19453,7 @@ "nix2container_5": { "inputs": { "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_31" + "nixpkgs": "nixpkgs_32" }, "locked": { "lastModified": 1658567952, @@ -19433,7 +19472,7 @@ "nix2container_6": { "inputs": { "flake-utils": "flake-utils_20", - "nixpkgs": "nixpkgs_35" + "nixpkgs": "nixpkgs_36" }, "locked": { "lastModified": 1712990762, @@ -19452,7 +19491,7 @@ "nix2container_7": { "inputs": { "flake-utils": "flake-utils_45", - "nixpkgs": "nixpkgs_93" + "nixpkgs": "nixpkgs_94" }, "locked": { "lastModified": 1653427219, @@ -19472,7 +19511,7 @@ "nix2container_8": { "inputs": { "flake-utils": "flake-utils_56", - "nixpkgs": "nixpkgs_103" + "nixpkgs": "nixpkgs_104" }, "locked": { "lastModified": 1703410130, @@ -19491,7 +19530,7 @@ "nix2container_9": { "inputs": { "flake-utils": "flake-utils_60", - "nixpkgs": "nixpkgs_106" + "nixpkgs": "nixpkgs_107" }, "locked": { "lastModified": 1703410130, @@ -19510,7 +19549,7 @@ "nix_10": { "inputs": { "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_56", + "nixpkgs": "nixpkgs_57", "nixpkgs-regression": "nixpkgs-regression_9" }, "locked": { @@ -19531,7 +19570,7 @@ "nix_11": { "inputs": { "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_58", + "nixpkgs": "nixpkgs_59", "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { @@ -19551,7 +19590,7 @@ "nix_12": { "inputs": { "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_65", + "nixpkgs": "nixpkgs_66", "nixpkgs-regression": "nixpkgs-regression_11" }, "locked": { @@ -19572,7 +19611,7 @@ "nix_13": { "inputs": { "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_66", + "nixpkgs": "nixpkgs_67", "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { @@ -19593,7 +19632,7 @@ "nix_14": { "inputs": { "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_71", + "nixpkgs": "nixpkgs_72", "nixpkgs-regression": "nixpkgs-regression_13" }, "locked": { @@ -19614,7 +19653,7 @@ "nix_15": { "inputs": { "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_73" + "nixpkgs": "nixpkgs_74" }, "locked": { "lastModified": 1604400356, @@ -19633,7 +19672,7 @@ "nix_16": { "inputs": { "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_75", + "nixpkgs": "nixpkgs_76", "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { @@ -19653,7 +19692,7 @@ "nix_17": { "inputs": { "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_87", + "nixpkgs": "nixpkgs_88", "nixpkgs-regression": "nixpkgs-regression_15" }, "locked": { @@ -19674,7 +19713,7 @@ "nix_18": { "inputs": { "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_89", + "nixpkgs": "nixpkgs_90", "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { @@ -19695,7 +19734,7 @@ "nix_19": { "inputs": { "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_96", + "nixpkgs": "nixpkgs_97", "nixpkgs-regression": "nixpkgs-regression_17" }, "locked": { @@ -19717,7 +19756,7 @@ "inputs": { "flake-compat": "flake-compat_3", "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_9", + "nixpkgs": "nixpkgs_10", "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { @@ -19738,7 +19777,7 @@ "nix_20": { "inputs": { "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_97", + "nixpkgs": "nixpkgs_98", "nixpkgs-regression": "nixpkgs-regression_18" }, "locked": { @@ -19759,7 +19798,7 @@ "nix_21": { "inputs": { "lowdown-src": "lowdown-src_21", - "nixpkgs": "nixpkgs_99", + "nixpkgs": "nixpkgs_100", "nixpkgs-regression": "nixpkgs-regression_19" }, "locked": { @@ -19780,7 +19819,7 @@ "nix_22": { "inputs": { "lowdown-src": "lowdown-src_22", - "nixpkgs": "nixpkgs_100", + "nixpkgs": "nixpkgs_101", "nixpkgs-regression": "nixpkgs-regression_20" }, "locked": { @@ -19801,7 +19840,7 @@ "nix_23": { "inputs": { "lowdown-src": "lowdown-src_23", - "nixpkgs": "nixpkgs_101", + "nixpkgs": "nixpkgs_102", "nixpkgs-regression": "nixpkgs-regression_21" }, "locked": { @@ -19822,7 +19861,7 @@ "nix_24": { "inputs": { "lowdown-src": "lowdown-src_24", - "nixpkgs": "nixpkgs_102", + "nixpkgs": "nixpkgs_103", "nixpkgs-regression": "nixpkgs-regression_22" }, "locked": { @@ -19843,7 +19882,7 @@ "nix_25": { "inputs": { "lowdown-src": "lowdown-src_25", - "nixpkgs": "nixpkgs_105", + "nixpkgs": "nixpkgs_106", "nixpkgs-regression": "nixpkgs-regression_23" }, "locked": { @@ -19864,7 +19903,7 @@ "nix_26": { "inputs": { "lowdown-src": "lowdown-src_26", - "nixpkgs": "nixpkgs_110", + "nixpkgs": "nixpkgs_111", "nixpkgs-regression": "nixpkgs-regression_24" }, "locked": { @@ -19885,7 +19924,7 @@ "nix_27": { "inputs": { "lowdown-src": "lowdown-src_27", - "nixpkgs": "nixpkgs_111", + "nixpkgs": "nixpkgs_112", "nixpkgs-regression": "nixpkgs-regression_25" }, "locked": { @@ -19906,7 +19945,7 @@ "nix_28": { "inputs": { "lowdown-src": "lowdown-src_28", - "nixpkgs": "nixpkgs_114", + "nixpkgs": "nixpkgs_115", "nixpkgs-regression": "nixpkgs-regression_26" }, "locked": { @@ -19927,7 +19966,7 @@ "nix_29": { "inputs": { "lowdown-src": "lowdown-src_29", - "nixpkgs": "nixpkgs_121", + "nixpkgs": "nixpkgs_122", "nixpkgs-regression": "nixpkgs-regression_27" }, "locked": { @@ -19948,7 +19987,7 @@ "nix_3": { "inputs": { "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_14", "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { @@ -19969,7 +20008,7 @@ "nix_30": { "inputs": { "lowdown-src": "lowdown-src_30", - "nixpkgs": "nixpkgs_122", + "nixpkgs": "nixpkgs_123", "nixpkgs-regression": "nixpkgs-regression_28" }, "locked": { @@ -19990,7 +20029,7 @@ "nix_31": { "inputs": { "lowdown-src": "lowdown-src_31", - "nixpkgs": "nixpkgs_123", + "nixpkgs": "nixpkgs_124", "nixpkgs-regression": "nixpkgs-regression_29" }, "locked": { @@ -20011,7 +20050,7 @@ "nix_32": { "inputs": { "lowdown-src": "lowdown-src_32", - "nixpkgs": "nixpkgs_126", + "nixpkgs": "nixpkgs_127", "nixpkgs-regression": "nixpkgs-regression_30" }, "locked": { @@ -20032,7 +20071,7 @@ "nix_33": { "inputs": { "lowdown-src": "lowdown-src_33", - "nixpkgs": "nixpkgs_131", + "nixpkgs": "nixpkgs_132", "nixpkgs-regression": "nixpkgs-regression_31" }, "locked": { @@ -20053,7 +20092,7 @@ "nix_34": { "inputs": { "lowdown-src": "lowdown-src_34", - "nixpkgs": "nixpkgs_132", + "nixpkgs": "nixpkgs_133", "nixpkgs-regression": "nixpkgs-regression_32" }, "locked": { @@ -20074,7 +20113,7 @@ "nix_35": { "inputs": { "lowdown-src": "lowdown-src_35", - "nixpkgs": "nixpkgs_135", + "nixpkgs": "nixpkgs_136", "nixpkgs-regression": "nixpkgs-regression_33" }, "locked": { @@ -20095,7 +20134,7 @@ "nix_4": { "inputs": { "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_15", + "nixpkgs": "nixpkgs_16", "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { @@ -20116,7 +20155,7 @@ "nix_5": { "inputs": { "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_25", + "nixpkgs": "nixpkgs_26", "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { @@ -20137,7 +20176,7 @@ "nix_6": { "inputs": { "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_34", + "nixpkgs": "nixpkgs_35", "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { @@ -20158,7 +20197,7 @@ "nix_7": { "inputs": { "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_42", + "nixpkgs": "nixpkgs_43", "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { @@ -20179,7 +20218,7 @@ "nix_8": { "inputs": { "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_44" + "nixpkgs": "nixpkgs_45" }, "locked": { "lastModified": 1604400356, @@ -20198,7 +20237,7 @@ "nix_9": { "inputs": { "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_46", + "nixpkgs": "nixpkgs_47", "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { @@ -22650,11 +22689,11 @@ }, "nixpkgs-2305_5": { "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "lastModified": 1705033721, + "narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea", "type": "github" }, "original": { @@ -22874,11 +22913,11 @@ }, "nixpkgs-2311_2": { "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "lastModified": 1719957072, + "narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "rev": "7144d6241f02d171d25fba3edeaf15e0f2592105", "type": "github" }, "original": { @@ -23000,30 +23039,61 @@ "type": "github" } }, - "nixpkgs-docker": { + "nixpkgs-2405": { "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", - "owner": "nixos", + "lastModified": 1720122915, + "narHash": "sha256-Nby8WWxj0elBu1xuRaUcRjPi/rU3xVbkAt2kj4QwX2U=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "rev": "835cf2d3f37989c5db6585a28de967a667a75fb1", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", + "ref": "nixpkgs-24.05-darwin", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "nixpkgs-lib": { + "nixpkgs-arion": { "locked": { - "dir": "lib", - "lastModified": 1671359686, - "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", + "lastModified": 1721571961, + "narHash": "sha256-jfF4gpRUpTBY2OxDB0FRySsgNGOiuDckEtu7YDQom3Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", + "rev": "4cc8b29327bed3d52b40041f810f49734298af46", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-docker": { + "locked": { + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1671359686, + "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", "type": "github" }, "original": { @@ -23090,14 +23160,20 @@ }, "nixpkgs-lib_5": { "locked": { - "lastModified": 1714640452, - "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + "dir": "lib", + "lastModified": 1696019113, + "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs-regression": { @@ -24179,17 +24255,17 @@ }, "nixpkgs-unstable_13": { "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "lastModified": 1720181791, + "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, @@ -24563,16 +24639,16 @@ }, "nixpkgs_10": { "locked": { - "lastModified": 1690026219, - "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.11-small", "repo": "nixpkgs", "type": "github" } @@ -24626,6 +24702,22 @@ } }, "nixpkgs_103": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_104": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -24640,7 +24732,7 @@ "type": "github" } }, - "nixpkgs_104": { + "nixpkgs_105": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -24656,7 +24748,7 @@ "type": "github" } }, - "nixpkgs_105": { + "nixpkgs_106": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24672,7 +24764,7 @@ "type": "github" } }, - "nixpkgs_106": { + "nixpkgs_107": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -24687,7 +24779,7 @@ "type": "github" } }, - "nixpkgs_107": { + "nixpkgs_108": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -24703,7 +24795,7 @@ "type": "github" } }, - "nixpkgs_108": { + "nixpkgs_109": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -24718,13 +24810,13 @@ "type": "github" } }, - "nixpkgs_109": { + "nixpkgs_11": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1690026219, + "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", "type": "github" }, "original": { @@ -24734,13 +24826,13 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_110": { "locked": { - "lastModified": 1675249806, - "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { @@ -24750,7 +24842,7 @@ "type": "github" } }, - "nixpkgs_110": { + "nixpkgs_111": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24766,7 +24858,7 @@ "type": "github" } }, - "nixpkgs_111": { + "nixpkgs_112": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24782,7 +24874,7 @@ "type": "github" } }, - "nixpkgs_112": { + "nixpkgs_113": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -24797,7 +24889,7 @@ "type": "github" } }, - "nixpkgs_113": { + "nixpkgs_114": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -24813,7 +24905,7 @@ "type": "github" } }, - "nixpkgs_114": { + "nixpkgs_115": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24829,7 +24921,7 @@ "type": "github" } }, - "nixpkgs_115": { + "nixpkgs_116": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -24844,7 +24936,7 @@ "type": "github" } }, - "nixpkgs_116": { + "nixpkgs_117": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -24860,7 +24952,7 @@ "type": "github" } }, - "nixpkgs_117": { + "nixpkgs_118": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -24875,7 +24967,7 @@ "type": "github" } }, - "nixpkgs_118": { + "nixpkgs_119": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -24891,37 +24983,38 @@ "type": "github" } }, - "nixpkgs_119": { + "nixpkgs_12": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_120": { "locked": { - "lastModified": 1636823747, - "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", - "owner": "nixos", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_120": { + "nixpkgs_121": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -24937,7 +25030,7 @@ "type": "github" } }, - "nixpkgs_121": { + "nixpkgs_122": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24953,7 +25046,7 @@ "type": "github" } }, - "nixpkgs_122": { + "nixpkgs_123": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24969,7 +25062,7 @@ "type": "github" } }, - "nixpkgs_123": { + "nixpkgs_124": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -24985,7 +25078,7 @@ "type": "github" } }, - "nixpkgs_124": { + "nixpkgs_125": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25000,7 +25093,7 @@ "type": "github" } }, - "nixpkgs_125": { + "nixpkgs_126": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -25016,7 +25109,7 @@ "type": "github" } }, - "nixpkgs_126": { + "nixpkgs_127": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25032,7 +25125,7 @@ "type": "github" } }, - "nixpkgs_127": { + "nixpkgs_128": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25047,7 +25140,7 @@ "type": "github" } }, - "nixpkgs_128": { + "nixpkgs_129": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -25063,38 +25156,37 @@ "type": "github" } }, - "nixpkgs_129": { + "nixpkgs_13": { "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_130": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_130": { + "nixpkgs_131": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25110,7 +25202,7 @@ "type": "github" } }, - "nixpkgs_131": { + "nixpkgs_132": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25126,7 +25218,7 @@ "type": "github" } }, - "nixpkgs_132": { + "nixpkgs_133": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25142,7 +25234,7 @@ "type": "github" } }, - "nixpkgs_133": { + "nixpkgs_134": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25157,7 +25249,7 @@ "type": "github" } }, - "nixpkgs_134": { + "nixpkgs_135": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -25173,7 +25265,7 @@ "type": "github" } }, - "nixpkgs_135": { + "nixpkgs_136": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25189,7 +25281,7 @@ "type": "github" } }, - "nixpkgs_136": { + "nixpkgs_137": { "locked": { "lastModified": 1697269602, "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", @@ -25204,7 +25296,7 @@ "type": "github" } }, - "nixpkgs_137": { + "nixpkgs_138": { "locked": { "lastModified": 1689261696, "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", @@ -25220,7 +25312,7 @@ "type": "github" } }, - "nixpkgs_138": { + "nixpkgs_139": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25235,37 +25327,39 @@ "type": "github" } }, - "nixpkgs_139": { + "nixpkgs_14": { "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_140": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "lastModified": 1710765496, + "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_140": { + "nixpkgs_141": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25280,7 +25374,7 @@ "type": "github" } }, - "nixpkgs_141": { + "nixpkgs_142": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25296,7 +25390,7 @@ "type": "github" } }, - "nixpkgs_142": { + "nixpkgs_143": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25311,7 +25405,7 @@ "type": "github" } }, - "nixpkgs_143": { + "nixpkgs_144": { "locked": { "lastModified": 1710765496, "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", @@ -25328,6 +25422,20 @@ } }, "nixpkgs_15": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_16": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25343,7 +25451,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_17": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -25358,7 +25466,7 @@ "type": "github" } }, - "nixpkgs_17": { + "nixpkgs_18": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -25374,7 +25482,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_19": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -25389,39 +25497,39 @@ "type": "github" } }, - "nixpkgs_19": { + "nixpkgs_2": { "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.11", + "owner": "NixOS", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_20": { "locked": { - "lastModified": 1677543769, - "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", - "owner": "NixOS", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_20": { + "nixpkgs_21": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -25437,7 +25545,7 @@ "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_22": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -25453,7 +25561,7 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_23": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -25468,7 +25576,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_24": { "locked": { "lastModified": 1675940568, "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", @@ -25484,7 +25592,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_25": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -25498,7 +25606,7 @@ "type": "indirect" } }, - "nixpkgs_25": { + "nixpkgs_26": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25514,7 +25622,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_27": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -25529,7 +25637,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_28": { "locked": { "lastModified": 1681001314, "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", @@ -25544,7 +25652,7 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_29": { "locked": { "lastModified": 1675940568, "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", @@ -25560,39 +25668,39 @@ "type": "github" } }, - "nixpkgs_29": { + "nixpkgs_3": { "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", + "lastModified": 1677543769, + "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixos-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_30": { "locked": { - "lastModified": 1645013224, - "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_30": { + "nixpkgs_31": { "locked": { "lastModified": 1653581809, "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", @@ -25608,7 +25716,7 @@ "type": "github" } }, - "nixpkgs_31": { + "nixpkgs_32": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -25623,7 +25731,7 @@ "type": "github" } }, - "nixpkgs_32": { + "nixpkgs_33": { "locked": { "lastModified": 1665087388, "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", @@ -25639,7 +25747,7 @@ "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_34": { "locked": { "lastModified": 1642336556, "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", @@ -25653,7 +25761,7 @@ "type": "indirect" } }, - "nixpkgs_34": { + "nixpkgs_35": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -25669,7 +25777,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_36": { "locked": { "lastModified": 1712920918, "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", @@ -25684,7 +25792,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_37": { "locked": { "lastModified": 1708343346, "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", @@ -25700,7 +25808,7 @@ "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_38": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -25714,7 +25822,7 @@ "type": "indirect" } }, - "nixpkgs_38": { + "nixpkgs_39": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -25730,37 +25838,37 @@ "type": "github" } }, - "nixpkgs_39": { + "nixpkgs_4": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", + "lastModified": 1645013224, + "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_40": { "locked": { - "lastModified": 1680945546, - "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", - "owner": "nixos", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs_40": { + "nixpkgs_41": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -25776,7 +25884,7 @@ "type": "github" } }, - "nixpkgs_41": { + "nixpkgs_42": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -25792,7 +25900,7 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_43": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -25807,7 +25915,7 @@ "type": "indirect" } }, - "nixpkgs_43": { + "nixpkgs_44": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -25823,7 +25931,7 @@ "type": "github" } }, - "nixpkgs_44": { + "nixpkgs_45": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -25838,7 +25946,7 @@ "type": "indirect" } }, - "nixpkgs_45": { + "nixpkgs_46": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -25854,7 +25962,7 @@ "type": "github" } }, - "nixpkgs_46": { + "nixpkgs_47": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -25869,7 +25977,7 @@ "type": "indirect" } }, - "nixpkgs_47": { + "nixpkgs_48": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -25885,7 +25993,7 @@ "type": "github" } }, - "nixpkgs_48": { + "nixpkgs_49": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -25901,13 +26009,13 @@ "type": "github" } }, - "nixpkgs_49": { + "nixpkgs_5": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", "type": "github" }, "original": { @@ -25917,23 +26025,23 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_50": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_50": { + "nixpkgs_51": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -25949,7 +26057,7 @@ "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_52": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -25965,7 +26073,7 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_53": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -25981,7 +26089,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_54": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -25996,7 +26104,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_55": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26012,7 +26120,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_56": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -26027,7 +26135,7 @@ "type": "github" } }, - "nixpkgs_56": { + "nixpkgs_57": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -26042,7 +26150,7 @@ "type": "indirect" } }, - "nixpkgs_57": { + "nixpkgs_58": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -26058,7 +26166,7 @@ "type": "github" } }, - "nixpkgs_58": { + "nixpkgs_59": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26073,39 +26181,39 @@ "type": "indirect" } }, - "nixpkgs_59": { + "nixpkgs_6": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_60": { "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-23.05", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_60": { + "nixpkgs_61": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -26121,7 +26229,7 @@ "type": "github" } }, - "nixpkgs_61": { + "nixpkgs_62": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26137,7 +26245,7 @@ "type": "github" } }, - "nixpkgs_62": { + "nixpkgs_63": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -26153,7 +26261,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_64": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -26169,7 +26277,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_65": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -26185,7 +26293,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_66": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26200,7 +26308,7 @@ "type": "indirect" } }, - "nixpkgs_66": { + "nixpkgs_67": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26215,7 +26323,7 @@ "type": "indirect" } }, - "nixpkgs_67": { + "nixpkgs_68": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -26231,7 +26339,7 @@ "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_69": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -26245,39 +26353,39 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_7": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "nixos-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_70": { "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_70": { + "nixpkgs_71": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26293,7 +26401,7 @@ "type": "github" } }, - "nixpkgs_71": { + "nixpkgs_72": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26308,7 +26416,7 @@ "type": "indirect" } }, - "nixpkgs_72": { + "nixpkgs_73": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -26324,7 +26432,7 @@ "type": "github" } }, - "nixpkgs_73": { + "nixpkgs_74": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -26339,7 +26447,7 @@ "type": "indirect" } }, - "nixpkgs_74": { + "nixpkgs_75": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -26355,7 +26463,7 @@ "type": "github" } }, - "nixpkgs_75": { + "nixpkgs_76": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26370,7 +26478,7 @@ "type": "indirect" } }, - "nixpkgs_76": { + "nixpkgs_77": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -26386,7 +26494,7 @@ "type": "github" } }, - "nixpkgs_77": { + "nixpkgs_78": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -26402,7 +26510,7 @@ "type": "github" } }, - "nixpkgs_78": { + "nixpkgs_79": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26418,39 +26526,39 @@ "type": "github" } }, - "nixpkgs_79": { + "nixpkgs_8": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "release-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_80": { "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", + "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_80": { + "nixpkgs_81": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -26466,7 +26574,7 @@ "type": "github" } }, - "nixpkgs_81": { + "nixpkgs_82": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -26482,7 +26590,7 @@ "type": "github" } }, - "nixpkgs_82": { + "nixpkgs_83": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -26498,7 +26606,7 @@ "type": "github" } }, - "nixpkgs_83": { + "nixpkgs_84": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -26512,7 +26620,7 @@ "type": "indirect" } }, - "nixpkgs_84": { + "nixpkgs_85": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -26528,7 +26636,7 @@ "type": "github" } }, - "nixpkgs_85": { + "nixpkgs_86": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -26542,7 +26650,7 @@ "type": "indirect" } }, - "nixpkgs_86": { + "nixpkgs_87": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -26556,7 +26664,7 @@ "type": "indirect" } }, - "nixpkgs_87": { + "nixpkgs_88": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26571,7 +26679,7 @@ "type": "indirect" } }, - "nixpkgs_88": { + "nixpkgs_89": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -26586,38 +26694,38 @@ "type": "github" } }, - "nixpkgs_89": { + "nixpkgs_9": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_9": { + "nixpkgs_90": { "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs_90": { + "nixpkgs_91": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -26632,7 +26740,7 @@ "type": "github" } }, - "nixpkgs_91": { + "nixpkgs_92": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -26648,7 +26756,7 @@ "type": "github" } }, - "nixpkgs_92": { + "nixpkgs_93": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -26664,7 +26772,7 @@ "type": "github" } }, - "nixpkgs_93": { + "nixpkgs_94": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -26679,7 +26787,7 @@ "type": "github" } }, - "nixpkgs_94": { + "nixpkgs_95": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -26695,7 +26803,7 @@ "type": "github" } }, - "nixpkgs_95": { + "nixpkgs_96": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -26711,7 +26819,7 @@ "type": "github" } }, - "nixpkgs_96": { + "nixpkgs_97": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -26726,7 +26834,7 @@ "type": "indirect" } }, - "nixpkgs_97": { + "nixpkgs_98": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -26742,7 +26850,7 @@ "type": "github" } }, - "nixpkgs_98": { + "nixpkgs_99": { "locked": { "lastModified": 1713714899, "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", @@ -26758,26 +26866,10 @@ "type": "github" } }, - "nixpkgs_99": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, "nomad": { "inputs": { "nix": "nix_8", - "nixpkgs": "nixpkgs_45", + "nixpkgs": "nixpkgs_46", "utils": "utils_9" }, "locked": { @@ -26800,7 +26892,7 @@ "devshell": "devshell_6", "inclusive": "inclusive_2", "nix": "nix_9", - "nixpkgs": "nixpkgs_47", + "nixpkgs": "nixpkgs_48", "utils": "utils_10" }, "locked": { @@ -26822,7 +26914,7 @@ "devshell": "devshell_9", "inclusive": "inclusive_5", "nix": "nix_11", - "nixpkgs": "nixpkgs_59", + "nixpkgs": "nixpkgs_60", "utils": "utils_15" }, "locked": { @@ -26844,7 +26936,7 @@ "devshell": "devshell_16", "inclusive": "inclusive_10", "nix": "nix_16", - "nixpkgs": "nixpkgs_76", + "nixpkgs": "nixpkgs_77", "utils": "utils_24" }, "locked": { @@ -26865,7 +26957,7 @@ "inputs": { "devshell": "devshell_7", "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_48", + "nixpkgs": "nixpkgs_49", "utils": "utils_11" }, "locked": { @@ -26886,7 +26978,7 @@ "inputs": { "devshell": "devshell_10", "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_60", + "nixpkgs": "nixpkgs_61", "utils": "utils_16" }, "locked": { @@ -26907,7 +26999,7 @@ "inputs": { "devshell": "devshell_17", "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_77", + "nixpkgs": "nixpkgs_78", "utils": "utils_25" }, "locked": { @@ -26927,7 +27019,7 @@ "nomad_2": { "inputs": { "nix": "nix_15", - "nixpkgs": "nixpkgs_74", + "nixpkgs": "nixpkgs_75", "utils": "utils_23" }, "locked": { @@ -27042,16 +27134,16 @@ "ogmios_2": { "flake": false, "locked": { - "lastModified": 1717661787, - "narHash": "sha256-AnIxPug+DnPHn69z+Vz+Us2a+Z3LnkI+LJaIyUm4c5w=", + "lastModified": 1720778275, + "narHash": "sha256-OpUeVbztfLy+9d2M5w2Jgx1b/IhDNAQdlr/eP1iKUQI=", "owner": "CardanoSolutions", "repo": "ogmios", - "rev": "4dbf1f34d9ea046dda50bf0c58bd276f80f41784", + "rev": "63a9e9d33eadbca22d1ecc90b9623b962148d174", "type": "github" }, "original": { "owner": "CardanoSolutions", - "ref": "v6.4.0", + "ref": "v6.5.0", "repo": "ogmios", "type": "github" } @@ -27834,7 +27926,7 @@ "pre-commit-hooks": { "inputs": { "flake-utils": "flake-utils_38", - "nixpkgs": "nixpkgs_83" + "nixpkgs": "nixpkgs_84" }, "locked": { "lastModified": 1639823344, @@ -27853,6 +27945,7 @@ "pre-commit-hooks-nix": { "inputs": { "flake-compat": "flake-compat_13", + "flake-utils": "flake-utils_15", "gitignore": "gitignore", "nixpkgs": [ "cardano-nix", @@ -27864,11 +27957,11 @@ ] }, "locked": { - "lastModified": 1716213921, - "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", + "lastModified": 1708018599, + "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", "type": "github" }, "original": { @@ -27882,7 +27975,7 @@ "flake-compat": "flake-compat_46", "flake-utils": "flake-utils_89", "gitignore": "gitignore_10", - "nixpkgs": "nixpkgs_128", + "nixpkgs": "nixpkgs_129", "nixpkgs-stable": "nixpkgs-stable_19" }, "locked": { @@ -27904,7 +27997,7 @@ "flake-compat": "flake-compat_47", "flake-utils": "flake-utils_91", "gitignore": "gitignore_11", - "nixpkgs": "nixpkgs_130", + "nixpkgs": "nixpkgs_131", "nixpkgs-stable": "nixpkgs-stable_21" }, "locked": { @@ -27926,7 +28019,7 @@ "flake-compat": "flake-compat_50", "flake-utils": "flake-utils_97", "gitignore": "gitignore_12", - "nixpkgs": "nixpkgs_134", + "nixpkgs": "nixpkgs_135", "nixpkgs-stable": "nixpkgs-stable_23" }, "locked": { @@ -27948,7 +28041,7 @@ "flake-compat": "flake-compat_52", "flake-utils": "flake-utils_101", "gitignore": "gitignore_13", - "nixpkgs": "nixpkgs_137", + "nixpkgs": "nixpkgs_138", "nixpkgs-stable": "nixpkgs-stable_25" }, "locked": { @@ -27970,7 +28063,7 @@ "flake-compat": "flake-compat_53", "flake-utils": "flake-utils_103", "gitignore": "gitignore_14", - "nixpkgs": "nixpkgs_139", + "nixpkgs": "nixpkgs_140", "nixpkgs-stable": "nixpkgs-stable_27" }, "locked": { @@ -27992,7 +28085,7 @@ "flake-compat": "flake-compat_54", "flake-utils": "flake-utils_105", "gitignore": "gitignore_15", - "nixpkgs": "nixpkgs_141", + "nixpkgs": "nixpkgs_142", "nixpkgs-stable": "nixpkgs-stable_29" }, "locked": { @@ -28014,7 +28107,7 @@ "flake-compat": "flake-compat_55", "flake-utils": "flake-utils_107", "gitignore": "gitignore_16", - "nixpkgs": "nixpkgs_143", + "nixpkgs": "nixpkgs_144", "nixpkgs-stable": "nixpkgs-stable_31" }, "locked": { @@ -28036,7 +28129,7 @@ "flake-compat": "flake-compat_30", "flake-utils": "flake-utils_57", "gitignore": "gitignore_2", - "nixpkgs": "nixpkgs_104", + "nixpkgs": "nixpkgs_105", "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { @@ -28058,7 +28151,7 @@ "flake-compat": "flake-compat_32", "flake-utils": "flake-utils_61", "gitignore": "gitignore_3", - "nixpkgs": "nixpkgs_107", + "nixpkgs": "nixpkgs_108", "nixpkgs-stable": "nixpkgs-stable_5" }, "locked": { @@ -28080,7 +28173,7 @@ "flake-compat": "flake-compat_33", "flake-utils": "flake-utils_63", "gitignore": "gitignore_4", - "nixpkgs": "nixpkgs_109", + "nixpkgs": "nixpkgs_110", "nixpkgs-stable": "nixpkgs-stable_7" }, "locked": { @@ -28102,7 +28195,7 @@ "flake-compat": "flake-compat_36", "flake-utils": "flake-utils_69", "gitignore": "gitignore_5", - "nixpkgs": "nixpkgs_113", + "nixpkgs": "nixpkgs_114", "nixpkgs-stable": "nixpkgs-stable_9" }, "locked": { @@ -28124,7 +28217,7 @@ "flake-compat": "flake-compat_38", "flake-utils": "flake-utils_73", "gitignore": "gitignore_6", - "nixpkgs": "nixpkgs_116", + "nixpkgs": "nixpkgs_117", "nixpkgs-stable": "nixpkgs-stable_11" }, "locked": { @@ -28146,7 +28239,7 @@ "flake-compat": "flake-compat_39", "flake-utils": "flake-utils_75", "gitignore": "gitignore_7", - "nixpkgs": "nixpkgs_118", + "nixpkgs": "nixpkgs_119", "nixpkgs-stable": "nixpkgs-stable_13" }, "locked": { @@ -28168,7 +28261,7 @@ "flake-compat": "flake-compat_40", "flake-utils": "flake-utils_77", "gitignore": "gitignore_8", - "nixpkgs": "nixpkgs_120", + "nixpkgs": "nixpkgs_121", "nixpkgs-stable": "nixpkgs-stable_15" }, "locked": { @@ -28190,7 +28283,7 @@ "flake-compat": "flake-compat_44", "flake-utils": "flake-utils_85", "gitignore": "gitignore_9", - "nixpkgs": "nixpkgs_125", + "nixpkgs": "nixpkgs_126", "nixpkgs-stable": "nixpkgs-stable_17" }, "locked": { @@ -28211,7 +28304,7 @@ "inputs": { "agenix": "agenix_3", "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_49", + "nixpkgs": "nixpkgs_50", "rust-overlay": "rust-overlay_2" }, "locked": { @@ -28232,7 +28325,7 @@ "inputs": { "agenix": "agenix_4", "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_52", + "nixpkgs": "nixpkgs_53", "rust-overlay": "rust-overlay_3" }, "locked": { @@ -28253,7 +28346,7 @@ "inputs": { "agenix": "agenix_5", "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_61", + "nixpkgs": "nixpkgs_62", "rust-overlay": "rust-overlay_4" }, "locked": { @@ -28274,7 +28367,7 @@ "inputs": { "agenix": "agenix_7", "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_78", + "nixpkgs": "nixpkgs_79", "rust-overlay": "rust-overlay_5" }, "locked": { @@ -28295,7 +28388,7 @@ "inputs": { "agenix": "agenix_8", "flake-utils": "flake-utils_36", - "nixpkgs": "nixpkgs_81", + "nixpkgs": "nixpkgs_82", "rust-overlay": "rust-overlay_6" }, "locked": { @@ -28331,6 +28424,7 @@ "haskell-nix", "nixpkgs-unstable" ], + "nixpkgs-arion": "nixpkgs-arion", "ogmios": "ogmios_2" } }, @@ -29416,7 +29510,7 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_10", + "nixpkgs": "nixpkgs_11", "nixpkgs-stable": "nixpkgs-stable" }, "locked": { @@ -30060,11 +30154,11 @@ "stackage_9": { "flake": false, "locked": { - "lastModified": 1719102283, - "narHash": "sha256-pon+cXgMWPlCiBx9GlRcjsjTHbCc8fDVgOGb3Z7qhRM=", + "lastModified": 1721520856, + "narHash": "sha256-NN1XhHCCCG1NEYKh9MhkBVPpxCDipH5PZnt9lDNmq/E=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "7df45e0bd9852810d8070f9c5257f8e7a4677b91", + "rev": "b04dda657a674898f4f9ced1cd6ebd29d1e1adb2", "type": "github" }, "original": { @@ -30076,7 +30170,7 @@ "statix": { "inputs": { "fenix": "fenix", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1676888642, @@ -30122,7 +30216,7 @@ ], "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_20", + "nixpkgs": "nixpkgs_21", "nosys": "nosys", "yants": "yants" }, @@ -30173,7 +30267,7 @@ ], "n2c": "n2c_2", "nixago": "nixago_2", - "nixpkgs": "nixpkgs_23", + "nixpkgs": "nixpkgs_24", "paisano": "paisano", "paisano-tui": "paisano-tui", "yants": "yants_2" @@ -30220,7 +30314,7 @@ ], "n2c": "n2c_3", "nixago": "nixago_3", - "nixpkgs": "nixpkgs_28", + "nixpkgs": "nixpkgs_29", "paisano": "paisano_2", "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", "paisano-tui": "paisano-tui_2", @@ -30263,7 +30357,7 @@ ], "n2c": "n2c_4", "nixago": "nixago_4", - "nixpkgs": "nixpkgs_32", + "nixpkgs": "nixpkgs_33", "yants": "yants_4" }, "locked": { @@ -30317,7 +30411,7 @@ "std", "blank" ], - "nixpkgs": "nixpkgs_36", + "nixpkgs": "nixpkgs_37", "paisano": "paisano_3", "paisano-tui": "paisano-tui_3", "terranix": [ @@ -30348,7 +30442,7 @@ "flake-utils": "flake-utils_28", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", "nixago": "nixago_5", - "nixpkgs": "nixpkgs_62", + "nixpkgs": "nixpkgs_63", "yants": "yants_7" }, "locked": { @@ -30372,7 +30466,7 @@ "flake-utils": "flake-utils_44", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", "nixago": "nixago_6", - "nixpkgs": "nixpkgs_92", + "nixpkgs": "nixpkgs_93", "yants": "yants_9" }, "locked": { @@ -30392,7 +30486,7 @@ "std_8": { "inputs": { "devshell": "devshell_20", - "nixpkgs": "nixpkgs_95", + "nixpkgs": "nixpkgs_96", "yants": "yants_10" }, "locked": { @@ -31534,6 +31628,21 @@ "type": "github" } }, + "systems_66": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "systems_7": { "locked": { "lastModified": 1681028828, @@ -31582,7 +31691,7 @@ "tailwind-haskell": { "inputs": { "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_86" + "nixpkgs": "nixpkgs_87" }, "locked": { "lastModified": 1654211622, @@ -31601,7 +31710,7 @@ }, "terraform-providers": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1695893013, @@ -31622,7 +31731,7 @@ "bats-assert": "bats-assert", "bats-support": "bats-support", "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_12", + "nixpkgs": "nixpkgs_13", "terranix-examples": "terranix-examples" }, "locked": { @@ -31785,7 +31894,7 @@ }, "treefmt-nix": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1683117219, @@ -31832,11 +31941,11 @@ ] }, "locked": { - "lastModified": 1715940852, - "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", + "lastModified": 1697388351, + "narHash": "sha256-63N2eBpKaziIy4R44vjpUu8Nz5fCJY7okKrkixvDQmY=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", + "rev": "aae39f64f5ecbe89792d05eacea5cb241891292a", "type": "github" }, "original": { @@ -31849,7 +31958,7 @@ "inputs": { "nix-nomad": "nix-nomad", "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_19", + "nixpkgs": "nixpkgs_20", "std": "std" }, "locked": { @@ -31920,7 +32029,7 @@ "tullia_4": { "inputs": { "nix2container": "nix2container_7", - "nixpkgs": "nixpkgs_94", + "nixpkgs": "nixpkgs_95", "std": "std_8" }, "locked": { @@ -32317,7 +32426,7 @@ }, "utils_7": { "inputs": { - "systems": "systems_5" + "systems": "systems_6" }, "locked": { "lastModified": 1710146030, @@ -32542,7 +32651,7 @@ }, "yants_6": { "inputs": { - "nixpkgs": "nixpkgs_53" + "nixpkgs": "nixpkgs_54" }, "locked": { "lastModified": 1645126146, @@ -32584,7 +32693,7 @@ }, "yants_8": { "inputs": { - "nixpkgs": "nixpkgs_88" + "nixpkgs": "nixpkgs_89" }, "locked": { "lastModified": 1645126146, diff --git a/flake.nix b/flake.nix index 0211172ae..15a7e473c 100644 --- a/flake.nix +++ b/flake.nix @@ -9,6 +9,7 @@ inputs = { nixpkgs.follows = "haskell-nix/nixpkgs-unstable"; + nixpkgs-arion.url = "github:NixOS/nixpkgs"; hackage-nix = { url = "github:input-output-hk/hackage.nix"; flake = false; @@ -32,19 +33,19 @@ flake = false; }; - cardano-node.url = "github:IntersectMBO/cardano-node/8.11.0-pre"; + cardano-node.url = "github:IntersectMBO/cardano-node/9.0.0-sancho"; # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations?rev=692010ed0f454bfbb566c06443227c79e2f4dbab"; + url = "github:input-output-hk/cardano-configurations?rev=de80edfd569d82d5191d2c6103834e700787bb2d"; flake = false; }; # Get Ogmios and Kupo from cardano-nix cardano-nix = { - url = "github:mlabs-haskell/cardano.nix"; + url = "github:mlabs-haskell/cardano.nix/dshuiski/ogmios-v6.5.0"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -60,7 +61,7 @@ # Get Ogmios test fixtures ogmios = { - url = "github:CardanoSolutions/ogmios/v6.4.0"; + url = "github:CardanoSolutions/ogmios/v6.5.0"; flake = false; }; @@ -78,6 +79,7 @@ outputs = { self , nixpkgs + , nixpkgs-arion , cardano-configurations , cardano-node , ... @@ -90,7 +92,7 @@ "aarch64-darwin" ]; - ogmiosVersion = "6.4.0"; + ogmiosVersion = "6.5.0"; kupoVersion = "2.8.0"; perSystem = nixpkgs.lib.genAttrs supportedSystems; @@ -99,6 +101,7 @@ overlays = nixpkgs.lib.attrValues self.overlays ++ [ (_: _: { ogmios-fixtures = inputs.ogmios; + arion = (import nixpkgs-arion { inherit system; }).arion; }) ]; inherit system; diff --git a/packages.dhall b/packages.dhall index b3e783478..9382ec30d 100644 --- a/packages.dhall +++ b/packages.dhall @@ -138,6 +138,39 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" , version = "d72e51fbc0255eb3246c9132d295de7f65e16a99" } + , cip95 = + { dependencies = + [ "aff" + , "aff-promise" + , "console" + , "effect" + , "newtype" + , "prelude" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip95" + , version = "9d92a38cddd318245010286ae3966cd515d6952f" + } + , cip95-typesafe = + { dependencies = + [ "aff" + , "bifunctors" + , "cip30" + , "cip30-typesafe" + , "cip95" + , "console" + , "control" + , "effect" + , "either" + , "exceptions" + , "maybe" + , "prelude" + , "spec" + , "transformers" + , "variant" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip95-typesafe" + , version = "84cf1a18abc274222b31d7fcb829195ae2e673c4" + } , bytearrays = { dependencies = [ "aeson" diff --git a/spago.dhall b/spago.dhall index 5dcc503a4..cc2b0892f 100644 --- a/spago.dhall +++ b/spago.dhall @@ -18,15 +18,17 @@ You can edit this file as you like. , "bignumber" , "bytearrays" , "cardano-hd-wallet" - , "uplc-apply-args" + , "cardano-key-wallet" + , "cardano-message-signing" , "cardano-plutus-data-schema" , "cardano-serialization-lib" - , "cardano-key-wallet" , "cardano-types" , "checked-exceptions" , "cip30" , "cip30-mock" , "cip30-typesafe" + , "cip95" + , "cip95-typesafe" , "console" , "control" , "crypto" @@ -98,11 +100,13 @@ You can edit this file as you like. , "toppokki" , "transformers" , "tuples" + , "typelevel" , "typelevel-prelude" , "uint" , "unfoldable" , "unsafe-coerce" , "untagged-union" + , "uplc-apply-args" , "variant" , "web-html" , "web-storage" diff --git a/src/Contract/TxConstraints.purs b/src/Contract/TxConstraints.purs index cd87d375e..566357aa3 100644 --- a/src/Contract/TxConstraints.purs +++ b/src/Contract/TxConstraints.purs @@ -41,6 +41,7 @@ import Ctl.Internal.Types.TxConstraints , mustPayToScriptWithScriptRef , mustProduceAtLeast , mustReferenceOutput + , mustRegisterDrep , mustRegisterPool , mustRegisterStakePubKey , mustRegisterStakeScript diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 4ad52a1ba..942446571 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -37,6 +37,7 @@ import Ctl.Internal.Contract.Wallet , getUnusedAddresses , getWallet , getWalletAddresses + , ownDrepKeyHash , ownPaymentPubKeyHashes , ownStakePubKeyHashes , signData diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 81725d976..44d0237ca 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -4,18 +4,7 @@ module Ctl.Internal.BalanceTx import Prelude -import Cardano.Types - ( AssetClass(AssetClass) - , Certificate(StakeDeregistration, StakeRegistration) - , Coin(Coin) - , Language(PlutusV1) - , PlutusScript(PlutusScript) - , Transaction - , TransactionBody - , TransactionOutput - , UtxoMap - , Value(Value) - ) +import Cardano.Types (AssetClass(AssetClass), Certificate(StakeDeregistration, StakeRegistration, RegDrepCert), Coin(Coin), Language(PlutusV1), PlutusScript(PlutusScript), Transaction, TransactionBody, TransactionOutput, UtxoMap, Value(Value)) import Cardano.Types.Address (Address) import Cardano.Types.BigNum as BigNum import Cardano.Types.Coin as Coin @@ -31,112 +20,31 @@ import Control.Monad.Except.Trans (except, runExceptT) import Control.Monad.Logger.Class (info) as Logger import Control.Monad.Reader (asks) import Control.Parallel (parTraverse) -import Ctl.Internal.BalanceTx.CoinSelection - ( SelectionState - , SelectionStrategy - , _leftoverUtxos - , performMultiAssetSelection - , selectedInputs - ) -import Ctl.Internal.BalanceTx.Collateral - ( addTxCollateral - , addTxCollateralReturn - ) +import Ctl.Internal.BalanceTx.CoinSelection (SelectionState, SelectionStrategy, _leftoverUtxos, performMultiAssetSelection, selectedInputs) +import Ctl.Internal.BalanceTx.Collateral (addTxCollateral, addTxCollateralReturn) import Ctl.Internal.BalanceTx.Collateral.Select (selectCollateral) -import Ctl.Internal.BalanceTx.Constraints - ( BalanceTxConstraintsBuilder - , _collateralUtxos - , _nonSpendableInputs - ) -import Ctl.Internal.BalanceTx.Constraints - ( _changeAddress - , _changeDatum - , _maxChangeOutputTokenQuantity - , _nonSpendableInputs - , _selectionStrategy - , _srcAddresses - ) as Constraints -import Ctl.Internal.BalanceTx.Error - ( BalanceTxError - ( CouldNotGetUtxos - , ReindexRedeemersError - , CouldNotGetCollateral - , InsufficientCollateralUtxos - , NumericOverflowError - , UtxoLookupFailedFor - ) - ) -import Ctl.Internal.BalanceTx.ExUnitsAndMinFee - ( evalExUnitsAndMinFee - , finalizeTransaction - ) -import Ctl.Internal.BalanceTx.RedeemerIndex - ( attachIndexedRedeemers - , indexRedeemers - , mkRedeemersContext - ) +import Ctl.Internal.BalanceTx.Constraints (BalanceTxConstraintsBuilder, _collateralUtxos, _nonSpendableInputs) +import Ctl.Internal.BalanceTx.Constraints (_changeAddress, _changeDatum, _maxChangeOutputTokenQuantity, _nonSpendableInputs, _selectionStrategy, _srcAddresses) as Constraints +import Ctl.Internal.BalanceTx.Error (BalanceTxError(CouldNotGetUtxos, ReindexRedeemersError, CouldNotGetCollateral, InsufficientCollateralUtxos, NumericOverflowError, UtxoLookupFailedFor)) +import Ctl.Internal.BalanceTx.ExUnitsAndMinFee (evalExUnitsAndMinFee, finalizeTransaction) +import Ctl.Internal.BalanceTx.RedeemerIndex (attachIndexedRedeemers, indexRedeemers, mkRedeemersContext) import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncBackendWithWallet) -import Ctl.Internal.BalanceTx.Types - ( BalanceTxM - , askCoinsPerUtxoUnit - , askNetworkId - , asksConstraints - , liftContract - , liftEitherContract - , withBalanceTxConstraints - ) -import Ctl.Internal.BalanceTx.UnattachedTx - ( EvaluatedTx - , UnindexedTx - , _transaction - , indexTx - ) +import Ctl.Internal.BalanceTx.Types (BalanceTxM, askCoinsPerUtxoUnit, askNetworkId, asksConstraints, liftContract, liftEitherContract, withBalanceTxConstraints) +import Ctl.Internal.BalanceTx.UnattachedTx (EvaluatedTx, UnindexedTx, _transaction, indexTx) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex, buildUtxoIndex) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos, getQueryHandle) -import Ctl.Internal.Contract.Wallet - ( getChangeAddress - , getWalletCollateral - , getWalletUtxos - ) as Wallet +import Ctl.Internal.Contract.Wallet (getChangeAddress, getWalletCollateral, getWalletUtxos) as Wallet import Ctl.Internal.Helpers (liftEither, pprintTagSet, unsafeFromJust, (??)) -import Ctl.Internal.Lens - ( _amount - , _body - , _certs - , _fee - , _inputs - , _mint - , _networkId - , _outputs - , _plutusScripts - , _referenceInputs - , _withdrawals - , _witnessSet - ) -import Ctl.Internal.Partition - ( equipartition - , equipartitionValueWithTokenQuantityUpperBound - , partition - ) -import Ctl.Internal.Types.ProtocolParameters - ( ProtocolParameters(ProtocolParameters) - ) +import Ctl.Internal.Lens (_amount, _body, _certs, _fee, _inputs, _mint, _networkId, _outputs, _plutusScripts, _referenceInputs, _withdrawals, _witnessSet) +import Ctl.Internal.Partition (equipartition, equipartitionValueWithTokenQuantityUpperBound, partition) +import Ctl.Internal.Types.ProtocolParameters (ProtocolParameters(ProtocolParameters)) import Ctl.Internal.Types.Val (Val(Val), pprintVal) import Ctl.Internal.Types.Val as Val import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) -import Data.Array.NonEmpty - ( fromArray - , replicate - , singleton - , sortWith - , toArray - , uncons - , zip - , zipWith - ) as NEArray +import Data.Array.NonEmpty (fromArray, replicate, singleton, sortWith, toArray, uncons, zip, zipWith) as NEArray import Data.Array.NonEmpty as NEA import Data.Bifunctor (lmap) import Data.Bitraversable (ltraverse) @@ -148,16 +56,7 @@ import Data.Lens.Setter ((%~), (.~), (?~)) import Data.Log.Tag (TagSet, tag, tagSetTag) import Data.Log.Tag (fromArray) as TagSet import Data.Map (Map) -import Data.Map - ( empty - , filter - , insert - , isEmpty - , lookup - , singleton - , toUnfoldable - , union - ) as Map +import Data.Map (empty, filter, insert, isEmpty, lookup, singleton, toUnfoldable, union) as Map import Data.Maybe (Maybe(Just, Nothing), isJust, maybe) import Data.Newtype (unwrap, wrap) import Data.Set (Set) @@ -170,6 +69,8 @@ import Effect.Aff.Class (liftAff) import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) +import Debug (spy) + -- | Balances an unbalanced transaction using the specified balancer -- | constraints. balanceTxWithConstraints @@ -177,17 +78,8 @@ balanceTxWithConstraints -> Map TransactionInput TransactionOutput -> BalanceTxConstraintsBuilder -> Contract (Either BalanceTxError Transaction) -balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do - - pparams <- getProtocolParameters - +balanceTxWithConstraints transaction extraUtxos constraintsBuilder = withBalanceTxConstraints constraintsBuilder $ runExceptT do - let - depositValuePerCert = BigNum.toBigInt $ unwrap - (unwrap pparams).stakeAddressDeposit - certsFee = getStakingBalance (transaction.transaction) - depositValuePerCert - changeAddress <- getChangeAddress mbSrcAddrs <- asksConstraints Constraints._srcAddresses @@ -248,6 +140,8 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do unbalancedCollTx } + pparams <- liftContract getProtocolParameters + -- Balance and finalize the transaction: runBalancer { strategy: selectionStrategy @@ -256,7 +150,7 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = do , changeDatum: changeDatum' , allUtxos , utxos: availableUtxos - , certsFee + , certsFee: getCertsBalance transaction.transaction pparams } where getChangeAddress :: BalanceTxM Address @@ -849,27 +743,31 @@ mintValue txBody = maybe mempty Val.fromMint (txBody ^. _mint) -- | - stake registration deposit -- | - stake deregistration deposit returns -- | - stake withdrawals fees -getStakingBalance :: Transaction -> BigInt -> BigInt -getStakingBalance tx depositLovelacesPerCert = +-- | - drep registration deposit +getCertsBalance :: Transaction -> ProtocolParameters -> BigInt +getCertsBalance tx (ProtocolParameters pparams) = let - stakeDeposits :: BigInt - stakeDeposits = + stakeAddressDeposit :: BigInt + stakeAddressDeposit = BigNum.toBigInt $ unwrap pparams.stakeAddressDeposit + + deposits :: BigInt + deposits = (tx ^. _body <<< _certs) # map ( case _ of - StakeRegistration _ -> depositLovelacesPerCert - StakeDeregistration _ -> negate $ depositLovelacesPerCert + StakeRegistration _ -> stakeAddressDeposit + StakeDeregistration _ -> negate $ stakeAddressDeposit + RegDrepCert _ deposit _ -> BigNum.toBigInt $ unwrap deposit _ -> zero ) >>> sum - stakeWithdrawals :: BigInt - stakeWithdrawals = + withdrawals :: BigInt + withdrawals = sum $ map (BigNum.toBigInt <<< unwrap) $ tx ^. _body <<< _withdrawals - fee = stakeDeposits - stakeWithdrawals in - fee + spy "certsBalance" $ deposits - withdrawals -------------------------------------------------------------------------------- -- Helpers diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index c0262a8c0..70279b034 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -5,6 +5,7 @@ module Ctl.Internal.Contract.Wallet , getWalletAddresses , signData , getWallet + , ownDrepKeyHash , ownPubKeyHashes , ownPaymentPubKeyHashes , ownStakePubKeyHashes @@ -21,6 +22,7 @@ import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential as Credential import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash) +import Cardano.Types.PublicKey (hash) as PublicKey import Cardano.Types.StakePubKeyHash (StakePubKeyHash) import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) import Cardano.Types.UtxoMap (UtxoMap) @@ -45,6 +47,7 @@ import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (unwrap, wrap) import Data.Traversable (for_, traverse) import Data.Tuple.Nested ((/\)) +import Data.Typelevel.Undefined (undefined) import Data.UInt as UInt import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) @@ -251,3 +254,9 @@ getWalletUtxos = do toUtxoMap :: Array TransactionUnspentOutput -> UtxoMap toUtxoMap = Map.fromFoldable <<< map (unwrap >>> \({ input, output }) -> input /\ output) + +ownDrepKeyHash :: Contract Ed25519KeyHash +ownDrepKeyHash = do + withWallet do + actionBasedOnWallet (map PublicKey.hash <<< _.getPubDrepKey) + undefined -- FIXME diff --git a/src/Internal/ProcessConstraints.purs b/src/Internal/ProcessConstraints.purs index 01b5cae7c..93c76ef0b 100644 --- a/src/Internal/ProcessConstraints.purs +++ b/src/Internal/ProcessConstraints.purs @@ -11,6 +11,7 @@ import Cardano.Types , PoolRegistration , StakeDeregistration , StakeRegistration + , RegDrepCert ) , DataHash , NetworkId @@ -165,6 +166,7 @@ import Ctl.Internal.Types.TxConstraints , MustBeSignedBy , MustValidateIn , MustIncludeDatum + , MustRegisterDrep ) , TxConstraints(TxConstraints) , utxoWithScriptRef @@ -705,19 +707,19 @@ processConstraint if dh' == dh then pure <$> addDatum dt else pure $ throwError $ DatumWrongHash dh dt MustRegisterStakePubKey skh -> runExceptT do - void $ lift $ addCertificate + lift $ addCertificate $ StakeRegistration $ StakeCredential $ PubKeyHashCredential $ unwrap skh MustDeregisterStakePubKey pubKey -> runExceptT do - void $ lift $ addCertificate + lift $ addCertificate $ StakeDeregistration $ StakeCredential $ PubKeyHashCredential $ unwrap pubKey MustRegisterStakeScript scriptHash -> runExceptT do - void $ lift $ addCertificate + lift $ addCertificate $ StakeRegistration $ StakeCredential $ ScriptHashCredential scriptHash @@ -730,20 +732,20 @@ processConstraint [ UnindexedRedeemer { purpose: ForCert cert, datum: unwrap redeemerData } ] - void $ lift $ addCertificate cert + lift $ addCertificate cert lift $ attachToCps (map pure <<< attachPlutusScript) plutusScript MustDeregisterStakeNativeScript stakeValidator -> do - void $ addCertificate $ StakeDeregistration + addCertificate $ StakeDeregistration $ wrap $ ScriptHashCredential $ NativeScript.hash stakeValidator pure <$> attachToCps (map pure <<< attachNativeScript) stakeValidator MustRegisterPool poolParams -> runExceptT do - void $ lift $ addCertificate $ PoolRegistration poolParams + lift $ addCertificate $ PoolRegistration poolParams MustRetirePool poolKeyHash epoch -> runExceptT do - void $ lift $ addCertificate $ PoolRetirement { poolKeyHash, epoch } + lift $ addCertificate $ PoolRetirement { poolKeyHash, epoch } MustDelegateStakePubKey stakePubKeyHash poolKeyHash -> runExceptT do - void $ lift $ addCertificate $ + lift $ addCertificate $ StakeDelegation ( StakeCredential $ PubKeyHashCredential $ unwrap $ stakePubKeyHash @@ -764,7 +766,7 @@ processConstraint ] lift $ attachToCps (map pure <<< attachPlutusScript) stakeValidator MustDelegateStakeNativeScript stakeValidator poolKeyHash -> do - void $ addCertificate $ StakeDelegation + addCertificate $ StakeDelegation ( StakeCredential $ ScriptHashCredential $ NativeScript.hash stakeValidator ) @@ -850,6 +852,10 @@ processConstraint tryNext (toUnfoldable $ map toUnfoldable xs) MustNotBeValid -> runExceptT do _cpsTransaction <<< _isValid .= false + MustRegisterDrep drepCred anchor -> do + { drepDeposit } <- unwrap <$> lift getProtocolParameters + addCertificate $ RegDrepCert drepCred drepDeposit anchor + pure $ Right unit where outputDatum :: PlutusData @@ -879,8 +885,6 @@ addDatum dat = do attachToCps (map pure <<< attachDatum) dat _datums <>= Array.singleton dat --- | Returns an index pointing to the location of the newly inserted certificate --- | in the array of transaction certificates. addCertificate :: Certificate -> ConstraintsM Unit diff --git a/src/Internal/ProcessConstraints/Error.purs b/src/Internal/ProcessConstraints/Error.purs index 519025660..4764fb0fe 100644 --- a/src/Internal/ProcessConstraints/Error.purs +++ b/src/Internal/ProcessConstraints/Error.purs @@ -8,6 +8,7 @@ import Cardano.Types (DataHash, NativeScript) import Cardano.Types.Address (Address) import Cardano.Types.Address as Address import Cardano.Types.AssetName (AssetName, fromAssetName) +import Cardano.Types.Coin (Coin) import Cardano.Types.Int as Int import Cardano.Types.NativeScript (pprintNativeScript) import Cardano.Types.PlutusData (PlutusData) @@ -59,6 +60,7 @@ data MkUnbalancedTxError | ExpectedPlutusScriptGotNativeScript ScriptHash | CannotMintZero ScriptHash AssetName | NumericOverflow + | InsufficientGovActionDeposit { provided :: Coin, required :: Coin } derive instance Generic MkUnbalancedTxError _ derive instance Eq MkUnbalancedTxError @@ -155,8 +157,14 @@ explainMkUnbalancedTxError = case _ of <> " of currency " <> byteArrayToHex (unwrap $ encodeCbor cs) NumericOverflow -> "Numeric overflow" + InsufficientGovActionDeposit { provided, required } -> + "Governance actions require a deposit of at least `govActionDeposit`, \ + \as defined in the protocol parameters. The provided deposit is \ + \insufficient. Provided: " + <> show provided + <> "Required: " + <> show required where - prettyAssetName :: AssetName -> String prettyAssetName = fromAssetName byteArrayToHex show diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 4c1543a71..367922c78 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -1036,6 +1036,8 @@ type ProtocolParametersRaw = } , "collateralPercentage" :: UInt , "maxCollateralInputs" :: UInt + , "governanceActionDeposit" :: OgmiosAdaLovelace + , "delegateRepresentativeDeposit" :: OgmiosAdaLovelace } newtype OgmiosProtocolParameters = OgmiosProtocolParameters ProtocolParameters @@ -1085,6 +1087,8 @@ instance DecodeAeson OgmiosProtocolParameters where , maxValueSize: ps.maxValueSize.bytes , collateralPercent: ps.collateralPercentage , maxCollateralInputs: ps.maxCollateralInputs + , govActionDeposit: wrap ps.governanceActionDeposit.ada.lovelace + , drepDeposit: wrap ps.delegateRepresentativeDeposit.ada.lovelace } where decodeExUnits diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index 1e9708af2..fb6edb722 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -1565,6 +1565,8 @@ instance DecodeAeson BlockfrostProtocolParameters where , maxValueSize: unwrap raw.max_val_size , collateralPercent: raw.collateral_percent , maxCollateralInputs: raw.max_collateral_inputs + , govActionDeposit: mempty -- FIXME + , drepDeposit: mempty -- FIXME } -------------------------------------------------------------------------------- diff --git a/src/Internal/Types/ProtocolParameters.purs b/src/Internal/Types/ProtocolParameters.purs index be35375ea..36b74c3a5 100644 --- a/src/Internal/Types/ProtocolParameters.purs +++ b/src/Internal/Types/ProtocolParameters.purs @@ -63,6 +63,8 @@ newtype ProtocolParameters = ProtocolParameters , maxValueSize :: UInt , collateralPercent :: UInt , maxCollateralInputs :: UInt + , govActionDeposit :: Coin + , drepDeposit :: Coin } derive instance Newtype ProtocolParameters _ diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index ae3f2a9f0..128dd81a4 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -21,6 +21,7 @@ module Ctl.Internal.Types.TxConstraints , MustPayToScript , MustProduceAtLeast , MustReferenceOutput + , MustRegisterDrep , MustRegisterPool , MustRegisterStakePubKey , MustRegisterStakeScript @@ -69,6 +70,7 @@ module Ctl.Internal.Types.TxConstraints , mustPayToScriptWithScriptRef , mustProduceAtLeast , mustReferenceOutput + , mustRegisterDrep , mustRegisterPool , mustRegisterStakePubKey , mustRegisterStakeScript @@ -90,7 +92,8 @@ module Ctl.Internal.Types.TxConstraints import Prelude hiding (join) import Cardano.Types - ( AssetName + ( Anchor + , AssetName , Credential , DataHash , Epoch @@ -172,6 +175,7 @@ data TxConstraint | MustWithdrawStakeNativeScript NativeScript | MustSatisfyAnyOf (Array (Array TxConstraint)) | MustNotBeValid + | MustRegisterDrep Credential (Maybe Anchor) derive instance Eq TxConstraint derive instance Generic TxConstraint _ @@ -661,3 +665,6 @@ mustSatisfyAnyOf = -- | chain and collateral will be lost. mustNotBeValid :: TxConstraints mustNotBeValid = singleton $ MustNotBeValid + +mustRegisterDrep :: Credential -> Maybe Anchor -> TxConstraints +mustRegisterDrep drepCred = singleton <<< MustRegisterDrep drepCred diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 8a6ba2180..1916abc0e 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -18,7 +18,7 @@ module Ctl.Internal.Wallet import Prelude -import Cardano.Wallet.Cip30 as Cip30 +import Cardano.Wallet.Cip95 (enable) as Cip95 import Cardano.Wallet.Key ( KeyWallet , PrivatePaymentKey @@ -66,7 +66,7 @@ mkWalletAff walletExtension = do $ liftEffect (isWalletAvailable walletExtension) GenericCip30 <$> do mkCip30WalletAff =<< do - Cip30.enable (walletExtensionToName walletExtension) [] `catchError` + Cip95.enable (walletExtensionToName walletExtension) `catchError` \err -> do liftEffect $ Console.error $ "Wallet extension " <> walletExtensionToName walletExtension diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index d12ac9842..a332353c4 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -12,6 +12,8 @@ import Cardano.Types.Address (Address) import Cardano.Types.BigNum as BigNum import Cardano.Types.CborBytes (CborBytes) import Cardano.Types.Coin (Coin(Coin)) +import Cardano.Types.PublicKey (PublicKey) +import Cardano.Types.PublicKey (fromRawBytes) as PublicKey import Cardano.Types.RawBytes (RawBytes) import Cardano.Types.Transaction (Transaction(Transaction)) import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) @@ -23,6 +25,8 @@ import Cardano.Types.Value as Value import Cardano.Wallet.Cip30 (Api) import Cardano.Wallet.Cip30.TypeSafe (APIError) import Cardano.Wallet.Cip30.TypeSafe as Cip30 +import Cardano.Wallet.Cip95 (Api) as Cip95 +import Cardano.Wallet.Cip95.TypeSafe (getPubDrepKey) as Cip95 import Control.Monad.Error.Class (catchError, liftMaybe, throwError) import Ctl.Internal.Helpers (liftM) import Data.ByteArray (byteArrayToHex, hexToByteArray) @@ -33,6 +37,7 @@ import Data.Variant (Variant, match) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) +import Unsafe.Coerce (unsafeCoerce) type DataSignature = { key :: CborBytes @@ -79,13 +84,15 @@ type Cip30Wallet = , getRewardAddresses :: Aff (Array Address) , signTx :: Transaction -> Aff Transaction , signData :: Address -> RawBytes -> Aff DataSignature + , getPubDrepKey :: Aff PublicKey } mkCip30WalletAff - :: Api + :: Cip95.Api -- ^ A function to get wallet connection -> Aff Cip30Wallet -mkCip30WalletAff connection = do +mkCip30WalletAff conn95 = do + let connection = unsafeCoerce conn95 -- FIXME pure { connection , getNetworkId: Cip30.getNetworkId connection >>= handleApiError @@ -98,6 +105,7 @@ mkCip30WalletAff connection = do , getRewardAddresses: getRewardAddresses connection , signTx: signTx connection , signData: signData connection + , getPubDrepKey: getPubDrepKey conn95 } ------------------------------------------------------------------------------- @@ -235,3 +243,13 @@ getCip30Collateral conn (Coin requiredValue) = do (Cip30.getCollateral conn requiredValueStr >>= handleApiError) `catchError` \err -> throwError $ error $ "Failed to call `getCollateral`: " <> show err + +getPubDrepKey :: Cip95.Api -> Aff PublicKey +getPubDrepKey conn = do + drepKeyHex <- handleApiError =<< Cip95.getPubDrepKey conn + let drepKey = PublicKey.fromRawBytes <<< wrap =<< hexToByteArray drepKeyHex + liftM + ( error $ "CIP-95 getPubDRepKey returned invalid DRep key: " + <> drepKeyHex + ) + drepKey From a866e4c8bf3b7be2be3eb4d98f7fbbab3efa4e3c Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Sun, 21 Jul 2024 18:54:53 +0200 Subject: [PATCH 311/373] Fix formatting --- src/Internal/BalanceTx/BalanceTx.purs | 137 ++++++++++++++++++++++---- 1 file changed, 118 insertions(+), 19 deletions(-) diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 44d0237ca..e4ddc0ba3 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -4,7 +4,18 @@ module Ctl.Internal.BalanceTx import Prelude -import Cardano.Types (AssetClass(AssetClass), Certificate(StakeDeregistration, StakeRegistration, RegDrepCert), Coin(Coin), Language(PlutusV1), PlutusScript(PlutusScript), Transaction, TransactionBody, TransactionOutput, UtxoMap, Value(Value)) +import Cardano.Types + ( AssetClass(AssetClass) + , Certificate(StakeDeregistration, StakeRegistration, RegDrepCert) + , Coin(Coin) + , Language(PlutusV1) + , PlutusScript(PlutusScript) + , Transaction + , TransactionBody + , TransactionOutput + , UtxoMap + , Value(Value) + ) import Cardano.Types.Address (Address) import Cardano.Types.BigNum as BigNum import Cardano.Types.Coin as Coin @@ -20,31 +31,112 @@ import Control.Monad.Except.Trans (except, runExceptT) import Control.Monad.Logger.Class (info) as Logger import Control.Monad.Reader (asks) import Control.Parallel (parTraverse) -import Ctl.Internal.BalanceTx.CoinSelection (SelectionState, SelectionStrategy, _leftoverUtxos, performMultiAssetSelection, selectedInputs) -import Ctl.Internal.BalanceTx.Collateral (addTxCollateral, addTxCollateralReturn) +import Ctl.Internal.BalanceTx.CoinSelection + ( SelectionState + , SelectionStrategy + , _leftoverUtxos + , performMultiAssetSelection + , selectedInputs + ) +import Ctl.Internal.BalanceTx.Collateral + ( addTxCollateral + , addTxCollateralReturn + ) import Ctl.Internal.BalanceTx.Collateral.Select (selectCollateral) -import Ctl.Internal.BalanceTx.Constraints (BalanceTxConstraintsBuilder, _collateralUtxos, _nonSpendableInputs) -import Ctl.Internal.BalanceTx.Constraints (_changeAddress, _changeDatum, _maxChangeOutputTokenQuantity, _nonSpendableInputs, _selectionStrategy, _srcAddresses) as Constraints -import Ctl.Internal.BalanceTx.Error (BalanceTxError(CouldNotGetUtxos, ReindexRedeemersError, CouldNotGetCollateral, InsufficientCollateralUtxos, NumericOverflowError, UtxoLookupFailedFor)) -import Ctl.Internal.BalanceTx.ExUnitsAndMinFee (evalExUnitsAndMinFee, finalizeTransaction) -import Ctl.Internal.BalanceTx.RedeemerIndex (attachIndexedRedeemers, indexRedeemers, mkRedeemersContext) +import Ctl.Internal.BalanceTx.Constraints + ( BalanceTxConstraintsBuilder + , _collateralUtxos + , _nonSpendableInputs + ) +import Ctl.Internal.BalanceTx.Constraints + ( _changeAddress + , _changeDatum + , _maxChangeOutputTokenQuantity + , _nonSpendableInputs + , _selectionStrategy + , _srcAddresses + ) as Constraints +import Ctl.Internal.BalanceTx.Error + ( BalanceTxError + ( CouldNotGetUtxos + , ReindexRedeemersError + , CouldNotGetCollateral + , InsufficientCollateralUtxos + , NumericOverflowError + , UtxoLookupFailedFor + ) + ) +import Ctl.Internal.BalanceTx.ExUnitsAndMinFee + ( evalExUnitsAndMinFee + , finalizeTransaction + ) +import Ctl.Internal.BalanceTx.RedeemerIndex + ( attachIndexedRedeemers + , indexRedeemers + , mkRedeemersContext + ) import Ctl.Internal.BalanceTx.Sync (isCip30Wallet, syncBackendWithWallet) -import Ctl.Internal.BalanceTx.Types (BalanceTxM, askCoinsPerUtxoUnit, askNetworkId, asksConstraints, liftContract, liftEitherContract, withBalanceTxConstraints) -import Ctl.Internal.BalanceTx.UnattachedTx (EvaluatedTx, UnindexedTx, _transaction, indexTx) +import Ctl.Internal.BalanceTx.Types + ( BalanceTxM + , askCoinsPerUtxoUnit + , askNetworkId + , asksConstraints + , liftContract + , liftEitherContract + , withBalanceTxConstraints + ) +import Ctl.Internal.BalanceTx.UnattachedTx + ( EvaluatedTx + , UnindexedTx + , _transaction + , indexTx + ) import Ctl.Internal.BalanceTx.UtxoMinAda (utxoMinAdaValue) import Ctl.Internal.CoinSelection.UtxoIndex (UtxoIndex, buildUtxoIndex) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, filterLockedUtxos, getQueryHandle) -import Ctl.Internal.Contract.Wallet (getChangeAddress, getWalletCollateral, getWalletUtxos) as Wallet +import Ctl.Internal.Contract.Wallet + ( getChangeAddress + , getWalletCollateral + , getWalletUtxos + ) as Wallet import Ctl.Internal.Helpers (liftEither, pprintTagSet, unsafeFromJust, (??)) -import Ctl.Internal.Lens (_amount, _body, _certs, _fee, _inputs, _mint, _networkId, _outputs, _plutusScripts, _referenceInputs, _withdrawals, _witnessSet) -import Ctl.Internal.Partition (equipartition, equipartitionValueWithTokenQuantityUpperBound, partition) -import Ctl.Internal.Types.ProtocolParameters (ProtocolParameters(ProtocolParameters)) +import Ctl.Internal.Lens + ( _amount + , _body + , _certs + , _fee + , _inputs + , _mint + , _networkId + , _outputs + , _plutusScripts + , _referenceInputs + , _withdrawals + , _witnessSet + ) +import Ctl.Internal.Partition + ( equipartition + , equipartitionValueWithTokenQuantityUpperBound + , partition + ) +import Ctl.Internal.Types.ProtocolParameters + ( ProtocolParameters(ProtocolParameters) + ) import Ctl.Internal.Types.Val (Val(Val), pprintVal) import Ctl.Internal.Types.Val as Val import Data.Array as Array import Data.Array.NonEmpty (NonEmptyArray) -import Data.Array.NonEmpty (fromArray, replicate, singleton, sortWith, toArray, uncons, zip, zipWith) as NEArray +import Data.Array.NonEmpty + ( fromArray + , replicate + , singleton + , sortWith + , toArray + , uncons + , zip + , zipWith + ) as NEArray import Data.Array.NonEmpty as NEA import Data.Bifunctor (lmap) import Data.Bitraversable (ltraverse) @@ -56,7 +148,16 @@ import Data.Lens.Setter ((%~), (.~), (?~)) import Data.Log.Tag (TagSet, tag, tagSetTag) import Data.Log.Tag (fromArray) as TagSet import Data.Map (Map) -import Data.Map (empty, filter, insert, isEmpty, lookup, singleton, toUnfoldable, union) as Map +import Data.Map + ( empty + , filter + , insert + , isEmpty + , lookup + , singleton + , toUnfoldable + , union + ) as Map import Data.Maybe (Maybe(Just, Nothing), isJust, maybe) import Data.Newtype (unwrap, wrap) import Data.Set (Set) @@ -69,8 +170,6 @@ import Effect.Aff.Class (liftAff) import JS.BigInt (BigInt) import Partial.Unsafe (unsafePartial) -import Debug (spy) - -- | Balances an unbalanced transaction using the specified balancer -- | constraints. balanceTxWithConstraints @@ -767,7 +866,7 @@ getCertsBalance tx (ProtocolParameters pparams) = sum $ map (BigNum.toBigInt <<< unwrap) $ tx ^. _body <<< _withdrawals in - spy "certsBalance" $ deposits - withdrawals + deposits - withdrawals -------------------------------------------------------------------------------- -- Helpers From 26ebecf4f094544dcbab74b9b4db2b731283e94c Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Sun, 21 Jul 2024 19:03:56 +0200 Subject: [PATCH 312/373] Re-enable nix checks --- flake.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/flake.nix b/flake.nix index 9fc388457..1d5e6ef5a 100644 --- a/flake.nix +++ b/flake.nix @@ -216,7 +216,6 @@ }; checks = { - /* ctl-e2e-test = project.runE2ETest { name = "ctl-e2e-test"; runnerMain = "Test.Ctl.E2E"; @@ -232,7 +231,6 @@ name = "ctl-staking-test"; testMain = "Test.Ctl.Testnet.Staking"; }; - */ ctl-unit-test = project.runPursTest { name = "ctl-unit-test"; testMain = "Test.Ctl.Unit"; From 002099c5c1ee66709cc888466b0351e35027d8c1 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 22 Jul 2024 15:45:05 +0200 Subject: [PATCH 313/373] Bump kupo to v2.9.0, Fix ctl runtime vm --- .gitignore | 1 + flake.lock | 33422 ++++++++--------------------- flake.nix | 23 +- nix/test-nixos-configuration.nix | 32 +- 4 files changed, 8431 insertions(+), 25047 deletions(-) diff --git a/.gitignore b/.gitignore index a8bba0b04..bfcddf80f 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ node_modules plutip-server/dist-newstyle/ plutip-server/dist/ plutip-server/.stack-work/ +nixos.qcow2 diff --git a/flake.lock b/flake.lock index 9dd2a82e5..f5dca8d06 100644 --- a/flake.lock +++ b/flake.lock @@ -17,176 +17,6 @@ "type": "github" } }, - "CHaP_10": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_11": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_12": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_13": { - "flake": false, - "locked": { - "lastModified": 1714517469, - "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_14": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_15": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_16": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_17": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_18": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_19": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, "CHaP_2": { "flake": false, "locked": { @@ -255,74 +85,6 @@ "type": "github" } }, - "CHaP_6": { - "flake": false, - "locked": { - "lastModified": 1714517469, - "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_7": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_8": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_9": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, "HTTP": { "flake": false, "locked": { @@ -355,7 +117,7 @@ "type": "github" } }, - "HTTP_11": { + "HTTP_2": { "flake": false, "locked": { "lastModified": 1451647621, @@ -371,7 +133,7 @@ "type": "github" } }, - "HTTP_12": { + "HTTP_3": { "flake": false, "locked": { "lastModified": 1451647621, @@ -387,7 +149,7 @@ "type": "github" } }, - "HTTP_13": { + "HTTP_4": { "flake": false, "locked": { "lastModified": 1451647621, @@ -403,7 +165,7 @@ "type": "github" } }, - "HTTP_14": { + "HTTP_5": { "flake": false, "locked": { "lastModified": 1451647621, @@ -419,7 +181,7 @@ "type": "github" } }, - "HTTP_15": { + "HTTP_6": { "flake": false, "locked": { "lastModified": 1451647621, @@ -435,7 +197,7 @@ "type": "github" } }, - "HTTP_16": { + "HTTP_7": { "flake": false, "locked": { "lastModified": 1451647621, @@ -451,7 +213,7 @@ "type": "github" } }, - "HTTP_17": { + "HTTP_8": { "flake": false, "locked": { "lastModified": 1451647621, @@ -467,7 +229,7 @@ "type": "github" } }, - "HTTP_18": { + "HTTP_9": { "flake": false, "locked": { "lastModified": 1451647621, @@ -483,307 +245,67 @@ "type": "github" } }, - "HTTP_19": { - "flake": false, + "agenix": { + "inputs": { + "nixpkgs": "nixpkgs_38" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_2": { - "flake": false, + "agenix-cli": { + "inputs": { + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_39" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "HTTP_20": { - "flake": false, + "agenix-cli_2": { + "inputs": { + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_41" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "HTTP_21": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_22": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_23": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_24": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_25": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_3": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_4": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_5": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_6": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_7": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_8": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_9": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "agenix": { - "inputs": { - "nixpkgs": "nixpkgs_38" - }, - "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", - "type": "github" - }, - "original": { - "owner": "ryantm", - "repo": "agenix", - "type": "github" - } - }, - "agenix-cli": { - "inputs": { - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_39" - }, - "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", - "type": "github" - }, - "original": { - "owner": "cole-h", - "repo": "agenix-cli", - "type": "github" - } - }, - "agenix-cli_2": { - "inputs": { - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_41" - }, - "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", - "type": "github" - }, - "original": { - "owner": "cole-h", - "repo": "agenix-cli", - "type": "github" - } - }, - "agenix-cli_3": { - "inputs": { - "flake-utils": "flake-utils_33", - "nixpkgs": "nixpkgs_70" - }, + "agenix-cli_3": { + "inputs": { + "flake-utils": "flake-utils_33", + "nixpkgs": "nixpkgs_70" + }, "locked": { "lastModified": 1641404293, "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", @@ -1505,241 +1027,20 @@ "type": "github" } }, - "blst_10": { + "blst_2": { "flake": false, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", "owner": "supranational", "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_11": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_12": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_13": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_14": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_15": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_16": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_17": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_18": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_19": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_2": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_20": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_21": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_22": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, @@ -1828,40 +1129,6 @@ "type": "github" } }, - "blst_8": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_9": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, "byron-chain": { "flake": false, "locked": { @@ -1912,7 +1179,7 @@ "type": "github" } }, - "cabal-32_11": { + "cabal-32_2": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1929,7 +1196,7 @@ "type": "github" } }, - "cabal-32_12": { + "cabal-32_3": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1946,7 +1213,7 @@ "type": "github" } }, - "cabal-32_13": { + "cabal-32_4": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1963,7 +1230,7 @@ "type": "github" } }, - "cabal-32_14": { + "cabal-32_5": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1980,7 +1247,7 @@ "type": "github" } }, - "cabal-32_15": { + "cabal-32_6": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1997,7 +1264,7 @@ "type": "github" } }, - "cabal-32_16": { + "cabal-32_7": { "flake": false, "locked": { "lastModified": 1603716527, @@ -2014,7 +1281,7 @@ "type": "github" } }, - "cabal-32_17": { + "cabal-32_8": { "flake": false, "locked": { "lastModified": 1603716527, @@ -2031,7 +1298,7 @@ "type": "github" } }, - "cabal-32_18": { + "cabal-32_9": { "flake": false, "locked": { "lastModified": 1603716527, @@ -2048,3980 +1315,3973 @@ "type": "github" } }, - "cabal-32_19": { + "cabal-34": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_2": { + "cabal-34_10": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_20": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_21": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_22": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_23": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_24": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_25": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_3": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_4": { + "cabal-34_9": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_5": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_6": { + "cabal-36_10": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_7": { + "cabal-36_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_8": { + "cabal-36_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_9": { + "cabal-36_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34": { + "cabal-36_5": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_10": { + "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_11": { + "cabal-36_7": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_12": { + "cabal-36_8": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_13": { + "cabal-36_9": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_14": { - "flake": false, + "call-flake": { "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1687380775, + "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", + "owner": "divnix", + "repo": "call-flake", + "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "call-flake", "type": "github" } }, - "cabal-34_15": { - "flake": false, + "capkgs": { "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1697123727, + "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", + "owner": "input-output-hk", + "repo": "capkgs", + "rev": "b197e225592dfe38afb80c94b628d99968c0541d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "capkgs", "type": "github" } }, - "cabal-34_16": { - "flake": false, - "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", - "type": "github" + "capsules": { + "inputs": { + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_52", + "ragenix": "ragenix_2" }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_17": { - "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "cabal-34_18": { - "flake": false, - "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "capsules_2": { + "inputs": { + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_81", + "ragenix": "ragenix_5" + }, + "locked": { + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "cabal-34_19": { - "flake": false, + "cardano-automation": { + "inputs": { + "flake-utils": "flake-utils_4", + "haskellNix": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "tullia": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia" + ] + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "cabal-34_2": { - "flake": false, + "cardano-automation_2": { + "inputs": { + "flake-utils": "flake-utils_9", + "haskellNix": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "tullia": "tullia_2" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "cabal-34_20": { - "flake": false, + "cardano-automation_3": { + "inputs": { + "flake-utils": "flake-utils_16", + "haskellNix": [ + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "tullia": "tullia_3" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "cabal-34_21": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1720834069, + "narHash": "sha256-jWFjTUTpwAgvsSJsQ4INgKl/paR489n1si35GLtSkuU=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" } }, - "cabal-34_22": { + "cardano-configurations-8.1.1": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1692193634, + "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" } }, - "cabal-34_23": { + "cardano-configurations-8.7.3": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1702085095, + "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" } }, - "cabal-34_24": { - "flake": false, + "cardano-db-sync": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-parts": "cardano-parts", + "flake-compat": "flake-compat_4", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "iohkNix": "iohkNix", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1707925775, + "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", + "owner": "intersectmbo", + "repo": "cardano-db-sync", + "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "intersectmbo", + "ref": "13.2.0.1", + "repo": "cardano-db-sync", "type": "github" } }, - "cabal-34_25": { + "cardano-db-sync-schema": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "cabal-34_3": { + "cardano-db-sync-schema-ng": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1694078776, + "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "sancho-1-1-0", + "repo": "cardano-db-sync", "type": "github" } }, - "cabal-34_4": { + "cardano-db-sync-service": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "cabal-34_5": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "cabal-34_6": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-graphql", "type": "github" } }, - "cabal-34_7": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_15" }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_8": { - "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-34_9": { - "flake": false, + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_25" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-36": { - "flake": false, + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_34" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-36_10": { - "flake": false, + "cardano-nix": { + "inputs": { + "blockfrost": "blockfrost_2", + "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", + "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", + "cardano-db-sync": "cardano-db-sync", + "cardano-node-8.1.1": "cardano-node-8.1.1", + "cardano-node-8.7.3": "cardano-node-8.7.3", + "devour-flake": "devour-flake", + "devshell": "devshell_4", + "flake-parts": "flake-parts_5", + "flake-root": "flake-root", + "hercules-ci-effects": "hercules-ci-effects", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "treefmt-nix": "treefmt-nix_3" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1721651758, + "narHash": "sha256-pciT8ASgAovl6I0GsdiWnUhExNXPJtQZpD8dTcv1o60=", + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "rev": "f6a7f0c43299783ca37bbdc73195c7289854e8da", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "mlabs-haskell", + "ref": "dshuiski/ogmios-v6.5.0", + "repo": "cardano.nix", "type": "github" } }, - "cabal-36_11": { - "flake": false, + "cardano-node": { + "inputs": { + "CHaP": "CHaP_5", + "cardano-automation": "cardano-automation_3", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "customConfig": "customConfig_3", + "em": "em_3", + "empty-flake": "empty-flake_4", + "flake-compat": "flake-compat_15", + "hackageNix": "hackageNix_4", + "haskellNix": "haskellNix_4", + "hostNixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_4", + "nix2container": "nix2container_6", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_3", + "std": "std_5", + "utils": "utils_7" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1720733312, + "narHash": "sha256-8jDBmy8o8RhX8q9lNa0R1sMXhlzipoTaNVwReLDy9wQ=", + "owner": "IntersectMBO", + "repo": "cardano-node", + "rev": "269dbda47ae538e355e837539d3e0e9833642fc7", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "IntersectMBO", + "ref": "9.0.0-sancho", + "repo": "cardano-node", "type": "github" } }, - "cabal-36_12": { - "flake": false, + "cardano-node-8.1.1": { + "inputs": { + "CHaP": "CHaP_3", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake_2", + "flake-compat": "flake-compat_6", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "iohkNix": "iohkNix_2", + "nix2container": "nix2container", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_3" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "intersectmbo", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "cabal-36_13": { - "flake": false, - "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "cardano-node-8.7.3": { + "inputs": { + "CHaP": "CHaP_4", + "cardano-automation": "cardano-automation_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "customConfig": "customConfig_2", + "em": "em_2", + "empty-flake": "empty-flake_3", + "flake-compat": "flake-compat_10", + "hackageNix": "hackageNix_3", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nix2container": "nix2container_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_2", + "std": "std_3", + "utils": "utils_5" + }, + "locked": { + "lastModified": 1702654749, + "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", + "type": "github" + }, + "original": { + "owner": "intersectmbo", + "ref": "8.7.3", + "repo": "cardano-node", "type": "github" } }, - "cabal-36_14": { + "cardano-node-service": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1690209950, + "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "8.1.2", + "repo": "cardano-node", "type": "github" } }, - "cabal-36_15": { + "cardano-node_2": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "cabal-36_16": { - "flake": false, + "cardano-parts": { + "inputs": { + "auth-keys-hub": "auth-keys-hub", + "capkgs": "capkgs", + "cardano-db-sync-schema": "cardano-db-sync-schema", + "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", + "cardano-db-sync-service": "cardano-db-sync-service", + "cardano-node-service": "cardano-node-service", + "cardano-wallet-service": "cardano-wallet-service", + "colmena": "colmena", + "empty-flake": "empty-flake", + "flake-parts": "flake-parts_3", + "haskell-nix": "haskell-nix", + "inputs-check": "inputs-check", + "iohk-nix": "iohk-nix", + "iohk-nix-ng": "iohk-nix-ng", + "nix": "nix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "nixpkgs-unstable": "nixpkgs-unstable_2", + "offchain-metadata-tools-service": "offchain-metadata-tools-service", + "sops-nix": "sops-nix", + "terraform-providers": "terraform-providers", + "terranix": "terranix", + "treefmt-nix": "treefmt-nix_2" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1697147999, + "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", + "owner": "input-output-hk", + "repo": "cardano-parts", + "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-parts", "type": "github" } }, - "cabal-36_17": { + "cardano-shell": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_18": { + "cardano-shell_10": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_19": { + "cardano-shell_2": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_2": { + "cardano-shell_3": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_20": { + "cardano-shell_4": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_21": { + "cardano-shell_5": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_22": { + "cardano-shell_6": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_23": { + "cardano-shell_7": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_24": { + "cardano-shell_8": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", - "type": "github" + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_25": { + "cardano-shell_9": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_3": { - "flake": false, + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig_4", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_40", + "haskellNix": "haskellNix_5", + "hostNixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix_5", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "cabal-36_4": { + "cardano-wallet-service": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1689751896, + "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", + "owner": "cardano-foundation", + "repo": "cardano-wallet", + "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "cardano-foundation", + "ref": "v2023-07-18", + "repo": "cardano-wallet", "type": "github" } }, - "cabal-36_5": { - "flake": false, + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_22", + "hackage": "hackage_4", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "n2c": "n2c_6", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_92", + "nixpkgs-haskell": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_7", + "tullia": "tullia_4" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "cabal-36_6": { - "flake": false, + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_12", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix_2", + "inclusive": "inclusive_9", + "nix": "nix_13", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_68", + "poetry2nix": "poetry2nix", + "utils": "utils_21" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cicero", "type": "github" } }, - "cabal-36_7": { - "flake": false, + "colmena": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ], + "stable": "stable" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1684127108, + "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", + "owner": "zhaofengli", + "repo": "colmena", + "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "zhaofengli", + "ref": "v0.4.0", + "repo": "colmena", "type": "github" } }, - "cabal-36_8": { - "flake": false, + "crane": { + "inputs": { + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_14", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "ipetkov", + "repo": "crane", "type": "github" } }, - "cabal-36_9": { - "flake": false, + "crystal": { + "inputs": { + "ameba-src": "ameba-src", + "bdwgc-src": "bdwgc-src", + "crystal-aarch64-darwin": "crystal-aarch64-darwin", + "crystal-src": "crystal-src", + "crystal-x86_64-darwin": "crystal-x86_64-darwin", + "crystal-x86_64-linux": "crystal-x86_64-linux", + "crystalline-src": "crystalline-src", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1683429373, + "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", + "owner": "manveru", + "repo": "crystal-flake", + "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "manveru", + "repo": "crystal-flake", "type": "github" } }, - "call-flake": { + "crystal-aarch64-darwin": { + "flake": false, "locked": { - "lastModified": 1687380775, - "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", - "owner": "divnix", - "repo": "call-flake", - "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "divnix", - "repo": "call-flake", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "capkgs": { + "crystal-src": { + "flake": false, "locked": { - "lastModified": 1697123727, - "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", - "owner": "input-output-hk", - "repo": "capkgs", - "rev": "b197e225592dfe38afb80c94b628d99968c0541d", + "lastModified": 1681995387, + "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", + "owner": "crystal-lang", + "repo": "crystal", + "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "capkgs", + "owner": "crystal-lang", + "ref": "1.8.1", + "repo": "crystal", "type": "github" } }, - "capsules": { - "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_52", - "ragenix": "ragenix_2" - }, + "crystal-x86_64-darwin": { + "flake": false, "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "capsules_2": { - "inputs": { - "bitte": "bitte_3", - "iogo": "iogo_2", - "nixpkgs": "nixpkgs_81", - "ragenix": "ragenix_5" - }, + "crystal-x86_64-linux": { + "flake": false, "locked": { - "lastModified": 1659466315, - "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", - "type": "github" + "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" } }, - "cardano-automation": { - "inputs": { - "flake-utils": "flake-utils_4", - "haskellNix": [ - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "tullia": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia" - ] - }, + "crystalline-src": { + "flake": false, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1681549124, + "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", + "owner": "elbywan", + "repo": "crystalline", + "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "elbywan", + "ref": "v0.9.0", + "repo": "crystalline", "type": "github" } }, - "cardano-automation_2": { - "inputs": { - "flake-utils": "flake-utils_9", - "haskellNix": [ - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "tullia": "tullia_2" - }, + "customConfig": { "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-automation", + "repo": "empty-flake", "type": "github" } }, - "cardano-automation_3": { - "inputs": { - "flake-utils": "flake-utils_16", - "haskellNix": [ - "cardano-node", - "haskellNix" - ], - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "tullia": "tullia_3" - }, + "customConfig_2": { "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-automation", + "repo": "empty-flake", "type": "github" } }, - "cardano-configurations": { - "flake": false, + "customConfig_3": { "locked": { - "lastModified": 1720834069, - "narHash": "sha256-jWFjTUTpwAgvsSJsQ4INgKl/paR489n1si35GLtSkuU=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", + "repo": "empty-flake", "type": "github" } }, - "cardano-configurations-8.1.1": { - "flake": false, + "customConfig_4": { "locked": { - "lastModified": 1692193634, - "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "repo": "empty-flake", "type": "github" } }, - "cardano-configurations-8.7.3": { - "flake": false, + "customConfig_5": { "locked": { - "lastModified": 1702085095, - "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", - "type": "github" + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", - "type": "github" + "path": "./custom-config", + "type": "path" } }, - "cardano-db-sync": { + "data-merge": { "inputs": { - "CHaP": "CHaP_2", - "cardano-parts": "cardano-parts", - "flake-compat": "flake-compat_4", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "iohkNix": "iohkNix", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils" + "nixlib": "nixlib", + "yants": "yants_6" }, "locked": { - "lastModified": 1707925775, - "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", - "owner": "intersectmbo", - "repo": "cardano-db-sync", - "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "13.2.0.1", - "repo": "cardano-db-sync", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-db-sync-schema": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.1.3", - "repo": "cardano-db-sync", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-db-sync-schema-ng": { - "flake": false, + "data-merge_3": { + "inputs": { + "nixlib": "nixlib_3", + "yants": "yants_8" + }, "locked": { - "lastModified": 1694078776, - "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "sancho-1-1-0", - "repo": "cardano-db-sync", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-db-sync-service": { - "flake": false, + "db-sync": { + "inputs": { + "cardano-world": "cardano-world", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_23", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_28" + }, "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", "owner": "input-output-hk", "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "13.1.1.3", + "ref": "13.1.0.0", "repo": "cardano-db-sync", "type": "github" } }, - "cardano-explorer-app": { - "flake": false, - "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", - "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", - "type": "github" + "deploy": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_17", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_8" }, - "original": { - "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", - "type": "github" - } - }, - "cardano-graphql": { - "flake": false, "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-graphql", + "repo": "deploy-rs", "type": "github" } }, - "cardano-mainnet-mirror": { + "deploy_2": { "inputs": { - "nixpkgs": "nixpkgs_15" + "fenix": "fenix_5", + "flake-compat": "flake-compat_18", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_14" }, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "repo": "deploy-rs", "type": "github" } }, - "cardano-mainnet-mirror_2": { + "deploy_3": { "inputs": { - "nixpkgs": "nixpkgs_25" + "fenix": "fenix_7", + "flake-compat": "flake-compat_19", + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_22" }, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "repo": "deploy-rs", "type": "github" } }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_34" - }, + "devour-flake": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1694098737, + "narHash": "sha256-O51F4YFOzlaQAc9b6xjkAqpvrvCtw/Os2M7TU0y4SKQ=", + "owner": "srid", + "repo": "devour-flake", + "rev": "30a34036b29b0d12989ef6c8be77aa949d85aef5", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "srid", + "repo": "devour-flake", "type": "github" } }, - "cardano-nix": { + "devshell": { "inputs": { - "blockfrost": "blockfrost_2", - "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", - "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", - "cardano-db-sync": "cardano-db-sync", - "cardano-node-8.1.1": "cardano-node-8.1.1", - "cardano-node-8.7.3": "cardano-node-8.7.3", - "devour-flake": "devour-flake", - "devshell": "devshell_4", - "flake-parts": "flake-parts_5", - "flake-root": "flake-root", - "hercules-ci-effects": "hercules-ci-effects", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", "nixpkgs" - ], - "pre-commit-hooks-nix": "pre-commit-hooks-nix", - "treefmt-nix": "treefmt-nix_3" + ] }, "locked": { - "lastModified": 1721488215, - "narHash": "sha256-FWNozULI4EFXvcOjXdIFazSh3rsiDKK46JkgZKLS9qc=", - "owner": "mlabs-haskell", - "repo": "cardano.nix", - "rev": "ee593df780086cb158ffa4bda046a0797b409059", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "ref": "dshuiski/ogmios-v6.5.0", - "repo": "cardano.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_5", - "cardano-automation": "cardano-automation_3", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "customConfig": "customConfig_3", - "em": "em_3", - "empty-flake": "empty-flake_4", - "flake-compat": "flake-compat_15", - "hackageNix": "hackageNix_4", - "haskellNix": "haskellNix_4", - "hostNixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_4", - "nix2container": "nix2container_6", - "nixpkgs": [ - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_3", - "std": "std_5", - "utils": "utils_7" - }, + "devshell_10": { "locked": { - "lastModified": 1720733312, - "narHash": "sha256-8jDBmy8o8RhX8q9lNa0R1sMXhlzipoTaNVwReLDy9wQ=", - "owner": "IntersectMBO", - "repo": "cardano-node", - "rev": "269dbda47ae538e355e837539d3e0e9833642fc7", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "IntersectMBO", - "ref": "9.0.0-sancho", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-8.1.1": { + "devshell_11": { "inputs": { - "CHaP": "CHaP_3", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake_2", - "flake-compat": "flake-compat_6", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_2", - "hostNixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" ], - "iohkNix": "iohkNix_2", - "nix2container": "nix2container", "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib", - "std": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std" - ], - "tullia": "tullia", - "utils": "utils_3" + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.1.1", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-8.7.3": { + "devshell_12": { "inputs": { - "CHaP": "CHaP_4", - "cardano-automation": "cardano-automation_2", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "customConfig": "customConfig_2", - "em": "em_2", - "empty-flake": "empty-flake_3", - "flake-compat": "flake-compat_10", - "hackageNix": "hackageNix_3", - "haskellNix": "haskellNix_3", - "hostNixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "iohkNix": "iohkNix_3", - "nix2container": "nix2container_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_2", - "std": "std_3", - "utils": "utils_5" + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" }, "locked": { - "lastModified": 1702654749, - "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.7.3", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-service": { - "flake": false, + "devshell_13": { "locked": { - "lastModified": 1690209950, - "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "8.1.2", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node_2": { - "flake": false, + "devshell_14": { "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-parts": { - "inputs": { - "auth-keys-hub": "auth-keys-hub", - "capkgs": "capkgs", - "cardano-db-sync-schema": "cardano-db-sync-schema", - "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", - "cardano-db-sync-service": "cardano-db-sync-service", - "cardano-node-service": "cardano-node-service", - "cardano-wallet-service": "cardano-wallet-service", - "colmena": "colmena", - "empty-flake": "empty-flake", - "flake-parts": "flake-parts_3", - "haskell-nix": "haskell-nix", - "inputs-check": "inputs-check", - "iohk-nix": "iohk-nix", - "iohk-nix-ng": "iohk-nix-ng", - "nix": "nix_2", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "nixpkgs-unstable": "nixpkgs-unstable_2", - "offchain-metadata-tools-service": "offchain-metadata-tools-service", - "sops-nix": "sops-nix", - "terraform-providers": "terraform-providers", - "terranix": "terranix", - "treefmt-nix": "treefmt-nix_2" - }, + "devshell_15": { "locked": { - "lastModified": 1697147999, - "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", - "owner": "input-output-hk", - "repo": "cardano-parts", - "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell": { - "flake": false, + "devshell_16": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_10": { - "flake": false, + "devshell_17": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_11": { - "flake": false, + "devshell_18": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_12": { - "flake": false, + "devshell_19": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_13": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" + "devshell_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, - "cardano-shell_14": { - "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_15": { - "flake": false, + "devshell_20": { + "inputs": { + "flake-utils": "flake-utils_46", + "nixpkgs": [ + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_16": { - "flake": false, + "devshell_3": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "systems": "systems_2" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_17": { - "flake": false, + "devshell_4": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ], + "systems": "systems_3" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1695973661, + "narHash": "sha256-BP2H4c42GThPIhERtTpV1yCtwQHYHEKdRu7pjrmQAwo=", + "owner": "numtide", + "repo": "devshell", + "rev": "cd4e2fda3150dd2f689caeac07b7f47df5197c31", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_18": { - "flake": false, + "devshell_5": { + "inputs": { + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_19": { - "flake": false, + "devshell_6": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_2": { - "flake": false, + "devshell_7": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_20": { - "flake": false, + "devshell_8": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_21": { - "flake": false, + "devshell_9": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_22": { - "flake": false, + "dmerge": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_23": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "dmerge_2": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_24": { - "flake": false, + "dmerge_3": { + "inputs": { + "haumea": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea" + ], + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "cardano-shell_25": { - "flake": false, + "dmerge_4": { + "inputs": { + "nixlib": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_3": { - "flake": false, + "dmerge_5": { + "inputs": { + "haumea": [ + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "cardano-node", + "std", + "lib" + ], + "yants": [ + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "cardano-shell_4": { - "flake": false, + "dmerge_6": { + "inputs": { + "nixlib": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ], + "yants": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_5": { - "flake": false, + "dmerge_7": { + "inputs": { + "nixlib": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ], + "yants": [ + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_6": { - "flake": false, + "driver": { + "inputs": { + "devshell": "devshell_13", + "inclusive": "inclusive_7", + "nix": "nix_12", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_18" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "nomad-driver-nix", "type": "github" } }, - "cardano-shell_7": { + "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "cardano-shell_8": { + "em": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "cardano-shell_9": { + "em_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "cardano-wallet": { + "em_3": { + "flake": false, + "locked": { + "lastModified": 1685015066, + "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", + "owner": "deepfire", + "repo": "em", + "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", + "type": "github" + }, + "original": { + "owner": "deepfire", + "repo": "em", + "type": "github" + } + }, + "ema": { "inputs": { - "customConfig": "customConfig_4", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_21", - "flake-utils": "flake-utils_40", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "nixpkgs-unstable" - ] + "flake-compat": "flake-compat_20", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_83", + "pre-commit-hooks": "pre-commit-hooks" }, "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", + "owner": "srid", + "repo": "ema", "type": "github" } }, - "cardano-wallet-service": { + "ema_2": { "flake": false, "locked": { - "lastModified": 1689751896, - "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", - "owner": "cardano-foundation", - "repo": "cardano-wallet", - "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "owner": "cardano-foundation", - "ref": "v2023-07-18", - "repo": "cardano-wallet", + "owner": "srid", + "ref": "multisite", + "repo": "ema", "type": "github" } }, - "cardano-world": { + "emanote": { "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ - "db-sync" - ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node_2", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_22", - "hackage": "hackage_4", - "haskell-nix": "haskell-nix_3", - "iohk-nix": "iohk-nix_2", - "n2c": "n2c_6", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_92", - "nixpkgs-haskell": [ - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios", - "std": "std_7", - "tullia": "tullia_4" + "ema": "ema_2", + "flake-parts": "flake-parts_6", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_86", + "tailwind-haskell": "tailwind-haskell" }, "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "emanote", + "type": "github" + } + }, + "empty-flake": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-world", + "repo": "empty-flake", "type": "github" } }, - "cicero": { - "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_12", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix_2", - "inclusive": "inclusive_9", - "nix": "nix_13", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_68", - "poetry2nix": "poetry2nix", - "utils": "utils_21" - }, + "empty-flake_2": { "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cicero", + "repo": "empty-flake", "type": "github" } }, - "colmena": { - "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "nixpkgs" - ], - "stable": "stable" + "empty-flake_3": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "empty-flake_4": { "locked": { - "lastModified": 1684127108, - "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", - "owner": "zhaofengli", - "repo": "colmena", - "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "zhaofengli", - "ref": "v0.4.0", - "repo": "colmena", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "crane": { + "fenix": { "inputs": { - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_14", "nixpkgs": [ "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", + "cardano-db-sync", + "cardano-parts", + "auth-keys-hub", + "statix", "nixpkgs" ], - "rust-overlay": "rust-overlay" + "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "lastModified": 1645251813, + "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", + "owner": "nix-community", + "repo": "fenix", + "rev": "9892337b588c38ec59466a1c89befce464aae7f8", "type": "github" }, "original": { - "owner": "ipetkov", - "repo": "crane", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "crystal": { + "fenix_2": { "inputs": { - "ameba-src": "ameba-src", - "bdwgc-src": "bdwgc-src", - "crystal-aarch64-darwin": "crystal-aarch64-darwin", - "crystal-src": "crystal-src", - "crystal-x86_64-darwin": "crystal-x86_64-darwin", - "crystal-x86_64-linux": "crystal-x86_64-linux", - "crystalline-src": "crystalline-src", - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_30", + "rust-analyzer-src": "rust-analyzer-src_2" }, "locked": { - "lastModified": 1683429373, - "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", - "owner": "manveru", - "repo": "crystal-flake", - "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", "type": "github" }, "original": { - "owner": "manveru", - "repo": "crystal-flake", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "crystal-aarch64-darwin": { - "flake": false, + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_42", + "rust-analyzer-src": "rust-analyzer-src_3" + }, "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "crystal-src": { - "flake": false, + "fenix_4": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" + }, "locked": { - "lastModified": 1681995387, - "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", - "owner": "crystal-lang", - "repo": "crystal", - "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "crystal-lang", - "ref": "1.8.1", - "repo": "crystal", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "crystal-x86_64-darwin": { - "flake": false, + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_55", + "rust-analyzer-src": "rust-analyzer-src_5" + }, "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "crystal-x86_64-linux": { - "flake": false, + "fenix_6": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_6" + }, "locked": { - "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "crystalline-src": { - "flake": false, + "fenix_7": { + "inputs": { + "nixpkgs": "nixpkgs_71", + "rust-analyzer-src": "rust-analyzer-src_7" + }, "locked": { - "lastModified": 1681549124, - "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", - "owner": "elbywan", - "repo": "crystalline", - "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "elbywan", - "ref": "v0.9.0", - "repo": "crystalline", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "customConfig": { + "fenix_8": { + "inputs": { + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_8" + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "customConfig_2": { + "flake-compat": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "customConfig_3": { + "flake-compat_10": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "customConfig_4": { + "flake-compat_11": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "customConfig_5": { + "flake-compat_12": { + "flake": false, "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" }, "original": { - "path": "./custom-config", - "type": "path" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "data-merge": { - "inputs": { - "nixlib": "nixlib", - "yants": "yants_6" - }, + "flake-compat_13": { + "flake": false, "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", - "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "data-merge_2": { - "inputs": { - "nixlib": "nixlib_2" - }, + "flake-compat_14": { + "flake": false, "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "data-merge_3": { - "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_8" - }, + "flake-compat_15": { + "flake": false, "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "db-sync": { - "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_23", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "nixpkgs": [ - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_28" - }, + "flake-compat_16": { + "flake": false, "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "13.1.0.0", - "repo": "cardano-db-sync", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "deploy": { - "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_17", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_8" - }, + "flake-compat_17": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "deploy_2": { - "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_18", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_14" - }, + "flake-compat_18": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "deploy_3": { - "inputs": { - "fenix": "fenix_7", - "flake-compat": "flake-compat_19", - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_22" - }, + "flake-compat_19": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devour-flake": { + "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1694098737, - "narHash": "sha256-O51F4YFOzlaQAc9b6xjkAqpvrvCtw/Os2M7TU0y4SKQ=", - "owner": "srid", - "repo": "devour-flake", - "rev": "30a34036b29b0d12989ef6c8be77aa949d85aef5", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "srid", - "repo": "devour-flake", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, + "flake-compat_20": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_10": { + "flake-compat_21": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "flake-compat", "type": "github" } }, - "devshell_11": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, + "flake-compat_22": { + "flake": false, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_12": { - "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_65" - }, + "flake-compat_23": { + "flake": false, "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "devshell_13": { + "flake-compat_24": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_14": { + "flake-compat_25": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "devshell_15": { + "flake-compat_3": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_16": { + "flake-compat_4": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "devshell_17": { + "flake-compat_5": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "devshell_18": { + "flake-compat_6": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "devshell_19": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "flake-compat_7": { + "flake": false, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "devshell_2": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "flake-compat_8": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_20": { - "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": [ - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] - }, + "flake-compat_9": { + "flake": false, "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_3": { + "flake-parts": { "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "systems": "systems_2" + "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", - "owner": "numtide", - "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "lastModified": 1672152762, + "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "devshell_4": { + "flake-parts_2": { "inputs": { - "nixpkgs": [ - "cardano-nix", - "nixpkgs" - ], - "systems": "systems_3" + "nixpkgs-lib": "nixpkgs-lib_2" }, "locked": { - "lastModified": 1695973661, - "narHash": "sha256-BP2H4c42GThPIhERtTpV1yCtwQHYHEKdRu7pjrmQAwo=", - "owner": "numtide", - "repo": "devshell", - "rev": "cd4e2fda3150dd2f689caeac07b7f47df5197c31", + "lastModified": 1682984683, + "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "86684881e184f41aa322e653880e497b66429f3e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "devshell_5": { + "flake-parts_3": { "inputs": { - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", + "nixpkgs-lib": "nixpkgs-lib_3" + }, + "locked": { + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_4" + }, + "locked": { + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_5" + }, + "locked": { + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs": "nixpkgs_85" + }, + "locked": { + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "hercules-ci-effects", "nixpkgs" ] }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-root": { + "locked": { + "lastModified": 1692742795, + "narHash": "sha256-f+Y0YhVCIJ06LemO+3Xx00lIcqQxSKJHXT/yk1RTKxw=", + "owner": "srid", + "repo": "flake-root", + "rev": "d9a70d9c7a5fd7f3258ccf48da9335e9b47c3937", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "flake-root", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { "owner": "numtide", - "repo": "devshell", + "repo": "flake-utils", "type": "github" } }, - "devshell_6": { + "flake-utils_10": { "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { "owner": "numtide", - "repo": "devshell", + "repo": "flake-utils", "type": "github" } }, - "devshell_7": { + "flake-utils_11": { "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { "owner": "numtide", - "repo": "devshell", + "repo": "flake-utils", "type": "github" } }, - "devshell_8": { + "flake-utils_12": { "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { "owner": "numtide", - "repo": "devshell", + "repo": "flake-utils", "type": "github" } }, - "devshell_9": { + "flake-utils_13": { "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { "owner": "numtide", - "repo": "devshell", + "repo": "flake-utils", "type": "github" } }, - "dmerge": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "yants" - ] - }, + "flake-utils_14": { "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_2": { + "flake-utils_15": { "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "yants" - ] + "systems": "systems_4" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_3": { - "inputs": { - "haumea": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea" - ], - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ], - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, + "flake-utils_16": { "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_4": { - "inputs": { - "nixlib": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "flake-utils_17": { "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_5": { - "inputs": { - "haumea": [ - "cardano-node", - "std", - "haumea" - ], - "nixlib": [ - "cardano-node", - "std", - "lib" - ], - "yants": [ - "cardano-node", - "std", - "yants" - ] - }, + "flake-utils_18": { "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_6": { - "inputs": { - "nixlib": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] - }, + "flake-utils_19": { "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_7": { - "inputs": { - "nixlib": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "db-sync", - "cardano-world", - "std", - "yants" - ] - }, + "flake-utils_2": { "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "driver": { + "flake-utils_20": { "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_7", - "nix": "nix_12", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_18" + "systems": "systems_5" }, "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix": { - "flake": false, + "flake-utils_21": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_10": { - "inputs": { - "flake-utils": "flake-utils_78" - }, + "flake-utils_22": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_11": { - "inputs": { - "flake-utils": "flake-utils_80" - }, + "flake-utils_23": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_12": { - "inputs": { - "flake-utils": "flake-utils_82" - }, + "flake-utils_24": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_13": { - "inputs": { - "flake-utils": "flake-utils_86" - }, + "flake-utils_25": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_14": { - "inputs": { - "flake-utils": "flake-utils_92" - }, + "flake-utils_26": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_15": { - "inputs": { - "flake-utils": "flake-utils_94" - }, + "flake-utils_27": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_16": { - "inputs": { - "flake-utils": "flake-utils_98" - }, + "flake-utils_28": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_2": { - "inputs": { - "flake-utils": "flake-utils_48" - }, + "flake-utils_29": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_3": { - "inputs": { - "flake-utils": "flake-utils_50" - }, + "flake-utils_3": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_4": { - "inputs": { - "flake-utils": "flake-utils_52" - }, + "flake-utils_30": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_5": { - "inputs": { - "flake-utils": "flake-utils_54" - }, + "flake-utils_31": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_6": { - "inputs": { - "flake-utils": "flake-utils_58" - }, + "flake-utils_32": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_7": { - "inputs": { - "flake-utils": "flake-utils_64" - }, + "flake-utils_33": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_8": { - "inputs": { - "flake-utils": "flake-utils_66" - }, + "flake-utils_34": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_9": { - "inputs": { - "flake-utils": "flake-utils_70" - }, + "flake-utils_35": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "em": { - "flake": false, + "flake-utils_36": { "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "em_2": { - "flake": false, + "flake-utils_37": { "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "em_3": { - "flake": false, + "flake-utils_38": { "locked": { - "lastModified": 1685015066, - "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", - "owner": "deepfire", - "repo": "em", - "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ema": { - "inputs": { - "flake-compat": "flake-compat_20", - "flake-utils": "flake-utils_37", - "nixpkgs": "nixpkgs_83", - "pre-commit-hooks": "pre-commit-hooks" - }, + "flake-utils_39": { "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { - "owner": "srid", - "repo": "ema", - "type": "github" - } + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", + "type": "github" + } }, - "ema_2": { - "flake": false, + "flake-utils_4": { "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", - "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "srid", - "ref": "multisite", - "repo": "ema", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "emanote": { - "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts_6", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_86", - "tailwind-haskell": "tailwind-haskell" - }, + "flake-utils_40": { "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "srid", - "repo": "emanote", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "empty-flake": { + "flake-utils_41": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "empty-flake_2": { + "flake-utils_42": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "empty-flake_3": { + "flake-utils_43": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "empty-flake_4": { + "flake-utils_44": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "auth-keys-hub", - "statix", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, + "flake-utils_45": { "locked": { - "lastModified": 1645251813, - "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", - "owner": "nix-community", - "repo": "fenix", - "rev": "9892337b588c38ec59466a1c89befce464aae7f8", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_2": { - "inputs": { - "nixpkgs": "nixpkgs_30", - "rust-analyzer-src": "rust-analyzer-src_2" - }, + "flake-utils_46": { "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_3": { - "inputs": { - "nixpkgs": "nixpkgs_42", - "rust-analyzer-src": "rust-analyzer-src_3" - }, + "flake-utils_47": { "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_4": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_4" - }, + "flake-utils_5": { "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "fenix_5": { - "inputs": { - "nixpkgs": "nixpkgs_55", - "rust-analyzer-src": "rust-analyzer-src_5" - }, + "flake-utils_6": { "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_6": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_6" - }, + "flake-utils_7": { "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_7": { - "inputs": { - "nixpkgs": "nixpkgs_71", - "rust-analyzer-src": "rust-analyzer-src_7" - }, + "flake-utils_8": { "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_8": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_8" - }, + "flake-utils_9": { "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "flake-compat": { + "flakeCompat": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { @@ -6030,25575 +5290,9713 @@ "type": "github" } }, - "flake-compat_10": { - "flake": false, + "follower": { + "inputs": { + "devshell": "devshell_14", + "inclusive": "inclusive_8", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_19" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "repo": "nomad-follower", "type": "github" } }, - "flake-compat_11": { + "ghc-8.6.5-iohk": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_12": { + "ghc-8.6.5-iohk_10": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_13": { + "ghc-8.6.5-iohk_2": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_14": { + "ghc-8.6.5-iohk_3": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_15": { + "ghc-8.6.5-iohk_4": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_16": { + "ghc-8.6.5-iohk_5": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_17": { + "ghc-8.6.5-iohk_6": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_18": { + "ghc-8.6.5-iohk_7": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_19": { + "ghc-8.6.5-iohk_8": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_2": { + "ghc-8.6.5-iohk_9": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_20": { + "ghc910X": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" + "lastModified": 1714520650, + "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", + "ref": "ghc-9.10", + "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", + "revCount": 62663, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_21": { + "ghc911": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" + "lastModified": 1714817013, + "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", + "ref": "refs/heads/master", + "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", + "revCount": 62816, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_22": { + "ghc98X": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_23": { + "ghc98X_2": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_24": { + "ghc99": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_25": { + "ghc99_2": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "cardano-nix", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "flake-compat_26": { - "flake": false, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_18", + "utils": "utils_2" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "flake-compat_27": { - "flake": false, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_22", + "utils": "utils_4" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "flake-compat_28": { - "flake": false, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_31", + "utils": "utils_6" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "flake-compat_29": { + "hackage": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1692145451, + "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "hackage.nix", + "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_3": { + "hackage-nix": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1721521743, + "narHash": "sha256-QaQGm8XnB86fAzkivPsJUcJ4HbJyBS0MhHtNHpGNwu4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "0e72b229a40ce8cdf0d0f41caf9f23d544ca6578", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_30": { + "hackageNix": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1702945378, + "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_31": { + "hackageNix_2": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_32": { + "hackageNix_3": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_33": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_34": { + "hackageNix_4": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1719794527, + "narHash": "sha256-qHo/KumtwAzPkfLWODu/6EFY/LeK+C7iPJyAUdT8tGA=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "hackage.nix", + "rev": "da2a3bc9bd1b3dd41bb147279529c471c615fd3e", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_35": { + "hackage_2": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_36": { + "hackage_3": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_37": { + "hackage_4": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_38": { + "hackage_5": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_39": { - "flake": false, + "haskell-flake": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "srid", + "repo": "haskell-flake", "type": "github" } }, - "flake-compat_4": { - "flake": false, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "empty-flake" + ] + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1692147008, + "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "haskell.nix", + "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_40": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_6", + "nix-tools": "nix-tools", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_41": { - "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_42": { - "flake": false, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": [ + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_43": { - "flake": false, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_25", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "hackage": [ + "hackage-nix" + ], + "hls-1.10": "hls-1.10_6", + "hls-2.0": "hls-2.0_5", + "hls-2.2": "hls-2.2_4", + "hls-2.3": "hls-2.3_4", + "hls-2.4": "hls-2.4_4", + "hls-2.5": "hls-2.5_2", + "hls-2.6": "hls-2.6_2", + "hls-2.7": "hls-2.7_2", + "hls-2.8": "hls-2.8_2", + "hls-2.9": "hls-2.9", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2305": "nixpkgs-2305_5", + "nixpkgs-2311": "nixpkgs-2311_2", + "nixpkgs-2405": "nixpkgs-2405", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1721523035, + "narHash": "sha256-011KiatpklteNLAg7PkJsOnFpbmvhG5Ukg8vPnSqv2I=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "6bbe0755f28ea7798bf495d732fa92c3f20d6902", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_44": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-compat": "flake-compat_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "cardano-nix", + "cardano-db-sync", + "hackageNix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage" }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_45": { - "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1701053834, + "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_46": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_47": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "cardano-nix", + "cardano-node-8.1.1", + "hackageNix" + ], + "hls-1.10": "hls-1.10_3", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "iserv-proxy": "iserv-proxy_3", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_2" }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_48": { - "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_49": { - "flake": false, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-compat": "flake-compat_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", + "hackage": [ + "cardano-nix", + "cardano-node-8.7.3", + "hackageNix" + ], + "hls-1.10": "hls-1.10_4", + "hls-2.0": "hls-2.0_3", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_4", + "iserv-proxy": "iserv-proxy_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2211": "nixpkgs-2211_4", + "nixpkgs-2305": "nixpkgs-2305_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_3" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_5": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_50": { - "flake": false, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-compat": "flake-compat_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "ghc910X": "ghc910X", + "ghc911": "ghc911", + "hackage": [ + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10_5", + "hls-2.0": "hls-2.0_4", + "hls-2.2": "hls-2.2_3", + "hls-2.3": "hls-2.3_3", + "hls-2.4": "hls-2.4_3", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", + "hls-2.7": "hls-2.7", + "hls-2.8": "hls-2.8", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_5", + "iserv-proxy": "iserv-proxy_5", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2211": "nixpkgs-2211_5", + "nixpkgs-2305": "nixpkgs-2305_4", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_4" + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1718797200, + "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cb139fa956158397aa398186bb32dd26f7318784", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_51": { - "flake": false, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_52": { - "flake": false, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_47", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_53": { - "flake": false, + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_28" + }, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", "type": "github" } }, - "flake-compat_54": { - "flake": false, + "haumea_2": { + "inputs": { + "nixpkgs": [ + "cardano-node", + "std", + "lib" + ] + }, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", "type": "github" } }, - "flake-compat_55": { - "flake": false, + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "cardano-nix", + "flake-parts" + ], + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1710396488, + "narHash": "sha256-yniBB5i1un44uzR4+luTWvZ6uGvsHSYIBiDZ8Xox4nQ=", + "owner": "mlabs-haskell", + "repo": "hercules-ci-effects", + "rev": "f5ed263ab0585dfb7b067301419fb80d64e8c021", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "mlabs-haskell", + "ref": "push-cache-effect", + "repo": "hercules-ci-effects", "type": "github" } }, - "flake-compat_6": { - "flake": false, + "hercules-ci-effects_2": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_99" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1719226092, + "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", "type": "github" } }, - "flake-compat_7": { + "hls-1.10": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-compat_8": { + "hls-1.10_2": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-compat_9": { + "hls-1.10_3": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, + "hls-1.10_4": { + "flake": false, "locked": { - "lastModified": 1672152762, - "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_2" - }, + "hls-1.10_5": { + "flake": false, "locked": { - "lastModified": 1682984683, - "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "86684881e184f41aa322e653880e497b66429f3e", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_3" - }, + "hls-1.10_6": { + "flake": false, "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_4" - }, + "hls-2.0": { + "flake": false, "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_5" - }, + "hls-2.0_2": { + "flake": false, "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_6": { - "inputs": { - "nixpkgs": "nixpkgs_85" - }, + "hls-2.0_3": { + "flake": false, "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "hercules-ci-effects", - "nixpkgs" - ] - }, + "hls-2.0_4": { + "flake": false, "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "id": "flake-parts", - "type": "indirect" + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" } }, - "flake-root": { + "hls-2.0_5": { + "flake": false, "locked": { - "lastModified": 1692742795, - "narHash": "sha256-f+Y0YhVCIJ06LemO+3Xx00lIcqQxSKJHXT/yk1RTKxw=", - "owner": "srid", - "repo": "flake-root", - "rev": "d9a70d9c7a5fd7f3258ccf48da9335e9b47c3937", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "srid", - "repo": "flake-root", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils": { + "hls-2.2": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_10": { + "hls-2.2_2": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_100": { - "inputs": { - "systems": "systems_59" - }, + "hls-2.2_3": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_101": { - "inputs": { - "systems": "systems_60" - }, + "hls-2.2_4": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_102": { - "inputs": { - "systems": "systems_61" - }, + "hls-2.3": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_103": { - "inputs": { - "systems": "systems_62" - }, + "hls-2.3_2": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_104": { - "inputs": { - "systems": "systems_63" - }, + "hls-2.3_3": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_105": { - "inputs": { - "systems": "systems_64" - }, + "hls-2.3_4": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_106": { - "inputs": { - "systems": "systems_65" - }, + "hls-2.4": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_107": { - "inputs": { - "systems": "systems_66" - }, + "hls-2.4_2": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_11": { + "hls-2.4_3": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_12": { + "hls-2.4_4": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_13": { + "hls-2.5": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_14": { + "hls-2.5_2": { + "flake": false, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_15": { - "inputs": { - "systems": "systems_4" - }, + "hls-2.6": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_16": { + "hls-2.6_2": { + "flake": false, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_17": { + "hls-2.7": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_18": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "hls-2.7_2": { + "flake": false, + "locked": { + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_19": { + "hls-2.8": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_2": { + "hls-2.8_2": { + "flake": false, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_20": { - "inputs": { - "systems": "systems_5" - }, + "hls-2.9": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1718469202, + "narHash": "sha256-THXSz+iwB1yQQsr/PY151+2GvtoJnTIB2pIQ4OzfjD4=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "40891bccb235ebacce020b598b083eab9dda80f1", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.9.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_21": { + "hpc-coveralls": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_22": { + "hpc-coveralls_10": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_23": { + "hpc-coveralls_2": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_24": { + "hpc-coveralls_3": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_25": { + "hpc-coveralls_4": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_26": { + "hpc-coveralls_5": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_27": { + "hpc-coveralls_6": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_28": { + "hpc-coveralls_7": { + "flake": false, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_29": { + "hpc-coveralls_8": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_3": { + "hpc-coveralls_9": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_30": { - "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_31": { + "hydra": { + "inputs": { + "nix": "nix", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_32": { + "hydra_10": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_33": { + "hydra_11": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_34": { + "hydra_12": { + "inputs": { + "nix": "nix_20", + "nixpkgs": [ + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_35": { + "hydra_2": { + "inputs": { + "nix": "nix_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_36": { + "hydra_3": { + "inputs": { + "nix": "nix_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_37": { + "hydra_4": { + "inputs": { + "nix": "nix_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_38": { + "hydra_5": { + "inputs": { + "nix": "nix_6", + "nixpkgs": [ + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_39": { + "hydra_6": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "flake-utils_4": { + "hydra_7": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "flake-utils_40": { + "hydra_8": { + "inputs": { + "nix": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "flake-utils_41": { + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_42": { + "incl": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "flake-utils_43": { + "incl_2": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "flake-utils_44": { + "incl_3": { + "inputs": { + "nixlib": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "flake-utils_45": { + "incl_4": { + "inputs": { + "nixlib": [ + "cardano-node", + "std", + "lib" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "flake-utils_46": { + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_47": { + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_48": { + "inclusive_11": { "inputs": { - "systems": "systems_7" + "stdlib": "stdlib_11" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_49": { + "inclusive_12": { "inputs": { - "systems": "systems_8" + "stdlib": "stdlib_12" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { - "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_50": { + "inclusive_2": { "inputs": { - "systems": "systems_9" + "stdlib": "stdlib_2" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_51": { + "inclusive_3": { "inputs": { - "systems": "systems_10" + "stdlib": "stdlib_3" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_52": { + "inclusive_4": { "inputs": { - "systems": "systems_11" + "stdlib": "stdlib_4" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_53": { + "inclusive_5": { "inputs": { - "systems": "systems_12" + "stdlib": "stdlib_5" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_54": { + "inclusive_6": { "inputs": { - "systems": "systems_13" + "stdlib": "stdlib_6" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_55": { + "inclusive_7": { "inputs": { - "systems": "systems_14" + "stdlib": "stdlib_7" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_56": { + "inclusive_8": { "inputs": { - "systems": "systems_15" + "stdlib": "stdlib_8" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_57": { + "inclusive_9": { "inputs": { - "systems": "systems_16" + "stdlib": "stdlib_9" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_58": { + "inputs-check": { "inputs": { - "systems": "systems_17" + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1692633913, + "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", + "owner": "input-output-hk", + "repo": "inputs-check", + "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "inputs-check", "type": "github" } }, - "flake-utils_59": { + "iogo": { "inputs": { - "systems": "systems_18" + "devshell": "devshell_8", + "inclusive": "inclusive_4", + "nixpkgs": "nixpkgs_51", + "utils": "utils_13" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "bitte-iogo", "type": "github" } }, - "flake-utils_6": { + "iogo_2": { + "inputs": { + "devshell": "devshell_18", + "inclusive": "inclusive_12", + "nixpkgs": "nixpkgs_80", + "utils": "utils_27" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "bitte-iogo", "type": "github" } }, - "flake-utils_60": { + "iohk-nix": { "inputs": { - "systems": "systems_19" + "blst": "blst", + "nixpkgs": "nixpkgs_8", + "secp256k1": "secp256k1", + "sodium": "sodium" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1691469905, + "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", "type": "github" } }, - "flake-utils_61": { + "iohk-nix-ng": { "inputs": { - "systems": "systems_20" + "blst": "blst_2", + "nixpkgs": "nixpkgs_9", + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1696471795, + "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_62": { + "iohk-nix_2": { "inputs": { - "systems": "systems_21" + "nixpkgs": [ + "db-sync", + "cardano-world", + "nixpkgs" + ] }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_63": { + "iohk-nix_3": { "inputs": { - "systems": "systems_22" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "blst": "blst_7", + "nixpkgs": [ + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" + }, + "locked": { + "lastModified": 1721411284, + "narHash": "sha256-NH345tWz4A2epDp9qRy87PlXtMiQTd4wbr57Qymn2uY=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "05fe9ba470544e615799492080b7f0f15bf7da3c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_64": { + "iohkNix": { "inputs": { - "systems": "systems_23" + "blst": "blst_3", + "nixpkgs": [ + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "secp256k1": "secp256k1_3", + "sodium": "sodium_3" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1698999258, + "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_65": { + "iohkNix_2": { "inputs": { - "systems": "systems_24" + "blst": "blst_4", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "secp256k1": "secp256k1_4", + "sodium": "sodium_4" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_66": { + "iohkNix_3": { "inputs": { - "systems": "systems_25" + "blst": "blst_5", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "secp256k1": "secp256k1_5", + "sodium": "sodium_5" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_67": { + "iohkNix_4": { "inputs": { - "systems": "systems_26" + "blst": "blst_6", + "nixpkgs": [ + "cardano-node", + "nixpkgs" + ], + "secp256k1": "secp256k1_6", + "sodium": "sodium_6" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1720729907, + "narHash": "sha256-V4GLBT8JdRiucMHnsZM23H0vUOsc3FYe/4ozHcblGwY=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7c47f37a9e6494dce0a81eb40badc7eaca2e4728", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_68": { + "iohkNix_5": { "inputs": { - "systems": "systems_27" + "nixpkgs": [ + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_69": { + "iohkNix_6": { "inputs": { - "systems": "systems_28" + "nixpkgs": [ + "db-sync", + "nixpkgs" + ] }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_7": { + "iserv-proxy": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "ref": "hkm/remote-iserv", + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "flake-utils_70": { - "inputs": { - "systems": "systems_29" - }, + "iserv-proxy_2": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "flake-utils_71": { - "inputs": { - "systems": "systems_30" - }, + "iserv-proxy_3": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "flake-utils_72": { - "inputs": { - "systems": "systems_31" - }, + "iserv-proxy_4": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "flake-utils_73": { - "inputs": { - "systems": "systems_32" - }, + "iserv-proxy_5": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", "type": "github" } }, - "flake-utils_74": { - "inputs": { - "systems": "systems_33" - }, + "iserv-proxy_6": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", "type": "github" } }, - "flake-utils_75": { - "inputs": { - "systems": "systems_34" - }, + "lib": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1694306727, + "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "flake-utils_76": { - "inputs": { - "systems": "systems_35" - }, + "lowdown-src": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_77": { - "inputs": { - "systems": "systems_36" - }, + "lowdown-src_10": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_78": { - "inputs": { - "systems": "systems_37" - }, + "lowdown-src_11": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_79": { - "inputs": { - "systems": "systems_38" - }, + "lowdown-src_12": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_8": { + "lowdown-src_13": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_80": { - "inputs": { - "systems": "systems_39" - }, + "lowdown-src_14": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_81": { - "inputs": { - "systems": "systems_40" - }, + "lowdown-src_15": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_82": { - "inputs": { - "systems": "systems_41" - }, + "lowdown-src_16": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_83": { - "inputs": { - "systems": "systems_42" - }, + "lowdown-src_17": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_84": { - "inputs": { - "systems": "systems_43" - }, + "lowdown-src_18": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_85": { - "inputs": { - "systems": "systems_44" - }, + "lowdown-src_19": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_86": { - "inputs": { - "systems": "systems_45" - }, + "lowdown-src_2": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_87": { - "inputs": { - "systems": "systems_46" - }, + "lowdown-src_20": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_88": { - "inputs": { - "systems": "systems_47" - }, + "lowdown-src_3": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_89": { - "inputs": { - "systems": "systems_48" - }, + "lowdown-src_4": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_9": { + "lowdown-src_5": { + "flake": false, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_90": { - "inputs": { - "systems": "systems_49" - }, + "lowdown-src_6": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_91": { - "inputs": { - "systems": "systems_50" - }, + "lowdown-src_7": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_92": { - "inputs": { - "systems": "systems_51" - }, + "lowdown-src_8": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_93": { - "inputs": { - "systems": "systems_52" - }, + "lowdown-src_9": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_94": { - "inputs": { - "systems": "systems_53" - }, + "mdbook-kroki-preprocessor": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "flake-utils_95": { - "inputs": { - "systems": "systems_54" - }, + "mdbook-kroki-preprocessor_2": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "flake-utils_96": { - "inputs": { - "systems": "systems_55" - }, + "mdbook-kroki-preprocessor_3": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "flake-utils_97": { + "n2c": { "inputs": { - "systems": "systems_56" + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "flake-utils_98": { + "n2c_2": { "inputs": { - "systems": "systems_57" + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "flake-utils_99": { + "n2c_3": { "inputs": { - "systems": "systems_58" + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "flakeCompat": { - "flake": false, - "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "follower": { + "n2c_4": { "inputs": { - "devshell": "devshell_14", - "inclusive": "inclusive_8", + "flake-utils": "flake-utils_19", "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", + "cardano-node", + "cardano-automation", + "tullia", + "std", "nixpkgs" - ], - "utils": "utils_19" + ] }, "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" + "n2c_5": { + "inputs": { + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_56" }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_10": { - "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_11": { - "flake": false, + "n2c_6": { + "inputs": { + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_91" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_12": { - "flake": false, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_6", + "nixpkgs-regression": "nixpkgs-regression" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "ghc-8.6.5-iohk_13": { - "flake": false, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_15", + "inclusive": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_20" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-cache-proxy", "type": "github" } }, - "ghc-8.6.5-iohk_14": { - "flake": false, + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_13" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-inclusive", "type": "github" } }, - "ghc-8.6.5-iohk_15": { - "flake": false, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_8", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "ghc-8.6.5-iohk_16": { - "flake": false, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_9", + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "ghc-8.6.5-iohk_17": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_18": { - "flake": false, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_14", + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "ghc-8.6.5-iohk_19": { + "nix-tools": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-tools", "type": "github" } }, - "ghc-8.6.5-iohk_2": { + "nix-tools_2": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-tools", "type": "github" } }, - "ghc-8.6.5-iohk_20": { + "nix-tools_3": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-tools", "type": "github" } }, - "ghc-8.6.5-iohk_21": { + "nix-tools_4": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-tools", "type": "github" } }, - "ghc-8.6.5-iohk_22": { - "flake": false, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_17" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_23": { - "flake": false, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_19" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_24": { - "flake": false, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_23" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_25": { - "flake": false, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_27" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_3": { - "flake": false, + "nix2container_5": { + "inputs": { + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_32" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_4": { - "flake": false, + "nix2container_6": { + "inputs": { + "flake-utils": "flake-utils_20", + "nixpkgs": "nixpkgs_36" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_5": { - "flake": false, + "nix2container_7": { + "inputs": { + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_94" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_6": { - "flake": false, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_57", + "nixpkgs-regression": "nixpkgs-regression_9" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", "type": "github" } }, - "ghc-8.6.5-iohk_7": { - "flake": false, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_59", + "nixpkgs-regression": "nixpkgs-regression_10" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "ghc-8.6.5-iohk_8": { - "flake": false, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_66", + "nixpkgs-regression": "nixpkgs-regression_11" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" } }, - "ghc-8.6.5-iohk_9": { - "flake": false, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_67", + "nixpkgs-regression": "nixpkgs-regression_12" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" } }, - "ghc910X": { - "flake": false, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_72", + "nixpkgs-regression": "nixpkgs-regression_13" + }, "locked": { - "lastModified": 1714520650, - "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", - "ref": "ghc-9.10", - "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", - "revCount": 62663, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" } }, - "ghc910X_2": { - "flake": false, + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_74" + }, "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", - "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "repo": "nix", + "type": "github" } }, - "ghc910X_3": { - "flake": false, + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_76", + "nixpkgs-regression": "nixpkgs-regression_14" + }, "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", - "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "nixos", + "repo": "nix", + "type": "github" } }, - "ghc910X_4": { - "flake": false, + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_88", + "nixpkgs-regression": "nixpkgs-regression_15" + }, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" } }, - "ghc910X_5": { - "flake": false, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_90", + "nixpkgs-regression": "nixpkgs-regression_16" + }, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" } }, - "ghc910X_6": { - "flake": false, + "nix_19": { + "inputs": { + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_97", + "nixpkgs-regression": "nixpkgs-regression_17" + }, "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", - "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" } }, - "ghc910X_7": { - "flake": false, + "nix_2": { + "inputs": { + "flake-compat": "flake-compat_3", + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_10", + "nixpkgs-regression": "nixpkgs-regression_2" + }, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1693573010, + "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", + "owner": "nixos", + "repo": "nix", + "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "nixos", + "ref": "2.17-maintenance", + "repo": "nix", + "type": "github" } }, - "ghc910X_8": { - "flake": false, + "nix_20": { + "inputs": { + "lowdown-src": "lowdown-src_20", + "nixpkgs": "nixpkgs_98", + "nixpkgs-regression": "nixpkgs-regression_18" + }, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911": { - "flake": false, + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_14", + "nixpkgs-regression": "nixpkgs-regression_3" + }, "locked": { - "lastModified": 1714817013, - "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", - "ref": "refs/heads/master", - "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", - "revCount": 62816, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911_2": { - "flake": false, + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_16", + "nixpkgs-regression": "nixpkgs-regression_4" + }, "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", - "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911_3": { - "flake": false, + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_26", + "nixpkgs-regression": "nixpkgs-regression_5" + }, "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", - "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911_4": { - "flake": false, + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_35", + "nixpkgs-regression": "nixpkgs-regression_6" + }, "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911_5": { - "flake": false, + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_43", + "nixpkgs-regression": "nixpkgs-regression_7" + }, "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" } }, - "ghc911_6": { - "flake": false, + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_45" + }, "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", - "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "repo": "nix", + "type": "github" } }, - "ghc911_7": { - "flake": false, + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_47", + "nixpkgs-regression": "nixpkgs-regression_8" + }, "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "nixos", + "repo": "nix", + "type": "github" } }, - "ghc911_8": { - "flake": false, + "nixago": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "nix-community", + "repo": "nixago", + "type": "github" } }, - "ghc98X": { - "flake": false, + "nixago-exts": { "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_10": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_2": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_3": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_4": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_5": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_6": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_7": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_8": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_9": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99": { - "flake": false, - "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_10": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_2": { - "flake": false, - "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_3": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_4": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_5": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_6": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_7": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_8": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_9": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1703887061, - "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_10": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_11": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_12": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_13": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_14": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_15": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_16": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_2": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_3": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_4": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_5": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_6": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_7": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_8": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_9": { - "inputs": { - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_18", - "utils": "utils_2" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_22", - "utils": "utils_4" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_3": { - "inputs": { - "nixpkgs": "nixpkgs_31", - "utils": "utils_6" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1692145451, - "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage-nix": { - "flake": false, - "locked": { - "lastModified": 1721521743, - "narHash": "sha256-QaQGm8XnB86fAzkivPsJUcJ4HbJyBS0MhHtNHpGNwu4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "0e72b229a40ce8cdf0d0f41caf9f23d544ca6578", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix": { - "flake": false, - "locked": { - "lastModified": 1702945378, - "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_2": { - "flake": false, - "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_3": { - "flake": false, - "locked": { - "lastModified": 1701303758, - "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_4": { - "flake": false, - "locked": { - "lastModified": 1719794527, - "narHash": "sha256-qHo/KumtwAzPkfLWODu/6EFY/LeK+C7iPJyAUdT8tGA=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "da2a3bc9bd1b3dd41bb147279529c471c615fd3e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_10": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_11": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_12": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_13": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_14": { - "flake": false, - "locked": { - "lastModified": 1714610224, - "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_15": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_16": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_17": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_18": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_19": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_2": { - "flake": false, - "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_20": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_3": { - "flake": false, - "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_4": { - "flake": false, - "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_5": { - "flake": false, - "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_6": { - "flake": false, - "locked": { - "lastModified": 1714955666, - "narHash": "sha256-2FHDnM7dK2FH7xGQmcoHbMMP1PGHgKkBmfXC5/LLNVc=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "69a0fce63963cf4299cb24c2a0d2ee0428d227dd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_7": { - "flake": false, - "locked": { - "lastModified": 1714610224, - "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_8": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_9": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "haskell-flake": { - "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "empty-flake" - ] - }, - "locked": { - "lastModified": 1692147008, - "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_10": { - "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_16", - "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_34", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "ghc910X": "ghc910X_5", - "ghc911": "ghc911_5", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_12", - "hls-2.0": "hls-2.0_11", - "hls-2.2": "hls-2.2_10", - "hls-2.3": "hls-2.3_10", - "hls-2.4": "hls-2.4_10", - "hls-2.5": "hls-2.5_6", - "hls-2.6": "hls-2.6_6", - "hls-2.7": "hls-2.7_6", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_18", - "iserv-proxy": "iserv-proxy_12", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_13", - "nixpkgs-2211": "nixpkgs-2211_12", - "nixpkgs-2305": "nixpkgs-2305_11", - "nixpkgs-2311": "nixpkgs-2311_8", - "nixpkgs-unstable": "nixpkgs-unstable_19", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_15" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_11": { - "inputs": { - "HTTP": "HTTP_17", - "cabal-32": "cabal-32_17", - "cabal-34": "cabal-34_17", - "cabal-36": "cabal-36_17", - "cardano-shell": "cardano-shell_17", - "flake-compat": "flake-compat_35", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", - "ghc98X": "ghc98X_5", - "ghc99": "ghc99_5", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_13", - "hls-2.0": "hls-2.0_12", - "hls-2.2": "hls-2.2_11", - "hls-2.3": "hls-2.3_11", - "hls-2.4": "hls-2.4_11", - "hpc-coveralls": "hpc-coveralls_17", - "hydra": "hydra_19", - "iserv-proxy": "iserv-proxy_13", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_17", - "nixpkgs-2105": "nixpkgs-2105_17", - "nixpkgs-2111": "nixpkgs-2111_17", - "nixpkgs-2205": "nixpkgs-2205_14", - "nixpkgs-2211": "nixpkgs-2211_13", - "nixpkgs-2305": "nixpkgs-2305_12", - "nixpkgs-2311": "nixpkgs-2311_9", - "nixpkgs-unstable": "nixpkgs-unstable_20", - "old-ghc-nix": "old-ghc-nix_17", - "stackage": "stackage_16" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_12": { - "inputs": { - "HTTP": "HTTP_18", - "cabal-32": "cabal-32_18", - "cabal-34": "cabal-34_18", - "cabal-36": "cabal-36_18", - "cardano-shell": "cardano-shell_18", - "flake-compat": "flake-compat_37", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", - "ghc98X": "ghc98X_6", - "ghc99": "ghc99_6", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_14", - "hls-2.0": "hls-2.0_13", - "hls-2.2": "hls-2.2_12", - "hls-2.3": "hls-2.3_12", - "hls-2.4": "hls-2.4_12", - "hpc-coveralls": "hpc-coveralls_18", - "hydra": "hydra_20", - "iserv-proxy": "iserv-proxy_14", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_18", - "nixpkgs-2105": "nixpkgs-2105_18", - "nixpkgs-2111": "nixpkgs-2111_18", - "nixpkgs-2205": "nixpkgs-2205_15", - "nixpkgs-2211": "nixpkgs-2211_14", - "nixpkgs-2305": "nixpkgs-2305_13", - "nixpkgs-2311": "nixpkgs-2311_10", - "nixpkgs-unstable": "nixpkgs-unstable_21", - "old-ghc-nix": "old-ghc-nix_18", - "stackage": "stackage_17" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_13": { - "inputs": { - "HTTP": "HTTP_19", - "cabal-32": "cabal-32_19", - "cabal-34": "cabal-34_19", - "cabal-36": "cabal-36_19", - "cardano-shell": "cardano-shell_19", - "flake-compat": "flake-compat_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", - "ghc910X": "ghc910X_6", - "ghc911": "ghc911_6", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_15", - "hls-2.0": "hls-2.0_14", - "hls-2.2": "hls-2.2_13", - "hls-2.3": "hls-2.3_13", - "hls-2.4": "hls-2.4_13", - "hls-2.5": "hls-2.5_7", - "hls-2.6": "hls-2.6_7", - "hls-2.7": "hls-2.7_7", - "hpc-coveralls": "hpc-coveralls_19", - "hydra": "hydra_21", - "iserv-proxy": "iserv-proxy_15", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_19", - "nixpkgs-2105": "nixpkgs-2105_19", - "nixpkgs-2111": "nixpkgs-2111_19", - "nixpkgs-2205": "nixpkgs-2205_16", - "nixpkgs-2211": "nixpkgs-2211_15", - "nixpkgs-2305": "nixpkgs-2305_14", - "nixpkgs-2311": "nixpkgs-2311_11", - "nixpkgs-unstable": "nixpkgs-unstable_22", - "old-ghc-nix": "old-ghc-nix_19", - "stackage": "stackage_18" - }, - "locked": { - "lastModified": 1714611016, - "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_14": { - "inputs": { - "HTTP": "HTTP_20", - "cabal-32": "cabal-32_20", - "cabal-34": "cabal-34_20", - "cabal-36": "cabal-36_20", - "cardano-shell": "cardano-shell_20", - "flake-compat": "flake-compat_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", - "ghc910X": "ghc910X_7", - "ghc911": "ghc911_7", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_16", - "hls-2.0": "hls-2.0_15", - "hls-2.2": "hls-2.2_14", - "hls-2.3": "hls-2.3_14", - "hls-2.4": "hls-2.4_14", - "hls-2.5": "hls-2.5_8", - "hls-2.6": "hls-2.6_8", - "hls-2.7": "hls-2.7_8", - "hpc-coveralls": "hpc-coveralls_20", - "hydra": "hydra_22", - "iserv-proxy": "iserv-proxy_16", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_20", - "nixpkgs-2105": "nixpkgs-2105_20", - "nixpkgs-2111": "nixpkgs-2111_20", - "nixpkgs-2205": "nixpkgs-2205_17", - "nixpkgs-2211": "nixpkgs-2211_16", - "nixpkgs-2305": "nixpkgs-2305_15", - "nixpkgs-2311": "nixpkgs-2311_12", - "nixpkgs-unstable": "nixpkgs-unstable_23", - "old-ghc-nix": "old-ghc-nix_20", - "stackage": "stackage_19" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_15": { - "inputs": { - "HTTP": "HTTP_21", - "cabal-32": "cabal-32_21", - "cabal-34": "cabal-34_21", - "cabal-36": "cabal-36_21", - "cardano-shell": "cardano-shell_21", - "flake-compat": "flake-compat_43", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", - "ghc98X": "ghc98X_7", - "ghc99": "ghc99_7", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_17", - "hls-2.0": "hls-2.0_16", - "hls-2.2": "hls-2.2_15", - "hls-2.3": "hls-2.3_15", - "hls-2.4": "hls-2.4_15", - "hpc-coveralls": "hpc-coveralls_21", - "hydra": "hydra_23", - "iserv-proxy": "iserv-proxy_17", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_21", - "nixpkgs-2105": "nixpkgs-2105_21", - "nixpkgs-2111": "nixpkgs-2111_21", - "nixpkgs-2205": "nixpkgs-2205_18", - "nixpkgs-2211": "nixpkgs-2211_17", - "nixpkgs-2305": "nixpkgs-2305_16", - "nixpkgs-2311": "nixpkgs-2311_13", - "nixpkgs-unstable": "nixpkgs-unstable_24", - "old-ghc-nix": "old-ghc-nix_21", - "stackage": "stackage_20" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_16": { - "inputs": { - "HTTP": "HTTP_22", - "cabal-32": "cabal-32_22", - "cabal-34": "cabal-34_22", - "cabal-36": "cabal-36_22", - "cardano-shell": "cardano-shell_22", - "flake-compat": "flake-compat_45", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", - "ghc98X": "ghc98X_8", - "ghc99": "ghc99_8", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_18", - "hls-2.0": "hls-2.0_17", - "hls-2.2": "hls-2.2_16", - "hls-2.3": "hls-2.3_16", - "hls-2.4": "hls-2.4_16", - "hpc-coveralls": "hpc-coveralls_22", - "hydra": "hydra_24", - "iserv-proxy": "iserv-proxy_18", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_22", - "nixpkgs-2105": "nixpkgs-2105_22", - "nixpkgs-2111": "nixpkgs-2111_22", - "nixpkgs-2205": "nixpkgs-2205_19", - "nixpkgs-2211": "nixpkgs-2211_18", - "nixpkgs-2305": "nixpkgs-2305_17", - "nixpkgs-2311": "nixpkgs-2311_14", - "nixpkgs-unstable": "nixpkgs-unstable_25", - "old-ghc-nix": "old-ghc-nix_22", - "stackage": "stackage_21" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_17": { - "inputs": { - "HTTP": "HTTP_23", - "cabal-32": "cabal-32_23", - "cabal-34": "cabal-34_23", - "cabal-36": "cabal-36_23", - "cardano-shell": "cardano-shell_23", - "flake-compat": "flake-compat_48", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", - "ghc910X": "ghc910X_8", - "ghc911": "ghc911_8", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_19", - "hls-2.0": "hls-2.0_18", - "hls-2.2": "hls-2.2_17", - "hls-2.3": "hls-2.3_17", - "hls-2.4": "hls-2.4_17", - "hls-2.5": "hls-2.5_9", - "hls-2.6": "hls-2.6_9", - "hls-2.7": "hls-2.7_9", - "hpc-coveralls": "hpc-coveralls_23", - "hydra": "hydra_25", - "iserv-proxy": "iserv-proxy_19", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_23", - "nixpkgs-2105": "nixpkgs-2105_23", - "nixpkgs-2111": "nixpkgs-2111_23", - "nixpkgs-2205": "nixpkgs-2205_20", - "nixpkgs-2211": "nixpkgs-2211_19", - "nixpkgs-2305": "nixpkgs-2305_18", - "nixpkgs-2311": "nixpkgs-2311_15", - "nixpkgs-unstable": "nixpkgs-unstable_26", - "old-ghc-nix": "old-ghc-nix_23", - "stackage": "stackage_22" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_18": { - "inputs": { - "HTTP": "HTTP_24", - "cabal-32": "cabal-32_24", - "cabal-34": "cabal-34_24", - "cabal-36": "cabal-36_24", - "cardano-shell": "cardano-shell_24", - "flake-compat": "flake-compat_49", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", - "ghc98X": "ghc98X_9", - "ghc99": "ghc99_9", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_20", - "hls-2.0": "hls-2.0_19", - "hls-2.2": "hls-2.2_18", - "hls-2.3": "hls-2.3_18", - "hls-2.4": "hls-2.4_18", - "hpc-coveralls": "hpc-coveralls_24", - "hydra": "hydra_26", - "iserv-proxy": "iserv-proxy_20", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_24", - "nixpkgs-2105": "nixpkgs-2105_24", - "nixpkgs-2111": "nixpkgs-2111_24", - "nixpkgs-2205": "nixpkgs-2205_21", - "nixpkgs-2211": "nixpkgs-2211_20", - "nixpkgs-2305": "nixpkgs-2305_19", - "nixpkgs-2311": "nixpkgs-2311_16", - "nixpkgs-unstable": "nixpkgs-unstable_27", - "old-ghc-nix": "old-ghc-nix_24", - "stackage": "stackage_23" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_19": { - "inputs": { - "HTTP": "HTTP_25", - "cabal-32": "cabal-32_25", - "cabal-34": "cabal-34_25", - "cabal-36": "cabal-36_25", - "cardano-shell": "cardano-shell_25", - "flake-compat": "flake-compat_51", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", - "ghc98X": "ghc98X_10", - "ghc99": "ghc99_10", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_21", - "hls-2.0": "hls-2.0_20", - "hls-2.2": "hls-2.2_19", - "hls-2.3": "hls-2.3_19", - "hls-2.4": "hls-2.4_19", - "hpc-coveralls": "hpc-coveralls_25", - "hydra": "hydra_27", - "iserv-proxy": "iserv-proxy_21", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_25", - "nixpkgs-2105": "nixpkgs-2105_25", - "nixpkgs-2111": "nixpkgs-2111_25", - "nixpkgs-2205": "nixpkgs-2205_22", - "nixpkgs-2211": "nixpkgs-2211_21", - "nixpkgs-2305": "nixpkgs-2305_20", - "nixpkgs-2311": "nixpkgs-2311_17", - "nixpkgs-unstable": "nixpkgs-unstable_28", - "old-ghc-nix": "old-ghc-nix_25", - "stackage": "stackage_24" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_31", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_6", - "nix-tools": "nix-tools", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-unstable": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_5" - }, - "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": [ - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_7" - }, - "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-compat": "flake-compat_25", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": [ - "hackage-nix" - ], - "hls-1.10": "hls-1.10_6", - "hls-2.0": "hls-2.0_5", - "hls-2.2": "hls-2.2_4", - "hls-2.3": "hls-2.3_4", - "hls-2.4": "hls-2.4_4", - "hls-2.5": "hls-2.5_2", - "hls-2.6": "hls-2.6_2", - "hls-2.7": "hls-2.7_2", - "hls-2.8": "hls-2.8_2", - "hls-2.9": "hls-2.9", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_12", - "iserv-proxy": "iserv-proxy_6", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-2205": "nixpkgs-2205_7", - "nixpkgs-2211": "nixpkgs-2211_6", - "nixpkgs-2305": "nixpkgs-2305_5", - "nixpkgs-2311": "nixpkgs-2311_2", - "nixpkgs-2405": "nixpkgs-2405", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_9" - }, - "locked": { - "lastModified": 1721523035, - "narHash": "sha256-011KiatpklteNLAg7PkJsOnFpbmvhG5Ukg8vPnSqv2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6bbe0755f28ea7798bf495d732fa92c3f20d6902", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_5": { - "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "ghc910X": "ghc910X_2", - "ghc911": "ghc911_2", - "hackage": [ - "kupo-nixos", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_7", - "hls-2.0": "hls-2.0_6", - "hls-2.2": "hls-2.2_5", - "hls-2.3": "hls-2.3_5", - "hls-2.4": "hls-2.4_5", - "hls-2.5": "hls-2.5_3", - "hls-2.6": "hls-2.6_3", - "hls-2.7": "hls-2.7_3", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_13", - "iserv-proxy": "iserv-proxy_7", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_8", - "nixpkgs-2211": "nixpkgs-2211_7", - "nixpkgs-2305": "nixpkgs-2305_6", - "nixpkgs-2311": "nixpkgs-2311_3", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_10" - }, - "locked": { - "lastModified": 1714956613, - "narHash": "sha256-h2n+7SsDHFE9SfStJjHxludjmhV5iupstehh6EGLUGU=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6a9b5d11bdd09bcf739c5e837fa4a776b4c48646", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_6": { - "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_12", - "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "ghc910X": "ghc910X_3", - "ghc911": "ghc911_3", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_8", - "hls-2.0": "hls-2.0_7", - "hls-2.2": "hls-2.2_6", - "hls-2.3": "hls-2.3_6", - "hls-2.4": "hls-2.4_6", - "hls-2.5": "hls-2.5_4", - "hls-2.6": "hls-2.6_4", - "hls-2.7": "hls-2.7_4", - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_14", - "iserv-proxy": "iserv-proxy_8", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-2205": "nixpkgs-2205_9", - "nixpkgs-2211": "nixpkgs-2211_8", - "nixpkgs-2305": "nixpkgs-2305_7", - "nixpkgs-2311": "nixpkgs-2311_4", - "nixpkgs-unstable": "nixpkgs-unstable_15", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_11" - }, - "locked": { - "lastModified": 1714611016, - "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_7": { - "inputs": { - "HTTP": "HTTP_13", - "cabal-32": "cabal-32_13", - "cabal-34": "cabal-34_13", - "cabal-36": "cabal-36_13", - "cardano-shell": "cardano-shell_13", - "flake-compat": "flake-compat_28", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "ghc910X": "ghc910X_4", - "ghc911": "ghc911_4", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_9", - "hls-2.0": "hls-2.0_8", - "hls-2.2": "hls-2.2_7", - "hls-2.3": "hls-2.3_7", - "hls-2.4": "hls-2.4_7", - "hls-2.5": "hls-2.5_5", - "hls-2.6": "hls-2.6_5", - "hls-2.7": "hls-2.7_5", - "hpc-coveralls": "hpc-coveralls_13", - "hydra": "hydra_15", - "iserv-proxy": "iserv-proxy_9", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_13", - "nixpkgs-2105": "nixpkgs-2105_13", - "nixpkgs-2111": "nixpkgs-2111_13", - "nixpkgs-2205": "nixpkgs-2205_10", - "nixpkgs-2211": "nixpkgs-2211_9", - "nixpkgs-2305": "nixpkgs-2305_8", - "nixpkgs-2311": "nixpkgs-2311_5", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_13", - "stackage": "stackage_12" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_8": { - "inputs": { - "HTTP": "HTTP_14", - "cabal-32": "cabal-32_14", - "cabal-34": "cabal-34_14", - "cabal-36": "cabal-36_14", - "cardano-shell": "cardano-shell_14", - "flake-compat": "flake-compat_29", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", - "ghc98X": "ghc98X_3", - "ghc99": "ghc99_3", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_10", - "hls-2.0": "hls-2.0_9", - "hls-2.2": "hls-2.2_8", - "hls-2.3": "hls-2.3_8", - "hls-2.4": "hls-2.4_8", - "hpc-coveralls": "hpc-coveralls_14", - "hydra": "hydra_16", - "iserv-proxy": "iserv-proxy_10", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_14", - "nixpkgs-2105": "nixpkgs-2105_14", - "nixpkgs-2111": "nixpkgs-2111_14", - "nixpkgs-2205": "nixpkgs-2205_11", - "nixpkgs-2211": "nixpkgs-2211_10", - "nixpkgs-2305": "nixpkgs-2305_9", - "nixpkgs-2311": "nixpkgs-2311_6", - "nixpkgs-unstable": "nixpkgs-unstable_17", - "old-ghc-nix": "old-ghc-nix_14", - "stackage": "stackage_13" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_9": { - "inputs": { - "HTTP": "HTTP_15", - "cabal-32": "cabal-32_15", - "cabal-34": "cabal-34_15", - "cabal-36": "cabal-36_15", - "cardano-shell": "cardano-shell_15", - "flake-compat": "flake-compat_31", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", - "ghc98X": "ghc98X_4", - "ghc99": "ghc99_4", - "hackage": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_11", - "hls-2.0": "hls-2.0_10", - "hls-2.2": "hls-2.2_9", - "hls-2.3": "hls-2.3_9", - "hls-2.4": "hls-2.4_9", - "hpc-coveralls": "hpc-coveralls_15", - "hydra": "hydra_17", - "iserv-proxy": "iserv-proxy_11", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_15", - "nixpkgs-2105": "nixpkgs-2105_15", - "nixpkgs-2111": "nixpkgs-2111_15", - "nixpkgs-2205": "nixpkgs-2205_12", - "nixpkgs-2211": "nixpkgs-2211_11", - "nixpkgs-2305": "nixpkgs-2305_10", - "nixpkgs-2311": "nixpkgs-2311_7", - "nixpkgs-unstable": "nixpkgs-unstable_18", - "old-ghc-nix": "old-ghc-nix_15", - "stackage": "stackage_14" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ - "cardano-nix", - "cardano-db-sync", - "hackageNix" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0_2", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305_2", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage" - }, - "locked": { - "lastModified": 1701053834, - "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": [ - "cardano-nix", - "cardano-node-8.1.1", - "hackageNix" - ], - "hls-1.10": "hls-1.10_3", - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_3", - "iserv-proxy": "iserv-proxy_3", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211_3", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_2" - }, - "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-compat": "flake-compat_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "ghc98X": "ghc98X_2", - "ghc99": "ghc99_2", - "hackage": [ - "cardano-nix", - "cardano-node-8.7.3", - "hackageNix" - ], - "hls-1.10": "hls-1.10_4", - "hls-2.0": "hls-2.0_3", - "hls-2.2": "hls-2.2_2", - "hls-2.3": "hls-2.3_2", - "hls-2.4": "hls-2.4_2", - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_4", - "iserv-proxy": "iserv-proxy_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-2211": "nixpkgs-2211_4", - "nixpkgs-2305": "nixpkgs-2305_3", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_3" - }, - "locked": { - "lastModified": 1700441391, - "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_4": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-compat": "flake-compat_16", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "ghc910X": "ghc910X", - "ghc911": "ghc911", - "hackage": [ - "cardano-node", - "hackageNix" - ], - "hls-1.10": "hls-1.10_5", - "hls-2.0": "hls-2.0_4", - "hls-2.2": "hls-2.2_3", - "hls-2.3": "hls-2.3_3", - "hls-2.4": "hls-2.4_3", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", - "hls-2.7": "hls-2.7", - "hls-2.8": "hls-2.8", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_5", - "iserv-proxy": "iserv-proxy_5", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-2205": "nixpkgs-2205_5", - "nixpkgs-2211": "nixpkgs-2211_5", - "nixpkgs-2305": "nixpkgs-2305_4", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_4" - }, - "locked": { - "lastModified": 1718797200, - "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "cb139fa956158397aa398186bb32dd26f7318784", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_5": { - "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_6" - }, - "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_47", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_9", - "hydra": "hydra_11", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_8" - }, - "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haumea": { - "inputs": { - "nixpkgs": "nixpkgs_28" - }, - "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "haumea_2": { - "inputs": { - "nixpkgs": [ - "cardano-node", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": [ - "cardano-nix", - "flake-parts" - ], - "nixpkgs": [ - "cardano-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1710396488, - "narHash": "sha256-yniBB5i1un44uzR4+luTWvZ6uGvsHSYIBiDZ8Xox4nQ=", - "owner": "mlabs-haskell", - "repo": "hercules-ci-effects", - "rev": "f5ed263ab0585dfb7b067301419fb80d64e8c021", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "ref": "push-cache-effect", - "repo": "hercules-ci-effects", - "type": "github" - } - }, - "hercules-ci-effects_2": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_99" - }, - "locked": { - "lastModified": 1719226092, - "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "type": "github" - } - }, - "hls-1.10": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_10": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_11": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_12": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_13": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_14": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_15": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_16": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_17": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_18": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_19": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_2": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_20": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_21": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_3": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_4": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_5": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_6": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_7": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_8": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_9": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_10": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_11": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_12": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_13": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_14": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_15": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_16": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_17": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_18": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_19": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_2": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_20": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_3": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_4": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_5": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_6": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_7": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_8": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_9": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_10": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_11": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_12": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_13": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_14": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_15": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_16": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_17": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_18": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_19": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_3": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_4": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_5": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_6": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_7": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_8": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_9": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_10": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_11": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_12": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_13": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_14": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_15": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_16": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_17": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_18": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_19": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_2": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_3": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_4": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_5": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_6": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_7": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_8": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_9": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4": { - "flake": false, - "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_10": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_11": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_12": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_13": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_14": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_15": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_16": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_17": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_18": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_19": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_2": { - "flake": false, - "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_3": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_4": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_5": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_6": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_7": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_8": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_9": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_2": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_3": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_4": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_6": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_7": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_8": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_9": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_2": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_3": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_4": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_5": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_7": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_8": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_9": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_2": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_3": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_4": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_5": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_6": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_7": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_8": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_9": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.8": { - "flake": false, - "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.8_2": { - "flake": false, - "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.9": { - "flake": false, - "locked": { - "lastModified": 1718469202, - "narHash": "sha256-THXSz+iwB1yQQsr/PY151+2GvtoJnTIB2pIQ4OzfjD4=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "40891bccb235ebacce020b598b083eab9dda80f1", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.9.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hpc-coveralls": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_10": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_11": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_12": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_13": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_14": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_15": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_16": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_17": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_18": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_19": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_2": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_20": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_21": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_22": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_23": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_24": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_25": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_3": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_4": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_5": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_6": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_7": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_8": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_9": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_10": { - "inputs": { - "nix": "nix_18", - "nixpkgs": [ - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_11": { - "inputs": { - "nix": "nix_19", - "nixpkgs": [ - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_12": { - "inputs": { - "nix": "nix_20", - "nixpkgs": [ - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_13": { - "inputs": { - "nix": "nix_21", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_14": { - "inputs": { - "nix": "nix_22", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_15": { - "inputs": { - "nix": "nix_23", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_16": { - "inputs": { - "nix": "nix_24", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_17": { - "inputs": { - "nix": "nix_25", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_18": { - "inputs": { - "nix": "nix_26", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_19": { - "inputs": { - "nix": "nix_27", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_2": { - "inputs": { - "nix": "nix_3", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_20": { - "inputs": { - "nix": "nix_28", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_21": { - "inputs": { - "nix": "nix_29", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_22": { - "inputs": { - "nix": "nix_30", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_23": { - "inputs": { - "nix": "nix_31", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_24": { - "inputs": { - "nix": "nix_32", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_25": { - "inputs": { - "nix": "nix_33", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_26": { - "inputs": { - "nix": "nix_34", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_27": { - "inputs": { - "nix": "nix_35", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_3": { - "inputs": { - "nix": "nix_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_4": { - "inputs": { - "nix": "nix_5", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_5": { - "inputs": { - "nix": "nix_6", - "nixpkgs": [ - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_6": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_7": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_8": { - "inputs": { - "nix": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_9": { - "inputs": { - "nix": "nix_17", - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "incl": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_2": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_3": { - "inputs": { - "nixlib": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_4": { - "inputs": { - "nixlib": [ - "cardano-node", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "inclusive": { - "inputs": { - "stdlib": "stdlib" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_10": { - "inputs": { - "stdlib": "stdlib_10" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_11": { - "inputs": { - "stdlib": "stdlib_11" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_12": { - "inputs": { - "stdlib": "stdlib_12" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_2": { - "inputs": { - "stdlib": "stdlib_2" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_3": { - "inputs": { - "stdlib": "stdlib_3" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_4": { - "inputs": { - "stdlib": "stdlib_4" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_5": { - "inputs": { - "stdlib": "stdlib_5" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_6": { - "inputs": { - "stdlib": "stdlib_6" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_7": { - "inputs": { - "stdlib": "stdlib_7" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_8": { - "inputs": { - "stdlib": "stdlib_8" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_9": { - "inputs": { - "stdlib": "stdlib_9" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inputs-check": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_7" - }, - "locked": { - "lastModified": 1692633913, - "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", - "owner": "input-output-hk", - "repo": "inputs-check", - "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "inputs-check", - "type": "github" - } - }, - "iogo": { - "inputs": { - "devshell": "devshell_8", - "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_51", - "utils": "utils_13" - }, - "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", - "type": "github" - } - }, - "iogo_2": { - "inputs": { - "devshell": "devshell_18", - "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_80", - "utils": "utils_27" - }, - "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", - "type": "github" - } - }, - "iogx": { - "inputs": { - "CHaP": [ - "kupo-nixos", - "CHaP" - ], - "easy-purescript-nix": "easy-purescript-nix_2", - "flake-utils": "flake-utils_49", - "hackage": "hackage_6", - "haskell-nix": "haskell-nix_5", - "iogx-template-haskell": "iogx-template-haskell", - "iogx-template-vanilla": "iogx-template-vanilla_4", - "iohk-nix": "iohk-nix_18", - "nix2container": "nix2container_22", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_30", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_16", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_15" - }, - "locked": { - "lastModified": 1714993151, - "narHash": "sha256-qnhgqo24celzlf+KjZ+oqypsCezgVZRueHbfiq73bDE=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "819ae1510a5ebdeb999c723033a2a641aa9bfd23", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell": { - "inputs": { - "iogx": "iogx_2" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1714715538, - "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_2": { - "inputs": { - "iogx": "iogx_3" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_3": { - "inputs": { - "iogx": "iogx_4" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_4": { - "inputs": { - "iogx": "iogx_7" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_5": { - "inputs": { - "iogx": "iogx_10" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_6": { - "inputs": { - "iogx": "iogx_11" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_7": { - "inputs": { - "iogx": "iogx_14" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla": { - "inputs": { - "iogx": "iogx_5" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_2": { - "inputs": { - "iogx": "iogx_6" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_3": { - "inputs": { - "iogx": "iogx_8" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_4": { - "inputs": { - "iogx": "iogx_9" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1714715538, - "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_5": { - "inputs": { - "iogx": "iogx_12" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_6": { - "inputs": { - "iogx": "iogx_13" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_7": { - "inputs": { - "iogx": "iogx_15" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_10": { - "inputs": { - "CHaP": "CHaP_14", - "easy-purescript-nix": "easy-purescript-nix_11", - "flake-utils": "flake-utils_81", - "hackage": "hackage_15", - "haskell-nix": "haskell-nix_14", - "iogx-template-haskell": "iogx-template-haskell_6", - "iogx-template-vanilla": "iogx-template-vanilla_5", - "iohk-nix": "iohk-nix_13", - "nix2container": "nix2container_17", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_20", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_11", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_10" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_11": { - "inputs": { - "CHaP": "CHaP_15", - "easy-purescript-nix": "easy-purescript-nix_12", - "flake-utils": "flake-utils_83", - "hackage": "hackage_16", - "haskell-nix": "haskell-nix_15", - "iohk-nix": "iohk-nix_11", - "nix2container": "nix2container_15", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_16", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_9", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_8" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_12": { - "inputs": { - "CHaP": "CHaP_16", - "easy-purescript-nix": "easy-purescript-nix_13", - "flake-utils": "flake-utils_87", - "hackage": "hackage_17", - "haskell-nix": "haskell-nix_16", - "iohk-nix": "iohk-nix_12", - "nix2container": "nix2container_16", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_18", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_10", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_9" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_13": { - "inputs": { - "CHaP": "CHaP_17", - "easy-purescript-nix": "easy-purescript-nix_14", - "flake-utils": "flake-utils_93", - "hackage": "hackage_18", - "haskell-nix": "haskell-nix_17", - "iogx-template-haskell": "iogx-template-haskell_7", - "iogx-template-vanilla": "iogx-template-vanilla_7", - "iohk-nix": "iohk-nix_16", - "nix2container": "nix2container_20", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_26", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_14", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_13" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_14": { - "inputs": { - "CHaP": "CHaP_18", - "easy-purescript-nix": "easy-purescript-nix_15", - "flake-utils": "flake-utils_95", - "hackage": "hackage_19", - "haskell-nix": "haskell-nix_18", - "iohk-nix": "iohk-nix_14", - "nix2container": "nix2container_18", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_22", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_12", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_11" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_15": { - "inputs": { - "CHaP": "CHaP_19", - "easy-purescript-nix": "easy-purescript-nix_16", - "flake-utils": "flake-utils_99", - "hackage": "hackage_20", - "haskell-nix": "haskell-nix_19", - "iohk-nix": "iohk-nix_15", - "nix2container": "nix2container_19", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_24", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_13", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_12" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_2": { - "inputs": { - "CHaP": "CHaP_6", - "easy-purescript-nix": "easy-purescript-nix_3", - "flake-utils": "flake-utils_51", - "hackage": "hackage_7", - "haskell-nix": "haskell-nix_6", - "iogx-template-haskell": "iogx-template-haskell_2", - "iogx-template-vanilla": "iogx-template-vanilla_2", - "iohk-nix": "iohk-nix_10", - "nix2container": "nix2container_14", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_14", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_8", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_7" - }, - "locked": { - "lastModified": 1714680367, - "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_3": { - "inputs": { - "CHaP": "CHaP_7", - "easy-purescript-nix": "easy-purescript-nix_4", - "flake-utils": "flake-utils_53", - "hackage": "hackage_8", - "haskell-nix": "haskell-nix_7", - "iogx-template-haskell": "iogx-template-haskell_3", - "iogx-template-vanilla": "iogx-template-vanilla", - "iohk-nix": "iohk-nix_6", - "nix2container": "nix2container_10", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_6", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_4", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_3" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_4": { - "inputs": { - "CHaP": "CHaP_8", - "easy-purescript-nix": "easy-purescript-nix_5", - "flake-utils": "flake-utils_55", - "hackage": "hackage_9", - "haskell-nix": "haskell-nix_8", - "iohk-nix": "iohk-nix_4", - "nix2container": "nix2container_8", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_2", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_2", - "sphinxcontrib-haddock": "sphinxcontrib-haddock" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_5": { - "inputs": { - "CHaP": "CHaP_9", - "easy-purescript-nix": "easy-purescript-nix_6", - "flake-utils": "flake-utils_59", - "hackage": "hackage_10", - "haskell-nix": "haskell-nix_9", - "iohk-nix": "iohk-nix_5", - "nix2container": "nix2container_9", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_4", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_3", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_2" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_6": { - "inputs": { - "CHaP": "CHaP_10", - "easy-purescript-nix": "easy-purescript-nix_7", - "flake-utils": "flake-utils_65", - "hackage": "hackage_11", - "haskell-nix": "haskell-nix_10", - "iogx-template-haskell": "iogx-template-haskell_4", - "iogx-template-vanilla": "iogx-template-vanilla_3", - "iohk-nix": "iohk-nix_9", - "nix2container": "nix2container_13", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_12", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_7", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_6" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_7": { - "inputs": { - "CHaP": "CHaP_11", - "easy-purescript-nix": "easy-purescript-nix_8", - "flake-utils": "flake-utils_67", - "hackage": "hackage_12", - "haskell-nix": "haskell-nix_11", - "iohk-nix": "iohk-nix_7", - "nix2container": "nix2container_11", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_8", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_5", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_4" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_8": { - "inputs": { - "CHaP": "CHaP_12", - "easy-purescript-nix": "easy-purescript-nix_9", - "flake-utils": "flake-utils_71", - "hackage": "hackage_13", - "haskell-nix": "haskell-nix_12", - "iohk-nix": "iohk-nix_8", - "nix2container": "nix2container_12", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_10", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_6", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_5" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_9": { - "inputs": { - "CHaP": "CHaP_13", - "easy-purescript-nix": "easy-purescript-nix_10", - "flake-utils": "flake-utils_79", - "hackage": "hackage_14", - "haskell-nix": "haskell-nix_13", - "iogx-template-haskell": "iogx-template-haskell_5", - "iogx-template-vanilla": "iogx-template-vanilla_6", - "iohk-nix": "iohk-nix_17", - "nix2container": "nix2container_21", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_28", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_15", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_14" - }, - "locked": { - "lastModified": 1714680367, - "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iohk-nix": { - "inputs": { - "blst": "blst", - "nixpkgs": "nixpkgs_8", - "secp256k1": "secp256k1", - "sodium": "sodium" - }, - "locked": { - "lastModified": 1691469905, - "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", - "type": "github" - } - }, - "iohk-nix-ng": { - "inputs": { - "blst": "blst_2", - "nixpkgs": "nixpkgs_9", - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" - }, - "locked": { - "lastModified": 1696471795, - "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_10": { - "inputs": { - "blst": "blst_14", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_14", - "sodium": "sodium_14" - }, - "locked": { - "lastModified": 1714467508, - "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "89387f07016fe416c16f7824715238b3d1a4390a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_11": { - "inputs": { - "blst": "blst_15", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_15", - "sodium": "sodium_15" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_12": { - "inputs": { - "blst": "blst_16", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_16", - "sodium": "sodium_16" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_13": { - "inputs": { - "blst": "blst_17", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_17", - "sodium": "sodium_17" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_14": { - "inputs": { - "blst": "blst_18", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_18", - "sodium": "sodium_18" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_15": { - "inputs": { - "blst": "blst_19", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_19", - "sodium": "sodium_19" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_16": { - "inputs": { - "blst": "blst_20", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_20", - "sodium": "sodium_20" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_17": { - "inputs": { - "blst": "blst_21", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_21", - "sodium": "sodium_21" - }, - "locked": { - "lastModified": 1714467508, - "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "89387f07016fe416c16f7824715238b3d1a4390a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_18": { - "inputs": { - "blst": "blst_22", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_22", - "sodium": "sodium_22" - }, - "locked": { - "lastModified": 1714467508, - "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "89387f07016fe416c16f7824715238b3d1a4390a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_2": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_3": { - "inputs": { - "blst": "blst_7", - "nixpkgs": [ - "nixpkgs" - ], - "secp256k1": "secp256k1_7", - "sodium": "sodium_7" - }, - "locked": { - "lastModified": 1721411284, - "narHash": "sha256-NH345tWz4A2epDp9qRy87PlXtMiQTd4wbr57Qymn2uY=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "05fe9ba470544e615799492080b7f0f15bf7da3c", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_4": { - "inputs": { - "blst": "blst_8", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_8", - "sodium": "sodium_8" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_5": { - "inputs": { - "blst": "blst_9", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_9", - "sodium": "sodium_9" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_6": { - "inputs": { - "blst": "blst_10", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_10", - "sodium": "sodium_10" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_7": { - "inputs": { - "blst": "blst_11", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_11", - "sodium": "sodium_11" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_8": { - "inputs": { - "blst": "blst_12", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_12", - "sodium": "sodium_12" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_9": { - "inputs": { - "blst": "blst_13", - "nixpkgs": [ - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_13", - "sodium": "sodium_13" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix": { - "inputs": { - "blst": "blst_3", - "nixpkgs": [ - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "secp256k1": "secp256k1_3", - "sodium": "sodium_3" - }, - "locked": { - "lastModified": 1698999258, - "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_2": { - "inputs": { - "blst": "blst_4", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "secp256k1": "secp256k1_4", - "sodium": "sodium_4" - }, - "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_3": { - "inputs": { - "blst": "blst_5", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "secp256k1": "secp256k1_5", - "sodium": "sodium_5" - }, - "locked": { - "lastModified": 1698746924, - "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_4": { - "inputs": { - "blst": "blst_6", - "nixpkgs": [ - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1_6", - "sodium": "sodium_6" - }, - "locked": { - "lastModified": 1720729907, - "narHash": "sha256-V4GLBT8JdRiucMHnsZM23H0vUOsc3FYe/4ozHcblGwY=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7c47f37a9e6494dce0a81eb40badc7eaca2e4728", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_5": { - "inputs": { - "nixpkgs": [ - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "db-sync", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iserv-proxy": { - "flake": false, - "locked": { - "lastModified": 1688517130, - "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", - "ref": "hkm/remote-iserv", - "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", - "revCount": 13, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_10": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_11": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_12": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_13": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_14": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_15": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_16": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_17": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_18": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_19": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_2": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_20": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_21": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_3": { - "flake": false, - "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_4": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_5": { - "flake": false, - "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_6": { - "flake": false, - "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_7": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_8": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_9": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "kupo": { - "flake": false, - "locked": { - "lastModified": 1718734761, - "narHash": "sha256-J5eys+/VjeYqfBlcS+XW+Gzafq0/qkbOfY6b05JmFYI=", - "owner": "klarkc", - "repo": "kupo", - "rev": "d95a324f6a94a963cd91cb5d5f88ef50640e7b8d", - "type": "github" - }, - "original": { - "owner": "klarkc", - "ref": "patch-1", - "repo": "kupo", - "type": "github" - } - }, - "kupo-nixos": { - "inputs": { - "CHaP": [ - "CHaP" - ], - "iogx": "iogx", - "kupo": "kupo" - }, - "locked": { - "lastModified": 1718735503, - "narHash": "sha256-Dwpl5BUeGGvhH7+RcF3as7e9rzUFeHRwVGxjfj0fMAM=", - "owner": "Fourierlabs", - "repo": "kupo-nixos", - "rev": "4ab9be5d524bf2c003874aa225f20d00cb6defcf", - "type": "github" - }, - "original": { - "owner": "Fourierlabs", - "ref": "add-conway", - "repo": "kupo-nixos", - "type": "github" - } - }, - "lib": { - "locked": { - "lastModified": 1694306727, - "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "lowdown-src": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_10": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_11": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_12": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_13": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_14": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_15": { - "flake": false, - "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_16": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_17": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_18": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_19": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_2": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_20": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_21": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_22": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_23": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_24": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_25": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_26": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_27": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_28": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_29": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_3": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_30": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_31": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_32": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_33": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_34": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_35": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_4": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_5": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_6": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_7": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_8": { - "flake": false, - "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_9": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "mdbook-kroki-preprocessor": { - "flake": false, - "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "mdbook-kroki-preprocessor_2": { - "flake": false, - "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "mdbook-kroki-preprocessor_3": { - "flake": false, - "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "n2c": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_2": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_3": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_4": { - "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_5": { - "inputs": { - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_56" - }, - "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_6": { - "inputs": { - "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_91" - }, - "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_6", - "nixpkgs-regression": "nixpkgs-regression" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix-cache-proxy": { - "inputs": { - "devshell": "devshell_15", - "inclusive": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_20" - }, - "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "type": "github" - } - }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_13" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_8", - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-nomad_2": { - "inputs": { - "flake-compat": "flake-compat_9", - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-nomad_3": { - "inputs": { - "flake-compat": "flake-compat_14", - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_3", - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-tools": { - "flake": false, - "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_2": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_3": { - "flake": false, - "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_4": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_17" - }, - "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_10": { - "inputs": { - "flake-utils": "flake-utils_62", - "nixpkgs": "nixpkgs_109" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_11": { - "inputs": { - "flake-utils": "flake-utils_68", - "nixpkgs": "nixpkgs_113" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_12": { - "inputs": { - "flake-utils": "flake-utils_72", - "nixpkgs": "nixpkgs_116" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_13": { - "inputs": { - "flake-utils": "flake-utils_74", - "nixpkgs": "nixpkgs_118" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_14": { - "inputs": { - "flake-utils": "flake-utils_76", - "nixpkgs": "nixpkgs_120" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_15": { - "inputs": { - "flake-utils": "flake-utils_84", - "nixpkgs": "nixpkgs_125" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_16": { - "inputs": { - "flake-utils": "flake-utils_88", - "nixpkgs": "nixpkgs_128" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_17": { - "inputs": { - "flake-utils": "flake-utils_90", - "nixpkgs": "nixpkgs_130" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_18": { - "inputs": { - "flake-utils": "flake-utils_96", - "nixpkgs": "nixpkgs_134" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_19": { - "inputs": { - "flake-utils": "flake-utils_100", - "nixpkgs": "nixpkgs_137" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_19" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_20": { - "inputs": { - "flake-utils": "flake-utils_102", - "nixpkgs": "nixpkgs_139" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_21": { - "inputs": { - "flake-utils": "flake-utils_104", - "nixpkgs": "nixpkgs_141" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_22": { - "inputs": { - "flake-utils": "flake-utils_106", - "nixpkgs": "nixpkgs_143" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_23" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_4": { - "inputs": { - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_27" - }, - "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_5": { - "inputs": { - "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_32" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_6": { - "inputs": { - "flake-utils": "flake-utils_20", - "nixpkgs": "nixpkgs_36" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_7": { - "inputs": { - "flake-utils": "flake-utils_45", - "nixpkgs": "nixpkgs_94" - }, - "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", - "type": "github" - }, - "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_8": { - "inputs": { - "flake-utils": "flake-utils_56", - "nixpkgs": "nixpkgs_104" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_9": { - "inputs": { - "flake-utils": "flake-utils_60", - "nixpkgs": "nixpkgs_107" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix_10": { - "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_57", - "nixpkgs-regression": "nixpkgs-regression_9" - }, - "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", - "type": "github" - } - }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_59", - "nixpkgs-regression": "nixpkgs-regression_10" - }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nix_12": { - "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_66", - "nixpkgs-regression": "nixpkgs-regression_11" - }, - "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", - "type": "github" - } - }, - "nix_13": { - "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_67", - "nixpkgs-regression": "nixpkgs-regression_12" - }, - "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", - "type": "github" - } - }, - "nix_14": { - "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_72", - "nixpkgs-regression": "nixpkgs-regression_13" - }, - "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", - "type": "github" - } - }, - "nix_15": { - "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_74" - }, - "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "type": "github" - } - }, - "nix_16": { - "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_76", - "nixpkgs-regression": "nixpkgs-regression_14" - }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nix_17": { - "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_88", - "nixpkgs-regression": "nixpkgs-regression_15" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_18": { - "inputs": { - "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_90", - "nixpkgs-regression": "nixpkgs-regression_16" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_19": { - "inputs": { - "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_97", - "nixpkgs-regression": "nixpkgs-regression_17" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_2": { - "inputs": { - "flake-compat": "flake-compat_3", - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_10", - "nixpkgs-regression": "nixpkgs-regression_2" - }, - "locked": { - "lastModified": 1693573010, - "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", - "owner": "nixos", - "repo": "nix", - "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "2.17-maintenance", - "repo": "nix", - "type": "github" - } - }, - "nix_20": { - "inputs": { - "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_98", - "nixpkgs-regression": "nixpkgs-regression_18" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_21": { - "inputs": { - "lowdown-src": "lowdown-src_21", - "nixpkgs": "nixpkgs_100", - "nixpkgs-regression": "nixpkgs-regression_19" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_22": { - "inputs": { - "lowdown-src": "lowdown-src_22", - "nixpkgs": "nixpkgs_101", - "nixpkgs-regression": "nixpkgs-regression_20" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_23": { - "inputs": { - "lowdown-src": "lowdown-src_23", - "nixpkgs": "nixpkgs_102", - "nixpkgs-regression": "nixpkgs-regression_21" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_24": { - "inputs": { - "lowdown-src": "lowdown-src_24", - "nixpkgs": "nixpkgs_103", - "nixpkgs-regression": "nixpkgs-regression_22" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_25": { - "inputs": { - "lowdown-src": "lowdown-src_25", - "nixpkgs": "nixpkgs_106", - "nixpkgs-regression": "nixpkgs-regression_23" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_26": { - "inputs": { - "lowdown-src": "lowdown-src_26", - "nixpkgs": "nixpkgs_111", - "nixpkgs-regression": "nixpkgs-regression_24" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_27": { - "inputs": { - "lowdown-src": "lowdown-src_27", - "nixpkgs": "nixpkgs_112", - "nixpkgs-regression": "nixpkgs-regression_25" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_28": { - "inputs": { - "lowdown-src": "lowdown-src_28", - "nixpkgs": "nixpkgs_115", - "nixpkgs-regression": "nixpkgs-regression_26" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_29": { - "inputs": { - "lowdown-src": "lowdown-src_29", - "nixpkgs": "nixpkgs_122", - "nixpkgs-regression": "nixpkgs-regression_27" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_14", - "nixpkgs-regression": "nixpkgs-regression_3" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_30": { - "inputs": { - "lowdown-src": "lowdown-src_30", - "nixpkgs": "nixpkgs_123", - "nixpkgs-regression": "nixpkgs-regression_28" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_31": { - "inputs": { - "lowdown-src": "lowdown-src_31", - "nixpkgs": "nixpkgs_124", - "nixpkgs-regression": "nixpkgs-regression_29" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_32": { - "inputs": { - "lowdown-src": "lowdown-src_32", - "nixpkgs": "nixpkgs_127", - "nixpkgs-regression": "nixpkgs-regression_30" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_33": { - "inputs": { - "lowdown-src": "lowdown-src_33", - "nixpkgs": "nixpkgs_132", - "nixpkgs-regression": "nixpkgs-regression_31" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_34": { - "inputs": { - "lowdown-src": "lowdown-src_34", - "nixpkgs": "nixpkgs_133", - "nixpkgs-regression": "nixpkgs-regression_32" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_35": { - "inputs": { - "lowdown-src": "lowdown-src_35", - "nixpkgs": "nixpkgs_136", - "nixpkgs-regression": "nixpkgs-regression_33" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_16", - "nixpkgs-regression": "nixpkgs-regression_4" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_26", - "nixpkgs-regression": "nixpkgs-regression_5" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_35", - "nixpkgs-regression": "nixpkgs-regression_6" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_7": { - "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_43", - "nixpkgs-regression": "nixpkgs-regression_7" - }, - "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", - "type": "github" - } - }, - "nix_8": { - "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_45" - }, - "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "type": "github" - } - }, - "nix_9": { - "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_47", - "nixpkgs-regression": "nixpkgs-regression_8" - }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nixago": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago-exts": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" - } - }, - "nixago-exts_2": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" - } - }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", - "owner": "nix-community", - "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_4": { - "inputs": { - "flake-utils": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_5": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_6": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixlib": { - "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixlib_2": { - "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixlib_3": { - "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_10": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_11": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_12": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_13": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_14": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_15": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_16": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_17": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_18": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_19": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_2": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_20": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_21": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_22": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_23": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_24": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_25": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_3": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_4": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_5": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_6": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_7": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_8": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_9": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_10": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_11": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_12": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_13": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_14": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_15": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_16": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_17": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_18": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_19": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_2": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_20": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_21": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_22": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_23": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_24": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_25": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_3": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_4": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_5": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_6": { - "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_7": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_8": { - "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_9": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_10": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_11": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_12": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_13": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_14": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_15": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_16": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_17": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_18": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_19": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_2": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_20": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_21": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_22": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_23": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_24": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_25": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_3": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_4": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_5": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_6": { - "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_7": { - "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_8": { - "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_9": { - "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_10": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_11": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_12": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_13": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_14": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_15": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_16": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_17": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_18": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_19": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_2": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_20": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_21": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_22": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_3": { - "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_4": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_5": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_6": { - "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_7": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_8": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_9": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_10": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_11": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_12": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_13": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_14": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_15": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_16": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_17": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_18": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_19": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_2": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_20": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_21": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_3": { - "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_4": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_5": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_6": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_7": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_8": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_9": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_10": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_11": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_12": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_13": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_14": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_15": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_16": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_17": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_18": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_19": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_2": { - "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_20": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_3": { - "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_4": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_5": { - "locked": { - "lastModified": 1705033721, - "narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_6": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_7": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_8": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_9": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_10": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_11": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_12": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_13": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_14": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_15": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_16": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_17": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_2": { - "locked": { - "lastModified": 1719957072, - "narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7144d6241f02d171d25fba3edeaf15e0f2592105", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_3": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_4": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_5": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_6": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_7": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_8": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_9": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2405": { - "locked": { - "lastModified": 1720122915, - "narHash": "sha256-Nby8WWxj0elBu1xuRaUcRjPi/rU3xVbkAt2kj4QwX2U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "835cf2d3f37989c5db6585a28de967a667a75fb1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-24.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-arion": { - "locked": { - "lastModified": 1721580845, - "narHash": "sha256-jOCV3y/0mGkwy8N6zItl34UdApf1BYuO9r4F7ygl2iY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "4bf357e3406d24dfb3d23748fb4ec9361eb4075e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-docker": { - "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "dir": "lib", - "lastModified": 1671359686, - "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_2": { - "locked": { - "dir": "lib", - "lastModified": 1682879489, - "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_3": { - "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_4": { - "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_5": { - "locked": { - "dir": "lib", - "lastModified": 1696019113, - "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-regression": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_10": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_11": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_12": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_13": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_14": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_15": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_16": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_17": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_18": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_19": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_2": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_20": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_21": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_22": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_23": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_24": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_25": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_26": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_27": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_28": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_29": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_3": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_30": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_31": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_32": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_33": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_4": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_5": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_6": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_7": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_8": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_9": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1690066826, - "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_10": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_11": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_12": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_13": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_14": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_15": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_16": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_17": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_18": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_19": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_20": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_21": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_22": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_23": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_24": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_25": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_26": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_27": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_28": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_29": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_3": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_30": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_31": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_4": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_5": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_6": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_7": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_8": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_9": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1690720142, - "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_10": { - "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_11": { - "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_12": { - "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_13": { - "locked": { - "lastModified": 1720181791, - "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_14": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_15": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_16": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_17": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_18": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_19": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_2": { - "locked": { - "lastModified": 1696577711, - "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_20": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_21": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_22": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_23": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_24": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_25": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_26": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_27": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_28": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_3": { - "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_4": { - "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_5": { - "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_6": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_7": { - "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_8": { - "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_9": { - "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_100": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_101": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_102": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_103": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_104": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_105": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_106": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_107": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_108": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_109": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1690026219, - "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_110": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_111": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_112": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_113": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_114": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_115": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_116": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_117": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_118": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_119": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_12": { - "locked": { - "lastModified": 1675249806, - "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_120": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_121": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_122": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_123": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_124": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_125": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_126": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_127": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_128": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_129": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1636823747, - "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_130": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_131": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_132": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_133": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_134": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_135": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_136": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_137": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_138": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_139": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_140": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_141": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_142": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_143": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_144": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_16": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { - "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_21": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_22": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_23": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_24": { - "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_25": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_26": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_27": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_28": { - "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs_29": { - "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1677543769, - "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { - "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_31": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_32": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_33": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_34": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_35": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_36": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_37": { - "locked": { - "lastModified": 1708343346, - "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9312b935a538684049cb668885e60f15547d4c5f", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_38": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_39": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1645013224, - "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_41": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_42": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_43": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_44": { - "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - } - }, - "nixpkgs_45": { - "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" - } - }, - "nixpkgs_46": { - "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_47": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_48": { - "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_49": { - "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "nixpkgs_5": { + "nixago-exts_2": { "locked": { - "lastModified": 1680945546, - "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "nixpkgs_50": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" + "nixago_2": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_51": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs_52": { - "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", - "type": "github" + "nixago_3": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_53": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs_54": { + "nixago_4": { + "inputs": { + "flake-utils": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { "owner": "nix-community", - "repo": "nixpkgs.lib", + "repo": "nixago", "type": "github" } }, - "nixpkgs_55": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" + "nixago_5": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_56": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_57": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "owner": "nix-community", + "repo": "nixago", "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" } }, - "nixpkgs_58": { - "locked": { - "lastModified": 1652559422, - "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "nixago_6": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs_59": { + "nixlib": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, - "nixpkgs_6": { + "nixlib_2": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs_60": { + "nixlib_3": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs_61": { + "nixpkgs": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_62": { + "nixpkgs-2003": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_63": { + "nixpkgs-2003_10": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_64": { + "nixpkgs-2003_2": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_65": { + "nixpkgs-2003_3": { "locked": { - "lastModified": 1643381941, - "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_66": { + "nixpkgs-2003_4": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_67": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" } }, - "nixpkgs_68": { + "nixpkgs-2003_5": { "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_69": { + "nixpkgs-2003_6": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_7": { + "nixpkgs-2003_7": { "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-23.05", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_70": { + "nixpkgs-2003_8": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_71": { + "nixpkgs-2003_9": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_72": { + "nixpkgs-2105": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_73": { + "nixpkgs-2105_10": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_74": { + "nixpkgs-2105_2": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_75": { + "nixpkgs-2105_3": { "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-21.11", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_76": { + "nixpkgs-2105_4": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_77": { + "nixpkgs-2105_5": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_78": { + "nixpkgs-2105_6": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_79": { + "nixpkgs-2105_7": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_8": { + "nixpkgs-2105_8": { "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_80": { + "nixpkgs-2105_9": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_81": { + "nixpkgs-2111": { "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_82": { + "nixpkgs-2111_10": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_83": { + "nixpkgs-2111_2": { "locked": { - "lastModified": 1646470760, - "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", - "owner": "nixos", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "nixpkgs_84": { + "nixpkgs-2111_3": { "locked": { - "lastModified": 1619531122, - "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_85": { + "nixpkgs-2111_4": { "locked": { - "lastModified": 1656461576, - "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_86": { + "nixpkgs-2111_5": { "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_87": { + "nixpkgs-2111_6": { "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_88": { + "nixpkgs-2111_7": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_89": { + "nixpkgs-2111_8": { "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_9": { + "nixpkgs-2111_9": { "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_90": { + "nixpkgs-2205": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_91": { + "nixpkgs-2205_2": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_92": { + "nixpkgs-2205_3": { "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_93": { + "nixpkgs-2205_4": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_94": { + "nixpkgs-2205_5": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_95": { + "nixpkgs-2205_6": { "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_96": { + "nixpkgs-2205_7": { "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_97": { + "nixpkgs-2211": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_98": { + "nixpkgs-2211_2": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_99": { + "nixpkgs-2211_3": { "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nomad": { - "inputs": { - "nix": "nix_8", - "nixpkgs": "nixpkgs_46", - "utils": "utils_9" - }, + "nixpkgs-2211_4": { "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-driver-nix": { - "inputs": { - "devshell": "devshell_6", - "inclusive": "inclusive_2", - "nix": "nix_9", - "nixpkgs": "nixpkgs_48", - "utils": "utils_10" - }, + "nixpkgs-2211_5": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-driver-nix_2": { - "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_5", - "nix": "nix_11", - "nixpkgs": "nixpkgs_60", - "utils": "utils_15" - }, + "nixpkgs-2211_6": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-driver-nix_3": { - "inputs": { - "devshell": "devshell_16", - "inclusive": "inclusive_10", - "nix": "nix_16", - "nixpkgs": "nixpkgs_77", - "utils": "utils_24" - }, + "nixpkgs-2305": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-follower": { - "inputs": { - "devshell": "devshell_7", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_49", - "utils": "utils_11" - }, + "nixpkgs-2305_2": { "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-follower_2": { - "inputs": { - "devshell": "devshell_10", - "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_61", - "utils": "utils_16" - }, + "nixpkgs-2305_3": { "locked": { - "lastModified": 1658244176, - "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-follower_3": { - "inputs": { - "devshell": "devshell_17", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_78", - "utils": "utils_25" - }, + "nixpkgs-2305_4": { "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad_2": { - "inputs": { - "nix": "nix_15", - "nixpkgs": "nixpkgs_75", - "utils": "utils_23" - }, + "nixpkgs-2305_5": { "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1705033721, + "narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nosys": { + "nixpkgs-2311": { "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nosys_2": { + "nixpkgs-2311_2": { "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1719957072, + "narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7144d6241f02d171d25fba3edeaf15e0f2592105", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nosys_3": { + "nixpkgs-2405": { "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1720122915, + "narHash": "sha256-Nby8WWxj0elBu1xuRaUcRjPi/rU3xVbkAt2kj4QwX2U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "835cf2d3f37989c5db6585a28de967a667a75fb1", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "NixOS", + "ref": "nixpkgs-24.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nosys_4": { + "nixpkgs-arion": { "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1721580845, + "narHash": "sha256-jOCV3y/0mGkwy8N6zItl34UdApf1BYuO9r4F7ygl2iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "4bf357e3406d24dfb3d23748fb4ec9361eb4075e", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "offchain-metadata-tools-service": { - "flake": false, + "nixpkgs-docker": { "locked": { - "lastModified": 1684160858, - "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", - "owner": "input-output-hk", - "repo": "offchain-metadata-tools", - "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "feat-add-password-to-db-conn-string", - "repo": "offchain-metadata-tools", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "ogmios": { - "flake": false, + "nixpkgs-lib": { "locked": { - "lastModified": 1657544501, - "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", + "dir": "lib", + "lastModified": 1671359686, + "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v5.5.2", - "repo": "ogmios", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ogmios_2": { - "flake": false, + "nixpkgs-lib_2": { "locked": { - "lastModified": 1720778275, - "narHash": "sha256-OpUeVbztfLy+9d2M5w2Jgx1b/IhDNAQdlr/eP1iKUQI=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "63a9e9d33eadbca22d1ecc90b9623b962148d174", + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v6.5.0", - "repo": "ogmios", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix": { - "flake": false, + "nixpkgs-lib_3": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_10": { - "flake": false, + "nixpkgs-lib_4": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_11": { - "flake": false, + "nixpkgs-lib_5": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "dir": "lib", + "lastModified": 1696019113, + "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_12": { - "flake": false, + "nixpkgs-regression": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_13": { - "flake": false, + "nixpkgs-regression_10": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_14": { - "flake": false, + "nixpkgs-regression_11": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_15": { - "flake": false, + "nixpkgs-regression_12": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_16": { - "flake": false, + "nixpkgs-regression_13": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_17": { - "flake": false, + "nixpkgs-regression_14": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_18": { - "flake": false, + "nixpkgs-regression_15": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_19": { - "flake": false, + "nixpkgs-regression_16": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_2": { - "flake": false, + "nixpkgs-regression_17": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_20": { - "flake": false, + "nixpkgs-regression_18": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_21": { - "flake": false, + "nixpkgs-regression_2": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_22": { - "flake": false, + "nixpkgs-regression_3": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_23": { - "flake": false, + "nixpkgs-regression_4": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_24": { - "flake": false, + "nixpkgs-regression_5": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_25": { - "flake": false, + "nixpkgs-regression_6": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_3": { - "flake": false, + "nixpkgs-regression_7": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_4": { - "flake": false, + "nixpkgs-regression_8": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_5": { - "flake": false, + "nixpkgs-regression_9": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_6": { - "flake": false, + "nixpkgs-stable": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1690066826, + "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_7": { - "flake": false, + "nixpkgs-unstable": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_8": { - "flake": false, + "nixpkgs-unstable_10": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_9": { - "flake": false, + "nixpkgs-unstable_11": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib": { - "flake": false, + "nixpkgs-unstable_12": { "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_2": { - "flake": false, + "nixpkgs-unstable_13": { "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1720181791, + "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_3": { - "flake": false, + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1713366514, - "narHash": "sha256-0hNlv+grFTE+TeXIbxSY97QoEEaUupOKMusZ4PesdrQ=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "19d83fa8eab1c0b7765f736eb4e8569d84d3e39d", + "lastModified": 1696577711, + "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_5": { - "flake": false, + "nixpkgs-unstable_4": { "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_6": { - "flake": false, + "nixpkgs-unstable_5": { "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } - }, - "paisano": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "nosys": "nosys_2", - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + }, + "nixpkgs-unstable_6": { "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "core", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "paisano-actions": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] - }, + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "actions", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano-mdbook-preprocessor": { - "inputs": { - "crane": "crane", - "fenix": "fenix_2", - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions", - "std": [ - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] - }, + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano-tui": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std" - ] - }, + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "tui", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano-tui_2": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "std": [ - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] - }, + "nixpkgs_10": { "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "tui", + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", "type": "github" } }, - "paisano-tui_3": { - "flake": false, + "nixpkgs_11": { "locked": { - "lastModified": 1708637035, - "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "231761b260587a64817e4ffae3afc15defaa15db", + "lastModified": 1690026219, + "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "v0.5.0", - "repo": "tui", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano_2": { - "inputs": { - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "nosys": "nosys_3", - "yants": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, + "nixpkgs_12": { "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", - "owner": "paisano-nix", - "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "core", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano_3": { - "inputs": { - "call-flake": "call-flake", - "nixpkgs": [ - "cardano-node", - "std", - "nixpkgs" - ], - "nosys": "nosys_4", - "yants": [ - "cardano-node", - "std", - "yants" - ] - }, + "nixpkgs_13": { "locked": { - "lastModified": 1708640854, - "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", - "owner": "paisano-nix", - "repo": "core", - "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.2.0", - "repo": "core", + "owner": "nixos", + "repo": "nixpkgs", "type": "github" } }, - "poetry2nix": { - "inputs": { - "flake-utils": "flake-utils_32", - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ] - }, + "nixpkgs_14": { "locked": { - "lastModified": 1641849362, - "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", - "owner": "nix-community", - "repo": "poetry2nix", - "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_15": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "nix-community", - "ref": "fetched-projectdir-test", - "repo": "poetry2nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "pre-commit-hooks": { - "inputs": { - "flake-utils": "flake-utils_38", - "nixpkgs": "nixpkgs_84" - }, + "nixpkgs_16": { "locked": { - "lastModified": 1639823344, - "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix": { - "inputs": { - "flake-compat": "flake-compat_13", - "flake-utils": "flake-utils_15", - "gitignore": "gitignore", - "nixpkgs": [ - "cardano-nix", - "nixpkgs" - ], - "nixpkgs-stable": [ - "cardano-nix", - "nixpkgs" - ] - }, + "nixpkgs_17": { "locked": { - "lastModified": 1708018599, - "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_10": { - "inputs": { - "flake-compat": "flake-compat_46", - "flake-utils": "flake-utils_89", - "gitignore": "gitignore_10", - "nixpkgs": "nixpkgs_129", - "nixpkgs-stable": "nixpkgs-stable_19" - }, + "nixpkgs_18": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_11": { - "inputs": { - "flake-compat": "flake-compat_47", - "flake-utils": "flake-utils_91", - "gitignore": "gitignore_11", - "nixpkgs": "nixpkgs_131", - "nixpkgs-stable": "nixpkgs-stable_21" - }, + "nixpkgs_19": { "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_12": { - "inputs": { - "flake-compat": "flake-compat_50", - "flake-utils": "flake-utils_97", - "gitignore": "gitignore_12", - "nixpkgs": "nixpkgs_135", - "nixpkgs-stable": "nixpkgs-stable_23" - }, + "nixpkgs_2": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_13": { - "inputs": { - "flake-compat": "flake-compat_52", - "flake-utils": "flake-utils_101", - "gitignore": "gitignore_13", - "nixpkgs": "nixpkgs_138", - "nixpkgs-stable": "nixpkgs-stable_25" - }, + "nixpkgs_20": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_14": { - "inputs": { - "flake-compat": "flake-compat_53", - "flake-utils": "flake-utils_103", - "gitignore": "gitignore_14", - "nixpkgs": "nixpkgs_140", - "nixpkgs-stable": "nixpkgs-stable_27" - }, + "nixpkgs_21": { "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_15": { - "inputs": { - "flake-compat": "flake-compat_54", - "flake-utils": "flake-utils_105", - "gitignore": "gitignore_15", - "nixpkgs": "nixpkgs_142", - "nixpkgs-stable": "nixpkgs-stable_29" - }, + "nixpkgs_22": { "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_16": { - "inputs": { - "flake-compat": "flake-compat_55", - "flake-utils": "flake-utils_107", - "gitignore": "gitignore_16", - "nixpkgs": "nixpkgs_144", - "nixpkgs-stable": "nixpkgs-stable_31" - }, + "nixpkgs_23": { "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_2": { - "inputs": { - "flake-compat": "flake-compat_30", - "flake-utils": "flake-utils_57", - "gitignore": "gitignore_2", - "nixpkgs": "nixpkgs_105", - "nixpkgs-stable": "nixpkgs-stable_3" - }, + "nixpkgs_24": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_3": { - "inputs": { - "flake-compat": "flake-compat_32", - "flake-utils": "flake-utils_61", - "gitignore": "gitignore_3", - "nixpkgs": "nixpkgs_108", - "nixpkgs-stable": "nixpkgs-stable_5" - }, + "nixpkgs_25": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "pre-commit-hooks-nix_4": { - "inputs": { - "flake-compat": "flake-compat_33", - "flake-utils": "flake-utils_63", - "gitignore": "gitignore_4", - "nixpkgs": "nixpkgs_110", - "nixpkgs-stable": "nixpkgs-stable_7" - }, + "nixpkgs_26": { "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_5": { - "inputs": { - "flake-compat": "flake-compat_36", - "flake-utils": "flake-utils_69", - "gitignore": "gitignore_5", - "nixpkgs": "nixpkgs_114", - "nixpkgs-stable": "nixpkgs-stable_9" - }, + "nixpkgs_27": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_6": { - "inputs": { - "flake-compat": "flake-compat_38", - "flake-utils": "flake-utils_73", - "gitignore": "gitignore_6", - "nixpkgs": "nixpkgs_117", - "nixpkgs-stable": "nixpkgs-stable_11" - }, + "nixpkgs_28": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "pre-commit-hooks-nix_7": { - "inputs": { - "flake-compat": "flake-compat_39", - "flake-utils": "flake-utils_75", - "gitignore": "gitignore_7", - "nixpkgs": "nixpkgs_119", - "nixpkgs-stable": "nixpkgs-stable_13" - }, + "nixpkgs_29": { "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } - }, - "pre-commit-hooks-nix_8": { - "inputs": { - "flake-compat": "flake-compat_40", - "flake-utils": "flake-utils_77", - "gitignore": "gitignore_8", - "nixpkgs": "nixpkgs_121", - "nixpkgs-stable": "nixpkgs-stable_15" - }, + }, + "nixpkgs_3": { "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", + "lastModified": 1677543769, + "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_9": { - "inputs": { - "flake-compat": "flake-compat_44", - "flake-utils": "flake-utils_85", - "gitignore": "gitignore_9", - "nixpkgs": "nixpkgs_126", - "nixpkgs-stable": "nixpkgs-stable_17" - }, + "nixpkgs_30": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ragenix": { - "inputs": { - "agenix": "agenix_3", - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_50", - "rust-overlay": "rust-overlay_2" - }, + "nixpkgs_31": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ragenix_2": { - "inputs": { - "agenix": "agenix_4", - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_53", - "rust-overlay": "rust-overlay_3" - }, + "nixpkgs_32": { "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "ragenix_3": { - "inputs": { - "agenix": "agenix_5", - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_62", - "rust-overlay": "rust-overlay_4" - }, + "nixpkgs_33": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ragenix_4": { - "inputs": { - "agenix": "agenix_7", - "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_79", - "rust-overlay": "rust-overlay_5" - }, + "nixpkgs_34": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "ragenix_5": { - "inputs": { - "agenix": "agenix_8", - "flake-utils": "flake-utils_36", - "nixpkgs": "nixpkgs_82", - "rust-overlay": "rust-overlay_6" - }, + "nixpkgs_35": { "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "root": { - "inputs": { - "CHaP": "CHaP", - "blockfrost": "blockfrost", - "cardano-configurations": "cardano-configurations", - "cardano-nix": "cardano-nix", - "cardano-node": "cardano-node", - "db-sync": "db-sync", - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_24", - "hackage-nix": "hackage-nix", - "haskell-nix": "haskell-nix_4", - "hercules-ci-effects": "hercules-ci-effects_2", - "iohk-nix": "iohk-nix_3", - "kupo-nixos": "kupo-nixos", - "nixpkgs": [ - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-arion": "nixpkgs-arion", - "ogmios": "ogmios_2" - } - }, - "rust-analyzer-src": { - "flake": false, + "nixpkgs_36": { "locked": { - "lastModified": 1645205556, - "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_2": { - "flake": false, + "nixpkgs_37": { "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "lastModified": 1708343346, + "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9312b935a538684049cb668885e60f15547d4c5f", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nixos", + "ref": "release-23.11", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_3": { - "flake": false, + "nixpkgs_38": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "rust-analyzer-src_4": { - "flake": false, + "nixpkgs_39": { "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_5": { - "flake": false, + "nixpkgs_4": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1645013224, + "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_6": { - "flake": false, + "nixpkgs_40": { "locked": { - "lastModified": 1660579619, - "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "rust-analyzer-src_7": { - "flake": false, + "nixpkgs_41": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_8": { - "flake": false, + "nixpkgs_42": { "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "rust-overlay": { - "inputs": { - "flake-utils": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], - "nixpkgs": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "nixpkgs" - ] - }, + "nixpkgs_43": { "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "rust-overlay_2": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "nixpkgs_44": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "rust-overlay_3": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + "nixpkgs_45": { "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "rust-overlay_4": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "nixpkgs_46": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "rust-overlay_5": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "nixpkgs_47": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } - }, - "rust-overlay_6": { - "inputs": { - "flake-utils": [ - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + }, + "nixpkgs_48": { "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1": { - "flake": false, + "nixpkgs_49": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_10": { - "flake": false, + "nixpkgs_5": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_11": { - "flake": false, + "nixpkgs_50": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_12": { - "flake": false, + "nixpkgs_51": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_13": { - "flake": false, + "nixpkgs_52": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_14": { - "flake": false, + "nixpkgs_53": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_15": { - "flake": false, + "nixpkgs_54": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "secp256k1_16": { - "flake": false, + "nixpkgs_55": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_17": { - "flake": false, + "nixpkgs_56": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_18": { - "flake": false, + "nixpkgs_57": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "secp256k1_19": { - "flake": false, + "nixpkgs_58": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_2": { - "flake": false, + "nixpkgs_59": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "secp256k1_20": { - "flake": false, + "nixpkgs_6": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_60": { + "locked": { + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_21": { - "flake": false, + "nixpkgs_61": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_22": { - "flake": false, + "nixpkgs_62": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_3": { - "flake": false, + "nixpkgs_63": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_4": { - "flake": false, + "nixpkgs_64": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_5": { - "flake": false, + "nixpkgs_65": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_6": { - "flake": false, + "nixpkgs_66": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "secp256k1_7": { - "flake": false, + "nixpkgs_67": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "secp256k1_8": { - "flake": false, + "nixpkgs_68": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_9": { - "flake": false, + "nixpkgs_69": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "sodium": { - "flake": false, + "nixpkgs_7": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", "type": "github" } }, - "sodium_10": { - "flake": false, + "nixpkgs_70": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_11": { - "flake": false, + "nixpkgs_71": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_12": { - "flake": false, + "nixpkgs_72": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sodium_13": { - "flake": false, + "nixpkgs_73": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "sodium_14": { - "flake": false, + "nixpkgs_74": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "sodium_15": { - "flake": false, + "nixpkgs_75": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "sodium_16": { - "flake": false, + "nixpkgs_76": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sodium_17": { - "flake": false, + "nixpkgs_77": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_18": { - "flake": false, + "nixpkgs_78": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_19": { - "flake": false, + "nixpkgs_79": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_2": { - "flake": false, + "nixpkgs_8": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", "type": "github" } }, - "sodium_20": { - "flake": false, + "nixpkgs_80": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_21": { - "flake": false, + "nixpkgs_81": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_22": { - "flake": false, + "nixpkgs_82": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_3": { - "flake": false, + "nixpkgs_83": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "sodium_4": { - "flake": false, + "nixpkgs_84": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "sodium_5": { - "flake": false, + "nixpkgs_85": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_6": { - "flake": false, + "nixpkgs_86": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "sodium_7": { - "flake": false, + "nixpkgs_87": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "sodium_8": { - "flake": false, + "nixpkgs_88": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sodium_9": { - "flake": false, + "nixpkgs_89": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_11", - "nixpkgs-stable": "nixpkgs-stable" - }, + "nixpkgs_9": { "locked": { - "lastModified": 1690199016, - "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "Mic92", - "repo": "sops-nix", + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock": { - "flake": false, + "nixpkgs_90": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sphinxcontrib-haddock_10": { - "flake": false, + "nixpkgs_91": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_11": { - "flake": false, + "nixpkgs_92": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_12": { - "flake": false, + "nixpkgs_93": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_13": { - "flake": false, + "nixpkgs_94": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_14": { - "flake": false, + "nixpkgs_95": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_15": { - "flake": false, + "nixpkgs_96": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_2": { - "flake": false, + "nixpkgs_97": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sphinxcontrib-haddock_3": { - "flake": false, + "nixpkgs_98": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_4": { - "flake": false, + "nixpkgs_99": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_5": { - "flake": false, + "nomad": { + "inputs": { + "nix": "nix_8", + "nixpkgs": "nixpkgs_46", + "utils": "utils_9" + }, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "sphinxcontrib-haddock_6": { - "flake": false, + "nomad-driver-nix": { + "inputs": { + "devshell": "devshell_6", + "inclusive": "inclusive_2", + "nix": "nix_9", + "nixpkgs": "nixpkgs_48", + "utils": "utils_10" + }, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "sphinxcontrib-haddock_7": { - "flake": false, + "nomad-driver-nix_2": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_5", + "nix": "nix_11", + "nixpkgs": "nixpkgs_60", + "utils": "utils_15" + }, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "sphinxcontrib-haddock_8": { - "flake": false, + "nomad-driver-nix_3": { + "inputs": { + "devshell": "devshell_16", + "inclusive": "inclusive_10", + "nix": "nix_16", + "nixpkgs": "nixpkgs_77", + "utils": "utils_24" + }, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "sphinxcontrib-haddock_9": { - "flake": false, + "nomad-follower": { + "inputs": { + "devshell": "devshell_7", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_49", + "utils": "utils_11" + }, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "stable": { + "nomad-follower_2": { + "inputs": { + "devshell": "devshell_10", + "inclusive": "inclusive_6", + "nixpkgs": "nixpkgs_61", + "utils": "utils_16" + }, "locked": { - "lastModified": 1669735802, - "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "731cc710aeebecbf45a258e977e8b68350549522", + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "stackage": { - "flake": false, + "nomad-follower_3": { + "inputs": { + "devshell": "devshell_17", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_78", + "utils": "utils_25" + }, "locked": { - "lastModified": 1701043780, - "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "nomad-follower", "type": "github" } }, - "stackage_10": { - "flake": false, + "nomad_2": { + "inputs": { + "nix": "nix_15", + "nixpkgs": "nixpkgs_75", + "utils": "utils_23" + }, "locked": { - "lastModified": 1714954836, - "narHash": "sha256-ksReW99DOMNsNdRYDp/GIC2np/PVoqIIeuGbCB5YoFQ=", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "991de0dd2e48574c7aff96ea0b2315973c4d3458", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "stackage_11": { - "flake": false, + "nosys": { "locked": { - "lastModified": 1714608979, - "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "stackage_12": { - "flake": false, + "nosys_2": { "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "stackage_13": { - "flake": false, + "nosys_3": { "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "stackage_14": { - "flake": false, + "nosys_4": { "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "stackage_15": { + "offchain-metadata-tools-service": { "flake": false, "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "lastModified": 1684160858, + "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "repo": "offchain-metadata-tools", + "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "ref": "feat-add-password-to-db-conn-string", + "repo": "offchain-metadata-tools", "type": "github" } }, - "stackage_16": { + "ogmios": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", "type": "github" } }, - "stackage_17": { + "ogmios_2": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1720778275, + "narHash": "sha256-OpUeVbztfLy+9d2M5w2Jgx1b/IhDNAQdlr/eP1iKUQI=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "63a9e9d33eadbca22d1ecc90b9623b962148d174", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "CardanoSolutions", + "ref": "v6.5.0", + "repo": "ogmios", "type": "github" } }, - "stackage_18": { + "old-ghc-nix": { "flake": false, "locked": { - "lastModified": 1714608979, - "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_19": { + "old-ghc-nix_10": { "flake": false, "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_2": { + "old-ghc-nix_2": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_20": { + "old-ghc-nix_3": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_21": { + "old-ghc-nix_4": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_22": { + "old-ghc-nix_5": { "flake": false, "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_23": { + "old-ghc-nix_6": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_24": { + "old-ghc-nix_7": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_3": { + "old-ghc-nix_8": { "flake": false, "locked": { - "lastModified": 1700438989, - "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_4": { + "old-ghc-nix_9": { "flake": false, "locked": { - "lastModified": 1718756571, - "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "027672fb6fd45828b0e623c8152572d4058429ad", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_5": { + "ops-lib": { "flake": false, "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "stackage_6": { + "ops-lib_2": { "flake": false, "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "stackage_7": { + "ops-lib_3": { "flake": false, "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "lastModified": 1713366514, + "narHash": "sha256-0hNlv+grFTE+TeXIbxSY97QoEEaUupOKMusZ4PesdrQ=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "repo": "ops-lib", + "rev": "19d83fa8eab1c0b7765f736eb4e8569d84d3e39d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "stackage_8": { + "ops-lib_4": { "flake": false, "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "stackage_9": { + "ops-lib_5": { "flake": false, "locked": { - "lastModified": 1721520856, - "narHash": "sha256-NN1XhHCCCG1NEYKh9MhkBVPpxCDipH5PZnt9lDNmq/E=", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "b04dda657a674898f4f9ced1cd6ebd29d1e1adb2", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "statix": { - "inputs": { - "fenix": "fenix", - "nixpkgs": "nixpkgs_4" - }, + "ops-lib_6": { + "flake": false, "locked": { - "lastModified": 1676888642, - "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", - "owner": "nerdypepper", - "repo": "statix", - "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "nerdypepper", - "repo": "statix", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "std": { + "paisano": { "inputs": { - "arion": [ - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_8", - "incl": "incl", - "makes": [ + "nixpkgs": [ "cardano-nix", - "cardano-node-8.1.1", + "cardano-node-8.7.3", + "cardano-automation", "tullia", "std", - "blank" + "nixpkgs" ], - "microvm": [ + "nosys": "nosys_2", + "yants": [ "cardano-nix", - "cardano-node-8.1.1", + "cardano-node-8.7.3", + "cardano-automation", "tullia", "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_21", - "nosys": "nosys", - "yants": "yants" + "yants" + ] }, "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", - "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "repo": "core", "type": "github" } }, - "std_2": { + "paisano-actions": { "inputs": { - "arion": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "blank": "blank_2", - "devshell": "devshell_2", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_11", - "incl": "incl_2", - "makes": [ - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "microvm": [ + "nixpkgs": [ "cardano-nix", "cardano-node-8.7.3", - "cardano-automation", - "tullia", "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_24", - "paisano": "paisano", - "paisano-tui": "paisano-tui", - "yants": "yants_2" + "paisano-mdbook-preprocessor", + "nixpkgs" + ] }, "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", - "owner": "divnix", - "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "repo": "actions", "type": "github" } }, - "std_3": { + "paisano-mdbook-preprocessor": { "inputs": { - "arion": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "blank": "blank_3", - "devshell": "devshell_3", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_13", - "haumea": "haumea", - "incl": "incl_3", - "makes": [ - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "microvm": [ + "crane": "crane", + "fenix": "fenix_2", + "nixpkgs": [ "cardano-nix", "cardano-node-8.7.3", "std", - "blank" + "nixpkgs" ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_29", - "paisano": "paisano_2", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", - "paisano-tui": "paisano-tui_2", - "yants": "yants_3" + "paisano-actions": "paisano-actions", + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] }, "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", - "owner": "divnix", - "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", "type": "github" } }, - "std_4": { + "paisano-tui": { "inputs": { - "blank": "blank_4", - "devshell": "devshell_5", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_18", - "makes": [ - "cardano-node", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", "cardano-automation", "tullia", "std", "blank" ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "microvm": [ - "cardano-node", + "std": [ + "cardano-nix", + "cardano-node-8.7.3", "cardano-automation", "tullia", - "std", - "blank" - ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_33", - "yants": "yants_4" + "std" + ] }, "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "std_5": { + "paisano-tui_2": { "inputs": { - "arion": [ - "cardano-node", - "std", - "blank" - ], - "blank": "blank_5", - "devshell": [ - "cardano-node", - "std", - "blank" - ], - "dmerge": "dmerge_5", - "haumea": "haumea_2", - "incl": "incl_4", - "lib": "lib", - "makes": [ - "cardano-node", - "std", - "blank" - ], - "microvm": [ - "cardano-node", - "std", - "blank" - ], - "n2c": [ - "cardano-node", - "std", - "blank" - ], - "nixago": [ - "cardano-node", - "std", - "blank" - ], - "nixpkgs": "nixpkgs_37", - "paisano": "paisano_3", - "paisano-tui": "paisano-tui_3", - "terranix": [ - "cardano-node", + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", "std", "blank" ], - "yants": "yants_5" + "std": [ + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] }, "locked": { - "lastModified": 1715201063, - "narHash": "sha256-LcLYV5CDhIiJs3MfxGZFKsXPR4PtfnY4toZ75GM+2Pw=", - "owner": "divnix", - "repo": "std", - "rev": "b6924a7d37a46fc1dda8efe405040e27ecf1bbd6", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "std_6": { - "inputs": { - "devshell": "devshell_11", - "dmerge": "dmerge_6", - "flake-utils": "flake-utils_28", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_5", - "nixpkgs": "nixpkgs_63", - "yants": "yants_7" - }, + "paisano-tui_3": { + "flake": false, "locked": { - "lastModified": 1661370377, - "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", - "owner": "divnix", - "repo": "std", - "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", + "lastModified": 1708637035, + "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "231761b260587a64817e4ffae3afc15defaa15db", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "ref": "v0.5.0", + "repo": "tui", "type": "github" } }, - "std_7": { + "paisano_2": { "inputs": { - "devshell": "devshell_19", - "dmerge": "dmerge_7", - "flake-utils": "flake-utils_44", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", - "nixago": "nixago_6", - "nixpkgs": "nixpkgs_93", - "yants": "yants_9" + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "nosys": "nosys_3", + "yants": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] }, "locked": { - "lastModified": 1661367957, - "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", - "owner": "divnix", - "repo": "std", - "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, - "std_8": { + "paisano_3": { "inputs": { - "devshell": "devshell_20", - "nixpkgs": "nixpkgs_96", - "yants": "yants_10" - }, - "locked": { - "lastModified": 1652784712, - "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", - "owner": "divnix", - "repo": "std", - "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "stdlib": { - "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", - "type": "github" + "call-flake": "call-flake", + "nixpkgs": [ + "cardano-node", + "std", + "nixpkgs" + ], + "nosys": "nosys_4", + "yants": [ + "cardano-node", + "std", + "yants" + ] }, - "original": { - "owner": "manveru", - "repo": "nix-lib", - "type": "github" - } - }, - "stdlib_10": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1708640854, + "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", + "owner": "paisano-nix", + "repo": "core", + "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "paisano-nix", + "ref": "0.2.0", + "repo": "core", "type": "github" } }, - "stdlib_11": { + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils_32", + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1641849362, + "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-community", + "ref": "fetched-projectdir-test", + "repo": "poetry2nix", "type": "github" } }, - "stdlib_12": { + "pre-commit-hooks": { + "inputs": { + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_84" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "stdlib_13": { + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat_13", + "flake-utils": "flake-utils_15", + "gitignore": "gitignore", + "nixpkgs": [ + "cardano-nix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "cardano-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1708018599, + "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "stdlib_2": { + "ragenix": { + "inputs": { + "agenix": "agenix_3", + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_50", + "rust-overlay": "rust-overlay_2" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "stdlib_3": { + "ragenix_2": { + "inputs": { + "agenix": "agenix_4", + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_53", + "rust-overlay": "rust-overlay_3" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "stdlib_4": { + "ragenix_3": { + "inputs": { + "agenix": "agenix_5", + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_62", + "rust-overlay": "rust-overlay_4" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "stdlib_5": { + "ragenix_4": { + "inputs": { + "agenix": "agenix_7", + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_79", + "rust-overlay": "rust-overlay_5" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "stdlib_6": { + "ragenix_5": { + "inputs": { + "agenix": "agenix_8", + "flake-utils": "flake-utils_36", + "nixpkgs": "nixpkgs_82", + "rust-overlay": "rust-overlay_6" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "stdlib_7": { + "root": { + "inputs": { + "CHaP": "CHaP", + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-nix": "cardano-nix", + "cardano-node": "cardano-node", + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_24", + "hackage-nix": "hackage-nix", + "haskell-nix": "haskell-nix_4", + "hercules-ci-effects": "hercules-ci-effects_2", + "iohk-nix": "iohk-nix_3", + "nixpkgs": [ + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-arion": "nixpkgs-arion", + "ogmios": "ogmios_2" + } + }, + "rust-analyzer-src": { + "flake": false, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1645205556, + "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "stdlib_8": { + "rust-analyzer-src_2": { + "flake": false, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "stdlib_9": { - "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "rust-analyzer-src_3": { + "flake": false, + "locked": { + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems": { + "rust-analyzer-src_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_10": { + "rust-analyzer-src_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_11": { + "rust-analyzer-src_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1660579619, + "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_12": { + "rust-analyzer-src_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_13": { + "rust-analyzer-src_8": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_14": { + "rust-overlay": { + "inputs": { + "flake-utils": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_15": { + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_16": { + "rust-overlay_3": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_17": { + "rust-overlay_4": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_18": { + "rust-overlay_5": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_19": { + "rust-overlay_6": { + "inputs": { + "flake-utils": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_2": { + "secp256k1": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_20": { + "secp256k1_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_21": { + "secp256k1_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_22": { + "secp256k1_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_23": { + "secp256k1_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_24": { + "secp256k1_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_25": { + "secp256k1_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_26": { + "sodium": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_27": { + "sodium_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_28": { + "sodium_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_29": { + "sodium_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_3": { + "sodium_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_30": { + "sodium_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_31": { + "sodium_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_32": { + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_11", + "nixpkgs-stable": "nixpkgs-stable" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1690199016, + "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "Mic92", + "repo": "sops-nix", "type": "github" } }, - "systems_33": { + "stable": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1669735802, + "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "731cc710aeebecbf45a258e977e8b68350549522", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "systems_34": { + "stackage": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1701043780, + "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_35": { + "stackage_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_36": { + "stackage_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_37": { + "stackage_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1718756571, + "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "027672fb6fd45828b0e623c8152572d4058429ad", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_38": { + "stackage_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_39": { + "stackage_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_4": { + "stackage_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_40": { + "stackage_8": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_41": { + "stackage_9": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1721520856, + "narHash": "sha256-NN1XhHCCCG1NEYKh9MhkBVPpxCDipH5PZnt9lDNmq/E=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "b04dda657a674898f4f9ced1cd6ebd29d1e1adb2", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_42": { + "statix": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1676888642, + "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", + "owner": "nerdypepper", + "repo": "statix", + "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "nerdypepper", + "repo": "statix", "type": "github" } }, - "systems_43": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" + "std": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_8", + "incl": "incl", + "makes": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_21", + "nosys": "nosys", + "yants": "yants" }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_44": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_45": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" + "std_2": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_11", + "incl": "incl_2", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_24", + "paisano": "paisano", + "paisano-tui": "paisano-tui", + "yants": "yants_2" }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_46": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_47": { + "std_3": { + "inputs": { + "arion": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "blank": "blank_3", + "devshell": "devshell_3", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_13", + "haumea": "haumea", + "incl": "incl_3", + "makes": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "microvm": [ + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_29", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", + "yants": "yants_3" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_48": { + "std_4": { + "inputs": { + "blank": "blank_4", + "devshell": "devshell_5", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_18", + "makes": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "microvm": [ + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_33", + "yants": "yants_4" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_49": { + "std_5": { + "inputs": { + "arion": [ + "cardano-node", + "std", + "blank" + ], + "blank": "blank_5", + "devshell": [ + "cardano-node", + "std", + "blank" + ], + "dmerge": "dmerge_5", + "haumea": "haumea_2", + "incl": "incl_4", + "lib": "lib", + "makes": [ + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "cardano-node", + "std", + "blank" + ], + "n2c": [ + "cardano-node", + "std", + "blank" + ], + "nixago": [ + "cardano-node", + "std", + "blank" + ], + "nixpkgs": "nixpkgs_37", + "paisano": "paisano_3", + "paisano-tui": "paisano-tui_3", + "terranix": [ + "cardano-node", + "std", + "blank" + ], + "yants": "yants_5" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1715201063, + "narHash": "sha256-LcLYV5CDhIiJs3MfxGZFKsXPR4PtfnY4toZ75GM+2Pw=", + "owner": "divnix", + "repo": "std", + "rev": "b6924a7d37a46fc1dda8efe405040e27ecf1bbd6", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "std_6": { + "inputs": { + "devshell": "devshell_11", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_28", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_63", + "yants": "yants_7" + }, + "locked": { + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "owner": "divnix", + "repo": "std", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_50": { + "std_7": { + "inputs": { + "devshell": "devshell_19", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_44", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_93", + "yants": "yants_9" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "owner": "divnix", + "repo": "std", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_51": { + "std_8": { + "inputs": { + "devshell": "devshell_20", + "nixpkgs": "nixpkgs_96", + "yants": "yants_10" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "owner": "divnix", + "repo": "std", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_52": { + "stdlib": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_53": { + "stdlib_10": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_54": { + "stdlib_11": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_55": { + "stdlib_12": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_56": { + "stdlib_13": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_57": { + "stdlib_2": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_58": { + "stdlib_3": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_59": { + "stdlib_4": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_6": { + "stdlib_5": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_60": { + "stdlib_6": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_61": { + "stdlib_7": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_62": { + "stdlib_8": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_63": { + "stdlib_9": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_64": { + "systems": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31613,7 +15011,7 @@ "type": "github" } }, - "systems_65": { + "systems_2": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31628,7 +15026,7 @@ "type": "github" } }, - "systems_66": { + "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31643,7 +15041,7 @@ "type": "github" } }, - "systems_7": { + "systems_4": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31658,7 +15056,7 @@ "type": "github" } }, - "systems_8": { + "systems_5": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31673,7 +15071,7 @@ "type": "github" } }, - "systems_9": { + "systems_6": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", diff --git a/flake.nix b/flake.nix index 1d5e6ef5a..3fa3fe4be 100644 --- a/flake.nix +++ b/flake.nix @@ -49,16 +49,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - # TODO: Remove this input as soon as a new version compatible with - # the latest node is released. Use Kupo from cardano-nix. - kupo-nixos = { - url = "github:Fourierlabs/kupo-nixos/add-conway"; - inputs = { - CHaP.follows = "CHaP"; - kupo.url = "github:klarkc/kupo/d95a324f6a94a963cd91cb5d5f88ef50640e7b8d"; - }; - }; - # Get Ogmios test fixtures ogmios = { url = "github:CardanoSolutions/ogmios/v6.5.0"; @@ -93,7 +83,7 @@ ]; ogmiosVersion = "6.5.0"; - kupoVersion = "2.8.0"; + kupoVersion = "2.9.0"; perSystem = nixpkgs.lib.genAttrs supportedSystems; @@ -220,8 +210,7 @@ name = "ctl-e2e-test"; runnerMain = "Test.Ctl.E2E"; testMain = "Ctl.Examples.ByUrl"; - buildInputs = [ inputs.kupo-nixos.packages.${pkgs.system}.kupo ]; - # buildInputs = [ inputs.cardano-nix.packages.${pkgs.system}."kupo-${kupoVersion}" ]; + buildInputs = [ inputs.cardano-nix.packages.${pkgs.system}."kupo-${kupoVersion}" ]; }; ctl-local-testnet-test = project.runLocalTestnetTest { name = "ctl-local-testnet-test"; @@ -298,8 +287,7 @@ cardano-testnet = cardano-node.packages.${system}.cardano-testnet; cardano-node = cardano-node.packages.${system}.cardano-node; cardano-cli = cardano-node.packages.${system}.cardano-cli; - kupo = inputs.kupo-nixos.packages.${system}.kupo; - # kupo = cardano-nix.packages.${system}."kupo-${kupoVersion}"; + kupo = cardano-nix.packages.${system}."kupo-${kupoVersion}"; cardano-db-sync = inputs.db-sync.packages.${system}.cardano-db-sync; blockfrost-backend-ryo = inputs.blockfrost.packages.${system}.blockfrost-backend-ryo; buildCtlRuntime = buildCtlRuntime final; @@ -494,14 +482,13 @@ modules = [ inputs.cardano-node.nixosModules.cardano-node inputs.cardano-nix.nixosModules.ogmios - inputs.kupo-nixos.nixosModules.kupo - # inputs.cardano-nix.nixosModules.kupo + inputs.cardano-nix.nixosModules.kupo ./nix/test-nixos-configuration.nix ]; specialArgs = { inherit (inputs) cardano-configurations; ogmios = inputs.cardano-nix.packages.${system}."ogmios-${ogmiosVersion}"; - # kupo = inputs.cardano-nix.packages.${system}."kupo-${kupoVersion}"; + kupo = inputs.cardano-nix.packages.${system}."kupo-${kupoVersion}"; }; }; diff --git a/nix/test-nixos-configuration.nix b/nix/test-nixos-configuration.nix index 9349c240b..9100f2c73 100644 --- a/nix/test-nixos-configuration.nix +++ b/nix/test-nixos-configuration.nix @@ -1,10 +1,11 @@ -{ config, modulesPath, pkgs, cardano-configurations, ogmios, ... }: +{ config, modulesPath, pkgs, cardano-configurations, ogmios, kupo, ... }: { imports = [ "${modulesPath}/virtualisation/qemu-vm.nix" ]; virtualisation = { memorySize = 8192; diskSize = 100000; + restrictNetwork = false; forwardPorts = [ # SSH { from = "host"; host.port = 2222; guest.port = 22; } @@ -23,11 +24,17 @@ users.extraUsers.root.password = ""; users.mutableUsers = false; + environment.systemPackages = with pkgs; [ + lsof + ]; + # services services.cardano-node = { enable = true; - systemdSocketActivation = true; + hostAddr = "0.0.0.0"; + socketPath = "/var/run/cardano-node/node.socket"; + systemdSocketActivation = false; nodeConfigFile = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; topology = "${cardano-configurations}/network/sanchonet/cardano-node/topology.json"; }; @@ -36,28 +43,19 @@ enable = true; package = ogmios; host = "0.0.0.0"; + user = "cardano-node"; + group = "cardano-node"; nodeSocketPath = "/var/run/cardano-node/node.socket"; nodeConfigPath = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; }; services.kupo = { - enable = true; - host = "0.0.0.0"; - user = "kupo"; - group = "kupo"; - nodeConfig = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; - nodeSocket = "/var/run/cardano-node/node.socket"; - }; - - /* - services.kupo = { enable = true; package = kupo; - user = "kupo"; - group = "kupo"; + user = "cardano-node"; + group = "cardano-node"; host = "0.0.0.0"; nodeSocketPath = "/var/run/cardano-node/node.socket"; - nodeConfigPath = "${cardano-configurations}/network/mainnet/cardano-node/config.json"; - }; - */ + nodeConfigPath = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; + }; } From 6142de28fa00aef0a4644be14f5af815349f5bb6 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 22 Jul 2024 15:54:23 +0200 Subject: [PATCH 314/373] Fix ctl-e2e-test check, Re-generate spago-packages.nix --- nix/default.nix | 2 +- spago-packages.nix | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/nix/default.nix b/nix/default.nix index 6d6971f96..e083104af 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -449,7 +449,7 @@ let cardano-node cardano-cli chromium - python38 # To serve bundled CTL + python39 # To serve bundled CTL # Utils needed by E2E test code which # used to check for browser availability gnutar # used unpack settings archive within E2E test code diff --git a/spago-packages.nix b/spago-packages.nix index f957ab639..aa4aef445 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -353,6 +353,30 @@ let installPhase = "ln -s $src $out"; }; + "cip95" = pkgs.stdenv.mkDerivation { + name = "cip95"; + version = "9d92a38cddd318245010286ae3966cd515d6952f"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip95"; + rev = "9d92a38cddd318245010286ae3966cd515d6952f"; + sha256 = "0wzyq1yni2nj46k97faffhjl7afvxlvjgmfbs5k4ga9a1vbd2ijm"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cip95-typesafe" = pkgs.stdenv.mkDerivation { + name = "cip95-typesafe"; + version = "84cf1a18abc274222b31d7fcb829195ae2e673c4"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip95-typesafe"; + rev = "84cf1a18abc274222b31d7fcb829195ae2e673c4"; + sha256 = "1x2lnzb02dgryz0gpd6p4bg2nab7s49y6f705v2p3iina8z198z9"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "console" = pkgs.stdenv.mkDerivation { name = "console"; version = "v6.0.0"; From 3bf59a2760b6db2799d89e74211c29fb75b48fbc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 23 Jul 2024 21:26:05 +0400 Subject: [PATCH 315/373] Add getStakeCredentialDelegationsAndRewards --- CHANGELOG.md | 2 +- src/Contract/Staking.purs | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb4f221af..484bf7de6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,7 +79,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - `Contract.Transaction.buildTx :: Array TransactionBuilderStep -> Contract Transaction` that provides a `Contract`-based interface for the [new transaction builder](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder). - `submitTxFromBuildPlan :: UtxoMap -> BalanceTxConstraintsBuilder -> Array TransactionBuilderStep -> Contract Transaction` - a convenience function that executes the whole transaction creation pipeline starting from a build plan for [the new transaction builder](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder). - `Contract.ClientError.pprintClientError` to provide readable error reports. -- +- `Contract.Staking.getStakeCredentialDelegationsAndRewards` utility function ### Removed diff --git a/src/Contract/Staking.purs b/src/Contract/Staking.purs index 2be33a901..067a75525 100644 --- a/src/Contract/Staking.purs +++ b/src/Contract/Staking.purs @@ -2,12 +2,19 @@ module Contract.Staking ( getPoolIds , getPubKeyHashDelegationsAndRewards , getValidatorHashDelegationsAndRewards + , getStakeCredentialDelegationsAndRewards , module X ) where import Prelude -import Cardano.Types (Ed25519KeyHash, PoolPubKeyHash, ScriptHash) +import Cardano.Types + ( Credential(PubKeyHashCredential, ScriptHashCredential) + , Ed25519KeyHash + , PoolPubKeyHash + , ScriptHash + , StakeCredential(StakeCredential) + ) import Contract.Monad (Contract) import Control.Monad.Reader (asks) import Ctl.Internal.Contract.Monad (getQueryHandle) @@ -27,6 +34,15 @@ getPoolIds = do queryHandle.getPoolIds >>= either (liftEffect <<< throw <<< show) pure +getStakeCredentialDelegationsAndRewards + :: StakeCredential + -> Contract (Maybe DelegationsAndRewards) +getStakeCredentialDelegationsAndRewards = case _ of + StakeCredential (PubKeyHashCredential pkh) -> + getPubKeyHashDelegationsAndRewards pkh + StakeCredential (ScriptHashCredential sh) -> + getValidatorHashDelegationsAndRewards sh + getPubKeyHashDelegationsAndRewards :: Ed25519KeyHash -> Contract (Maybe DelegationsAndRewards) From 2b5c3ea04e134eaa73ae0667ec22e12efe234111 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 23 Jul 2024 21:26:26 +0400 Subject: [PATCH 316/373] Fix all Staking examples --- packages.dhall | 2 +- scripts/import-fixer.sh | 10 +- spago-packages.nix | 6 +- src/Contract/Transaction.purs | 23 +- src/Contract/Wallet/Key.purs | 5 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 12 +- test/Plutip/Staking.purs | 494 +++++++++++----------- 8 files changed, 277 insertions(+), 277 deletions(-) diff --git a/packages.dhall b/packages.dhall index 32f5a10b7..23decc619 100644 --- a/packages.dhall +++ b/packages.dhall @@ -516,7 +516,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1" + , version = "70d219d6463466458fd381b55d84f458dcaee94a" } , mote-testplan = { dependencies = diff --git a/scripts/import-fixer.sh b/scripts/import-fixer.sh index 66e90ff44..368ab577a 100755 --- a/scripts/import-fixer.sh +++ b/scripts/import-fixer.sh @@ -9,8 +9,8 @@ if [[ "${TRACE-0}" == "1" ]]; then fi if [[ "${1-}" =~ ^-*h(elp)?$ ]]; then - echo 'Usage: ./scripts/import-fixer.sh [REVISION] -This script attempts to fix imports from implicit for (Something(..)) to explicit (Something(SomeConstructor, OtherConstructor)) + echo 'Usage: ./scripts/import-fixer.sh +This script attempts to fix imports from implicit (Something(..)) to explicit (Something(SomeConstructor, OtherConstructor)) based on a set of hardcoded types ' exit fi @@ -43,12 +43,16 @@ constrs["RedeemerTag"]="Spend, Mint, Cert, Reward" constrs["Maybe"]="Just, Nothing" constrs["PaymentCredential"]="PaymentCredential" constrs["StakeCredential"]="StakeCredential" -constrs["TransactionBuilderStep"]="SpendOutput, Pay, MintAsset, RegisterStake, IssueCertificate, WithdrawStake, RequireSignature, RegisterPool, RetirePool, IncludeDatum, SetTTL, SetValidityStartInterval, SetIsValid" +constrs["TransactionBuilderStep"]="SpendOutput, Pay, MintAsset, IssueCertificate, WithdrawStake" constrs["OutputWitness"]="NativeScriptOutput, PlutusScriptOutput" constrs["CredentialWitness"]="NativeScriptCredential, PlutusScriptCredential" constrs["ScriptWitness"]="ScriptValue, ScriptReference" constrs["DatumWitness"]="DatumValue, DatumReference" constrs["RefInputAction"]="ReferenceInput, SpendInput" +constrs["ExpectedWitnessType"]="ScriptHashWitness, PubKeyHashWitness" +constrs["TxBuildError"]="WrongSpendWitnessType, IncorrectDatumHash, IncorrectScriptHash, WrongOutputType, WrongStakeCredentialType, DatumWitnessNotProvided, UnneededDatumWitness, UnneededDeregisterWitness, UnableToAddMints, RedeemerIndexingError, RedeemerIndexingInternalError, WrongNetworkId, ScriptHashAddressAndNoDatum, NoTransactionNetworkId" +constrs["Certificate"]="StakeRegistration, StakeDeregistration, StakeDelegation, PoolRegistration, PoolRetirement, GenesisKeyDelegation, MoveInstantaneousRewardsCert" +constrs["PlutusData"]="Constr, Map, List, Integer, Bytes" for d in "src" "test" "examples"; do echo "processing $d" diff --git a/spago-packages.nix b/spago-packages.nix index 25962cf81..9ecb54012 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1"; + version = "70d219d6463466458fd381b55d84f458dcaee94a"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; - rev = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1"; - sha256 = "14hflxhl5g8yv43k4i7xh6lx5cf3vc0vzhy76jw2b4nrp83ks6l3"; + rev = "70d219d6463466458fd381b55d84f458dcaee94a"; + sha256 = "1148x79lxq2rr897cfspkrjspwyjgw5xm9b9188wvgf568703r3w"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Contract/Transaction.purs b/src/Contract/Transaction.purs index 52bbd851e..2974c376e 100644 --- a/src/Contract/Transaction.purs +++ b/src/Contract/Transaction.purs @@ -62,13 +62,14 @@ import Cardano.Types.PoolPubKeyHash (PoolPubKeyHash(PoolPubKeyHash)) as X import Cardano.Types.ScriptRef (ScriptRef(NativeScriptRef, PlutusScriptRef)) as X import Cardano.Types.Transaction (Transaction(Transaction), empty) as X import Cardano.Types.Transaction as Transaction +import Contract.Log (logTrace') import Contract.Monad (Contract, runContractInEnv) import Contract.UnbalancedTx (mkUnbalancedTx) import Control.Monad.Error.Class (catchError, liftEither, throwError) import Control.Monad.Reader (ReaderT, asks, runReaderT) import Control.Monad.Reader.Class (ask) import Ctl.Internal.BalanceTx as B -import Ctl.Internal.BalanceTx.Constraints (BalanceTxConstraintsBuilder) +import Ctl.Internal.BalanceTx.Constraints (BalancerConstraints) import Ctl.Internal.BalanceTx.Error ( Actual(Actual) , BalanceTxError @@ -140,8 +141,7 @@ buildTx :: Array TransactionBuilderStep -> Contract Transaction buildTx steps = do - networkId <- asks _.networkId - case buildTransaction networkId steps of + case buildTransaction steps of Left err -> do throwError (error $ explainTxBuildError err) Right res -> pure res @@ -159,6 +159,7 @@ submit :: Transaction -> Contract TransactionHash submit tx = do + logTrace' $ "Submitting transaction: " <> show tx eiTxHash <- submitE tx liftEither $ flip lmap eiTxHash \err -> error $ "Failed to submit tx:\n" <> show err @@ -231,7 +232,7 @@ withBalancedTxs . Array { transaction :: Transaction , usedUtxos :: UtxoMap - , balancerConstraints :: BalanceTxConstraintsBuilder + , balancerConstraints :: BalancerConstraints } -> (Array Transaction -> Contract a) -> Contract a @@ -247,7 +248,7 @@ withBalancedTx :: forall (a :: Type) . Transaction -> UtxoMap - -> BalanceTxConstraintsBuilder + -> BalancerConstraints -> (Transaction -> Contract a) -> Contract a withBalancedTx tx usedUtxos balancerConstraints = @@ -262,12 +263,14 @@ withBalancedTx tx usedUtxos balancerConstraints = balanceTxE :: Transaction -> UtxoMap - -> BalanceTxConstraintsBuilder + -> BalancerConstraints -> Contract (Either BalanceTxError.BalanceTxError Transaction) balanceTxE tx utxos = B.balanceTxWithConstraints tx utxos -- | Balance a single transaction. -- | +-- | `UtxoMap` is a collection of UTxOs used as inputs that are coming from outside of the user wallet. +-- | -- | `balanceTxE` is a non-throwing version of this function. -- | -- | Use `balanceTxs` to balance multiple transactions and prevent them from @@ -275,7 +278,7 @@ balanceTxE tx utxos = B.balanceTxWithConstraints tx utxos balanceTx :: Transaction -> UtxoMap - -> BalanceTxConstraintsBuilder + -> BalancerConstraints -> Contract Transaction balanceTx utx utxos constraints = do result <- balanceTxE utx utxos constraints @@ -290,7 +293,7 @@ balanceTxs :: Array { transaction :: Transaction , usedUtxos :: UtxoMap - , balancerConstraints :: BalanceTxConstraintsBuilder + , balancerConstraints :: BalancerConstraints } -> Contract (Array Transaction) balanceTxs unbalancedTxs = @@ -305,7 +308,7 @@ balanceTxs unbalancedTxs = balanceAndLock :: { transaction :: Transaction , usedUtxos :: UtxoMap - , balancerConstraints :: BalanceTxConstraintsBuilder + , balancerConstraints :: BalancerConstraints } -> Contract Transaction balanceAndLock { transaction, usedUtxos, balancerConstraints } = do @@ -356,7 +359,7 @@ submitTxFromConstraints lookups constraints = do submitTxFromBuildPlan :: UtxoMap - -> BalanceTxConstraintsBuilder + -> BalancerConstraints -> Array TransactionBuilderStep -> Contract Transaction submitTxFromBuildPlan usedUtxos balancerConstraints plan = do diff --git a/src/Contract/Wallet/Key.purs b/src/Contract/Wallet/Key.purs index 3b962f04c..d46140213 100644 --- a/src/Contract/Wallet/Key.purs +++ b/src/Contract/Wallet/Key.purs @@ -20,7 +20,10 @@ import Ctl.Internal.Wallet.Spec import Prim.TypeError (class Warn, Text) publicKeyFromPrivateKey - :: Warn (Text "Deprecated: use Cardano.Types.PrivateKey.toPublicKey") + :: Warn + ( Text + "Deprecated: publicKeyFromPrivateKey. Use Cardano.Types.PrivateKey.toPublicKey" + ) => PrivateKey -> PublicKey publicKeyFromPrivateKey = PrivateKey.toPublicKey diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 8694c6708..38173545b 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -535,7 +535,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1" + , version = "70d219d6463466458fd381b55d84f458dcaee94a" } , cardano-transaction-lib = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 369921ee0..bf447e886 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1"; + version = "70d219d6463466458fd381b55d84f458dcaee94a"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; - rev = "c93cfaaa08643632021fb8c6dcc4d0b8130250d1"; - sha256 = "14hflxhl5g8yv43k4i7xh6lx5cf3vc0vzhy76jw2b4nrp83ks6l3"; + rev = "70d219d6463466458fd381b55d84f458dcaee94a"; + sha256 = "1148x79lxq2rr897cfspkrjspwyjgw5xm9b9188wvgf568703r3w"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -295,11 +295,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; + version = "dbc4608610b1e0d53e583b1402bf1f2765f7056f"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; - sha256 = "0s3j719mvwl1r149xgig4zs8y775v0zx31p15k2rxfi4df6xyw2r"; + rev = "dbc4608610b1e0d53e583b1402bf1f2765f7056f"; + sha256 = "0j0318hibrpsivgl62nbgkkf1kd70fnqfd39ganf8amlc8sm82s2"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/test/Plutip/Staking.purs b/test/Plutip/Staking.purs index d2b44f6b4..5c5093be8 100644 --- a/test/Plutip/Staking.purs +++ b/test/Plutip/Staking.purs @@ -7,28 +7,48 @@ import Prelude import Cardano.AsCbor (decodeCbor) import Cardano.Plutus.ApplyArgs (applyArgs) -import Cardano.Types (PoolParams(PoolParams), UnitInterval(UnitInterval)) -import Cardano.Types.BigInt as BigInt -import Cardano.Types.Credential - ( Credential(ScriptHashCredential, PubKeyHashCredential) +import Cardano.Transaction.Builder + ( CredentialWitness(NativeScriptCredential, PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(WithdrawRewards, IssueCertificate, Pay) + ) +import Cardano.Types + ( Certificate + ( StakeDelegation + , StakeRegistration + , StakeDeregistration + , PoolRetirement + , PoolRegistration + ) + , Credential(ScriptHashCredential, PubKeyHashCredential) + , OutputDatum(OutputDatum) + , PlutusData(Integer) + , PoolParams(PoolParams) + , TransactionOutput(TransactionOutput) + , UnitInterval(UnitInterval) + , _body + , _certs ) +import Cardano.Types.BigInt as BigInt import Cardano.Types.NativeScript as NativeScript -import Cardano.Types.PlutusData (PlutusData(Integer)) +import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript as PlutusScript -import Contract.Address (getNetworkId) +import Cardano.Types.PrivateKey as PrivateKey +import Cardano.Types.PublicKey as PublicKey +import Cardano.Types.RedeemerDatum as RedeemerDatum +import Cardano.Types.Transaction as Transaction +import Contract.Address (getNetworkId, mkAddress) import Contract.Backend.Ogmios (getPoolParameters) -import Contract.Hashing (publicKeyHash) import Contract.Log (logInfo') import Contract.Monad (Contract, liftedM) import Contract.Numeric.BigNum (fromInt, toBigInt) as BigNum -import Contract.PlutusData (unitDatum, unitRedeemer) import Contract.Prelude (liftM) import Contract.Prim.ByteArray (hexToByteArray) -import Contract.ScriptLookups as Lookups import Contract.Scripts (NativeScript(ScriptPubkey, ScriptAny)) import Contract.Staking ( getPoolIds , getPubKeyHashDelegationsAndRewards + , getStakeCredentialDelegationsAndRewards , getValidatorHashDelegationsAndRewards ) import Contract.Test.Mote (TestPlanM, interpretWithConfig) @@ -39,35 +59,18 @@ import Contract.Transaction ( Epoch(Epoch) , PoolPubKeyHash(PoolPubKeyHash) , balanceTx + , buildTx , mkPoolPubKeyHash , signTransaction ) -import Contract.TxConstraints - ( DatumPresence(DatumWitness) - , mustDelegateStakeNativeScript - , mustDelegateStakePlutusScript - , mustDelegateStakePubKey - , mustDeregisterStakeNativeScript - , mustDeregisterStakePlutusScript - , mustDeregisterStakePubKey - , mustPayToNativeScriptAddress - , mustPayToScriptAddress - , mustRegisterPool - , mustRegisterStakePubKey - , mustRegisterStakeScript - , mustRetirePool - , mustWithdrawStakeNativeScript - , mustWithdrawStakePlutusScript - , mustWithdrawStakePubKey - ) -import Contract.UnbalancedTx (mkUnbalancedTx) import Contract.Value (lovelaceValueOf) import Contract.Wallet ( ownPaymentPubKeyHashes , ownStakePubKeyHashes , withKeyWallet ) -import Contract.Wallet.Key (getPrivateStakeKey, publicKeyFromPrivateKey) +import Contract.Wallet.Key (getPrivateStakeKey) +import Control.Bind (bindFlipped) import Ctl.Examples.AlwaysSucceeds (alwaysSucceedsScript) import Ctl.Examples.Helpers (submitAndLog) import Ctl.Examples.IncludeDatum (only42Script) @@ -75,11 +78,12 @@ import Data.Array (head, (!!)) import Data.Array as Array import Data.Either (hush) import Data.Foldable (for_) +import Data.Lens ((.~)) +import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing)) import Data.Newtype (unwrap, wrap) import Data.Posix.Signal (Signal(SIGINT)) import Data.Time.Duration (Seconds(Seconds)) -import Data.Tuple (Tuple(Tuple)) import Data.Tuple.Nested ((/\)) import Data.UInt as UInt import Effect (Effect) @@ -104,7 +108,7 @@ main :: Effect Unit main = interruptOnSignal SIGINT =<< launchAff do flip cancelWith (effectCanceler (exitCode 1)) do interpretWithConfig - defaultConfig { timeout = Just $ Milliseconds 450_000.0, exit = true } + defaultConfig { timeout = Just $ Milliseconds 90_000.0, exit = true } suite suite :: TestPlanM (Aff Unit) Unit @@ -137,38 +141,32 @@ suite = do , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution $ flip withKeyWallet do - alicePkh /\ aliceStakePkh <- do - Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) - <*> - liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeyHashes) + aliceStakePkh <- liftedM "Failed to get Stake PKH" + (join <<< head <$> ownStakePubKeyHashes) -- Register do let - constraints = mustRegisterStakePubKey aliceStakePkh - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh + transaction = Transaction.empty + # _body <<< _certs .~ + [ StakeRegistration $ wrap $ PubKeyHashCredential $ unwrap + aliceStakePkh + ] - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + balanceTx transaction Map.empty mempty >>= signTransaction >>= + submitAndLog -- Deregister stake key do - let - constraints = mustDeregisterStakePubKey aliceStakePkh - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh + tx <- buildTx + [ IssueCertificate + ( StakeDeregistration $ wrap $ PubKeyHashCredential $ unwrap + aliceStakePkh + ) + Nothing + ] - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog test "PlutusScript" do let @@ -177,12 +175,6 @@ suite = do , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution $ flip withKeyWallet do - alicePkh /\ aliceStakePkh <- do - Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) - <*> - liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeyHashes) validator1 <- alwaysSucceedsScript validator2 <- do only42 <- only42Script @@ -195,33 +187,39 @@ suite = do -- Register do let - constraints = mustRegisterStakeScript validatorHash1 - <> mustRegisterStakeScript validatorHash2 - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh + tx = + Transaction.empty + # _body <<< _certs .~ + [ StakeRegistration $ wrap $ ScriptHashCredential + validatorHash1 + , StakeRegistration $ wrap $ ScriptHashCredential + validatorHash2 + ] - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Deregister stake key do let - constraints = - mustDeregisterStakePlutusScript validator1 - unitRedeemer - <> mustDeregisterStakePlutusScript validator2 - unitRedeemer - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh + plan = + [ IssueCertificate + ( StakeDeregistration $ wrap $ ScriptHashCredential $ + PlutusScript.hash validator1 + ) + $ Just + $ PlutusScriptCredential (ScriptValue validator1) + RedeemerDatum.unit + , IssueCertificate + ( StakeDeregistration $ wrap $ ScriptHashCredential $ + PlutusScript.hash validator2 + ) + $ Just + $ PlutusScriptCredential (ScriptValue validator2) + RedeemerDatum.unit + ] - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + tx <- buildTx plan + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog test "NativeScript" do let @@ -230,12 +228,8 @@ suite = do , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution $ flip withKeyWallet do - alicePkh /\ aliceStakePkh <- do - Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) - <*> - liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeyHashes) + alicePkh <- liftedM "Failed to get PKH" + (head <$> ownPaymentPubKeyHashes) let nativeScript = ScriptAny [ ScriptPubkey $ unwrap alicePkh ] @@ -244,28 +238,29 @@ suite = do -- Register do let - constraints = mustRegisterStakeScript stakeValidatorHash + tx = + Transaction.empty + # _body <<< _certs .~ + [ StakeRegistration $ wrap $ ScriptHashCredential + stakeValidatorHash + ] - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Deregister stake key do let - constraints = mustDeregisterStakeNativeScript nativeScript - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh + credential = wrap $ ScriptHashCredential $ NativeScript.hash + nativeScript + plan = + [ IssueCertificate (StakeDeregistration credential) + $ Just + $ NativeScriptCredential + $ ScriptValue nativeScript + ] - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + tx <- buildTx plan + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog test "Pool registration & retirement" do let @@ -274,31 +269,26 @@ suite = do , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution \alice -> withKeyWallet alice do - alicePkh /\ aliceStakePkh <- Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) - <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeyHashes) + aliceStakePkh <- liftedM "Failed to get Stake PKH" + (join <<< head <$> ownStakePubKeyHashes) -- Register stake key do let - constraints = mustRegisterStakePubKey aliceStakePkh - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh + credential = wrap $ PubKeyHashCredential $ unwrap aliceStakePkh - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + plan = + [ IssueCertificate (StakeRegistration credential) Nothing ] + tx <- buildTx plan + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog kwMStakeKey <- liftAff $ getPrivateStakeKey alice privateStakeKey <- liftM (error "Failed to get private stake key") kwMStakeKey networkId <- getNetworkId let - poolOperator = PoolPubKeyHash $ publicKeyHash $ - publicKeyFromPrivateKey (unwrap privateStakeKey) + poolOperator = PoolPubKeyHash $ PublicKey.hash $ + PrivateKey.toPublicKey (unwrap privateStakeKey) -- Register pool do @@ -324,23 +314,19 @@ suite = do } , rewardAccount , poolOwners: - [ publicKeyHash $ - publicKeyFromPrivateKey + [ PublicKey.hash $ + PrivateKey.toPublicKey (unwrap privateStakeKey) ] , relays: [] , poolMetadata: Nothing } - constraints = mustRegisterPool poolParams + tx = + Transaction.empty # _body <<< _certs .~ + [ PoolRegistration poolParams ] - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- List pools: the pool must appear in the list do @@ -359,15 +345,12 @@ suite = do -- Retire pool do let - constraints = mustRetirePool poolOperator retirementEpoch - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + tx = + Transaction.empty # _body <<< _certs .~ + [ PoolRetirement + { poolKeyHash: poolOperator, epoch: retirementEpoch } + ] + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog let waitEpoch :: Epoch -> Contract Epoch @@ -395,43 +378,40 @@ suite = do ] runPlutipContract config distribution \alice -> withKeyWallet alice do - alicePkh /\ aliceStakePkh <- Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) - <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeyHashes) validator <- alwaysSucceedsScript let validatorHash = PlutusScript.hash validator -- Lock funds on the stake script do + address <- mkAddress (wrap $ ScriptHashCredential validatorHash) + (Just $ wrap $ ScriptHashCredential $ validatorHash) let - constraints = - mustPayToScriptAddress validatorHash - (ScriptHashCredential validatorHash) - unitDatum - DatumWitness - $ lovelaceValueOf - $ BigNum.fromInt 1_000_000_000 - - lookups :: Lookups.ScriptLookups - lookups = mempty - - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= + plan = + [ Pay $ TransactionOutput + { address + , datum: Just $ OutputDatum PlutusData.unit + , amount: lovelaceValueOf + $ BigNum.fromInt 1_000_000_000 + , scriptRef: Nothing + } + ] + tx <- buildTx plan + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Register stake script do let - constraints = - mustRegisterStakeScript validatorHash - - lookups :: Lookups.ScriptLookups - lookups = mempty - - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= + credential = wrap $ ScriptHashCredential validatorHash + tx <- buildTx + [ IssueCertificate (StakeRegistration credential) + $ Just + $ PlutusScriptCredential + (ScriptValue validator) + RedeemerDatum.unit + ] + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Select a pool @@ -440,15 +420,17 @@ suite = do -- Delegate do let - constraints = - mustDelegateStakePlutusScript validator unitRedeemer poolId - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= + credential = wrap $ ScriptHashCredential $ PlutusScript.hash + validator + plan = + [ IssueCertificate (StakeDeregistration credential) + $ Just + $ PlutusScriptCredential + (ScriptValue validator) + RedeemerDatum.unit + ] + tx <- buildTx plan + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Wait until rewards @@ -472,15 +454,22 @@ suite = do -- Withdraw do let - constraints = - mustWithdrawStakePlutusScript validator unitRedeemer - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= + credential = wrap $ ScriptHashCredential $ PlutusScript.hash + validator + + rewardsAmount <- liftedM "Unable to get rewards" $ + getStakeCredentialDelegationsAndRewards credential <#> + bindFlipped _.rewards + let + plan = + [ WithdrawRewards credential rewardsAmount + $ Just + ( PlutusScriptCredential (ScriptValue validator) + RedeemerDatum.unit + ) + ] + tx <- buildTx plan + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Check rewards. @@ -507,47 +496,46 @@ suite = do , BigNum.fromInt 2_000_000_000 ] runPlutipContract config distribution \(alice /\ bob) -> do - bobPkh /\ bobStakePkh <- withKeyWallet bob do - Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) - <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeyHashes) + bobStakePkh <- withKeyWallet bob do + liftedM "Failed to get Stake PKH" + (join <<< head <$> ownStakePubKeyHashes) let nativeScript = ScriptAny [ ScriptPubkey $ unwrap bobStakePkh ] scriptHash = NativeScript.hash nativeScript + credential = wrap $ ScriptHashCredential $ NativeScript.hash + nativeScript -- Alice withKeyWallet alice do -- She locks funds on the stake script (no need for her to validate -- the script in order to do that) do + address <- mkAddress (wrap $ ScriptHashCredential scriptHash) + (Just $ wrap $ ScriptHashCredential scriptHash) let - constraints = - mustPayToNativeScriptAddress - scriptHash - (ScriptHashCredential scriptHash) - $ lovelaceValueOf - $ BigNum.fromInt 1_000_000_000 - - lookups :: Lookups.ScriptLookups - lookups = mempty - - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= + plan = + [ Pay $ TransactionOutput + { address + , datum: Just $ OutputDatum PlutusData.unit + , amount: lovelaceValueOf + $ BigNum.fromInt 1_000_000_000 + , scriptRef: Nothing + } + ] + tx <- buildTx plan + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Alice registers stake script (again, no need to validate it) do - let - constraints = - mustRegisterStakeScript scriptHash - - lookups :: Lookups.ScriptLookups - lookups = mempty - - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= + tx <- buildTx + [ IssueCertificate (StakeRegistration credential) + $ Just + $ NativeScriptCredential + $ ScriptValue nativeScript + ] + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Bob performs operations with the stake script that require his @@ -559,16 +547,19 @@ suite = do -- Delegate do - let - constraints = - mustDelegateStakeNativeScript nativeScript poolId - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash bobPkh <> - Lookups.ownStakePubKeyHash bobStakePkh - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= + tx <- buildTx + [ IssueCertificate + ( StakeDelegation + ( wrap $ ScriptHashCredential $ NativeScript.hash + nativeScript + ) + poolId + ) + $ Just + $ NativeScriptCredential + $ ScriptValue nativeScript + ] + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Wait until rewards @@ -591,16 +582,16 @@ suite = do -- Withdraw do + rewardsAmount <- liftedM "Unable to get rewards" $ + getStakeCredentialDelegationsAndRewards credential <#> + bindFlipped _.rewards let - constraints = - mustWithdrawStakeNativeScript nativeScript - - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash bobPkh <> - Lookups.ownStakePubKeyHash bobStakePkh - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= + plan = + [ WithdrawRewards credential rewardsAmount + $ Just (NativeScriptCredential (ScriptValue nativeScript)) + ] + tx <- buildTx plan + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Check rewards. @@ -622,38 +613,35 @@ suite = do ] runPlutipContract config distribution \alice -> withKeyWallet alice do - alicePkh /\ aliceStakePkh <- Tuple - <$> liftedM "Failed to get PKH" (head <$> ownPaymentPubKeyHashes) - <*> liftedM "Failed to get Stake PKH" - (join <<< head <$> ownStakePubKeyHashes) + aliceStakePkh <- liftedM "Failed to get Stake PKH" + (join <<< head <$> ownStakePubKeyHashes) -- Register stake key do let - constraints = mustRegisterStakePubKey aliceStakePkh + tx = Transaction.empty + # _body <<< _certs .~ + [ StakeRegistration $ wrap $ PubKeyHashCredential $ unwrap $ + aliceStakePkh + ] - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Select a pool ID poolId <- selectPoolId -- Delegate do - let - constraints = - mustDelegateStakePubKey aliceStakePkh poolId + tx <- buildTx + [ IssueCertificate + ( StakeDelegation + (wrap $ PubKeyHashCredential $ unwrap aliceStakePkh) + poolId + ) + Nothing + ] - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Wait until rewards let @@ -679,15 +667,16 @@ suite = do -- Withdraw do let - constraints = - mustWithdrawStakePubKey aliceStakePkh + credential = wrap $ PubKeyHashCredential $ unwrap aliceStakePkh - lookups :: Lookups.ScriptLookups - lookups = - Lookups.ownPaymentPubKeyHash alicePkh <> - Lookups.ownStakePubKeyHash aliceStakePkh - ubTx /\ usedUtxos <- mkUnbalancedTx lookups constraints - balanceTx ubTx usedUtxos mempty >>= signTransaction >>= submitAndLog + rewardsAmount <- liftedM "Unable to get rewards" $ + getStakeCredentialDelegationsAndRewards credential <#> + bindFlipped _.rewards + let + plan = + [ WithdrawRewards credential rewardsAmount Nothing ] + tx <- buildTx plan + balanceTx tx Map.empty mempty >>= signTransaction >>= submitAndLog -- Check rewards. -- Not going to deregister here, because the rewards are added too @@ -711,4 +700,5 @@ suite = do { slotLength = Seconds 0.05 , epochSize = Just $ UInt.fromInt 80 } + -- , suppressLogs = false } From 7bd7a323107d55b66fe2116b75419b43351e13ad Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 23 Jul 2024 21:41:46 +0400 Subject: [PATCH 317/373] Update CHANGELOG --- CHANGELOG.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 484bf7de6..dee2bb3dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,7 +72,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Deprecated -- **IMPORTANT** Constraints interface (`Contract.TxConstraints`) has been deprecated and will be removed in a future version. Please use [`purescript-cardano-transaction-builder`](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder) for any new contracts. +> [!WARNING] +> **IMPORTANT** Constraints interface (`Contract.TxConstraints` & `Contract.ScriptLookups`) has been deprecated and will be removed in a future version. Please use [`purescript-cardano-transaction-builder`](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder) (via `Contract.Transaction.buildTx`) for new contracts. The motivation for deprecation is that it was unnecessarily complex, not flexible enough, and existed only because of the desire to provide code-level compatibility with PAB. See [this Catalyst proposal](https://cardano.ideascale.com/c/idea/101478) for more info. ### Added @@ -86,8 +87,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - **IMPORTANT** `UnbalancedTx` type has been removed. This change was motivated by the fact that `UnbalancedTx` existed simply to tie together transaction building and balancing by keeping extra context. Now that transaction builder is placed in [its own package](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder), there is no more need in `UnbalancedTx`, that is not used with the new builder. - **IMPORTANT** `Contract.Scripts.applyArgs` - use `Cardano.Plutus.ApplyArgs.applyArgs` from [purescript-uplc-apply-args](https://github.com/mlabs-haskell/purescript-uplc-apply-args) - **IMPORTANT** `balanceTxWithConstraints` - use `balanceTx` -- `Contract.Transaction.submitTxFromConstraintsReturningFee` - too niche case to be allowed in the public API. -- `Contract.Transaction` lens values. +- `Contract.Transaction.submitTxFromConstraintsReturningFee` - too niche use case to be allowed in the public API. +- `Contract.Transaction` lens values. Use lenses from `Cardano.Types.Transaction` ### Changed From 25a27030a513813817462dccbb0adc02d7cc3c3f Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 23 Jul 2024 21:46:34 +0400 Subject: [PATCH 318/373] Fix CI --- templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 8a0100234..f4003614d 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1713303538, - "narHash": "sha256-WXDfjWskup7FLOGG0T/Y5RyP9Ccvvp5IyIHyXVM4cmg=", + "lastModified": 1721324763, + "narHash": "sha256-QgtUNWK0KuSsemk0h60Dp83g5nzLCkPfjvrmFSEKA0g=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "423e27b3f56b1a66db8d3126c22cea9bda7e50da", + "rev": "dbc4608610b1e0d53e583b1402bf1f2765f7056f", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "423e27b3f56b1a66db8d3126c22cea9bda7e50da", + "rev": "dbc4608610b1e0d53e583b1402bf1f2765f7056f", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 6b29765ca..93b1b8488 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "423e27b3f56b1a66db8d3126c22cea9bda7e50da"; + rev = "dbc4608610b1e0d53e583b1402bf1f2765f7056f"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; From ddbd601e882276958fe260b8c492b5c7f489f174 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 24 Jul 2024 00:10:40 +0400 Subject: [PATCH 319/373] Update dependency versions --- doc/getting-started.md | 2 +- packages.dhall | 4 ++-- spago-packages.nix | 4 ++-- templates/ctl-scaffold/packages.dhall | 4 ++-- templates/ctl-scaffold/spago-packages.nix | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/getting-started.md b/doc/getting-started.md index 41b1de809..280e5a724 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -51,7 +51,7 @@ You can learn more about using CTL as a dependency [here](./ctl-as-dependency.md ### Other prerequisites -You will also need to become familiar with [CTL's runtime](./runtime.md) as its runtime services are required for executing virtually all contracts. +You will also need to become familiar with [CTL's runtime](./runtime.md) as its runtime services are required for executing virtually all contracts. If you want to avoid manual backend setup, use [blockfrost.io](./blockfrost.md). ## Importing CTL modules diff --git a/packages.dhall b/packages.dhall index 23decc619..cd898c6ef 100644 --- a/packages.dhall +++ b/packages.dhall @@ -435,7 +435,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "40d9468a4712ad2bf57ebede19fae92208f082a0" + , version = "v1.0.2" } , cardano-message-signing = { dependencies = @@ -516,7 +516,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "70d219d6463466458fd381b55d84f458dcaee94a" + , version = "v1.0.0" } , mote-testplan = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 9ecb54012..28853d177 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -283,7 +283,7 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "70d219d6463466458fd381b55d84f458dcaee94a"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; rev = "70d219d6463466458fd381b55d84f458dcaee94a"; @@ -295,7 +295,7 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "40d9468a4712ad2bf57ebede19fae92208f082a0"; + version = "v1.0.2"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; rev = "40d9468a4712ad2bf57ebede19fae92208f082a0"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 38173545b..195b84151 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -435,7 +435,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "40d9468a4712ad2bf57ebede19fae92208f082a0" + , version = "v1.0.2" } , cardano-message-signing = { dependencies = @@ -535,7 +535,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "70d219d6463466458fd381b55d84f458dcaee94a" + , version = "v1.0.0" } , cardano-transaction-lib = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index bf447e886..6a363d2f3 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -283,7 +283,7 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "70d219d6463466458fd381b55d84f458dcaee94a"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; rev = "70d219d6463466458fd381b55d84f458dcaee94a"; @@ -307,7 +307,7 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "40d9468a4712ad2bf57ebede19fae92208f082a0"; + version = "v1.0.2"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; rev = "40d9468a4712ad2bf57ebede19fae92208f082a0"; From 372a3c774ac811a4e344ac5a5a8f014b250d0874 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 24 Jul 2024 14:56:55 +0400 Subject: [PATCH 320/373] Prepare v9.0.0 --- CHANGELOG.md | 16 +++++++++------- templates/ctl-scaffold/flake.lock | 8 ++++---- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dee2bb3dc..de51e725b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -- [[Unreleased]](#unreleased) +- [[v9.0.0]](#v900) - [Deprecated](#deprecated) - [Added](#added) - [Removed](#removed) @@ -68,7 +68,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -## [Unreleased] +## [v9.0.0] ### Deprecated @@ -78,23 +78,25 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Added - `Contract.Transaction.buildTx :: Array TransactionBuilderStep -> Contract Transaction` that provides a `Contract`-based interface for the [new transaction builder](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder). -- `submitTxFromBuildPlan :: UtxoMap -> BalanceTxConstraintsBuilder -> Array TransactionBuilderStep -> Contract Transaction` - a convenience function that executes the whole transaction creation pipeline starting from a build plan for [the new transaction builder](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder). +- `Contract.Transaction.submitTxFromBuildPlan :: UtxoMap -> BalanceTxConstraintsBuilder -> Array TransactionBuilderStep -> Contract Transaction` - a convenience function that executes the whole transaction creation pipeline starting from a build plan for [the new transaction builder](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder). - `Contract.ClientError.pprintClientError` to provide readable error reports. - `Contract.Staking.getStakeCredentialDelegationsAndRewards` utility function ### Removed - **IMPORTANT** `UnbalancedTx` type has been removed. This change was motivated by the fact that `UnbalancedTx` existed simply to tie together transaction building and balancing by keeping extra context. Now that transaction builder is placed in [its own package](https://github.com/mlabs-haskell/purescript-cardano-transaction-builder), there is no more need in `UnbalancedTx`, that is not used with the new builder. -- **IMPORTANT** `Contract.Scripts.applyArgs` - use `Cardano.Plutus.ApplyArgs.applyArgs` from [purescript-uplc-apply-args](https://github.com/mlabs-haskell/purescript-uplc-apply-args) -- **IMPORTANT** `balanceTxWithConstraints` - use `balanceTx` +- **IMPORTANT** `balanceTxWithConstraints`, `balanceTxWithConstraintsE` - use `balanceTx` +- **IMPORTANT** `balanceTxsWithConstraints` - use `balanceTxs` +- **IMPORTANT** `withBalancedTxWithConstraints`, `withBalancedTxWithConstraints` - use `withBalancedTxs` +- **IMPORTANT** `Contract.Scripts.applyArgs` - use `Cardano.Plutus.ApplyArgs.applyArgs` from [purescript-uplc-apply-args](https://github.com/mlabs-haskell/purescript-uplc-apply-args). - `Contract.Transaction.submitTxFromConstraintsReturningFee` - too niche use case to be allowed in the public API. - `Contract.Transaction` lens values. Use lenses from `Cardano.Types.Transaction` ### Changed -- `Contract.Transaction.mkUnbalancedTx` now returns a tuple: a transaction and its used UTxOs. +- `Contract.Transaction.mkUnbalancedTx` now returns a tuple: a transaction and the UTxOs it used. - `Contract.Transaction.balanceTx` accepts two extra argument: a list of used UTxOs (set to `Data.Map.empty` if none of them are coming from the outside of the wallet) and balancer constraints (set to `mempty` if not needed) -- Default synchronization parameters: all [wallet <-> query layer synchronization primitives](./doc/query-layers.md) are now off by default. The reason is that the runtime overhead made the users unhappy and it was not worth it for most of the users. If your dApp sends transactions in quick succession, consider enabling the synchronization again. +- Default synchronization parameters: all [wallet <-> query layer synchronization primitives](./doc/query-layers.md) are now off by default. The reason is that the runtime overhead made the users unhappy and it was not worth it for most of the users. If your dApp sends transactions in quick succession, consider enabling the synchronization again by using `softSynchronizationParams` (old behavior) or `strictSynchronizationParams`. - `BalanceTxConstraintsBuilder` has been renamed to `BalancerConstraints`. It is still available under the old name as a type synonym. ### Fixed diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index f4003614d..64625f762 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1686,17 +1686,17 @@ "plutip": "plutip" }, "locked": { - "lastModified": 1721324763, - "narHash": "sha256-QgtUNWK0KuSsemk0h60Dp83g5nzLCkPfjvrmFSEKA0g=", + "lastModified": 1721765440, + "narHash": "sha256-H54m6RQRxb83z1IEp1y3krmQk7+SspymnSNaCKQm8LU=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "dbc4608610b1e0d53e583b1402bf1f2765f7056f", + "rev": "ddbd601e882276958fe260b8c492b5c7f489f174", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "dbc4608610b1e0d53e583b1402bf1f2765f7056f", + "rev": "ddbd601e882276958fe260b8c492b5c7f489f174", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 93b1b8488..e9b27874b 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "dbc4608610b1e0d53e583b1402bf1f2765f7056f"; + rev = "ddbd601e882276958fe260b8c492b5c7f489f174"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 195b84151..06e2d6e6d 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -642,7 +642,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "dbc4608610b1e0d53e583b1402bf1f2765f7056f" + , version = "ddbd601e882276958fe260b8c492b5c7f489f174" } } From c02737564866f4f5a1d82ddf0e59eea6241c91a1 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 24 Jul 2024 14:59:01 +0400 Subject: [PATCH 321/373] Fix CI --- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 6a363d2f3..7d7a8b3d1 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -295,11 +295,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "dbc4608610b1e0d53e583b1402bf1f2765f7056f"; + version = "ddbd601e882276958fe260b8c492b5c7f489f174"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "dbc4608610b1e0d53e583b1402bf1f2765f7056f"; - sha256 = "0j0318hibrpsivgl62nbgkkf1kd70fnqfd39ganf8amlc8sm82s2"; + rev = "ddbd601e882276958fe260b8c492b5c7f489f174"; + sha256 = "1dgh4sj0hni3knk9rcljpy9r1fcjnxfaf12jrwvvzi8i2kljd7hz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 0547cf78a46ce1063825e2168135fc7f7b4561fc Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 24 Jul 2024 13:46:32 +0200 Subject: [PATCH 322/373] Provide DRep private key as part of KeyWallet init --- .../KeyWallet/Internal/Cip30Contract.purs | 1 + .../KeyWallet/Internal/Pkh2PkhContract.purs | 1 + packages.dhall | 6 ++--- src/Contract/Test/Blockfrost.purs | 1 + src/Contract/Wallet.purs | 6 ++++- src/Contract/Wallet/KeyFile.purs | 4 ++- src/Internal/Test/E2E/Route.purs | 2 +- src/Internal/Test/KeyDir.purs | 2 +- src/Internal/Test/UtxoDistribution.purs | 6 ++--- src/Internal/Testnet/Contract.purs | 2 +- src/Internal/Wallet.purs | 12 ++++++--- src/Internal/Wallet/Cip30Mock.purs | 13 ++++++--- src/Internal/Wallet/Spec.purs | 27 +++++++++++++++---- test/Blockfrost/GenerateFixtures/Helpers.purs | 1 + .../GenerateFixtures/NativeScript.purs | 2 +- .../GenerateFixtures/ScriptInfo.purs | 2 +- test/PrivateKey.purs | 3 ++- test/Utils/DrainWallets.purs | 3 ++- 18 files changed, 65 insertions(+), 29 deletions(-) diff --git a/examples/KeyWallet/Internal/Cip30Contract.purs b/examples/KeyWallet/Internal/Cip30Contract.purs index 240b15eb6..e10bb7d15 100644 --- a/examples/KeyWallet/Internal/Cip30Contract.purs +++ b/examples/KeyWallet/Internal/Cip30Contract.purs @@ -43,6 +43,7 @@ runKeyWalletContract_ contract = { walletSpec = Just $ UseKeys (PrivatePaymentKeyValue $ wrap privateKey) Nothing + Nothing , customLogger = Just printLog } diff --git a/examples/KeyWallet/Internal/Pkh2PkhContract.purs b/examples/KeyWallet/Internal/Pkh2PkhContract.purs index 2ac25d530..390258c92 100644 --- a/examples/KeyWallet/Internal/Pkh2PkhContract.purs +++ b/examples/KeyWallet/Internal/Pkh2PkhContract.purs @@ -48,6 +48,7 @@ runKeyWalletContract_ contract = { walletSpec = Just $ UseKeys (PrivatePaymentKeyValue $ wrap privateKey) Nothing + Nothing , customLogger = Just printLog } diff --git a/packages.dhall b/packages.dhall index 9382ec30d..5460b9655 100644 --- a/packages.dhall +++ b/packages.dhall @@ -292,12 +292,10 @@ let additions = , "maybe" , "newtype" , "prelude" - , "profunctor-lenses" - , "typelevel-prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet" - , version = "v1.0.0" + , version = "a43c410a8430b552e42e88ab542eb6a43d09a633" } , uplc-apply-args = { dependencies = @@ -398,7 +396,7 @@ let additions = , "uint" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" - , version = "v1.0.0" + , version = "cc1073ddf8bce72407ef6671e3decb59f422e304" } , mote-testplan = { dependencies = diff --git a/src/Contract/Test/Blockfrost.purs b/src/Contract/Test/Blockfrost.purs index b446c5675..ca11d7985 100644 --- a/src/Contract/Test/Blockfrost.purs +++ b/src/Contract/Test/Blockfrost.purs @@ -102,6 +102,7 @@ runContractTestsWithBlockfrost { backendParams = BlockfrostBackendParams backendParams mbCtlBackendParams , walletSpec = Just $ UseKeys privateKeySources.payment privateKeySources.stake + Nothing } -- | Reads environment variables containing Blockfrost test suite configuration diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 942446571..54949d5a1 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -24,6 +24,7 @@ import Cardano.Wallet.Key , PrivateStakeKey(PrivateStakeKey) , privateKeysToKeyWallet ) as X +import Cardano.Wallet.Key (PrivateDrepKey) import Contract.Config (PrivatePaymentKey, PrivateStakeKey) import Contract.Log (logTrace') import Contract.Monad (Contract) @@ -122,7 +123,10 @@ withKeyWalletFromMnemonic mnemonic derivationPath stakeKeyPresence contract = do addNote = append "withKeyWalletFromMnemonic: " mkKeyWalletFromPrivateKeys - :: PrivatePaymentKey -> Maybe PrivateStakeKey -> KeyWallet + :: PrivatePaymentKey + -> Maybe PrivateStakeKey + -> Maybe PrivateDrepKey + -> KeyWallet mkKeyWalletFromPrivateKeys payment mbStake = privateKeysToKeyWallet payment mbStake diff --git a/src/Contract/Wallet/KeyFile.purs b/src/Contract/Wallet/KeyFile.purs index cb139e004..4ce0638d7 100644 --- a/src/Contract/Wallet/KeyFile.purs +++ b/src/Contract/Wallet/KeyFile.purs @@ -19,7 +19,7 @@ import Ctl.Internal.Wallet.KeyFile ( privatePaymentKeyFromFile , privateStakeKeyFromFile ) -import Data.Maybe (Maybe) +import Data.Maybe (Maybe(Nothing)) import Data.Traversable (traverse) import Effect.Aff (Aff) import Node.Path (FilePath) @@ -37,3 +37,5 @@ mkKeyWalletFromFiles paymentKeyFile mbStakeKeyFile = privateKeysToKeyWallet <$> privatePaymentKeyFromFile paymentKeyFile <*> traverse privateStakeKeyFromFile mbStakeKeyFile + -- FIXME: allow to provide drep key + <*> pure Nothing diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index 3108a3dfb..92e322fbc 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -176,7 +176,7 @@ route configs tests = do do runContract configWithHooks $ withCip30Mock - (privateKeysToKeyWallet paymentKey stakeKey) + (privateKeysToKeyWallet paymentKey stakeKey Nothing) -- FIXME mock test where diff --git a/src/Internal/Test/KeyDir.purs b/src/Internal/Test/KeyDir.purs index 42ff140a8..986645d2e 100644 --- a/src/Internal/Test/KeyDir.purs +++ b/src/Internal/Test/KeyDir.purs @@ -278,7 +278,7 @@ restoreWallets backup = do ) $ privateStakeKeyFromTextEnvelope =<< decodeTextEnvelope stakeKeyEnvelope - pure $ Just $ privateKeysToKeyWallet paymentKey mbStakeKey + pure $ Just $ privateKeysToKeyWallet paymentKey mbStakeKey Nothing -- | Save wallets to files in the backup directory for private keys backupWallets :: FilePath -> ContractEnv -> Array KeyWallet -> Aff Unit diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index b6644938e..2b0b3d43d 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -106,7 +106,7 @@ instance UtxoDistribution InitialUTxOs KeyWallet where decodeWallets d p = decodeWalletsDefault d p decodeWallets' _ pks = Array.uncons pks <#> \{ head: key, tail } -> - (privateKeysToKeyWallet (PrivatePaymentKey key) Nothing) /\ tail + (privateKeysToKeyWallet (PrivatePaymentKey key) Nothing Nothing) /\ tail keyWallets _ wallet = [ wallet ] instance UtxoDistribution InitialUTxOsWithStakeKey KeyWallet where @@ -114,7 +114,7 @@ instance UtxoDistribution InitialUTxOsWithStakeKey KeyWallet where decodeWallets d p = decodeWalletsDefault d p decodeWallets' (InitialUTxOsWithStakeKey stake _) pks = Array.uncons pks <#> \{ head: key, tail } -> - privateKeysToKeyWallet (PrivatePaymentKey key) (Just stake) /\ + privateKeysToKeyWallet (PrivatePaymentKey key) (Just stake) Nothing /\ tail keyWallets _ wallet = [ wallet ] @@ -201,7 +201,7 @@ transferFundsFromEnterpriseToBase ourKey wallets = do -- Get all utxos and key hashes at all wallets containing a stake key walletsInfo <- foldM addStakeKeyWalletInfo mempty wallets unless (null walletsInfo) do - let ourWallet = mkKeyWalletFromPrivateKeys ourKey Nothing + let ourWallet = mkKeyWalletFromPrivateKeys ourKey Nothing Nothing ourAddr <- liftedM "Could not get our address" $ head <$> withKeyWallet ourWallet getWalletAddresses ourUtxos <- utxosAt ourAddr diff --git a/src/Internal/Testnet/Contract.purs b/src/Internal/Testnet/Contract.purs index 25f89c4ae..2f9c2a26b 100644 --- a/src/Internal/Testnet/Contract.purs +++ b/src/Internal/Testnet/Contract.purs @@ -275,7 +275,7 @@ startTestnetContractEnv cfg distr cleanupRef = do traverse ( \location -> do paymentKey <- read872GenesisKey location - pure $ mkKeyWalletFromPrivateKeys paymentKey Nothing + pure $ mkKeyWalletFromPrivateKeys paymentKey Nothing Nothing ) (unwrap cluster).paths.genesisKeys diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 1916abc0e..168818516 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -21,6 +21,7 @@ import Prelude import Cardano.Wallet.Cip95 (enable) as Cip95 import Cardano.Wallet.Key ( KeyWallet + , PrivateDrepKey , PrivatePaymentKey , PrivateStakeKey , privateKeysToKeyWallet @@ -53,10 +54,13 @@ data WalletExtension | NuFiWallet | GenericCip30Wallet String -mkKeyWallet :: PrivatePaymentKey -> Maybe PrivateStakeKey -> Wallet -mkKeyWallet payKey mbStakeKey = KeyWallet $ privateKeysToKeyWallet - payKey - mbStakeKey +mkKeyWallet + :: PrivatePaymentKey + -> Maybe PrivateStakeKey + -> Maybe PrivateDrepKey + -> Wallet +mkKeyWallet payKey mbStakeKey mbDrepKey = + KeyWallet $ privateKeysToKeyWallet payKey mbStakeKey mbDrepKey foreign import _isWalletAvailable :: String -> Effect Boolean diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 95d5b9d50..f1d85b5a5 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -25,6 +25,7 @@ import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutput import Cardano.Wallet.Cip30Mock (Cip30Mock, injectCip30Mock) import Cardano.Wallet.Key ( KeyWallet(KeyWallet) + , PrivateDrepKey , PrivatePaymentKey , PrivateStakeKey , privateKeysToKeyWallet @@ -95,7 +96,8 @@ withCip30Mock withCip30Mock (KeyWallet keyWallet) mock contract = do kwPaymentKey <- liftAff keyWallet.paymentKey kwMStakeKey <- liftAff keyWallet.stakeKey - cip30Mock <- mkCip30Mock kwPaymentKey kwMStakeKey + kwMDrepKey <- liftAff keyWallet.drepKey + cip30Mock <- mkCip30Mock kwPaymentKey kwMStakeKey kwMDrepKey deleteMock <- liftEffect $ injectCip30Mock mockString cip30Mock wallet <- liftAff mkWalletAff' res <- try $ local _ { wallet = Just wallet } contract @@ -121,8 +123,11 @@ withCip30Mock (KeyWallet keyWallet) mock contract = do MockGenericCip30 name -> name mkCip30Mock - :: PrivatePaymentKey -> Maybe PrivateStakeKey -> Contract Cip30Mock -mkCip30Mock pKey mSKey = do + :: PrivatePaymentKey + -> Maybe PrivateStakeKey + -> Maybe PrivateDrepKey + -> Contract Cip30Mock +mkCip30Mock pKey mSKey mbDrepKey = do env <- ask queryHandle <- getQueryHandle let @@ -144,7 +149,7 @@ mkCip30Mock pKey mSKey = do liftMaybe (error "No UTxOs at address") <<< hush =<< do queryHandle.utxosAt ownAddress - keyWallet = privateKeysToKeyWallet pKey mSKey + keyWallet = privateKeysToKeyWallet pKey mSKey mbDrepKey addressHex <- liftAff $ (byteArrayToHex <<< unwrap <<< encodeCbor) <$> diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index 21f2b5bdd..2da2f7caf 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -14,6 +14,7 @@ module Ctl.Internal.Wallet.Spec , Cip1852DerivationPath , StakeKeyPresence(WithStakeKey, WithoutStakeKey) , MnemonicSource(MnemonicString, MnemonicFile) + , PrivateDrepKeySource(PrivateDrepKeyValue) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , mkWalletBySpec @@ -25,11 +26,13 @@ import Prelude import Cardano.Wallet.HD ( bip32ToPrivateKey , cip1852AccountFromMnemonic + , deriveDrepKey , derivePaymentKey , deriveStakeKey ) import Cardano.Wallet.Key ( KeyWallet + , PrivateDrepKey(PrivateDrepKey) , PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) , privateKeysToKeyWallet @@ -85,6 +88,13 @@ derive instance Generic PrivateStakeKeySource _ instance Show PrivateStakeKeySource where show = genericShow +data PrivateDrepKeySource = PrivateDrepKeyValue PrivateDrepKey + +derive instance Generic PrivateDrepKeySource _ + +instance Show PrivateDrepKeySource where + show = genericShow + data MnemonicSource = MnemonicString String | MnemonicFile FilePath @@ -104,6 +114,7 @@ instance Show StakeKeyPresence where -- | A data type to describe instructions on how to initialize a wallet. data WalletSpec = UseKeys PrivatePaymentKeySource (Maybe PrivateStakeKeySource) + (Maybe PrivateDrepKeySource) | UseMnemonic MnemonicSource Cip1852DerivationPath StakeKeyPresence | ConnectToNami | ConnectToGero @@ -128,7 +139,7 @@ type Cip1852DerivationPath = mkWalletBySpec :: WalletSpec -> Aff Wallet mkWalletBySpec = case _ of - UseKeys paymentKeySpec mbStakeKeySpec -> do + UseKeys paymentKeySpec mbStakeKeySpec mbDrepKeySpec -> do privatePaymentKey <- case paymentKeySpec of PrivatePaymentKeyFile filePath -> privatePaymentKeyFromFile filePath @@ -136,7 +147,9 @@ mkWalletBySpec = case _ of mbPrivateStakeKey <- for mbStakeKeySpec case _ of PrivateStakeKeyFile filePath -> privateStakeKeyFromFile filePath PrivateStakeKeyValue key -> pure key - pure $ mkKeyWallet privatePaymentKey mbPrivateStakeKey + mbDrepKey <- for mbDrepKeySpec case _ of + PrivateDrepKeyValue key -> pure key + pure $ mkKeyWallet privatePaymentKey mbPrivateStakeKey mbDrepKey UseMnemonic (MnemonicString mnemonic) derivationPath stakeKeyPresence -> do map KeyWallet $ liftEither $ lmap error $ mkKeyWalletFromMnemonic mnemonic derivationPath stakeKeyPresence @@ -165,10 +178,14 @@ mkKeyWalletFromMnemonic phrase { accountIndex, addressIndex } stakeKeyPresence = do account <- cip1852AccountFromMnemonic phrase accountIndex let - paymentKey = derivePaymentKey account addressIndex # bip32ToPrivateKey - mbStakeKeySpec = case stakeKeyPresence of + paymentKey = + PrivatePaymentKey $ bip32ToPrivateKey $ derivePaymentKey account + addressIndex + drepKey = Just $ PrivateDrepKey $ bip32ToPrivateKey $ deriveDrepKey + account + mbStakeKey = case stakeKeyPresence of WithStakeKey -> Just $ PrivateStakeKey $ deriveStakeKey account # bip32ToPrivateKey WithoutStakeKey -> Nothing - pure $ privateKeysToKeyWallet (PrivatePaymentKey paymentKey) mbStakeKeySpec + pure $ privateKeysToKeyWallet paymentKey mbStakeKey drepKey diff --git a/test/Blockfrost/GenerateFixtures/Helpers.purs b/test/Blockfrost/GenerateFixtures/Helpers.purs index 755e3e08a..3bc372455 100644 --- a/test/Blockfrost/GenerateFixtures/Helpers.purs +++ b/test/Blockfrost/GenerateFixtures/Helpers.purs @@ -59,6 +59,7 @@ contractParams = do } , logLevel = Info , walletSpec = Just $ UseKeys (PrivatePaymentKeyFile skeyFilepath) Nothing + Nothing } blockfrostConfigFromApiKey :: String -> Effect ServerConfig diff --git a/test/Blockfrost/GenerateFixtures/NativeScript.purs b/test/Blockfrost/GenerateFixtures/NativeScript.purs index 1d9667e5e..9ae633a6f 100644 --- a/test/Blockfrost/GenerateFixtures/NativeScript.purs +++ b/test/Blockfrost/GenerateFixtures/NativeScript.purs @@ -69,7 +69,7 @@ main = } , logLevel = Info , walletSpec = - Just $ UseKeys (PrivatePaymentKeyFile skeyFilepath) Nothing + Just $ UseKeys (PrivatePaymentKeyFile skeyFilepath) Nothing Nothing } generateFixtures :: Int -> Contract Unit diff --git a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs index 7df2a0b58..a9125ce81 100644 --- a/test/Blockfrost/GenerateFixtures/ScriptInfo.purs +++ b/test/Blockfrost/GenerateFixtures/ScriptInfo.purs @@ -72,7 +72,7 @@ main = } , logLevel = Info , walletSpec = - Just $ UseKeys (PrivatePaymentKeyFile skeyFilepath) Nothing + Just $ UseKeys (PrivatePaymentKeyFile skeyFilepath) Nothing Nothing } generateFixtures :: Contract Unit diff --git a/test/PrivateKey.purs b/test/PrivateKey.purs index ba463d1d6..a068bd0bb 100644 --- a/test/PrivateKey.purs +++ b/test/PrivateKey.purs @@ -31,7 +31,7 @@ import Data.Lens (_Just, (^?)) import Data.Lens.Index (ix) import Data.Lens.Iso.Newtype (unto) import Data.Lens.Record (prop) -import Data.Maybe (Maybe(Just), fromJust) +import Data.Maybe (Maybe(Just, Nothing), fromJust) import Data.Newtype (unwrap) import Effect.Aff (Aff) import Effect.Class (liftEffect) @@ -57,6 +57,7 @@ suite = do ( Just $ PrivateStakeKeyFile "fixtures/test/parsing/PrivateKey/stake.skey" ) + Nothing , suppressLogs = true } runContract cfg do diff --git a/test/Utils/DrainWallets.purs b/test/Utils/DrainWallets.purs index 6e61639c4..8765a5cd9 100644 --- a/test/Utils/DrainWallets.purs +++ b/test/Utils/DrainWallets.purs @@ -79,7 +79,7 @@ run privateKey walletsDir = runContract config do ( privateStakeKeyFromFile $ Path.concat [ walletsDir, walletFolder, "stake_signing_key" ] ) - pure $ privateKeysToKeyWallet payment mbStake + pure $ privateKeysToKeyWallet payment mbStake Nothing let merge r = @@ -135,6 +135,7 @@ run privateKey walletsDir = runContract config do { walletSpec = pure $ UseKeys (PrivatePaymentKeyFile privateKey) Nothing + Nothing , backendParams = mkCtlBackendParams { ogmiosConfig: defaultOgmiosWsConfig , kupoConfig: From d3033ff0b88eb03f4562ec51947a2848613ce42b Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 24 Jul 2024 13:51:33 +0200 Subject: [PATCH 323/373] Re-generate spago-packages.nix --- spago-packages.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spago-packages.nix b/spago-packages.nix index aa4aef445..2afa4837b 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -223,11 +223,11 @@ let "cardano-hd-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-hd-wallet"; - version = "v1.0.0"; + version = "cc1073ddf8bce72407ef6671e3decb59f422e304"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet"; - rev = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; - sha256 = "1kw3p58kf94cy89pbss2z5k12am49qj3jzp5szalyz7caqpxkmf7"; + rev = "cc1073ddf8bce72407ef6671e3decb59f422e304"; + sha256 = "0y51lp3x785yjjrr91rmpw1bhzjdfjb5fs27n1vlwihxjyfylxya"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -235,11 +235,11 @@ let "cardano-key-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-key-wallet"; - version = "v1.0.0"; + version = "a43c410a8430b552e42e88ab542eb6a43d09a633"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "55f176dbedddbd37297a3d1f90c756420159454e"; - sha256 = "1fr77kvgdvxqi0jhg98balrwpf7rlhwiyrf1v8z2112yyln2myj9"; + rev = "a43c410a8430b552e42e88ab542eb6a43d09a633"; + sha256 = "1laiaq8xpd0hdfrqw6yd4gr1jai6lybjqmc3m4dhz0xapn40hmx8"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 6a663d78c92468111cf20b5c58b7a8da8f1b48f6 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 24 Jul 2024 14:26:11 +0200 Subject: [PATCH 324/373] Add `ownDrepPubKey` and `ownDrepPubKeyHash` --- examples/Gov/RegisterDrep.purs | 4 ++-- spago.dhall | 1 - src/Contract/Wallet.purs | 3 ++- src/Internal/Contract/Wallet.purs | 30 +++++++++++++++++++++++++----- test/Testnet.purs | 2 ++ test/Testnet/Gov.purs | 27 +++++++++++++++++++++++++++ 6 files changed, 58 insertions(+), 9 deletions(-) create mode 100644 test/Testnet/Gov.purs diff --git a/examples/Gov/RegisterDrep.purs b/examples/Gov/RegisterDrep.purs index d62056794..8161f46ba 100644 --- a/examples/Gov/RegisterDrep.purs +++ b/examples/Gov/RegisterDrep.purs @@ -13,7 +13,7 @@ import Contract.Monad (Contract, launchAff_, runContract) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) import Contract.TxConstraints (TxConstraints) import Contract.TxConstraints (mustRegisterDrep) as Constraints -import Contract.Wallet (ownDrepKeyHash) +import Contract.Wallet (ownDrepPubKeyHash) main :: Effect Unit main = example testnetNamiConfig @@ -24,7 +24,7 @@ example = launchAff_ <<< flip runContract contract contract :: Contract Unit contract = do logInfo' "Running Examples.Gov.RegisterDrep" - drepCred <- PubKeyHashCredential <$> ownDrepKeyHash + drepCred <- PubKeyHashCredential <$> ownDrepPubKeyHash let constraints :: TxConstraints constraints = Constraints.mustRegisterDrep drepCred Nothing diff --git a/spago.dhall b/spago.dhall index cc2b0892f..1c091ae85 100644 --- a/spago.dhall +++ b/spago.dhall @@ -100,7 +100,6 @@ You can edit this file as you like. , "toppokki" , "transformers" , "tuples" - , "typelevel" , "typelevel-prelude" , "uint" , "unfoldable" diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 54949d5a1..0d5f8476c 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -38,7 +38,8 @@ import Ctl.Internal.Contract.Wallet , getUnusedAddresses , getWallet , getWalletAddresses - , ownDrepKeyHash + , ownDrepPubKey + , ownDrepPubKeyHash , ownPaymentPubKeyHashes , ownStakePubKeyHashes , signData diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 70279b034..9e3d10eef 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -5,7 +5,8 @@ module Ctl.Internal.Contract.Wallet , getWalletAddresses , signData , getWallet - , ownDrepKeyHash + , ownDrepPubKey + , ownDrepPubKeyHash , ownPubKeyHashes , ownPaymentPubKeyHashes , ownStakePubKeyHashes @@ -22,12 +23,15 @@ import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential as Credential import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash) +import Cardano.Types.PrivateKey (toPublicKey) as PrivateKey +import Cardano.Types.PublicKey (PublicKey) import Cardano.Types.PublicKey (hash) as PublicKey import Cardano.Types.StakePubKeyHash (StakePubKeyHash) import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) import Cardano.Types.UtxoMap (UtxoMap) import Cardano.Types.Value (Value, valueToCoin) import Cardano.Types.Value (geq, lovelaceValueOf, sum) as Value +import Cardano.Wallet.Key (getPrivateDrepKey) import Control.Monad.Reader.Trans (asks) import Control.Parallel (parTraverse) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) @@ -47,7 +51,6 @@ import Data.Maybe (Maybe(Nothing, Just), fromMaybe, maybe) import Data.Newtype (unwrap, wrap) import Data.Traversable (for_, traverse) import Data.Tuple.Nested ((/\)) -import Data.Typelevel.Undefined (undefined) import Data.UInt as UInt import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) @@ -255,8 +258,25 @@ getWalletUtxos = do toUtxoMap = Map.fromFoldable <<< map (unwrap >>> \({ input, output }) -> input /\ output) -ownDrepKeyHash :: Contract Ed25519KeyHash -ownDrepKeyHash = do +ownDrepPubKey :: Contract PublicKey +ownDrepPubKey = do + withWallet do + actionBasedOnWallet _.getPubDrepKey + ( \kw -> do + drepKey <- liftAff $ liftedM + (error "ownDrepPubKey: Unable to get KeyWallet DRep key") + (getPrivateDrepKey kw) + pure $ PrivateKey.toPublicKey $ unwrap drepKey + ) + +ownDrepPubKeyHash :: Contract Ed25519KeyHash +ownDrepPubKeyHash = do withWallet do actionBasedOnWallet (map PublicKey.hash <<< _.getPubDrepKey) - undefined -- FIXME + ( \kw -> do + drepKey <- liftAff $ liftedM + (error "ownDrepPubKeyHash: Unable to get KeyWallet DRep key") + (getPrivateDrepKey kw) + pure $ PublicKey.hash $ PrivateKey.toPublicKey $ + unwrap drepKey + ) diff --git a/test/Testnet.purs b/test/Testnet.purs index 8c33f11f3..a3247be4f 100644 --- a/test/Testnet.purs +++ b/test/Testnet.purs @@ -28,6 +28,7 @@ import Test.Ctl.Testnet.Contract.Assert as Assert import Test.Ctl.Testnet.Contract.Mnemonics as Mnemonics import Test.Ctl.Testnet.Contract.OgmiosMempool as OgmiosMempool import Test.Ctl.Testnet.ExUnits as ExUnits +import Test.Ctl.Testnet.Gov as Gov import Test.Ctl.Testnet.Logging as Logging import Test.Ctl.Testnet.SameWallets as SameWallets import Test.Ctl.Testnet.UtxoDistribution as UtxoDistribution @@ -55,6 +56,7 @@ main = interruptOnSignal SIGINT =<< launchAff do (noWallet <<< wrapQueryM) ChangeGeneration.suite Contract.suite + Gov.suite UtxoDistribution.suite testTestnetContracts config OgmiosMempool.suite runTestnetTestPlan config SameWallets.suite diff --git a/test/Testnet/Gov.purs b/test/Testnet/Gov.purs new file mode 100644 index 000000000..08f1be4a1 --- /dev/null +++ b/test/Testnet/Gov.purs @@ -0,0 +1,27 @@ +module Test.Ctl.Testnet.Gov + ( suite + ) where + +import Prelude + +import Cardano.Types.BigNum (fromInt) as BigNum +import Contract.Test (ContractTest) +import Contract.Test.Mote (TestPlanM) +import Contract.Test.Testnet (InitialUTxOs, withKeyWallet, withWallets) +import Ctl.Examples.Gov.RegisterDrep (contract) as Gov.RegisterDrep +import Mote (group, skip, test) + +suite :: TestPlanM ContractTest Unit +suite = do + -- FIXME: It's not yet possible to start cardano-testnet in Conway era + -- using its CLI + skip $ group "Governance" do + test "Registers as DRep (Gov.RegisterDrep example)" do + let + distribution :: InitialUTxOs + distribution = + [ BigNum.fromInt 5_000_000 + , BigNum.fromInt 50_000_000 + ] + withWallets distribution \alice -> + withKeyWallet alice Gov.RegisterDrep.contract From 89d8dea0d7c66ce603aa00ad10ecbdd70451ec9f Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 24 Jul 2024 17:44:49 +0200 Subject: [PATCH 325/373] Revise `WalletSpec`: Remove constructors for individual wallets Add parameter allowing to specify whether the CIP-95 extension should be enabled. --- examples/AdditionalUtxos.purs | 10 +- examples/AlwaysMints.purs | 10 +- examples/AlwaysSucceeds.purs | 10 +- examples/AwaitTxConfirmedWithTimeout.purs | 10 +- examples/ByUrl.purs | 121 ++++++++++-------- examples/Cip30.purs | 10 +- examples/DropTokens.purs | 10 +- examples/ExUnits.purs | 10 +- examples/Gov/RegisterDrep.purs | 10 +- examples/IncludeDatum.purs | 10 +- examples/Lose7Ada.purs | 10 +- examples/ManyAssets.purs | 10 +- examples/MintsMultipleTokens.purs | 10 +- examples/NativeScriptMints.purs | 10 +- examples/OneShotMinting.purs | 10 +- examples/PaysWithDatum.purs | 10 +- examples/Pkh2Pkh.purs | 10 +- examples/PlutusV2/AlwaysSucceeds.purs | 10 +- examples/PlutusV2/InlineDatum.purs | 10 +- examples/PlutusV2/OneShotMinting.purs | 10 +- examples/PlutusV2/ReferenceInputs.purs | 10 +- .../PlutusV2/ReferenceInputsAndScripts.purs | 10 +- examples/PlutusV2/ReferenceScripts.purs | 10 +- examples/SendsToken.purs | 10 +- examples/SignData.purs | 10 +- examples/SignMultiple.purs | 14 +- examples/TxChaining.purs | 10 +- examples/Utxos.purs | 10 +- src/Contract/Config.purs | 77 +---------- src/Contract/Test/Cip30Mock.purs | 3 +- src/Contract/Wallet.purs | 27 +--- src/Internal/Test/E2E/Route.purs | 10 +- src/Internal/Wallet.js | 4 +- src/Internal/Wallet.purs | 61 ++++----- src/Internal/Wallet/Cip30Mock.purs | 53 +------- src/Internal/Wallet/Spec.purs | 44 +------ templates/ctl-scaffold/exe/Main.purs | 9 +- templates/ctl-scaffold/test/E2E.purs | 57 +++++---- test/Testnet/Contract.purs | 64 ++++----- 39 files changed, 408 insertions(+), 396 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index c3979ea61..0df257134 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -11,7 +11,11 @@ import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (mkAddress) import Contract.BalanceTxConstraints (BalanceTxConstraintsBuilder) import Contract.BalanceTxConstraints (mustUseAdditionalUtxos) as BalancerConstraints -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (Datum, PlutusData(Integer), unitRedeemer) @@ -51,7 +55,9 @@ import Test.QuickCheck (arbitrary) import Test.QuickCheck.Gen (randomSampleOne) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example contractParams = diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index 85553e991..6bd9a5c89 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -15,7 +15,11 @@ import Cardano.Types (PlutusScript) import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) import Contract.ScriptLookups as Lookups @@ -25,7 +29,9 @@ import Contract.TxConstraints as Constraints import Ctl.Examples.Helpers (mkAssetName) as Helpers main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } contract :: Contract Unit contract = do diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index df1aa2b47..fc77ceab5 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -22,7 +22,11 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.PlutusData as PlutusData import Cardano.Types.PlutusScript as Script import Contract.Address (mkAddress) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (unitRedeemer) @@ -45,7 +49,9 @@ import Data.Lens (view) import Effect.Exception (error) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } contract :: Contract Unit contract = do diff --git a/examples/AwaitTxConfirmedWithTimeout.purs b/examples/AwaitTxConfirmedWithTimeout.purs index cc6bf4062..6aff846d1 100644 --- a/examples/AwaitTxConfirmedWithTimeout.purs +++ b/examples/AwaitTxConfirmedWithTimeout.purs @@ -11,7 +11,11 @@ module Ctl.Examples.AwaitTxConfirmedWithTimeout import Contract.Prelude import Cardano.AsCbor (decodeCbor) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract, throwContractError) import Contract.Prim.ByteArray (hexToByteArrayUnsafe) @@ -20,7 +24,9 @@ import Control.Monad.Error.Class (try) import Partial.Unsafe (unsafePartial) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index e9a15a9ef..1faa277fa 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -4,27 +4,12 @@ import Prelude import Contract.Config ( ContractParams - , WalletSpec - ( ConnectToNami - , ConnectToGero - , ConnectToLode - , ConnectToEternl - , ConnectToFlint - , ConnectToNuFi - , ConnectToLace - ) + , WalletSpec(ConnectToGenericCip30) , blockfrostPublicPreprodServerConfig , blockfrostPublicPreviewServerConfig - , mainnetNamiConfig + , mainnetConfig , mkBlockfrostBackendParams , testnetConfig - , testnetEternlConfig - , testnetFlintConfig - , testnetGeroConfig - , testnetLaceConfig - , testnetLodeConfig - , testnetNamiConfig - , testnetNuFiConfig ) import Contract.Log (logInfo') import Contract.Monad (Contract) @@ -55,9 +40,6 @@ import Ctl.Examples.SignMultiple as SignMultiple import Ctl.Examples.TxChaining as TxChaining import Ctl.Examples.Utxos as Utxos import Ctl.Examples.Wallet as Wallet -import Ctl.Internal.Wallet.Cip30Mock - ( WalletMock(MockNami, MockGero, MockFlint, MockLode, MockNuFi) - ) import Data.Map (Map) import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), isNothing) @@ -70,12 +52,33 @@ import Web.HTML (window) import Web.HTML.Window (localStorage) import Web.Storage.Storage (getItem) +data Wallet + = NamiWallet + | GeroWallet + | FlintWallet + | EternlWallet + | LodeWallet + | LaceWallet + | NuFiWallet + +walletName :: Wallet -> String +walletName = case _ of + NamiWallet -> "nami" + GeroWallet -> "gerowallet" + FlintWallet -> "flint" + EternlWallet -> "eternl" + LodeWallet -> "LodeWallet" + LaceWallet -> "lace" + NuFiWallet -> "nufi" + main :: Effect Unit main = do -- Read Blockfrost API key from the browser storage. -- To set it up, run `npm run e2e-browser` and follow the instructions. mbApiKey <- getBlockfrostApiKey let + connectTo wallet = + Just $ ConnectToGenericCip30 (walletName wallet) { cip95: false } walletsWithBlockfrost = wallets `Map.union` if isNothing mbApiKey then Map.empty @@ -83,59 +86,59 @@ main = do Map.fromFoldable [ "blockfrost-nami-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToNami } + { walletSpec = connectTo NamiWallet } /\ Nothing , "blockfrost-gero-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToGero } + { walletSpec = connectTo GeroWallet } /\ Nothing , "blockfrost-eternl-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToEternl } + { walletSpec = connectTo EternlWallet } /\ Nothing , "blockfrost-lode-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToLode } + { walletSpec = connectTo LodeWallet } /\ Nothing , "blockfrost-flint-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToFlint } + { walletSpec = connectTo FlintWallet } /\ Nothing , "blockfrost-nufi-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToNuFi } + { walletSpec = connectTo NuFiWallet } /\ Nothing , "blockfrost-lace-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = Just ConnectToLace } + { walletSpec = connectTo LaceWallet } /\ Nothing , "blockfrost-nami-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToNami } + { walletSpec = connectTo NamiWallet } /\ Nothing , "blockfrost-gero-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToGero } + { walletSpec = connectTo GeroWallet } /\ Nothing , "blockfrost-eternl-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToEternl } + { walletSpec = connectTo EternlWallet } /\ Nothing , "blockfrost-lode-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToLode } + { walletSpec = connectTo LodeWallet } /\ Nothing , "blockfrost-flint-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToFlint } + { walletSpec = connectTo FlintWallet } /\ Nothing , "blockfrost-nufi-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToNuFi } + { walletSpec = connectTo NuFiWallet } /\ Nothing , "blockfrost-lace-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = Just ConnectToLace } + { walletSpec = connectTo LaceWallet } /\ Nothing ] addLinks walletsWithBlockfrost examples @@ -152,26 +155,40 @@ getBlockfrostApiKey = do Console.log " localStorage.setItem('BLOCKFROST_API_KEY', 'your-key-here');" pure res -wallets :: Map E2EConfigName (ContractParams /\ Maybe WalletMock) -wallets = Map.fromFoldable - [ "nami" /\ testnetNamiConfig /\ Nothing - , "gero" /\ testnetGeroConfig /\ Nothing - , "flint" /\ testnetFlintConfig /\ Nothing - , "eternl" /\ testnetEternlConfig /\ Nothing - , "lode" /\ testnetLodeConfig /\ Nothing - , "nufi" /\ testnetNuFiConfig /\ Nothing - , "lace" /\ testnetLaceConfig /\ Nothing +wallets :: Map E2EConfigName (ContractParams /\ Maybe String) +wallets = map (map walletName) <$> Map.fromFoldable + [ "nami" /\ testnetConfig' NamiWallet /\ Nothing + , "gero" /\ testnetConfig' GeroWallet /\ Nothing + , "flint" /\ testnetConfig' FlintWallet /\ Nothing + , "eternl" /\ testnetConfig' EternlWallet /\ Nothing + , "lode" /\ testnetConfig' LodeWallet /\ Nothing + , "nufi" /\ testnetConfig' NuFiWallet /\ Nothing + , "lace" /\ testnetConfig' LaceWallet /\ Nothing , "nami-mainnet" /\ mainnetNamiConfig /\ Nothing - , "nami-mock" /\ testnetNamiConfig /\ Just MockNami - , "gero-mock" /\ testnetGeroConfig /\ Just MockGero - , "flint-mock" /\ testnetFlintConfig /\ Just MockFlint - , "lode-mock" /\ testnetLodeConfig /\ Just MockLode - , "plutip-nami-mock" /\ testnetNamiConfig /\ Just MockNami - , "plutip-gero-mock" /\ testnetGeroConfig /\ Just MockGero - , "plutip-flint-mock" /\ testnetFlintConfig /\ Just MockFlint - , "plutip-lode-mock" /\ testnetLodeConfig /\ Just MockLode - , "plutip-nufi-mock" /\ testnetNuFiConfig /\ Just MockNuFi + , "nami-mock" /\ testnetConfig' NamiWallet /\ Just NamiWallet + , "gero-mock" /\ testnetConfig' GeroWallet /\ Just GeroWallet + , "flint-mock" /\ testnetConfig' FlintWallet /\ Just FlintWallet + , "lode-mock" /\ testnetConfig' LodeWallet /\ Just LodeWallet + , "plutip-nami-mock" /\ testnetConfig' NamiWallet /\ Just NamiWallet + , "plutip-gero-mock" /\ testnetConfig' GeroWallet /\ Just GeroWallet + , "plutip-flint-mock" /\ testnetConfig' FlintWallet /\ Just FlintWallet + , "plutip-lode-mock" /\ testnetConfig' LodeWallet /\ Just LodeWallet + , "plutip-nufi-mock" /\ testnetConfig' NuFiWallet /\ Just NuFiWallet ] + where + testnetConfig' :: Wallet -> ContractParams + testnetConfig' wallet = + testnetConfig + { walletSpec = + Just $ ConnectToGenericCip30 (walletName wallet) { cip95: false } + } + + mainnetNamiConfig :: ContractParams + mainnetNamiConfig = + mainnetConfig + { walletSpec = + Just $ ConnectToGenericCip30 (walletName NamiWallet) { cip95: false } + } mkBlockfrostPreviewConfig :: Maybe String -> ContractParams mkBlockfrostPreviewConfig apiKey = diff --git a/examples/Cip30.purs b/examples/Cip30.purs index 2241779a1..ec7e82464 100644 --- a/examples/Cip30.purs +++ b/examples/Cip30.purs @@ -15,7 +15,11 @@ import Cardano.Wallet.Cip30 , getName ) import Cardano.Wallet.Cip30.TypeSafe as Cip30 -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractAffM, runContract) import Contract.Prim.ByteArray (byteArrayFromAscii) @@ -30,7 +34,9 @@ import Data.Array (head) import Effect.Exception (error) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/DropTokens.purs b/examples/DropTokens.purs index 499ba0833..99a2f1fc6 100644 --- a/examples/DropTokens.purs +++ b/examples/DropTokens.purs @@ -6,7 +6,11 @@ import Contract.Prelude import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.Value as Value -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.ScriptLookups as Lookups @@ -20,7 +24,9 @@ import Partial.Unsafe (unsafePartial) import Test.Ctl.Fixtures (nullPaymentPubKeyHash) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index c3e902071..109fe0883 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -6,7 +6,11 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(ScriptHashCredential)) import Cardano.Types.PlutusData (unit) as PlutusData import Contract.Address (mkAddress) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Credential (Credential(PubKeyHashCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -34,7 +38,9 @@ import JS.BigInt (BigInt) import JS.BigInt as BigInt main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } contract :: Contract Unit contract = do diff --git a/examples/Gov/RegisterDrep.purs b/examples/Gov/RegisterDrep.purs index 8161f46ba..79f50d63b 100644 --- a/examples/Gov/RegisterDrep.purs +++ b/examples/Gov/RegisterDrep.purs @@ -7,7 +7,11 @@ module Ctl.Examples.Gov.RegisterDrep import Contract.Prelude import Cardano.Types.Credential (Credential(PubKeyHashCredential)) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) @@ -16,7 +20,9 @@ import Contract.TxConstraints (mustRegisterDrep) as Constraints import Contract.Wallet (ownDrepPubKeyHash) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: true } + } example :: ContractParams -> Effect Unit example = launchAff_ <<< flip runContract contract diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 5b7adb7f0..069674db0 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -16,7 +16,11 @@ import Contract.Prelude import Cardano.Types (Credential(ScriptHashCredential)) import Cardano.Types.BigNum as BigNum import Contract.Address (mkAddress) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) import Contract.PlutusData (PlutusData(Integer), unitRedeemer) @@ -41,7 +45,9 @@ import Effect.Exception (error) import JS.BigInt as BigInt main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example = launchAff_ <<< flip runContract contract diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index 6177cc0d6..6bc648bd4 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -17,7 +17,11 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential (Credential(ScriptHashCredential)) import Cardano.Types.PlutusData (unit) as PlutusData import Contract.Address (mkAddress) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (unitRedeemer) @@ -44,7 +48,9 @@ import Partial.Unsafe (unsafePartial) import Test.Spec.Assertions (shouldEqual) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/ManyAssets.purs b/examples/ManyAssets.purs index 3d2a8f1e3..73d7c5f80 100644 --- a/examples/ManyAssets.purs +++ b/examples/ManyAssets.purs @@ -11,7 +11,11 @@ import Contract.Prelude import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad ( Contract @@ -30,7 +34,9 @@ import Data.Array (head, range) as Array import Data.Map (toUnfoldable) as Map main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/MintsMultipleTokens.purs b/examples/MintsMultipleTokens.purs index 141692ad7..5016c5d9c 100644 --- a/examples/MintsMultipleTokens.purs +++ b/examples/MintsMultipleTokens.purs @@ -16,7 +16,11 @@ import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript (PlutusScript) import Cardano.Types.PlutusScript as PlutusScript -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (PlutusData(Integer), RedeemerDatum(RedeemerDatum)) @@ -31,7 +35,9 @@ import JS.BigInt (fromInt) as BigInt import Partial.Unsafe (unsafePartial) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } contract :: Contract Unit contract = do diff --git a/examples/NativeScriptMints.purs b/examples/NativeScriptMints.purs index e83c1abd2..1fdd6ab5b 100644 --- a/examples/NativeScriptMints.purs +++ b/examples/NativeScriptMints.purs @@ -9,7 +9,11 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.NativeScript as NativeScript import Contract.Address (PaymentPubKeyHash) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ScriptLookups as Lookups @@ -24,7 +28,9 @@ import Data.Array (head) import JS.BigInt as BigInt main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } contract :: Contract Unit contract = do diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index c0162edd6..342b943cb 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -18,7 +18,11 @@ import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad ( Contract @@ -58,7 +62,9 @@ import Effect.Exception (error, throw) import JS.BigInt (BigInt) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/PaysWithDatum.purs b/examples/PaysWithDatum.purs index 1e370e152..fb04de018 100644 --- a/examples/PaysWithDatum.purs +++ b/examples/PaysWithDatum.purs @@ -11,7 +11,11 @@ import Contract.Prelude import Cardano.Types (TransactionOutput) import Cardano.Types.BigNum as BigNum import Contract.Address (Address) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Hashing (datumHash) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -57,7 +61,9 @@ type ContractResult = } main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example = launchAff_ <<< flip runContract contract diff --git a/examples/Pkh2Pkh.purs b/examples/Pkh2Pkh.purs index 88b37a4cd..bc56c17c5 100644 --- a/examples/Pkh2Pkh.purs +++ b/examples/Pkh2Pkh.purs @@ -6,7 +6,11 @@ module Ctl.Examples.Pkh2Pkh (main, contract, example) where import Contract.Prelude import Cardano.Types.BigNum as BigNum -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ScriptLookups as Lookups @@ -20,7 +24,9 @@ import Contract.Wallet (ownPaymentPubKeyHashes, ownStakePubKeyHashes) import Data.Array (head) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } contract :: Contract Unit contract = do diff --git a/examples/PlutusV2/AlwaysSucceeds.purs b/examples/PlutusV2/AlwaysSucceeds.purs index b139fc068..62e493a0e 100644 --- a/examples/PlutusV2/AlwaysSucceeds.purs +++ b/examples/PlutusV2/AlwaysSucceeds.purs @@ -5,7 +5,11 @@ module Ctl.Examples.PlutusV2.AlwaysSucceeds (main, example, contract) where import Contract.Prelude -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad ( Contract @@ -23,7 +27,9 @@ import Ctl.Examples.AlwaysSucceeds import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } contract :: Contract Unit contract = do diff --git a/examples/PlutusV2/InlineDatum.purs b/examples/PlutusV2/InlineDatum.purs index 802ea0e33..1c668e77b 100644 --- a/examples/PlutusV2/InlineDatum.purs +++ b/examples/PlutusV2/InlineDatum.purs @@ -16,7 +16,11 @@ import Contract.Prelude import Cardano.Types (Credential(ScriptHashCredential)) import Cardano.Types.BigNum as BigNum import Contract.Address (mkAddress) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) import Contract.PlutusData (PlutusData(Integer), RedeemerDatum(RedeemerDatum)) @@ -41,7 +45,9 @@ import JS.BigInt as BigInt import Test.Spec.Assertions (shouldEqual) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/PlutusV2/OneShotMinting.purs b/examples/PlutusV2/OneShotMinting.purs index 41b3188e2..a31a16377 100644 --- a/examples/PlutusV2/OneShotMinting.purs +++ b/examples/PlutusV2/OneShotMinting.purs @@ -11,7 +11,11 @@ module Ctl.Examples.PlutusV2.OneShotMinting import Contract.Prelude -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Monad ( Contract , launchAff_ @@ -29,7 +33,9 @@ import Ctl.Examples.OneShotMinting import Effect.Exception (error) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/PlutusV2/ReferenceInputs.purs b/examples/PlutusV2/ReferenceInputs.purs index cf75d955b..2731f7aaa 100644 --- a/examples/PlutusV2/ReferenceInputs.purs +++ b/examples/PlutusV2/ReferenceInputs.purs @@ -4,7 +4,11 @@ import Contract.Prelude import Cardano.Types (Transaction) import Cardano.Types.BigNum as BigNum -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad ( Contract @@ -45,7 +49,9 @@ import Data.Lens.Getter ((^.)) import Data.Map (member, toUnfoldable) as Map main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example = launchAff_ <<< flip runContract contract diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index 9cfa387b9..f91c6561c 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -17,7 +17,11 @@ import Cardano.Types.TransactionUnspentOutput ( TransactionUnspentOutput(TransactionUnspentOutput) ) import Contract.Address (PaymentPubKeyHash, StakePubKeyHash, mkAddress) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad ( Contract @@ -58,7 +62,9 @@ import Data.Array (head) import Data.Map (toUnfoldable) as Map main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/PlutusV2/ReferenceScripts.purs b/examples/PlutusV2/ReferenceScripts.purs index 531d7ab3a..99c089af6 100644 --- a/examples/PlutusV2/ReferenceScripts.purs +++ b/examples/PlutusV2/ReferenceScripts.purs @@ -13,7 +13,11 @@ import Cardano.Types import Cardano.Types.BigNum as BigNum import Cardano.Types.PlutusData (unit) as PlutusData import Contract.Address (mkAddress) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Credential (Credential(PubKeyHashCredential)) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) @@ -41,7 +45,9 @@ import Data.Array (head) import Data.Map (toUnfoldable) as Map main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/SendsToken.purs b/examples/SendsToken.purs index ee9211f84..8a4c9c2d3 100644 --- a/examples/SendsToken.purs +++ b/examples/SendsToken.purs @@ -12,7 +12,11 @@ import Cardano.Types.Int as Int import Cardano.Types.Mint (Mint) import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ScriptLookups as Lookups @@ -30,7 +34,9 @@ import Ctl.Examples.Helpers (mkAssetName, mustPayToPubKeyStakeAddress) as Helper import Data.Array (head) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/SignData.purs b/examples/SignData.purs index e777a4a1b..e19f25745 100644 --- a/examples/SignData.purs +++ b/examples/SignData.purs @@ -8,7 +8,11 @@ import Cardano.Types (CborBytes, PublicKey, RawBytes) import Cardano.Types.PublicKey as PublicKey import Cardano.Wallet.Cip30.SignData (COSEKey, COSESign1) import Contract.Address (Address) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.Wallet (getChangeAddress, getRewardAddresses, signData) @@ -21,7 +25,9 @@ import Effect.Exception (throw, throwException) import Partial.Unsafe (unsafePartial) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example = launchAff_ <<< flip runContract contract diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 2d5ddc3de..d5aeda3ae 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -6,7 +6,11 @@ module Ctl.Examples.SignMultiple (example, contract, main) where import Contract.Prelude import Cardano.Types (Transaction) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo', logWarn') import Contract.Monad ( Contract @@ -42,15 +46,17 @@ import Data.Set (Set) import Data.UInt (UInt) import Effect.Ref as Ref +main :: Effect Unit +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } + getLockedInputs :: Contract (Map TransactionHash (Set UInt)) getLockedInputs = do cache <- asks _.usedTxOuts liftEffect $ Ref.read $ unwrap cache -main :: Effect Unit -main = example testnetNamiConfig - contract :: Contract Unit contract = do logInfo' "Running Examples.SignMultiple" diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index 7a4c53a0c..939a0ad31 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -15,7 +15,11 @@ import Contract.BalanceTxConstraints ( BalanceTxConstraintsBuilder , mustUseAdditionalUtxos ) as BalanceTxConstraints -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ScriptLookups as Lookups @@ -35,7 +39,9 @@ import Contract.Wallet (ownPaymentPubKeyHashes) import Data.Array (head) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example cfg = launchAff_ do diff --git a/examples/Utxos.purs b/examples/Utxos.purs index 23cc6eaa5..87e39ebf2 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -8,7 +8,11 @@ import Cardano.Types.Mint (Mint) import Cardano.Types.Mint as Mint import Cardano.Types.PlutusScript as PlutusScript import Contract.Address (PaymentPubKeyHash, StakePubKeyHash) -import Contract.Config (ContractParams, testnetNamiConfig) +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) import Contract.Log (logInfo, logInfo') import Contract.Monad ( Contract @@ -44,7 +48,9 @@ import Test.QuickCheck.Arbitrary (arbitrary) import Test.QuickCheck.Gen (randomSampleOne) main :: Effect Unit -main = example testnetNamiConfig +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + } example :: ContractParams -> Effect Unit example = launchAff_ <<< flip runContract contract diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index b7b8fa560..81e2796f7 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -1,21 +1,7 @@ -- | Exposes some pre-defined Contract configurations. Re-exports all modules needed to modify `ContractParams`. module Contract.Config ( testnetConfig - , testnetNamiConfig - , testnetGeroConfig - , testnetFlintConfig - , testnetEternlConfig - , testnetLodeConfig - , testnetNuFiConfig - , testnetLaceConfig , mainnetConfig - , mainnetNamiConfig - , mainnetGeroConfig - , mainnetFlintConfig - , mainnetEternlConfig - , mainnetLodeConfig - , mainnetNuFiConfig - , mainnetLaceConfig , defaultSynchronizationParams , strictSynchronizationParams , defaultTimeParams @@ -77,22 +63,11 @@ import Ctl.Internal.Wallet.Spec , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) , StakeKeyPresence(WithStakeKey, WithoutStakeKey) - , WalletSpec - ( UseKeys - , UseMnemonic - , ConnectToNami - , ConnectToGero - , ConnectToFlint - , ConnectToEternl - , ConnectToLode - , ConnectToNuFi - , ConnectToLace - , ConnectToGenericCip30 - ) + , WalletSpec(UseKeys, UseMnemonic, ConnectToGenericCip30) ) import Data.Log.Level (LogLevel(Trace, Debug, Info, Warn, Error)) import Data.Log.Message (Message) -import Data.Maybe (Maybe(Just, Nothing)) +import Data.Maybe (Maybe(Nothing)) import Data.Number (infinity) import Data.Time.Duration (Milliseconds(Milliseconds), Seconds(Seconds)) @@ -112,6 +87,9 @@ testnetConfig = , synchronizationParams: defaultSynchronizationParams } +mainnetConfig :: ContractParams +mainnetConfig = testnetConfig { networkId = MainnetId } + -- | - `syncWallet` specifies delay and timeout for `syncWalletWithTransaction` -- | and `syncWalletWithTxInputs` synchronization primitives. -- | See `doc/query-layers.md` for more info. @@ -158,48 +136,3 @@ strictSynchronizationParams = , syncWalletWithTxInputs: { errorOnTimeout: true, beforeCip30Sign: true } , syncWalletWithTransaction: { errorOnTimeout: true, beforeTxConfirmed: true } } - -testnetNamiConfig :: ContractParams -testnetNamiConfig = testnetConfig { walletSpec = Just ConnectToNami } - -testnetGeroConfig :: ContractParams -testnetGeroConfig = testnetConfig { walletSpec = Just ConnectToGero } - -testnetFlintConfig :: ContractParams -testnetFlintConfig = testnetConfig { walletSpec = Just ConnectToFlint } - -testnetEternlConfig :: ContractParams -testnetEternlConfig = testnetConfig { walletSpec = Just ConnectToEternl } - -testnetLodeConfig :: ContractParams -testnetLodeConfig = testnetConfig { walletSpec = Just ConnectToLode } - -testnetNuFiConfig :: ContractParams -testnetNuFiConfig = testnetConfig { walletSpec = Just ConnectToNuFi } - -testnetLaceConfig :: ContractParams -testnetLaceConfig = testnetConfig { walletSpec = Just ConnectToLace } - -mainnetConfig :: ContractParams -mainnetConfig = testnetConfig { networkId = MainnetId } - -mainnetNamiConfig :: ContractParams -mainnetNamiConfig = mainnetConfig { walletSpec = Just ConnectToNami } - -mainnetGeroConfig :: ContractParams -mainnetGeroConfig = mainnetConfig { walletSpec = Just ConnectToGero } - -mainnetFlintConfig :: ContractParams -mainnetFlintConfig = mainnetConfig { walletSpec = Just ConnectToFlint } - -mainnetEternlConfig :: ContractParams -mainnetEternlConfig = mainnetConfig { walletSpec = Just ConnectToEternl } - -mainnetLodeConfig :: ContractParams -mainnetLodeConfig = mainnetConfig { walletSpec = Just ConnectToLode } - -mainnetNuFiConfig :: ContractParams -mainnetNuFiConfig = mainnetConfig { walletSpec = Just ConnectToNuFi } - -mainnetLaceConfig :: ContractParams -mainnetLaceConfig = mainnetConfig { walletSpec = Just ConnectToLace } diff --git a/src/Contract/Test/Cip30Mock.purs b/src/Contract/Test/Cip30Mock.purs index 33883c384..d0fd45f0d 100644 --- a/src/Contract/Test/Cip30Mock.purs +++ b/src/Contract/Test/Cip30Mock.purs @@ -4,6 +4,5 @@ module Contract.Test.Cip30Mock ) where import Ctl.Internal.Wallet.Cip30Mock - ( WalletMock(MockFlint, MockGero, MockNami, MockLode) - , withCip30Mock + ( withCip30Mock ) as X diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 0d5f8476c..2a57d9795 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -52,21 +52,13 @@ import Ctl.Internal.Contract.Wallet import Ctl.Internal.Contract.Wallet (getWalletUtxos) as Wallet import Ctl.Internal.Contract.Wallet as Contract import Ctl.Internal.Helpers (liftM) -import Ctl.Internal.Wallet (Wallet(KeyWallet)) as Wallet import Ctl.Internal.Wallet - ( Wallet(KeyWallet, GenericCip30) + ( Cip30Extensions + , Wallet(KeyWallet, GenericCip30) , WalletExtension - ( NamiWallet - , GeroWallet - , FlintWallet - , EternlWallet - , LodeWallet - , LaceWallet - , NuFiWallet - , GenericCip30Wallet - ) , isWalletAvailable ) as X +import Ctl.Internal.Wallet (Wallet(KeyWallet)) as Wallet import Ctl.Internal.Wallet.KeyFile (formatPaymentKey, formatStakeKey) as X import Ctl.Internal.Wallet.Spec ( Cip1852DerivationPath @@ -77,18 +69,7 @@ import Ctl.Internal.Wallet.Spec ( MnemonicSource(MnemonicString, MnemonicFile) , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) - , WalletSpec - ( UseKeys - , UseMnemonic - , ConnectToNami - , ConnectToGero - , ConnectToFlint - , ConnectToLode - , ConnectToLace - , ConnectToEternl - , ConnectToNuFi - , ConnectToGenericCip30 - ) + , WalletSpec(UseKeys, UseMnemonic, ConnectToGenericCip30) ) as X import Data.Array (head) import Data.Array as Array diff --git a/src/Internal/Test/E2E/Route.purs b/src/Internal/Test/E2E/Route.purs index 92e322fbc..605334baa 100644 --- a/src/Internal/Test/E2E/Route.purs +++ b/src/Internal/Test/E2E/Route.purs @@ -15,7 +15,7 @@ import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.RawBytes (RawBytes(RawBytes)) import Contract.Config (ContractParams) import Contract.Monad (Contract, runContract) -import Contract.Test.Cip30Mock (WalletMock, withCip30Mock) +import Contract.Test.Cip30Mock (withCip30Mock) import Contract.Wallet ( PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey(PrivateStakeKey) @@ -28,7 +28,7 @@ import Ctl.Internal.Helpers (liftEither) import Ctl.Internal.QueryM (ClusterSetup) import Ctl.Internal.Test.E2E.Feedback.Browser (getClusterSetupRepeatedly) import Ctl.Internal.Test.E2E.Feedback.Hooks (addE2EFeedbackHooks) -import Ctl.Internal.Wallet.Spec (WalletSpec(ConnectToEternl)) +import Ctl.Internal.Wallet.Spec (WalletSpec(ConnectToGenericCip30)) import Data.Array (last) import Data.Array as Array import Data.Bifunctor (lmap) @@ -104,7 +104,7 @@ parseRoute queryString = mkPrivateKey str <#> PrivateStakeKey addLinks - :: Map E2EConfigName (ContractParams /\ Maybe WalletMock) + :: Map E2EConfigName (ContractParams /\ Maybe String) -> Map E2ETestName (Contract Unit) -> Effect Unit addLinks configMaps testMaps = do @@ -136,7 +136,7 @@ addLinks configMaps testMaps = do -- | from the cluster should be used. If there's no local cluster, an error -- | will be thrown. route - :: Map E2EConfigName (ContractParams /\ Maybe WalletMock) + :: Map E2EConfigName (ContractParams /\ Maybe String) -> Map E2ETestName (Contract Unit) -> Effect Unit route configs tests = do @@ -184,7 +184,7 @@ route configs tests = do delayIfEternl :: ContractParams -> Aff Unit delayIfEternl config = case config.walletSpec of - Just ConnectToEternl -> + Just (ConnectToGenericCip30 "eternl" _) -> delay $ wrap 3000.0 _ -> pure unit diff --git a/src/Internal/Wallet.js b/src/Internal/Wallet.js index 99197ef23..925d4135a 100644 --- a/src/Internal/Wallet.js +++ b/src/Internal/Wallet.js @@ -13,7 +13,7 @@ const checkNotNode = () => { } }; -const isWalletAvailable = walletName => () => { +export const isWalletAvailable = walletName => () => { checkNotNode(); return ( typeof getWindow().cardano != "undefined" && @@ -21,5 +21,3 @@ const isWalletAvailable = walletName => () => { typeof getWindow().cardano[walletName].enable == "function" ); }; - -export { isWalletAvailable as _isWalletAvailable }; diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 168818516..0a424ffca 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -1,15 +1,7 @@ module Ctl.Internal.Wallet - ( Wallet(KeyWallet, GenericCip30) + ( Cip30Extensions + , Wallet(KeyWallet, GenericCip30) , WalletExtension - ( NamiWallet - , LodeWallet - , GeroWallet - , FlintWallet - , EternlWallet - , NuFiWallet - , LaceWallet - , GenericCip30Wallet - ) , mkKeyWallet , mkWalletAff , actionBasedOnWallet @@ -18,6 +10,8 @@ module Ctl.Internal.Wallet import Prelude +import Cardano.Wallet.Cip30 (enable) as Cip30 +import Cardano.Wallet.Cip95 (Api) import Cardano.Wallet.Cip95 (enable) as Cip95 import Cardano.Wallet.Key ( KeyWallet @@ -36,6 +30,9 @@ import Effect.Aff (Aff, delay) import Effect.Aff.Class (class MonadAff, liftAff) import Effect.Class (liftEffect) import Effect.Console as Console +import Unsafe.Coerce (unsafeCoerce) + +foreign import isWalletAvailable :: String -> Effect Boolean -- NOTE: this data type is defined like this on purpose, don't change it -- to `(Cip30Wallet /\ WalletExtension)`. The motivation is to make it simpler @@ -44,15 +41,14 @@ data Wallet = GenericCip30 Cip30Wallet | KeyWallet KeyWallet -data WalletExtension - = NamiWallet - | GeroWallet - | FlintWallet - | EternlWallet - | LodeWallet - | LaceWallet - | NuFiWallet - | GenericCip30Wallet String +type WalletExtension = + { name :: String + , exts :: Cip30Extensions + } + +type Cip30Extensions = + { cip95 :: Boolean + } mkKeyWallet :: PrivatePaymentKey @@ -62,18 +58,16 @@ mkKeyWallet mkKeyWallet payKey mbStakeKey mbDrepKey = KeyWallet $ privateKeysToKeyWallet payKey mbStakeKey mbDrepKey -foreign import _isWalletAvailable :: String -> Effect Boolean - mkWalletAff :: WalletExtension -> Aff Wallet mkWalletAff walletExtension = do - retryNWithIntervalUntil 300 (toNumber 100) - $ liftEffect (isWalletAvailable walletExtension) + retryNWithIntervalUntil 300 (toNumber 100) $ + liftEffect (isWalletAvailable walletExtension.name) GenericCip30 <$> do mkCip30WalletAff =<< do - Cip95.enable (walletExtensionToName walletExtension) `catchError` + enableWallet walletExtension `catchError` \err -> do liftEffect $ Console.error $ "Wallet extension " - <> walletExtensionToName walletExtension + <> walletExtension.name <> " is not available!" throwError err where @@ -83,19 +77,10 @@ mkWalletAff walletExtension = do if _ then pure unit else delay (wrap ms) *> retryNWithIntervalUntil (n - 1) ms mBool -isWalletAvailable :: WalletExtension -> Effect Boolean -isWalletAvailable = _isWalletAvailable <<< walletExtensionToName - -walletExtensionToName :: WalletExtension -> String -walletExtensionToName = case _ of - NamiWallet -> "nami" - GeroWallet -> "gerowallet" - FlintWallet -> "flint" - EternlWallet -> "eternl" - LodeWallet -> "LodeWallet" - NuFiWallet -> "nufi" - LaceWallet -> "lace" - GenericCip30Wallet name' -> name' +enableWallet :: WalletExtension -> Aff Api +enableWallet { name, exts: { cip95 } } + | cip95 = Cip95.enable name + | otherwise = unsafeCoerce <$> Cip30.enable name mempty actionBasedOnWallet :: forall (m :: Type -> Type) (a :: Type) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index f1d85b5a5..94427b9be 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -1,13 +1,5 @@ module Ctl.Internal.Wallet.Cip30Mock ( withCip30Mock - , WalletMock - ( MockFlint - , MockGero - , MockNami - , MockLode - , MockNuFi - , MockGenericCip30 - ) ) where import Prelude @@ -38,18 +30,7 @@ import Control.Promise (fromAff) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Helpers (liftEither) -import Ctl.Internal.Wallet - ( Wallet - , WalletExtension - ( LodeWallet - , NamiWallet - , GeroWallet - , FlintWallet - , NuFiWallet - , GenericCip30Wallet - ) - , mkWalletAff - ) +import Ctl.Internal.Wallet (mkWalletAff) import Data.Array as Array import Data.ByteArray (byteArrayToHex, hexToByteArray) import Data.Either (hush) @@ -66,14 +47,6 @@ import Effect.Exception (error) import Effect.Unsafe (unsafePerformEffect) import Partial.Unsafe (unsafePartial) -data WalletMock - = MockFlint - | MockGero - | MockNami - | MockLode - | MockNuFi - | MockGenericCip30 String - -- | Construct a CIP-30 wallet mock that exposes `KeyWallet` functionality -- | behind a CIP-30 interface and uses Ogmios to submit Txs. -- | The wallet is injected directly to `window.cardano` object, under the @@ -90,7 +63,7 @@ data WalletMock withCip30Mock :: forall (a :: Type) . KeyWallet - -> WalletMock + -> String -> Contract a -> Contract a withCip30Mock (KeyWallet keyWallet) mock contract = do @@ -98,29 +71,11 @@ withCip30Mock (KeyWallet keyWallet) mock contract = do kwMStakeKey <- liftAff keyWallet.stakeKey kwMDrepKey <- liftAff keyWallet.drepKey cip30Mock <- mkCip30Mock kwPaymentKey kwMStakeKey kwMDrepKey - deleteMock <- liftEffect $ injectCip30Mock mockString cip30Mock - wallet <- liftAff mkWalletAff' + deleteMock <- liftEffect $ injectCip30Mock mock cip30Mock + wallet <- liftAff $ mkWalletAff { name: mock, exts: { cip95: true } } res <- try $ local _ { wallet = Just wallet } contract liftEffect deleteMock liftEither res - where - mkWalletAff' :: Aff Wallet - mkWalletAff' = case mock of - MockFlint -> mkWalletAff FlintWallet - MockGero -> mkWalletAff GeroWallet - MockNami -> mkWalletAff NamiWallet - MockLode -> mkWalletAff LodeWallet - MockNuFi -> mkWalletAff NuFiWallet - MockGenericCip30 name -> mkWalletAff (GenericCip30Wallet name) - - mockString :: String - mockString = case mock of - MockFlint -> "flint" - MockGero -> "gerowallet" - MockNami -> "nami" - MockLode -> "LodeWallet" - MockNuFi -> "nufi" - MockGenericCip30 name -> name mkCip30Mock :: PrivatePaymentKey diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index 2da2f7caf..53c0603c5 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -1,16 +1,5 @@ module Ctl.Internal.Wallet.Spec - ( WalletSpec - ( UseKeys - , UseMnemonic - , ConnectToNami - , ConnectToGero - , ConnectToFlint - , ConnectToEternl - , ConnectToLode - , ConnectToNuFi - , ConnectToLace - , ConnectToGenericCip30 - ) + ( WalletSpec(UseKeys, UseMnemonic, ConnectToGenericCip30) , Cip1852DerivationPath , StakeKeyPresence(WithStakeKey, WithoutStakeKey) , MnemonicSource(MnemonicString, MnemonicFile) @@ -39,17 +28,8 @@ import Cardano.Wallet.Key ) import Control.Monad.Error.Class (liftEither) import Ctl.Internal.Wallet - ( Wallet(KeyWallet) - , WalletExtension - ( NamiWallet - , GeroWallet - , FlintWallet - , EternlWallet - , LodeWallet - , NuFiWallet - , LaceWallet - , GenericCip30Wallet - ) + ( Cip30Extensions + , Wallet(KeyWallet) , mkKeyWallet , mkWalletAff ) @@ -116,14 +96,7 @@ data WalletSpec = UseKeys PrivatePaymentKeySource (Maybe PrivateStakeKeySource) (Maybe PrivateDrepKeySource) | UseMnemonic MnemonicSource Cip1852DerivationPath StakeKeyPresence - | ConnectToNami - | ConnectToGero - | ConnectToFlint - | ConnectToEternl - | ConnectToLode - | ConnectToNuFi - | ConnectToLace - | ConnectToGenericCip30 String + | ConnectToGenericCip30 String Cip30Extensions derive instance Generic WalletSpec _ @@ -157,14 +130,7 @@ mkWalletBySpec = case _ of mnemonic <- readTextFile Encoding.UTF8 path map KeyWallet $ liftEither $ lmap error $ mkKeyWalletFromMnemonic mnemonic derivationPath stakeKeyPresence - ConnectToNami -> mkWalletAff NamiWallet - ConnectToGero -> mkWalletAff GeroWallet - ConnectToFlint -> mkWalletAff FlintWallet - ConnectToEternl -> mkWalletAff EternlWallet - ConnectToLode -> mkWalletAff LodeWallet - ConnectToNuFi -> mkWalletAff NuFiWallet - ConnectToLace -> mkWalletAff LaceWallet - ConnectToGenericCip30 name -> mkWalletAff (GenericCip30Wallet name) + ConnectToGenericCip30 name exts -> mkWalletAff { name, exts } -- | Create a wallet given a mnemonic phrase, account index, address index and -- | stake key presence flag. diff --git a/templates/ctl-scaffold/exe/Main.purs b/templates/ctl-scaffold/exe/Main.purs index 40b33ba98..09189eb35 100644 --- a/templates/ctl-scaffold/exe/Main.purs +++ b/templates/ctl-scaffold/exe/Main.purs @@ -11,5 +11,12 @@ import Scaffold as Scaffold main :: Effect Unit main = Contract.Monad.launchAff_ $ void - $ Contract.Monad.runContract Contract.Config.testnetNamiConfig + $ Contract.Monad.runContract contractParams $ Scaffold.contract + +contractParams :: Contract.Config.ContractParams +contractParams = + Contract.Config.testnetConfig + { walletSpec = + Just $ Contract.Config.ConnectToGenericCip30 "nami" { cip95: false } + } diff --git a/templates/ctl-scaffold/test/E2E.purs b/templates/ctl-scaffold/test/E2E.purs index 6293691a6..6317fd345 100644 --- a/templates/ctl-scaffold/test/E2E.purs +++ b/templates/ctl-scaffold/test/E2E.purs @@ -5,20 +5,11 @@ import Contract.Prelude import Contract.Config ( ContractParams - , mainnetFlintConfig - , mainnetGeroConfig - , mainnetLodeConfig - , mainnetNamiConfig - , testnetEternlConfig - , testnetFlintConfig - , testnetGeroConfig - , testnetLodeConfig - , testnetNamiConfig + , WalletSpec(ConnectToGenericCip30) + , mainnetConfig + , testnetConfig ) import Contract.Monad (Contract) -import Contract.Test.Cip30Mock - ( WalletMock(MockFlint, MockGero, MockNami, MockLode) - ) import Contract.Test.E2E (E2EConfigName, E2ETestName, addLinks, route) import Data.Map (Map) import Data.Map as Map @@ -29,23 +20,37 @@ main = do addLinks configs tests route configs tests -configs :: Map E2EConfigName (ContractParams /\ Maybe WalletMock) +configs :: Map E2EConfigName (ContractParams /\ Maybe String) configs = Map.fromFoldable - [ "nami" /\ testnetNamiConfig /\ Nothing - , "gero" /\ testnetGeroConfig /\ Nothing - , "flint" /\ testnetFlintConfig /\ Nothing - , "eternl" /\ testnetEternlConfig /\ Nothing - , "lode" /\ testnetLodeConfig /\ Nothing - , "nami-mock" /\ testnetNamiConfig /\ Just MockNami - , "gero-mock" /\ testnetGeroConfig /\ Just MockGero - , "flint-mock" /\ testnetFlintConfig /\ Just MockFlint - , "lode-mock" /\ testnetLodeConfig /\ Just MockLode + [ "nami" /\ testnetConfig' "nami" /\ Nothing + , "gero" /\ testnetConfig' "gerowallet" /\ Nothing + , "flint" /\ testnetConfig' "flint" /\ Nothing + , "eternl" /\ testnetConfig' "eternl" /\ Nothing + , "lode" /\ testnetConfig' "LodeWallet" /\ Nothing + , "nami-mock" /\ testnetConfig' "nami" /\ Just "nami" + , "gero-mock" /\ testnetConfig' "gerowallet" /\ Just "gerowallet" + , "flint-mock" /\ testnetConfig' "flint" /\ Just "flint" + , "lode-mock" /\ testnetConfig' "LodeWallet" /\ Just "LodeWallet" -- Plutip cluster's network ID is set to mainnet: - , "plutip-nami-mock" /\ mainnetNamiConfig /\ Just MockNami - , "plutip-gero-mock" /\ mainnetGeroConfig /\ Just MockGero - , "plutip-flint-mock" /\ mainnetFlintConfig /\ Just MockFlint - , "plutip-lode-mock" /\ mainnetLodeConfig /\ Just MockLode + , "plutip-nami-mock" /\ mainnetConfig' "nami" /\ Just "nami" + , "plutip-gero-mock" /\ mainnetConfig' "gerowallet" /\ Just "gerowallet" + , "plutip-flint-mock" /\ mainnetConfig' "flint" /\ Just "flint" + , "plutip-lode-mock" /\ mainnetConfig' "LodeWallet" /\ Just "LodeWallet" ] + where + testnetConfig' :: String -> ContractParams + testnetConfig' wallet = + testnetConfig + { walletSpec = + Just $ ConnectToGenericCip30 wallet { cip95: false } + } + + mainnetConfig' :: String -> ContractParams + mainnetConfig' wallet = + mainnetConfig + { walletSpec = + Just $ ConnectToGenericCip30 wallet { cip95: false } + } tests :: Map E2ETestName (Contract Unit) tests = Map.fromFoldable diff --git a/test/Testnet/Contract.purs b/test/Testnet/Contract.purs index f8e5b2dce..0b55e0c67 100644 --- a/test/Testnet/Contract.purs +++ b/test/Testnet/Contract.purs @@ -149,13 +149,7 @@ import Ctl.Examples.Schnorr as Schnorr import Ctl.Examples.SendsToken (contract) as SendsToken import Ctl.Examples.TxChaining (contract) as TxChaining import Ctl.Internal.Types.Interval (getSlotLength) -import Ctl.Internal.Wallet - ( WalletExtension(NamiWallet, GeroWallet, FlintWallet, NuFiWallet) - ) -import Ctl.Internal.Wallet.Cip30Mock - ( WalletMock(MockNami, MockGero, MockFlint, MockNuFi, MockGenericCip30) - , withCip30Mock - ) +import Ctl.Internal.Wallet.Cip30Mock (withCip30Mock) import Data.Array (head, (!!)) import Data.Either (Either(Left, Right), hush, isLeft, isRight) import Data.Foldable (fold, foldM, length) @@ -1911,27 +1905,39 @@ suite = do ] withWallets distribution \alice -> do - withCip30Mock alice MockNami do - (liftEffect $ isWalletAvailable NamiWallet) >>= shouldEqual true - try (liftEffect $ isWalletAvailable NamiWallet) >>= hush >>> shouldEqual + let nami = "nami" + withCip30Mock alice nami do + (liftEffect $ isWalletAvailable nami) >>= shouldEqual true + try (liftEffect $ isWalletAvailable nami) >>= hush >>> shouldEqual (Just false) - withCip30Mock alice MockGero do - (liftEffect $ isWalletAvailable GeroWallet) >>= shouldEqual true - try (liftEffect $ isWalletAvailable GeroWallet) >>= hush >>> shouldEqual - (Just false) + let gerowallet = "gerowallet" + withCip30Mock alice gerowallet do + (liftEffect $ isWalletAvailable gerowallet) >>= shouldEqual true + try (liftEffect $ isWalletAvailable gerowallet) >>= hush >>> + shouldEqual + (Just false) - withCip30Mock alice MockFlint do - (liftEffect $ isWalletAvailable FlintWallet) >>= shouldEqual true - try (liftEffect $ isWalletAvailable FlintWallet) >>= hush >>> + let flint = "flint" + withCip30Mock alice flint do + (liftEffect $ isWalletAvailable flint) >>= shouldEqual true + try (liftEffect $ isWalletAvailable flint) >>= hush >>> shouldEqual (Just false) - withCip30Mock alice MockNuFi do - (liftEffect $ isWalletAvailable NuFiWallet) >>= shouldEqual true - try (liftEffect $ isWalletAvailable NuFiWallet) >>= hush >>> shouldEqual + let nufi = "nufi" + withCip30Mock alice nufi do + (liftEffect $ isWalletAvailable nufi) >>= shouldEqual true + try (liftEffect $ isWalletAvailable nufi) >>= hush >>> shouldEqual (Just false) + let lode = "LodeWallet" + withCip30Mock alice lode do + (liftEffect $ isWalletAvailable lode) >>= shouldEqual true + try (liftEffect $ isWalletAvailable lode) >>= hush >>> + shouldEqual + (Just false) + test "Collateral selection returns UTxO with smaller amount" do let distribution :: InitialUTxOs @@ -1940,7 +1946,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice MockNami do + withCip30Mock alice "nami" do getWalletCollateral >>= liftEffect <<< case _ of Nothing -> throw "Unable to get collateral" Just @@ -1963,7 +1969,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - utxos <- withCip30Mock alice MockNami do + utxos <- withCip30Mock alice "nami" do getWalletUtxos utxos `shouldSatisfy` isJust @@ -1975,7 +1981,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - mockAddress <- withCip30Mock alice MockNami do + mockAddress <- withCip30Mock alice "nami" do mbAddr <- head <$> getWalletAddresses mbAddr `shouldSatisfy` isJust pure mbAddr @@ -1991,7 +1997,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice MockNami do + withCip30Mock alice "nami" do pkh <- liftedM "Failed to get PKH" $ head <$> ownPaymentPubKeyHashes stakePkh <- join <<< head <$> ownStakePubKeyHashes @@ -2009,7 +2015,7 @@ suite = do getWalletBalance >>= shouldEqual ( Just $ coinToValue $ Coin $ BigNum.fromInt 1_050_000_000 ) - withCip30Mock alice MockNami do + withCip30Mock alice "nami" do getWalletBalance >>= shouldEqual ( Just $ coinToValue $ Coin $ BigNum.fromInt 1_050_000_000 ) @@ -2023,7 +2029,7 @@ suite = do , BigNum.fromInt 1_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice MockNami do + withCip30Mock alice "nami" do getWalletBalance >>= flip shouldSatisfy (eq $ Just $ coinToValue $ Coin $ BigNum.fromInt 8_000_000) @@ -2035,9 +2041,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice MockNami do - Cip30.contract - withCip30Mock alice (MockGenericCip30 "nami") do + withCip30Mock alice "nami" do Cip30.contract test "ECDSA example" do let @@ -2049,7 +2053,7 @@ suite = do , BigNum.fromInt 2_000_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice MockNami $ ECDSA.contract + withCip30Mock alice "nami" $ ECDSA.contract group "CIP-49 Plutus Crypto Primitives" do test "ECDSA: a script that checks if a signature is correct" do From bfbcb504f5667970b2e784a6a8ed2dccdd9beb50 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 24 Jul 2024 23:46:56 +0200 Subject: [PATCH 326/373] Bump transaction-builder, Fix remaining conflicts --- CHANGELOG.md | 3 - flake.nix | 4 +- packages.dhall | 4 +- spago-packages.nix | 8 - templates/ctl-scaffold/flake.lock | 34524 ++++---------------- templates/ctl-scaffold/flake.nix | 348 +- templates/ctl-scaffold/packages.dhall | 52 +- templates/ctl-scaffold/spago-packages.nix | 28 +- 8 files changed, 6051 insertions(+), 28920 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 386cd6a75..434c1bb52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,14 +94,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Changed -<<<<<<< HEAD - Bumped Ogmios to version 6.0.3 ([#1626](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1626)) -======= - `Contract.Transaction.mkUnbalancedTx` now returns a tuple: a transaction and the UTxOs it used. - `Contract.Transaction.balanceTx` accepts two extra argument: a list of used UTxOs (set to `Data.Map.empty` if none of them are coming from the outside of the wallet) and balancer constraints (set to `mempty` if not needed) - Default synchronization parameters: all [wallet <-> query layer synchronization primitives](./doc/query-layers.md) are now off by default. The reason is that the runtime overhead made the users unhappy and it was not worth it for most of the users. If your dApp sends transactions in quick succession, consider enabling the synchronization again by using `softSynchronizationParams` (old behavior) or `strictSynchronizationParams`. - `BalanceTxConstraintsBuilder` has been renamed to `BalancerConstraints`. It is still available under the old name as a type synonym. ->>>>>>> c02737564866f4f5a1d82ddf0e59eea6241c91a1 ### Fixed diff --git a/flake.nix b/flake.nix index 3fa3fe4be..87449772c 100644 --- a/flake.nix +++ b/flake.nix @@ -361,9 +361,9 @@ diff \ <(jq -S .dependencies <<< $ctlPackageJson) \ <(jq -S .dependencies <<< $ctlScaffoldPackageJson) - # We don't want to include `doctoc` in the template dev dependencies. + # We don't want to include some dev dependencies. diff \ - <(jq -S '.devDependencies | del(.jssha) | del(.blakejs) | del(.doctoc)' <<< $ctlPackageJson) \ + <(jq -S '.devDependencies | del(.jssha) | del(.blakejs) | del(.doctoc) | del(.globals) | del(.["@eslint/js"])' <<< $ctlPackageJson) \ <(jq -S .devDependencies <<< $ctlScaffoldPackageJson) touch $out ''; diff --git a/packages.dhall b/packages.dhall index 51c4e18d2..77ceae2e6 100644 --- a/packages.dhall +++ b/packages.dhall @@ -450,8 +450,8 @@ let additions = , "unsafe-coerce" ] , repo = - "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "v1.0.0" + "https://github.com/errfrom/purescript-cardano-transaction-builder" + , version = "48866bd7f5eeb8e0870c97384264d08bda9c2725" } , mote-testplan = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 70e8b955c..393efc64b 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -295,19 +295,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; -<<<<<<< HEAD version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; rev = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; sha256 = "04h78kivkm9nnz5pxjqvgsf7g9gfzzjn6crwj3lh1m7kxgb1yxds"; -======= - version = "v1.0.2"; - src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "40d9468a4712ad2bf57ebede19fae92208f082a0"; - sha256 = "1iawinsrsipqgjrcgv650x3i2iad1z2vlwlhvlcx9880qmv0m9gc"; ->>>>>>> c02737564866f4f5a1d82ddf0e59eea6241c91a1 }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 7bafd4a07..7184f420f 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -3,181 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1719559353, - "narHash": "sha256-oVMUrDPUbVVsTWOsmtZkpHFr+oKPEezlSADm/s3A2/o=", + "lastModified": 1702742788, + "narHash": "sha256-lSU0M27LC0d60cJ2C2Kdo6gBwTCCYRiALbD528CoTtc=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "35bd2072a08607a3b2e4b56cf9c243c449908017", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_10": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_11": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_12": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_13": { - "flake": false, - "locked": { - "lastModified": 1714517469, - "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_14": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_15": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_16": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_17": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_18": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_19": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "rev": "4a236a8ad9e3c6d20235de27eacbe3d4de72479c", "type": "github" }, "original": { @@ -188,23 +18,6 @@ } }, "CHaP_2": { - "flake": false, - "locked": { - "lastModified": 1702906471, - "narHash": "sha256-br+hVo3R6nfmiSEPXcLKhIX4Kg5gcK2PjzjmvQsuUp8=", - "owner": "IntersectMBO", - "repo": "cardano-haskell-packages", - "rev": "48a359ac3f1d437ebaa91126b20e15a65201f004", - "type": "github" - }, - "original": { - "owner": "IntersectMBO", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_3": { "flake": false, "locked": { "lastModified": 1686070892, @@ -221,82 +34,14 @@ "type": "github" } }, - "CHaP_4": { - "flake": false, - "locked": { - "lastModified": 1702593630, - "narHash": "sha256-IWu27+sfPtazjIZiWLUm8G4BKvjXmIL+/1XT/ETnfhg=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "9783a177efcea5beb8808aab7513098bdab185ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_5": { - "flake": false, - "locked": { - "lastModified": 1719449018, - "narHash": "sha256-SHrUrjiohM2RMe0DctdO3vDDA40tI8NVTKmwc3egaeY=", - "owner": "intersectmbo", - "repo": "cardano-haskell-packages", - "rev": "6b048d1ad84220d47f870635e84df63590f5efa3", - "type": "github" - }, - "original": { - "owner": "intersectmbo", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_6": { - "flake": false, - "locked": { - "lastModified": 1714517469, - "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_7": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_8": { + "CHaP_3": { "flake": false, "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "lastModified": 1695160702, + "narHash": "sha256-+Mfc6eGA1ZwQ/ZjKzMoMWkHzd+sgR1JbxY0i849HjEU=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "rev": "9932690af3713ef034c928850252eb1b88450ee6", "type": "github" }, "original": { @@ -306,14 +51,14 @@ "type": "github" } }, - "CHaP_9": { + "CHaP_4": { "flake": false, "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", + "lastModified": 1694601145, + "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "rev": "e8298604717dbaa311c1e42e021b571670f4b039", "type": "github" }, "original": { @@ -339,7 +84,7 @@ "type": "github" } }, - "HTTP_10": { + "HTTP_2": { "flake": false, "locked": { "lastModified": 1451647621, @@ -355,7 +100,7 @@ "type": "github" } }, - "HTTP_11": { + "HTTP_3": { "flake": false, "locked": { "lastModified": 1451647621, @@ -371,7 +116,7 @@ "type": "github" } }, - "HTTP_12": { + "HTTP_4": { "flake": false, "locked": { "lastModified": 1451647621, @@ -387,7 +132,7 @@ "type": "github" } }, - "HTTP_13": { + "HTTP_5": { "flake": false, "locked": { "lastModified": 1451647621, @@ -403,7 +148,7 @@ "type": "github" } }, - "HTTP_14": { + "HTTP_6": { "flake": false, "locked": { "lastModified": 1451647621, @@ -419,7 +164,7 @@ "type": "github" } }, - "HTTP_15": { + "HTTP_7": { "flake": false, "locked": { "lastModified": 1451647621, @@ -435,31504 +180,9248 @@ "type": "github" } }, - "HTTP_16": { - "flake": false, + "agenix": { + "inputs": { + "nixpkgs": "nixpkgs_9" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_17": { - "flake": false, + "agenix-cli": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_10" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "HTTP_18": { - "flake": false, + "agenix-cli_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_12" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" + "owner": "cole-h", + "repo": "agenix-cli", + "type": "github" } }, - "HTTP_19": { - "flake": false, + "agenix-cli_3": { + "inputs": { + "flake-utils": "flake-utils_18", + "nixpkgs": "nixpkgs_41" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "HTTP_2": { - "flake": false, + "agenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_11" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_20": { - "flake": false, + "agenix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_21": { - "flake": false, + "agenix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_22": { - "flake": false, + "agenix_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_23": { - "flake": false, + "agenix_6": { + "inputs": { + "nixpkgs": "nixpkgs_40" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_24": { - "flake": false, + "agenix_7": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_25": { - "flake": false, + "agenix_8": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "owner": "ryantm", + "repo": "agenix", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_3": { - "flake": false, + "alejandra": { + "inputs": { + "flakeCompat": "flakeCompat", + "nixpkgs": "nixpkgs_35" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1646360966, + "narHash": "sha256-fJ/WHSU45bMJRDqz9yA3B2lwXtW5DKooU+Pzn13GyZI=", + "owner": "kamadorueda", + "repo": "alejandra", + "rev": "511c3f6a88b6964e1496fb6f441f4ae5e58bd3ea", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "kamadorueda", + "repo": "alejandra", "type": "github" } }, - "HTTP_4": { + "bats-assert": { "flake": false, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "HTTP_5": { + "bats-assert_2": { "flake": false, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "HTTP_6": { + "bats-assert_3": { "flake": false, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "bats-core", + "repo": "bats-assert", "type": "github" } }, - "HTTP_7": { + "bats-support": { "flake": false, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "HTTP_8": { + "bats-support_2": { "flake": false, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "HTTP_9": { + "bats-support_3": { "flake": false, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "bats-core", + "repo": "bats-support", "type": "github" } }, - "agenix": { + "bitte": { "inputs": { - "nixpkgs": "nixpkgs_37" + "agenix": "agenix", + "agenix-cli": "agenix-cli", + "blank": "blank_2", + "capsules": "capsules", + "data-merge": "data-merge", + "deploy": "deploy_2", + "fenix": "fenix_4", + "hydra": "hydra_3", + "n2c": "n2c_2", + "nix": "nix_5", + "nixpkgs": "nixpkgs_29", + "nixpkgs-docker": "nixpkgs-docker", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "nomad-driver-nix": "nomad-driver-nix_2", + "nomad-follower": "nomad-follower_2", + "ops-lib": "ops-lib_3", + "ragenix": "ragenix_3", + "std": "std_2", + "terranix": "terranix_2", + "utils": "utils_12" }, "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "lastModified": 1661790449, + "narHash": "sha256-lh1MlCOJE/LJMChGLREATWPnN9oKkjFFjnTvc9pX4Uo=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "f452ea2c392a4a301c1feb20955c7d0a4ad38130", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "agenix-cli": { + "bitte-cells": { "inputs": { - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_38" + "cardano-db-sync": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-db-sync" + ], + "cardano-iohk-nix": [ + "ctl", + "db-sync", + "cardano-world", + "iohk-nix" + ], + "cardano-node": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-node" + ], + "cardano-wallet": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet" + ], + "cicero": "cicero", + "data-merge": [ + "ctl", + "db-sync", + "cardano-world", + "data-merge" + ], + "n2c": [ + "ctl", + "db-sync", + "cardano-world", + "n2c" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "nixpkgs" + ], + "std": [ + "ctl", + "db-sync", + "cardano-world", + "std" + ] }, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1660761733, + "narHash": "sha256-Xqf6yRnjJXJ8jbwL9rlci8Z91tVDVwk3lorD6SnZuIg=", + "owner": "input-output-hk", + "repo": "bitte-cells", + "rev": "433bbca40bf461a86d55f202d26f87c9f5206377", "type": "github" }, "original": { - "owner": "cole-h", - "repo": "agenix-cli", + "owner": "input-output-hk", + "repo": "bitte-cells", "type": "github" } }, - "agenix-cli_2": { + "bitte_2": { "inputs": { - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_40" + "agenix": "agenix_2", + "agenix-cli": "agenix-cli_2", + "blank": "blank_3", + "deploy": "deploy", + "fenix": "fenix_2", + "hydra": "hydra_2", + "nix": "nix_2", + "nixpkgs": "nixpkgs_15", + "nixpkgs-unstable": "nixpkgs-unstable_2", + "nomad": "nomad", + "nomad-driver-nix": "nomad-driver-nix", + "nomad-follower": "nomad-follower", + "ops-lib": "ops-lib_2", + "ragenix": "ragenix", + "terranix": "terranix", + "utils": "utils_7", + "vulnix": "vulnix" }, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", "type": "github" }, "original": { - "owner": "cole-h", - "repo": "agenix-cli", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "agenix-cli_3": { + "bitte_3": { "inputs": { - "flake-utils": "flake-utils_33", - "nixpkgs": "nixpkgs_69" + "agenix": "agenix_6", + "agenix-cli": "agenix-cli_3", + "blank": "blank_4", + "deploy": "deploy_3", + "fenix": "fenix_6", + "hydra": "hydra_4", + "nix": "nix_9", + "nixpkgs": "nixpkgs_44", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "nomad": "nomad_2", + "nomad-driver-nix": "nomad-driver-nix_3", + "nomad-follower": "nomad-follower_3", + "ops-lib": "ops-lib_4", + "ragenix": "ragenix_4", + "terranix": "terranix_3", + "utils": "utils_21", + "vulnix": "vulnix_2" }, "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", + "lastModified": 1649886949, + "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", + "owner": "input-output-hk", + "repo": "bitte", + "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", "type": "github" }, "original": { - "owner": "cole-h", - "repo": "agenix-cli", + "owner": "input-output-hk", + "repo": "bitte", "type": "github" } }, - "agenix_2": { - "inputs": { - "nixpkgs": "nixpkgs_39" - }, + "blank": { "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "agenix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "blank_2": { "locked": { - "lastModified": 1640802000, - "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", - "owner": "ryantm", - "repo": "agenix", - "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "agenix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + "blank_3": { "locked": { - "lastModified": 1643841757, - "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", - "owner": "ryantm", - "repo": "agenix", - "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "agenix_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "blank_4": { "locked": { - "lastModified": 1640802000, - "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", - "owner": "ryantm", - "repo": "agenix", - "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "agenix_6": { - "inputs": { - "nixpkgs": "nixpkgs_68" - }, + "blank_5": { "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "divnix", + "repo": "blank", "type": "github" } }, - "agenix_7": { + "blockfrost": { "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] + "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1640802000, - "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", - "owner": "ryantm", - "repo": "agenix", - "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", + "lastModified": 1693412637, + "narHash": "sha256-uA2U7ZCdWv2Rxmi10uaMNNw8tiMbgcu2nnO6NTNp3VE=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "8d455ab1f710b7bd27d2aa87c82f0c5129101647", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "blockfrost", + "ref": "v1.7.0", + "repo": "blockfrost-backend-ryo", "type": "github" } }, - "agenix_8": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + "blst": { + "flake": false, "locked": { - "lastModified": 1643841757, - "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", - "owner": "ryantm", - "repo": "agenix", - "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "ryantm", - "repo": "agenix", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "alejandra": { - "inputs": { - "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_63" - }, + "blst_2": { + "flake": false, "locked": { - "lastModified": 1646360966, - "narHash": "sha256-fJ/WHSU45bMJRDqz9yA3B2lwXtW5DKooU+Pzn13GyZI=", - "owner": "kamadorueda", - "repo": "alejandra", - "rev": "511c3f6a88b6964e1496fb6f441f4ae5e58bd3ea", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "kamadorueda", - "repo": "alejandra", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "ameba-src": { + "byron-chain": { "flake": false, "locked": { - "lastModified": 1679041484, - "narHash": "sha256-pc9mtVR/PBhM5l1PnDkm+y+McxbrfAmQzxmLi761VF4=", - "owner": "crystal-ameba", - "repo": "ameba", - "rev": "7c74d196d6d9a496a81a0c7b79ef44f39faf41b8", + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", "type": "github" }, "original": { - "owner": "crystal-ameba", - "ref": "v1.4.3", - "repo": "ameba", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "auth-keys-hub": { - "inputs": { - "crystal": "crystal", - "flake-parts": "flake-parts_2", - "inclusive": "inclusive", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "nixpkgs" - ], - "statix": "statix", - "treefmt-nix": "treefmt-nix" - }, + "cabal-32": { + "flake": false, "locked": { - "lastModified": 1691483346, - "narHash": "sha256-wvn84eGcc+PMbq/qSCWcZ/kV7/bjwuGOVSn/9rGaaKw=", - "owner": "input-output-hk", - "repo": "auth-keys-hub", - "rev": "ab7c79f49886b8f24cfae4b967a59ea62af9156e", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "auth-keys-hub", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "bats-assert": { + "cabal-32_2": { "flake": false, "locked": { - "lastModified": 1636059754, - "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", - "owner": "bats-core", - "repo": "bats-assert", - "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-assert", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "bats-assert_2": { + "cabal-32_3": { "flake": false, "locked": { - "lastModified": 1636059754, - "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", - "owner": "bats-core", - "repo": "bats-assert", - "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-assert", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "bats-assert_3": { + "cabal-32_4": { "flake": false, "locked": { - "lastModified": 1636059754, - "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", - "owner": "bats-core", - "repo": "bats-assert", - "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-assert", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "bats-assert_4": { + "cabal-32_5": { "flake": false, "locked": { - "lastModified": 1636059754, - "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", - "owner": "bats-core", - "repo": "bats-assert", - "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-assert", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "bats-support": { + "cabal-32_6": { "flake": false, "locked": { - "lastModified": 1548869839, - "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", - "owner": "bats-core", - "repo": "bats-support", - "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-support", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "bats-support_2": { + "cabal-32_7": { "flake": false, "locked": { - "lastModified": 1548869839, - "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", - "owner": "bats-core", - "repo": "bats-support", - "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-support", + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", "type": "github" } }, - "bats-support_3": { + "cabal-34": { "flake": false, "locked": { - "lastModified": 1548869839, - "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", - "owner": "bats-core", - "repo": "bats-support", - "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-support", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "bats-support_4": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1548869839, - "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", - "owner": "bats-core", - "repo": "bats-support", - "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "bats-core", - "repo": "bats-support", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "bdwgc-src": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1661523039, - "narHash": "sha256-UYJQGeSykmfydGAmTlNJNyAPBasBkddOSoopBHiY7TI=", - "owner": "ivmai", - "repo": "bdwgc", - "rev": "cd1fbc1dbfd2cc888436944dd2784f39820698d7", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "ivmai", - "ref": "v8.2.2", - "repo": "bdwgc", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "bitte": { - "inputs": { - "agenix": "agenix", - "agenix-cli": "agenix-cli", - "blank": "blank_6", - "capsules": "capsules", - "data-merge": "data-merge", - "deploy": "deploy_2", - "fenix": "fenix_6", - "hydra": "hydra_7", - "n2c": "n2c_5", - "nix": "nix_10", - "nixpkgs": "nixpkgs_57", - "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "nomad-driver-nix": "nomad-driver-nix_2", - "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_5", - "ragenix": "ragenix_3", - "std": "std_6", - "terranix": "terranix_3", - "utils": "utils_17" - }, + "cabal-34_4": { + "flake": false, "locked": { - "lastModified": 1661790449, - "narHash": "sha256-lh1MlCOJE/LJMChGLREATWPnN9oKkjFFjnTvc9pX4Uo=", - "owner": "input-output-hk", - "repo": "bitte", - "rev": "f452ea2c392a4a301c1feb20955c7d0a4ad38130", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "bitte-cells": { - "inputs": { - "cardano-db-sync": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-db-sync" - ], - "cardano-iohk-nix": [ - "ctl", - "db-sync", - "cardano-world", - "iohk-nix" - ], - "cardano-node": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-node" - ], - "cardano-wallet": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet" - ], - "cicero": "cicero", - "data-merge": [ - "ctl", - "db-sync", - "cardano-world", - "data-merge" - ], - "n2c": [ - "ctl", - "db-sync", - "cardano-world", - "n2c" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "nixpkgs" - ], - "std": [ - "ctl", - "db-sync", - "cardano-world", - "std" - ] - }, + "cabal-34_5": { + "flake": false, "locked": { - "lastModified": 1660761733, - "narHash": "sha256-Xqf6yRnjJXJ8jbwL9rlci8Z91tVDVwk3lorD6SnZuIg=", - "owner": "input-output-hk", - "repo": "bitte-cells", - "rev": "433bbca40bf461a86d55f202d26f87c9f5206377", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-cells", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "bitte_2": { - "inputs": { - "agenix": "agenix_2", - "agenix-cli": "agenix-cli_2", - "blank": "blank_7", - "deploy": "deploy", - "fenix": "fenix_4", - "hydra": "hydra_6", - "nix": "nix_7", - "nixpkgs": "nixpkgs_43", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "nomad": "nomad", - "nomad-driver-nix": "nomad-driver-nix", - "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib_4", - "ragenix": "ragenix", - "terranix": "terranix_2", - "utils": "utils_12", - "vulnix": "vulnix" - }, + "cabal-34_6": { + "flake": false, "locked": { - "lastModified": 1649886949, - "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", - "owner": "input-output-hk", - "repo": "bitte", - "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "bitte_3": { - "inputs": { - "agenix": "agenix_6", - "agenix-cli": "agenix-cli_3", - "blank": "blank_8", - "deploy": "deploy_3", - "fenix": "fenix_8", - "hydra": "hydra_8", - "nix": "nix_14", - "nixpkgs": "nixpkgs_72", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "nomad": "nomad_2", - "nomad-driver-nix": "nomad-driver-nix_3", - "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_6", - "ragenix": "ragenix_4", - "terranix": "terranix_4", - "utils": "utils_26", - "vulnix": "vulnix_2" - }, + "cabal-34_7": { + "flake": false, "locked": { - "lastModified": 1649886949, - "narHash": "sha256-tvOo6cTtJGGCCzntAK8L7s6EmQ+PIAdN0wUvnpVFPCs=", - "owner": "input-output-hk", - "repo": "bitte", - "rev": "5df2f7e2cac09f0755dc8615ea0bd3cbc8884cd5", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "owner": "haskell", + "repo": "cabal", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte", + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", "type": "github" } }, - "blank": { + "cabal-36": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "blank", - "type": "github" - } - }, - "blank_2": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "blank_3": { + "cabal-36_2": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "blank_4": { + "cabal-36_3": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "blank_5": { + "cabal-36_4": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "blank_6": { + "cabal-36_5": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "blank_7": { + "cabal-36_6": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "blank_8": { + "cabal-36_7": { + "flake": false, "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { - "owner": "divnix", - "repo": "blank", + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", "type": "github" } }, - "blockfrost": { + "capsules": { "inputs": { - "nixpkgs": "nixpkgs" + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_23", + "ragenix": "ragenix_2" }, "locked": { - "lastModified": 1693412637, - "narHash": "sha256-uA2U7ZCdWv2Rxmi10uaMNNw8tiMbgcu2nnO6NTNp3VE=", - "owner": "blockfrost", - "repo": "blockfrost-backend-ryo", - "rev": "8d455ab1f710b7bd27d2aa87c82f0c5129101647", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "blockfrost", - "ref": "v1.7.0", - "repo": "blockfrost-backend-ryo", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "blst": { - "flake": false, + "capsules_2": { + "inputs": { + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_52", + "ragenix": "ragenix_5" + }, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "blst_10": { - "flake": false, + "cardano-automation": { + "inputs": { + "flake-utils": "flake-utils", + "haskellNix": [ + "ctl", + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "tullia": [ + "ctl", + "cardano-node", + "tullia" + ] + }, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "blst_11": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1699561895, + "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", "type": "github" } }, - "blst_12": { + "cardano-configurations_2": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1694019972, + "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "repo": "cardano-configurations", "type": "github" } }, - "blst_13": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "blst_14": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", + "owner": "input-output-hk", + "repo": "cardano-graphql", "type": "github" } }, - "blst_15": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_2" }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_16": { - "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "blst_17": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" + "cardano-node": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake", + "flake-compat": "flake-compat", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "hostNixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix", + "nix2container": "nix2container", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "ctl", + "cardano-node", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_2" }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_18": { - "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "blst_19": { + "cardano-node_2": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "blst_2": { + "cardano-shell": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "blst_20": { + "cardano-shell_2": { "flake": false, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "blst_21": { + "cardano-shell_3": { "flake": false, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "blst_22": { + "cardano-shell_4": { "flake": false, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "blst_3": { + "cardano-shell_5": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "blst_4": { + "cardano-shell_6": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "blst_5": { + "cardano-shell_7": { "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "blst_6": { - "flake": false, + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig_2", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_8", + "flake-utils": "flake-utils_25", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "blst_7": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "ctl", + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_9", + "hackage": "hackage_3", + "haskell-nix": "haskell-nix_2", + "iohk-nix": "iohk-nix", + "n2c": "n2c_3", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_63", + "nixpkgs-haskell": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_3", + "tullia": "tullia_2" + }, + "locked": { + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "type": "github" + }, "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "blst_8": { - "flake": false, + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_8", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix", + "inclusive": "inclusive_8", + "nix": "nix_8", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_39", + "poetry2nix": "poetry2nix", + "utils": "utils_16" + }, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "input-output-hk", + "repo": "cicero", "type": "github" } }, - "blst_9": { - "flake": false, + "ctl": { + "inputs": { + "CHaP": "CHaP", + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-node": "cardano-node", + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_11", + "hackage-nix": "hackage-nix", + "haskell-nix": "haskell-nix_3", + "hercules-ci-effects": "hercules-ci-effects", + "iohk-nix": "iohk-nix_2", + "kupo": "kupo", + "kupo-nixos": "kupo-nixos", + "nixpkgs": [ + "ctl", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios_2", + "ogmios-nixos": "ogmios-nixos", + "plutip": "plutip" + }, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1721765440, + "narHash": "sha256-H54m6RQRxb83z1IEp1y3krmQk7+SspymnSNaCKQm8LU=", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "ddbd601e882276958fe260b8c492b5c7f489f174", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "ddbd601e882276958fe260b8c492b5c7f489f174", "type": "github" } }, - "byron-chain": { - "flake": false, + "customConfig": { "locked": { - "lastModified": 1557232434, - "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", + "repo": "empty-flake", "type": "github" } }, - "cabal-32": { - "flake": false, + "customConfig_2": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "cabal-32_10": { - "flake": false, + "customConfig_3": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" + "path": "./custom-config", + "type": "path" } }, - "cabal-32_11": { - "flake": false, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants_2" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-32_12": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-32_13": { - "flake": false, + "data-merge_3": { + "inputs": { + "nixlib": "nixlib_3", + "yants": "yants_4" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-32_14": { - "flake": false, + "db-sync": { + "inputs": { + "cardano-world": "cardano-world", + "customConfig": "customConfig_3", + "flake-compat": "flake-compat_10", + "haskellNix": "haskellNix_3", + "iohkNix": "iohkNix_3", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_23" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "13.1.0.0", + "repo": "cardano-db-sync", "type": "github" } }, - "cabal-32_15": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "deploy": { + "inputs": { + "fenix": "fenix", + "flake-compat": "flake-compat_4", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_3" + }, + "locked": { + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "cabal-32_16": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_5", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_9" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "cabal-32_17": { - "flake": false, + "deploy_3": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_6", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_17" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "cabal-32_18": { - "flake": false, + "devshell": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_19": { - "flake": false, + "devshell_10": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_2": { - "flake": false, + "devshell_11": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_20": { - "flake": false, + "devshell_12": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_21": { - "flake": false, + "devshell_13": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_22": { - "flake": false, + "devshell_14": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_23": { - "flake": false, + "devshell_15": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_24": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" + "devshell_16": { + "inputs": { + "flake-utils": "flake-utils_31", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_25": { - "flake": false, + "devshell_2": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_3": { - "flake": false, + "devshell_3": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_4": { - "flake": false, + "devshell_4": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_5": { - "flake": false, + "devshell_5": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_6": { - "flake": false, + "devshell_6": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_7": { - "flake": false, + "devshell_7": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_8": { - "flake": false, + "devshell_8": { + "inputs": { + "flake-utils": "flake-utils_15", + "nixpkgs": "nixpkgs_36" + }, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-32_9": { - "flake": false, + "devshell_9": { "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cabal-34": { - "flake": false, + "dmerge": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-node", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-34_10": { - "flake": false, + "dmerge_2": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-34_11": { - "flake": false, + "dmerge_3": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cabal-34_12": { - "flake": false, + "driver": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_6", + "nix": "nix_7", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_13" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "cabal-34_13": { + "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "cabal-34_14": { + "em": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "cabal-34_15": { - "flake": false, + "ema": { + "inputs": { + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_54", + "pre-commit-hooks": "pre-commit-hooks" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "srid", + "repo": "ema", "type": "github" } }, - "cabal-34_16": { + "ema_2": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "srid", + "ref": "multisite", + "repo": "ema", "type": "github" } }, - "cabal-34_17": { - "flake": false, + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_57", + "tailwind-haskell": "tailwind-haskell" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "srid", + "repo": "emanote", "type": "github" } }, - "cabal-34_18": { - "flake": false, + "empty-flake": { "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "cabal-34_19": { - "flake": false, + "fenix": { + "inputs": { + "nixpkgs": "nixpkgs_13", + "rust-analyzer-src": "rust-analyzer-src" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cabal-34_2": { - "flake": false, + "fenix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cabal-34_20": { - "flake": false, + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_26", + "rust-analyzer-src": "rust-analyzer-src_3" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cabal-34_21": { - "flake": false, - "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34_22": { - "flake": false, + "fenix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cabal-34_23": { - "flake": false, + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_42", + "rust-analyzer-src": "rust-analyzer-src_5" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cabal-34_24": { - "flake": false, + "fenix_6": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_6" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "cabal-34_25": { + "flake-compat": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "cabal-34_3": { + "flake-compat_10": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "cabal-34_4": { + "flake-compat_11": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-34_5": { + "flake-compat_12": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "cabal-34_6": { + "flake-compat_13": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-34_7": { + "flake-compat_14": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-34_8": { + "flake-compat_15": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-34_9": { + "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "cabal-36": { + "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-36_10": { + "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-36_11": { + "flake-compat_5": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-36_12": { + "flake-compat_6": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-36_13": { + "flake-compat_7": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-36_14": { + "flake-compat_8": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "flake-compat", "type": "github" } }, - "cabal-36_15": { + "flake-compat_9": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cabal-36_16": { - "flake": false, + "flake-parts": { + "inputs": { + "nixpkgs": "nixpkgs_56" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "cabal-36_17": { - "flake": false, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "ctl", + "hercules-ci-effects", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" + "id": "flake-parts", + "type": "indirect" } }, - "cabal-36_18": { - "flake": false, + "flake-utils": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_19": { - "flake": false, + "flake-utils_10": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_2": { - "flake": false, + "flake-utils_11": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_20": { - "flake": false, + "flake-utils_12": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_21": { - "flake": false, + "flake-utils_13": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_22": { - "flake": false, + "flake-utils_14": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_23": { - "flake": false, + "flake-utils_15": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_24": { - "flake": false, + "flake-utils_16": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_25": { - "flake": false, + "flake-utils_17": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_3": { - "flake": false, + "flake-utils_18": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_4": { - "flake": false, + "flake-utils_19": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_5": { - "flake": false, + "flake-utils_2": { "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_6": { - "flake": false, + "flake-utils_20": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_7": { - "flake": false, + "flake-utils_21": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_8": { - "flake": false, + "flake-utils_22": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cabal-36_9": { - "flake": false, + "flake-utils_23": { "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "call-flake": { + "flake-utils_24": { "locked": { - "lastModified": 1687380775, - "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", - "owner": "divnix", - "repo": "call-flake", - "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { - "owner": "divnix", - "repo": "call-flake", + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", "type": "github" } }, - "capkgs": { + "flake-utils_25": { "locked": { - "lastModified": 1697123727, - "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", - "owner": "input-output-hk", - "repo": "capkgs", - "rev": "b197e225592dfe38afb80c94b628d99968c0541d", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "capkgs", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "capsules": { - "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_51", - "ragenix": "ragenix_2" - }, + "flake-utils_26": { "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "capsules_2": { - "inputs": { - "bitte": "bitte_3", - "iogo": "iogo_2", - "nixpkgs": "nixpkgs_80", - "ragenix": "ragenix_5" - }, + "flake-utils_27": { "locked": { - "lastModified": 1659466315, - "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-automation": { - "inputs": { - "flake-utils": "flake-utils_4", - "haskellNix": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "tullia": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia" - ] - }, + "flake-utils_28": { "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-automation_2": { - "inputs": { - "flake-utils": "flake-utils_9", - "haskellNix": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "tullia": "tullia_2" - }, + "flake-utils_29": { "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", - "type": "github" - } - }, - "cardano-automation_3": { - "inputs": { - "flake-utils": "flake-utils_16", - "haskellNix": [ - "ctl", - "cardano-node", - "haskellNix" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "tullia": "tullia_3" - }, - "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-configurations": { - "flake": false, + "flake-utils_3": { "locked": { - "lastModified": 1715909148, - "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-configurations-8.1.1": { - "flake": false, + "flake-utils_30": { "locked": { - "lastModified": 1692193634, - "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-configurations-8.7.3": { - "flake": false, + "flake-utils_31": { "locked": { - "lastModified": 1702085095, - "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-db-sync": { - "inputs": { - "CHaP": "CHaP_2", - "cardano-parts": "cardano-parts", - "flake-compat": "flake-compat_4", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "iohkNix": "iohkNix", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils" - }, + "flake-utils_32": { "locked": { - "lastModified": 1707925775, - "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", - "owner": "intersectmbo", - "repo": "cardano-db-sync", - "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "13.2.0.1", - "repo": "cardano-db-sync", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-db-sync-schema": { - "flake": false, + "flake-utils_33": { "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.1.3", - "repo": "cardano-db-sync", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-db-sync-schema-ng": { - "flake": false, + "flake-utils_4": { "locked": { - "lastModified": 1694078776, - "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "sancho-1-1-0", - "repo": "cardano-db-sync", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-db-sync-service": { - "flake": false, + "flake-utils_5": { "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.1.3", - "repo": "cardano-db-sync", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-explorer-app": { - "flake": false, + "flake-utils_6": { "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", - "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-graphql": { - "flake": false, + "flake-utils_7": { "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", - "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-graphql", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_14" - }, + "flake-utils_8": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_24" - }, + "flake-utils_9": { "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "cardano-mainnet-mirror_3": { - "inputs": { - "nixpkgs": "nixpkgs_33" - }, + "flakeCompat": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "cardano-nix": { + "follower": { "inputs": { - "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", - "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", - "cardano-db-sync": "cardano-db-sync", - "cardano-node-8.1.1": "cardano-node-8.1.1", - "cardano-node-8.7.3": "cardano-node-8.7.3", - "devour-flake": "devour-flake", - "devshell": "devshell_4", - "flake-parts": "flake-parts_5", - "flake-root": "flake-root", - "hercules-ci-effects": "hercules-ci-effects", + "devshell": "devshell_10", + "inclusive": "inclusive_7", "nixpkgs": [ "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", "nixpkgs" ], - "pre-commit-hooks-nix": "pre-commit-hooks-nix", - "treefmt-nix": "treefmt-nix_3" + "utils": "utils_14" }, "locked": { - "lastModified": 1719347639, - "narHash": "sha256-scs7lMJQ4kLSIh9nahzoxk9L6BRyt2hYFbr5nIaqCWY=", - "owner": "mlabs-haskell", - "repo": "cardano.nix", - "rev": "5c8a8bffcee77189b72fea6123b2a2845d1e731e", + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "cardano.nix", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "cardano-node": { - "inputs": { - "CHaP": "CHaP_5", - "cardano-automation": "cardano-automation_3", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "customConfig": "customConfig_3", - "em": "em_3", - "empty-flake": "empty-flake_4", - "flake-compat": "flake-compat_15", - "hackageNix": "hackageNix_4", - "haskellNix": "haskellNix_4", - "hostNixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_4", - "nix2container": "nix2container_6", - "nixpkgs": [ - "ctl", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_3", - "std": "std_5", - "utils": "utils_7" - }, + "ghc-8.6.5-iohk": { + "flake": false, "locked": { - "lastModified": 1719456236, - "narHash": "sha256-ElMb/C8Ljq8jiqUqVBVAf2crn5hF+vnG5UeShdS6MGQ=", - "owner": "IntersectMBO", - "repo": "cardano-node", - "rev": "06943b66e634fc9eb83ddb376ed3508003dbb607", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "IntersectMBO", - "ref": "8.12.1", - "repo": "cardano-node", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "cardano-node-8.1.1": { - "inputs": { - "CHaP": "CHaP_3", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake_2", - "flake-compat": "flake-compat_6", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_2", - "hostNixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "iohkNix": "iohkNix_2", - "nix2container": "nix2container", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib", - "std": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std" - ], - "tullia": "tullia", - "utils": "utils_3" - }, + "ghc-8.6.5-iohk_2": { + "flake": false, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.1.1", - "repo": "cardano-node", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "cardano-node-8.7.3": { - "inputs": { - "CHaP": "CHaP_4", - "cardano-automation": "cardano-automation_2", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "customConfig": "customConfig_2", - "em": "em_2", - "empty-flake": "empty-flake_3", - "flake-compat": "flake-compat_10", - "hackageNix": "hackageNix_3", - "haskellNix": "haskellNix_3", - "hostNixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "iohkNix": "iohkNix_3", - "nix2container": "nix2container_4", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_2", - "std": "std_3", - "utils": "utils_5" - }, + "ghc-8.6.5-iohk_3": { + "flake": false, "locked": { - "lastModified": 1702654749, - "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.7.3", - "repo": "cardano-node", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "cardano-node-service": { + "ghc-8.6.5-iohk_4": { "flake": false, "locked": { - "lastModified": 1690209950, - "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "8.1.2", - "repo": "cardano-node", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "cardano-node_2": { + "ghc-8.6.5-iohk_5": { "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "cardano-parts": { - "inputs": { - "auth-keys-hub": "auth-keys-hub", - "capkgs": "capkgs", - "cardano-db-sync-schema": "cardano-db-sync-schema", - "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", - "cardano-db-sync-service": "cardano-db-sync-service", - "cardano-node-service": "cardano-node-service", - "cardano-wallet-service": "cardano-wallet-service", - "colmena": "colmena", - "empty-flake": "empty-flake", - "flake-parts": "flake-parts_3", - "haskell-nix": "haskell-nix", - "inputs-check": "inputs-check", - "iohk-nix": "iohk-nix", - "iohk-nix-ng": "iohk-nix-ng", - "nix": "nix_2", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "nixpkgs-unstable": "nixpkgs-unstable_2", - "offchain-metadata-tools-service": "offchain-metadata-tools-service", - "sops-nix": "sops-nix", - "terraform-providers": "terraform-providers", - "terranix": "terranix", - "treefmt-nix": "treefmt-nix_2" - }, + "ghc-8.6.5-iohk_6": { + "flake": false, "locked": { - "lastModified": 1697147999, - "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "cardano-parts", - "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-parts", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "cardano-shell": { + "ghc-8.6.5-iohk_7": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "cardano-shell_10": { + "ghc98X": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "cardano-shell_11": { + "ghc99": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "cardano-shell_12": { - "flake": false, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_5", + "utils": "utils" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "cardano-shell_13": { + "hackage": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "hackage.nix", "type": "github" } }, - "cardano-shell_14": { + "hackage-nix": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1702772694, + "narHash": "sha256-KL6ZjbhPBCco1ho0lmh0/dfPSNxjF8qtrTlzQcTN3iw=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "hackage.nix", + "rev": "20bd4b5f667f892230d4a28ea4607e85ce9bc44e", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "hackage.nix", "type": "github" } }, - "cardano-shell_15": { + "hackageNix": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "hackage.nix", "type": "github" } }, - "cardano-shell_16": { + "hackage_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "hackage.nix", "type": "github" } }, - "cardano-shell_17": { + "hackage_3": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "hackage.nix", "type": "github" } }, - "cardano-shell_18": { + "hackage_4": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "hackage.nix", "type": "github" } }, - "cardano-shell_19": { + "hackage_5": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1654219082, + "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "hackage.nix", + "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "hackage.nix", "type": "github" } }, - "cardano-shell_2": { - "flake": false, + "haskell-flake": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "srid", + "repo": "haskell-flake", "type": "github" } }, - "cardano-shell_20": { - "flake": false, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-utils": "flake-utils_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "hackage": "hackage", + "hpc-coveralls": "hpc-coveralls_2", + "nix-tools": "nix-tools", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-unstable": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage_2" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "haskell.nix", "type": "github" } }, - "cardano-shell_21": { - "flake": false, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-utils": "flake-utils_27", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "hackage": [ + "ctl", + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_6", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_4" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "haskell.nix", "type": "github" } }, - "cardano-shell_22": { - "flake": false, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-compat": "flake-compat_12", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "ctl", + "hackage-nix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_6", + "hydra": "hydra_8", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_8", + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_6" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1702774226, + "narHash": "sha256-QUQBV05VimFU0pasJlialCcL/jlCumzaTmCM9+6Ncpk=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "haskell.nix", + "rev": "6ce1c8ab2a6d4af5721b22bd95968439b8c3c307", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "haskell.nix", "type": "github" } }, - "cardano-shell_23": { - "flake": false, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_33", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_5", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_9", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_7" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1654219238, + "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "haskell.nix", + "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", "type": "github" } }, - "cardano-shell_24": { - "flake": false, + "haskellNix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": [ + "ctl", + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": "stackage" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "haskell.nix", "type": "github" } }, - "cardano-shell_25": { - "flake": false, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-utils": "flake-utils_26", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_5", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_3" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "haskell.nix", "type": "github" } }, - "cardano-shell_3": { - "flake": false, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-utils": "flake-utils_32", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "hackage": "hackage_4", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_7", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-unstable": "nixpkgs-unstable_7", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_5" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "haskell.nix", "type": "github" } }, - "cardano-shell_4": { + "hercules-ci-effects": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_70" + }, + "locked": { + "lastModified": 1701009247, + "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hls-1.10": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "cardano-shell_5": { + "hls-1.10_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "cardano-shell_6": { + "hls-2.0": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "cardano-shell_7": { + "hls-2.2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "cardano-shell_8": { + "hls-2.3": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "cardano-shell_9": { + "hls-2.4": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "cardano-wallet": { - "inputs": { - "customConfig": "customConfig_4", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_21", - "flake-utils": "flake-utils_40", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "nixpkgs-unstable" - ] + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_2": { + "flake": false, "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "cardano-wallet-service": { + "hpc-coveralls_3": { "flake": false, "locked": { - "lastModified": 1689751896, - "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", - "owner": "cardano-foundation", - "repo": "cardano-wallet", - "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "cardano-foundation", - "ref": "v2023-07-18", - "repo": "cardano-wallet", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "cardano-world": { - "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ - "ctl", - "db-sync" - ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node_2", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_22", - "hackage": "hackage_4", - "haskell-nix": "haskell-nix_3", - "iohk-nix": "iohk-nix_2", - "n2c": "n2c_6", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_91", - "nixpkgs-haskell": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios", - "std": "std_7", - "tullia": "tullia_4" + "hpc-coveralls_4": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_5": { + "flake": false, "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", - "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-world", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "cicero": { - "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_12", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix_2", - "inclusive": "inclusive_9", - "nix": "nix_13", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_67", - "poetry2nix": "poetry2nix", - "utils": "utils_21" + "hpc-coveralls_6": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_7": { + "flake": false, "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", - "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cicero", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "colmena": { + "hydra": { "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", + "nix": "nix", "nixpkgs": [ "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", + "cardano-node", + "haskellNix", + "hydra", + "nix", "nixpkgs" - ], - "stable": "stable" + ] }, "locked": { - "lastModified": 1684127108, - "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", - "owner": "zhaofengli", - "repo": "colmena", - "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "zhaofengli", - "ref": "v0.4.0", - "repo": "colmena", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "crane": { + "hydra_2": { "inputs": { - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_14", + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], "nixpkgs": [ "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", "nixpkgs" - ], - "rust-overlay": "rust-overlay" + ] }, "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "ipetkov", - "repo": "crane", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "crystal": { + "hydra_3": { "inputs": { - "ameba-src": "ameba-src", - "bdwgc-src": "bdwgc-src", - "crystal-aarch64-darwin": "crystal-aarch64-darwin", - "crystal-src": "crystal-src", - "crystal-x86_64-darwin": "crystal-x86_64-darwin", - "crystal-x86_64-linux": "crystal-x86_64-linux", - "crystalline-src": "crystalline-src", - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_2" + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] }, "locked": { - "lastModified": 1683429373, - "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", - "owner": "manveru", - "repo": "crystal-flake", - "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "manveru", - "repo": "crystal-flake", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "crystal-aarch64-darwin": { - "flake": false, - "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "hydra_4": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] }, - "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" - } - }, - "crystal-src": { - "flake": false, "locked": { - "lastModified": 1681995387, - "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", - "owner": "crystal-lang", - "repo": "crystal", - "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "crystal-lang", - "ref": "1.8.1", - "repo": "crystal", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "crystal-x86_64-darwin": { - "flake": false, - "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "hydra_5": { + "inputs": { + "nix": "nix_12", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, - "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" - } - }, - "crystal-x86_64-linux": { - "flake": false, "locked": { - "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "id": "hydra", + "type": "indirect" } }, - "crystalline-src": { - "flake": false, + "hydra_6": { + "inputs": { + "nix": "nix_13", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681549124, - "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", - "owner": "elbywan", - "repo": "crystalline", - "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "elbywan", - "ref": "v0.9.0", - "repo": "crystalline", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "ctl": { + "hydra_7": { "inputs": { - "CHaP": "CHaP", - "blockfrost": "blockfrost", - "cardano-configurations": "cardano-configurations", - "cardano-nix": "cardano-nix", - "cardano-node": "cardano-node", - "db-sync": "db-sync", - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_24", - "hackage-nix": "hackage-nix", - "haskell-nix": "haskell-nix_4", - "hercules-ci-effects": "hercules-ci-effects_2", - "iohk-nix": "iohk-nix_3", - "kupo-nixos": "kupo-nixos", + "nix": "nix_14", "nixpkgs": [ "ctl", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios_2" + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, "locked": { -<<<<<<< HEAD - "lastModified": 1719862188, - "narHash": "sha256-8P5jkszksOIEExjVXfnL1TSBhrjpfneEDuC+sqiii4w=", - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "64028db993083b09ff9875a59def48e2f84de04b", -======= - "lastModified": 1721765440, - "narHash": "sha256-H54m6RQRxb83z1IEp1y3krmQk7+SspymnSNaCKQm8LU=", - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "ddbd601e882276958fe260b8c492b5c7f489f174", ->>>>>>> c02737564866f4f5a1d82ddf0e59eea6241c91a1 + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", -<<<<<<< HEAD - "rev": "64028db993083b09ff9875a59def48e2f84de04b", -======= - "rev": "ddbd601e882276958fe260b8c492b5c7f489f174", ->>>>>>> c02737564866f4f5a1d82ddf0e59eea6241c91a1 - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "customConfig": { + "hydra_8": { + "inputs": { + "nix": "nix_15", + "nixpkgs": [ + "ctl", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "customConfig_2": { + "hydra_9": { + "inputs": { + "nix": "nix_16", + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "customConfig_3": { + "incl": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "customConfig_4": { + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "repo": "nix-inclusive", "type": "github" } }, - "customConfig_5": { + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" }, "original": { - "path": "./custom-config", - "type": "path" + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" } }, - "data-merge": { + "inclusive_11": { "inputs": { - "nixlib": "nixlib", - "yants": "yants_6" + "stdlib": "stdlib_11" }, "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", - "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "data-merge_2": { + "inclusive_2": { "inputs": { - "nixlib": "nixlib_2" + "stdlib": "stdlib_2" }, "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "data-merge_3": { + "inclusive_3": { "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_8" + "stdlib": "stdlib_3" }, "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "db-sync": { + "inclusive_4": { "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_23", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_28" + "stdlib": "stdlib_4" }, "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "13.1.0.0", - "repo": "cardano-db-sync", + "repo": "nix-inclusive", "type": "github" } }, - "deploy": { + "inclusive_5": { "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_17", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_8" + "stdlib": "stdlib_5" }, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "nix-inclusive", "type": "github" } }, - "deploy_2": { + "inclusive_6": { "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_18", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_14" + "stdlib": "stdlib_6" }, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "nix-inclusive", "type": "github" } }, - "deploy_3": { + "inclusive_7": { "inputs": { - "fenix": "fenix_7", - "flake-compat": "flake-compat_19", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_22" + "stdlib": "stdlib_7" }, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "nix-inclusive", "type": "github" } }, - "devour-flake": { - "flake": false, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, "locked": { - "lastModified": 1709858306, - "narHash": "sha256-Vey9n9hIlWiSAZ6CCTpkrL6jt4r2JvT2ik9wa2bjeC0=", - "owner": "srid", - "repo": "devour-flake", - "rev": "17b711b9deadbbc5629cb7d2b64cf86ae72af3fa", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "srid", - "repo": "devour-flake", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "devshell": { + "inclusive_9": { "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] + "stdlib": "stdlib_9" }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "devshell_10": { + "iogo": { + "inputs": { + "devshell": "devshell_4", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_22", + "utils": "utils_8" + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "bitte-iogo", "type": "github" } }, - "devshell_11": { + "iogo_2": { + "inputs": { + "devshell": "devshell_14", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_51", + "utils": "utils_22" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iohk-nix": { "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "bitte", - "std", "nixpkgs" ] }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "devshell_12": { + "iohk-nix_2": { "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_64" + "blst": "blst_2", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" }, "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "devshell_13": { + "iohk-nix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "kupo-nixos", + "haskell-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" } }, - "devshell_14": { + "iohkNix": { + "inputs": { + "blst": "blst", + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "secp256k1": "secp256k1", + "sodium": "sodium" + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "devshell_15": { + "iohkNix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" } }, - "devshell_16": { + "iohkNix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "devshell_17": { + "iserv-proxy": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "devshell_18": { + "iserv-proxy_2": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "devshell_19": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "kupo": { + "flake": false, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1668678914, + "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", + "owner": "CardanoSolutions", + "repo": "kupo", + "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "CardanoSolutions", + "ref": "v2.2.0", + "repo": "kupo", "type": "github" } }, - "devshell_2": { + "kupo-nixos": { "inputs": { - "flake-utils": [ + "haskell-nix": "haskell-nix_4", + "iohk-nix": "iohk-nix_3", + "kupo": [ "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" + "kupo" ], "nixpkgs": [ "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", + "kupo-nixos", + "haskell-nix", "nixpkgs" ] }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1672905539, + "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "mlabs-haskell", + "repo": "kupo-nixos", + "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", "type": "github" } }, - "devshell_20": { - "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] - }, + "lowdown-src": { + "flake": false, "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "devshell_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "systems": "systems_2" - }, + "lowdown-src_10": { + "flake": false, "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", - "owner": "numtide", - "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "devshell_4": { - "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": [ - "ctl", - "cardano-nix", - "nixpkgs" - ] - }, + "lowdown-src_11": { + "flake": false, "locked": { - "lastModified": 1713532798, - "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", - "owner": "numtide", - "repo": "devshell", - "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "devshell_5": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "lowdown-src_12": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "devshell_6": { + "lowdown-src_13": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "devshell_7": { + "lowdown-src_14": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "devshell_8": { + "lowdown-src_15": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "devshell_9": { + "lowdown-src_16": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "dmerge": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "yants" - ] - }, + "lowdown-src_2": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "dmerge_2": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "lowdown-src_3": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "dmerge_3": { - "inputs": { - "haumea": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea" - ], - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, + "lowdown-src_4": { + "flake": false, "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "dmerge_4": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "lowdown-src_5": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "dmerge_5": { - "inputs": { - "haumea": [ - "ctl", - "cardano-node", - "std", - "haumea" - ], - "nixlib": [ - "ctl", - "cardano-node", - "std", - "lib" - ], - "yants": [ - "ctl", - "cardano-node", - "std", - "yants" - ] - }, + "lowdown-src_6": { + "flake": false, "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "dmerge_6": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] - }, + "lowdown-src_7": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "dmerge_7": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "yants" - ] - }, + "lowdown-src_8": { + "flake": false, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "driver": { - "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_7", - "nix": "nix_12", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_18" - }, + "lowdown-src_9": { + "flake": false, "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "easy-purescript-nix": { + "mdbook-kroki-preprocessor": { "flake": false, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "easy-purescript-nix_10": { - "inputs": { - "flake-utils": "flake-utils_78" - }, + "mdbook-kroki-preprocessor_2": { + "flake": false, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "easy-purescript-nix_11": { + "n2c": { "inputs": { - "flake-utils": "flake-utils_80" + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "easy-purescript-nix_12": { + "n2c_2": { "inputs": { - "flake-utils": "flake-utils_82" + "flake-utils": "flake-utils_11", + "nixpkgs": "nixpkgs_27" }, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "easy-purescript-nix_13": { + "n2c_3": { "inputs": { - "flake-utils": "flake-utils_86" + "flake-utils": "flake-utils_28", + "nixpkgs": "nixpkgs_62" }, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "easy-purescript-nix_14": { + "nix": { "inputs": { - "flake-utils": "flake-utils_92" + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_3", + "nixpkgs-regression": "nixpkgs-regression" }, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "easy-purescript-nix_15": { + "nix-cache-proxy": { "inputs": { - "flake-utils": "flake-utils_94" + "devshell": "devshell_11", + "inclusive": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_15" }, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "nix-cache-proxy", "type": "github" } }, - "easy-purescript-nix_16": { + "nix-inclusive": { "inputs": { - "flake-utils": "flake-utils_98" + "stdlib": "stdlib_12" }, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "easy-purescript-nix_2": { + "nix-nomad": { "inputs": { - "flake-utils": "flake-utils_48" + "flake-compat": "flake-compat_3", + "flake-utils": [ + "ctl", + "cardano-node", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "cardano-node", + "tullia", + "nixpkgs" + ] }, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "easy-purescript-nix_3": { - "inputs": { - "flake-utils": "flake-utils_50" - }, + "nix-tools": { + "flake": false, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "easy-purescript-nix_4": { - "inputs": { - "flake-utils": "flake-utils_52" - }, + "nix-tools_2": { + "flake": false, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "easy-purescript-nix_5": { - "inputs": { - "flake-utils": "flake-utils_54" - }, + "nix-tools_3": { + "flake": false, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "easy-purescript-nix_6": { - "inputs": { - "flake-utils": "flake-utils_58" - }, + "nix-tools_4": { + "flake": false, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "easy-purescript-nix_7": { - "inputs": { - "flake-utils": "flake-utils_64" - }, + "nix-tools_5": { + "flake": false, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "easy-purescript-nix_8": { + "nix2container": { "inputs": { - "flake-utils": "flake-utils_66" + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "easy-purescript-nix_9": { + "nix2container_2": { "inputs": { - "flake-utils": "flake-utils_70" + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "em": { - "flake": false, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" + }, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", "type": "github" } }, - "em_2": { - "flake": false, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_45" + }, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "NixOS", + "repo": "nix", "type": "github" } }, - "em_3": { - "flake": false, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_47", + "nixpkgs-regression": "nixpkgs-regression_9" + }, "locked": { - "lastModified": 1685015066, - "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", - "owner": "deepfire", - "repo": "em", - "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "ema": { + "nix_12": { "inputs": { - "flake-compat": "flake-compat_20", - "flake-utils": "flake-utils_37", - "nixpkgs": "nixpkgs_82", - "pre-commit-hooks": "pre-commit-hooks" + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_59", + "nixpkgs-regression": "nixpkgs-regression_10" }, "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { - "owner": "srid", - "repo": "ema", + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "ema_2": { - "flake": false, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_61", + "nixpkgs-regression": "nixpkgs-regression_11" + }, "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", - "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { - "owner": "srid", - "ref": "multisite", - "repo": "ema", + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "emanote": { + "nix_14": { "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts_6", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_85", - "tailwind-haskell": "tailwind-haskell" + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_68", + "nixpkgs-regression": "nixpkgs-regression_12" }, "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { - "owner": "srid", - "repo": "emanote", + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "empty-flake": { + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_69", + "nixpkgs-regression": "nixpkgs-regression_13" + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "empty-flake_2": { + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_71", + "nixpkgs-regression": "nixpkgs-regression_14" + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "empty-flake_3": { + "nix_2": { + "inputs": { + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_14", + "nixpkgs-regression": "nixpkgs-regression_2" + }, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "empty-flake_4": { - "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "fenix": { + "nix_3": { "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "auth-keys-hub", - "statix", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_16" }, "locked": { - "lastModified": 1645251813, - "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", - "owner": "nix-community", - "repo": "fenix", - "rev": "9892337b588c38ec59466a1c89befce464aae7f8", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "NixOS", + "repo": "nix", "type": "github" } }, - "fenix_2": { + "nix_4": { "inputs": { - "nixpkgs": "nixpkgs_29", - "rust-analyzer-src": "rust-analyzer-src_2" + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_18", + "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "fenix_3": { + "nix_5": { "inputs": { - "nixpkgs": "nixpkgs_41", - "rust-analyzer-src": "rust-analyzer-src_3" + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_28", + "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", "type": "github" } }, - "fenix_4": { + "nix_6": { "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_4" + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_30", + "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "fenix_5": { + "nix_7": { "inputs": { - "nixpkgs": "nixpkgs_54", - "rust-analyzer-src": "rust-analyzer-src_5" + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_37", + "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" } }, - "fenix_6": { + "nix_8": { "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_6" + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_38", + "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" } }, - "fenix_7": { + "nix_9": { "inputs": { - "nixpkgs": "nixpkgs_70", - "rust-analyzer-src": "rust-analyzer-src_7" + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_43", + "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "fenix_8": { + "nixago": { "inputs": { - "nixpkgs": [ + "flake-utils": [ "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs-unstable" + "cardano-node", + "tullia", + "std", + "flake-utils" ], - "rust-analyzer-src": "rust-analyzer-src_8" + "nixago-exts": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", + "repo": "nixago", "type": "github" } }, - "flake-compat_10": { - "flake": false, + "nixago-exts": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "flake-compat_11": { - "flake": false, + "nixago-exts_2": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "flake-compat_12": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "nixago_2": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "flake-compat_13": { - "flake": false, + "nixago_3": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "flake-compat_14": { - "flake": false, + "nixlib": { "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "flake-compat_15": { - "flake": false, + "nixlib_2": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "flake-compat_16": { - "flake": false, + "nixlib_3": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "flake-compat_17": { - "flake": false, + "nixpkgs": { "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_18": { - "flake": false, + "nixpkgs-2003": { "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_19": { - "flake": false, + "nixpkgs-2003_2": { "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_2": { - "flake": false, + "nixpkgs-2003_3": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_20": { - "flake": false, + "nixpkgs-2003_4": { "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_21": { - "flake": false, + "nixpkgs-2003_5": { "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_22": { - "flake": false, + "nixpkgs-2003_6": { "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_23": { - "flake": false, + "nixpkgs-2003_7": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_24": { - "flake": false, + "nixpkgs-2105": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_25": { - "flake": false, + "nixpkgs-2105_2": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_26": { - "flake": false, + "nixpkgs-2105_3": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_27": { - "flake": false, + "nixpkgs-2105_4": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_28": { - "flake": false, + "nixpkgs-2105_5": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_29": { - "flake": false, + "nixpkgs-2105_6": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_3": { - "flake": false, + "nixpkgs-2105_7": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_30": { - "flake": false, + "nixpkgs-2111": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_31": { - "flake": false, + "nixpkgs-2111_2": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_32": { - "flake": false, + "nixpkgs-2111_3": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_33": { - "flake": false, + "nixpkgs-2111_4": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_34": { - "flake": false, + "nixpkgs-2111_5": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_35": { - "flake": false, + "nixpkgs-2111_6": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_36": { - "flake": false, + "nixpkgs-2111_7": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_37": { - "flake": false, + "nixpkgs-2205": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_38": { - "flake": false, + "nixpkgs-2205_2": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_39": { - "flake": false, + "nixpkgs-2205_3": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_4": { - "flake": false, + "nixpkgs-2211": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_40": { - "flake": false, + "nixpkgs-2211_2": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_41": { - "flake": false, + "nixpkgs-2305": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_42": { - "flake": false, + "nixpkgs-2311": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_43": { - "flake": false, + "nixpkgs-docker": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "flake-compat_44": { - "flake": false, + "nixpkgs-regression": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "flake-compat_45": { - "flake": false, + "nixpkgs-regression_10": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_46": { - "flake": false, + "nixpkgs-regression_11": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_47": { - "flake": false, + "nixpkgs-regression_12": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_48": { - "flake": false, + "nixpkgs-regression_13": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "flake-compat_49": { - "flake": false, + "nixpkgs-regression_14": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_5": { - "flake": false, + "nixpkgs-regression_2": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_50": { - "flake": false, + "nixpkgs-regression_3": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_51": { - "flake": false, + "nixpkgs-regression_4": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_52": { - "flake": false, + "nixpkgs-regression_5": { "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_53": { - "flake": false, + "nixpkgs-regression_6": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_54": { - "flake": false, + "nixpkgs-regression_7": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_55": { - "flake": false, + "nixpkgs-regression_8": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_56": { - "flake": false, + "nixpkgs-regression_9": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "flake-compat_6": { - "flake": false, + "nixpkgs-unstable": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_7": { - "flake": false, + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_8": { - "flake": false, + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-compat_9": { - "flake": false, + "nixpkgs-unstable_4": { "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, + "nixpkgs-unstable_5": { "locked": { - "lastModified": 1672152762, - "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_2" - }, + "nixpkgs-unstable_6": { "locked": { - "lastModified": 1682984683, - "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "86684881e184f41aa322e653880e497b66429f3e", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_3" - }, + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_4" - }, + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1701336116, + "narHash": "sha256-kEmpezCR/FpITc6yMbAh4WrOCiT2zg5pSjnKrq51h5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f5c27c6136db4d76c30e533c20517df6864c46ee", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_5" - }, + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-parts_6": { - "inputs": { - "nixpkgs": "nixpkgs_84" - }, + "nixpkgs_10": { "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "ctl", - "hercules-ci-effects", - "nixpkgs" - ] - }, + "nixpkgs_11": { "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "id": "flake-parts", + "id": "nixpkgs", "type": "indirect" } }, - "flake-root": { + "nixpkgs_12": { "locked": { - "lastModified": 1713493429, - "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", - "owner": "srid", - "repo": "flake-root", - "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "srid", - "repo": "flake-root", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils": { + "nixpkgs_13": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_10": { + "nixpkgs_14": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_100": { - "inputs": { - "systems": "systems_58" - }, + "nixpkgs_15": { "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "flake-utils_101": { - "inputs": { - "systems": "systems_59" - }, + "nixpkgs_16": { "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "flake-utils_102": { - "inputs": { - "systems": "systems_60" - }, + "nixpkgs_17": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_103": { - "inputs": { - "systems": "systems_61" - }, + "nixpkgs_18": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_104": { - "inputs": { - "systems": "systems_62" - }, + "nixpkgs_19": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_105": { - "inputs": { - "systems": "systems_63" - }, + "nixpkgs_2": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "flake-utils_106": { - "inputs": { - "systems": "systems_64" - }, + "nixpkgs_20": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_107": { - "inputs": { - "systems": "systems_65" - }, + "nixpkgs_21": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_11": { + "nixpkgs_22": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_12": { + "nixpkgs_23": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_13": { + "nixpkgs_24": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_14": { + "nixpkgs_25": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "flake-utils_15": { - "inputs": { - "systems": "systems_3" - }, + "nixpkgs_26": { "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_16": { + "nixpkgs_27": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_17": { + "nixpkgs_28": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_18": { + "nixpkgs_29": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_19": { + "nixpkgs_3": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_2": { + "nixpkgs_30": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_20": { - "inputs": { - "systems": "systems_4" - }, + "nixpkgs_31": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_21": { + "nixpkgs_32": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_22": { + "nixpkgs_33": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_23": { + "nixpkgs_34": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_24": { + "nixpkgs_35": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_25": { + "nixpkgs_36": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_26": { + "nixpkgs_37": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_27": { + "nixpkgs_38": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_28": { + "nixpkgs_39": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_29": { + "nixpkgs_4": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_3": { + "nixpkgs_40": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "flake-utils_30": { + "nixpkgs_41": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_31": { + "nixpkgs_42": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_32": { + "nixpkgs_43": { "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_33": { + "nixpkgs_44": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "flake-utils_34": { + "nixpkgs_45": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "flake-utils_35": { + "nixpkgs_46": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_36": { + "nixpkgs_47": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_37": { + "nixpkgs_48": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_38": { + "nixpkgs_49": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_39": { + "nixpkgs_5": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_4": { + "nixpkgs_50": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_40": { + "nixpkgs_51": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_41": { + "nixpkgs_52": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_42": { + "nixpkgs_53": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_43": { + "nixpkgs_54": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "flake-utils_44": { + "nixpkgs_55": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "flake-utils_45": { + "nixpkgs_56": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_46": { + "nixpkgs_57": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "flake-utils_47": { + "nixpkgs_58": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "flake-utils_48": { - "inputs": { - "systems": "systems_6" - }, + "nixpkgs_59": { "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_49": { - "inputs": { - "systems": "systems_7" - }, + "nixpkgs_6": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_5": { + "nixpkgs_60": { "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "flake-utils_50": { - "inputs": { - "systems": "systems_8" - }, + "nixpkgs_61": { "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "flake-utils_51": { - "inputs": { - "systems": "systems_9" - }, + "nixpkgs_62": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_52": { - "inputs": { - "systems": "systems_10" - }, + "nixpkgs_63": { "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_53": { - "inputs": { - "systems": "systems_11" - }, + "nixpkgs_64": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "flake-utils_54": { - "inputs": { - "systems": "systems_12" - }, + "nixpkgs_65": { "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_55": { - "inputs": { - "systems": "systems_13" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_56": { - "inputs": { - "systems": "systems_14" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_57": { - "inputs": { - "systems": "systems_15" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_58": { - "inputs": { - "systems": "systems_16" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_59": { - "inputs": { - "systems": "systems_17" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_60": { - "inputs": { - "systems": "systems_18" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_61": { - "inputs": { - "systems": "systems_19" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_62": { - "inputs": { - "systems": "systems_20" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_63": { - "inputs": { - "systems": "systems_21" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_64": { - "inputs": { - "systems": "systems_22" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_65": { - "inputs": { - "systems": "systems_23" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_66": { - "inputs": { - "systems": "systems_24" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_67": { - "inputs": { - "systems": "systems_25" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_68": { - "inputs": { - "systems": "systems_26" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_69": { - "inputs": { - "systems": "systems_27" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_7": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_70": { - "inputs": { - "systems": "systems_28" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_71": { - "inputs": { - "systems": "systems_29" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_72": { - "inputs": { - "systems": "systems_30" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_73": { - "inputs": { - "systems": "systems_31" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_74": { - "inputs": { - "systems": "systems_32" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_75": { - "inputs": { - "systems": "systems_33" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_76": { - "inputs": { - "systems": "systems_34" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_77": { - "inputs": { - "systems": "systems_35" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_78": { - "inputs": { - "systems": "systems_36" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_79": { - "inputs": { - "systems": "systems_37" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_8": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_80": { - "inputs": { - "systems": "systems_38" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_81": { - "inputs": { - "systems": "systems_39" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_82": { - "inputs": { - "systems": "systems_40" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_83": { - "inputs": { - "systems": "systems_41" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_84": { - "inputs": { - "systems": "systems_42" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_85": { - "inputs": { - "systems": "systems_43" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_86": { - "inputs": { - "systems": "systems_44" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_87": { - "inputs": { - "systems": "systems_45" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_88": { - "inputs": { - "systems": "systems_46" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_89": { - "inputs": { - "systems": "systems_47" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_9": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_90": { - "inputs": { - "systems": "systems_48" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_91": { - "inputs": { - "systems": "systems_49" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_92": { - "inputs": { - "systems": "systems_50" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_93": { - "inputs": { - "systems": "systems_51" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_94": { - "inputs": { - "systems": "systems_52" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_95": { - "inputs": { - "systems": "systems_53" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_96": { - "inputs": { - "systems": "systems_54" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_97": { - "inputs": { - "systems": "systems_55" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_98": { - "inputs": { - "systems": "systems_56" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_99": { - "inputs": { - "systems": "systems_57" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flakeCompat": { - "flake": false, - "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "follower": { - "inputs": { - "devshell": "devshell_14", - "inclusive": "inclusive_8", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_19" - }, - "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", - "type": "github" - } - }, - "ghc-8.6.5-iohk": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_10": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_11": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_12": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_13": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_14": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_15": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_16": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_17": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_18": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_19": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_2": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_20": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_21": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_22": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_23": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_24": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_25": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_3": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_4": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_5": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_6": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_7": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_8": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_9": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc910X": { - "flake": false, - "locked": { - "lastModified": 1714520650, - "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", - "ref": "ghc-9.10", - "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", - "revCount": 62663, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_2": { - "flake": false, - "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", - "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_3": { - "flake": false, - "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", - "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_4": { - "flake": false, - "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_5": { - "flake": false, - "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_6": { - "flake": false, - "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", - "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_7": { - "flake": false, - "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_8": { - "flake": false, - "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911": { - "flake": false, - "locked": { - "lastModified": 1714817013, - "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", - "ref": "refs/heads/master", - "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", - "revCount": 62816, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_2": { - "flake": false, - "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", - "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_3": { - "flake": false, - "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", - "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_4": { - "flake": false, - "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_5": { - "flake": false, - "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_6": { - "flake": false, - "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", - "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_7": { - "flake": false, - "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_8": { - "flake": false, - "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_10": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_2": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_3": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_4": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_5": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_6": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_7": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_8": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_9": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99": { - "flake": false, - "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_10": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_2": { - "flake": false, - "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_3": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_4": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_5": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_6": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_7": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_8": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_9": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_10": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_11": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_12": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_13": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_14": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_15": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_16": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_7": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_8": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_9": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_17", - "utils": "utils_2" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_21", - "utils": "utils_4" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_3": { - "inputs": { - "nixpkgs": "nixpkgs_30", - "utils": "utils_6" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1692145451, - "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage-nix": { - "flake": false, - "locked": { - "lastModified": 1719535035, - "narHash": "sha256-kCCfZytGgkRYlsiNe/dwLAnpNOvfywpjVl61hO/8l2M=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "66f23365685f71610460f3c2c0dfa91f96c532ac", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix": { - "flake": false, - "locked": { - "lastModified": 1702945378, - "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_2": { - "flake": false, - "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_3": { - "flake": false, - "locked": { - "lastModified": 1701303758, - "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_4": { - "flake": false, - "locked": { - "lastModified": 1718757495, - "narHash": "sha256-xviuxucDjsQ2HbqzfwVyB4ZmDIyzOnf2oDbVtwBHIco=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "0bb764772a383a926e3f945397a0e59ab3c64d6d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_10": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_11": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_12": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_13": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_14": { - "flake": false, - "locked": { - "lastModified": 1714610224, - "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_15": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_16": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_17": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_18": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_19": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_2": { - "flake": false, - "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_20": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_3": { - "flake": false, - "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_4": { - "flake": false, - "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_5": { - "flake": false, - "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_6": { - "flake": false, - "locked": { - "lastModified": 1714955666, - "narHash": "sha256-2FHDnM7dK2FH7xGQmcoHbMMP1PGHgKkBmfXC5/LLNVc=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "69a0fce63963cf4299cb24c2a0d2ee0428d227dd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_7": { - "flake": false, - "locked": { - "lastModified": 1714610224, - "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_8": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_9": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "haskell-flake": { - "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "empty-flake" - ] - }, - "locked": { - "lastModified": 1692147008, - "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_10": { - "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_16", - "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_34", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "ghc910X": "ghc910X_5", - "ghc911": "ghc911_5", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_12", - "hls-2.0": "hls-2.0_11", - "hls-2.2": "hls-2.2_10", - "hls-2.3": "hls-2.3_10", - "hls-2.4": "hls-2.4_10", - "hls-2.5": "hls-2.5_6", - "hls-2.6": "hls-2.6_6", - "hls-2.7": "hls-2.7_6", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_18", - "iserv-proxy": "iserv-proxy_12", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_13", - "nixpkgs-2211": "nixpkgs-2211_12", - "nixpkgs-2305": "nixpkgs-2305_11", - "nixpkgs-2311": "nixpkgs-2311_8", - "nixpkgs-unstable": "nixpkgs-unstable_19", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_15" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_11": { - "inputs": { - "HTTP": "HTTP_17", - "cabal-32": "cabal-32_17", - "cabal-34": "cabal-34_17", - "cabal-36": "cabal-36_17", - "cardano-shell": "cardano-shell_17", - "flake-compat": "flake-compat_35", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", - "ghc98X": "ghc98X_5", - "ghc99": "ghc99_5", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_13", - "hls-2.0": "hls-2.0_12", - "hls-2.2": "hls-2.2_11", - "hls-2.3": "hls-2.3_11", - "hls-2.4": "hls-2.4_11", - "hpc-coveralls": "hpc-coveralls_17", - "hydra": "hydra_19", - "iserv-proxy": "iserv-proxy_13", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_17", - "nixpkgs-2105": "nixpkgs-2105_17", - "nixpkgs-2111": "nixpkgs-2111_17", - "nixpkgs-2205": "nixpkgs-2205_14", - "nixpkgs-2211": "nixpkgs-2211_13", - "nixpkgs-2305": "nixpkgs-2305_12", - "nixpkgs-2311": "nixpkgs-2311_9", - "nixpkgs-unstable": "nixpkgs-unstable_20", - "old-ghc-nix": "old-ghc-nix_17", - "stackage": "stackage_16" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_12": { - "inputs": { - "HTTP": "HTTP_18", - "cabal-32": "cabal-32_18", - "cabal-34": "cabal-34_18", - "cabal-36": "cabal-36_18", - "cardano-shell": "cardano-shell_18", - "flake-compat": "flake-compat_37", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", - "ghc98X": "ghc98X_6", - "ghc99": "ghc99_6", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_14", - "hls-2.0": "hls-2.0_13", - "hls-2.2": "hls-2.2_12", - "hls-2.3": "hls-2.3_12", - "hls-2.4": "hls-2.4_12", - "hpc-coveralls": "hpc-coveralls_18", - "hydra": "hydra_20", - "iserv-proxy": "iserv-proxy_14", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_18", - "nixpkgs-2105": "nixpkgs-2105_18", - "nixpkgs-2111": "nixpkgs-2111_18", - "nixpkgs-2205": "nixpkgs-2205_15", - "nixpkgs-2211": "nixpkgs-2211_14", - "nixpkgs-2305": "nixpkgs-2305_13", - "nixpkgs-2311": "nixpkgs-2311_10", - "nixpkgs-unstable": "nixpkgs-unstable_21", - "old-ghc-nix": "old-ghc-nix_18", - "stackage": "stackage_17" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_13": { - "inputs": { - "HTTP": "HTTP_19", - "cabal-32": "cabal-32_19", - "cabal-34": "cabal-34_19", - "cabal-36": "cabal-36_19", - "cardano-shell": "cardano-shell_19", - "flake-compat": "flake-compat_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", - "ghc910X": "ghc910X_6", - "ghc911": "ghc911_6", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_15", - "hls-2.0": "hls-2.0_14", - "hls-2.2": "hls-2.2_13", - "hls-2.3": "hls-2.3_13", - "hls-2.4": "hls-2.4_13", - "hls-2.5": "hls-2.5_7", - "hls-2.6": "hls-2.6_7", - "hls-2.7": "hls-2.7_7", - "hpc-coveralls": "hpc-coveralls_19", - "hydra": "hydra_21", - "iserv-proxy": "iserv-proxy_15", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_19", - "nixpkgs-2105": "nixpkgs-2105_19", - "nixpkgs-2111": "nixpkgs-2111_19", - "nixpkgs-2205": "nixpkgs-2205_16", - "nixpkgs-2211": "nixpkgs-2211_15", - "nixpkgs-2305": "nixpkgs-2305_14", - "nixpkgs-2311": "nixpkgs-2311_11", - "nixpkgs-unstable": "nixpkgs-unstable_22", - "old-ghc-nix": "old-ghc-nix_19", - "stackage": "stackage_18" - }, - "locked": { - "lastModified": 1714611016, - "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_14": { - "inputs": { - "HTTP": "HTTP_20", - "cabal-32": "cabal-32_20", - "cabal-34": "cabal-34_20", - "cabal-36": "cabal-36_20", - "cardano-shell": "cardano-shell_20", - "flake-compat": "flake-compat_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", - "ghc910X": "ghc910X_7", - "ghc911": "ghc911_7", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_16", - "hls-2.0": "hls-2.0_15", - "hls-2.2": "hls-2.2_14", - "hls-2.3": "hls-2.3_14", - "hls-2.4": "hls-2.4_14", - "hls-2.5": "hls-2.5_8", - "hls-2.6": "hls-2.6_8", - "hls-2.7": "hls-2.7_8", - "hpc-coveralls": "hpc-coveralls_20", - "hydra": "hydra_22", - "iserv-proxy": "iserv-proxy_16", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_20", - "nixpkgs-2105": "nixpkgs-2105_20", - "nixpkgs-2111": "nixpkgs-2111_20", - "nixpkgs-2205": "nixpkgs-2205_17", - "nixpkgs-2211": "nixpkgs-2211_16", - "nixpkgs-2305": "nixpkgs-2305_15", - "nixpkgs-2311": "nixpkgs-2311_12", - "nixpkgs-unstable": "nixpkgs-unstable_23", - "old-ghc-nix": "old-ghc-nix_20", - "stackage": "stackage_19" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_15": { - "inputs": { - "HTTP": "HTTP_21", - "cabal-32": "cabal-32_21", - "cabal-34": "cabal-34_21", - "cabal-36": "cabal-36_21", - "cardano-shell": "cardano-shell_21", - "flake-compat": "flake-compat_43", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", - "ghc98X": "ghc98X_7", - "ghc99": "ghc99_7", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_17", - "hls-2.0": "hls-2.0_16", - "hls-2.2": "hls-2.2_15", - "hls-2.3": "hls-2.3_15", - "hls-2.4": "hls-2.4_15", - "hpc-coveralls": "hpc-coveralls_21", - "hydra": "hydra_23", - "iserv-proxy": "iserv-proxy_17", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_21", - "nixpkgs-2105": "nixpkgs-2105_21", - "nixpkgs-2111": "nixpkgs-2111_21", - "nixpkgs-2205": "nixpkgs-2205_18", - "nixpkgs-2211": "nixpkgs-2211_17", - "nixpkgs-2305": "nixpkgs-2305_16", - "nixpkgs-2311": "nixpkgs-2311_13", - "nixpkgs-unstable": "nixpkgs-unstable_24", - "old-ghc-nix": "old-ghc-nix_21", - "stackage": "stackage_20" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_16": { - "inputs": { - "HTTP": "HTTP_22", - "cabal-32": "cabal-32_22", - "cabal-34": "cabal-34_22", - "cabal-36": "cabal-36_22", - "cardano-shell": "cardano-shell_22", - "flake-compat": "flake-compat_45", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", - "ghc98X": "ghc98X_8", - "ghc99": "ghc99_8", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_18", - "hls-2.0": "hls-2.0_17", - "hls-2.2": "hls-2.2_16", - "hls-2.3": "hls-2.3_16", - "hls-2.4": "hls-2.4_16", - "hpc-coveralls": "hpc-coveralls_22", - "hydra": "hydra_24", - "iserv-proxy": "iserv-proxy_18", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_22", - "nixpkgs-2105": "nixpkgs-2105_22", - "nixpkgs-2111": "nixpkgs-2111_22", - "nixpkgs-2205": "nixpkgs-2205_19", - "nixpkgs-2211": "nixpkgs-2211_18", - "nixpkgs-2305": "nixpkgs-2305_17", - "nixpkgs-2311": "nixpkgs-2311_14", - "nixpkgs-unstable": "nixpkgs-unstable_25", - "old-ghc-nix": "old-ghc-nix_22", - "stackage": "stackage_21" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_17": { - "inputs": { - "HTTP": "HTTP_23", - "cabal-32": "cabal-32_23", - "cabal-34": "cabal-34_23", - "cabal-36": "cabal-36_23", - "cardano-shell": "cardano-shell_23", - "flake-compat": "flake-compat_48", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", - "ghc910X": "ghc910X_8", - "ghc911": "ghc911_8", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_19", - "hls-2.0": "hls-2.0_18", - "hls-2.2": "hls-2.2_17", - "hls-2.3": "hls-2.3_17", - "hls-2.4": "hls-2.4_17", - "hls-2.5": "hls-2.5_9", - "hls-2.6": "hls-2.6_9", - "hls-2.7": "hls-2.7_9", - "hpc-coveralls": "hpc-coveralls_23", - "hydra": "hydra_25", - "iserv-proxy": "iserv-proxy_19", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_23", - "nixpkgs-2105": "nixpkgs-2105_23", - "nixpkgs-2111": "nixpkgs-2111_23", - "nixpkgs-2205": "nixpkgs-2205_20", - "nixpkgs-2211": "nixpkgs-2211_19", - "nixpkgs-2305": "nixpkgs-2305_18", - "nixpkgs-2311": "nixpkgs-2311_15", - "nixpkgs-unstable": "nixpkgs-unstable_26", - "old-ghc-nix": "old-ghc-nix_23", - "stackage": "stackage_22" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_18": { - "inputs": { - "HTTP": "HTTP_24", - "cabal-32": "cabal-32_24", - "cabal-34": "cabal-34_24", - "cabal-36": "cabal-36_24", - "cardano-shell": "cardano-shell_24", - "flake-compat": "flake-compat_49", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", - "ghc98X": "ghc98X_9", - "ghc99": "ghc99_9", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_20", - "hls-2.0": "hls-2.0_19", - "hls-2.2": "hls-2.2_18", - "hls-2.3": "hls-2.3_18", - "hls-2.4": "hls-2.4_18", - "hpc-coveralls": "hpc-coveralls_24", - "hydra": "hydra_26", - "iserv-proxy": "iserv-proxy_20", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_24", - "nixpkgs-2105": "nixpkgs-2105_24", - "nixpkgs-2111": "nixpkgs-2111_24", - "nixpkgs-2205": "nixpkgs-2205_21", - "nixpkgs-2211": "nixpkgs-2211_20", - "nixpkgs-2305": "nixpkgs-2305_19", - "nixpkgs-2311": "nixpkgs-2311_16", - "nixpkgs-unstable": "nixpkgs-unstable_27", - "old-ghc-nix": "old-ghc-nix_24", - "stackage": "stackage_23" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_19": { - "inputs": { - "HTTP": "HTTP_25", - "cabal-32": "cabal-32_25", - "cabal-34": "cabal-34_25", - "cabal-36": "cabal-36_25", - "cardano-shell": "cardano-shell_25", - "flake-compat": "flake-compat_51", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", - "ghc98X": "ghc98X_10", - "ghc99": "ghc99_10", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_21", - "hls-2.0": "hls-2.0_20", - "hls-2.2": "hls-2.2_19", - "hls-2.3": "hls-2.3_19", - "hls-2.4": "hls-2.4_19", - "hpc-coveralls": "hpc-coveralls_25", - "hydra": "hydra_27", - "iserv-proxy": "iserv-proxy_21", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_25", - "nixpkgs-2105": "nixpkgs-2105_25", - "nixpkgs-2111": "nixpkgs-2111_25", - "nixpkgs-2205": "nixpkgs-2205_22", - "nixpkgs-2211": "nixpkgs-2211_21", - "nixpkgs-2305": "nixpkgs-2305_20", - "nixpkgs-2311": "nixpkgs-2311_17", - "nixpkgs-unstable": "nixpkgs-unstable_28", - "old-ghc-nix": "old-ghc-nix_25", - "stackage": "stackage_24" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_31", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_6", - "nix-tools": "nix-tools", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-unstable": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_5" - }, - "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": [ - "ctl", - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_7" - }, - "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-compat": "flake-compat_25", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": [ - "ctl", - "hackage-nix" - ], - "hls-1.10": "hls-1.10_6", - "hls-2.0": "hls-2.0_5", - "hls-2.2": "hls-2.2_4", - "hls-2.3": "hls-2.3_4", - "hls-2.4": "hls-2.4_4", - "hls-2.5": "hls-2.5_2", - "hls-2.6": "hls-2.6_2", - "hls-2.7": "hls-2.7_2", - "hls-2.8": "hls-2.8_2", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_12", - "iserv-proxy": "iserv-proxy_6", - "nixpkgs": [ - "ctl", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-2205": "nixpkgs-2205_7", - "nixpkgs-2211": "nixpkgs-2211_6", - "nixpkgs-2305": "nixpkgs-2305_5", - "nixpkgs-2311": "nixpkgs-2311_2", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_9" - }, - "locked": { - "lastModified": 1719535822, - "narHash": "sha256-IteIKK4+GEZI2nHqCz0zRVgQ3aqs/WXKTOt2sbHJmGk=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "72bc84d0a4e8d0536505628040d96fd0a9e16c70", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_5": { - "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "ghc910X": "ghc910X_2", - "ghc911": "ghc911_2", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_7", - "hls-2.0": "hls-2.0_6", - "hls-2.2": "hls-2.2_5", - "hls-2.3": "hls-2.3_5", - "hls-2.4": "hls-2.4_5", - "hls-2.5": "hls-2.5_3", - "hls-2.6": "hls-2.6_3", - "hls-2.7": "hls-2.7_3", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_13", - "iserv-proxy": "iserv-proxy_7", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_8", - "nixpkgs-2211": "nixpkgs-2211_7", - "nixpkgs-2305": "nixpkgs-2305_6", - "nixpkgs-2311": "nixpkgs-2311_3", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_10" - }, - "locked": { - "lastModified": 1714956613, - "narHash": "sha256-h2n+7SsDHFE9SfStJjHxludjmhV5iupstehh6EGLUGU=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6a9b5d11bdd09bcf739c5e837fa4a776b4c48646", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_6": { - "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_12", - "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "ghc910X": "ghc910X_3", - "ghc911": "ghc911_3", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_8", - "hls-2.0": "hls-2.0_7", - "hls-2.2": "hls-2.2_6", - "hls-2.3": "hls-2.3_6", - "hls-2.4": "hls-2.4_6", - "hls-2.5": "hls-2.5_4", - "hls-2.6": "hls-2.6_4", - "hls-2.7": "hls-2.7_4", - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_14", - "iserv-proxy": "iserv-proxy_8", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-2205": "nixpkgs-2205_9", - "nixpkgs-2211": "nixpkgs-2211_8", - "nixpkgs-2305": "nixpkgs-2305_7", - "nixpkgs-2311": "nixpkgs-2311_4", - "nixpkgs-unstable": "nixpkgs-unstable_15", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_11" - }, - "locked": { - "lastModified": 1714611016, - "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_7": { - "inputs": { - "HTTP": "HTTP_13", - "cabal-32": "cabal-32_13", - "cabal-34": "cabal-34_13", - "cabal-36": "cabal-36_13", - "cardano-shell": "cardano-shell_13", - "flake-compat": "flake-compat_28", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "ghc910X": "ghc910X_4", - "ghc911": "ghc911_4", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_9", - "hls-2.0": "hls-2.0_8", - "hls-2.2": "hls-2.2_7", - "hls-2.3": "hls-2.3_7", - "hls-2.4": "hls-2.4_7", - "hls-2.5": "hls-2.5_5", - "hls-2.6": "hls-2.6_5", - "hls-2.7": "hls-2.7_5", - "hpc-coveralls": "hpc-coveralls_13", - "hydra": "hydra_15", - "iserv-proxy": "iserv-proxy_9", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_13", - "nixpkgs-2105": "nixpkgs-2105_13", - "nixpkgs-2111": "nixpkgs-2111_13", - "nixpkgs-2205": "nixpkgs-2205_10", - "nixpkgs-2211": "nixpkgs-2211_9", - "nixpkgs-2305": "nixpkgs-2305_8", - "nixpkgs-2311": "nixpkgs-2311_5", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_13", - "stackage": "stackage_12" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_8": { - "inputs": { - "HTTP": "HTTP_14", - "cabal-32": "cabal-32_14", - "cabal-34": "cabal-34_14", - "cabal-36": "cabal-36_14", - "cardano-shell": "cardano-shell_14", - "flake-compat": "flake-compat_29", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", - "ghc98X": "ghc98X_3", - "ghc99": "ghc99_3", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_10", - "hls-2.0": "hls-2.0_9", - "hls-2.2": "hls-2.2_8", - "hls-2.3": "hls-2.3_8", - "hls-2.4": "hls-2.4_8", - "hpc-coveralls": "hpc-coveralls_14", - "hydra": "hydra_16", - "iserv-proxy": "iserv-proxy_10", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_14", - "nixpkgs-2105": "nixpkgs-2105_14", - "nixpkgs-2111": "nixpkgs-2111_14", - "nixpkgs-2205": "nixpkgs-2205_11", - "nixpkgs-2211": "nixpkgs-2211_10", - "nixpkgs-2305": "nixpkgs-2305_9", - "nixpkgs-2311": "nixpkgs-2311_6", - "nixpkgs-unstable": "nixpkgs-unstable_17", - "old-ghc-nix": "old-ghc-nix_14", - "stackage": "stackage_13" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_9": { - "inputs": { - "HTTP": "HTTP_15", - "cabal-32": "cabal-32_15", - "cabal-34": "cabal-34_15", - "cabal-36": "cabal-36_15", - "cardano-shell": "cardano-shell_15", - "flake-compat": "flake-compat_31", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", - "ghc98X": "ghc98X_4", - "ghc99": "ghc99_4", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_11", - "hls-2.0": "hls-2.0_10", - "hls-2.2": "hls-2.2_9", - "hls-2.3": "hls-2.3_9", - "hls-2.4": "hls-2.4_9", - "hpc-coveralls": "hpc-coveralls_15", - "hydra": "hydra_17", - "iserv-proxy": "iserv-proxy_11", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_15", - "nixpkgs-2105": "nixpkgs-2105_15", - "nixpkgs-2111": "nixpkgs-2111_15", - "nixpkgs-2205": "nixpkgs-2205_12", - "nixpkgs-2211": "nixpkgs-2211_11", - "nixpkgs-2305": "nixpkgs-2305_10", - "nixpkgs-2311": "nixpkgs-2311_7", - "nixpkgs-unstable": "nixpkgs-unstable_18", - "old-ghc-nix": "old-ghc-nix_15", - "stackage": "stackage_14" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "hackageNix" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0_2", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305_2", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage" - }, - "locked": { - "lastModified": 1701053834, - "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "hackageNix" - ], - "hls-1.10": "hls-1.10_3", - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_3", - "iserv-proxy": "iserv-proxy_3", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211_3", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_2" - }, - "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-compat": "flake-compat_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "ghc98X": "ghc98X_2", - "ghc99": "ghc99_2", - "hackage": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "hackageNix" - ], - "hls-1.10": "hls-1.10_4", - "hls-2.0": "hls-2.0_3", - "hls-2.2": "hls-2.2_2", - "hls-2.3": "hls-2.3_2", - "hls-2.4": "hls-2.4_2", - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_4", - "iserv-proxy": "iserv-proxy_4", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-2211": "nixpkgs-2211_4", - "nixpkgs-2305": "nixpkgs-2305_3", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_3" - }, - "locked": { - "lastModified": 1700441391, - "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_4": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-compat": "flake-compat_16", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "ghc910X": "ghc910X", - "ghc911": "ghc911", - "hackage": [ - "ctl", - "cardano-node", - "hackageNix" - ], - "hls-1.10": "hls-1.10_5", - "hls-2.0": "hls-2.0_4", - "hls-2.2": "hls-2.2_3", - "hls-2.3": "hls-2.3_3", - "hls-2.4": "hls-2.4_3", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", - "hls-2.7": "hls-2.7", - "hls-2.8": "hls-2.8", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_5", - "iserv-proxy": "iserv-proxy_5", - "nixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-2205": "nixpkgs-2205_5", - "nixpkgs-2211": "nixpkgs-2211_5", - "nixpkgs-2305": "nixpkgs-2305_4", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_4" - }, - "locked": { - "lastModified": 1718797200, - "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "cb139fa956158397aa398186bb32dd26f7318784", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_5": { - "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_6" - }, - "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_47", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_9", - "hydra": "hydra_11", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_8" - }, - "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haumea": { - "inputs": { - "nixpkgs": "nixpkgs_27" - }, - "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "haumea_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-node", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": [ - "ctl", - "cardano-nix", - "flake-parts" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1714676393, - "narHash": "sha256-OA2LZPTCHyH0PcsNkjeTLvgsn4JmsV2VTvXQacHeUZU=", - "owner": "mlabs-haskell", - "repo": "hercules-ci-effects", - "rev": "5ad8f9613b735cb4f8222f07ae45ca37bfe76a23", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "ref": "push-cache-effect", - "repo": "hercules-ci-effects", - "type": "github" - } - }, - "hercules-ci-effects_2": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_98" - }, - "locked": { - "lastModified": 1719226092, - "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "type": "github" - } - }, - "hls-1.10": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_10": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_11": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_12": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_13": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_14": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_15": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_16": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_17": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_18": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_19": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_2": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_20": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_21": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_3": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_4": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_5": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_6": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_7": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_8": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_9": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_10": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_11": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_12": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_13": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_14": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_15": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_16": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_17": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_18": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_19": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_2": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_20": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_3": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_4": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_5": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_6": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_7": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_8": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_9": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_10": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_11": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_12": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_13": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_14": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_15": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_16": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_17": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_18": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_19": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_3": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_4": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_5": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_6": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_7": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_8": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_9": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_10": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_11": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_12": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_13": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_14": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_15": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_16": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_17": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_18": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_19": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_2": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_3": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_4": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_5": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_6": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_7": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_8": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_9": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4": { - "flake": false, - "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_10": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_11": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_12": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_13": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_14": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_15": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_16": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_17": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_18": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_19": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_2": { - "flake": false, - "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_3": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_4": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_5": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_6": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_7": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_8": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_9": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_2": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_3": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_4": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_6": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_7": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_8": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_9": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_2": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_3": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_4": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_5": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_7": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_8": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_9": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_2": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_3": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_4": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_5": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_6": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_7": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_8": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_9": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.8": { - "flake": false, - "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.8_2": { - "flake": false, - "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hpc-coveralls": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_10": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_11": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_12": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_13": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_14": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_15": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_16": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_17": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_18": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_19": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_2": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_20": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_21": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_22": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_23": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_24": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_25": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_3": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_4": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_5": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_6": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_7": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_8": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_9": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_10": { - "inputs": { - "nix": "nix_18", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_11": { - "inputs": { - "nix": "nix_19", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_12": { - "inputs": { - "nix": "nix_20", - "nixpkgs": [ - "ctl", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_13": { - "inputs": { - "nix": "nix_21", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_14": { - "inputs": { - "nix": "nix_22", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_15": { - "inputs": { - "nix": "nix_23", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_16": { - "inputs": { - "nix": "nix_24", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_17": { - "inputs": { - "nix": "nix_25", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_18": { - "inputs": { - "nix": "nix_26", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_19": { - "inputs": { - "nix": "nix_27", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_2": { - "inputs": { - "nix": "nix_3", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_20": { - "inputs": { - "nix": "nix_28", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_21": { - "inputs": { - "nix": "nix_29", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_22": { - "inputs": { - "nix": "nix_30", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_23": { - "inputs": { - "nix": "nix_31", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_24": { - "inputs": { - "nix": "nix_32", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_25": { - "inputs": { - "nix": "nix_33", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_26": { - "inputs": { - "nix": "nix_34", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_27": { - "inputs": { - "nix": "nix_35", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_3": { - "inputs": { - "nix": "nix_4", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_4": { - "inputs": { - "nix": "nix_5", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_5": { - "inputs": { - "nix": "nix_6", - "nixpkgs": [ - "ctl", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_6": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_7": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_8": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_9": { - "inputs": { - "nix": "nix_17", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "incl": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_2": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_3": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_4": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-node", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "inclusive": { - "inputs": { - "stdlib": "stdlib" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_10": { - "inputs": { - "stdlib": "stdlib_10" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_11": { - "inputs": { - "stdlib": "stdlib_11" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_12": { - "inputs": { - "stdlib": "stdlib_12" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_2": { - "inputs": { - "stdlib": "stdlib_2" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_3": { - "inputs": { - "stdlib": "stdlib_3" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_4": { - "inputs": { - "stdlib": "stdlib_4" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_5": { - "inputs": { - "stdlib": "stdlib_5" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_6": { - "inputs": { - "stdlib": "stdlib_6" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_7": { - "inputs": { - "stdlib": "stdlib_7" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_8": { - "inputs": { - "stdlib": "stdlib_8" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_9": { - "inputs": { - "stdlib": "stdlib_9" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inputs-check": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_6" - }, - "locked": { - "lastModified": 1692633913, - "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", - "owner": "input-output-hk", - "repo": "inputs-check", - "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "inputs-check", - "type": "github" - } - }, - "iogo": { - "inputs": { - "devshell": "devshell_8", - "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_50", - "utils": "utils_13" - }, - "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", - "type": "github" - } - }, - "iogo_2": { - "inputs": { - "devshell": "devshell_18", - "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_79", - "utils": "utils_27" - }, - "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", - "type": "github" - } - }, - "iogx": { - "inputs": { - "CHaP": [ - "ctl", - "kupo-nixos", - "CHaP" - ], - "easy-purescript-nix": "easy-purescript-nix_2", - "flake-utils": "flake-utils_49", - "hackage": "hackage_6", - "haskell-nix": "haskell-nix_5", - "iogx-template-haskell": "iogx-template-haskell", - "iogx-template-vanilla": "iogx-template-vanilla_4", - "iohk-nix": "iohk-nix_18", - "nix2container": "nix2container_22", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_30", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_16", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_15" - }, - "locked": { - "lastModified": 1714993151, - "narHash": "sha256-qnhgqo24celzlf+KjZ+oqypsCezgVZRueHbfiq73bDE=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "819ae1510a5ebdeb999c723033a2a641aa9bfd23", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell": { - "inputs": { - "iogx": "iogx_2" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1714715538, - "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_2": { - "inputs": { - "iogx": "iogx_3" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_3": { - "inputs": { - "iogx": "iogx_4" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_4": { - "inputs": { - "iogx": "iogx_7" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_5": { - "inputs": { - "iogx": "iogx_10" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_6": { - "inputs": { - "iogx": "iogx_11" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_7": { - "inputs": { - "iogx": "iogx_14" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla": { - "inputs": { - "iogx": "iogx_5" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_2": { - "inputs": { - "iogx": "iogx_6" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_3": { - "inputs": { - "iogx": "iogx_8" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_4": { - "inputs": { - "iogx": "iogx_9" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1714715538, - "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_5": { - "inputs": { - "iogx": "iogx_12" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_6": { - "inputs": { - "iogx": "iogx_13" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_7": { - "inputs": { - "iogx": "iogx_15" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_10": { - "inputs": { - "CHaP": "CHaP_14", - "easy-purescript-nix": "easy-purescript-nix_11", - "flake-utils": "flake-utils_81", - "hackage": "hackage_15", - "haskell-nix": "haskell-nix_14", - "iogx-template-haskell": "iogx-template-haskell_6", - "iogx-template-vanilla": "iogx-template-vanilla_5", - "iohk-nix": "iohk-nix_13", - "nix2container": "nix2container_17", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_20", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_11", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_10" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_11": { - "inputs": { - "CHaP": "CHaP_15", - "easy-purescript-nix": "easy-purescript-nix_12", - "flake-utils": "flake-utils_83", - "hackage": "hackage_16", - "haskell-nix": "haskell-nix_15", - "iohk-nix": "iohk-nix_11", - "nix2container": "nix2container_15", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_16", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_9", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_8" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_12": { - "inputs": { - "CHaP": "CHaP_16", - "easy-purescript-nix": "easy-purescript-nix_13", - "flake-utils": "flake-utils_87", - "hackage": "hackage_17", - "haskell-nix": "haskell-nix_16", - "iohk-nix": "iohk-nix_12", - "nix2container": "nix2container_16", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_18", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_10", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_9" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_13": { - "inputs": { - "CHaP": "CHaP_17", - "easy-purescript-nix": "easy-purescript-nix_14", - "flake-utils": "flake-utils_93", - "hackage": "hackage_18", - "haskell-nix": "haskell-nix_17", - "iogx-template-haskell": "iogx-template-haskell_7", - "iogx-template-vanilla": "iogx-template-vanilla_7", - "iohk-nix": "iohk-nix_16", - "nix2container": "nix2container_20", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_26", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_14", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_13" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_14": { - "inputs": { - "CHaP": "CHaP_18", - "easy-purescript-nix": "easy-purescript-nix_15", - "flake-utils": "flake-utils_95", - "hackage": "hackage_19", - "haskell-nix": "haskell-nix_18", - "iohk-nix": "iohk-nix_14", - "nix2container": "nix2container_18", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_22", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_12", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_11" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_15": { - "inputs": { - "CHaP": "CHaP_19", - "easy-purescript-nix": "easy-purescript-nix_16", - "flake-utils": "flake-utils_99", - "hackage": "hackage_20", - "haskell-nix": "haskell-nix_19", - "iohk-nix": "iohk-nix_15", - "nix2container": "nix2container_19", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_24", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_13", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_12" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_2": { - "inputs": { - "CHaP": "CHaP_6", - "easy-purescript-nix": "easy-purescript-nix_3", - "flake-utils": "flake-utils_51", - "hackage": "hackage_7", - "haskell-nix": "haskell-nix_6", - "iogx-template-haskell": "iogx-template-haskell_2", - "iogx-template-vanilla": "iogx-template-vanilla_2", - "iohk-nix": "iohk-nix_10", - "nix2container": "nix2container_14", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_14", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_8", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_7" - }, - "locked": { - "lastModified": 1714680367, - "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_3": { - "inputs": { - "CHaP": "CHaP_7", - "easy-purescript-nix": "easy-purescript-nix_4", - "flake-utils": "flake-utils_53", - "hackage": "hackage_8", - "haskell-nix": "haskell-nix_7", - "iogx-template-haskell": "iogx-template-haskell_3", - "iogx-template-vanilla": "iogx-template-vanilla", - "iohk-nix": "iohk-nix_6", - "nix2container": "nix2container_10", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_6", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_4", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_3" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_4": { - "inputs": { - "CHaP": "CHaP_8", - "easy-purescript-nix": "easy-purescript-nix_5", - "flake-utils": "flake-utils_55", - "hackage": "hackage_9", - "haskell-nix": "haskell-nix_8", - "iohk-nix": "iohk-nix_4", - "nix2container": "nix2container_8", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_2", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_2", - "sphinxcontrib-haddock": "sphinxcontrib-haddock" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_5": { - "inputs": { - "CHaP": "CHaP_9", - "easy-purescript-nix": "easy-purescript-nix_6", - "flake-utils": "flake-utils_59", - "hackage": "hackage_10", - "haskell-nix": "haskell-nix_9", - "iohk-nix": "iohk-nix_5", - "nix2container": "nix2container_9", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_4", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_3", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_2" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_6": { - "inputs": { - "CHaP": "CHaP_10", - "easy-purescript-nix": "easy-purescript-nix_7", - "flake-utils": "flake-utils_65", - "hackage": "hackage_11", - "haskell-nix": "haskell-nix_10", - "iogx-template-haskell": "iogx-template-haskell_4", - "iogx-template-vanilla": "iogx-template-vanilla_3", - "iohk-nix": "iohk-nix_9", - "nix2container": "nix2container_13", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_12", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_7", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_6" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_7": { - "inputs": { - "CHaP": "CHaP_11", - "easy-purescript-nix": "easy-purescript-nix_8", - "flake-utils": "flake-utils_67", - "hackage": "hackage_12", - "haskell-nix": "haskell-nix_11", - "iohk-nix": "iohk-nix_7", - "nix2container": "nix2container_11", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_8", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_5", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_4" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_8": { - "inputs": { - "CHaP": "CHaP_12", - "easy-purescript-nix": "easy-purescript-nix_9", - "flake-utils": "flake-utils_71", - "hackage": "hackage_13", - "haskell-nix": "haskell-nix_12", - "iohk-nix": "iohk-nix_8", - "nix2container": "nix2container_12", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_10", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_6", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_5" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_9": { - "inputs": { - "CHaP": "CHaP_13", - "easy-purescript-nix": "easy-purescript-nix_10", - "flake-utils": "flake-utils_79", - "hackage": "hackage_14", - "haskell-nix": "haskell-nix_13", - "iogx-template-haskell": "iogx-template-haskell_5", - "iogx-template-vanilla": "iogx-template-vanilla_6", - "iohk-nix": "iohk-nix_17", - "nix2container": "nix2container_21", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_28", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_15", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_14" - }, - "locked": { - "lastModified": 1714680367, - "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iohk-nix": { - "inputs": { - "blst": "blst", - "nixpkgs": "nixpkgs_7", - "secp256k1": "secp256k1", - "sodium": "sodium" - }, - "locked": { - "lastModified": 1691469905, - "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", - "type": "github" - } - }, - "iohk-nix-ng": { - "inputs": { - "blst": "blst_2", - "nixpkgs": "nixpkgs_8", - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" - }, - "locked": { - "lastModified": 1696471795, - "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_10": { - "inputs": { - "blst": "blst_14", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_14", - "sodium": "sodium_14" - }, - "locked": { - "lastModified": 1714467508, - "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "89387f07016fe416c16f7824715238b3d1a4390a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_11": { - "inputs": { - "blst": "blst_15", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_15", - "sodium": "sodium_15" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_12": { - "inputs": { - "blst": "blst_16", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_16", - "sodium": "sodium_16" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_13": { - "inputs": { - "blst": "blst_17", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_17", - "sodium": "sodium_17" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_14": { - "inputs": { - "blst": "blst_18", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_18", - "sodium": "sodium_18" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_15": { - "inputs": { - "blst": "blst_19", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_19", - "sodium": "sodium_19" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_16": { - "inputs": { - "blst": "blst_20", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_20", - "sodium": "sodium_20" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_17": { - "inputs": { - "blst": "blst_21", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_21", - "sodium": "sodium_21" - }, - "locked": { - "lastModified": 1714467508, - "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "89387f07016fe416c16f7824715238b3d1a4390a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_18": { - "inputs": { - "blst": "blst_22", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_22", - "sodium": "sodium_22" - }, - "locked": { - "lastModified": 1714467508, - "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "89387f07016fe416c16f7824715238b3d1a4390a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_3": { - "inputs": { - "blst": "blst_7", - "nixpkgs": [ - "ctl", - "nixpkgs" - ], - "secp256k1": "secp256k1_7", - "sodium": "sodium_7" - }, - "locked": { - "lastModified": 1719443312, - "narHash": "sha256-JNDuUSmV/o5ck1CfnBtX8GJE/Pli4zYE73LZZ7u0E2Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b4025c38b609c6fb99762e2a6201e4e3488a39d3", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_4": { - "inputs": { - "blst": "blst_8", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_8", - "sodium": "sodium_8" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_5": { - "inputs": { - "blst": "blst_9", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_9", - "sodium": "sodium_9" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_6": { - "inputs": { - "blst": "blst_10", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_10", - "sodium": "sodium_10" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_7": { - "inputs": { - "blst": "blst_11", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_11", - "sodium": "sodium_11" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_8": { - "inputs": { - "blst": "blst_12", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_12", - "sodium": "sodium_12" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_9": { - "inputs": { - "blst": "blst_13", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_13", - "sodium": "sodium_13" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix": { - "inputs": { - "blst": "blst_3", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "secp256k1": "secp256k1_3", - "sodium": "sodium_3" - }, - "locked": { - "lastModified": 1698999258, - "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_2": { - "inputs": { - "blst": "blst_4", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "secp256k1": "secp256k1_4", - "sodium": "sodium_4" - }, - "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_3": { - "inputs": { - "blst": "blst_5", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "secp256k1": "secp256k1_5", - "sodium": "sodium_5" - }, - "locked": { - "lastModified": 1698746924, - "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_4": { - "inputs": { - "blst": "blst_6", - "nixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1_6", - "sodium": "sodium_6" - }, - "locked": { - "lastModified": 1719237167, - "narHash": "sha256-ifW5Jfwu/iwYs0r7f8AdiWDQK+Pr1gZLz+p5u8OtOgo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "577f4d5072945a88dda6f5cfe205e6b4829a0423", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iserv-proxy": { - "flake": false, - "locked": { - "lastModified": 1688517130, - "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", - "ref": "hkm/remote-iserv", - "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", - "revCount": 13, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_10": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_11": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_12": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_13": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_14": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_15": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_16": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_17": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_18": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_19": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_2": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_20": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_21": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_3": { - "flake": false, - "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_4": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_5": { - "flake": false, - "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_6": { - "flake": false, - "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_7": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_8": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_9": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "kupo": { - "flake": false, - "locked": { - "lastModified": 1718734761, - "narHash": "sha256-J5eys+/VjeYqfBlcS+XW+Gzafq0/qkbOfY6b05JmFYI=", - "owner": "klarkc", - "repo": "kupo", - "rev": "d95a324f6a94a963cd91cb5d5f88ef50640e7b8d", - "type": "github" - }, - "original": { - "owner": "klarkc", - "ref": "patch-1", - "repo": "kupo", - "type": "github" - } - }, - "kupo-nixos": { - "inputs": { - "CHaP": [ - "ctl", - "CHaP" - ], - "iogx": "iogx", - "kupo": "kupo" - }, - "locked": { - "lastModified": 1718735503, - "narHash": "sha256-Dwpl5BUeGGvhH7+RcF3as7e9rzUFeHRwVGxjfj0fMAM=", - "owner": "Fourierlabs", - "repo": "kupo-nixos", - "rev": "4ab9be5d524bf2c003874aa225f20d00cb6defcf", - "type": "github" - }, - "original": { - "owner": "Fourierlabs", - "ref": "add-conway", - "repo": "kupo-nixos", - "type": "github" - } - }, - "lib": { - "locked": { - "lastModified": 1694306727, - "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "lowdown-src": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_10": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_11": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_12": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_13": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_14": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_15": { - "flake": false, - "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_16": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_17": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_18": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_19": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_2": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_20": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_21": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_22": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_23": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_24": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_25": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_26": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_27": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_28": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_29": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_3": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_30": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_31": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_32": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_33": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_34": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_35": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_4": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_5": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_6": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_7": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_8": { - "flake": false, - "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_9": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "mdbook-kroki-preprocessor": { - "flake": false, - "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "mdbook-kroki-preprocessor_2": { - "flake": false, - "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "mdbook-kroki-preprocessor_3": { - "flake": false, - "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "n2c": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_2": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_3": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_4": { - "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_5": { - "inputs": { - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_55" - }, - "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_6": { - "inputs": { - "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_90" - }, - "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_5", - "nixpkgs-regression": "nixpkgs-regression" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix-cache-proxy": { - "inputs": { - "devshell": "devshell_15", - "inclusive": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_20" - }, - "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "type": "github" - } - }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_13" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_8", - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-nomad_2": { - "inputs": { - "flake-compat": "flake-compat_9", - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-nomad_3": { - "inputs": { - "flake-compat": "flake-compat_14", - "flake-utils": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_3", - "nixpkgs": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-tools": { - "flake": false, - "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_2": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_3": { - "flake": false, - "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_4": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_16" - }, - "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_10": { - "inputs": { - "flake-utils": "flake-utils_62", - "nixpkgs": "nixpkgs_108" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_11": { - "inputs": { - "flake-utils": "flake-utils_68", - "nixpkgs": "nixpkgs_112" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_12": { - "inputs": { - "flake-utils": "flake-utils_72", - "nixpkgs": "nixpkgs_115" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_13": { - "inputs": { - "flake-utils": "flake-utils_74", - "nixpkgs": "nixpkgs_117" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_14": { - "inputs": { - "flake-utils": "flake-utils_76", - "nixpkgs": "nixpkgs_119" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_15": { - "inputs": { - "flake-utils": "flake-utils_84", - "nixpkgs": "nixpkgs_124" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_16": { - "inputs": { - "flake-utils": "flake-utils_88", - "nixpkgs": "nixpkgs_127" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_17": { - "inputs": { - "flake-utils": "flake-utils_90", - "nixpkgs": "nixpkgs_129" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_18": { - "inputs": { - "flake-utils": "flake-utils_96", - "nixpkgs": "nixpkgs_133" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_19": { - "inputs": { - "flake-utils": "flake-utils_100", - "nixpkgs": "nixpkgs_136" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_18" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_20": { - "inputs": { - "flake-utils": "flake-utils_102", - "nixpkgs": "nixpkgs_138" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_21": { - "inputs": { - "flake-utils": "flake-utils_104", - "nixpkgs": "nixpkgs_140" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_22": { - "inputs": { - "flake-utils": "flake-utils_106", - "nixpkgs": "nixpkgs_142" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_22" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_4": { - "inputs": { - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_26" - }, - "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_5": { - "inputs": { - "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_31" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_6": { - "inputs": { - "flake-utils": "flake-utils_20", - "nixpkgs": "nixpkgs_35" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_7": { - "inputs": { - "flake-utils": "flake-utils_45", - "nixpkgs": "nixpkgs_93" - }, - "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", - "type": "github" - }, - "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_8": { - "inputs": { - "flake-utils": "flake-utils_56", - "nixpkgs": "nixpkgs_103" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_9": { - "inputs": { - "flake-utils": "flake-utils_60", - "nixpkgs": "nixpkgs_106" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix_10": { - "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_56", - "nixpkgs-regression": "nixpkgs-regression_9" - }, - "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", - "type": "github" - } - }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_58", - "nixpkgs-regression": "nixpkgs-regression_10" - }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nix_12": { - "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_65", - "nixpkgs-regression": "nixpkgs-regression_11" - }, - "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", - "type": "github" - } - }, - "nix_13": { - "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_66", - "nixpkgs-regression": "nixpkgs-regression_12" - }, - "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", - "type": "github" - } - }, - "nix_14": { - "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_71", - "nixpkgs-regression": "nixpkgs-regression_13" - }, - "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", - "type": "github" - } - }, - "nix_15": { - "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_73" - }, - "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "type": "github" - } - }, - "nix_16": { - "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_75", - "nixpkgs-regression": "nixpkgs-regression_14" - }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nix_17": { - "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_87", - "nixpkgs-regression": "nixpkgs-regression_15" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_18": { - "inputs": { - "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_89", - "nixpkgs-regression": "nixpkgs-regression_16" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_19": { - "inputs": { - "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_96", - "nixpkgs-regression": "nixpkgs-regression_17" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_2": { - "inputs": { - "flake-compat": "flake-compat_3", - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_9", - "nixpkgs-regression": "nixpkgs-regression_2" - }, - "locked": { - "lastModified": 1693573010, - "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", - "owner": "nixos", - "repo": "nix", - "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "2.17-maintenance", - "repo": "nix", - "type": "github" - } - }, - "nix_20": { - "inputs": { - "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_97", - "nixpkgs-regression": "nixpkgs-regression_18" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_21": { - "inputs": { - "lowdown-src": "lowdown-src_21", - "nixpkgs": "nixpkgs_99", - "nixpkgs-regression": "nixpkgs-regression_19" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_22": { - "inputs": { - "lowdown-src": "lowdown-src_22", - "nixpkgs": "nixpkgs_100", - "nixpkgs-regression": "nixpkgs-regression_20" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_23": { - "inputs": { - "lowdown-src": "lowdown-src_23", - "nixpkgs": "nixpkgs_101", - "nixpkgs-regression": "nixpkgs-regression_21" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_24": { - "inputs": { - "lowdown-src": "lowdown-src_24", - "nixpkgs": "nixpkgs_102", - "nixpkgs-regression": "nixpkgs-regression_22" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_25": { - "inputs": { - "lowdown-src": "lowdown-src_25", - "nixpkgs": "nixpkgs_105", - "nixpkgs-regression": "nixpkgs-regression_23" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_26": { - "inputs": { - "lowdown-src": "lowdown-src_26", - "nixpkgs": "nixpkgs_110", - "nixpkgs-regression": "nixpkgs-regression_24" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_27": { - "inputs": { - "lowdown-src": "lowdown-src_27", - "nixpkgs": "nixpkgs_111", - "nixpkgs-regression": "nixpkgs-regression_25" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_28": { - "inputs": { - "lowdown-src": "lowdown-src_28", - "nixpkgs": "nixpkgs_114", - "nixpkgs-regression": "nixpkgs-regression_26" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_29": { - "inputs": { - "lowdown-src": "lowdown-src_29", - "nixpkgs": "nixpkgs_121", - "nixpkgs-regression": "nixpkgs-regression_27" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_13", - "nixpkgs-regression": "nixpkgs-regression_3" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_30": { - "inputs": { - "lowdown-src": "lowdown-src_30", - "nixpkgs": "nixpkgs_122", - "nixpkgs-regression": "nixpkgs-regression_28" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_31": { - "inputs": { - "lowdown-src": "lowdown-src_31", - "nixpkgs": "nixpkgs_123", - "nixpkgs-regression": "nixpkgs-regression_29" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_32": { - "inputs": { - "lowdown-src": "lowdown-src_32", - "nixpkgs": "nixpkgs_126", - "nixpkgs-regression": "nixpkgs-regression_30" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_33": { - "inputs": { - "lowdown-src": "lowdown-src_33", - "nixpkgs": "nixpkgs_131", - "nixpkgs-regression": "nixpkgs-regression_31" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_34": { - "inputs": { - "lowdown-src": "lowdown-src_34", - "nixpkgs": "nixpkgs_132", - "nixpkgs-regression": "nixpkgs-regression_32" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_35": { - "inputs": { - "lowdown-src": "lowdown-src_35", - "nixpkgs": "nixpkgs_135", - "nixpkgs-regression": "nixpkgs-regression_33" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_15", - "nixpkgs-regression": "nixpkgs-regression_4" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_25", - "nixpkgs-regression": "nixpkgs-regression_5" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_34", - "nixpkgs-regression": "nixpkgs-regression_6" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_7": { - "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_42", - "nixpkgs-regression": "nixpkgs-regression_7" - }, - "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", - "type": "github" - } - }, - "nix_8": { - "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_44" - }, - "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "type": "github" - } - }, - "nix_9": { - "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_46", - "nixpkgs-regression": "nixpkgs-regression_8" - }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nixago": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago-exts": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" - } - }, - "nixago-exts_2": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" - } - }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", - "owner": "nix-community", - "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_4": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_5": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_6": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixlib": { - "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixlib_2": { - "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixlib_3": { - "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_10": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_11": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_12": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_13": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_14": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_15": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_16": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_17": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_18": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_19": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_2": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_20": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_21": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_22": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_23": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_24": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_25": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_3": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_4": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_5": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_6": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_7": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_8": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_9": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_10": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_11": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_12": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_13": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_14": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_15": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_16": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_17": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_18": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_19": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_2": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_20": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_21": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_22": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_23": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_24": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_25": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_3": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_4": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_5": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_6": { - "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_7": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_8": { - "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_9": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_10": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_11": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_12": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_13": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_14": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_15": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_16": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_17": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_18": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_19": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_2": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_20": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_21": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_22": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_23": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_24": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_25": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_3": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_4": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_5": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_6": { - "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_7": { - "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_8": { - "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_9": { - "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_10": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_11": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_12": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_13": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_14": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_15": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_16": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_17": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_18": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_19": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_2": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_20": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_21": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_22": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_3": { - "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_4": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_5": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_6": { - "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_7": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_8": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_9": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_10": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_11": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_12": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_13": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_14": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_15": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_16": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_17": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_18": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_19": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_2": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_20": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_21": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_3": { - "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_4": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_5": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_6": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_7": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_8": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_9": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_10": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_11": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_12": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_13": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_14": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_15": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_16": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_17": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_18": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_19": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_2": { - "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_20": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_3": { - "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_4": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_5": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_6": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_7": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_8": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_9": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_10": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_11": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_12": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_13": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_14": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_15": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_16": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_17": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_2": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_3": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_4": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_5": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_6": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_7": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_8": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_9": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-docker": { - "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "dir": "lib", - "lastModified": 1671359686, - "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_2": { - "locked": { - "dir": "lib", - "lastModified": 1682879489, - "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_3": { - "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_4": { - "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_5": { - "locked": { - "lastModified": 1714640452, - "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" - } - }, - "nixpkgs-regression": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_10": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_11": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_12": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_13": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_14": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_15": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_16": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_17": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_18": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_19": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_2": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_20": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_21": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_22": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_23": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_24": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_25": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_26": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_27": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_28": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_29": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_3": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_30": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_31": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_32": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_33": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_4": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_5": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_6": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_7": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_8": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_9": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1690066826, - "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_10": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_11": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_12": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_13": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_14": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_15": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_16": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_17": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_18": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_19": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_20": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_21": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_22": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_23": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_24": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_25": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_26": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_27": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_28": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_29": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_3": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_30": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_31": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_4": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_5": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_6": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_7": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_8": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_9": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1690720142, - "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_10": { - "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_11": { - "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_12": { - "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_13": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_14": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_15": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_16": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_17": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_18": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_19": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_2": { - "locked": { - "lastModified": 1696577711, - "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_20": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_21": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_22": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_23": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_24": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_25": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_26": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_27": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_28": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_3": { - "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_4": { - "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_5": { - "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_6": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_7": { - "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_8": { - "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_9": { - "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1690026219, - "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_100": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_101": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_102": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_103": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_104": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_105": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_106": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_107": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_108": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_109": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1675249806, - "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_110": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_111": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_112": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_113": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_114": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_115": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_116": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_117": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_118": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_119": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_12": { - "locked": { - "lastModified": 1636823747, - "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_120": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_121": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_122": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_123": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_124": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_125": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_126": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_127": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_128": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_129": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_130": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_131": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_132": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_133": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_134": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_135": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_136": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_137": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_138": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_139": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_140": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_141": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_142": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_143": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_16": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { - "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1677543769, - "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_21": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_22": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_23": { - "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_24": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_25": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_26": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_27": { - "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs_28": { - "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_29": { - "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1645013224, - "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_31": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_32": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_33": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_34": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_35": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_36": { - "locked": { - "lastModified": 1708343346, - "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9312b935a538684049cb668885e60f15547d4c5f", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_37": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_38": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_39": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1680945546, - "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_41": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_42": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_43": { - "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - } - }, - "nixpkgs_44": { - "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" - } - }, - "nixpkgs_45": { - "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_46": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_47": { - "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_48": { - "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_49": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_50": { - "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_51": { - "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_52": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_53": { - "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs_54": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_55": { - "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_56": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_57": { - "locked": { - "lastModified": 1652559422, - "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-21.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_58": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_59": { - "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_6": { - "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { - "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_61": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_62": { - "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_63": { - "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_64": { - "locked": { - "lastModified": 1643381941, - "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_65": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_66": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_67": { - "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_68": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_69": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_71": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_72": { - "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - } - }, - "nixpkgs_73": { - "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" - } - }, - "nixpkgs_74": { - "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_75": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_76": { - "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_77": { - "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_78": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_79": { - "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_80": { - "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_81": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_82": { - "locked": { - "lastModified": 1646470760, - "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", - "type": "github" - } - }, - "nixpkgs_83": { - "locked": { - "lastModified": 1619531122, - "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_84": { - "locked": { - "lastModified": 1656461576, - "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_85": { - "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_86": { - "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_87": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_88": { - "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs_89": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_90": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_91": { - "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_92": { - "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_93": { - "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_94": { - "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_95": { - "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_96": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_97": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_98": { - "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_99": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nomad": { - "inputs": { - "nix": "nix_8", - "nixpkgs": "nixpkgs_45", - "utils": "utils_9" - }, - "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", - "type": "github" - } - }, - "nomad-driver-nix": { - "inputs": { - "devshell": "devshell_6", - "inclusive": "inclusive_2", - "nix": "nix_9", - "nixpkgs": "nixpkgs_47", - "utils": "utils_10" - }, - "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "type": "github" - } - }, - "nomad-driver-nix_2": { - "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_5", - "nix": "nix_11", - "nixpkgs": "nixpkgs_59", - "utils": "utils_15" - }, - "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "type": "github" - } - }, - "nomad-driver-nix_3": { - "inputs": { - "devshell": "devshell_16", - "inclusive": "inclusive_10", - "nix": "nix_16", - "nixpkgs": "nixpkgs_76", - "utils": "utils_24" - }, - "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "type": "github" - } - }, - "nomad-follower": { - "inputs": { - "devshell": "devshell_7", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_48", - "utils": "utils_11" - }, - "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", - "type": "github" - } - }, - "nomad-follower_2": { - "inputs": { - "devshell": "devshell_10", - "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_60", - "utils": "utils_16" - }, - "locked": { - "lastModified": 1658244176, - "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", - "type": "github" - } - }, - "nomad-follower_3": { - "inputs": { - "devshell": "devshell_17", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_77", - "utils": "utils_25" - }, - "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", - "type": "github" - } - }, - "nomad_2": { - "inputs": { - "nix": "nix_15", - "nixpkgs": "nixpkgs_74", - "utils": "utils_23" - }, - "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", - "type": "github" - } - }, - "nosys": { - "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, - "nosys_2": { - "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, - "nosys_3": { - "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, - "nosys_4": { - "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "nosys", - "type": "github" - } - }, - "offchain-metadata-tools-service": { - "flake": false, - "locked": { - "lastModified": 1684160858, - "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", - "owner": "input-output-hk", - "repo": "offchain-metadata-tools", - "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "feat-add-password-to-db-conn-string", - "repo": "offchain-metadata-tools", - "type": "github" - } - }, - "ogmios": { - "flake": false, - "locked": { - "lastModified": 1657544501, - "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", - "type": "github" - }, - "original": { - "owner": "CardanoSolutions", - "ref": "v5.5.2", - "repo": "ogmios", - "type": "github" - } - }, - "ogmios_2": { - "flake": false, - "locked": { - "lastModified": 1717661787, - "narHash": "sha256-AnIxPug+DnPHn69z+Vz+Us2a+Z3LnkI+LJaIyUm4c5w=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "4dbf1f34d9ea046dda50bf0c58bd276f80f41784", - "type": "github" - }, - "original": { - "owner": "CardanoSolutions", - "ref": "v6.4.0", - "repo": "ogmios", - "type": "github" - } - }, - "old-ghc-nix": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_10": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_11": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_12": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_13": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_14": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_15": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_16": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_17": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_18": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_19": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_2": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_20": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_21": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_22": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_23": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_24": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_25": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_3": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_4": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_5": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_6": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_7": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_8": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "old-ghc-nix_9": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, - "ops-lib": { - "flake": false, - "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_2": { - "flake": false, - "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_3": { - "flake": false, - "locked": { - "lastModified": 1713366514, - "narHash": "sha256-0hNlv+grFTE+TeXIbxSY97QoEEaUupOKMusZ4PesdrQ=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "19d83fa8eab1c0b7765f736eb4e8569d84d3e39d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_4": { - "flake": false, - "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_5": { - "flake": false, - "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "ops-lib_6": { - "flake": false, - "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ops-lib", - "type": "github" - } - }, - "paisano": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "nosys": "nosys_2", - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "core", - "type": "github" - } - }, - "paisano-actions": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "actions", - "type": "github" - } - }, - "paisano-mdbook-preprocessor": { - "inputs": { - "crane": "crane", - "fenix": "fenix_2", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions", - "std": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] - }, - "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "type": "github" - } - }, - "paisano-tui": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std" - ] - }, - "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "repo": "tui", - "type": "github" - } - }, - "paisano-tui_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "std": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] - }, - "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "tui", - "type": "github" - } - }, - "paisano-tui_3": { - "flake": false, - "locked": { - "lastModified": 1708637035, - "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "231761b260587a64817e4ffae3afc15defaa15db", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "ref": "v0.5.0", - "repo": "tui", - "type": "github" - } - }, - "paisano_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "nosys": "nosys_3", - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", - "owner": "paisano-nix", - "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "core", - "type": "github" - } - }, - "paisano_3": { - "inputs": { - "call-flake": "call-flake", - "nixpkgs": [ - "ctl", - "cardano-node", - "std", - "nixpkgs" - ], - "nosys": "nosys_4", - "yants": [ - "ctl", - "cardano-node", - "std", - "yants" - ] - }, - "locked": { - "lastModified": 1708640854, - "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", - "owner": "paisano-nix", - "repo": "core", - "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", - "type": "github" - }, - "original": { - "owner": "paisano-nix", - "ref": "0.2.0", - "repo": "core", - "type": "github" - } - }, - "poetry2nix": { - "inputs": { - "flake-utils": "flake-utils_32", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1641849362, - "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", - "owner": "nix-community", - "repo": "poetry2nix", - "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "fetched-projectdir-test", - "repo": "poetry2nix", - "type": "github" - } - }, - "pre-commit-hooks": { - "inputs": { - "flake-utils": "flake-utils_38", - "nixpkgs": "nixpkgs_83" - }, - "locked": { - "lastModified": 1639823344, - "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix": { - "inputs": { - "flake-compat": "flake-compat_13", - "gitignore": "gitignore", - "nixpkgs": [ - "ctl", - "cardano-nix", - "nixpkgs" - ], - "nixpkgs-stable": [ - "ctl", - "cardano-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1716213921, - "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_10": { - "inputs": { - "flake-compat": "flake-compat_46", - "flake-utils": "flake-utils_89", - "gitignore": "gitignore_10", - "nixpkgs": "nixpkgs_128", - "nixpkgs-stable": "nixpkgs-stable_19" - }, - "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_11": { - "inputs": { - "flake-compat": "flake-compat_47", - "flake-utils": "flake-utils_91", - "gitignore": "gitignore_11", - "nixpkgs": "nixpkgs_130", - "nixpkgs-stable": "nixpkgs-stable_21" - }, - "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_12": { - "inputs": { - "flake-compat": "flake-compat_50", - "flake-utils": "flake-utils_97", - "gitignore": "gitignore_12", - "nixpkgs": "nixpkgs_134", - "nixpkgs-stable": "nixpkgs-stable_23" - }, - "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_13": { - "inputs": { - "flake-compat": "flake-compat_52", - "flake-utils": "flake-utils_101", - "gitignore": "gitignore_13", - "nixpkgs": "nixpkgs_137", - "nixpkgs-stable": "nixpkgs-stable_25" - }, - "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_14": { - "inputs": { - "flake-compat": "flake-compat_53", - "flake-utils": "flake-utils_103", - "gitignore": "gitignore_14", - "nixpkgs": "nixpkgs_139", - "nixpkgs-stable": "nixpkgs-stable_27" - }, - "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_15": { - "inputs": { - "flake-compat": "flake-compat_54", - "flake-utils": "flake-utils_105", - "gitignore": "gitignore_15", - "nixpkgs": "nixpkgs_141", - "nixpkgs-stable": "nixpkgs-stable_29" - }, - "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_16": { - "inputs": { - "flake-compat": "flake-compat_55", - "flake-utils": "flake-utils_107", - "gitignore": "gitignore_16", - "nixpkgs": "nixpkgs_143", - "nixpkgs-stable": "nixpkgs-stable_31" - }, - "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_2": { - "inputs": { - "flake-compat": "flake-compat_30", - "flake-utils": "flake-utils_57", - "gitignore": "gitignore_2", - "nixpkgs": "nixpkgs_104", - "nixpkgs-stable": "nixpkgs-stable_3" - }, - "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_3": { - "inputs": { - "flake-compat": "flake-compat_32", - "flake-utils": "flake-utils_61", - "gitignore": "gitignore_3", - "nixpkgs": "nixpkgs_107", - "nixpkgs-stable": "nixpkgs-stable_5" - }, - "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_4": { - "inputs": { - "flake-compat": "flake-compat_33", - "flake-utils": "flake-utils_63", - "gitignore": "gitignore_4", - "nixpkgs": "nixpkgs_109", - "nixpkgs-stable": "nixpkgs-stable_7" - }, - "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_5": { - "inputs": { - "flake-compat": "flake-compat_36", - "flake-utils": "flake-utils_69", - "gitignore": "gitignore_5", - "nixpkgs": "nixpkgs_113", - "nixpkgs-stable": "nixpkgs-stable_9" - }, - "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_6": { - "inputs": { - "flake-compat": "flake-compat_38", - "flake-utils": "flake-utils_73", - "gitignore": "gitignore_6", - "nixpkgs": "nixpkgs_116", - "nixpkgs-stable": "nixpkgs-stable_11" - }, - "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_7": { - "inputs": { - "flake-compat": "flake-compat_39", - "flake-utils": "flake-utils_75", - "gitignore": "gitignore_7", - "nixpkgs": "nixpkgs_118", - "nixpkgs-stable": "nixpkgs-stable_13" - }, - "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_8": { - "inputs": { - "flake-compat": "flake-compat_40", - "flake-utils": "flake-utils_77", - "gitignore": "gitignore_8", - "nixpkgs": "nixpkgs_120", - "nixpkgs-stable": "nixpkgs-stable_15" - }, - "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "pre-commit-hooks-nix_9": { - "inputs": { - "flake-compat": "flake-compat_44", - "flake-utils": "flake-utils_85", - "gitignore": "gitignore_9", - "nixpkgs": "nixpkgs_125", - "nixpkgs-stable": "nixpkgs-stable_17" - }, - "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, - "ragenix": { - "inputs": { - "agenix": "agenix_3", - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_49", - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", - "type": "github" - }, - "original": { - "owner": "yaxitech", - "repo": "ragenix", - "type": "github" - } - }, - "ragenix_2": { - "inputs": { - "agenix": "agenix_4", - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_52", - "rust-overlay": "rust-overlay_3" - }, - "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ragenix", - "type": "github" - } - }, - "ragenix_3": { - "inputs": { - "agenix": "agenix_5", - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_61", - "rust-overlay": "rust-overlay_4" - }, - "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", - "type": "github" - }, - "original": { - "owner": "yaxitech", - "repo": "ragenix", - "type": "github" - } - }, - "ragenix_4": { - "inputs": { - "agenix": "agenix_7", - "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_78", - "rust-overlay": "rust-overlay_5" - }, - "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", - "type": "github" - }, - "original": { - "owner": "yaxitech", - "repo": "ragenix", - "type": "github" - } - }, - "ragenix_5": { - "inputs": { - "agenix": "agenix_8", - "flake-utils": "flake-utils_36", - "nixpkgs": "nixpkgs_81", - "rust-overlay": "rust-overlay_6" - }, - "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "ragenix", - "type": "github" - } - }, - "root": { - "inputs": { - "ctl": "ctl", - "flake-compat": "flake-compat_56", - "nixpkgs": [ - "ctl", - "nixpkgs" - ] - } - }, - "rust-analyzer-src": { - "flake": false, - "locked": { - "lastModified": 1645205556, - "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", - "type": "github" - }, - "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_2": { - "flake": false, - "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_3": { - "flake": false, - "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", - "type": "github" - }, - "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_4": { - "flake": false, - "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", - "type": "github" - }, - "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_5": { - "flake": false, - "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", - "type": "github" - }, - "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_6": { - "flake": false, - "locked": { - "lastModified": 1660579619, - "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", - "type": "github" - }, - "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_7": { - "flake": false, - "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", - "type": "github" - }, - "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-analyzer-src_8": { - "flake": false, - "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", - "type": "github" - }, - "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" - } - }, - "rust-overlay": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_3": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_4": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_5": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_6": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "secp256k1": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_10": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_11": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_12": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_13": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_14": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_15": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_16": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_17": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_18": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_19": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_2": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_20": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_21": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_22": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_3": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_4": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_5": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_6": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_7": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_8": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "secp256k1_9": { - "flake": false, - "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", - "type": "github" - }, - "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" - } - }, - "sodium": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_10": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_11": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_12": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_13": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_14": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_15": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_16": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_17": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_18": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_19": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_2": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_20": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_21": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_22": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_3": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_4": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_5": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_6": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_7": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_8": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sodium_9": { - "flake": false, - "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" - } - }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_10", - "nixpkgs-stable": "nixpkgs-stable" - }, - "locked": { - "lastModified": 1690199016, - "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, - "sphinxcontrib-haddock": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_10": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_11": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_12": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_13": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_14": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_15": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_2": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_3": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_4": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_5": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_6": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_7": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_8": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_9": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" - }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "stable": { - "locked": { - "lastModified": 1669735802, - "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "731cc710aeebecbf45a258e977e8b68350549522", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "stackage": { - "flake": false, - "locked": { - "lastModified": 1701043780, - "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_10": { - "flake": false, - "locked": { - "lastModified": 1714954836, - "narHash": "sha256-ksReW99DOMNsNdRYDp/GIC2np/PVoqIIeuGbCB5YoFQ=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "991de0dd2e48574c7aff96ea0b2315973c4d3458", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_11": { - "flake": false, - "locked": { - "lastModified": 1714608979, - "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_12": { - "flake": false, - "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_13": { - "flake": false, - "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_14": { - "flake": false, - "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_15": { - "flake": false, - "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_16": { - "flake": false, - "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_17": { - "flake": false, - "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_18": { - "flake": false, - "locked": { - "lastModified": 1714608979, - "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_19": { - "flake": false, - "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_2": { - "flake": false, - "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_20": { - "flake": false, - "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_21": { - "flake": false, - "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_22": { - "flake": false, - "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_23": { - "flake": false, - "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_24": { - "flake": false, - "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_3": { - "flake": false, - "locked": { - "lastModified": 1700438989, - "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_4": { - "flake": false, - "locked": { - "lastModified": 1718756571, - "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "027672fb6fd45828b0e623c8152572d4058429ad", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_5": { - "flake": false, - "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_6": { - "flake": false, - "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_7": { - "flake": false, - "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_8": { - "flake": false, - "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "stackage_9": { - "flake": false, - "locked": { - "lastModified": 1719102283, - "narHash": "sha256-pon+cXgMWPlCiBx9GlRcjsjTHbCc8fDVgOGb3Z7qhRM=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "7df45e0bd9852810d8070f9c5257f8e7a4677b91", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" - } - }, - "statix": { - "inputs": { - "fenix": "fenix", - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1676888642, - "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", - "owner": "nerdypepper", - "repo": "statix", - "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", - "type": "github" - }, - "original": { - "owner": "nerdypepper", - "repo": "statix", - "type": "github" - } - }, - "std": { - "inputs": { - "arion": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_8", - "incl": "incl", - "makes": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "microvm": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_20", - "nosys": "nosys", - "yants": "yants" - }, - "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", - "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_2": { - "inputs": { - "arion": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "blank": "blank_2", - "devshell": "devshell_2", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_11", - "incl": "incl_2", - "makes": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "microvm": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_23", - "paisano": "paisano", - "paisano-tui": "paisano-tui", - "yants": "yants_2" - }, - "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", - "owner": "divnix", - "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_3": { - "inputs": { - "arion": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "blank": "blank_3", - "devshell": "devshell_3", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_13", - "haumea": "haumea", - "incl": "incl_3", - "makes": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "microvm": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_28", - "paisano": "paisano_2", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", - "paisano-tui": "paisano-tui_2", - "yants": "yants_3" - }, - "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", - "owner": "divnix", - "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_4": { - "inputs": { - "blank": "blank_4", - "devshell": "devshell_5", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_18", - "makes": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "microvm": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_32", - "yants": "yants_4" - }, - "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_5": { - "inputs": { - "arion": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "blank": "blank_5", - "devshell": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "dmerge": "dmerge_5", - "haumea": "haumea_2", - "incl": "incl_4", - "lib": "lib", - "makes": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "microvm": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "n2c": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "nixago": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "nixpkgs": "nixpkgs_36", - "paisano": "paisano_3", - "paisano-tui": "paisano-tui_3", - "terranix": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "yants": "yants_5" - }, - "locked": { - "lastModified": 1715201063, - "narHash": "sha256-LcLYV5CDhIiJs3MfxGZFKsXPR4PtfnY4toZ75GM+2Pw=", - "owner": "divnix", - "repo": "std", - "rev": "b6924a7d37a46fc1dda8efe405040e27ecf1bbd6", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "std_6": { - "inputs": { - "devshell": "devshell_11", - "dmerge": "dmerge_6", - "flake-utils": "flake-utils_28", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_5", - "nixpkgs": "nixpkgs_62", - "yants": "yants_7" - }, - "locked": { - "lastModified": 1661370377, - "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", - "owner": "divnix", - "repo": "std", - "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "std_7": { - "inputs": { - "devshell": "devshell_19", - "dmerge": "dmerge_7", - "flake-utils": "flake-utils_44", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", - "nixago": "nixago_6", - "nixpkgs": "nixpkgs_92", - "yants": "yants_9" - }, + "nixpkgs_66": { "locked": { - "lastModified": 1661367957, - "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", - "owner": "divnix", - "repo": "std", - "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "std_8": { - "inputs": { - "devshell": "devshell_20", - "nixpkgs": "nixpkgs_95", - "yants": "yants_10" - }, + "nixpkgs_67": { "locked": { - "lastModified": 1652784712, - "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", - "owner": "divnix", - "repo": "std", - "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "stdlib": { + "nixpkgs_68": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "stdlib_10": { + "nixpkgs_69": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "stdlib_11": { + "nixpkgs_7": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "stdlib_12": { + "nixpkgs_70": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1697723726, + "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7c9cc5a6e5d38010801741ac830a3f8fd667a7a0", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "stdlib_13": { + "nixpkgs_71": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "stdlib_2": { + "nixpkgs_8": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "stdlib_3": { + "nixpkgs_9": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "stdlib_4": { + "nomad": { + "inputs": { + "nix": "nix_3", + "nixpkgs": "nixpkgs_17", + "utils": "utils_4" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "stdlib_5": { + "nomad-driver-nix": { + "inputs": { + "devshell": "devshell_2", + "inclusive": "inclusive", + "nix": "nix_4", + "nixpkgs": "nixpkgs_19", + "utils": "utils_5" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "stdlib_6": { + "nomad-driver-nix_2": { + "inputs": { + "devshell": "devshell_5", + "inclusive": "inclusive_4", + "nix": "nix_6", + "nixpkgs": "nixpkgs_31", + "utils": "utils_10" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "stdlib_7": { + "nomad-driver-nix_3": { + "inputs": { + "devshell": "devshell_12", + "inclusive": "inclusive_9", + "nix": "nix_11", + "nixpkgs": "nixpkgs_48", + "utils": "utils_19" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "stdlib_8": { + "nomad-follower": { + "inputs": { + "devshell": "devshell_3", + "inclusive": "inclusive_2", + "nixpkgs": "nixpkgs_20", + "utils": "utils_6" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "stdlib_9": { + "nomad-follower_2": { + "inputs": { + "devshell": "devshell_6", + "inclusive": "inclusive_5", + "nixpkgs": "nixpkgs_32", + "utils": "utils_11" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" + "nomad-follower_3": { + "inputs": { + "devshell": "devshell_13", + "inclusive": "inclusive_10", + "nixpkgs": "nixpkgs_49", + "utils": "utils_20" }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_10": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "systems_11": { + "nomad_2": { + "inputs": { + "nix": "nix_10", + "nixpkgs": "nixpkgs_46", + "utils": "utils_18" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "systems_12": { + "nosys": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "systems_13": { + "ogmios": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", "type": "github" } }, - "systems_14": { + "ogmios-nixos": { + "inputs": { + "CHaP": "CHaP_3", + "blank": "blank_5", + "cardano-configurations": "cardano-configurations_2", + "cardano-node": [ + "ctl", + "cardano-node" + ], + "flake-compat": "flake-compat_13", + "haskell-nix": [ + "ctl", + "haskell-nix" + ], + "iohk-nix": [ + "ctl", + "iohk-nix" + ], + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "ogmios-src": [ + "ctl", + "ogmios" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1695289922, + "narHash": "sha256-WeZkYCyvOqnVx9zYgyO2rh0rd3O2DmxH0HZ4OJnf/aw=", + "owner": "mlabs-haskell", + "repo": "ogmios-nixos", + "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "mlabs-haskell", + "repo": "ogmios-nixos", + "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", "type": "github" } }, - "systems_15": { + "ogmios_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1691769233, + "narHash": "sha256-7CLprKq3RwJfvy31LAPux+DYFLjEmbRBFgvtYDpJA8Q=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "3d3f359b0987c009ef66fb4d4b4bddce92b9aeb3", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "CardanoSolutions", + "ref": "v6.0.0", + "repo": "ogmios", "type": "github" } }, - "systems_16": { + "old-ghc-nix": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "systems_17": { + "old-ghc-nix_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "systems_18": { + "old-ghc-nix_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "systems_19": { + "old-ghc-nix_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "systems_2": { + "old-ghc-nix_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "systems_20": { + "old-ghc-nix_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "systems_21": { + "old-ghc-nix_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "systems_22": { + "ops-lib": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "systems_23": { + "ops-lib_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "systems_24": { + "ops-lib_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "systems_25": { + "ops-lib_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "systems_26": { + "plutip": { + "inputs": { + "CHaP": "CHaP_4", + "cardano-node": [ + "ctl", + "cardano-node" + ], + "flake-compat": "flake-compat_14", + "hackage-nix": [ + "ctl", + "hackage-nix" + ], + "haskell-nix": [ + "ctl", + "haskell-nix" + ], + "iohk-nix": [ + "ctl", + "iohk-nix" + ], + "nixpkgs": [ + "ctl", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1695131439, + "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", + "owner": "mlabs-haskell", + "repo": "plutip", + "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "mlabs-haskell", + "ref": "gergely/version-bump", + "repo": "plutip", "type": "github" } }, - "systems_27": { + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils_17", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641849362, + "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "nix-community", + "ref": "fetched-projectdir-test", + "repo": "poetry2nix", "type": "github" } }, - "systems_28": { + "pre-commit-hooks": { + "inputs": { + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_55" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "systems_29": { + "ragenix": { + "inputs": { + "agenix": "agenix_3", + "flake-utils": "flake-utils_8", + "nixpkgs": "nixpkgs_21", + "rust-overlay": "rust-overlay" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "systems_3": { + "ragenix_2": { + "inputs": { + "agenix": "agenix_4", + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_24", + "rust-overlay": "rust-overlay_2" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "systems_30": { + "ragenix_3": { + "inputs": { + "agenix": "agenix_5", + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_33", + "rust-overlay": "rust-overlay_3" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "systems_31": { + "ragenix_4": { + "inputs": { + "agenix": "agenix_7", + "flake-utils": "flake-utils_19", + "nixpkgs": "nixpkgs_50", + "rust-overlay": "rust-overlay_4" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "systems_32": { + "ragenix_5": { + "inputs": { + "agenix": "agenix_8", + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_53", + "rust-overlay": "rust-overlay_5" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "systems_33": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" + "root": { + "inputs": { + "ctl": "ctl", + "flake-compat": "flake-compat_15", + "nixpkgs": [ + "ctl", + "nixpkgs" + ] } }, - "systems_34": { + "rust-analyzer-src": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_35": { + "rust-analyzer-src_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_36": { + "rust-analyzer-src_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_37": { + "rust-analyzer-src_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1660579619, + "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_38": { + "rust-analyzer-src_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_39": { + "rust-analyzer-src_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_4": { + "rust-overlay": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_40": { + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_41": { + "rust-overlay_3": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_42": { + "rust-overlay_4": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_43": { + "rust-overlay_5": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_44": { + "secp256k1": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_45": { + "secp256k1_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_46": { + "sodium": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_47": { + "sodium_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_48": { + "stackage": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_49": { + "stackage_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_5": { + "stackage_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_50": { + "stackage_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_51": { + "stackage_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_52": { + "stackage_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1702771826, + "narHash": "sha256-4jFlIYY/hzkRrt4mXpUV81wC9ge4VpC5zcmQANl8GQg=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "4aab61a73de63a828ac33eb588e1e65411020a0c", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_53": { + "stackage_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1654219171, + "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_54": { + "std": { + "inputs": { + "arion": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_5", + "incl": "incl", + "makes": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-node", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_8", + "nosys": "nosys", + "yants": "yants" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_55": { + "std_2": { + "inputs": { + "devshell": "devshell_7", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_13", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_34", + "yants": "yants_3" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "owner": "divnix", + "repo": "std", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_56": { + "std_3": { + "inputs": { + "devshell": "devshell_15", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_29", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_64", + "yants": "yants_5" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "owner": "divnix", + "repo": "std", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_57": { + "std_4": { + "inputs": { + "devshell": "devshell_16", + "nixpkgs": "nixpkgs_67", + "yants": "yants_6" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "owner": "divnix", + "repo": "std", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_58": { + "stdlib": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_59": { + "stdlib_10": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_6": { + "stdlib_11": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_60": { + "stdlib_12": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_61": { + "stdlib_2": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_62": { + "stdlib_3": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_63": { + "stdlib_4": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_64": { + "stdlib_5": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_65": { + "stdlib_6": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_7": { + "stdlib_7": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_8": { + "stdlib_8": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_9": { + "stdlib_9": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_86" + "flake-utils": "flake-utils_24", + "nixpkgs": "nixpkgs_58" }, "locked": { "lastModified": 1654211622, @@ -31949,38 +9438,28 @@ "type": "github" } }, - "terraform-providers": { - "inputs": { - "nixpkgs": "nixpkgs_11" - }, - "locked": { - "lastModified": 1695893013, - "narHash": "sha256-+5EuXNXwxpTiOEGCbZWtZCU75WcVwnS89heLa5xJ2K0=", - "owner": "nix-community", - "repo": "nixpkgs-terraform-providers-bin", - "rev": "6c6865ae6f9bff7aaa4e86c875f520f2aca65c0d", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs-terraform-providers-bin", - "type": "github" - } - }, "terranix": { "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_12", + "flake-utils": "flake-utils_9", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "blank" + ], "terranix-examples": "terranix-examples" }, "locked": { - "lastModified": 1684906298, - "narHash": "sha256-pNuJxmVMGbBHw7pa+Bx0HY0orXIXoyyAXOKuQ1zpfus=", + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", "owner": "terranix", "repo": "terranix", - "rev": "c0dd15076856c6cb425795b8c7d5d37d3a1e922a", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", "type": "github" }, "original": { @@ -32034,33 +9513,16 @@ "type": "github" } }, - "terranix-examples_4": { - "locked": { - "lastModified": 1636300201, - "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", - "owner": "terranix", - "repo": "terranix-examples", - "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", - "type": "github" - }, - "original": { - "owner": "terranix", - "repo": "terranix-examples", - "type": "github" - } - }, "terranix_2": { "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_24", + "flake-utils": "flake-utils_14", "nixpkgs": [ "ctl", "db-sync", "cardano-world", "bitte", - "capsules", - "bitte", "blank" ], "terranix-examples": "terranix-examples_2" @@ -32083,35 +9545,7 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_29", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "blank" - ], - "terranix-examples": "terranix-examples_3" - }, - "locked": { - "lastModified": 1637158331, - "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", - "owner": "terranix", - "repo": "terranix", - "rev": "34198bb154af86d2a559446f10d7339e53126abe", - "type": "github" - }, - "original": { - "owner": "terranix", - "repo": "terranix", - "type": "github" - } - }, - "terranix_4": { - "inputs": { - "bats-assert": "bats-assert_4", - "bats-support": "bats-support_4", - "flake-utils": "flake-utils_35", + "flake-utils": "flake-utils_20", "nixpkgs": [ "ctl", "db-sync", @@ -32120,7 +9554,7 @@ "bitte", "blank" ], - "terranix-examples": "terranix-examples_4" + "terranix-examples": "terranix-examples_3" }, "locked": { "lastModified": 1637158331, @@ -32136,249 +9570,54 @@ "type": "github" } }, - "treefmt-nix": { - "inputs": { - "nixpkgs": "nixpkgs_4" - }, - "locked": { - "lastModified": 1683117219, - "narHash": "sha256-IyNRNRxw0slA3VQySVA7QPXHMOxlbx0ePWvj9oln+Wk=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "c8c3731dc404f837f38f89c2c5ffc2afc02e249d", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "treefmt-nix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1691440708, - "narHash": "sha256-c7Cc08vJ0IPFgIERpTdO2xvDHQNL7Uf5iXT0GlYO6vo=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "2a535809ac5c9a32288f4d3b938296e056d948cc", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "treefmt-nix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1715940852, - "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, - "tullia": { - "inputs": { - "nix-nomad": "nix-nomad", - "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_19", - "std": "std" - }, - "locked": { - "lastModified": 1675695930, - "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_2": { - "inputs": { - "nix-nomad": "nix-nomad_2", - "nix2container": "nix2container_3", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "nixpkgs" - ], - "std": "std_2" - }, - "locked": { - "lastModified": 1684859161, - "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_3": { - "inputs": { - "nix-nomad": "nix-nomad_3", - "nix2container": "nix2container_5", - "nixpkgs": [ - "ctl", - "cardano-node", - "cardano-automation", - "nixpkgs" - ], - "std": "std_4" - }, - "locked": { - "lastModified": 1668711738, - "narHash": "sha256-CBjky16o9pqsGE1bWu6nRlRajgSXMEk+yaFQLibqXcE=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "ead1f515c251f0e060060ef0e2356a51d3dfe4b0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "tullia_4": { - "inputs": { - "nix2container": "nix2container_7", - "nixpkgs": "nixpkgs_94", - "std": "std_8" - }, - "locked": { - "lastModified": 1657811465, - "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "tullia", - "type": "github" - } - }, - "utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_10": { - "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", - "type": "github" - }, - "original": { - "owner": "kreisys", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_11": { - "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", - "type": "github" - }, - "original": { - "owner": "kreisys", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_12": { + "tullia": { + "inputs": { + "nix-nomad": "nix-nomad", + "nix2container": "nix2container_2", + "nixpkgs": "nixpkgs_7", + "std": "std" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1675695930, + "narHash": "sha256-B7rEZ/DBUMlK1AcJ9ajnAPPxqXY6zW2SBX+51bZV0Ac=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "621365f2c725608f381b3ad5b57afef389fd4c31", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "tullia", "type": "github" } }, - "utils_13": { + "tullia_2": { + "inputs": { + "nix2container": "nix2container_3", + "nixpkgs": "nixpkgs_66", + "std": "std_4" + }, "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", - "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "lastModified": 1657811465, + "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", "type": "github" }, "original": { - "owner": "kreisys", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "tullia", "type": "github" } }, - "utils_14": { + "utils": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -32387,7 +9626,7 @@ "type": "github" } }, - "utils_15": { + "utils_10": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32402,7 +9641,7 @@ "type": "github" } }, - "utils_16": { + "utils_11": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32417,7 +9656,7 @@ "type": "github" } }, - "utils_17": { + "utils_12": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -32432,7 +9671,7 @@ "type": "github" } }, - "utils_18": { + "utils_13": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32447,7 +9686,7 @@ "type": "github" } }, - "utils_19": { + "utils_14": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32462,22 +9701,7 @@ "type": "github" } }, - "utils_2": { - "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_20": { + "utils_15": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32492,7 +9716,7 @@ "type": "github" } }, - "utils_21": { + "utils_16": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -32507,7 +9731,7 @@ "type": "github" } }, - "utils_22": { + "utils_17": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -32522,7 +9746,7 @@ "type": "github" } }, - "utils_23": { + "utils_18": { "locked": { "lastModified": 1601282935, "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", @@ -32537,7 +9761,7 @@ "type": "github" } }, - "utils_24": { + "utils_19": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32552,7 +9776,22 @@ "type": "github" } }, - "utils_25": { + "utils_2": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_20": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32567,7 +9806,7 @@ "type": "github" } }, - "utils_26": { + "utils_21": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -32582,7 +9821,7 @@ "type": "github" } }, - "utils_27": { + "utils_22": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -32597,7 +9836,7 @@ "type": "github" } }, - "utils_28": { + "utils_23": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -32614,11 +9853,11 @@ }, "utils_3": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -32629,11 +9868,11 @@ }, "utils_4": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -32644,44 +9883,41 @@ }, "utils_5": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, "utils_6": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, "utils_7": { - "inputs": { - "systems": "systems_5" - }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -32692,26 +9928,26 @@ }, "utils_8": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", - "owner": "numtide", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "numtide", + "owner": "kreisys", "repo": "flake-utils", "type": "github" } }, "utils_9": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -32758,8 +9994,7 @@ "inputs": { "nixpkgs": [ "ctl", - "cardano-nix", - "cardano-node-8.1.1", + "cardano-node", "tullia", "std", "nixpkgs" @@ -32779,16 +10014,9 @@ "type": "github" } }, - "yants_10": { + "yants_2": { "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_25" }, "locked": { "lastModified": 1645126146, @@ -32804,49 +10032,23 @@ "type": "github" } }, - "yants_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1667096281, - "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", - "owner": "divnix", - "repo": "yants", - "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, "yants_3": { "inputs": { "nixpkgs": [ "ctl", - "cardano-nix", - "cardano-node-8.7.3", + "db-sync", + "cardano-world", + "bitte", "std", - "haumea", "nixpkgs" ] }, "locked": { - "lastModified": 1686863218, - "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", "owner": "divnix", "repo": "yants", - "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", "type": "github" }, "original": { @@ -32857,55 +10059,7 @@ }, "yants_4": { "inputs": { - "nixpkgs": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660507851, - "narHash": "sha256-BKjq7JnVuUR/xDtcv6Vm9GYGKAblisXrAgybor9hT/s=", - "owner": "divnix", - "repo": "yants", - "rev": "0b895ca02a8fa72bad50b454cb3e7d8a66407c96", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-node", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1686863218, - "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", - "owner": "divnix", - "repo": "yants", - "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_6": { - "inputs": { - "nixpkgs": "nixpkgs_53" + "nixpkgs": "nixpkgs_60" }, "locked": { "lastModified": 1645126146, @@ -32921,13 +10075,12 @@ "type": "github" } }, - "yants_7": { + "yants_5": { "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "bitte", "std", "nixpkgs" ] @@ -32946,30 +10099,13 @@ "type": "github" } }, - "yants_8": { - "inputs": { - "nixpkgs": "nixpkgs_88" - }, - "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", - "owner": "divnix", - "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "yants", - "type": "github" - } - }, - "yants_9": { + "yants_6": { "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", + "tullia", "std", "nixpkgs" ] diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 47b50b777..6a67d166b 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,190 +16,186 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - <<<<<<< HEAD - rev = "64028db993083b09ff9875a59def48e2f84de04b"; - ======= rev = "ddbd601e882276958fe260b8c492b5c7f489f174"; - >>>>>>> c02737564866f4f5a1d82ddf0e59eea6241c91a1 - }; - # To use the same version of `nixpkgs` as we do - nixpkgs.follows = "ctl/nixpkgs"; }; + # To use the same version of `nixpkgs` as we do + nixpkgs.follows = "ctl/nixpkgs"; + }; - outputs = { self, nixpkgs, ctl, ... }@inputs: - let - supportedSystems = [ - "x86_64-linux" - "x86_64-darwin" - "aarch64-linux" - "aarch64-darwin" + outputs = { self, nixpkgs, ctl, ... }@inputs: + let + supportedSystems = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-linux" + "aarch64-darwin" + ]; + perSystem = nixpkgs.lib.genAttrs supportedSystems; + + # generate `pkgs` with CTL's overlays applied. This gives you access to + # various additional packages. The versions are the same as those that CTL uses. + nixpkgsFor = system: import nixpkgs { + inherit system; + overlays = [ + ctl.overlays.purescript + ctl.overlays.runtime + ctl.overlays.spago ]; - perSystem = nixpkgs.lib.genAttrs supportedSystems; - - # generate `pkgs` with CTL's overlays applied. This gives you access to - # various additional packages. The versions are the same as those that CTL uses. - nixpkgsFor = system: import nixpkgs { - inherit system; - overlays = [ - ctl.overlays.purescript - ctl.overlays.runtime - ctl.overlays.spago - ]; + }; + + + # The configuration for the CTL runtime, which will be passed to the + # expression that builds the JSON file used by Arion. This value can be + # shared between `buildCtlRuntime` and `launchCtlRuntime`, as shown below + # + # You can refer to the final configuration value by passing a function + # that takes a single arugment. Alternatively, you can pass an attrset + # directly. + # + # Here we demonstrate how to add `extraServices` and `extraDockerCompose`. + # For the other attributes, which have default values, + # consult `defaultConfig` in `nix/runtime.nix`. + runtimeConfig = { }; + # runtimeConfig = final: with final; { + # # You can add new services to the runtime. These should correspond to + # # Arion's `service` definition. The default is the empty attribute set + # extraServices = { + # # an image from dockerhub + # foo = { + # service = { + # image = "bar:foo"; + # command = [ + # "baz" + # "--quux" + # ]; + # }; + + # # Or a Nix-based image + # foo2 = { + # service = { + # useHostStore = true; + # command = [ + # "${(nixpkgsFor system).baz}/bin/baz" + # "--quux" + # ]; + # }; + # }; + # }; + # }; + # # This corresponds to `docker-compose.raw` from Arion. You can add new + # # volumes, etc... using this + # extraDockerCompose = { volumes = { someVol = { }; }; }; + + psProjectFor = pkgs: + pkgs.purescriptProject rec { + inherit pkgs; + projectName = "ctl-scaffold"; + packageJson = ./package.json; + packageLock = ./package-lock.json; + src = builtins.path { + path = ./.; + name = "${projectName}-src"; + # Adjust the `filter` as necessary + filter = path: ftype: !(pkgs.lib.hasSuffix ".md" path); + }; + shell = { + withRuntime = true; + packageLockOnly = true; + packages = with pkgs; [ + fd + nodePackages.eslint + nodePackages.prettier + ]; + }; }; + in + { + # `buildCtlRuntime` will generate a Nix expression that, when built with + # `pkgs.arion.build`, outputs a JSON file compatible with Arion. This can + # be run directly with Arion or passed to another derivation. Or you can + # use `buildCtlRuntime` with `runArion` (from the `hercules-ci-effects`) + # library + # + # Use `nix build .#` to build. To run with Arion (i.e. in your + # shell): `arion --prebuilt-file ./result up` + packages = perSystem (system: + let + pkgs = nixpkgsFor system; + in + { + default = self.packages.${system}.ctl-scaffold-bundle-web; + + ctl-scaffold-bundle-web-esbuild = (psProjectFor pkgs).bundlePursProjectEsbuild { + main = "Scaffold.Main"; + }; + + ctl-scaffold-bundle-web-webpack = (psProjectFor pkgs).bundlePursProjectWebpack { + main = "Scaffold.Main"; + }; + ctl-scaffold-runtime = pkgs.buildCtlRuntime runtimeConfig; + }); + + + # `launchCtlRuntime` will generate a Nix expression from the provided + # config, build it into a JSON file, and then run it with Arion + # + # Use `nix run .#` to run the services (e.g. `nix run .#ctl-runtime`) + apps = perSystem (system: + let + pkgs = nixpkgsFor system; + in + { + default = self.apps.${system}.ctl-scaffold-runtime; + ctl-scaffold-runtime = pkgs.launchCtlRuntime runtimeConfig; + ctl-scaffold-blockfrost-runtime = pkgs.launchCtlRuntime + (pkgs.lib.recursiveUpdate runtimeConfig { blockfrost = { enable = true; }; }); + docs = (psProjectFor pkgs).launchSearchablePursDocs { }; + }); + + checks = perSystem (system: + let + pkgs = nixpkgsFor system; + in + { + ctl-scaffold-local-testnet-test = (psProjectFor pkgs).runLocalTestnetTest { + testMain = "Test.Scaffold.Main"; + }; - # The configuration for the CTL runtime, which will be passed to the - # expression that builds the JSON file used by Arion. This value can be - # shared between `buildCtlRuntime` and `launchCtlRuntime`, as shown below - # - # You can refer to the final configuration value by passing a function - # that takes a single arugment. Alternatively, you can pass an attrset - # directly. - # - # Here we demonstrate how to add `extraServices` and `extraDockerCompose`. - # For the other attributes, which have default values, - # consult `defaultConfig` in `nix/runtime.nix`. - runtimeConfig = { }; - # runtimeConfig = final: with final; { - # # You can add new services to the runtime. These should correspond to - # # Arion's `service` definition. The default is the empty attribute set - # extraServices = { - # # an image from dockerhub - # foo = { - # service = { - # image = "bar:foo"; - # command = [ - # "baz" - # "--quux" - # ]; - # }; - - # # Or a Nix-based image - # foo2 = { - # service = { - # useHostStore = true; - # command = [ - # "${(nixpkgsFor system).baz}/bin/baz" - # "--quux" - # ]; - # }; - # }; - # }; - # }; - # # This corresponds to `docker-compose.raw` from Arion. You can add new - # # volumes, etc... using this - # extraDockerCompose = { volumes = { someVol = { }; }; }; - - psProjectFor = pkgs: - pkgs.purescriptProject rec { - inherit pkgs; - projectName = "ctl-scaffold"; - packageJson = ./package.json; - packageLock = ./package-lock.json; - src = builtins.path { - path = ./.; - name = "${projectName}-src"; - # Adjust the `filter` as necessary - filter = path: ftype: !(pkgs.lib.hasSuffix ".md" path); - }; - shell = { - withRuntime = true; - packageLockOnly = true; - packages = with pkgs; [ + formatting-check = pkgs.runCommand "formatting-check" + { + nativeBuildInputs = with pkgs; [ fd - nodePackages.eslint + easy-ps.purs-tidy + nixpkgs-fmt nodePackages.prettier ]; - }; - }; - in - { - # `buildCtlRuntime` will generate a Nix expression that, when built with - # `pkgs.arion.build`, outputs a JSON file compatible with Arion. This can - # be run directly with Arion or passed to another derivation. Or you can - # use `buildCtlRuntime` with `runArion` (from the `hercules-ci-effects`) - # library - # - # Use `nix build .#` to build. To run with Arion (i.e. in your - # shell): `arion --prebuilt-file ./result up` - packages = perSystem (system: - let - pkgs = nixpkgsFor system; - in - { - default = self.packages.${system}.ctl-scaffold-bundle-web; - - ctl-scaffold-bundle-web-esbuild = (psProjectFor pkgs).bundlePursProjectEsbuild { - main = "Scaffold.Main"; - }; - - ctl-scaffold-bundle-web-webpack = (psProjectFor pkgs).bundlePursProjectWebpack { - main = "Scaffold.Main"; - }; - - ctl-scaffold-runtime = pkgs.buildCtlRuntime runtimeConfig; - }); - - - # `launchCtlRuntime` will generate a Nix expression from the provided - # config, build it into a JSON file, and then run it with Arion - # - # Use `nix run .#` to run the services (e.g. `nix run .#ctl-runtime`) - apps = perSystem (system: - let - pkgs = nixpkgsFor system; - in - { - default = self.apps.${system}.ctl-scaffold-runtime; - ctl-scaffold-runtime = pkgs.launchCtlRuntime runtimeConfig; - ctl-scaffold-blockfrost-runtime = pkgs.launchCtlRuntime - (pkgs.lib.recursiveUpdate runtimeConfig { blockfrost = { enable = true; }; }); - docs = (psProjectFor pkgs).launchSearchablePursDocs { }; - }); - - checks = perSystem (system: - let - pkgs = nixpkgsFor system; - in - { - ctl-scaffold-local-testnet-test = (psProjectFor pkgs).runLocalTestnetTest { - testMain = "Test.Scaffold.Main"; - }; - - formatting-check = pkgs.runCommand "formatting-check" - { - nativeBuildInputs = with pkgs; [ - fd - easy-ps.purs-tidy - nixpkgs-fmt - nodePackages.prettier - ]; - } - '' - cd ${self} - purs-tidy check $(fd -epurs) - nixpkgs-fmt --check $(fd -enix --exclude='spago*') - prettier -c $(fd -ejs) - touch $out - ''; - - js-lint-check = pkgs.runCommand "js-lint-check" - { - nativeBuildInputs = [ pkgs.nodePackages.eslint pkgs.fd ]; - } - '' - cd ${self} - eslint $(fd -ejs) - touch $out - ''; - }); - - devShells = perSystem (system: - let - pkgs = nixpkgsFor system; - in - { - default = (psProjectFor pkgs).devShell; - }); - }; + } + '' + cd ${self} + purs-tidy check $(fd -epurs) + nixpkgs-fmt --check $(fd -enix --exclude='spago*') + prettier -c $(fd -ejs) + touch $out + ''; + + js-lint-check = pkgs.runCommand "js-lint-check" + { + nativeBuildInputs = [ pkgs.nodePackages.eslint pkgs.fd ]; + } + '' + cd ${self} + eslint $(fd -ejs) + touch $out + ''; + }); + + devShells = perSystem (system: + let + pkgs = nixpkgsFor system; + in + { + default = (psProjectFor pkgs).devShell; + }); + }; } diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index d5aacbfde..2d1305a35 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -138,6 +138,39 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" , version = "d72e51fbc0255eb3246c9132d295de7f65e16a99" } + , cip95 = + { dependencies = + [ "aff" + , "aff-promise" + , "console" + , "effect" + , "newtype" + , "prelude" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip95" + , version = "9d92a38cddd318245010286ae3966cd515d6952f" + } + , cip95-typesafe = + { dependencies = + [ "aff" + , "bifunctors" + , "cip30" + , "cip30-typesafe" + , "cip95" + , "console" + , "control" + , "effect" + , "either" + , "exceptions" + , "maybe" + , "prelude" + , "spec" + , "transformers" + , "variant" + ] + , repo = "https://github.com/mlabs-haskell/purescript-cip95-typesafe" + , version = "84cf1a18abc274222b31d7fcb829195ae2e673c4" + } , bytearrays = { dependencies = [ "aeson" @@ -259,12 +292,10 @@ let additions = , "maybe" , "newtype" , "prelude" - , "profunctor-lenses" - , "typelevel-prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet" - , version = "v1.0.0" + , version = "a43c410a8430b552e42e88ab542eb6a43d09a633" } , uplc-apply-args = { dependencies = @@ -339,11 +370,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" -<<<<<<< HEAD , version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d" -======= - , version = "v1.0.2" ->>>>>>> c02737564866f4f5a1d82ddf0e59eea6241c91a1 } , cardano-message-signing = { dependencies = @@ -369,7 +396,7 @@ let additions = , "uint" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" - , version = "v1.0.0" + , version = "cc1073ddf8bce72407ef6671e3decb59f422e304" } , mote-testplan = { dependencies = @@ -471,6 +498,8 @@ let additions = , "cip30" , "cip30-mock" , "cip30-typesafe" + , "cip95" + , "cip95-typesafe" , "console" , "control" , "crypto" @@ -532,6 +561,7 @@ let additions = , "record" , "refs" , "safe-coerce" + , "safely" , "spec" , "spec-quickcheck" , "strings" @@ -552,11 +582,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" -<<<<<<< HEAD - , version = "64028db993083b09ff9875a59def48e2f84de04b" -======= - , version = "ddbd601e882276958fe260b8c492b5c7f489f174" ->>>>>>> c02737564866f4f5a1d82ddf0e59eea6241c91a1 + , version = "582649dae3d95a3ee32c9ed1898a5264e134b53e" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 8abc339ca..699d96889 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -223,11 +223,11 @@ let "cardano-hd-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-hd-wallet"; - version = "v1.0.0"; + version = "cc1073ddf8bce72407ef6671e3decb59f422e304"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet"; - rev = "640b10e00d6eeb4a1c13e730295072ae34e56ac9"; - sha256 = "1kw3p58kf94cy89pbss2z5k12am49qj3jzp5szalyz7caqpxkmf7"; + rev = "cc1073ddf8bce72407ef6671e3decb59f422e304"; + sha256 = "0y51lp3x785yjjrr91rmpw1bhzjdfjb5fs27n1vlwihxjyfylxya"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -235,11 +235,11 @@ let "cardano-key-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-key-wallet"; - version = "v1.0.0"; + version = "a43c410a8430b552e42e88ab542eb6a43d09a633"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "55f176dbedddbd37297a3d1f90c756420159454e"; - sha256 = "1fr77kvgdvxqi0jhg98balrwpf7rlhwiyrf1v8z2112yyln2myj9"; + rev = "a43c410a8430b552e42e88ab542eb6a43d09a633"; + sha256 = "1laiaq8xpd0hdfrqw6yd4gr1jai6lybjqmc3m4dhz0xapn40hmx8"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -295,19 +295,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; -<<<<<<< HEAD - version = "64028db993083b09ff9875a59def48e2f84de04b"; - src = pkgs.fetchgit { - url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "64028db993083b09ff9875a59def48e2f84de04b" ; - sha256 = "157n05frzx7lzz165ph224gzghbkqs0layj8ghnwchzpkjkaggqy"; -======= version = "ddbd601e882276958fe260b8c492b5c7f489f174"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; rev = "ddbd601e882276958fe260b8c492b5c7f489f174"; sha256 = "1dgh4sj0hni3knk9rcljpy9r1fcjnxfaf12jrwvvzi8i2kljd7hz"; ->>>>>>> c02737564866f4f5a1d82ddf0e59eea6241c91a1 }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -315,19 +307,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; -<<<<<<< HEAD version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; rev = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; sha256 = "04h78kivkm9nnz5pxjqvgsf7g9gfzzjn6crwj3lh1m7kxgb1yxds"; -======= - version = "v1.0.2"; - src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "40d9468a4712ad2bf57ebede19fae92208f082a0"; - sha256 = "1iawinsrsipqgjrcgv650x3i2iad1z2vlwlhvlcx9880qmv0m9gc"; ->>>>>>> c02737564866f4f5a1d82ddf0e59eea6241c91a1 }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 2669b1b3b2f95c08702828417d8f15726c10beae Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 25 Jul 2024 00:02:27 +0200 Subject: [PATCH 327/373] Fix ctl-scaffold --- spago-packages.nix | 8 +- templates/ctl-scaffold/flake.lock | 13840 ++++++++++++++------ templates/ctl-scaffold/flake.nix | 4 +- templates/ctl-scaffold/packages.dhall | 8 +- templates/ctl-scaffold/spago-packages.nix | 38 +- templates/ctl-scaffold/spago.dhall | 1 + 6 files changed, 9990 insertions(+), 3909 deletions(-) diff --git a/spago-packages.nix b/spago-packages.nix index 393efc64b..7dd94899d 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "v1.0.0"; + version = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; - rev = "70d219d6463466458fd381b55d84f458dcaee94a"; - sha256 = "1148x79lxq2rr897cfspkrjspwyjgw5xm9b9188wvgf568703r3w"; + url = "https://github.com/errfrom/purescript-cardano-transaction-builder"; + rev = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; + sha256 = "1k57z6l14679vphw6l8l52hfyj5a1pk7vbjn929nsv0axp5y7fxa"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 7184f420f..4e0fb88f6 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -18,6 +18,23 @@ } }, "CHaP_2": { + "flake": false, + "locked": { + "lastModified": 1702906471, + "narHash": "sha256-br+hVo3R6nfmiSEPXcLKhIX4Kg5gcK2PjzjmvQsuUp8=", + "owner": "IntersectMBO", + "repo": "cardano-haskell-packages", + "rev": "48a359ac3f1d437ebaa91126b20e15a65201f004", + "type": "github" + }, + "original": { + "owner": "IntersectMBO", + "ref": "repo", + "repo": "cardano-haskell-packages", + "type": "github" + } + }, + "CHaP_3": { "flake": false, "locked": { "lastModified": 1686070892, @@ -34,14 +51,14 @@ "type": "github" } }, - "CHaP_3": { + "CHaP_4": { "flake": false, "locked": { - "lastModified": 1695160702, - "narHash": "sha256-+Mfc6eGA1ZwQ/ZjKzMoMWkHzd+sgR1JbxY0i849HjEU=", + "lastModified": 1702593630, + "narHash": "sha256-IWu27+sfPtazjIZiWLUm8G4BKvjXmIL+/1XT/ETnfhg=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "9932690af3713ef034c928850252eb1b88450ee6", + "rev": "9783a177efcea5beb8808aab7513098bdab185ba", "type": "github" }, "original": { @@ -51,18 +68,18 @@ "type": "github" } }, - "CHaP_4": { + "CHaP_5": { "flake": false, "locked": { - "lastModified": 1694601145, - "narHash": "sha256-p7ZxorrOvoow6N+JKvfrCiRYFtUSPiEMgt8MR+rcTT4=", - "owner": "input-output-hk", + "lastModified": 1721831314, + "narHash": "sha256-I1j5HPSbbh3l1D0C9oP/59YB4e+64K9NDRl7ueD1c/Y=", + "owner": "intersectmbo", "repo": "cardano-haskell-packages", - "rev": "e8298604717dbaa311c1e42e021b571670f4b039", + "rev": "8815ee7598bc39a02db8896b788f69accf892790", "type": "github" }, "original": { - "owner": "input-output-hk", + "owner": "intersectmbo", "ref": "repo", "repo": "cardano-haskell-packages", "type": "github" @@ -84,6 +101,22 @@ "type": "github" } }, + "HTTP_10": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "HTTP_2": { "flake": false, "locked": { @@ -180,9 +213,41 @@ "type": "github" } }, + "HTTP_8": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, + "HTTP_9": { + "flake": false, + "locked": { + "lastModified": 1451647621, + "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", + "owner": "phadej", + "repo": "HTTP", + "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "type": "github" + }, + "original": { + "owner": "phadej", + "repo": "HTTP", + "type": "github" + } + }, "agenix": { "inputs": { - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_38" }, "locked": { "lastModified": 1641576265, @@ -200,8 +265,8 @@ }, "agenix-cli": { "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_10" + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_39" }, "locked": { "lastModified": 1641404293, @@ -219,8 +284,8 @@ }, "agenix-cli_2": { "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_12" + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_41" }, "locked": { "lastModified": 1641404293, @@ -238,8 +303,8 @@ }, "agenix-cli_3": { "inputs": { - "flake-utils": "flake-utils_18", - "nixpkgs": "nixpkgs_41" + "flake-utils": "flake-utils_33", + "nixpkgs": "nixpkgs_70" }, "locked": { "lastModified": 1641404293, @@ -257,7 +322,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -353,7 +418,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_40" + "nixpkgs": "nixpkgs_69" }, "locked": { "lastModified": 1641576265, @@ -423,7 +488,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_35" + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1646360966, @@ -439,6 +504,52 @@ "type": "github" } }, + "ameba-src": { + "flake": false, + "locked": { + "lastModified": 1679041484, + "narHash": "sha256-pc9mtVR/PBhM5l1PnDkm+y+McxbrfAmQzxmLi761VF4=", + "owner": "crystal-ameba", + "repo": "ameba", + "rev": "7c74d196d6d9a496a81a0c7b79ef44f39faf41b8", + "type": "github" + }, + "original": { + "owner": "crystal-ameba", + "ref": "v1.4.3", + "repo": "ameba", + "type": "github" + } + }, + "auth-keys-hub": { + "inputs": { + "crystal": "crystal", + "flake-parts": "flake-parts_2", + "inclusive": "inclusive", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ], + "statix": "statix", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1691483346, + "narHash": "sha256-wvn84eGcc+PMbq/qSCWcZ/kV7/bjwuGOVSn/9rGaaKw=", + "owner": "input-output-hk", + "repo": "auth-keys-hub", + "rev": "ab7c79f49886b8f24cfae4b967a59ea62af9156e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "auth-keys-hub", + "type": "github" + } + }, "bats-assert": { "flake": false, "locked": { @@ -487,6 +598,22 @@ "type": "github" } }, + "bats-assert_4": { + "flake": false, + "locked": { + "lastModified": 1636059754, + "narHash": "sha256-ewME0l27ZqfmAwJO4h5biTALc9bDLv7Bl3ftBzBuZwk=", + "owner": "bats-core", + "repo": "bats-assert", + "rev": "34551b1d7f8c7b677c1a66fc0ac140d6223409e5", + "type": "github" + }, + "original": { + "owner": "bats-core", + "repo": "bats-assert", + "type": "github" + } + }, "bats-support": { "flake": false, "locked": { @@ -535,28 +662,61 @@ "type": "github" } }, + "bats-support_4": { + "flake": false, + "locked": { + "lastModified": 1548869839, + "narHash": "sha256-Gr4ntadr42F2Ks8Pte2D4wNDbijhujuoJi4OPZnTAZU=", + "owner": "bats-core", + "repo": "bats-support", + "rev": "d140a65044b2d6810381935ae7f0c94c7023c8c3", + "type": "github" + }, + "original": { + "owner": "bats-core", + "repo": "bats-support", + "type": "github" + } + }, + "bdwgc-src": { + "flake": false, + "locked": { + "lastModified": 1661523039, + "narHash": "sha256-UYJQGeSykmfydGAmTlNJNyAPBasBkddOSoopBHiY7TI=", + "owner": "ivmai", + "repo": "bdwgc", + "rev": "cd1fbc1dbfd2cc888436944dd2784f39820698d7", + "type": "github" + }, + "original": { + "owner": "ivmai", + "ref": "v8.2.2", + "repo": "bdwgc", + "type": "github" + } + }, "bitte": { "inputs": { "agenix": "agenix", "agenix-cli": "agenix-cli", - "blank": "blank_2", + "blank": "blank_6", "capsules": "capsules", "data-merge": "data-merge", "deploy": "deploy_2", - "fenix": "fenix_4", - "hydra": "hydra_3", - "n2c": "n2c_2", - "nix": "nix_5", - "nixpkgs": "nixpkgs_29", + "fenix": "fenix_6", + "hydra": "hydra_7", + "n2c": "n2c_5", + "nix": "nix_10", + "nixpkgs": "nixpkgs_58", "nixpkgs-docker": "nixpkgs-docker", - "nixpkgs-unstable": "nixpkgs-unstable_3", + "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad-driver-nix": "nomad-driver-nix_2", "nomad-follower": "nomad-follower_2", - "ops-lib": "ops-lib_3", + "ops-lib": "ops-lib_5", "ragenix": "ragenix_3", - "std": "std_2", - "terranix": "terranix_2", - "utils": "utils_12" + "std": "std_6", + "terranix": "terranix_3", + "utils": "utils_17" }, "locked": { "lastModified": 1661790449, @@ -642,20 +802,20 @@ "inputs": { "agenix": "agenix_2", "agenix-cli": "agenix-cli_2", - "blank": "blank_3", + "blank": "blank_7", "deploy": "deploy", - "fenix": "fenix_2", - "hydra": "hydra_2", - "nix": "nix_2", - "nixpkgs": "nixpkgs_15", - "nixpkgs-unstable": "nixpkgs-unstable_2", + "fenix": "fenix_4", + "hydra": "hydra_6", + "nix": "nix_7", + "nixpkgs": "nixpkgs_44", + "nixpkgs-unstable": "nixpkgs-unstable_7", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", "nomad-follower": "nomad-follower", - "ops-lib": "ops-lib_2", + "ops-lib": "ops-lib_4", "ragenix": "ragenix", - "terranix": "terranix", - "utils": "utils_7", + "terranix": "terranix_2", + "utils": "utils_12", "vulnix": "vulnix" }, "locked": { @@ -676,20 +836,20 @@ "inputs": { "agenix": "agenix_6", "agenix-cli": "agenix-cli_3", - "blank": "blank_4", + "blank": "blank_8", "deploy": "deploy_3", - "fenix": "fenix_6", - "hydra": "hydra_4", - "nix": "nix_9", - "nixpkgs": "nixpkgs_44", - "nixpkgs-unstable": "nixpkgs-unstable_4", + "fenix": "fenix_8", + "hydra": "hydra_8", + "nix": "nix_14", + "nixpkgs": "nixpkgs_73", + "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", "nomad-follower": "nomad-follower_3", - "ops-lib": "ops-lib_4", + "ops-lib": "ops-lib_6", "ragenix": "ragenix_4", - "terranix": "terranix_3", - "utils": "utils_21", + "terranix": "terranix_4", + "utils": "utils_26", "vulnix": "vulnix_2" }, "locked": { @@ -781,6 +941,51 @@ "type": "github" } }, + "blank_6": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_7": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, + "blank_8": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "blank", + "type": "github" + } + }, "blockfrost": { "inputs": { "nixpkgs": "nixpkgs" @@ -800,6 +1005,25 @@ "type": "github" } }, + "blockfrost_2": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1716466734, + "narHash": "sha256-h1LdfN/2KlD/XRjgj7rDNRInxSKZCOx6OF4jak/3c/E=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "7204204615be69b2f298ddf11f9a23dbbb184e55", + "type": "github" + }, + "original": { + "owner": "blockfrost", + "ref": "v2.0.3", + "repo": "blockfrost-backend-ryo", + "type": "github" + } + }, "blst": { "flake": false, "locked": { @@ -834,31 +1058,133 @@ "type": "github" } }, - "byron-chain": { + "blst_3": { "flake": false, "locked": { - "lastModified": 1557232434, - "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", "type": "github" } }, - "cabal-32": { + "blst_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_5": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_6": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "blst_7": { + "flake": false, + "locked": { + "lastModified": 1656163412, + "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + }, + "original": { + "owner": "supranational", + "repo": "blst", + "rev": "03b5124029979755c752eec45f3c29674b558446", + "type": "github" + } + }, + "byron-chain": { + "flake": false, + "locked": { + "lastModified": 1557232434, + "narHash": "sha256-2rclcOjIVq0lFCdYAa8S9imzZZHqySn2LZ/O48hUofw=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "a31ac7534ec855b715b9a6bb6a06861ee94935d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "type": "github" + } + }, + "cabal-32": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_10": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" }, "original": { "owner": "haskell", @@ -969,6 +1295,40 @@ "type": "github" } }, + "cabal-32_8": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, + "cabal-32_9": { + "flake": false, + "locked": { + "lastModified": 1603716527, + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "owner": "haskell", + "repo": "cabal", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.2", + "repo": "cabal", + "type": "github" + } + }, "cabal-34": { "flake": false, "locked": { @@ -986,14 +1346,31 @@ "type": "github" } }, + "cabal-34_10": { + "flake": false, + "locked": { + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -1006,11 +1383,11 @@ "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { @@ -1021,6 +1398,40 @@ } }, "cabal-34_4": { + "flake": false, + "locked": { + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34_5": { + "flake": false, + "locked": { + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "owner": "haskell", + "repo": "cabal", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.4", + "repo": "cabal", + "type": "github" + } + }, + "cabal-34_6": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1037,7 +1448,7 @@ "type": "github" } }, - "cabal-34_5": { + "cabal-34_7": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1054,14 +1465,14 @@ "type": "github" } }, - "cabal-34_6": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -1071,7 +1482,7 @@ "type": "github" } }, - "cabal-34_7": { + "cabal-34_9": { "flake": false, "locked": { "lastModified": 1640353650, @@ -1105,14 +1516,31 @@ "type": "github" } }, + "cabal-36_10": { + "flake": false, + "locked": { + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "owner": "haskell", + "repo": "cabal", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, "cabal-36_2": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1125,11 +1553,11 @@ "cabal-36_3": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1142,11 +1570,11 @@ "cabal-36_4": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1159,11 +1587,11 @@ "cabal-36_5": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { @@ -1176,11 +1604,11 @@ "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { @@ -1207,11 +1635,75 @@ "type": "github" } }, - "capsules": { - "inputs": { - "bitte": "bitte_2", + "cabal-36_8": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_9": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "call-flake": { + "locked": { + "lastModified": 1687380775, + "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", + "owner": "divnix", + "repo": "call-flake", + "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "call-flake", + "type": "github" + } + }, + "capkgs": { + "locked": { + "lastModified": 1697123727, + "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", + "owner": "input-output-hk", + "repo": "capkgs", + "rev": "b197e225592dfe38afb80c94b628d99968c0541d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "capkgs", + "type": "github" + } + }, + "capsules": { + "inputs": { + "bitte": "bitte_2", "iogo": "iogo", - "nixpkgs": "nixpkgs_23", + "nixpkgs": "nixpkgs_52", "ragenix": "ragenix_2" }, "locked": { @@ -1232,7 +1724,7 @@ "inputs": { "bitte": "bitte_3", "iogo": "iogo_2", - "nixpkgs": "nixpkgs_52", + "nixpkgs": "nixpkgs_81", "ragenix": "ragenix_5" }, "locked": { @@ -1251,20 +1743,23 @@ }, "cardano-automation": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_4", "haskellNix": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "haskellNix" ], "nixpkgs": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "nixpkgs" ], "tullia": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia" ] }, @@ -1282,970 +1777,1108 @@ "type": "github" } }, - "cardano-configurations": { - "flake": false, + "cardano-automation_2": { + "inputs": { + "flake-utils": "flake-utils_9", + "haskellNix": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "tullia": "tullia_2" + }, "locked": { - "lastModified": 1699561895, - "narHash": "sha256-bLNN6lJUe5dR1EOdtDspReE2fu2EV7hQMHFGDinxf5Y=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "d952529afdfdf6d53ce190b1bf8af990a7ae9590", + "repo": "cardano-automation", "type": "github" } }, - "cardano-configurations_2": { - "flake": false, + "cardano-automation_3": { + "inputs": { + "flake-utils": "flake-utils_16", + "haskellNix": [ + "ctl", + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "tullia": "tullia_3" + }, "locked": { - "lastModified": 1694019972, - "narHash": "sha256-TQEvb6W2VlOWxqIFa4r8UFBVbu82Bb2hRaDtN5Zbiuk=", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "65ef979cf69f420efca0a7aaf0412a610bc48097", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", + "repo": "cardano-automation", "type": "github" } }, - "cardano-explorer-app": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "lastModified": 1720834069, + "narHash": "sha256-jWFjTUTpwAgvsSJsQ4INgKl/paR489n1si35GLtSkuU=", "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "repo": "cardano-configurations", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "repo": "cardano-configurations", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" } }, - "cardano-graphql": { + "cardano-configurations-8.1.1": { "flake": false, "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "lastModified": 1692193634, + "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-graphql", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" } }, - "cardano-mainnet-mirror": { - "inputs": { - "nixpkgs": "nixpkgs_2" - }, + "cardano-configurations-8.7.3": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "lastModified": 1702085095, + "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" } }, - "cardano-node": { + "cardano-db-sync": { "inputs": { "CHaP": "CHaP_2", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake", - "flake-compat": "flake-compat", + "cardano-parts": "cardano-parts", + "flake-compat": "flake-compat_4", "hackageNix": "hackageNix", "haskellNix": "haskellNix", - "hostNixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], "iohkNix": "iohkNix", - "nix2container": "nix2container", "nixpkgs": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-db-sync", "haskellNix", "nixpkgs-unstable" ], - "ops-lib": "ops-lib", - "std": [ - "ctl", - "cardano-node", - "tullia", - "std" - ], - "tullia": "tullia", - "utils": "utils_2" + "utils": "utils" }, "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "lastModified": 1707925775, + "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", + "owner": "intersectmbo", + "repo": "cardano-db-sync", + "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "8.1.1", - "repo": "cardano-node", + "owner": "intersectmbo", + "ref": "13.2.0.1", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-node_2": { + "cardano-db-sync-schema": { "flake": false, "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-shell": { + "cardano-db-sync-schema-ng": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1694078776, + "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-db-sync", + "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "sancho-1-1-0", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-shell_2": { + "cardano-db-sync-service": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "cardano-shell_3": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "cardano-shell_4": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "cardano-graphql", "type": "github" } }, - "cardano-shell_5": { - "flake": false, + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_15" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cardano-shell_6": { - "flake": false, + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_25" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cardano-shell_7": { - "flake": false, + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_34" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cardano-wallet": { + "cardano-nix": { "inputs": { - "customConfig": "customConfig_2", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_8", - "flake-utils": "flake-utils_25", - "haskellNix": "haskellNix_2", - "hostNixpkgs": [ + "blockfrost": "blockfrost_2", + "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", + "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", + "cardano-db-sync": "cardano-db-sync", + "cardano-node-8.1.1": "cardano-node-8.1.1", + "cardano-node-8.7.3": "cardano-node-8.7.3", + "devour-flake": "devour-flake", + "devshell": "devshell_4", + "flake-parts": "flake-parts_5", + "flake-root": "flake-root", + "hercules-ci-effects": "hercules-ci-effects", + "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", "nixpkgs" ], - "iohkNix": "iohkNix_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "nixpkgs-unstable" - ] + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", - "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "lastModified": 1721651758, + "narHash": "sha256-pciT8ASgAovl6I0GsdiWnUhExNXPJtQZpD8dTcv1o60=", + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "rev": "f6a7f0c43299783ca37bbdc73195c7289854e8da", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", + "owner": "mlabs-haskell", + "ref": "dshuiski/ogmios-v6.5.0", + "repo": "cardano.nix", "type": "github" } }, - "cardano-world": { + "cardano-node": { "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ + "CHaP": "CHaP_5", + "cardano-automation": "cardano-automation_3", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "customConfig": "customConfig_3", + "em": "em_3", + "empty-flake": "empty-flake_4", + "flake-compat": "flake-compat_15", + "hackageNix": "hackageNix_4", + "haskellNix": "haskellNix_4", + "hostNixpkgs": [ "ctl", - "db-sync" + "cardano-node", + "nixpkgs" ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node_2", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_9", - "hackage": "hackage_3", - "haskell-nix": "haskell-nix_2", - "iohk-nix": "iohk-nix", - "n2c": "n2c_3", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_63", - "nixpkgs-haskell": [ + "iohkNix": "iohkNix_4", + "nix2container": "nix2container_6", + "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "haskell-nix", + "cardano-node", + "haskellNix", "nixpkgs-unstable" ], - "ogmios": "ogmios", - "std": "std_3", - "tullia": "tullia_2" + "ops-lib": "ops-lib_3", + "std": "std_5", + "utils": "utils_7" }, "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", - "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "lastModified": 1720733312, + "narHash": "sha256-8jDBmy8o8RhX8q9lNa0R1sMXhlzipoTaNVwReLDy9wQ=", + "owner": "IntersectMBO", + "repo": "cardano-node", + "rev": "269dbda47ae538e355e837539d3e0e9833642fc7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-world", + "owner": "IntersectMBO", + "ref": "9.0.0-sancho", + "repo": "cardano-node", "type": "github" } }, - "cicero": { + "cardano-node-8.1.1": { "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_8", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix", - "inclusive": "inclusive_8", - "nix": "nix_8", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_39", - "poetry2nix": "poetry2nix", - "utils": "utils_16" + "CHaP": "CHaP_3", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake_2", + "flake-compat": "flake-compat_6", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "iohkNix": "iohkNix_2", + "nix2container": "nix2container", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_3" }, "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", - "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cicero", + "owner": "intersectmbo", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "ctl": { + "cardano-node-8.7.3": { "inputs": { - "CHaP": "CHaP", - "blockfrost": "blockfrost", - "cardano-configurations": "cardano-configurations", - "cardano-node": "cardano-node", - "db-sync": "db-sync", - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_11", - "hackage-nix": "hackage-nix", - "haskell-nix": "haskell-nix_3", - "hercules-ci-effects": "hercules-ci-effects", - "iohk-nix": "iohk-nix_2", - "kupo": "kupo", - "kupo-nixos": "kupo-nixos", + "CHaP": "CHaP_4", + "cardano-automation": "cardano-automation_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "customConfig": "customConfig_2", + "em": "em_2", + "empty-flake": "empty-flake_3", + "flake-compat": "flake-compat_10", + "hackageNix": "hackageNix_3", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nix2container": "nix2container_4", "nixpkgs": [ "ctl", - "haskell-nix", + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", "nixpkgs-unstable" ], - "ogmios": "ogmios_2", - "ogmios-nixos": "ogmios-nixos", - "plutip": "plutip" + "ops-lib": "ops-lib_2", + "std": "std_3", + "utils": "utils_5" }, "locked": { - "lastModified": 1721765440, - "narHash": "sha256-H54m6RQRxb83z1IEp1y3krmQk7+SspymnSNaCKQm8LU=", - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "ddbd601e882276958fe260b8c492b5c7f489f174", + "lastModified": 1702654749, + "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", "type": "github" }, "original": { - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "ddbd601e882276958fe260b8c492b5c7f489f174", + "owner": "intersectmbo", + "ref": "8.7.3", + "repo": "cardano-node", "type": "github" } }, - "customConfig": { + "cardano-node-service": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1690209950, + "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-node", + "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "8.1.2", + "repo": "cardano-node", "type": "github" } }, - "customConfig_2": { + "cardano-node_2": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "customConfig_3": { + "cardano-parts": { + "inputs": { + "auth-keys-hub": "auth-keys-hub", + "capkgs": "capkgs", + "cardano-db-sync-schema": "cardano-db-sync-schema", + "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", + "cardano-db-sync-service": "cardano-db-sync-service", + "cardano-node-service": "cardano-node-service", + "cardano-wallet-service": "cardano-wallet-service", + "colmena": "colmena", + "empty-flake": "empty-flake", + "flake-parts": "flake-parts_3", + "haskell-nix": "haskell-nix", + "inputs-check": "inputs-check", + "iohk-nix": "iohk-nix", + "iohk-nix-ng": "iohk-nix-ng", + "nix": "nix_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "nixpkgs-unstable": "nixpkgs-unstable_2", + "offchain-metadata-tools-service": "offchain-metadata-tools-service", + "sops-nix": "sops-nix", + "terraform-providers": "terraform-providers", + "terranix": "terranix", + "treefmt-nix": "treefmt-nix_2" + }, "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" + "lastModified": 1697147999, + "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", + "owner": "input-output-hk", + "repo": "cardano-parts", + "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", + "type": "github" }, "original": { - "path": "./custom-config", - "type": "path" + "owner": "input-output-hk", + "repo": "cardano-parts", + "type": "github" } }, - "data-merge": { - "inputs": { - "nixlib": "nixlib", - "yants": "yants_2" - }, + "cardano-shell": { + "flake": false, "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", - "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "data-merge_2": { - "inputs": { - "nixlib": "nixlib_2" - }, + "cardano-shell_10": { + "flake": false, "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "data-merge_3": { - "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_4" - }, + "cardano-shell_2": { + "flake": false, "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "db-sync": { - "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_3", - "flake-compat": "flake-compat_10", - "haskellNix": "haskellNix_3", - "iohkNix": "iohkNix_3", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_23" - }, + "cardano-shell_3": { + "flake": false, "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "13.1.0.0", - "repo": "cardano-db-sync", + "repo": "cardano-shell", "type": "github" } }, - "deploy": { - "inputs": { - "fenix": "fenix", - "flake-compat": "flake-compat_4", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_3" - }, + "cardano-shell_4": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "cardano-shell", "type": "github" } }, - "deploy_2": { - "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_5", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_9" - }, + "cardano-shell_5": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "cardano-shell", "type": "github" } }, - "deploy_3": { - "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_6", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_17" - }, + "cardano-shell_6": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "repo": "cardano-shell", "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "cardano-shell_7": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_10": { + "cardano-shell_8": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_11": { + "cardano-shell_9": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "devshell_12": { + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig_4", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_40", + "haskellNix": "haskellNix_5", + "hostNixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix_5", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "devshell_13": { + "cardano-wallet-service": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1689751896, + "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", + "owner": "cardano-foundation", + "repo": "cardano-wallet", + "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "cardano-foundation", + "ref": "v2023-07-18", + "repo": "cardano-wallet", "type": "github" } }, - "devshell_14": { - "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, - "devshell_15": { + "cardano-world": { "inputs": { - "flake-utils": [ + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "ctl", + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_22", + "hackage": "hackage_4", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "n2c": "n2c_6", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_92", + "nixpkgs-haskell": [ "ctl", "db-sync", "cardano-world", - "std", - "flake-utils" + "haskell-nix", + "nixpkgs-unstable" ], + "ogmios": "ogmios", + "std": "std_7", + "tullia": "tullia_4" + }, + "locked": { + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cardano-world", + "type": "github" + } + }, + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_12", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix_2", + "inclusive": "inclusive_9", + "nix": "nix_13", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_68", + "poetry2nix": "poetry2nix", + "utils": "utils_21" + }, + "locked": { + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "cicero", + "type": "github" + } + }, + "colmena": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "std", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", "nixpkgs" - ] + ], + "stable": "stable" }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1684127108, + "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", + "owner": "zhaofengli", + "repo": "colmena", + "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "zhaofengli", + "ref": "v0.4.0", + "repo": "colmena", "type": "github" } }, - "devshell_16": { + "crane": { "inputs": { - "flake-utils": "flake-utils_31", + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_14", "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "tullia", + "cardano-nix", + "cardano-node-8.7.3", "std", + "paisano-mdbook-preprocessor", "nixpkgs" - ] + ], + "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "ipetkov", + "repo": "crane", "type": "github" } }, - "devshell_2": { + "crystal": { + "inputs": { + "ameba-src": "ameba-src", + "bdwgc-src": "bdwgc-src", + "crystal-aarch64-darwin": "crystal-aarch64-darwin", + "crystal-src": "crystal-src", + "crystal-x86_64-darwin": "crystal-x86_64-darwin", + "crystal-x86_64-linux": "crystal-x86_64-linux", + "crystalline-src": "crystalline-src", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1683429373, + "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", + "owner": "manveru", + "repo": "crystal-flake", + "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "manveru", + "repo": "crystal-flake", "type": "github" } }, - "devshell_3": { + "crystal-aarch64-darwin": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "devshell_4": { + "crystal-src": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1681995387, + "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", + "owner": "crystal-lang", + "repo": "crystal", + "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "crystal-lang", + "ref": "1.8.1", + "repo": "crystal", "type": "github" } }, - "devshell_5": { + "crystal-x86_64-darwin": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "devshell_6": { + "crystal-x86_64-linux": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + } + }, + "crystalline-src": { + "flake": false, + "locked": { + "lastModified": 1681549124, + "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", + "owner": "elbywan", + "repo": "crystalline", + "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "elbywan", + "ref": "v0.9.0", + "repo": "crystalline", "type": "github" } }, - "devshell_7": { + "ctl": { "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], + "CHaP": "CHaP", + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-nix": "cardano-nix", + "cardano-node": "cardano-node", + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_24", + "hackage-nix": "hackage-nix", + "haskell-nix": "haskell-nix_4", + "hercules-ci-effects": "hercules-ci-effects_2", + "iohk-nix": "iohk-nix_3", "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-arion": "nixpkgs-arion", + "ogmios": "ogmios_2" }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1721857616, + "narHash": "sha256-yKlJWVKe7Tc7jTtNP6gqAaSEaNCrgevjiMfpSZjeFHM=", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "bfbcb504f5667970b2e784a6a8ed2dccdd9beb50", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "bfbcb504f5667970b2e784a6a8ed2dccdd9beb50", "type": "github" } }, - "devshell_8": { - "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": "nixpkgs_36" + "customConfig": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_2": { "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "devshell_9": { + "customConfig_3": { "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "dmerge": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-node", - "tullia", - "std", - "yants" - ] + "customConfig_4": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "type": "github" }, + "original": { + "owner": "input-output-hk", + "repo": "empty-flake", + "type": "github" + } + }, + "customConfig_5": { "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" + }, + "original": { + "path": "./custom-config", + "type": "path" + } + }, + "data-merge": { + "inputs": { + "nixlib": "nixlib", + "yants": "yants_6" + }, + "locked": { + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", "owner": "divnix", "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { @@ -2254,31 +2887,16 @@ "type": "github" } }, - "dmerge_2": { + "data-merge_2": { "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] + "nixlib": "nixlib_2" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", "owner": "divnix", "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { @@ -2287,29 +2905,17 @@ "type": "github" } }, - "dmerge_3": { + "data-merge_3": { "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "yants" - ] + "nixlib": "nixlib_3", + "yants": "yants_8" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", "owner": "divnix", "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { @@ -2318,1065 +2924,1340 @@ "type": "github" } }, - "driver": { + "db-sync": { "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_6", - "nix": "nix_7", + "cardano-world": "cardano-world", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_23", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", "nixpkgs": [ "ctl", "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" + "haskellNix", + "nixpkgs-unstable" ], - "utils": "utils_13" + "utils": "utils_28" }, "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", + "repo": "cardano-db-sync", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "ref": "13.1.0.0", + "repo": "cardano-db-sync", "type": "github" } }, - "easy-purescript-nix": { - "flake": false, + "deploy": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_17", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_8" + }, "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "em": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_18", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_14" + }, "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "ema": { + "deploy_3": { "inputs": { - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_54", - "pre-commit-hooks": "pre-commit-hooks" + "fenix": "fenix_7", + "flake-compat": "flake-compat_19", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_22" }, "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "owner": "input-output-hk", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { - "owner": "srid", - "repo": "ema", + "owner": "input-output-hk", + "repo": "deploy-rs", "type": "github" } }, - "ema_2": { + "devour-flake": { "flake": false, "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "lastModified": 1694098737, + "narHash": "sha256-O51F4YFOzlaQAc9b6xjkAqpvrvCtw/Os2M7TU0y4SKQ=", "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "repo": "devour-flake", + "rev": "30a34036b29b0d12989ef6c8be77aa949d85aef5", "type": "github" }, "original": { "owner": "srid", - "ref": "multisite", - "repo": "ema", + "repo": "devour-flake", "type": "github" } }, - "emanote": { + "devshell": { "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_57", - "tailwind-haskell": "tailwind-haskell" + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "srid", - "repo": "emanote", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "empty-flake": { + "devshell_10": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" - } - }, - "fenix": { - "inputs": { - "nixpkgs": "nixpkgs_13", - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_2": { + "devshell_11": { "inputs": { - "nixpkgs": [ + "flake-utils": [ "ctl", "db-sync", "cardano-world", "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" + "std", + "flake-utils" ], - "rust-analyzer-src": "rust-analyzer-src_2" + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_3": { + "devshell_12": { "inputs": { - "nixpkgs": "nixpkgs_26", - "rust-analyzer-src": "rust-analyzer-src_3" + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" }, "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_4" - }, + "devshell_13": { "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_5": { - "inputs": { - "nixpkgs": "nixpkgs_42", - "rust-analyzer-src": "rust-analyzer-src_5" - }, + "devshell_14": { "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "fenix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_6" - }, + "devshell_15": { "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat": { - "flake": false, + "devshell_16": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_10": { - "flake": false, + "devshell_17": { "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_11": { - "flake": false, + "devshell_18": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_12": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" + "devshell_19": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_13": { - "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_14": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" + "devshell_2": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_15": { - "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_2": { - "flake": false, + "devshell_20": { + "inputs": { + "flake-utils": "flake-utils_46", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_3": { - "flake": false, + "devshell_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "systems": "systems_2" + }, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_4": { - "flake": false, + "devshell_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ], + "systems": "systems_3" + }, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1695973661, + "narHash": "sha256-BP2H4c42GThPIhERtTpV1yCtwQHYHEKdRu7pjrmQAwo=", + "owner": "numtide", + "repo": "devshell", + "rev": "cd4e2fda3150dd2f689caeac07b7f47df5197c31", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_5": { - "flake": false, + "devshell_5": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_6": { - "flake": false, + "devshell_6": { "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_7": { - "flake": false, + "devshell_7": { "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_8": { - "flake": false, + "devshell_8": { "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-compat_9": { - "flake": false, + "devshell_9": { "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "flake-parts": { + "dmerge": { "inputs": { - "nixpkgs": "nixpkgs_56" + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "yants" + ] }, "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-parts_2": { + "dmerge_2": { "inputs": { - "nixpkgs-lib": [ + "nixlib": [ "ctl", - "hercules-ci-effects", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" ] }, "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "id": "flake-parts", - "type": "indirect" + "owner": "divnix", + "repo": "data-merge", + "type": "github" } }, - "flake-utils": { + "dmerge_3": { + "inputs": { + "haumea": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea" + ], + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "flake-utils_10": { + "dmerge_4": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_11": { + "dmerge_5": { + "inputs": { + "haumea": [ + "ctl", + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "ctl", + "cardano-node", + "std", + "lib" + ], + "yants": [ + "ctl", + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "flake-utils_12": { + "dmerge_6": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_13": { + "dmerge_7": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "flake-utils_14": { + "driver": { + "inputs": { + "devshell": "devshell_13", + "inclusive": "inclusive_7", + "nix": "nix_12", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_18" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "flake-utils_15": { + "easy-purescript-nix": { + "flake": false, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1696584097, + "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "justinwoo", + "repo": "easy-purescript-nix", "type": "github" } }, - "flake-utils_16": { + "em": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_17": { + "em_2": { + "flake": false, "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_18": { + "em_3": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "flake-utils_19": { + "ema": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_83", + "pre-commit-hooks": "pre-commit-hooks" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "repo": "ema", "type": "github" } }, - "flake-utils_2": { + "ema_2": { + "flake": false, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "srid", + "ref": "multisite", + "repo": "ema", "type": "github" } }, - "flake-utils_20": { + "emanote": { + "inputs": { + "ema": "ema_2", + "flake-parts": "flake-parts_6", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_86", + "tailwind-haskell": "tailwind-haskell" + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "srid", + "repo": "emanote", "type": "github" } }, - "flake-utils_21": { + "empty-flake": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_22": { + "empty-flake_2": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_23": { + "empty-flake_3": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_24": { + "empty-flake_4": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "flake-utils_25": { + "fenix": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "auth-keys-hub", + "statix", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1645251813, + "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", + "owner": "nix-community", + "repo": "fenix", + "rev": "9892337b588c38ec59466a1c89befce464aae7f8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_26": { + "fenix_2": { + "inputs": { + "nixpkgs": "nixpkgs_30", + "rust-analyzer-src": "rust-analyzer-src_2" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_27": { + "fenix_3": { + "inputs": { + "nixpkgs": "nixpkgs_42", + "rust-analyzer-src": "rust-analyzer-src_3" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_28": { + "fenix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_29": { + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_55", + "rust-analyzer-src": "rust-analyzer-src_5" + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_3": { + "fenix_6": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_6" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_30": { + "fenix_7": { + "inputs": { + "nixpkgs": "nixpkgs_71", + "rust-analyzer-src": "rust-analyzer-src_7" + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_31": { + "fenix_8": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_8" + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "flake-utils_32": { + "flake-compat": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_33": { + "flake-compat_10": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_4": { + "flake-compat_11": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_5": { + "flake-compat_12": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_6": { + "flake-compat_13": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_7": { + "flake-compat_14": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_8": { + "flake-compat_15": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "flake-utils_9": { + "flake-compat_16": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "flakeCompat": { + "flake-compat_17": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { @@ -3385,361 +4266,4430 @@ "type": "github" } }, - "follower": { - "inputs": { - "devshell": "devshell_10", - "inclusive": "inclusive_7", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_14" - }, + "flake-compat_18": { + "flake": false, "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk": { + "flake-compat_19": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_2": { + "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_3": { + "flake-compat_20": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_4": { + "flake-compat_21": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_5": { + "flake-compat_22": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_6": { + "flake-compat_23": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "ghc-8.6.5-iohk_7": { + "flake-compat_24": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "ghc98X": { + "flake-compat_25": { "flake": false, "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "type": "github" }, "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", + "type": "github" } }, - "ghc99": { + "flake-compat_26": { "flake": false, "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_5", - "utils": "utils" - }, + "flake-compat_3": { + "flake": false, "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "tweag", - "repo": "gomod2nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage": { + "flake-compat_4": { "flake": false, "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "hackage-nix": { + "flake-compat_5": { "flake": false, "locked": { - "lastModified": 1702772694, - "narHash": "sha256-KL6ZjbhPBCco1ho0lmh0/dfPSNxjF8qtrTlzQcTN3iw=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "20bd4b5f667f892230d4a28ea4607e85ce9bc44e", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackageNix": { + "flake-compat_6": { "flake": false, "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "hackage_2": { + "flake-compat_7": { "flake": false, "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "hackage.nix", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "hackage_3": { + "flake-compat_8": { "flake": false, "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage_4": { + "flake-compat_9": { "flake": false, "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "hackage_5": { - "flake": false, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, "locked": { - "lastModified": 1654219082, - "narHash": "sha256-sm59eg5wSrfIAjNXfBaaOBQ8daghF3g1NiGazYfj+no=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "fc90e7c5dea0483bacb01fc00bd2ab8f8e72500d", + "lastModified": 1672152762, + "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "haskell-flake": { + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "lastModified": 1682984683, + "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "86684881e184f41aa322e653880e497b66429f3e", "type": "github" }, "original": { - "owner": "srid", - "repo": "haskell-flake", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "haskell-nix": { + "flake-parts_3": { "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-utils": "flake-utils_16", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls_2", - "nix-tools": "nix-tools", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], + "nixpkgs-lib": "nixpkgs-lib_3" + }, + "locked": { + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_4" + }, + "locked": { + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_5" + }, + "locked": { + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs": "nixpkgs_85" + }, + "locked": { + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ + "ctl", + "hercules-ci-effects", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, + "flake-root": { + "locked": { + "lastModified": 1692742795, + "narHash": "sha256-f+Y0YhVCIJ06LemO+3Xx00lIcqQxSKJHXT/yk1RTKxw=", + "owner": "srid", + "repo": "flake-root", + "rev": "d9a70d9c7a5fd7f3258ccf48da9335e9b47c3937", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "flake-root", + "type": "github" + } + }, + "flake-utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_10": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_11": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_12": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_13": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_14": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_15": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_16": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_17": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_18": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_19": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_20": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_21": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_22": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_23": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_24": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_25": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_26": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_27": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_28": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_29": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_30": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_31": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_32": { + "locked": { + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_33": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_34": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_35": { + "locked": { + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_36": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_37": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_38": { + "locked": { + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_39": { + "locked": { + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "type": "github" + }, + "original": { + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_40": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_41": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_42": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_43": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_44": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_45": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_46": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_47": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "locked": { + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "type": "github" + }, + "original": { + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_8": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flakeCompat": { + "flake": false, + "locked": { + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "follower": { + "inputs": { + "devshell": "devshell_14", + "inclusive": "inclusive_8", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_19" + }, + "locked": { + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nomad-follower", + "type": "github" + } + }, + "ghc-8.6.5-iohk": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_10": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_2": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_3": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_4": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_5": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_6": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_7": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_8": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc-8.6.5-iohk_9": { + "flake": false, + "locked": { + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", + "type": "github" + } + }, + "ghc98X": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_2": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc98X_3": { + "flake": false, + "locked": { + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_2": { + "flake": false, + "locked": { + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "ghc99_3": { + "flake": false, + "locked": { + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "ref": "refs/heads/master", + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_18", + "utils": "utils_2" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_22", + "utils": "utils_4" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_31", + "utils": "utils_6" + }, + "locked": { + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", + "type": "github" + }, + "original": { + "owner": "tweag", + "repo": "gomod2nix", + "type": "github" + } + }, + "hackage": { + "flake": false, + "locked": { + "lastModified": 1692145451, + "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage-nix": { + "flake": false, + "locked": { + "lastModified": 1702772694, + "narHash": "sha256-KL6ZjbhPBCco1ho0lmh0/dfPSNxjF8qtrTlzQcTN3iw=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "20bd4b5f667f892230d4a28ea4607e85ce9bc44e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix": { + "flake": false, + "locked": { + "lastModified": 1702945378, + "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_2": { + "flake": false, + "locked": { + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_3": { + "flake": false, + "locked": { + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackageNix_4": { + "flake": false, + "locked": { + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_2": { + "flake": false, + "locked": { + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_3": { + "flake": false, + "locked": { + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_4": { + "flake": false, + "locked": { + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "hackage_5": { + "flake": false, + "locked": { + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "hackage.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "empty-flake" + ] + }, + "locked": { + "lastModified": 1692147008, + "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_6", + "nix-tools": "nix-tools", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" + }, + "locked": { + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": [ + "ctl", + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" + }, + "locked": { + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_25", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "ghc98X": "ghc98X_3", + "ghc99": "ghc99_3", + "hackage": [ + "ctl", + "hackage-nix" + ], + "hls-1.10": "hls-1.10_6", + "hls-2.0": "hls-2.0_4", + "hls-2.2": "hls-2.2_3", + "hls-2.3": "hls-2.3_3", + "hls-2.4": "hls-2.4_3", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2305": "nixpkgs-2305_4", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" + }, + "locked": { + "lastModified": 1702774226, + "narHash": "sha256-QUQBV05VimFU0pasJlialCcL/jlCumzaTmCM9+6Ncpk=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "6ce1c8ab2a6d4af5721b22bd95968439b8c3c307", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-compat": "flake-compat_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "hackageNix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], "nixpkgs-2003": "nixpkgs-2003_2", "nixpkgs-2105": "nixpkgs-2105_2", "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-unstable": [ + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage" + }, + "locked": { + "lastModified": 1701053834, + "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "hackageNix" + ], + "hls-1.10": "hls-1.10_3", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "iserv-proxy": "iserv-proxy_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_2" + }, + "locked": { + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-compat": "flake-compat_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", + "hackage": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "hackageNix" + ], + "hls-1.10": "hls-1.10_4", + "hls-2.0": "hls-2.0_3", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_4", + "iserv-proxy": "iserv-proxy_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2211": "nixpkgs-2211_4", + "nixpkgs-2305": "nixpkgs-2305_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_3" + }, + "locked": { + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-compat": "flake-compat_16", + "flake-utils": "flake-utils_19", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "hackage": [ + "ctl", + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10_5", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_5", + "iserv-proxy": "iserv-proxy_5", + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2211": "nixpkgs-2211_5", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_4" + }, + "locked": { + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" + }, + "locked": { + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_47", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" + }, + "locked": { + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "haskell.nix", + "type": "github" + } + }, + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_28" + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "haumea_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-node", + "std", + "lib" + ] + }, + "locked": { + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", + "type": "github" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "ctl", + "cardano-nix", + "flake-parts" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1710396488, + "narHash": "sha256-yniBB5i1un44uzR4+luTWvZ6uGvsHSYIBiDZ8Xox4nQ=", + "owner": "mlabs-haskell", + "repo": "hercules-ci-effects", + "rev": "f5ed263ab0585dfb7b067301419fb80d64e8c021", + "type": "github" + }, + "original": { + "owner": "mlabs-haskell", + "ref": "push-cache-effect", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hercules-ci-effects_2": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_99" + }, + "locked": { + "lastModified": 1701009247, + "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "hls-1.10": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_2": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_3": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_4": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_5": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-1.10_6": { + "flake": false, + "locked": { + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_2": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_3": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.0_4": { + "flake": false, + "locked": { + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_2": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.2_3": { + "flake": false, + "locked": { + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_2": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.3_3": { + "flake": false, + "locked": { + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_2": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.4_3": { + "flake": false, + "locked": { + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hpc-coveralls": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_10": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_2": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_3": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_4": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_5": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_6": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_7": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_8": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hpc-coveralls_9": { + "flake": false, + "locked": { + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "type": "github" + }, + "original": { + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "type": "github" + } + }, + "hydra": { + "inputs": { + "nix": "nix", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_10": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_11": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_12": { + "inputs": { + "nix": "nix_20", + "nixpkgs": [ + "ctl", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_2": { + "inputs": { + "nix": "nix_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_3": { + "inputs": { + "nix": "nix_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_4": { + "inputs": { + "nix": "nix_5", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_5": { + "inputs": { + "nix": "nix_6", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "hydra_6": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_7": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_8": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "type": "github" + }, + "original": { + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", + "type": "github" + } + }, + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "type": "github" + }, + "original": { + "id": "hydra", + "type": "indirect" + } + }, + "incl": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_2": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_3": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_4": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "incl_5": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "std", + "lib" + ] + }, + "locked": { + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "incl", + "type": "github" + } + }, + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_10": { + "inputs": { + "stdlib": "stdlib_10" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_11": { + "inputs": { + "stdlib": "stdlib_11" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_12": { + "inputs": { + "stdlib": "stdlib_12" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_2": { + "inputs": { + "stdlib": "stdlib_2" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_3": { + "inputs": { + "stdlib": "stdlib_3" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_4": { + "inputs": { + "stdlib": "stdlib_4" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_5": { + "inputs": { + "stdlib": "stdlib_5" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_6": { + "inputs": { + "stdlib": "stdlib_6" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_7": { + "inputs": { + "stdlib": "stdlib_7" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_8": { + "inputs": { + "stdlib": "stdlib_8" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inclusive_9": { + "inputs": { + "stdlib": "stdlib_9" + }, + "locked": { + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "nix-inclusive", + "type": "github" + } + }, + "inputs-check": { + "inputs": { + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_7" + }, + "locked": { + "lastModified": 1692633913, + "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", + "owner": "input-output-hk", + "repo": "inputs-check", + "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "inputs-check", + "type": "github" + } + }, + "iogo": { + "inputs": { + "devshell": "devshell_8", + "inclusive": "inclusive_4", + "nixpkgs": "nixpkgs_51", + "utils": "utils_13" + }, + "locked": { + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iogo_2": { + "inputs": { + "devshell": "devshell_18", + "inclusive": "inclusive_12", + "nixpkgs": "nixpkgs_80", + "utils": "utils_27" + }, + "locked": { + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "bitte-iogo", + "type": "github" + } + }, + "iohk-nix": { + "inputs": { + "blst": "blst", + "nixpkgs": "nixpkgs_8", + "secp256k1": "secp256k1", + "sodium": "sodium" + }, + "locked": { + "lastModified": 1691469905, + "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", + "type": "github" + } + }, + "iohk-nix-ng": { + "inputs": { + "blst": "blst_2", + "nixpkgs": "nixpkgs_9", + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" + }, + "locked": { + "lastModified": 1696471795, + "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohk-nix_3": { + "inputs": { + "blst": "blst_7", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" + }, + "locked": { + "lastModified": 1702362799, + "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix": { + "inputs": { + "blst": "blst_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "secp256k1": "secp256k1_3", + "sodium": "sodium_3" + }, + "locked": { + "lastModified": 1698999258, + "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_2": { + "inputs": { + "blst": "blst_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "secp256k1": "secp256k1_4", + "sodium": "sodium_4" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_3": { + "inputs": { + "blst": "blst_5", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "secp256k1": "secp256k1_5", + "sodium": "sodium_5" + }, + "locked": { + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_4": { + "inputs": { + "blst": "blst_6", + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "secp256k1": "secp256k1_6", + "sodium": "sodium_6" + }, + "locked": { + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iohkNix_6": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "iohk-nix", + "type": "github" + } + }, + "iserv-proxy": { + "flake": false, + "locked": { + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "ref": "hkm/remote-iserv", + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_2": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_3": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_4": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_5": { + "flake": false, + "locked": { + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "iserv-proxy_6": { + "flake": false, + "locked": { + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + }, + "original": { + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + } + }, + "lib": { + "locked": { + "lastModified": 1694306727, + "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "lowdown-src": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_10": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_11": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_12": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_13": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_14": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_15": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_16": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_17": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_18": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_19": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_2": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_20": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_3": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_4": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_5": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_6": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_7": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_8": { + "flake": false, + "locked": { + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "lowdown-src_9": { + "flake": false, + "locked": { + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "type": "github" + }, + "original": { + "owner": "kristapsdz", + "repo": "lowdown", + "type": "github" + } + }, + "mdbook-kroki-preprocessor": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "mdbook-kroki-preprocessor_2": { + "flake": false, + "locked": { + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "type": "github" + }, + "original": { + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "type": "github" + } + }, + "n2c": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_2": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_3": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_4": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_5": { + "inputs": { + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_56" + }, + "locked": { + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "n2c_6": { + "inputs": { + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_91" + }, + "locked": { + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_6", + "nixpkgs-regression": "nixpkgs-regression" + }, + "locked": { + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" + } + }, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_15", + "inclusive": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ "ctl", "db-sync", "cardano-world", @@ -3747,3090 +8697,2864 @@ "cicero", "nixpkgs" ], - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage_2" + "utils": "utils_20" }, "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nix-cache-proxy", "type": "github" } }, - "haskell-nix_2": { + "nix-inclusive": { "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-utils": "flake-utils_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "hackage": [ - "ctl", - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_6", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_4" + "stdlib": "stdlib_13" }, "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nix-inclusive", "type": "github" } }, - "haskell-nix_3": { + "nix-nomad": { "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-compat": "flake-compat_12", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ + "flake-compat": "flake-compat_8", + "flake-utils": [ "ctl", - "hackage-nix" + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nix2container", + "flake-utils" ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_6", - "hydra": "hydra_8", - "iserv-proxy": "iserv-proxy_2", + "gomod2nix": "gomod2nix", "nixpkgs": [ "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable_8", - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_6" + "nixpkgs-lib": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ] }, "locked": { - "lastModified": 1702774226, - "narHash": "sha256-QUQBV05VimFU0pasJlialCcL/jlCumzaTmCM9+6Ncpk=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6ce1c8ab2a6d4af5721b22bd95968439b8c3c307", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "haskell-nix_4": { + "nix-nomad_2": { "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_33", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_5", + "flake-compat": "flake-compat_9", + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", "nixpkgs": [ "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs-unstable" + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_9", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_7" + "nixpkgs-lib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ] }, "locked": { - "lastModified": 1654219238, - "narHash": "sha256-PMS7uSQjYCjsjUfVidTdKcuNtKNu5VPmeNvxruT72go=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "974a61451bb1d41b32090eb51efd7ada026d16d9", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "haskellNix": { + "nix-nomad_3": { "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": [ + "flake-compat": "flake-compat_14", + "flake-utils": [ "ctl", "cardano-node", - "hackageNix" + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" ], - "hls-1.10": "hls-1.10", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", + "gomod2nix": "gomod2nix_3", "nixpkgs": [ "ctl", "cardano-node", + "cardano-automation", + "tullia", "nixpkgs" ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" + "nixpkgs-lib": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ] }, "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "type": "github" + }, + "original": { + "owner": "tristanpemble", + "repo": "nix-nomad", + "type": "github" + } + }, + "nix-tools": { + "flake": false, + "locked": { + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nix-tools", "type": "github" } }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-utils": "flake-utils_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_5", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_3" - }, + "nix-tools_2": { + "flake": false, "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nix-tools", "type": "github" } }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-utils": "flake-utils_32", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "hackage": "hackage_4", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_7", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-unstable": "nixpkgs-unstable_7", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_5" - }, + "nix-tools_3": { + "flake": false, "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "haskell.nix", + "repo": "nix-tools", "type": "github" } }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_70" - }, + "nix-tools_4": { + "flake": false, "locked": { - "lastModified": 1701009247, - "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", + "owner": "input-output-hk", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", + "owner": "input-output-hk", + "repo": "nix-tools", "type": "github" } }, - "hls-1.10": { - "flake": false, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_17" + }, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hls-1.10_2": { - "flake": false, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_19" + }, "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hls-2.0": { - "flake": false, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_23" + }, "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hls-2.2": { - "flake": false, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_27" + }, "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hls-2.3": { - "flake": false, + "nix2container_5": { + "inputs": { + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_32" + }, "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hls-2.4": { - "flake": false, + "nix2container_6": { + "inputs": { + "flake-utils": "flake-utils_20", + "nixpkgs": "nixpkgs_36" + }, "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "hpc-coveralls": { - "flake": false, + "nix2container_7": { + "inputs": { + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_94" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", "type": "github" } }, - "hpc-coveralls_2": { - "flake": false, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_57", + "nixpkgs-regression": "nixpkgs-regression_9" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", "type": "github" } }, - "hpc-coveralls_3": { - "flake": false, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_59", + "nixpkgs-regression": "nixpkgs-regression_10" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "hpc-coveralls_4": { - "flake": false, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_66", + "nixpkgs-regression": "nixpkgs-regression_11" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" } }, - "hpc-coveralls_5": { - "flake": false, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_67", + "nixpkgs-regression": "nixpkgs-regression_12" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" } }, - "hpc-coveralls_6": { - "flake": false, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_72", + "nixpkgs-regression": "nixpkgs-regression_13" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "hpc-coveralls_7": { - "flake": false, + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_74" + }, "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", + "owner": "NixOS", + "repo": "nix", "type": "github" } }, - "hydra": { + "nix_16": { "inputs": { - "nix": "nix", - "nixpkgs": [ - "ctl", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_76", + "nixpkgs-regression": "nixpkgs-regression_14" }, "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nixos", + "repo": "nix", + "type": "github" } }, - "hydra_2": { + "nix_17": { "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_88", + "nixpkgs-regression": "nixpkgs-regression_15" }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "hydra_3": { + "nix_18": { "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_90", + "nixpkgs-regression": "nixpkgs-regression_16" }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "hydra_4": { + "nix_19": { "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_97", + "nixpkgs-regression": "nixpkgs-regression_17" }, "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", "type": "github" } }, - "hydra_5": { + "nix_2": { "inputs": { - "nix": "nix_12", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "flake-compat": "flake-compat_3", + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_10", + "nixpkgs-regression": "nixpkgs-regression_2" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "lastModified": 1693573010, + "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", + "owner": "nixos", + "repo": "nix", + "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "nixos", + "ref": "2.17-maintenance", + "repo": "nix", + "type": "github" } }, - "hydra_6": { + "nix_20": { "inputs": { - "nix": "nix_13", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_20", + "nixpkgs": "nixpkgs_98", + "nixpkgs-regression": "nixpkgs-regression_18" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "hydra_7": { + "nix_3": { "inputs": { - "nix": "nix_14", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_14", + "nixpkgs-regression": "nixpkgs-regression_3" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "hydra_8": { + "nix_4": { "inputs": { - "nix": "nix_15", - "nixpkgs": [ - "ctl", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_16", + "nixpkgs-regression": "nixpkgs-regression_4" }, "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "hydra_9": { + "nix_5": { "inputs": { - "nix": "nix_16", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_26", + "nixpkgs-regression": "nixpkgs-regression_5" }, "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "id": "hydra", - "type": "indirect" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "incl": { + "nix_6": { "inputs": { - "nixlib": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_35", + "nixpkgs-regression": "nixpkgs-regression_6" }, "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "divnix", - "repo": "incl", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "inclusive": { + "nix_7": { "inputs": { - "stdlib": "stdlib" + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_43", + "nixpkgs-regression": "nixpkgs-regression_7" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "inclusive_10": { + "nix_8": { "inputs": { - "stdlib": "stdlib_10" + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_45" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "repo": "nix", "type": "github" } }, - "inclusive_11": { + "nix_9": { "inputs": { - "stdlib": "stdlib_11" + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_47", + "nixpkgs-regression": "nixpkgs-regression_8" }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "inclusive_2": { + "nixago": { "inputs": { - "stdlib": "stdlib_2" + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_3": { - "inputs": { - "stdlib": "stdlib_3" + "nixago-exts": { + "locked": { + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "type": "github" }, + "original": { + "owner": "nix-community", + "repo": "nixago-extensions", + "type": "github" + } + }, + "nixago-exts_2": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "inclusive_4": { + "nixago_2": { "inputs": { - "stdlib": "stdlib_4" + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_5": { + "nixago_3": { "inputs": { - "stdlib": "stdlib_5" + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", + "owner": "nix-community", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_6": { + "nixago_4": { "inputs": { - "stdlib": "stdlib_6" + "flake-utils": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_7": { + "nixago_5": { "inputs": { - "stdlib": "stdlib_7" + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_8": { + "nixago_6": { "inputs": { - "stdlib": "stdlib_8" + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "inclusive_9": { - "inputs": { - "stdlib": "stdlib_9" - }, + "nixlib": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "iogo": { - "inputs": { - "devshell": "devshell_4", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_22", - "utils": "utils_8" - }, + "nixlib_2": { "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "iogo_2": { - "inputs": { - "devshell": "devshell_14", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_51", - "utils": "utils_22" - }, + "nixlib_3": { "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "iohk-nix": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "nixpkgs" - ] - }, + "nixpkgs": { "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_2": { - "inputs": { - "blst": "blst_2", - "nixpkgs": [ - "ctl", - "nixpkgs" - ], - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" - }, + "nixpkgs-2003": { "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohk-nix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] - }, + "nixpkgs-2003_10": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix": { - "inputs": { - "blst": "blst", - "nixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1", - "sodium": "sodium" - }, + "nixpkgs-2003_2": { "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, + "nixpkgs-2003_3": { "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iohkNix_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "nixpkgs" - ] - }, + "nixpkgs-2003_4": { "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "iserv-proxy": { - "flake": false, + "nixpkgs-2003_5": { "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "iserv-proxy_2": { - "flake": false, + "nixpkgs-2003_6": { "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" }, "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "kupo": { - "flake": false, + "nixpkgs-2003_7": { "locked": { - "lastModified": 1668678914, - "narHash": "sha256-XsbAFyUPmevGuoShEFlOVHt/7fFIpyCQuhulIrNzv80=", - "owner": "CardanoSolutions", - "repo": "kupo", - "rev": "c9bc18d99f9e8af1840a265907db82b180d5a4d8", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v2.2.0", - "repo": "kupo", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "kupo-nixos": { - "inputs": { - "haskell-nix": "haskell-nix_4", - "iohk-nix": "iohk-nix_3", - "kupo": [ - "ctl", - "kupo" - ], - "nixpkgs": [ - "ctl", - "kupo-nixos", - "haskell-nix", - "nixpkgs" - ] + "nixpkgs-2003_8": { + "locked": { + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "type": "github" }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-2003_9": { "locked": { - "lastModified": 1672905539, - "narHash": "sha256-B4vryG94L7WWn/tuIQdtg9eZHAH+FaFzv35Mancd2l8=", - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "kupo-nixos", - "rev": "6f89cbcc359893a2aea14dd380f9a45e04c6aa67", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src": { - "flake": false, + "nixpkgs-2105": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_10": { - "flake": false, + "nixpkgs-2105_10": { "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_11": { - "flake": false, + "nixpkgs-2105_2": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_12": { - "flake": false, + "nixpkgs-2105_3": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_13": { - "flake": false, + "nixpkgs-2105_4": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_14": { - "flake": false, + "nixpkgs-2105_5": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_15": { - "flake": false, + "nixpkgs-2105_6": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_16": { - "flake": false, + "nixpkgs-2105_7": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_2": { - "flake": false, + "nixpkgs-2105_8": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_3": { - "flake": false, + "nixpkgs-2105_9": { "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_4": { - "flake": false, + "nixpkgs-2111": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_5": { - "flake": false, + "nixpkgs-2111_10": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_6": { - "flake": false, + "nixpkgs-2111_2": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_7": { - "flake": false, + "nixpkgs-2111_3": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_8": { - "flake": false, + "nixpkgs-2111_4": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "lowdown-src_9": { - "flake": false, + "nixpkgs-2111_5": { "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "kristapsdz", - "repo": "lowdown", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor": { - "flake": false, + "nixpkgs-2111_6": { "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "mdbook-kroki-preprocessor_2": { - "flake": false, + "nixpkgs-2111_7": { "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "n2c": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs-2111_8": { "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "n2c_2": { - "inputs": { - "flake-utils": "flake-utils_11", - "nixpkgs": "nixpkgs_27" - }, + "nixpkgs-2111_9": { "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "n2c_3": { - "inputs": { - "flake-utils": "flake-utils_28", - "nixpkgs": "nixpkgs_62" - }, + "nixpkgs-2205": { "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_3", - "nixpkgs-regression": "nixpkgs-regression" - }, + "nixpkgs-2205_2": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-cache-proxy": { - "inputs": { - "devshell": "devshell_11", - "inclusive": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_15" - }, + "nixpkgs-2205_3": { "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_12" - }, + "nixpkgs-2205_4": { "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_3", - "flake-utils": [ - "ctl", - "cardano-node", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "ctl", - "cardano-node", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "cardano-node", - "tullia", - "nixpkgs" - ] - }, + "nixpkgs-2205_5": { "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools": { - "flake": false, + "nixpkgs-2205_6": { "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_2": { - "flake": false, + "nixpkgs-2205_7": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_3": { - "flake": false, + "nixpkgs-2211": { "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_4": { - "flake": false, + "nixpkgs-2211_2": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix-tools_5": { - "flake": false, + "nixpkgs-2211_3": { "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nix-tools", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_4" - }, + "nixpkgs-2211_4": { "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_6" - }, + "nixpkgs-2211_5": { "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { - "owner": "nlewo", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_65" - }, + "nixpkgs-2211_6": { "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_10": { - "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_45" - }, + "nixpkgs-2305": { "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { "owner": "NixOS", - "repo": "nix", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_47", - "nixpkgs-regression": "nixpkgs-regression_9" - }, + "nixpkgs-2305_2": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_12": { - "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_59", - "nixpkgs-regression": "nixpkgs-regression_10" - }, + "nixpkgs-2305_3": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_13": { - "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_61", - "nixpkgs-regression": "nixpkgs-regression_11" - }, + "nixpkgs-2305_4": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_14": { - "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_68", - "nixpkgs-regression": "nixpkgs-regression_12" - }, + "nixpkgs-2311": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nix_15": { - "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_69", - "nixpkgs-regression": "nixpkgs-regression_13" - }, + "nixpkgs-arion": { "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "lastModified": 1721857066, + "narHash": "sha256-1Sw+vC25plLU+XKLB5HSDqFZOGXzsRksroqtc6hpDk4=", "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "repo": "nixpkgs", + "rev": "24e28f29372403b18d18911f90bed3c3df02ad91", "type": "github" }, "original": { "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", + "repo": "nixpkgs", "type": "github" } }, - "nix_16": { - "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_71", - "nixpkgs-regression": "nixpkgs-regression_14" + "nixpkgs-docker": { + "locked": { + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "type": "github" + } + }, + "nixpkgs-lib": { "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "dir": "lib", + "lastModified": 1671359686, + "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "repo": "nixpkgs", + "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", "type": "github" }, "original": { + "dir": "lib", "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_2": { - "inputs": { - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_14", - "nixpkgs-regression": "nixpkgs-regression_2" - }, + "nixpkgs-lib_2": { "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_16" - }, + "nixpkgs-lib_3": { "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { + "dir": "lib", "owner": "NixOS", - "repo": "nix", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_18", - "nixpkgs-regression": "nixpkgs-regression_3" - }, + "nixpkgs-lib_4": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_28", - "nixpkgs-regression": "nixpkgs-regression_4" - }, + "nixpkgs-lib_5": { "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", + "dir": "lib", + "lastModified": 1696019113, + "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a", "type": "github" }, "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_30", - "nixpkgs-regression": "nixpkgs-regression_5" - }, + "nixpkgs-regression": { "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nix_7": { - "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_37", - "nixpkgs-regression": "nixpkgs-regression_6" - }, + "nixpkgs-regression_10": { "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nix_8": { - "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_38", - "nixpkgs-regression": "nixpkgs-regression_7" - }, + "nixpkgs-regression_11": { "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_12": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nix_9": { - "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_43", - "nixpkgs-regression": "nixpkgs-regression_8" - }, + "nixpkgs-regression_13": { "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-node", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "tullia", - "std", - "nixpkgs" - ] - }, + "nixpkgs-regression_14": { "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago-exts": { + "nixpkgs-regression_15": { "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago-exts_2": { + "nixpkgs-regression_16": { "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, + "nixpkgs-regression_17": { "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "nixpkgs-regression_18": { "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixago", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixlib": { + "nixpkgs-regression_2": { "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixlib_2": { + "nixpkgs-regression_3": { "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixlib_3": { + "nixpkgs-regression_4": { "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs": { + "nixpkgs-regression_5": { "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-23.05", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-2003": { + "nixpkgs-regression_6": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-2003_2": { + "nixpkgs-regression_7": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-2003_3": { + "nixpkgs-regression_8": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" + } + }, + "nixpkgs-regression_9": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "nixpkgs-2003_4": { + "nixpkgs-stable": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1690066826, + "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_5": { + "nixpkgs-unstable": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_6": { + "nixpkgs-unstable_10": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2003_7": { + "nixpkgs-unstable_11": { "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105": { + "nixpkgs-unstable_12": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_2": { + "nixpkgs-unstable_13": { "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "lastModified": 1701336116, + "narHash": "sha256-kEmpezCR/FpITc6yMbAh4WrOCiT2zg5pSjnKrq51h5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", + "rev": "f5c27c6136db4d76c30e533c20517df6864c46ee", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_3": { + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", + "lastModified": 1696577711, + "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_4": { + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_5": { + "nixpkgs-unstable_4": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_6": { + "nixpkgs-unstable_5": { "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2105_7": { + "nixpkgs-unstable_6": { "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111": { + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_2": { + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", - "owner": "NixOS", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_3": { + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_4": { + "nixpkgs_10": { "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixos-22.11-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_5": { + "nixpkgs_11": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", + "lastModified": 1690026219, + "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_6": { + "nixpkgs_12": { "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2111_7": { + "nixpkgs_13": { "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", + "owner": "nixos", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205": { + "nixpkgs_14": { "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2205_2": { + "nixpkgs_15": { "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs-2205_3": { + "nixpkgs_16": { "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211": { + "nixpkgs_17": { "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2211_2": { + "nixpkgs_18": { "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2305": { + "nixpkgs_19": { "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-2311": { + "nixpkgs_2": { "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-docker": { + "nixpkgs_20": { "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { "owner": "nixos", + "ref": "nixos-22.11", "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "nixpkgs-regression": { + "nixpkgs_21": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-regression_10": { + "nixpkgs_22": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_11": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_12": { + "nixpkgs_23": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_13": { + "nixpkgs_24": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "nixpkgs-regression_14": { + "nixpkgs_25": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "indirect" } }, - "nixpkgs-regression_2": { + "nixpkgs_26": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_3": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", + "ref": "nixos-22.05-small", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_4": { + "nixpkgs_27": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_5": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" } }, - "nixpkgs-regression_6": { + "nixpkgs_28": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, - "nixpkgs-regression_7": { + "nixpkgs_29": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_8": { + "nixpkgs_3": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "lastModified": 1677543769, + "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-regression_9": { + "nixpkgs_30": { "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", "type": "github" }, "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs_31": { "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_2": { + "nixpkgs_32": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_3": { + "nixpkgs_33": { "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", "owner": "nixos", "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { @@ -6840,93 +11564,88 @@ "type": "github" } }, - "nixpkgs-unstable_4": { + "nixpkgs_34": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs-unstable_5": { + "nixpkgs_35": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-22.05-small", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_6": { + "nixpkgs_36": { "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_7": { + "nixpkgs_37": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", + "lastModified": 1708343346, + "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "9312b935a538684049cb668885e60f15547d4c5f", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", + "owner": "nixos", + "ref": "release-23.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs-unstable_8": { + "nixpkgs_38": { "locked": { - "lastModified": 1701336116, - "narHash": "sha256-kEmpezCR/FpITc6yMbAh4WrOCiT2zg5pSjnKrq51h5Y=", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f5c27c6136db4d76c30e533c20517df6864c46ee", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "nixpkgs-unstable_9": { + "nixpkgs_39": { "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { @@ -6936,23 +11655,23 @@ "type": "github" } }, - "nixpkgs_10": { + "nixpkgs_4": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", + "lastModified": 1645013224, + "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_40": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -6966,7 +11685,7 @@ "type": "indirect" } }, - "nixpkgs_12": { + "nixpkgs_41": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -6982,7 +11701,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_42": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -6998,7 +11717,7 @@ "type": "github" } }, - "nixpkgs_14": { + "nixpkgs_43": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7013,7 +11732,7 @@ "type": "indirect" } }, - "nixpkgs_15": { + "nixpkgs_44": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7029,7 +11748,7 @@ "type": "github" } }, - "nixpkgs_16": { + "nixpkgs_45": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7044,7 +11763,7 @@ "type": "indirect" } }, - "nixpkgs_17": { + "nixpkgs_46": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7060,7 +11779,7 @@ "type": "github" } }, - "nixpkgs_18": { + "nixpkgs_47": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7075,7 +11794,7 @@ "type": "indirect" } }, - "nixpkgs_19": { + "nixpkgs_48": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7091,37 +11810,39 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_49": { "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_20": { + "nixpkgs_5": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_21": { + "nixpkgs_50": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7137,7 +11858,7 @@ "type": "github" } }, - "nixpkgs_22": { + "nixpkgs_51": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7153,7 +11874,7 @@ "type": "github" } }, - "nixpkgs_23": { + "nixpkgs_52": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7169,7 +11890,7 @@ "type": "github" } }, - "nixpkgs_24": { + "nixpkgs_53": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7185,7 +11906,7 @@ "type": "github" } }, - "nixpkgs_25": { + "nixpkgs_54": { "locked": { "lastModified": 1652576347, "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", @@ -7200,7 +11921,7 @@ "type": "github" } }, - "nixpkgs_26": { + "nixpkgs_55": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7216,7 +11937,7 @@ "type": "github" } }, - "nixpkgs_27": { + "nixpkgs_56": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7231,7 +11952,7 @@ "type": "github" } }, - "nixpkgs_28": { + "nixpkgs_57": { "locked": { "lastModified": 1645296114, "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", @@ -7246,7 +11967,7 @@ "type": "indirect" } }, - "nixpkgs_29": { + "nixpkgs_58": { "locked": { "lastModified": 1652559422, "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", @@ -7262,38 +11983,38 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_59": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "nixpkgs_30": { + "nixpkgs_6": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_31": { + "nixpkgs_60": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7309,7 +12030,7 @@ "type": "github" } }, - "nixpkgs_32": { + "nixpkgs_61": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7325,7 +12046,7 @@ "type": "github" } }, - "nixpkgs_33": { + "nixpkgs_62": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7341,7 +12062,7 @@ "type": "github" } }, - "nixpkgs_34": { + "nixpkgs_63": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7357,7 +12078,7 @@ "type": "github" } }, - "nixpkgs_35": { + "nixpkgs_64": { "locked": { "lastModified": 1646331602, "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", @@ -7373,7 +12094,7 @@ "type": "github" } }, - "nixpkgs_36": { + "nixpkgs_65": { "locked": { "lastModified": 1643381941, "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", @@ -7389,7 +12110,7 @@ "type": "github" } }, - "nixpkgs_37": { + "nixpkgs_66": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7404,7 +12125,7 @@ "type": "indirect" } }, - "nixpkgs_38": { + "nixpkgs_67": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7419,7 +12140,7 @@ "type": "indirect" } }, - "nixpkgs_39": { + "nixpkgs_68": { "locked": { "lastModified": 1644486793, "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", @@ -7435,22 +12156,7 @@ "type": "github" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { + "nixpkgs_69": { "locked": { "lastModified": 1627969475, "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", @@ -7464,7 +12170,23 @@ "type": "indirect" } }, - "nixpkgs_41": { + "nixpkgs_7": { + "locked": { + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_70": { "locked": { "lastModified": 1644972330, "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", @@ -7480,7 +12202,7 @@ "type": "github" } }, - "nixpkgs_42": { + "nixpkgs_71": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7496,7 +12218,7 @@ "type": "github" } }, - "nixpkgs_43": { + "nixpkgs_72": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7511,7 +12233,7 @@ "type": "indirect" } }, - "nixpkgs_44": { + "nixpkgs_73": { "locked": { "lastModified": 1638452135, "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", @@ -7527,7 +12249,7 @@ "type": "github" } }, - "nixpkgs_45": { + "nixpkgs_74": { "locked": { "lastModified": 1602702596, "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", @@ -7542,7 +12264,7 @@ "type": "indirect" } }, - "nixpkgs_46": { + "nixpkgs_75": { "locked": { "lastModified": 1638887115, "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", @@ -7558,7 +12280,7 @@ "type": "github" } }, - "nixpkgs_47": { + "nixpkgs_76": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7573,7 +12295,7 @@ "type": "indirect" } }, - "nixpkgs_48": { + "nixpkgs_77": { "locked": { "lastModified": 1641909823, "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", @@ -7589,7 +12311,7 @@ "type": "github" } }, - "nixpkgs_49": { + "nixpkgs_78": { "locked": { "lastModified": 1647350163, "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", @@ -7605,39 +12327,39 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_79": { "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_50": { + "nixpkgs_8": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", + "ref": "release-22.11", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_51": { + "nixpkgs_80": { "locked": { "lastModified": 1646506091, "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", @@ -7653,7 +12375,7 @@ "type": "github" } }, - "nixpkgs_52": { + "nixpkgs_81": { "locked": { "lastModified": 1658119717, "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", @@ -7669,7 +12391,7 @@ "type": "github" } }, - "nixpkgs_53": { + "nixpkgs_82": { "locked": { "lastModified": 1644525281, "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", @@ -7685,7 +12407,7 @@ "type": "github" } }, - "nixpkgs_54": { + "nixpkgs_83": { "locked": { "lastModified": 1646470760, "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", @@ -7701,7 +12423,7 @@ "type": "github" } }, - "nixpkgs_55": { + "nixpkgs_84": { "locked": { "lastModified": 1619531122, "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", @@ -7715,7 +12437,7 @@ "type": "indirect" } }, - "nixpkgs_56": { + "nixpkgs_85": { "locked": { "lastModified": 1656461576, "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", @@ -7731,7 +12453,7 @@ "type": "github" } }, - "nixpkgs_57": { + "nixpkgs_86": { "locked": { "lastModified": 1655567057, "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", @@ -7745,7 +12467,7 @@ "type": "indirect" } }, - "nixpkgs_58": { + "nixpkgs_87": { "locked": { "lastModified": 1656401090, "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", @@ -7759,7 +12481,7 @@ "type": "indirect" } }, - "nixpkgs_59": { + "nixpkgs_88": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7774,22 +12496,7 @@ "type": "indirect" } }, - "nixpkgs_6": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_60": { + "nixpkgs_89": { "locked": { "lastModified": 1656809537, "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", @@ -7804,7 +12511,23 @@ "type": "github" } }, - "nixpkgs_61": { + "nixpkgs_9": { + "locked": { + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_90": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7819,7 +12542,7 @@ "type": "indirect" } }, - "nixpkgs_62": { + "nixpkgs_91": { "locked": { "lastModified": 1654807842, "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", @@ -7834,7 +12557,7 @@ "type": "github" } }, - "nixpkgs_63": { + "nixpkgs_92": { "locked": { "lastModified": 1656947410, "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", @@ -7850,7 +12573,7 @@ "type": "github" } }, - "nixpkgs_64": { + "nixpkgs_93": { "locked": { "lastModified": 1658311025, "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", @@ -7866,7 +12589,7 @@ "type": "github" } }, - "nixpkgs_65": { + "nixpkgs_94": { "locked": { "lastModified": 1642451377, "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", @@ -7881,7 +12604,7 @@ "type": "github" } }, - "nixpkgs_66": { + "nixpkgs_95": { "locked": { "lastModified": 1653920503, "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", @@ -7897,7 +12620,7 @@ "type": "github" } }, - "nixpkgs_67": { + "nixpkgs_96": { "locked": { "lastModified": 1650469885, "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", @@ -7913,7 +12636,7 @@ "type": "github" } }, - "nixpkgs_68": { + "nixpkgs_97": { "locked": { "lastModified": 1632864508, "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", @@ -7928,7 +12651,7 @@ "type": "indirect" } }, - "nixpkgs_69": { + "nixpkgs_98": { "locked": { "lastModified": 1657693803, "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", @@ -7944,23 +12667,7 @@ "type": "github" } }, - "nixpkgs_7": { - "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_70": { + "nixpkgs_99": { "locked": { "lastModified": 1697723726, "narHash": "sha256-SaTWPkI8a5xSHX/rrKzUe+/uVNy6zCGMXgoeMb7T9rg=", @@ -7976,56 +12683,11 @@ "type": "github" } }, - "nixpkgs_71": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_8": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_9": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, "nomad": { "inputs": { - "nix": "nix_3", - "nixpkgs": "nixpkgs_17", - "utils": "utils_4" + "nix": "nix_8", + "nixpkgs": "nixpkgs_46", + "utils": "utils_9" }, "locked": { "lastModified": 1648128770, @@ -8044,11 +12706,11 @@ }, "nomad-driver-nix": { "inputs": { - "devshell": "devshell_2", - "inclusive": "inclusive", - "nix": "nix_4", - "nixpkgs": "nixpkgs_19", - "utils": "utils_5" + "devshell": "devshell_6", + "inclusive": "inclusive_2", + "nix": "nix_9", + "nixpkgs": "nixpkgs_48", + "utils": "utils_10" }, "locked": { "lastModified": 1648029666, @@ -8066,11 +12728,11 @@ }, "nomad-driver-nix_2": { "inputs": { - "devshell": "devshell_5", - "inclusive": "inclusive_4", - "nix": "nix_6", - "nixpkgs": "nixpkgs_31", - "utils": "utils_10" + "devshell": "devshell_9", + "inclusive": "inclusive_5", + "nix": "nix_11", + "nixpkgs": "nixpkgs_60", + "utils": "utils_15" }, "locked": { "lastModified": 1648029666, @@ -8088,11 +12750,11 @@ }, "nomad-driver-nix_3": { "inputs": { - "devshell": "devshell_12", - "inclusive": "inclusive_9", - "nix": "nix_11", - "nixpkgs": "nixpkgs_48", - "utils": "utils_19" + "devshell": "devshell_16", + "inclusive": "inclusive_10", + "nix": "nix_16", + "nixpkgs": "nixpkgs_77", + "utils": "utils_24" }, "locked": { "lastModified": 1648029666, @@ -8110,10 +12772,10 @@ }, "nomad-follower": { "inputs": { - "devshell": "devshell_3", - "inclusive": "inclusive_2", - "nixpkgs": "nixpkgs_20", - "utils": "utils_6" + "devshell": "devshell_7", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_49", + "utils": "utils_11" }, "locked": { "lastModified": 1649836589, @@ -8131,10 +12793,10 @@ }, "nomad-follower_2": { "inputs": { - "devshell": "devshell_6", - "inclusive": "inclusive_5", - "nixpkgs": "nixpkgs_32", - "utils": "utils_11" + "devshell": "devshell_10", + "inclusive": "inclusive_6", + "nixpkgs": "nixpkgs_61", + "utils": "utils_16" }, "locked": { "lastModified": 1658244176, @@ -8152,10 +12814,10 @@ }, "nomad-follower_3": { "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_10", - "nixpkgs": "nixpkgs_49", - "utils": "utils_20" + "devshell": "devshell_17", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_78", + "utils": "utils_25" }, "locked": { "lastModified": 1649836589, @@ -8173,9 +12835,9 @@ }, "nomad_2": { "inputs": { - "nix": "nix_10", - "nixpkgs": "nixpkgs_46", - "utils": "utils_18" + "nix": "nix_15", + "nixpkgs": "nixpkgs_75", + "utils": "utils_23" }, "locked": { "lastModified": 1648128770, @@ -8202,8 +12864,85 @@ "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_2": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_3": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_4": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "nosys_5": { + "locked": { + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "nosys", + "type": "github" + } + }, + "offchain-metadata-tools-service": { + "flake": false, + "locked": { + "lastModified": 1684160858, + "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", + "owner": "input-output-hk", + "repo": "offchain-metadata-tools", + "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "ref": "feat-add-password-to-db-conn-string", + "repo": "offchain-metadata-tools", "type": "github" } }, @@ -8224,66 +12963,41 @@ "type": "github" } }, - "ogmios-nixos": { - "inputs": { - "CHaP": "CHaP_3", - "blank": "blank_5", - "cardano-configurations": "cardano-configurations_2", - "cardano-node": [ - "ctl", - "cardano-node" - ], - "flake-compat": "flake-compat_13", - "haskell-nix": [ - "ctl", - "haskell-nix" - ], - "iohk-nix": [ - "ctl", - "iohk-nix" - ], - "nixpkgs": [ - "ctl", - "nixpkgs" - ], - "ogmios-src": [ - "ctl", - "ogmios" - ] - }, + "ogmios_2": { + "flake": false, "locked": { - "lastModified": 1695289922, - "narHash": "sha256-WeZkYCyvOqnVx9zYgyO2rh0rd3O2DmxH0HZ4OJnf/aw=", - "owner": "mlabs-haskell", - "repo": "ogmios-nixos", - "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", + "lastModified": 1720778275, + "narHash": "sha256-OpUeVbztfLy+9d2M5w2Jgx1b/IhDNAQdlr/eP1iKUQI=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "63a9e9d33eadbca22d1ecc90b9623b962148d174", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "ogmios-nixos", - "rev": "78e829e9ebd50c5891024dcd1004c2ac51facd80", + "owner": "CardanoSolutions", + "ref": "v6.5.0", + "repo": "ogmios", "type": "github" } }, - "ogmios_2": { + "old-ghc-nix": { "flake": false, "locked": { - "lastModified": 1691769233, - "narHash": "sha256-7CLprKq3RwJfvy31LAPux+DYFLjEmbRBFgvtYDpJA8Q=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "3d3f359b0987c009ef66fb4d4b4bddce92b9aeb3", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v6.0.0", - "repo": "ogmios", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "old-ghc-nix": { + "old-ghc-nix_10": { "flake": false, "locked": { "lastModified": 1631092763, @@ -8371,144 +13085,477 @@ "old-ghc-nix_6": { "flake": false, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_7": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_8": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "old-ghc-nix_9": { + "flake": false, + "locked": { + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "type": "github" + }, + "original": { + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", + "type": "github" + } + }, + "ops-lib": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_2": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_3": { + "flake": false, + "locked": { + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_4": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_5": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "ops-lib_6": { + "flake": false, + "locked": { + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "ops-lib", + "type": "github" + } + }, + "paisano": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "nosys": "nosys_2", + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "core", + "type": "github" + } + }, + "paisano-actions": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "actions", + "type": "github" + } + }, + "paisano-mdbook-preprocessor": { + "inputs": { + "crane": "crane", + "fenix": "fenix_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, + "locked": { + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", "type": "github" } }, - "old-ghc-nix_7": { - "flake": false, + "paisano-tui": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std" + ] + }, "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "ops-lib": { - "flake": false, + "paisano-tui_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] + }, "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "ops-lib_2": { - "flake": false, + "paisano-tui_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "std": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "ops-lib_3": { + "paisano-tui_4": { "flake": false, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1708637035, + "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "231761b260587a64817e4ffae3afc15defaa15db", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "v0.5.0", + "repo": "tui", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "paisano_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "nosys": "nosys_3", + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, - "plutip": { + "paisano_3": { "inputs": { - "CHaP": "CHaP_4", - "cardano-node": [ - "ctl", - "cardano-node" - ], - "flake-compat": "flake-compat_14", - "hackage-nix": [ - "ctl", - "hackage-nix" - ], - "haskell-nix": [ + "nixpkgs": [ "ctl", - "haskell-nix" + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" ], - "iohk-nix": [ + "nosys": "nosys_4", + "yants": [ "ctl", - "iohk-nix" - ], + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "type": "github" + }, + "original": { + "owner": "paisano-nix", + "repo": "core", + "type": "github" + } + }, + "paisano_4": { + "inputs": { + "call-flake": "call-flake", "nixpkgs": [ "ctl", + "cardano-node", + "std", "nixpkgs" + ], + "nosys": "nosys_5", + "yants": [ + "ctl", + "cardano-node", + "std", + "yants" ] }, "locked": { - "lastModified": 1695131439, - "narHash": "sha256-7ZhZUDhlFvV2us4G27iAk6lHezKS/4WA07NQn88VtQU=", - "owner": "mlabs-haskell", - "repo": "plutip", - "rev": "1bf0b547cd3689c727586abb8385c008fb2a3d1c", + "lastModified": 1708640854, + "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", + "owner": "paisano-nix", + "repo": "core", + "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "ref": "gergely/version-bump", - "repo": "plutip", + "owner": "paisano-nix", + "ref": "0.2.0", + "repo": "core", "type": "github" } }, "poetry2nix": { "inputs": { - "flake-utils": "flake-utils_17", + "flake-utils": "flake-utils_32", "nixpkgs": [ "ctl", "db-sync", @@ -8535,8 +13582,8 @@ }, "pre-commit-hooks": { "inputs": { - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_55" + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_84" }, "locked": { "lastModified": 1639823344, @@ -8552,12 +13599,42 @@ "type": "github" } }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat_13", + "flake-utils": "flake-utils_15", + "gitignore": "gitignore", + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "ctl", + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708018599, + "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "ragenix": { "inputs": { "agenix": "agenix_3", - "flake-utils": "flake-utils_8", - "nixpkgs": "nixpkgs_21", - "rust-overlay": "rust-overlay" + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_50", + "rust-overlay": "rust-overlay_2" }, "locked": { "lastModified": 1641119695, @@ -8576,9 +13653,9 @@ "ragenix_2": { "inputs": { "agenix": "agenix_4", - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_24", - "rust-overlay": "rust-overlay_2" + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_53", + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1645147603, @@ -8597,9 +13674,9 @@ "ragenix_3": { "inputs": { "agenix": "agenix_5", - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_33", - "rust-overlay": "rust-overlay_3" + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_62", + "rust-overlay": "rust-overlay_4" }, "locked": { "lastModified": 1641119695, @@ -8618,9 +13695,9 @@ "ragenix_4": { "inputs": { "agenix": "agenix_7", - "flake-utils": "flake-utils_19", - "nixpkgs": "nixpkgs_50", - "rust-overlay": "rust-overlay_4" + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_79", + "rust-overlay": "rust-overlay_5" }, "locked": { "lastModified": 1641119695, @@ -8639,9 +13716,9 @@ "ragenix_5": { "inputs": { "agenix": "agenix_8", - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_53", - "rust-overlay": "rust-overlay_5" + "flake-utils": "flake-utils_36", + "nixpkgs": "nixpkgs_82", + "rust-overlay": "rust-overlay_6" }, "locked": { "lastModified": 1645147603, @@ -8660,7 +13737,7 @@ "root": { "inputs": { "ctl": "ctl", - "flake-compat": "flake-compat_15", + "flake-compat": "flake-compat_26", "nixpkgs": [ "ctl", "nixpkgs" @@ -8668,6 +13745,40 @@ } }, "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1645205556, + "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_2": { + "flake": false, + "locked": { + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-analyzer-src_3": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8684,7 +13795,7 @@ "type": "github" } }, - "rust-analyzer-src_2": { + "rust-analyzer-src_4": { "flake": false, "locked": { "lastModified": 1649178056, @@ -8701,7 +13812,7 @@ "type": "github" } }, - "rust-analyzer-src_3": { + "rust-analyzer-src_5": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8718,7 +13829,7 @@ "type": "github" } }, - "rust-analyzer-src_4": { + "rust-analyzer-src_6": { "flake": false, "locked": { "lastModified": 1660579619, @@ -8735,7 +13846,7 @@ "type": "github" } }, - "rust-analyzer-src_5": { + "rust-analyzer-src_7": { "flake": false, "locked": { "lastModified": 1645024434, @@ -8752,24 +13863,59 @@ "type": "github" } }, - "rust-analyzer-src_6": { + "rust-analyzer-src_8": { "flake": false, "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "type": "github" + }, + "original": { + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "rust-overlay": { + "rust-overlay_2": { "inputs": { "flake-utils": [ "ctl", @@ -8806,7 +13952,7 @@ "type": "github" } }, - "rust-overlay_2": { + "rust-overlay_3": { "inputs": { "flake-utils": [ "ctl", @@ -8841,7 +13987,7 @@ "type": "github" } }, - "rust-overlay_3": { + "rust-overlay_4": { "inputs": { "flake-utils": [ "ctl", @@ -8874,7 +14020,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_5": { "inputs": { "flake-utils": [ "ctl", @@ -8909,7 +14055,7 @@ "type": "github" } }, - "rust-overlay_5": { + "rust-overlay_6": { "inputs": { "flake-utils": [ "ctl", @@ -8953,64 +14099,317 @@ "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_2": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_3": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_4": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_5": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_6": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "secp256k1_7": { + "flake": false, + "locked": { + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "type": "github" + }, + "original": { + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", + "type": "github" + } + }, + "sodium": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_2": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_3": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_4": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_5": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_6": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sodium_7": { + "flake": false, + "locked": { + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_11", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1690199016, + "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "stable": { + "locked": { + "lastModified": 1669735802, + "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "731cc710aeebecbf45a258e977e8b68350549522", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_2": { + "stackage": { "flake": false, "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1701043780, + "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "sodium": { + "stackage_2": { "flake": false, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "repo": "stackage.nix", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "repo": "stackage.nix", "type": "github" } }, - "sodium_2": { + "stackage_3": { "flake": false, "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "repo": "stackage.nix", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "repo": "stackage.nix", "type": "github" } }, - "stackage": { + "stackage_4": { "flake": false, "locked": { "lastModified": 1685491814, @@ -9026,7 +14425,7 @@ "type": "github" } }, - "stackage_2": { + "stackage_5": { "flake": false, "locked": { "lastModified": 1646010978, @@ -9042,7 +14441,7 @@ "type": "github" } }, - "stackage_3": { + "stackage_6": { "flake": false, "locked": { "lastModified": 1655255731, @@ -9058,7 +14457,7 @@ "type": "github" } }, - "stackage_4": { + "stackage_7": { "flake": false, "locked": { "lastModified": 1659402917, @@ -9074,7 +14473,7 @@ "type": "github" } }, - "stackage_5": { + "stackage_8": { "flake": false, "locked": { "lastModified": 1650936094, @@ -9090,7 +14489,7 @@ "type": "github" } }, - "stackage_6": { + "stackage_9": { "flake": false, "locked": { "lastModified": 1702771826, @@ -9106,19 +14505,22 @@ "type": "github" } }, - "stackage_7": { - "flake": false, + "statix": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1654219171, - "narHash": "sha256-5kp4VTlum+AMmoIbhtrcVSEfYhR4oTKSrwe1iysD8uU=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "6d1fc076976ce6c45da5d077bf882487076efe5c", + "lastModified": 1676888642, + "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", + "owner": "nerdypepper", + "repo": "statix", + "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "nerdypepper", + "repo": "statix", "type": "github" } }, @@ -9126,7 +14528,8 @@ "inputs": { "arion": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "blank" @@ -9134,25 +14537,27 @@ "blank": "blank", "devshell": "devshell", "dmerge": "dmerge", - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_8", "incl": "incl", "makes": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "blank" ], "microvm": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "blank" ], "n2c": "n2c", "nixago": "nixago", - "nixpkgs": "nixpkgs_8", + "nixpkgs": "nixpkgs_21", "nosys": "nosys", "yants": "yants" }, @@ -9172,14 +14577,240 @@ }, "std_2": { "inputs": { - "devshell": "devshell_7", + "arion": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", "dmerge": "dmerge_2", - "flake-utils": "flake-utils_13", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "flake-utils": "flake-utils_11", + "incl": "incl_2", + "makes": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_2", "nixago": "nixago_2", - "nixpkgs": "nixpkgs_34", + "nixpkgs": "nixpkgs_24", + "paisano": "paisano", + "paisano-tui": "paisano-tui", + "yants": "yants_2" + }, + "locked": { + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_3": { + "inputs": { + "arion": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "blank": "blank_3", + "devshell": "devshell_3", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_13", + "haumea": "haumea", + "incl": "incl_3", + "makes": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_29", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", "yants": "yants_3" }, + "locked": { + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_4": { + "inputs": { + "arion": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_4", + "devshell": "devshell_5", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_18", + "incl": "incl_4", + "makes": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_33", + "paisano": "paisano_3", + "paisano-tui": "paisano-tui_3", + "yants": "yants_4" + }, + "locked": { + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_5": { + "inputs": { + "arion": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "blank": "blank_5", + "devshell": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "dmerge": "dmerge_5", + "haumea": "haumea_2", + "incl": "incl_5", + "lib": "lib", + "makes": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "n2c": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "nixago": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "nixpkgs": "nixpkgs_37", + "paisano": "paisano_4", + "paisano-tui": "paisano-tui_4", + "terranix": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "yants": "yants_5" + }, + "locked": { + "lastModified": 1720302576, + "narHash": "sha256-8HgfMr07vNTB2xp+vRBVmJ0A6ctX/oa/QqFBlqqmz4M=", + "owner": "divnix", + "repo": "std", + "rev": "4e20f558f00bc8d52b0fadc468b872d280ca2d34", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "std", + "type": "github" + } + }, + "std_6": { + "inputs": { + "devshell": "devshell_11", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_28", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_63", + "yants": "yants_7" + }, "locked": { "lastModified": 1661370377, "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", @@ -9194,15 +14825,15 @@ "type": "github" } }, - "std_3": { + "std_7": { "inputs": { - "devshell": "devshell_15", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_29", + "devshell": "devshell_19", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_44", "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_64", - "yants": "yants_5" + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_93", + "yants": "yants_9" }, "locked": { "lastModified": 1661367957, @@ -9218,11 +14849,11 @@ "type": "github" } }, - "std_4": { - "inputs": { - "devshell": "devshell_16", - "nixpkgs": "nixpkgs_67", - "yants": "yants_6" + "std_8": { + "inputs": { + "devshell": "devshell_20", + "nixpkgs": "nixpkgs_96", + "yants": "yants_10" }, "locked": { "lastModified": 1652784712, @@ -9298,6 +14929,21 @@ "type": "github" } }, + "stdlib_13": { + "locked": { + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "type": "github" + }, + "original": { + "owner": "manveru", + "repo": "nix-lib", + "type": "github" + } + }, "stdlib_2": { "locked": { "lastModified": 1590026685, @@ -9418,10 +15064,70 @@ "type": "github" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tailwind-haskell": { "inputs": { - "flake-utils": "flake-utils_24", - "nixpkgs": "nixpkgs_58" + "flake-utils": "flake-utils_39", + "nixpkgs": "nixpkgs_87" }, "locked": { "lastModified": 1654211622, @@ -9438,28 +15144,38 @@ "type": "github" } }, + "terraform-providers": { + "inputs": { + "nixpkgs": "nixpkgs_12" + }, + "locked": { + "lastModified": 1695893013, + "narHash": "sha256-+5EuXNXwxpTiOEGCbZWtZCU75WcVwnS89heLa5xJ2K0=", + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "rev": "6c6865ae6f9bff7aaa4e86c875f520f2aca65c0d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs-terraform-providers-bin", + "type": "github" + } + }, "terranix": { "inputs": { "bats-assert": "bats-assert", "bats-support": "bats-support", - "flake-utils": "flake-utils_9", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "blank" - ], + "flake-utils": "flake-utils_3", + "nixpkgs": "nixpkgs_13", "terranix-examples": "terranix-examples" }, "locked": { - "lastModified": 1637158331, - "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "lastModified": 1684906298, + "narHash": "sha256-pNuJxmVMGbBHw7pa+Bx0HY0orXIXoyyAXOKuQ1zpfus=", "owner": "terranix", "repo": "terranix", - "rev": "34198bb154af86d2a559446f10d7339e53126abe", + "rev": "c0dd15076856c6cb425795b8c7d5d37d3a1e922a", "type": "github" }, "original": { @@ -9513,16 +15229,33 @@ "type": "github" } }, + "terranix-examples_4": { + "locked": { + "lastModified": 1636300201, + "narHash": "sha256-0n1je1WpiR6XfCsvi8ZK7GrpEnMl+DpwhWaO1949Vbc=", + "owner": "terranix", + "repo": "terranix-examples", + "rev": "a934aa1cf88f6bd6c6ddb4c77b77ec6e1660bd5e", + "type": "github" + }, + "original": { + "owner": "terranix", + "repo": "terranix-examples", + "type": "github" + } + }, "terranix_2": { "inputs": { "bats-assert": "bats-assert_2", "bats-support": "bats-support_2", - "flake-utils": "flake-utils_14", + "flake-utils": "flake-utils_24", "nixpkgs": [ "ctl", "db-sync", "cardano-world", "bitte", + "capsules", + "bitte", "blank" ], "terranix-examples": "terranix-examples_2" @@ -9545,12 +15278,11 @@ "inputs": { "bats-assert": "bats-assert_3", "bats-support": "bats-support_3", - "flake-utils": "flake-utils_20", + "flake-utils": "flake-utils_29", "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "capsules", "bitte", "blank" ], @@ -9570,11 +15302,104 @@ "type": "github" } }, + "terranix_4": { + "inputs": { + "bats-assert": "bats-assert_4", + "bats-support": "bats-support_4", + "flake-utils": "flake-utils_35", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "blank" + ], + "terranix-examples": "terranix-examples_4" + }, + "locked": { + "lastModified": 1637158331, + "narHash": "sha256-x5LEKtSkVq+D3BXHDBOb2wdCLxAhVmXIWONRi9lxDPg=", + "owner": "terranix", + "repo": "terranix", + "rev": "34198bb154af86d2a559446f10d7339e53126abe", + "type": "github" + }, + "original": { + "owner": "terranix", + "repo": "terranix", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_5" + }, + "locked": { + "lastModified": 1683117219, + "narHash": "sha256-IyNRNRxw0slA3VQySVA7QPXHMOxlbx0ePWvj9oln+Wk=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "c8c3731dc404f837f38f89c2c5ffc2afc02e249d", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1691440708, + "narHash": "sha256-c7Cc08vJ0IPFgIERpTdO2xvDHQNL7Uf5iXT0GlYO6vo=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "2a535809ac5c9a32288f4d3b938296e056d948cc", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1697388351, + "narHash": "sha256-63N2eBpKaziIy4R44vjpUu8Nz5fCJY7okKrkixvDQmY=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "aae39f64f5ecbe89792d05eacea5cb241891292a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "tullia": { "inputs": { "nix-nomad": "nix-nomad", "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_20", "std": "std" }, "locked": { @@ -9586,38 +15411,169 @@ "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_2": { + "inputs": { + "nix-nomad": "nix-nomad_2", + "nix2container": "nix2container_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "nixpkgs" + ], + "std": "std_2" + }, + "locked": { + "lastModified": 1684859161, + "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_3": { + "inputs": { + "nix-nomad": "nix-nomad_3", + "nix2container": "nix2container_5", + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "nixpkgs" + ], + "std": "std_4" + }, + "locked": { + "lastModified": 1684859161, + "narHash": "sha256-wOKutImA7CRL0rN+Ng80E72fD5FkVub7LLP2k9NICpg=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "2964cff1a16eefe301bdddb508c49d94d04603d6", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "tullia_4": { + "inputs": { + "nix2container": "nix2container_7", + "nixpkgs": "nixpkgs_95", + "std": "std_8" + }, + "locked": { + "lastModified": 1657811465, + "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", + "owner": "input-output-hk", + "repo": "tullia", + "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", + "type": "github" + }, + "original": { + "owner": "input-output-hk", + "repo": "tullia", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_10": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_11": { + "locked": { + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "type": "github" + }, + "original": { + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "tullia_2": { - "inputs": { - "nix2container": "nix2container_3", - "nixpkgs": "nixpkgs_66", - "std": "std_4" + "utils_12": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_13": { "locked": { - "lastModified": 1657811465, - "narHash": "sha256-KHNWwKuUIG08CUg/ol81zf26RRlnsQsyqMr63vXcCes=", - "owner": "input-output-hk", - "repo": "tullia", - "rev": "f025fcf3676d1d1281de184e89c5f7c8e7f74ebe", + "lastModified": 1633020561, + "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", + "owner": "kreisys", + "repo": "flake-utils", + "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "tullia", + "owner": "kreisys", + "repo": "flake-utils", "type": "github" } }, - "utils": { + "utils_14": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { @@ -9626,7 +15582,7 @@ "type": "github" } }, - "utils_10": { + "utils_15": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9641,7 +15597,7 @@ "type": "github" } }, - "utils_11": { + "utils_16": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9656,7 +15612,7 @@ "type": "github" } }, - "utils_12": { + "utils_17": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9671,7 +15627,7 @@ "type": "github" } }, - "utils_13": { + "utils_18": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9686,7 +15642,7 @@ "type": "github" } }, - "utils_14": { + "utils_19": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9701,7 +15657,22 @@ "type": "github" } }, - "utils_15": { + "utils_2": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_20": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9716,7 +15687,7 @@ "type": "github" } }, - "utils_16": { + "utils_21": { "locked": { "lastModified": 1644229661, "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", @@ -9731,7 +15702,7 @@ "type": "github" } }, - "utils_17": { + "utils_22": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -9746,7 +15717,7 @@ "type": "github" } }, - "utils_18": { + "utils_23": { "locked": { "lastModified": 1601282935, "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", @@ -9761,7 +15732,7 @@ "type": "github" } }, - "utils_19": { + "utils_24": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9776,22 +15747,7 @@ "type": "github" } }, - "utils_2": { - "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "utils_20": { + "utils_25": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9806,7 +15762,7 @@ "type": "github" } }, - "utils_21": { + "utils_26": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9821,7 +15777,7 @@ "type": "github" } }, - "utils_22": { + "utils_27": { "locked": { "lastModified": 1633020561, "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", @@ -9836,7 +15792,7 @@ "type": "github" } }, - "utils_23": { + "utils_28": { "locked": { "lastModified": 1638122382, "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", @@ -9853,11 +15809,11 @@ }, "utils_3": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -9868,11 +15824,11 @@ }, "utils_4": { "locked": { - "lastModified": 1601282935, - "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "588973065fce51f4763287f0fda87a174d78bf48", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -9883,41 +15839,41 @@ }, "utils_5": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_6": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_7": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -9928,26 +15884,26 @@ }, "utils_8": { "locked": { - "lastModified": 1633020561, - "narHash": "sha256-4uAiRqL9nP3d/NQ8VBqjQ5iZypHaM+X/FyWpXVXkwTA=", - "owner": "kreisys", + "lastModified": 1637014545, + "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "owner": "numtide", "repo": "flake-utils", - "rev": "2923532a276a5595ee64376ec1b3db6ed8503c52", + "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", "type": "github" }, "original": { - "owner": "kreisys", + "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "utils_9": { "locked": { - "lastModified": 1637014545, - "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", + "lastModified": 1601282935, + "narHash": "sha256-WQAFV6sGGQxrRs3a+/Yj9xUYvhTpukQJIcMbIi7LCJ4=", "owner": "numtide", "repo": "flake-utils", - "rev": "bba5dcc8e0b20ab664967ad83d24d64cb64ec4f4", + "rev": "588973065fce51f4763287f0fda87a174d78bf48", "type": "github" }, "original": { @@ -9994,7 +15950,8 @@ "inputs": { "nixpkgs": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.1.1", "tullia", "std", "nixpkgs" @@ -10014,9 +15971,16 @@ "type": "github" } }, - "yants_2": { + "yants_10": { "inputs": { - "nixpkgs": "nixpkgs_25" + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { "lastModified": 1645126146, @@ -10032,23 +15996,49 @@ "type": "github" } }, + "yants_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "owner": "divnix", + "repo": "yants", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, "yants_3": { "inputs": { "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "bitte", + "cardano-nix", + "cardano-node-8.7.3", "std", + "haumea", "nixpkgs" ] }, "locked": { - "lastModified": 1645126146, - "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", "owner": "divnix", "repo": "yants", - "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", "type": "github" }, "original": { @@ -10059,7 +16049,55 @@ }, "yants_4": { "inputs": { - "nixpkgs": "nixpkgs_60" + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1667096281, + "narHash": "sha256-wRRec6ze0gJHmGn6m57/zhz/Kdvp9HS4Nl5fkQ+uIuA=", + "owner": "divnix", + "repo": "yants", + "rev": "d18f356ec25cb94dc9c275870c3a7927a10f8c3c", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_5": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-node", + "std", + "lib" + ] + }, + "locked": { + "lastModified": 1686863218, + "narHash": "sha256-kooxYm3/3ornWtVBNHM3Zh020gACUyFX2G0VQXnB+mk=", + "owner": "divnix", + "repo": "yants", + "rev": "8f0da0dba57149676aa4817ec0c880fbde7a648d", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_6": { + "inputs": { + "nixpkgs": "nixpkgs_54" }, "locked": { "lastModified": 1645126146, @@ -10075,12 +16113,13 @@ "type": "github" } }, - "yants_5": { + "yants_7": { "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", + "bitte", "std", "nixpkgs" ] @@ -10099,13 +16138,30 @@ "type": "github" } }, - "yants_6": { + "yants_8": { + "inputs": { + "nixpkgs": "nixpkgs_89" + }, + "locked": { + "lastModified": 1645126146, + "narHash": "sha256-XQ1eg4gzXoc7Tl8iXak1uCt3KnsTyxqPtLE+vOoDnrQ=", + "owner": "divnix", + "repo": "yants", + "rev": "77df2be1b3cce9f571c6cf451f786b266a6869cc", + "type": "github" + }, + "original": { + "owner": "divnix", + "repo": "yants", + "type": "github" + } + }, + "yants_9": { "inputs": { "nixpkgs": [ "ctl", "db-sync", "cardano-world", - "tullia", "std", "nixpkgs" ] diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 6a67d166b..9c301598b 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "ddbd601e882276958fe260b8c492b5c7f489f174"; + rev = "bfbcb504f5667970b2e784a6a8ed2dccdd9beb50"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; @@ -198,4 +198,4 @@ default = (psProjectFor pkgs).devShell; }); }; - } +} diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 2d1305a35..6774a8e05 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -469,12 +469,12 @@ let additions = , "unsafe-coerce" ] , repo = - "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "v1.0.0" + "https://github.com/errfrom/purescript-cardano-transaction-builder" + , version = "48866bd7f5eeb8e0870c97384264d08bda9c2725" } , cardano-transaction-lib = { dependencies = - [ "aeson" + [ "aeson" , "aff" , "aff-promise" , "aff-retry" @@ -582,7 +582,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "582649dae3d95a3ee32c9ed1898a5264e134b53e" + , version = "bfbcb504f5667970b2e784a6a8ed2dccdd9beb50" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 699d96889..aacef95bf 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "v1.0.0"; + version = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; src = pkgs.fetchgit { - url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; - rev = "70d219d6463466458fd381b55d84f458dcaee94a"; - sha256 = "1148x79lxq2rr897cfspkrjspwyjgw5xm9b9188wvgf568703r3w"; + url = "https://github.com/errfrom/purescript-cardano-transaction-builder"; + rev = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; + sha256 = "1k57z6l14679vphw6l8l52hfyj5a1pk7vbjn929nsv0axp5y7fxa"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -295,11 +295,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "ddbd601e882276958fe260b8c492b5c7f489f174"; + version = "bfbcb504f5667970b2e784a6a8ed2dccdd9beb50"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "ddbd601e882276958fe260b8c492b5c7f489f174"; - sha256 = "1dgh4sj0hni3knk9rcljpy9r1fcjnxfaf12jrwvvzi8i2kljd7hz"; + rev = "bfbcb504f5667970b2e784a6a8ed2dccdd9beb50"; + sha256 = "0wqlvsc4ksf7i3iyp0dbs1l899015al3yk9vilxkgvcya9clkaf8"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -377,6 +377,30 @@ let installPhase = "ln -s $src $out"; }; + "cip95" = pkgs.stdenv.mkDerivation { + name = "cip95"; + version = "9d92a38cddd318245010286ae3966cd515d6952f"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip95"; + rev = "9d92a38cddd318245010286ae3966cd515d6952f"; + sha256 = "0wzyq1yni2nj46k97faffhjl7afvxlvjgmfbs5k4ga9a1vbd2ijm"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + + "cip95-typesafe" = pkgs.stdenv.mkDerivation { + name = "cip95-typesafe"; + version = "84cf1a18abc274222b31d7fcb829195ae2e673c4"; + src = pkgs.fetchgit { + url = "https://github.com/mlabs-haskell/purescript-cip95-typesafe"; + rev = "84cf1a18abc274222b31d7fcb829195ae2e673c4"; + sha256 = "1x2lnzb02dgryz0gpd6p4bg2nab7s49y6f705v2p3iina8z198z9"; + }; + phases = "installPhase"; + installPhase = "ln -s $src $out"; + }; + "console" = pkgs.stdenv.mkDerivation { name = "console"; version = "v6.0.0"; diff --git a/templates/ctl-scaffold/spago.dhall b/templates/ctl-scaffold/spago.dhall index 99316a39a..e726079d2 100644 --- a/templates/ctl-scaffold/spago.dhall +++ b/templates/ctl-scaffold/spago.dhall @@ -14,6 +14,7 @@ You can edit this file as you like. , "cip30-mock" , "uplc-apply-args" , "cardano-serialization-lib" + , "cardano-transaction-builder" , "cardano-transaction-lib" , "cardano-types" , "datetime" From 786fb4c6ce4b127c33fd4b10d6ffb62c6dda606e Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 25 Jul 2024 12:46:59 +0200 Subject: [PATCH 328/373] Fix integration tests --- src/Internal/QueryM/Ogmios.purs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Internal/QueryM/Ogmios.purs b/src/Internal/QueryM/Ogmios.purs index 367922c78..9390021b3 100644 --- a/src/Internal/QueryM/Ogmios.purs +++ b/src/Internal/QueryM/Ogmios.purs @@ -1036,8 +1036,8 @@ type ProtocolParametersRaw = } , "collateralPercentage" :: UInt , "maxCollateralInputs" :: UInt - , "governanceActionDeposit" :: OgmiosAdaLovelace - , "delegateRepresentativeDeposit" :: OgmiosAdaLovelace + , "governanceActionDeposit" :: Maybe OgmiosAdaLovelace + , "delegateRepresentativeDeposit" :: Maybe OgmiosAdaLovelace } newtype OgmiosProtocolParameters = OgmiosProtocolParameters ProtocolParameters @@ -1087,8 +1087,13 @@ instance DecodeAeson OgmiosProtocolParameters where , maxValueSize: ps.maxValueSize.bytes , collateralPercent: ps.collateralPercentage , maxCollateralInputs: ps.maxCollateralInputs - , govActionDeposit: wrap ps.governanceActionDeposit.ada.lovelace - , drepDeposit: wrap ps.delegateRepresentativeDeposit.ada.lovelace + , govActionDeposit: + -- NOTE: Conway fields should be optional to enable integration tests. + -- Reason: cardano-testnet runs in the Babbage era. + maybe mempty (wrap <<< _.ada.lovelace) ps.governanceActionDeposit + , drepDeposit: + maybe mempty (wrap <<< _.ada.lovelace) + ps.delegateRepresentativeDeposit } where decodeExUnits From aa7d67a7f54440def24c654ea571386b3248ae7e Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 25 Jul 2024 13:01:47 +0200 Subject: [PATCH 329/373] Fix unit tests --- ...rotocolParameters-6ac22050d53def4302608de2fa695f02.json} | 2 +- ...protocolParameters-1d8c6233b8bfb7c028f1dd60eb113d40.json | 1 + ...protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json | 1 - src/Internal/Service/Blockfrost.purs | 6 ++++-- test/Blockfrost/ProtocolParameters.purs | 4 ++-- test/ProtocolParams.purs | 2 +- 6 files changed, 9 insertions(+), 7 deletions(-) rename fixtures/test/blockfrost/getProtocolParameters/{getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json => getProtocolParameters-6ac22050d53def4302608de2fa695f02.json} (79%) create mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-1d8c6233b8bfb7c028f1dd60eb113d40.json delete mode 100644 fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json diff --git a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-6ac22050d53def4302608de2fa695f02.json similarity index 79% rename from fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json rename to fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-6ac22050d53def4302608de2fa695f02.json index 2f81200a8..6643a5d83 100644 --- a/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json +++ b/fixtures/test/blockfrost/getProtocolParameters/getProtocolParameters-6ac22050d53def4302608de2fa695f02.json @@ -1 +1 @@ -{"epoch":369,"min_fee_a":44,"min_fee_b":155381,"max_block_size":90112,"max_tx_size":16384,"max_block_header_size":1100,"key_deposit":"2000000","pool_deposit":"500000000","e_max":18,"n_opt":500,"a0":0.3,"rho":0.003,"tau":0.2,"decentralisation_param":0,"extra_entropy":null,"protocol_major_ver":10,"protocol_minor_ver":0,"min_utxo":"4310","min_pool_cost":"340000000","nonce":"0fe2c964e5238d978619d2f3bf1da6ba37303cbfad99d54b3ef0c7f9297b72d7","cost_models":{"PlutusV1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10},"PlutusV2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10},"PlutusV3":{"0":205665,"1":812,"2":1,"3":1,"4":1000,"5":571,"6":0,"7":1,"8":1000,"9":24177,"10":4,"11":1,"12":1000,"13":32,"14":117366,"15":10475,"16":4,"17":23000,"18":100,"19":23000,"20":100,"21":23000,"22":100,"23":23000,"24":100,"25":23000,"26":100,"27":23000,"28":100,"29":100,"30":100,"31":23000,"32":100,"33":19537,"34":32,"35":175354,"36":32,"37":46417,"38":4,"39":221973,"40":511,"41":0,"42":1,"43":89141,"44":32,"45":497525,"46":14068,"47":4,"48":2,"49":196500,"50":453240,"51":220,"52":0,"53":1,"54":1,"55":1000,"56":28662,"57":4,"58":2,"59":245000,"60":216773,"61":62,"62":1,"63":1060367,"64":12586,"65":1,"66":208512,"67":421,"68":1,"69":187000,"70":1000,"71":52998,"72":1,"73":80436,"74":32,"75":43249,"76":32,"77":1000,"78":32,"79":80556,"80":1,"81":57667,"82":4,"83":1000,"84":10,"85":197145,"86":156,"87":1,"88":197145,"89":156,"90":1,"91":204924,"92":473,"93":1,"94":208896,"95":511,"96":1,"97":52467,"98":32,"99":64832,"100":32,"101":65493,"102":32,"103":22558,"104":32,"105":16563,"106":32,"107":76511,"108":32,"109":196500,"110":453240,"111":220,"112":0,"113":1,"114":1,"115":69522,"116":11687,"117":0,"118":1,"119":60091,"120":32,"121":196500,"122":453240,"123":220,"124":0,"125":1,"126":1,"127":196500,"128":453240,"129":220,"130":0,"131":1,"132":1,"133":1159724,"134":392670,"135":0,"136":2,"137":806990,"138":30482,"139":4,"140":1927926,"141":82523,"142":4,"143":265318,"144":0,"145":4,"146":0,"147":85931,"148":32,"149":205665,"150":812,"151":1,"152":1,"153":41182,"154":32,"155":212342,"156":32,"157":31220,"158":32,"159":32696,"160":32,"161":43357,"162":32,"163":32247,"164":32,"165":38314,"166":32,"167":35190005,"168":10,"169":57996947,"170":18975,"171":10,"172":39121781,"173":32260,"174":10,"175":23000,"176":100,"177":23000,"178":100,"179":832808,"180":18,"181":3209094,"182":6,"183":331451,"184":1,"185":65990684,"186":23097,"187":18,"188":114242,"189":18,"190":94393407,"191":87060,"192":18,"193":16420089,"194":18,"195":2145798,"196":36,"197":3795345,"198":12,"199":889023,"200":1,"201":204237282,"202":23271,"203":36,"204":129165,"205":36,"206":189977790,"207":85902,"208":36,"209":33012864,"210":36,"211":388443360,"212":1,"213":401885761,"214":72,"215":2331379,"216":72,"217":1927926,"218":82523,"219":4,"220":117366,"221":10475,"222":4,"223":1292075,"224":24469,"225":74,"226":0,"227":1,"228":936157,"229":49601,"230":237,"231":0,"232":1}},"price_mem":0.0577,"price_step":0.0000721,"max_tx_ex_mem":"14000000","max_tx_ex_steps":"10000000000","max_block_ex_mem":"62000000","max_block_ex_steps":"20000000000","max_val_size":"5000","collateral_percent":150,"max_collateral_inputs":3,"coins_per_utxo_size":"4310","coins_per_utxo_word":"4310","pvt_motion_no_confidence":0.6,"pvt_committee_normal":0.6,"pvt_committee_no_confidence":0.51,"pvt_hard_fork_initiation":0.51,"dvt_motion_no_confidence":0.67,"dvt_committee_normal":0.67,"dvt_committee_no_confidence":0.6,"dvt_update_to_constitution":0.75,"dvt_hard_fork_initiation":0.6,"dvt_p_p_network_group":0.67,"dvt_p_p_economic_group":0.67,"dvt_p_p_technical_group":0.67,"dvt_p_p_gov_group":0.75,"dvt_treasury_withdrawal":0.67,"committee_min_size":"3","committee_max_term_length":"73","gov_action_lifetime":"8","gov_action_deposit":"50000000000","drep_deposit":"500000000","drep_activity":"20"} +{"epoch":406,"min_fee_a":44,"min_fee_b":155381,"max_block_size":90112,"max_tx_size":16384,"max_block_header_size":1100,"key_deposit":"2000000","pool_deposit":"500000000","e_max":18,"n_opt":500,"a0":0.3,"rho":0.003,"tau":0.2,"decentralisation_param":0,"extra_entropy":null,"protocol_major_ver":10,"protocol_minor_ver":0,"min_utxo":"4310","min_pool_cost":"340000000","nonce":"20a149dea03f4a8ee32d30db9219ee61628ccefdf0be517f96302bef35bd4cd7","cost_models":{"PlutusV1":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10},"PlutusV2":{"addInteger-cpu-arguments-intercept":205665,"addInteger-cpu-arguments-slope":812,"addInteger-memory-arguments-intercept":1,"addInteger-memory-arguments-slope":1,"appendByteString-cpu-arguments-intercept":1000,"appendByteString-cpu-arguments-slope":571,"appendByteString-memory-arguments-intercept":0,"appendByteString-memory-arguments-slope":1,"appendString-cpu-arguments-intercept":1000,"appendString-cpu-arguments-slope":24177,"appendString-memory-arguments-intercept":4,"appendString-memory-arguments-slope":1,"bData-cpu-arguments":1000,"bData-memory-arguments":32,"blake2b_256-cpu-arguments-intercept":117366,"blake2b_256-cpu-arguments-slope":10475,"blake2b_256-memory-arguments":4,"cekApplyCost-exBudgetCPU":23000,"cekApplyCost-exBudgetMemory":100,"cekBuiltinCost-exBudgetCPU":23000,"cekBuiltinCost-exBudgetMemory":100,"cekConstCost-exBudgetCPU":23000,"cekConstCost-exBudgetMemory":100,"cekDelayCost-exBudgetCPU":23000,"cekDelayCost-exBudgetMemory":100,"cekForceCost-exBudgetCPU":23000,"cekForceCost-exBudgetMemory":100,"cekLamCost-exBudgetCPU":23000,"cekLamCost-exBudgetMemory":100,"cekStartupCost-exBudgetCPU":100,"cekStartupCost-exBudgetMemory":100,"cekVarCost-exBudgetCPU":23000,"cekVarCost-exBudgetMemory":100,"chooseData-cpu-arguments":19537,"chooseData-memory-arguments":32,"chooseList-cpu-arguments":175354,"chooseList-memory-arguments":32,"chooseUnit-cpu-arguments":46417,"chooseUnit-memory-arguments":4,"consByteString-cpu-arguments-intercept":221973,"consByteString-cpu-arguments-slope":511,"consByteString-memory-arguments-intercept":0,"consByteString-memory-arguments-slope":1,"constrData-cpu-arguments":89141,"constrData-memory-arguments":32,"decodeUtf8-cpu-arguments-intercept":497525,"decodeUtf8-cpu-arguments-slope":14068,"decodeUtf8-memory-arguments-intercept":4,"decodeUtf8-memory-arguments-slope":2,"divideInteger-cpu-arguments-constant":196500,"divideInteger-cpu-arguments-model-arguments-intercept":453240,"divideInteger-cpu-arguments-model-arguments-slope":220,"divideInteger-memory-arguments-intercept":0,"divideInteger-memory-arguments-minimum":1,"divideInteger-memory-arguments-slope":1,"encodeUtf8-cpu-arguments-intercept":1000,"encodeUtf8-cpu-arguments-slope":28662,"encodeUtf8-memory-arguments-intercept":4,"encodeUtf8-memory-arguments-slope":2,"equalsByteString-cpu-arguments-constant":245000,"equalsByteString-cpu-arguments-intercept":216773,"equalsByteString-cpu-arguments-slope":62,"equalsByteString-memory-arguments":1,"equalsData-cpu-arguments-intercept":1060367,"equalsData-cpu-arguments-slope":12586,"equalsData-memory-arguments":1,"equalsInteger-cpu-arguments-intercept":208512,"equalsInteger-cpu-arguments-slope":421,"equalsInteger-memory-arguments":1,"equalsString-cpu-arguments-constant":187000,"equalsString-cpu-arguments-intercept":1000,"equalsString-cpu-arguments-slope":52998,"equalsString-memory-arguments":1,"fstPair-cpu-arguments":80436,"fstPair-memory-arguments":32,"headList-cpu-arguments":43249,"headList-memory-arguments":32,"iData-cpu-arguments":1000,"iData-memory-arguments":32,"ifThenElse-cpu-arguments":80556,"ifThenElse-memory-arguments":1,"indexByteString-cpu-arguments":57667,"indexByteString-memory-arguments":4,"lengthOfByteString-cpu-arguments":1000,"lengthOfByteString-memory-arguments":10,"lessThanByteString-cpu-arguments-intercept":197145,"lessThanByteString-cpu-arguments-slope":156,"lessThanByteString-memory-arguments":1,"lessThanEqualsByteString-cpu-arguments-intercept":197145,"lessThanEqualsByteString-cpu-arguments-slope":156,"lessThanEqualsByteString-memory-arguments":1,"lessThanEqualsInteger-cpu-arguments-intercept":204924,"lessThanEqualsInteger-cpu-arguments-slope":473,"lessThanEqualsInteger-memory-arguments":1,"lessThanInteger-cpu-arguments-intercept":208896,"lessThanInteger-cpu-arguments-slope":511,"lessThanInteger-memory-arguments":1,"listData-cpu-arguments":52467,"listData-memory-arguments":32,"mapData-cpu-arguments":64832,"mapData-memory-arguments":32,"mkCons-cpu-arguments":65493,"mkCons-memory-arguments":32,"mkNilData-cpu-arguments":22558,"mkNilData-memory-arguments":32,"mkNilPairData-cpu-arguments":16563,"mkNilPairData-memory-arguments":32,"mkPairData-cpu-arguments":76511,"mkPairData-memory-arguments":32,"modInteger-cpu-arguments-constant":196500,"modInteger-cpu-arguments-model-arguments-intercept":453240,"modInteger-cpu-arguments-model-arguments-slope":220,"modInteger-memory-arguments-intercept":0,"modInteger-memory-arguments-minimum":1,"modInteger-memory-arguments-slope":1,"multiplyInteger-cpu-arguments-intercept":69522,"multiplyInteger-cpu-arguments-slope":11687,"multiplyInteger-memory-arguments-intercept":0,"multiplyInteger-memory-arguments-slope":1,"nullList-cpu-arguments":60091,"nullList-memory-arguments":32,"quotientInteger-cpu-arguments-constant":196500,"quotientInteger-cpu-arguments-model-arguments-intercept":453240,"quotientInteger-cpu-arguments-model-arguments-slope":220,"quotientInteger-memory-arguments-intercept":0,"quotientInteger-memory-arguments-minimum":1,"quotientInteger-memory-arguments-slope":1,"remainderInteger-cpu-arguments-constant":196500,"remainderInteger-cpu-arguments-model-arguments-intercept":453240,"remainderInteger-cpu-arguments-model-arguments-slope":220,"remainderInteger-memory-arguments-intercept":0,"remainderInteger-memory-arguments-minimum":1,"remainderInteger-memory-arguments-slope":1,"serialiseData-cpu-arguments-intercept":1159724,"serialiseData-cpu-arguments-slope":392670,"serialiseData-memory-arguments-intercept":0,"serialiseData-memory-arguments-slope":2,"sha2_256-cpu-arguments-intercept":806990,"sha2_256-cpu-arguments-slope":30482,"sha2_256-memory-arguments":4,"sha3_256-cpu-arguments-intercept":1927926,"sha3_256-cpu-arguments-slope":82523,"sha3_256-memory-arguments":4,"sliceByteString-cpu-arguments-intercept":265318,"sliceByteString-cpu-arguments-slope":0,"sliceByteString-memory-arguments-intercept":4,"sliceByteString-memory-arguments-slope":0,"sndPair-cpu-arguments":85931,"sndPair-memory-arguments":32,"subtractInteger-cpu-arguments-intercept":205665,"subtractInteger-cpu-arguments-slope":812,"subtractInteger-memory-arguments-intercept":1,"subtractInteger-memory-arguments-slope":1,"tailList-cpu-arguments":41182,"tailList-memory-arguments":32,"trace-cpu-arguments":212342,"trace-memory-arguments":32,"unBData-cpu-arguments":31220,"unBData-memory-arguments":32,"unConstrData-cpu-arguments":32696,"unConstrData-memory-arguments":32,"unIData-cpu-arguments":43357,"unIData-memory-arguments":32,"unListData-cpu-arguments":32247,"unListData-memory-arguments":32,"unMapData-cpu-arguments":38314,"unMapData-memory-arguments":32,"verifyEcdsaSecp256k1Signature-cpu-arguments":35892428,"verifyEcdsaSecp256k1Signature-memory-arguments":10,"verifyEd25519Signature-cpu-arguments-intercept":57996947,"verifyEd25519Signature-cpu-arguments-slope":18975,"verifyEd25519Signature-memory-arguments":10,"verifySchnorrSecp256k1Signature-cpu-arguments-intercept":38887044,"verifySchnorrSecp256k1Signature-cpu-arguments-slope":32947,"verifySchnorrSecp256k1Signature-memory-arguments":10},"PlutusV3":{"0":100788,"1":420,"2":1,"3":1,"4":1000,"5":173,"6":0,"7":1,"8":1000,"9":59957,"10":4,"11":1,"12":11183,"13":32,"14":201305,"15":8356,"16":4,"17":16000,"18":100,"19":16000,"20":100,"21":16000,"22":100,"23":16000,"24":100,"25":16000,"26":100,"27":16000,"28":100,"29":100,"30":100,"31":16000,"32":100,"33":94375,"34":32,"35":132994,"36":32,"37":61462,"38":4,"39":72010,"40":178,"41":0,"42":1,"43":22151,"44":32,"45":91189,"46":769,"47":4,"48":2,"49":85848,"50":123203,"51":7305,"52":-900,"53":1716,"54":549,"55":57,"56":85848,"57":0,"58":1,"59":1,"60":1000,"61":42921,"62":4,"63":2,"64":24548,"65":29498,"66":38,"67":1,"68":898148,"69":27279,"70":1,"71":51775,"72":558,"73":1,"74":39184,"75":1000,"76":60594,"77":1,"78":141895,"79":32,"80":83150,"81":32,"82":15299,"83":32,"84":76049,"85":1,"86":13169,"87":4,"88":22100,"89":10,"90":28999,"91":74,"92":1,"93":28999,"94":74,"95":1,"96":43285,"97":552,"98":1,"99":44749,"100":541,"101":1,"102":33852,"103":32,"104":68246,"105":32,"106":72362,"107":32,"108":7243,"109":32,"110":7391,"111":32,"112":11546,"113":32,"114":85848,"115":123203,"116":7305,"117":-900,"118":1716,"119":549,"120":57,"121":85848,"122":0,"123":1,"124":90434,"125":519,"126":0,"127":1,"128":74433,"129":32,"130":85848,"131":123203,"132":7305,"133":-900,"134":1716,"135":549,"136":57,"137":85848,"138":0,"139":1,"140":1,"141":85848,"142":123203,"143":7305,"144":-900,"145":1716,"146":549,"147":57,"148":85848,"149":0,"150":1,"151":955506,"152":213312,"153":0,"154":2,"155":270652,"156":22588,"157":4,"158":1457325,"159":64566,"160":4,"161":20467,"162":1,"163":4,"164":0,"165":141992,"166":32,"167":100788,"168":420,"169":1,"170":1,"171":81663,"172":32,"173":59498,"174":32,"175":20142,"176":32,"177":24588,"178":32,"179":20744,"180":32,"181":25933,"182":32,"183":24623,"184":32,"185":43053543,"186":10,"187":53384111,"188":14333,"189":10,"190":43574283,"191":26308,"192":10,"193":16000,"194":100,"195":16000,"196":100,"197":962335,"198":18,"199":2780678,"200":6,"201":442008,"202":1,"203":52538055,"204":3756,"205":18,"206":267929,"207":18,"208":76433006,"209":8868,"210":18,"211":52948122,"212":18,"213":1995836,"214":36,"215":3227919,"216":12,"217":901022,"218":1,"219":166917843,"220":4307,"221":36,"222":284546,"223":36,"224":158221314,"225":26549,"226":36,"227":74698472,"228":36,"229":333849714,"230":1,"231":254006273,"232":72,"233":2174038,"234":72,"235":2261318,"236":64571,"237":4,"238":207616,"239":8310,"240":4,"241":1293828,"242":28716,"243":63,"244":0,"245":1,"246":1006041,"247":43623,"248":251,"249":0,"250":1}},"price_mem":0.0577,"price_step":0.0000721,"max_tx_ex_mem":"14000000","max_tx_ex_steps":"10000000000","max_block_ex_mem":"62000000","max_block_ex_steps":"20000000000","max_val_size":"5000","collateral_percent":150,"max_collateral_inputs":3,"coins_per_utxo_size":"4310","coins_per_utxo_word":"4310","pvt_motion_no_confidence":0.6,"pvt_committee_normal":0.65,"pvt_committee_no_confidence":0.65,"pvt_hard_fork_initiation":0.51,"dvt_motion_no_confidence":0.67,"dvt_committee_normal":0.67,"dvt_committee_no_confidence":0.65,"dvt_update_to_constitution":0.75,"dvt_hard_fork_initiation":0.6,"dvt_p_p_network_group":0.67,"dvt_p_p_economic_group":0.67,"dvt_p_p_technical_group":0.67,"dvt_p_p_gov_group":0.75,"dvt_treasury_withdrawal":0.67,"committee_min_size":"5","committee_max_term_length":"146","gov_action_lifetime":"14","gov_action_deposit":"100000000000","drep_deposit":"500000000","drep_activity":"20"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-1d8c6233b8bfb7c028f1dd60eb113d40.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-1d8c6233b8bfb7c028f1dd60eb113d40.json new file mode 100644 index 000000000..f80e8373f --- /dev/null +++ b/fixtures/test/ogmios/queryLedgerState-protocolParameters-1d8c6233b8bfb7c028f1dd60eb113d40.json @@ -0,0 +1 @@ +{"jsonrpc":"2.0","method":"queryLedgerState/protocolParameters","result":{"minFeeCoefficient":44,"minFeeConstant":{"ada":{"lovelace":155381}},"minFeeReferenceScripts":{"base":15,"range":25600,"multiplier":1.2},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"maxReferenceScriptsSize":{"bytes":204800},"stakeCredentialDeposit":{"ada":{"lovelace":2000000}},"stakePoolDeposit":{"ada":{"lovelace":500000000}},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"ada":{"lovelace":340000000}},"minUtxoDepositConstant":{"ada":{"lovelace":0}},"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,57996947,18975,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,57996947,18975,10,38887044,32947,10],"plutus:v3":[100788,420,1,1,1000,173,0,1,1000,59957,4,1,11183,32,201305,8356,4,16000,100,16000,100,16000,100,16000,100,16000,100,16000,100,100,100,16000,100,94375,32,132994,32,61462,4,72010,178,0,1,22151,32,91189,769,4,2,85848,123203,7305,-900,1716,549,57,85848,0,1,1,1000,42921,4,2,24548,29498,38,1,898148,27279,1,51775,558,1,39184,1000,60594,1,141895,32,83150,32,15299,32,76049,1,13169,4,22100,10,28999,74,1,28999,74,1,43285,552,1,44749,541,1,33852,32,68246,32,72362,32,7243,32,7391,32,11546,32,85848,123203,7305,-900,1716,549,57,85848,0,1,90434,519,0,1,74433,32,85848,123203,7305,-900,1716,549,57,85848,0,1,1,85848,123203,7305,-900,1716,549,57,85848,0,1,955506,213312,0,2,270652,22588,4,1457325,64566,4,20467,1,4,0,141992,32,100788,420,1,1,81663,32,59498,32,20142,32,24588,32,20744,32,25933,32,24623,32,43053543,10,53384111,14333,10,43574283,26308,10,16000,100,16000,100,962335,18,2780678,6,442008,1,52538055,3756,18,267929,18,76433006,8868,18,52948122,18,1995836,36,3227919,12,901022,1,166917843,4307,36,284546,36,158221314,26549,36,74698472,36,333849714,1,254006273,72,2174038,72,2261318,64571,4,207616,8310,4,1293828,28716,63,0,1,1006041,43623,251,0,1]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":20000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":10,"minor":0},"stakePoolVotingThresholds":{"noConfidence":"3/5","constitutionalCommittee":{"default":"13/20","stateOfNoConfidence":"13/20"},"hardForkInitiation":"51/100"},"delegateRepresentativeVotingThresholds":{"noConfidence":"67/100","constitutionalCommittee":{"default":"67/100","stateOfNoConfidence":"13/20"},"constitution":"3/4","hardForkInitiation":"3/5","protocolParametersUpdate":{"network":"67/100","economic":"67/100","technical":"67/100","governance":"3/4"},"treasuryWithdrawals":"67/100"},"constitutionalCommitteeMinSize":5,"constitutionalCommitteeMaxTermLength":146,"governanceActionLifetime":14,"governanceActionDeposit":{"ada":{"lovelace":100000000000}},"delegateRepresentativeDeposit":{"ada":{"lovelace":500000000}},"delegateRepresentativeMaxIdleTime":20},"id":"queryLedgerState/protocolParameters-hfkg3r9slz15sesn"} \ No newline at end of file diff --git a/fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json b/fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json deleted file mode 100644 index 46aa46ae2..000000000 --- a/fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json +++ /dev/null @@ -1 +0,0 @@ -{"jsonrpc":"2.0","method":"queryLedgerState/protocolParameters","result":{"minFeeCoefficient":44,"minFeeConstant":{"ada":{"lovelace":155381}},"maxBlockBodySize":{"bytes":90112},"maxBlockHeaderSize":{"bytes":1100},"maxTransactionSize":{"bytes":16384},"stakeCredentialDeposit":{"ada":{"lovelace":2000000}},"stakePoolDeposit":{"ada":{"lovelace":500000000}},"stakePoolRetirementEpochBound":18,"desiredNumberOfStakePools":500,"stakePoolPledgeInfluence":"3/10","monetaryExpansion":"3/1000","treasuryExpansion":"1/5","minStakePoolCost":{"ada":{"lovelace":340000000}},"minUtxoDepositConstant":{"ada":{"lovelace":0}},"minUtxoDepositCoefficient":4310,"plutusCostModels":{"plutus:v1":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,57996947,18975,10],"plutus:v2":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35892428,10,57996947,18975,10,38887044,32947,10],"plutus:v3":[205665,812,1,1,1000,571,0,1,1000,24177,4,1,1000,32,117366,10475,4,23000,100,23000,100,23000,100,23000,100,23000,100,23000,100,100,100,23000,100,19537,32,175354,32,46417,4,221973,511,0,1,89141,32,497525,14068,4,2,196500,453240,220,0,1,1,1000,28662,4,2,245000,216773,62,1,1060367,12586,1,208512,421,1,187000,1000,52998,1,80436,32,43249,32,1000,32,80556,1,57667,4,1000,10,197145,156,1,197145,156,1,204924,473,1,208896,511,1,52467,32,64832,32,65493,32,22558,32,16563,32,76511,32,196500,453240,220,0,1,1,69522,11687,0,1,60091,32,196500,453240,220,0,1,1,196500,453240,220,0,1,1,1159724,392670,0,2,806990,30482,4,1927926,82523,4,265318,0,4,0,85931,32,205665,812,1,1,41182,32,212342,32,31220,32,32696,32,43357,32,32247,32,38314,32,35190005,10,57996947,18975,10,39121781,32260,10,23000,100,23000,100,832808,18,3209094,6,331451,1,65990684,23097,18,114242,18,94393407,87060,18,16420089,18,2145798,36,3795345,12,889023,1,204237282,23271,36,129165,36,189977790,85902,36,33012864,36,388443360,1,401885761,72,2331379,72,1927926,82523,4,117366,10475,4,1292075,24469,74,0,1,936157,49601,237,0,1]},"scriptExecutionPrices":{"memory":"577/10000","cpu":"721/10000000"},"maxExecutionUnitsPerTransaction":{"memory":14000000,"cpu":10000000000},"maxExecutionUnitsPerBlock":{"memory":62000000,"cpu":20000000000},"maxValueSize":{"bytes":5000},"collateralPercentage":150,"maxCollateralInputs":3,"version":{"major":10,"minor":0},"stakePoolVotingThresholds":{"noConfidence":"3/5","constitutionalCommittee":{"default":"3/5","stateOfNoConfidence":"51/100"},"hardForkInitiation":"51/100"},"delegateRepresentativeVotingThresholds":{"noConfidence":"67/100","constitutionalCommittee":{"default":"67/100","stateOfNoConfidence":"3/5"},"constitution":"3/4","hardForkInitiation":"3/5","protocolParametersUpdate":{"network":"67/100","economic":"67/100","technical":"67/100","governance":"3/4"},"treasuryWithdrawals":"67/100"},"constitutionalCommitteeMinSize":3,"constitutionalCommitteeMaxTermLength":73,"governanceActionLifetime":8,"governanceActionDeposit":{"ada":{"lovelace":50000000000}},"delegateRepresentativeDeposit":{"ada":{"lovelace":500000000}},"delegateRepresentativeMaxIdleTime":20},"id":"queryLedgerState/protocolParameters-hfkgvfollxkiih0p"} \ No newline at end of file diff --git a/src/Internal/Service/Blockfrost.purs b/src/Internal/Service/Blockfrost.purs index fb6edb722..bdfc07b20 100644 --- a/src/Internal/Service/Blockfrost.purs +++ b/src/Internal/Service/Blockfrost.purs @@ -1472,6 +1472,8 @@ type BlockfrostProtocolParametersRaw = , "collateral_percent" :: UInt , "max_collateral_inputs" :: UInt , "coins_per_utxo_size" :: Maybe (Stringed BigNum) + , "gov_action_deposit" :: Stringed BigNum + , "drep_deposit" :: Stringed BigNum } toFraction' :: BigNumber -> String /\ String @@ -1565,8 +1567,8 @@ instance DecodeAeson BlockfrostProtocolParameters where , maxValueSize: unwrap raw.max_val_size , collateralPercent: raw.collateral_percent , maxCollateralInputs: raw.max_collateral_inputs - , govActionDeposit: mempty -- FIXME - , drepDeposit: mempty -- FIXME + , govActionDeposit: Coin $ unwrap raw.gov_action_deposit + , drepDeposit: Coin $ unwrap raw.drep_deposit } -------------------------------------------------------------------------------- diff --git a/test/Blockfrost/ProtocolParameters.purs b/test/Blockfrost/ProtocolParameters.purs index 2621c57b8..47378bfd8 100644 --- a/test/Blockfrost/ProtocolParameters.purs +++ b/test/Blockfrost/ProtocolParameters.purs @@ -25,11 +25,11 @@ import Test.Spec.Runner (defaultConfig) blockfrostFixture :: String blockfrostFixture = - "blockfrost/getProtocolParameters/getProtocolParameters-980c21227fdfd9bad3d3a40ab41fde7a.json" + "blockfrost/getProtocolParameters/getProtocolParameters-6ac22050d53def4302608de2fa695f02.json" ogmiosFixture :: String ogmiosFixture = - "ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json" + "ogmios/queryLedgerState-protocolParameters-1d8c6233b8bfb7c028f1dd60eb113d40.json" loadFixture :: forall (a :: Type). DecodeAeson a => String -> Aff a loadFixture fixture = diff --git a/test/ProtocolParams.purs b/test/ProtocolParams.purs index 1af299e7a..e76972d95 100644 --- a/test/ProtocolParams.purs +++ b/test/ProtocolParams.purs @@ -16,7 +16,7 @@ import Test.Spec.Assertions (shouldSatisfy) suite :: TestPlanM (Aff Unit) Unit suite = do aeson <- Utils.readAeson - "./fixtures/test/ogmios/queryLedgerState-protocolParameters-44aa6959a9fdb9d5e92b85678918374e.json" + "./fixtures/test/ogmios/queryLedgerState-protocolParameters-1d8c6233b8bfb7c028f1dd60eb113d40.json" group "ProtocolParameters parser" $ do test "is able to parse ogmios response fixture" $ (decodeAeson aeson :: Either _ { result :: OgmiosProtocolParameters }) From a9b5fcd33bb1c5bd4e89291e6fe768f855b2c437 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 25 Jul 2024 14:34:44 +0200 Subject: [PATCH 330/373] Add functions for retrieving own (un)registered pub stake keys Add DelegateVoteAbstain example --- examples/ByUrl.purs | 2 - examples/Gov/DelegateVoteAbstain.purs | 58 +++++++++++++++++++++++++++ examples/Gov/RegisterDrep.purs | 2 +- packages.dhall | 2 +- spago-packages.nix | 6 +-- src/Contract/Wallet.purs | 2 + src/Internal/BalanceTx/BalanceTx.purs | 8 +++- src/Internal/Contract/Wallet.purs | 57 ++++++++++++++++++++++++-- src/Internal/Types/TxConstraints.purs | 6 ++- src/Internal/Wallet/Cip30.purs | 40 ++++++++++++++---- 10 files changed, 164 insertions(+), 19 deletions(-) create mode 100644 examples/Gov/DelegateVoteAbstain.purs diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 85b779b54..25c7645cd 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -22,7 +22,6 @@ import Ctl.Examples.Cip30 as Cip30 import Ctl.Examples.Datums as Datums import Ctl.Examples.DropTokens as DropTokens import Ctl.Examples.ECDSA as ECDSA -import Ctl.Examples.Gov.RegisterDrep (contract) as RegisterDrep import Ctl.Examples.IncludeDatum (contract) as IncludeDatum import Ctl.Examples.MintsMultipleTokens as MintsMultipleTokens import Ctl.Examples.NativeScriptMints as NativeScriptMints @@ -241,7 +240,6 @@ examples = addSuccessLog <$> Map.fromFoldable , "ChangeGeneration1-3" /\ ChangeGeneration.checkChangeOutputsDistribution 1 3 7 , "IncludeDatum" /\ IncludeDatum.contract - , "Gov.RegisterDrep" /\ RegisterDrep.contract ] addSuccessLog :: Contract Unit -> Contract Unit diff --git a/examples/Gov/DelegateVoteAbstain.purs b/examples/Gov/DelegateVoteAbstain.purs new file mode 100644 index 000000000..7387e82fb --- /dev/null +++ b/examples/Gov/DelegateVoteAbstain.purs @@ -0,0 +1,58 @@ +module Ctl.Examples.Gov.DelegateVoteAbstain + ( contract + , example + , main + ) where + +import Contract.Prelude + +import Cardano.Transaction.Builder (TransactionBuilderStep(IssueCertificate)) +import Cardano.Types.Certificate (Certificate(VoteRegDelegCert)) +import Cardano.Types.Credential (Credential(PubKeyHashCredential)) +import Cardano.Types.DRep (DRep(AlwaysAbstain)) +import Cardano.Types.PublicKey (hash) as PublicKey +import Cardano.Types.Transaction (hash) as Transaction +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) +import Contract.Log (logDebug', logInfo') +import Contract.Monad (Contract, launchAff_, runContract) +import Contract.ProtocolParameters (getProtocolParameters) +import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) +import Contract.Wallet (ownUnregisteredPubStakeKeys) +import Data.Array (head) as Array +import Data.Map (empty) as Map +import Effect.Exception (error) + +main :: Effect Unit +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } + } + +example :: ContractParams -> Effect Unit +example = launchAff_ <<< flip runContract contract + +contract :: Contract Unit +contract = do + logInfo' "Running Examples.Gov.DelegateVoteAbstain" + + unregPubStakeKeys <- ownUnregisteredPubStakeKeys + logDebug' $ "Unregistered public stake keys: " <> show unregPubStakeKeys + + pubStakeKey <- liftM (error "Failed to get unregistered pub stake key") $ + Array.head unregPubStakeKeys + let stakeCred = wrap $ PubKeyHashCredential $ PublicKey.hash pubStakeKey + + stakeCredDeposit <- _.stakeAddressDeposit <<< unwrap <$> + getProtocolParameters + + tx <- submitTxFromBuildPlan Map.empty mempty + [ IssueCertificate + (VoteRegDelegCert stakeCred AlwaysAbstain stakeCredDeposit) + Nothing + ] + + awaitTxConfirmed $ Transaction.hash tx + logInfo' "Tx submitted successfully!" diff --git a/examples/Gov/RegisterDrep.purs b/examples/Gov/RegisterDrep.purs index 79f50d63b..4f2d5a9fe 100644 --- a/examples/Gov/RegisterDrep.purs +++ b/examples/Gov/RegisterDrep.purs @@ -21,7 +21,7 @@ import Contract.Wallet (ownDrepPubKeyHash) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: true } + { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } } example :: ContractParams -> Effect Unit diff --git a/packages.dhall b/packages.dhall index 77ceae2e6..8f6e993a8 100644 --- a/packages.dhall +++ b/packages.dhall @@ -148,7 +148,7 @@ let additions = , "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cip95" - , version = "9d92a38cddd318245010286ae3966cd515d6952f" + , version = "ddcabbcf96ec6e292ca821c86eada1f828da0daf" } , cip95-typesafe = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 7dd94899d..883af265a 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -367,11 +367,11 @@ let "cip95" = pkgs.stdenv.mkDerivation { name = "cip95"; - version = "9d92a38cddd318245010286ae3966cd515d6952f"; + version = "ddcabbcf96ec6e292ca821c86eada1f828da0daf"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip95"; - rev = "9d92a38cddd318245010286ae3966cd515d6952f"; - sha256 = "0wzyq1yni2nj46k97faffhjl7afvxlvjgmfbs5k4ga9a1vbd2ijm"; + rev = "ddcabbcf96ec6e292ca821c86eada1f828da0daf"; + sha256 = "1vhan4fx4yq2h2p4ilvid97qnfs6wx5nj6rjyvyj30s1wi1cb1rz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index 49f920b0f..fdca5d065 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -41,7 +41,9 @@ import Ctl.Internal.Contract.Wallet , ownDrepPubKey , ownDrepPubKeyHash , ownPaymentPubKeyHashes + , ownRegisteredPubStakeKeys , ownStakePubKeyHashes + , ownUnregisteredPubStakeKeys , signData ) as X import Ctl.Internal.Contract.Wallet diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 8c9c9fede..d9abe77d4 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -7,7 +7,12 @@ import Prelude import Cardano.Transaction.Edit (editTransaction) import Cardano.Types ( AssetClass(AssetClass) - , Certificate(StakeDeregistration, StakeRegistration, RegDrepCert) + , Certificate + ( StakeDeregistration + , StakeRegistration + , VoteRegDelegCert + , RegDrepCert + ) , Coin(Coin) , Language(PlutusV1) , PlutusScript(PlutusScript) @@ -834,6 +839,7 @@ getCertsBalance tx (ProtocolParameters pparams) = ( case _ of StakeRegistration _ -> stakeAddressDeposit StakeDeregistration _ -> negate $ stakeAddressDeposit + VoteRegDelegCert _ _ deposit -> BigNum.toBigInt $ unwrap deposit RegDrepCert _ deposit _ -> BigNum.toBigInt $ unwrap deposit _ -> zero ) diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 9e3d10eef..5989ff01e 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -9,7 +9,9 @@ module Ctl.Internal.Contract.Wallet , ownDrepPubKeyHash , ownPubKeyHashes , ownPaymentPubKeyHashes + , ownRegisteredPubStakeKeys , ownStakePubKeyHashes + , ownUnregisteredPubStakeKeys , withWallet , getWalletCollateral , getWalletBalance @@ -31,7 +33,12 @@ import Cardano.Types.TransactionUnspentOutput (TransactionUnspentOutput) import Cardano.Types.UtxoMap (UtxoMap) import Cardano.Types.Value (Value, valueToCoin) import Cardano.Types.Value (geq, lovelaceValueOf, sum) as Value -import Cardano.Wallet.Key (getPrivateDrepKey) +import Cardano.Wallet.Key + ( KeyWallet + , PrivateStakeKey(PrivateStakeKey) + , getPrivateDrepKey + , getPrivateStakeKey + ) import Control.Monad.Reader.Trans (asks) import Control.Parallel (parTraverse) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) @@ -259,7 +266,7 @@ getWalletUtxos = do (unwrap >>> \({ input, output }) -> input /\ output) ownDrepPubKey :: Contract PublicKey -ownDrepPubKey = do +ownDrepPubKey = withWallet do actionBasedOnWallet _.getPubDrepKey ( \kw -> do @@ -270,7 +277,7 @@ ownDrepPubKey = do ) ownDrepPubKeyHash :: Contract Ed25519KeyHash -ownDrepPubKeyHash = do +ownDrepPubKeyHash = withWallet do actionBasedOnWallet (map PublicKey.hash <<< _.getPubDrepKey) ( \kw -> do @@ -280,3 +287,47 @@ ownDrepPubKeyHash = do pure $ PublicKey.hash $ PrivateKey.toPublicKey $ unwrap drepKey ) + +ownRegisteredPubStakeKeys :: Contract (Array PublicKey) +ownRegisteredPubStakeKeys = + withWallet do + actionBasedOnWallet _.getRegisteredPubStakeKeys + (map _.reg <<< kwPubStakeKeys) + +ownUnregisteredPubStakeKeys :: Contract (Array PublicKey) +ownUnregisteredPubStakeKeys = + withWallet do + actionBasedOnWallet _.getUnregisteredPubStakeKeys + (map _.unreg <<< kwPubStakeKeys) + +kwPubStakeKeys + :: KeyWallet + -> Contract { reg :: Array PublicKey, unreg :: Array PublicKey } +kwPubStakeKeys kw = + liftAff (getPrivateStakeKey kw) >>= case _ of + Nothing -> + pure mempty + Just (PrivateStakeKey stakeKey) -> do + queryHandle <- getQueryHandle + network <- asks _.networkId + let + pubStakeKey = PrivateKey.toPublicKey stakeKey + stakePkh = wrap $ PublicKey.hash pubStakeKey + resp <- liftAff $ queryHandle.getPubKeyHashDelegationsAndRewards + network + stakePkh + case resp of + Left err -> + liftEffect $ throw $ + "kwPubStakeKeys: getPubKeyHashDelegationsAndRewards call error: " + <> pprintClientError err + Right mStakeAccount -> + pure case mStakeAccount of + Nothing -> + { reg: mempty + , unreg: Array.singleton pubStakeKey + } + Just _ -> + { reg: Array.singleton pubStakeKey + , unreg: mempty + } diff --git a/src/Internal/Types/TxConstraints.purs b/src/Internal/Types/TxConstraints.purs index 0329a0f64..467d463f5 100644 --- a/src/Internal/Types/TxConstraints.purs +++ b/src/Internal/Types/TxConstraints.purs @@ -670,5 +670,9 @@ mustSatisfyAnyOf = mustNotBeValid :: Warn TxConstraintsDeprecated => TxConstraints mustNotBeValid = singleton $ MustNotBeValid -mustRegisterDrep :: Credential -> Maybe Anchor -> TxConstraints +mustRegisterDrep + :: Warn TxConstraintsDeprecated + => Credential + -> Maybe Anchor + -> TxConstraints mustRegisterDrep drepCred = singleton <<< MustRegisterDrep drepCred diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index a332353c4..296723b25 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -26,7 +26,11 @@ import Cardano.Wallet.Cip30 (Api) import Cardano.Wallet.Cip30.TypeSafe (APIError) import Cardano.Wallet.Cip30.TypeSafe as Cip30 import Cardano.Wallet.Cip95 (Api) as Cip95 -import Cardano.Wallet.Cip95.TypeSafe (getPubDrepKey) as Cip95 +import Cardano.Wallet.Cip95.TypeSafe + ( getPubDrepKey + , getRegisteredPubStakeKeys + , getUnregisteredPubStakeKeys + ) as Cip95 import Control.Monad.Error.Class (catchError, liftMaybe, throwError) import Ctl.Internal.Helpers (liftM) import Data.ByteArray (byteArrayToHex, hexToByteArray) @@ -85,6 +89,8 @@ type Cip30Wallet = , signTx :: Transaction -> Aff Transaction , signData :: Address -> RawBytes -> Aff DataSignature , getPubDrepKey :: Aff PublicKey + , getRegisteredPubStakeKeys :: Aff (Array PublicKey) + , getUnregisteredPubStakeKeys :: Aff (Array PublicKey) } mkCip30WalletAff @@ -106,6 +112,8 @@ mkCip30WalletAff conn95 = do , signTx: signTx connection , signData: signData connection , getPubDrepKey: getPubDrepKey conn95 + , getRegisteredPubStakeKeys: getRegisteredPubStakeKeys conn95 + , getUnregisteredPubStakeKeys: getUnregisteredPubStakeKeys conn95 } ------------------------------------------------------------------------------- @@ -247,9 +255,27 @@ getCip30Collateral conn (Coin requiredValue) = do getPubDrepKey :: Cip95.Api -> Aff PublicKey getPubDrepKey conn = do drepKeyHex <- handleApiError =<< Cip95.getPubDrepKey conn - let drepKey = PublicKey.fromRawBytes <<< wrap =<< hexToByteArray drepKeyHex - liftM - ( error $ "CIP-95 getPubDRepKey returned invalid DRep key: " - <> drepKeyHex - ) - drepKey + pubKeyFromHex drepKeyHex $ + "CIP-95 getPubDRepKey returned invalid DRep key: " + <> drepKeyHex + +getRegisteredPubStakeKeys :: Cip95.Api -> Aff (Array PublicKey) +getRegisteredPubStakeKeys conn = do + keys <- handleApiError =<< Cip95.getRegisteredPubStakeKeys conn + for keys \pubStakeKeyHex -> + pubKeyFromHex pubStakeKeyHex $ + "CIP-95 getRegisteredPubStakeKeys returned invalid key: " + <> pubStakeKeyHex + +getUnregisteredPubStakeKeys :: Cip95.Api -> Aff (Array PublicKey) +getUnregisteredPubStakeKeys conn = do + keys <- handleApiError =<< Cip95.getUnregisteredPubStakeKeys conn + for keys \pubStakeKeyHex -> + pubKeyFromHex pubStakeKeyHex $ + "CIP-95 getUnregisteredPubStakeKeys returned invalid key: " + <> pubStakeKeyHex + +pubKeyFromHex :: String -> String -> Aff PublicKey +pubKeyFromHex keyHex err = + liftM (error err) + (PublicKey.fromRawBytes <<< wrap =<< hexToByteArray keyHex) From 20ddd72b89deef702b0e995c652cfd3cd4a59092 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 25 Jul 2024 14:43:38 +0200 Subject: [PATCH 331/373] Update template --- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 6774a8e05..2fc406480 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -148,7 +148,7 @@ let additions = , "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cip95" - , version = "9d92a38cddd318245010286ae3966cd515d6952f" + , version = "ddcabbcf96ec6e292ca821c86eada1f828da0daf" } , cip95-typesafe = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index aacef95bf..d0bf80a44 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -379,11 +379,11 @@ let "cip95" = pkgs.stdenv.mkDerivation { name = "cip95"; - version = "9d92a38cddd318245010286ae3966cd515d6952f"; + version = "ddcabbcf96ec6e292ca821c86eada1f828da0daf"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip95"; - rev = "9d92a38cddd318245010286ae3966cd515d6952f"; - sha256 = "0wzyq1yni2nj46k97faffhjl7afvxlvjgmfbs5k4ga9a1vbd2ijm"; + rev = "ddcabbcf96ec6e292ca821c86eada1f828da0daf"; + sha256 = "1vhan4fx4yq2h2p4ilvid97qnfs6wx5nj6rjyvyj30s1wi1cb1rz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 057262e39f8e8991101b336a1201794386f17914 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 25 Jul 2024 18:17:08 +0200 Subject: [PATCH 332/373] Fix template --- flake.nix | 4 +- templates/ctl-scaffold/flake.lock | 33789 +++++--------------- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +- 5 files changed, 8609 insertions(+), 25194 deletions(-) diff --git a/flake.nix b/flake.nix index b1efdc69d..2893c1787 100644 --- a/flake.nix +++ b/flake.nix @@ -361,9 +361,9 @@ diff \ <(jq -S .dependencies <<< $ctlPackageJson) \ <(jq -S .dependencies <<< $ctlScaffoldPackageJson) - # We don't want to include `doctoc` in the template dev dependencies. + # We don't want to include some dev dependencies. diff \ - <(jq -S '.devDependencies | del(.jssha) | del(.blakejs) | del(.doctoc)' <<< $ctlPackageJson) \ + <(jq -S '.devDependencies | del(.jssha) | del(.blakejs) | del(.doctoc) | del(.globals) | del(.["@eslint/js"])' <<< $ctlPackageJson) \ <(jq -S .devDependencies <<< $ctlScaffoldPackageJson) touch $out ''; diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 3bc64d87a..9b93f8118 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -3,181 +3,11 @@ "CHaP": { "flake": false, "locked": { - "lastModified": 1719559353, - "narHash": "sha256-oVMUrDPUbVVsTWOsmtZkpHFr+oKPEezlSADm/s3A2/o=", + "lastModified": 1721915212, + "narHash": "sha256-itkbLG6DUX/L5XuoSXFPgPBf+9lFOM3ufc1T4BU4MYM=", "owner": "input-output-hk", "repo": "cardano-haskell-packages", - "rev": "35bd2072a08607a3b2e4b56cf9c243c449908017", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_10": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_11": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_12": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_13": { - "flake": false, - "locked": { - "lastModified": 1714517469, - "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_14": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_15": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_16": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_17": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_18": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_19": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", + "rev": "2126fa53c45842719ee38040f4d5bee8fb17a09d", "type": "github" }, "original": { @@ -241,11 +71,11 @@ "CHaP_5": { "flake": false, "locked": { - "lastModified": 1719449018, - "narHash": "sha256-SHrUrjiohM2RMe0DctdO3vDDA40tI8NVTKmwc3egaeY=", + "lastModified": 1719971647, + "narHash": "sha256-Q/u1ZklzmymTSSY6/F48rGsWewVYf108torqR9+nFJU=", "owner": "intersectmbo", "repo": "cardano-haskell-packages", - "rev": "6b048d1ad84220d47f870635e84df63590f5efa3", + "rev": "bfd6987c14410757c6cde47e6c45621e9664347f", "type": "github" }, "original": { @@ -255,74 +85,6 @@ "type": "github" } }, - "CHaP_6": { - "flake": false, - "locked": { - "lastModified": 1714517469, - "narHash": "sha256-Mxf4EHvuT3OfTwNIU2wvL0QQu5s9JsJ/IQKmadFyPs8=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "d42e1966e0d05b22c345fcaeb54ae5fc227665d4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_7": { - "flake": false, - "locked": { - "lastModified": 1713778255, - "narHash": "sha256-Z42YG0UR5vrOj+/Sy6ZoiV40mM5KpeN6+rmcfEvMU2Y=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "09ca4d3118cf1451d9e8612f6c40cc320ba1e469", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_8": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, - "CHaP_9": { - "flake": false, - "locked": { - "lastModified": 1703398734, - "narHash": "sha256-DVaL6dBqgGOOjr3kyHi3NgtD4UrwTVsSMLkpUToyPt4=", - "owner": "input-output-hk", - "repo": "cardano-haskell-packages", - "rev": "dbfa903050eb861fcbd0c22dd5a4746f68d6d42e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "repo", - "repo": "cardano-haskell-packages", - "type": "github" - } - }, "HTTP": { "flake": false, "locked": { @@ -355,7 +117,7 @@ "type": "github" } }, - "HTTP_11": { + "HTTP_2": { "flake": false, "locked": { "lastModified": 1451647621, @@ -371,7 +133,7 @@ "type": "github" } }, - "HTTP_12": { + "HTTP_3": { "flake": false, "locked": { "lastModified": 1451647621, @@ -387,7 +149,7 @@ "type": "github" } }, - "HTTP_13": { + "HTTP_4": { "flake": false, "locked": { "lastModified": 1451647621, @@ -403,7 +165,7 @@ "type": "github" } }, - "HTTP_14": { + "HTTP_5": { "flake": false, "locked": { "lastModified": 1451647621, @@ -419,7 +181,7 @@ "type": "github" } }, - "HTTP_15": { + "HTTP_6": { "flake": false, "locked": { "lastModified": 1451647621, @@ -435,7 +197,7 @@ "type": "github" } }, - "HTTP_16": { + "HTTP_7": { "flake": false, "locked": { "lastModified": 1451647621, @@ -451,7 +213,7 @@ "type": "github" } }, - "HTTP_17": { + "HTTP_8": { "flake": false, "locked": { "lastModified": 1451647621, @@ -467,7 +229,7 @@ "type": "github" } }, - "HTTP_18": { + "HTTP_9": { "flake": false, "locked": { "lastModified": 1451647621, @@ -483,307 +245,67 @@ "type": "github" } }, - "HTTP_19": { - "flake": false, + "agenix": { + "inputs": { + "nixpkgs": "nixpkgs_38" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "owner": "ryantm", + "repo": "agenix", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "ryantm", + "repo": "agenix", "type": "github" } }, - "HTTP_2": { - "flake": false, + "agenix-cli": { + "inputs": { + "flake-utils": "flake-utils_21", + "nixpkgs": "nixpkgs_39" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "HTTP_20": { - "flake": false, + "agenix-cli_2": { + "inputs": { + "flake-utils": "flake-utils_22", + "nixpkgs": "nixpkgs_41" + }, "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", + "lastModified": 1641404293, + "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", + "owner": "cole-h", + "repo": "agenix-cli", + "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", "type": "github" }, "original": { - "owner": "phadej", - "repo": "HTTP", + "owner": "cole-h", + "repo": "agenix-cli", "type": "github" } }, - "HTTP_21": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_22": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_23": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_24": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_25": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_3": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_4": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_5": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_6": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_7": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_8": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "HTTP_9": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "agenix": { - "inputs": { - "nixpkgs": "nixpkgs_37" - }, - "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", - "owner": "ryantm", - "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", - "type": "github" - }, - "original": { - "owner": "ryantm", - "repo": "agenix", - "type": "github" - } - }, - "agenix-cli": { - "inputs": { - "flake-utils": "flake-utils_21", - "nixpkgs": "nixpkgs_38" - }, - "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", - "type": "github" - }, - "original": { - "owner": "cole-h", - "repo": "agenix-cli", - "type": "github" - } - }, - "agenix-cli_2": { - "inputs": { - "flake-utils": "flake-utils_22", - "nixpkgs": "nixpkgs_40" - }, - "locked": { - "lastModified": 1641404293, - "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", - "owner": "cole-h", - "repo": "agenix-cli", - "rev": "77fccec4ed922a0f5f55ed964022b0db7d99f07d", - "type": "github" - }, - "original": { - "owner": "cole-h", - "repo": "agenix-cli", - "type": "github" - } - }, - "agenix-cli_3": { - "inputs": { - "flake-utils": "flake-utils_33", - "nixpkgs": "nixpkgs_69" - }, + "agenix-cli_3": { + "inputs": { + "flake-utils": "flake-utils_33", + "nixpkgs": "nixpkgs_70" + }, "locked": { "lastModified": 1641404293, "narHash": "sha256-0+QVY1sDhGF4hAN6m2FdKZgm9V1cuGGjY4aitRBnvKg=", @@ -800,7 +322,7 @@ }, "agenix_2": { "inputs": { - "nixpkgs": "nixpkgs_39" + "nixpkgs": "nixpkgs_40" }, "locked": { "lastModified": 1641576265, @@ -896,7 +418,7 @@ }, "agenix_6": { "inputs": { - "nixpkgs": "nixpkgs_68" + "nixpkgs": "nixpkgs_69" }, "locked": { "lastModified": 1641576265, @@ -966,7 +488,7 @@ "alejandra": { "inputs": { "flakeCompat": "flakeCompat", - "nixpkgs": "nixpkgs_63" + "nixpkgs": "nixpkgs_64" }, "locked": { "lastModified": 1646360966, @@ -1185,7 +707,7 @@ "hydra": "hydra_7", "n2c": "n2c_5", "nix": "nix_10", - "nixpkgs": "nixpkgs_57", + "nixpkgs": "nixpkgs_58", "nixpkgs-docker": "nixpkgs-docker", "nixpkgs-unstable": "nixpkgs-unstable_8", "nomad-driver-nix": "nomad-driver-nix_2", @@ -1285,7 +807,7 @@ "fenix": "fenix_4", "hydra": "hydra_6", "nix": "nix_7", - "nixpkgs": "nixpkgs_43", + "nixpkgs": "nixpkgs_44", "nixpkgs-unstable": "nixpkgs-unstable_7", "nomad": "nomad", "nomad-driver-nix": "nomad-driver-nix", @@ -1319,7 +841,7 @@ "fenix": "fenix_8", "hydra": "hydra_8", "nix": "nix_14", - "nixpkgs": "nixpkgs_72", + "nixpkgs": "nixpkgs_73", "nixpkgs-unstable": "nixpkgs-unstable_9", "nomad": "nomad_2", "nomad-driver-nix": "nomad-driver-nix_3", @@ -1483,177 +1005,26 @@ "type": "github" } }, - "blst": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_10": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_11": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_12": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_13": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_14": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_15": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_16": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_17": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" + "blockfrost_2": { + "inputs": { + "nixpkgs": "nixpkgs_2" }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_18": { - "flake": false, "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "lastModified": 1716466734, + "narHash": "sha256-h1LdfN/2KlD/XRjgj7rDNRInxSKZCOx6OF4jak/3c/E=", + "owner": "blockfrost", + "repo": "blockfrost-backend-ryo", + "rev": "7204204615be69b2f298ddf11f9a23dbbb184e55", "type": "github" }, "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", + "owner": "blockfrost", + "ref": "v2.0.3", + "repo": "blockfrost-backend-ryo", "type": "github" } }, - "blst_19": { + "blst": { "flake": false, "locked": { "lastModified": 1656163412, @@ -1687,57 +1058,6 @@ "type": "github" } }, - "blst_20": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_21": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, - "blst_22": { - "flake": false, - "locked": { - "lastModified": 1691598027, - "narHash": "sha256-oqljy+ZXJAXEB/fJtmB8rlAr4UXM+Z2OkDa20gpILNA=", - "owner": "supranational", - "repo": "blst", - "rev": "3dd0f804b1819e5d03fb22ca2e6fac105932043a", - "type": "github" - }, - "original": { - "owner": "supranational", - "ref": "v0.3.11", - "repo": "blst", - "type": "github" - } - }, "blst_3": { "flake": false, "locked": { @@ -1823,40 +1143,6 @@ "type": "github" } }, - "blst_8": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, - "blst_9": { - "flake": false, - "locked": { - "lastModified": 1656163412, - "narHash": "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY=", - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - }, - "original": { - "owner": "supranational", - "repo": "blst", - "rev": "03b5124029979755c752eec45f3c29674b558446", - "type": "github" - } - }, "byron-chain": { "flake": false, "locked": { @@ -1907,7 +1193,7 @@ "type": "github" } }, - "cabal-32_11": { + "cabal-32_2": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1924,7 +1210,7 @@ "type": "github" } }, - "cabal-32_12": { + "cabal-32_3": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1941,7 +1227,7 @@ "type": "github" } }, - "cabal-32_13": { + "cabal-32_4": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1958,7 +1244,7 @@ "type": "github" } }, - "cabal-32_14": { + "cabal-32_5": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1975,7 +1261,7 @@ "type": "github" } }, - "cabal-32_15": { + "cabal-32_6": { "flake": false, "locked": { "lastModified": 1603716527, @@ -1992,7 +1278,7 @@ "type": "github" } }, - "cabal-32_16": { + "cabal-32_7": { "flake": false, "locked": { "lastModified": 1603716527, @@ -2009,7 +1295,7 @@ "type": "github" } }, - "cabal-32_17": { + "cabal-32_8": { "flake": false, "locked": { "lastModified": 1603716527, @@ -2026,7 +1312,7 @@ "type": "github" } }, - "cabal-32_18": { + "cabal-32_9": { "flake": false, "locked": { "lastModified": 1603716527, @@ -2043,4076 +1329,4088 @@ "type": "github" } }, - "cabal-32_19": { + "cabal-34": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_2": { + "cabal-34_10": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_20": { + "cabal-34_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_21": { + "cabal-34_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_22": { + "cabal-34_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_23": { + "cabal-34_5": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1645834128, + "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_24": { + "cabal-34_6": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_25": { + "cabal-34_7": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_3": { + "cabal-34_8": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_4": { + "cabal-34_9": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.4", "repo": "cabal", "type": "github" } }, - "cabal-32_5": { + "cabal-36": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_6": { + "cabal-36_10": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_7": { + "cabal-36_2": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_8": { + "cabal-36_3": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-32_9": { + "cabal-36_4": { "flake": false, "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.2", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34": { + "cabal-36_5": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1669081697, + "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_10": { + "cabal-36_6": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_11": { + "cabal-36_7": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_12": { + "cabal-36_8": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_13": { + "cabal-36_9": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", "owner": "haskell", "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", "type": "github" }, "original": { "owner": "haskell", - "ref": "3.4", + "ref": "3.6", "repo": "cabal", "type": "github" } }, - "cabal-34_14": { - "flake": false, + "call-flake": { "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1687380775, + "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", + "owner": "divnix", + "repo": "call-flake", + "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "divnix", + "repo": "call-flake", "type": "github" } }, - "cabal-34_15": { - "flake": false, + "capkgs": { "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1697123727, + "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", + "owner": "input-output-hk", + "repo": "capkgs", + "rev": "b197e225592dfe38afb80c94b628d99968c0541d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "capkgs", "type": "github" } }, - "cabal-34_16": { - "flake": false, + "capsules": { + "inputs": { + "bitte": "bitte_2", + "iogo": "iogo", + "nixpkgs": "nixpkgs_52", + "ragenix": "ragenix_2" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1658156716, + "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "88348a415130cee29ce187140e6f57d94d843d54", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "cabal-34_17": { - "flake": false, + "capsules_2": { + "inputs": { + "bitte": "bitte_3", + "iogo": "iogo_2", + "nixpkgs": "nixpkgs_81", + "ragenix": "ragenix_5" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1659466315, + "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", + "owner": "input-output-hk", + "repo": "devshell-capsules", + "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "devshell-capsules", "type": "github" } }, - "cabal-34_18": { - "flake": false, + "cardano-automation": { + "inputs": { + "flake-utils": "flake-utils_4", + "haskellNix": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "tullia": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia" + ] + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "cabal-34_19": { - "flake": false, + "cardano-automation_2": { + "inputs": { + "flake-utils": "flake-utils_9", + "haskellNix": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "tullia": "tullia_2" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "cabal-34_2": { - "flake": false, + "cardano-automation_3": { + "inputs": { + "flake-utils": "flake-utils_16", + "haskellNix": [ + "ctl", + "cardano-node", + "haskellNix" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "tullia": "tullia_3" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1679408951, + "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "owner": "input-output-hk", + "repo": "cardano-automation", + "rev": "628f135d243d4a9e388c187e4c6179246038ee72", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-automation", "type": "github" } }, - "cabal-34_20": { + "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1720834069, + "narHash": "sha256-jWFjTUTpwAgvsSJsQ4INgKl/paR489n1si35GLtSkuU=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", "type": "github" } }, - "cabal-34_21": { + "cardano-configurations-8.1.1": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1692193634, + "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", "type": "github" } }, - "cabal-34_22": { + "cardano-configurations-8.7.3": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1702085095, + "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-configurations", + "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", "type": "github" } }, - "cabal-34_23": { - "flake": false, + "cardano-db-sync": { + "inputs": { + "CHaP": "CHaP_2", + "cardano-parts": "cardano-parts", + "flake-compat": "flake-compat_4", + "hackageNix": "hackageNix", + "haskellNix": "haskellNix", + "iohkNix": "iohkNix", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils" + }, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1707925775, + "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", + "owner": "intersectmbo", + "repo": "cardano-db-sync", + "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "intersectmbo", + "ref": "13.2.0.1", + "repo": "cardano-db-sync", "type": "github" } }, - "cabal-34_24": { + "cardano-db-sync-schema": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "cabal-34_25": { + "cardano-db-sync-schema-ng": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1694078776, + "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "sancho-1-1-0", + "repo": "cardano-db-sync", "type": "github" } }, - "cabal-34_3": { + "cardano-db-sync-service": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1688568916, + "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "owner": "input-output-hk", + "repo": "cardano-db-sync", + "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "13.1.1.3", + "repo": "cardano-db-sync", "type": "github" } }, - "cabal-34_4": { + "cardano-explorer-app": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1655291958, + "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "owner": "input-output-hk", + "repo": "cardano-explorer-app", + "rev": "a65938afe159adb1d1e2808305a7316738f5e634", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "fix-nix-system", + "repo": "cardano-explorer-app", "type": "github" } }, - "cabal-34_5": { + "cardano-graphql": { "flake": false, "locked": { - "lastModified": 1645834128, - "narHash": "sha256-wG3d+dOt14z8+ydz4SL7pwGfe7SiimxcD/LOuPCV6xM=", - "owner": "haskell", - "repo": "cabal", - "rev": "5ff598c67f53f7c4f48e31d722ba37172230c462", + "lastModified": 1657201429, + "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "owner": "input-output-hk", + "repo": "cardano-graphql", + "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-graphql", "type": "github" } }, - "cabal-34_6": { - "flake": false, + "cardano-mainnet-mirror": { + "inputs": { + "nixpkgs": "nixpkgs_15" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-34_7": { - "flake": false, + "cardano-mainnet-mirror_2": { + "inputs": { + "nixpkgs": "nixpkgs_25" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-34_8": { - "flake": false, + "cardano-mainnet-mirror_3": { + "inputs": { + "nixpkgs": "nixpkgs_34" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1642701714, + "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "owner": "input-output-hk", + "repo": "cardano-mainnet-mirror", + "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "nix", + "repo": "cardano-mainnet-mirror", "type": "github" } }, - "cabal-34_9": { - "flake": false, + "cardano-nix": { + "inputs": { + "blockfrost": "blockfrost_2", + "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", + "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", + "cardano-db-sync": "cardano-db-sync", + "cardano-node-8.1.1": "cardano-node-8.1.1", + "cardano-node-8.7.3": "cardano-node-8.7.3", + "devour-flake": "devour-flake", + "devshell": "devshell_4", + "flake-parts": "flake-parts_5", + "flake-root": "flake-root", + "hercules-ci-effects": "hercules-ci-effects", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "treefmt-nix": "treefmt-nix_3" + }, "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", + "lastModified": 1721651758, + "narHash": "sha256-pciT8ASgAovl6I0GsdiWnUhExNXPJtQZpD8dTcv1o60=", + "owner": "mlabs-haskell", + "repo": "cardano.nix", + "rev": "f6a7f0c43299783ca37bbdc73195c7289854e8da", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", + "owner": "mlabs-haskell", + "ref": "dshuiski/ogmios-v6.5.0", + "repo": "cardano.nix", "type": "github" } }, - "cabal-36": { - "flake": false, + "cardano-node": { + "inputs": { + "CHaP": "CHaP_5", + "cardano-automation": "cardano-automation_3", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", + "customConfig": "customConfig_3", + "em": "em_3", + "empty-flake": "empty-flake_4", + "flake-compat": "flake-compat_15", + "hackageNix": "hackageNix_4", + "haskellNix": "haskellNix_4", + "hostNixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "iohkNix": "iohkNix_4", + "nix2container": "nix2container_6", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_3", + "std": "std_5", + "utils": "utils_7" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1720029730, + "narHash": "sha256-ESE5/7XzXeIZldkYPbMd8CoMKQo9ghY1vOkhHpOj0K4=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "2820a63dc934c6d5b5f450b6c2543b81c6476696", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "9.0.0", + "repo": "cardano-node", "type": "github" } }, - "cabal-36_10": { - "flake": false, + "cardano-node-8.1.1": { + "inputs": { + "CHaP": "CHaP_3", + "cardano-automation": "cardano-automation", + "cardano-mainnet-mirror": "cardano-mainnet-mirror", + "customConfig": "customConfig", + "em": "em", + "empty-flake": "empty-flake_2", + "flake-compat": "flake-compat_6", + "hackageNix": "hackageNix_2", + "haskellNix": "haskellNix_2", + "hostNixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "iohkNix": "iohkNix_2", + "nix2container": "nix2container", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib", + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std" + ], + "tullia": "tullia", + "utils": "utils_3" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1687190129, + "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "6f79e5c3ea109a70cd01910368e011635767305a", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "intersectmbo", + "ref": "8.1.1", + "repo": "cardano-node", "type": "github" } }, - "cabal-36_11": { - "flake": false, + "cardano-node-8.7.3": { + "inputs": { + "CHaP": "CHaP_4", + "cardano-automation": "cardano-automation_2", + "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", + "customConfig": "customConfig_2", + "em": "em_2", + "empty-flake": "empty-flake_3", + "flake-compat": "flake-compat_10", + "hackageNix": "hackageNix_3", + "haskellNix": "haskellNix_3", + "hostNixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "iohkNix": "iohkNix_3", + "nix2container": "nix2container_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "nixpkgs-unstable" + ], + "ops-lib": "ops-lib_2", + "std": "std_3", + "utils": "utils_5" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1702654749, + "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", + "owner": "intersectmbo", + "repo": "cardano-node", + "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } + "owner": "intersectmbo", + "ref": "8.7.3", + "repo": "cardano-node", + "type": "github" + } }, - "cabal-36_12": { + "cardano-node-service": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1690209950, + "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "8.1.2", + "repo": "cardano-node", "type": "github" } }, - "cabal-36_13": { + "cardano-node_2": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1659625017, + "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", + "owner": "input-output-hk", + "repo": "cardano-node", + "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "1.35.3", + "repo": "cardano-node", "type": "github" } }, - "cabal-36_14": { - "flake": false, + "cardano-parts": { + "inputs": { + "auth-keys-hub": "auth-keys-hub", + "capkgs": "capkgs", + "cardano-db-sync-schema": "cardano-db-sync-schema", + "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", + "cardano-db-sync-service": "cardano-db-sync-service", + "cardano-node-service": "cardano-node-service", + "cardano-wallet-service": "cardano-wallet-service", + "colmena": "colmena", + "empty-flake": "empty-flake", + "flake-parts": "flake-parts_3", + "haskell-nix": "haskell-nix", + "inputs-check": "inputs-check", + "iohk-nix": "iohk-nix", + "iohk-nix-ng": "iohk-nix-ng", + "nix": "nix_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "nixpkgs-unstable": "nixpkgs-unstable_2", + "offchain-metadata-tools-service": "offchain-metadata-tools-service", + "sops-nix": "sops-nix", + "terraform-providers": "terraform-providers", + "terranix": "terranix", + "treefmt-nix": "treefmt-nix_2" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1697147999, + "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", + "owner": "input-output-hk", + "repo": "cardano-parts", + "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-parts", "type": "github" } }, - "cabal-36_15": { + "cardano-shell": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_16": { + "cardano-shell_10": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_17": { + "cardano-shell_2": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_18": { + "cardano-shell_3": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_19": { + "cardano-shell_4": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_2": { + "cardano-shell_5": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_20": { + "cardano-shell_6": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_21": { + "cardano-shell_7": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_22": { + "cardano-shell_8": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_23": { + "cardano-shell_9": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1608537748, + "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "owner": "input-output-hk", + "repo": "cardano-shell", + "rev": "9392c75087cb9a3d453998f4230930dea3a95725", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-shell", "type": "github" } }, - "cabal-36_24": { - "flake": false, - "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36_25": { - "flake": false, + "cardano-wallet": { + "inputs": { + "customConfig": "customConfig_4", + "ema": "ema", + "emanote": "emanote", + "flake-compat": "flake-compat_21", + "flake-utils": "flake-utils_40", + "haskellNix": "haskellNix_5", + "hostNixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "iohkNix": "iohkNix_5", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "nixpkgs-unstable" + ] + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1656674685, + "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "owner": "input-output-hk", + "repo": "cardano-wallet", + "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "ref": "v2022-07-01", + "repo": "cardano-wallet", "type": "github" } }, - "cabal-36_3": { + "cardano-wallet-service": { "flake": false, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1689751896, + "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", + "owner": "cardano-foundation", + "repo": "cardano-wallet", + "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "cardano-foundation", + "ref": "v2023-07-18", + "repo": "cardano-wallet", "type": "github" } }, - "cabal-36_4": { - "flake": false, + "cardano-world": { + "inputs": { + "bitte": "bitte", + "bitte-cells": "bitte-cells", + "byron-chain": "byron-chain", + "capsules": "capsules_2", + "cardano-db-sync": [ + "ctl", + "db-sync" + ], + "cardano-explorer-app": "cardano-explorer-app", + "cardano-graphql": "cardano-graphql", + "cardano-node": "cardano-node_2", + "cardano-wallet": "cardano-wallet", + "data-merge": "data-merge_3", + "flake-compat": "flake-compat_22", + "hackage": "hackage_4", + "haskell-nix": "haskell-nix_3", + "iohk-nix": "iohk-nix_2", + "n2c": "n2c_6", + "nix-inclusive": "nix-inclusive", + "nixpkgs": "nixpkgs_92", + "nixpkgs-haskell": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "ogmios": "ogmios", + "std": "std_7", + "tullia": "tullia_4" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1662508244, + "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "owner": "input-output-hk", + "repo": "cardano-world", + "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cardano-world", "type": "github" } }, - "cabal-36_5": { - "flake": false, + "cicero": { + "inputs": { + "alejandra": "alejandra", + "data-merge": "data-merge_2", + "devshell": "devshell_12", + "driver": "driver", + "follower": "follower", + "haskell-nix": "haskell-nix_2", + "inclusive": "inclusive_9", + "nix": "nix_13", + "nix-cache-proxy": "nix-cache-proxy", + "nixpkgs": "nixpkgs_68", + "poetry2nix": "poetry2nix", + "utils": "utils_21" + }, "locked": { - "lastModified": 1669081697, - "narHash": "sha256-I5or+V7LZvMxfbYgZATU4awzkicBwwok4mVoje+sGmU=", - "owner": "haskell", - "repo": "cabal", - "rev": "8fd619e33d34924a94e691c5fea2c42f0fc7f144", + "lastModified": 1647522107, + "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "owner": "input-output-hk", + "repo": "cicero", + "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "input-output-hk", + "repo": "cicero", "type": "github" } }, - "cabal-36_6": { - "flake": false, + "colmena": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "nixpkgs" + ], + "stable": "stable" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1684127108, + "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", + "owner": "zhaofengli", + "repo": "colmena", + "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "zhaofengli", + "ref": "v0.4.0", + "repo": "colmena", "type": "github" } }, - "cabal-36_7": { - "flake": false, + "crane": { + "inputs": { + "flake-compat": "flake-compat_12", + "flake-utils": "flake-utils_14", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1676162383, + "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", + "owner": "ipetkov", + "repo": "crane", + "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "ipetkov", + "repo": "crane", "type": "github" } }, - "cabal-36_8": { - "flake": false, + "crystal": { + "inputs": { + "ameba-src": "ameba-src", + "bdwgc-src": "bdwgc-src", + "crystal-aarch64-darwin": "crystal-aarch64-darwin", + "crystal-src": "crystal-src", + "crystal-x86_64-darwin": "crystal-x86_64-darwin", + "crystal-x86_64-linux": "crystal-x86_64-linux", + "crystalline-src": "crystalline-src", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_3" + }, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "lastModified": 1683429373, + "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", + "owner": "manveru", + "repo": "crystal-flake", + "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", "type": "github" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", + "owner": "manveru", + "repo": "crystal-flake", "type": "github" } }, - "cabal-36_9": { + "crystal-aarch64-darwin": { "flake": false, "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "call-flake": { + "crystal-src": { + "flake": false, "locked": { - "lastModified": 1687380775, - "narHash": "sha256-bmhE1TmrJG4ba93l9WQTLuYM53kwGQAjYHRvHOeuxWU=", - "owner": "divnix", - "repo": "call-flake", - "rev": "74061f6c241227cd05e79b702db9a300a2e4131a", + "lastModified": 1681995387, + "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", + "owner": "crystal-lang", + "repo": "crystal", + "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", "type": "github" }, "original": { - "owner": "divnix", - "repo": "call-flake", + "owner": "crystal-lang", + "ref": "1.8.1", + "repo": "crystal", "type": "github" } }, - "capkgs": { + "crystal-x86_64-darwin": { + "flake": false, "locked": { - "lastModified": 1697123727, - "narHash": "sha256-uSXZAELJF5EfivH9qyLssBUAvhcf3RM9sKhD3W2mdhc=", - "owner": "input-output-hk", - "repo": "capkgs", - "rev": "b197e225592dfe38afb80c94b628d99968c0541d", - "type": "github" + "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" }, "original": { - "owner": "input-output-hk", - "repo": "capkgs", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" } }, - "capsules": { - "inputs": { - "bitte": "bitte_2", - "iogo": "iogo", - "nixpkgs": "nixpkgs_51", - "ragenix": "ragenix_2" - }, + "crystal-x86_64-linux": { + "flake": false, "locked": { - "lastModified": 1658156716, - "narHash": "sha256-c1lH7PIN0rTKdGgosD5fCsHoAklAtGR/E1DFT2exIkM=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "88348a415130cee29ce187140e6f57d94d843d54", - "type": "github" + "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", - "type": "github" + "type": "tarball", + "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" } }, - "capsules_2": { - "inputs": { - "bitte": "bitte_3", - "iogo": "iogo_2", - "nixpkgs": "nixpkgs_80", - "ragenix": "ragenix_5" - }, + "crystalline-src": { + "flake": false, "locked": { - "lastModified": 1659466315, - "narHash": "sha256-VqR1PaC7lb4uT/s38lDNYvwhF2yQuD13KwGBoMCxF4g=", - "owner": "input-output-hk", - "repo": "devshell-capsules", - "rev": "125b8665c6139e3a127d243534a4f0ce36e3a335", + "lastModified": 1681549124, + "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", + "owner": "elbywan", + "repo": "crystalline", + "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "devshell-capsules", + "owner": "elbywan", + "ref": "v0.9.0", + "repo": "crystalline", "type": "github" } }, - "cardano-automation": { + "ctl": { "inputs": { - "flake-utils": "flake-utils_4", - "haskellNix": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix" - ], + "CHaP": "CHaP", + "blockfrost": "blockfrost", + "cardano-configurations": "cardano-configurations", + "cardano-nix": "cardano-nix", + "cardano-node": "cardano-node", + "db-sync": "db-sync", + "easy-purescript-nix": "easy-purescript-nix", + "flake-compat": "flake-compat_24", + "hackage-nix": "hackage-nix", + "haskell-nix": "haskell-nix_4", + "hercules-ci-effects": "hercules-ci-effects_2", + "iohk-nix": "iohk-nix_3", "nixpkgs": [ "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" + "haskell-nix", + "nixpkgs-unstable" ], - "tullia": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia" - ] + "nixpkgs-arion": "nixpkgs-arion", + "ogmios": "ogmios_2" }, "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", - "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "lastModified": 1721923839, + "narHash": "sha256-Z1uSTkhjxFrcW/lOo1SNkQ8JqQ0k5O9A4wetaquAYoI=", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "69db7bac9c1ee4fc443510a39943734500f6f2d3", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-automation", + "owner": "Plutonomicon", + "repo": "cardano-transaction-lib", + "rev": "69db7bac9c1ee4fc443510a39943734500f6f2d3", "type": "github" } }, - "cardano-automation_2": { - "inputs": { - "flake-utils": "flake-utils_9", - "haskellNix": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "tullia": "tullia_2" - }, + "customConfig": { "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-automation", + "repo": "empty-flake", "type": "github" } }, - "cardano-automation_3": { - "inputs": { - "flake-utils": "flake-utils_16", - "haskellNix": [ - "ctl", - "cardano-node", - "haskellNix" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "tullia": "tullia_3" - }, + "customConfig_2": { "locked": { - "lastModified": 1679408951, - "narHash": "sha256-xM78upkrXjRu/739V/IxFrA9m+6rvgOiolt4ReKLAog=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-automation", - "rev": "628f135d243d4a9e388c187e4c6179246038ee72", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-automation", + "repo": "empty-flake", "type": "github" } }, - "cardano-configurations": { - "flake": false, + "customConfig_3": { "locked": { - "lastModified": 1715909148, - "narHash": "sha256-xDGbfbZO8LAfCDLa44Ss231/ek8OIetFi+uANfAOQMk=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "692010ed0f454bfbb566c06443227c79e2f4dbab", + "repo": "empty-flake", "type": "github" } }, - "cardano-configurations-8.1.1": { - "flake": false, + "customConfig_4": { "locked": { - "lastModified": 1692193634, - "narHash": "sha256-cKw+iXKoMNrfN8M34/CtUelUZVLktVtzNzOYHI20dC0=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "9b69b59ef2fb2838855017f19af57b38c5d4abe4", + "repo": "empty-flake", "type": "github" } }, - "cardano-configurations-8.7.3": { - "flake": false, + "customConfig_5": { "locked": { - "lastModified": 1702085095, - "narHash": "sha256-IJChESftdO2tj2pRB+82xMaLP/RqyKHzttE7QMLqvBQ=", - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", - "type": "github" + "lastModified": 1, + "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", + "path": "./custom-config", + "type": "path" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-configurations", - "rev": "21249e0d5c68b4e8f3661b250aa8272a8785d678", - "type": "github" + "path": "./custom-config", + "type": "path" } }, - "cardano-db-sync": { + "data-merge": { "inputs": { - "CHaP": "CHaP_2", - "cardano-parts": "cardano-parts", - "flake-compat": "flake-compat_4", - "hackageNix": "hackageNix", - "haskellNix": "haskellNix", - "iohkNix": "iohkNix", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils" + "nixlib": "nixlib", + "yants": "yants_6" }, "locked": { - "lastModified": 1707925775, - "narHash": "sha256-z3YUrUImpV/wmJi+pfw6YuhBw+2Xd3jGlSWk7WI69/4=", - "owner": "intersectmbo", - "repo": "cardano-db-sync", - "rev": "ed3dc8bbb79f07c26ec43f10bad661b0bef3b915", + "lastModified": 1648237091, + "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", + "owner": "divnix", + "repo": "data-merge", + "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "13.2.0.1", - "repo": "cardano-db-sync", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-db-sync-schema": { - "flake": false, + "data-merge_2": { + "inputs": { + "nixlib": "nixlib_2" + }, "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "lastModified": 1635967744, + "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", + "owner": "divnix", + "repo": "data-merge", + "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.1.3", - "repo": "cardano-db-sync", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-db-sync-schema-ng": { - "flake": false, + "data-merge_3": { + "inputs": { + "nixlib": "nixlib_3", + "yants": "yants_8" + }, "locked": { - "lastModified": 1694078776, - "narHash": "sha256-QBnUDobTwWQmooCNr1WcaAzRbAKokon8lvAN6VQ1u34=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "b44eb735fe64fe4e8079935df722d0a32a41c2a4", + "lastModified": 1655854240, + "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", + "owner": "divnix", + "repo": "data-merge", + "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "sancho-1-1-0", - "repo": "cardano-db-sync", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-db-sync-service": { - "flake": false, + "db-sync": { + "inputs": { + "cardano-world": "cardano-world", + "customConfig": "customConfig_5", + "flake-compat": "flake-compat_23", + "haskellNix": "haskellNix_6", + "iohkNix": "iohkNix_6", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "utils": "utils_28" + }, "locked": { - "lastModified": 1688568916, - "narHash": "sha256-XTGTi3PzCcbLL+63JSXTe7mQmGKB0YgEoW1VpqdX2d0=", + "lastModified": 1670313550, + "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", "owner": "input-output-hk", "repo": "cardano-db-sync", - "rev": "6e69a80797f2d68423b25ca7787e81533b367e42", + "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "13.1.1.3", + "ref": "13.1.0.0", "repo": "cardano-db-sync", "type": "github" } }, - "cardano-explorer-app": { - "flake": false, + "deploy": { + "inputs": { + "fenix": "fenix_3", + "flake-compat": "flake-compat_17", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_8" + }, "locked": { - "lastModified": 1655291958, - "narHash": "sha256-OByt95cIJrA8pXsvCztsWmFcDaQaSYGohSOHoaZWKJs=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-explorer-app", - "rev": "a65938afe159adb1d1e2808305a7316738f5e634", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fix-nix-system", - "repo": "cardano-explorer-app", + "repo": "deploy-rs", "type": "github" } }, - "cardano-graphql": { - "flake": false, + "deploy_2": { + "inputs": { + "fenix": "fenix_5", + "flake-compat": "flake-compat_18", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_14" + }, "locked": { - "lastModified": 1657201429, - "narHash": "sha256-kx8Pe5HllnJceQHsBDB4hHcEQNSiq8D+OFFkRuuUFQE=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-graphql", - "rev": "ffb40028f51e23983c2ae27693bbdcd152208d9d", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-graphql", + "repo": "deploy-rs", "type": "github" } }, - "cardano-mainnet-mirror": { + "deploy_3": { "inputs": { - "nixpkgs": "nixpkgs_14" + "fenix": "fenix_7", + "flake-compat": "flake-compat_19", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "deploy", + "fenix", + "nixpkgs" + ], + "utils": "utils_22" }, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", + "lastModified": 1638318651, + "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "repo": "deploy-rs", + "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "repo": "deploy-rs", "type": "github" } }, - "cardano-mainnet-mirror_2": { - "inputs": { - "nixpkgs": "nixpkgs_24" - }, + "devour-flake": { + "flake": false, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1694098737, + "narHash": "sha256-O51F4YFOzlaQAc9b6xjkAqpvrvCtw/Os2M7TU0y4SKQ=", + "owner": "srid", + "repo": "devour-flake", + "rev": "30a34036b29b0d12989ef6c8be77aa949d85aef5", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "srid", + "repo": "devour-flake", "type": "github" } }, - "cardano-mainnet-mirror_3": { + "devshell": { "inputs": { - "nixpkgs": "nixpkgs_33" + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1642701714, - "narHash": "sha256-SR3luE+ePX6U193EKE/KSEuVzWAW0YsyPYDC4hOvALs=", - "owner": "input-output-hk", - "repo": "cardano-mainnet-mirror", - "rev": "819488be9eabbba6aaa7c931559bc584d8071e3d", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "nix", - "repo": "cardano-mainnet-mirror", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-nix": { + "devshell_10": { + "locked": { + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "devshell_11": { "inputs": { - "cardano-configurations-8.1.1": "cardano-configurations-8.1.1", - "cardano-configurations-8.7.3": "cardano-configurations-8.7.3", - "cardano-db-sync": "cardano-db-sync", - "cardano-node-8.1.1": "cardano-node-8.1.1", - "cardano-node-8.7.3": "cardano-node-8.7.3", - "devour-flake": "devour-flake", - "devshell": "devshell_4", - "flake-parts": "flake-parts_5", - "flake-root": "flake-root", - "hercules-ci-effects": "hercules-ci-effects", + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], "nixpkgs": [ "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", "nixpkgs" - ], - "pre-commit-hooks-nix": "pre-commit-hooks-nix", - "treefmt-nix": "treefmt-nix_3" + ] }, "locked": { - "lastModified": 1719347639, - "narHash": "sha256-scs7lMJQ4kLSIh9nahzoxk9L6BRyt2hYFbr5nIaqCWY=", - "owner": "mlabs-haskell", - "repo": "cardano.nix", - "rev": "5c8a8bffcee77189b72fea6123b2a2845d1e731e", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "mlabs-haskell", - "repo": "cardano.nix", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node": { + "devshell_12": { "inputs": { - "CHaP": "CHaP_5", - "cardano-automation": "cardano-automation_3", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_3", - "customConfig": "customConfig_3", - "em": "em_3", - "empty-flake": "empty-flake_4", - "flake-compat": "flake-compat_15", - "hackageNix": "hackageNix_4", - "haskellNix": "haskellNix_4", - "hostNixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "iohkNix": "iohkNix_4", - "nix2container": "nix2container_6", - "nixpkgs": [ - "ctl", - "cardano-node", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_3", - "std": "std_5", - "utils": "utils_7" + "flake-utils": "flake-utils_30", + "nixpkgs": "nixpkgs_65" }, "locked": { - "lastModified": 1715793024, - "narHash": "sha256-BoTWJKRc7gWSzptEuk32A/uV6MRkRx7vKdz34k8IPY8=", - "owner": "IntersectMBO", - "repo": "cardano-node", - "rev": "38c7f1cf2db12dff9c814ad10049f411a4b30448", + "lastModified": 1644227066, + "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", + "owner": "numtide", + "repo": "devshell", + "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", "type": "github" }, "original": { - "owner": "IntersectMBO", - "ref": "8.11.0-pre", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-8.1.1": { - "inputs": { - "CHaP": "CHaP_3", - "cardano-automation": "cardano-automation", - "cardano-mainnet-mirror": "cardano-mainnet-mirror", - "customConfig": "customConfig", - "em": "em", - "empty-flake": "empty-flake_2", - "flake-compat": "flake-compat_6", - "hackageNix": "hackageNix_2", - "haskellNix": "haskellNix_2", - "hostNixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "iohkNix": "iohkNix_2", - "nix2container": "nix2container", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib", - "std": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std" - ], - "tullia": "tullia", - "utils": "utils_3" - }, + "devshell_13": { "locked": { - "lastModified": 1687190129, - "narHash": "sha256-JCa9+QhZ2RVSIKkhz2WCZqTKCgdUSuezWS2YsQ5vhM4=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "6f79e5c3ea109a70cd01910368e011635767305a", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.1.1", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-8.7.3": { - "inputs": { - "CHaP": "CHaP_4", - "cardano-automation": "cardano-automation_2", - "cardano-mainnet-mirror": "cardano-mainnet-mirror_2", - "customConfig": "customConfig_2", - "em": "em_2", - "empty-flake": "empty-flake_3", - "flake-compat": "flake-compat_10", - "hackageNix": "hackageNix_3", - "haskellNix": "haskellNix_3", - "hostNixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "iohkNix": "iohkNix_3", - "nix2container": "nix2container_4", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "nixpkgs-unstable" - ], - "ops-lib": "ops-lib_2", - "std": "std_3", - "utils": "utils_5" - }, + "devshell_14": { "locked": { - "lastModified": 1702654749, - "narHash": "sha256-fIzSNSKWC7qMRjHUMHfrMnEzHiFu7ac/UUgfofXqaFY=", - "owner": "intersectmbo", - "repo": "cardano-node", - "rev": "a4a8119b59b1fbb9a69c79e1e6900e91292161e7", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "intersectmbo", - "ref": "8.7.3", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node-service": { - "flake": false, + "devshell_15": { "locked": { - "lastModified": 1690209950, - "narHash": "sha256-d0V8N+y/OarYv6GQycGXnbPly7GeJRBEeE1017qj9eI=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "d2d90b48c5577b4412d5c9c9968b55f8ab4b9767", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "8.1.2", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-node_2": { - "flake": false, + "devshell_16": { "locked": { - "lastModified": 1659625017, - "narHash": "sha256-4IrheFeoWfvkZQndEk4fGUkOiOjcVhcyXZ6IqmvkDgg=", - "owner": "input-output-hk", - "repo": "cardano-node", - "rev": "950c4e222086fed5ca53564e642434ce9307b0b9", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "1.35.3", - "repo": "cardano-node", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-parts": { - "inputs": { - "auth-keys-hub": "auth-keys-hub", - "capkgs": "capkgs", - "cardano-db-sync-schema": "cardano-db-sync-schema", - "cardano-db-sync-schema-ng": "cardano-db-sync-schema-ng", - "cardano-db-sync-service": "cardano-db-sync-service", - "cardano-node-service": "cardano-node-service", - "cardano-wallet-service": "cardano-wallet-service", - "colmena": "colmena", - "empty-flake": "empty-flake", - "flake-parts": "flake-parts_3", - "haskell-nix": "haskell-nix", - "inputs-check": "inputs-check", - "iohk-nix": "iohk-nix", - "iohk-nix-ng": "iohk-nix-ng", - "nix": "nix_2", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "nixpkgs-unstable": "nixpkgs-unstable_2", - "offchain-metadata-tools-service": "offchain-metadata-tools-service", - "sops-nix": "sops-nix", - "terraform-providers": "terraform-providers", - "terranix": "terranix", - "treefmt-nix": "treefmt-nix_2" - }, + "devshell_17": { "locked": { - "lastModified": 1697147999, - "narHash": "sha256-mbSWIcmDnt2mlETCNL8MI97nDH1lkOxIxFHKXXfOV28=", - "owner": "input-output-hk", - "repo": "cardano-parts", - "rev": "af8993ee12f78ddfcc31eefe006391669cb11462", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-parts", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell": { - "flake": false, + "devshell_18": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_10": { - "flake": false, + "devshell_19": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1658746384, + "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "owner": "numtide", + "repo": "devshell", + "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_11": { - "flake": false, + "devshell_2": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_12": { - "flake": false, + "devshell_20": { + "inputs": { + "flake-utils": "flake-utils_46", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1650900878, + "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", + "owner": "numtide", + "repo": "devshell", + "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_13": { - "flake": false, + "devshell_3": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "systems": "systems_2" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1686680692, + "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", + "owner": "numtide", + "repo": "devshell", + "rev": "fd6223370774dd9c33354e87a007004b5fd36442", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_14": { - "flake": false, + "devshell_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ], + "systems": "systems_3" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1695973661, + "narHash": "sha256-BP2H4c42GThPIhERtTpV1yCtwQHYHEKdRu7pjrmQAwo=", + "owner": "numtide", + "repo": "devshell", + "rev": "cd4e2fda3150dd2f689caeac07b7f47df5197c31", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_15": { - "flake": false, + "devshell_5": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1663445644, + "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", + "owner": "numtide", + "repo": "devshell", + "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_16": { - "flake": false, + "devshell_6": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_17": { - "flake": false, + "devshell_7": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1636119665, + "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "owner": "numtide", + "repo": "devshell", + "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_18": { - "flake": false, + "devshell_8": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1637098489, + "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "owner": "numtide", + "repo": "devshell", + "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_19": { - "flake": false, + "devshell_9": { "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1632436039, + "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "owner": "numtide", + "repo": "devshell", + "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "numtide", + "repo": "devshell", "type": "github" } }, - "cardano-shell_2": { - "flake": false, + "dmerge": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_20": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "dmerge_2": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, + "locked": { + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_21": { - "flake": false, + "dmerge_3": { + "inputs": { + "haumea": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea" + ], + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "cardano-shell_22": { - "flake": false, + "dmerge_4": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_23": { - "flake": false, + "dmerge_5": { + "inputs": { + "haumea": [ + "ctl", + "cardano-node", + "std", + "haumea" + ], + "nixlib": [ + "ctl", + "cardano-node", + "std", + "lib" + ], + "yants": [ + "ctl", + "cardano-node", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1686862774, + "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", + "owner": "divnix", + "repo": "dmerge", + "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "ref": "0.2.1", + "repo": "dmerge", "type": "github" } }, - "cardano-shell_24": { - "flake": false, + "dmerge_6": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_25": { - "flake": false, + "dmerge_7": { + "inputs": { + "nixlib": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ], + "yants": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "yants" + ] + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1659548052, + "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", + "owner": "divnix", + "repo": "data-merge", + "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "divnix", + "repo": "data-merge", "type": "github" } }, - "cardano-shell_3": { - "flake": false, + "driver": { + "inputs": { + "devshell": "devshell_13", + "inclusive": "inclusive_7", + "nix": "nix_12", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_18" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", + "lastModified": 1644418487, + "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "repo": "nomad-driver-nix", + "rev": "7f7adb6814b4bf926597e4b810b803140176122c", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-shell", + "repo": "nomad-driver-nix", "type": "github" } }, - "cardano-shell_4": { + "easy-purescript-nix": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1710161569, + "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" + "owner": "justinwoo", + "repo": "easy-purescript-nix", + "type": "github" } }, - "cardano-shell_5": { + "em": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "cardano-shell_6": { + "em_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1684791668, + "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", + "owner": "deepfire", + "repo": "em", + "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "cardano-shell_7": { + "em_3": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1685015066, + "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", + "owner": "deepfire", + "repo": "em", + "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "deepfire", + "repo": "em", "type": "github" } }, - "cardano-shell_8": { - "flake": false, + "ema": { + "inputs": { + "flake-compat": "flake-compat_20", + "flake-utils": "flake-utils_37", + "nixpkgs": "nixpkgs_83", + "pre-commit-hooks": "pre-commit-hooks" + }, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1646661767, + "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", + "owner": "srid", + "repo": "ema", + "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "srid", + "repo": "ema", "type": "github" } }, - "cardano-shell_9": { + "ema_2": { "flake": false, "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", + "lastModified": 1655231448, + "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", + "owner": "srid", + "repo": "ema", + "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", + "owner": "srid", + "ref": "multisite", + "repo": "ema", "type": "github" } }, - "cardano-wallet": { + "emanote": { "inputs": { - "customConfig": "customConfig_4", - "ema": "ema", - "emanote": "emanote", - "flake-compat": "flake-compat_21", - "flake-utils": "flake-utils_40", - "haskellNix": "haskellNix_5", - "hostNixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "iohkNix": "iohkNix_5", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "nixpkgs-unstable" - ] + "ema": "ema_2", + "flake-parts": "flake-parts_6", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_86", + "tailwind-haskell": "tailwind-haskell" }, "locked": { - "lastModified": 1656674685, - "narHash": "sha256-Uq02O758v7U61a9Ol6VzSDyx3S/CVHn0l/OUM1UYJkY=", + "lastModified": 1655823900, + "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", + "owner": "srid", + "repo": "emanote", + "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "emanote", + "type": "github" + } + }, + "empty-flake": { + "locked": { + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-wallet", - "rev": "c0ece6ad1868682b074708ffb810bdc2ea96934f", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "v2022-07-01", - "repo": "cardano-wallet", + "repo": "empty-flake", "type": "github" } }, - "cardano-wallet-service": { - "flake": false, + "empty-flake_2": { "locked": { - "lastModified": 1689751896, - "narHash": "sha256-ijflgIw+1FpLoxM4Rksf4MJvNqnEPAv3gNWE8zMuefU=", - "owner": "cardano-foundation", - "repo": "cardano-wallet", - "rev": "3f0d2f3abe706958fab8cdc528184068bd0453c9", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "owner": "input-output-hk", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { - "owner": "cardano-foundation", - "ref": "v2023-07-18", - "repo": "cardano-wallet", + "owner": "input-output-hk", + "repo": "empty-flake", "type": "github" } }, - "cardano-world": { - "inputs": { - "bitte": "bitte", - "bitte-cells": "bitte-cells", - "byron-chain": "byron-chain", - "capsules": "capsules_2", - "cardano-db-sync": [ - "ctl", - "db-sync" - ], - "cardano-explorer-app": "cardano-explorer-app", - "cardano-graphql": "cardano-graphql", - "cardano-node": "cardano-node_2", - "cardano-wallet": "cardano-wallet", - "data-merge": "data-merge_3", - "flake-compat": "flake-compat_22", - "hackage": "hackage_4", - "haskell-nix": "haskell-nix_3", - "iohk-nix": "iohk-nix_2", - "n2c": "n2c_6", - "nix-inclusive": "nix-inclusive", - "nixpkgs": "nixpkgs_91", - "nixpkgs-haskell": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "ogmios": "ogmios", - "std": "std_7", - "tullia": "tullia_4" - }, + "empty-flake_3": { "locked": { - "lastModified": 1662508244, - "narHash": "sha256-s8kroVd8VAZ/Lfv2gNt+RzIuSnWpQxAAL0y90tn1i0o=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cardano-world", - "rev": "0b6dcb5b61a0f7a2c048cb757463cbc0dfa0fe24", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cardano-world", + "repo": "empty-flake", "type": "github" } }, - "cicero": { - "inputs": { - "alejandra": "alejandra", - "data-merge": "data-merge_2", - "devshell": "devshell_12", - "driver": "driver", - "follower": "follower", - "haskell-nix": "haskell-nix_2", - "inclusive": "inclusive_9", - "nix": "nix_13", - "nix-cache-proxy": "nix-cache-proxy", - "nixpkgs": "nixpkgs_67", - "poetry2nix": "poetry2nix", - "utils": "utils_21" - }, + "empty-flake_4": { "locked": { - "lastModified": 1647522107, - "narHash": "sha256-Kti1zv+GXnbujkJ0ODB2ukq4Eb2RVOpudZ1xVDhhbes=", + "lastModified": 1630400035, + "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", "owner": "input-output-hk", - "repo": "cicero", - "rev": "0fd8642fe437f6129fe6914f032d3fdc7591d4fe", + "repo": "empty-flake", + "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "cicero", + "repo": "empty-flake", "type": "github" } }, - "colmena": { + "fenix": { "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", "nixpkgs": [ "ctl", "cardano-nix", "cardano-db-sync", "cardano-parts", + "auth-keys-hub", + "statix", "nixpkgs" ], - "stable": "stable" + "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1684127108, - "narHash": "sha256-01bfuSY4gnshhtqA1EJCw2CMsKkAx+dHS+sEpQ2+EAQ=", - "owner": "zhaofengli", - "repo": "colmena", - "rev": "5fdd743a11e7291bd8ac1e169d62ba6156c99be4", + "lastModified": 1645251813, + "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", + "owner": "nix-community", + "repo": "fenix", + "rev": "9892337b588c38ec59466a1c89befce464aae7f8", "type": "github" }, "original": { - "owner": "zhaofengli", - "ref": "v0.4.0", - "repo": "colmena", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "crane": { + "fenix_2": { "inputs": { - "flake-compat": "flake-compat_12", - "flake-utils": "flake-utils_14", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ], - "rust-overlay": "rust-overlay" + "nixpkgs": "nixpkgs_30", + "rust-analyzer-src": "rust-analyzer-src_2" }, "locked": { - "lastModified": 1676162383, - "narHash": "sha256-krUCKdz7ebHlFYm/A7IbKDnj2ZmMMm3yIEQcooqm7+E=", - "owner": "ipetkov", - "repo": "crane", - "rev": "6fb400ec631b22ccdbc7090b38207f7fb5cfb5f2", + "lastModified": 1677306201, + "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "0923f0c162f65ae40261ec940406049726cfeab4", "type": "github" }, "original": { - "owner": "ipetkov", - "repo": "crane", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "crystal": { + "fenix_3": { "inputs": { - "ameba-src": "ameba-src", - "bdwgc-src": "bdwgc-src", - "crystal-aarch64-darwin": "crystal-aarch64-darwin", - "crystal-src": "crystal-src", - "crystal-x86_64-darwin": "crystal-x86_64-darwin", - "crystal-x86_64-linux": "crystal-x86_64-linux", - "crystalline-src": "crystalline-src", - "flake-parts": "flake-parts", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_42", + "rust-analyzer-src": "rust-analyzer-src_3" }, "locked": { - "lastModified": 1683429373, - "narHash": "sha256-Mx5lwMyk2T40wFqOoYcJLs4srwO2UrsepTZhlHNuTrI=", - "owner": "manveru", - "repo": "crystal-flake", - "rev": "e7a443c20e2be6e5dd870586705dd27c91aa9c5c", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "manveru", - "repo": "crystal-flake", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "crystal-aarch64-darwin": { - "flake": false, - "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "fenix_4": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_4" }, - "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" - } - }, - "crystal-src": { - "flake": false, "locked": { - "lastModified": 1681995387, - "narHash": "sha256-t+1vM1m62UftCvfa90Dg6nqt6Zseh/GP/Gc1VfOa4+c=", - "owner": "crystal-lang", - "repo": "crystal", - "rev": "a59a3dbd738269d5aad6051c3834fc70f482f469", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "crystal-lang", - "ref": "1.8.1", - "repo": "crystal", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "crystal-x86_64-darwin": { - "flake": false, + "fenix_5": { + "inputs": { + "nixpkgs": "nixpkgs_55", + "rust-analyzer-src": "rust-analyzer-src_5" + }, "locked": { - "narHash": "sha256-NqYaZHM3kHAgYbO0RDJtA8eHqp4vVe4MBpisTOGrRVw=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-darwin-universal.tar.gz" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "crystal-x86_64-linux": { - "flake": false, + "fenix_6": { + "inputs": { + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs-unstable" + ], + "rust-analyzer-src": "rust-analyzer-src_6" + }, "locked": { - "narHash": "sha256-/Jk3uiglM/hzjygxmMUgVTvz+tuFFjBv8+uUIL05rXo=", - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "lastModified": 1660631227, + "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "type": "github" }, "original": { - "type": "tarball", - "url": "https://github.com/crystal-lang/crystal/releases/download/1.8.1/crystal-1.8.1-1-linux-x86_64.tar.gz" + "owner": "nix-community", + "repo": "fenix", + "type": "github" } }, - "crystalline-src": { - "flake": false, + "fenix_7": { + "inputs": { + "nixpkgs": "nixpkgs_71", + "rust-analyzer-src": "rust-analyzer-src_7" + }, "locked": { - "lastModified": 1681549124, - "narHash": "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c=", - "owner": "elbywan", - "repo": "crystalline", - "rev": "4ac0ae282c5f4172230fea1e93df51c2b380f475", + "lastModified": 1645165506, + "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", + "owner": "nix-community", + "repo": "fenix", + "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", "type": "github" }, "original": { - "owner": "elbywan", - "ref": "v0.9.0", - "repo": "crystalline", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "ctl": { + "fenix_8": { "inputs": { - "CHaP": "CHaP", - "blockfrost": "blockfrost", - "cardano-configurations": "cardano-configurations", - "cardano-nix": "cardano-nix", - "cardano-node": "cardano-node", - "db-sync": "db-sync", - "easy-purescript-nix": "easy-purescript-nix", - "flake-compat": "flake-compat_24", - "hackage-nix": "hackage-nix", - "haskell-nix": "haskell-nix_4", - "hercules-ci-effects": "hercules-ci-effects_2", - "iohk-nix": "iohk-nix_3", - "kupo-nixos": "kupo-nixos", "nixpkgs": [ "ctl", - "haskell-nix", + "db-sync", + "cardano-world", + "capsules", + "bitte", "nixpkgs-unstable" ], - "ogmios": "ogmios_2" + "rust-analyzer-src": "rust-analyzer-src_8" }, "locked": { - "lastModified": 1720721810, - "narHash": "sha256-Hr+nppz3Q8YtfEh6RYHGc8H3HxEC3mLC//T0n10B9pQ=", - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "64028db993083b09ff9875a59def48e2f84de04b", + "lastModified": 1649226351, + "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", + "owner": "nix-community", + "repo": "fenix", + "rev": "c7e184561fe843abb861cd7d22c23066987078e2", "type": "github" }, "original": { - "owner": "Plutonomicon", - "repo": "cardano-transaction-lib", - "rev": "64028db993083b09ff9875a59def48e2f84de04b", + "owner": "nix-community", + "repo": "fenix", "type": "github" } }, - "customConfig": { + "flake-compat": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "customConfig_2": { + "flake-compat_10": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "customConfig_3": { + "flake-compat_11": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "empty-flake", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "customConfig_4": { + "flake-compat_12": { + "flake": false, "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", - "type": "github" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "customConfig_5": { + "flake-compat_13": { + "flake": false, "locked": { - "lastModified": 1, - "narHash": "sha256-Zd5w1I1Dwt783Q4WuBuCpedcwG1DrIgQGqabyF87prM=", - "path": "./custom-config", - "type": "path" + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" }, "original": { - "path": "./custom-config", - "type": "path" + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" } }, - "data-merge": { - "inputs": { - "nixlib": "nixlib", - "yants": "yants_6" - }, + "flake-compat_14": { + "flake": false, "locked": { - "lastModified": 1648237091, - "narHash": "sha256-OtgcOt/CB0/9S0rh1eAog+AvAg9kF6GyAknyWOXiAZI=", - "owner": "divnix", - "repo": "data-merge", - "rev": "b21bcf7bd949ac92af3930ecb1d3df8786384722", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "data-merge_2": { - "inputs": { - "nixlib": "nixlib_2" - }, + "flake-compat_15": { + "flake": false, "locked": { - "lastModified": 1635967744, - "narHash": "sha256-01065dNad3BIepNzrpYuYInxq/ynqtGMSsIiNqjND7E=", - "owner": "divnix", - "repo": "data-merge", - "rev": "68bd71f980f75cf73bc5071982eddfe6bc089768", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "data-merge_3": { - "inputs": { - "nixlib": "nixlib_3", - "yants": "yants_8" - }, + "flake-compat_16": { + "flake": false, "locked": { - "lastModified": 1655854240, - "narHash": "sha256-j74ixD7Y0bF3h0fBJFKPR9botlrMu0fgG/YsiUKybko=", - "owner": "divnix", - "repo": "data-merge", - "rev": "0bbe0a68d4ee090b8bbad0c5e1e85060d2bdfe98", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "db-sync": { - "inputs": { - "cardano-world": "cardano-world", - "customConfig": "customConfig_5", - "flake-compat": "flake-compat_23", - "haskellNix": "haskellNix_6", - "iohkNix": "iohkNix_6", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "utils": "utils_28" - }, + "flake-compat_17": { + "flake": false, "locked": { - "lastModified": 1670313550, - "narHash": "sha256-Gkn/hyK0xiDJZY1O5JEwuosMzar+IskC9xxeBts+0H4=", - "owner": "input-output-hk", - "repo": "cardano-db-sync", - "rev": "1040fa9ec85fd75ce9f02dae2006170136793d02", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "13.1.0.0", - "repo": "cardano-db-sync", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "deploy": { - "inputs": { - "fenix": "fenix_3", - "flake-compat": "flake-compat_17", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_8" - }, + "flake-compat_18": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "deploy_2": { - "inputs": { - "fenix": "fenix_5", - "flake-compat": "flake-compat_18", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_14" - }, + "flake-compat_19": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", - "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "lastModified": 1627913399, + "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "deploy-rs", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "deploy_3": { - "inputs": { - "fenix": "fenix_7", - "flake-compat": "flake-compat_19", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "deploy", - "fenix", - "nixpkgs" - ], - "utils": "utils_22" - }, + "flake-compat_2": { + "flake": false, "locked": { - "lastModified": 1638318651, - "narHash": "sha256-YsYBMa8Chtb6ccGZOVStReiZ33ZNmi7kNPLf/Ua2kY8=", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", "owner": "input-output-hk", - "repo": "deploy-rs", - "rev": "1d3a4f4681a98479219c628165bb6b3a12eae843", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "deploy-rs", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "devour-flake": { + "flake-compat_20": { "flake": false, "locked": { - "lastModified": 1709858306, - "narHash": "sha256-Vey9n9hIlWiSAZ6CCTpkrL6jt4r2JvT2ik9wa2bjeC0=", - "owner": "srid", - "repo": "devour-flake", - "rev": "17b711b9deadbbc5629cb7d2b64cf86ae72af3fa", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { - "owner": "srid", - "repo": "devour-flake", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, + "flake-compat_21": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1635892615, + "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "eca47d3377946315596da653862d341ee5341318", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "repo": "flake-compat", "type": "github" } }, - "devshell_10": { + "flake-compat_22": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_11": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, + "flake-compat_23": { + "flake": false, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "devshell_12": { - "inputs": { - "flake-utils": "flake-utils_30", - "nixpkgs": "nixpkgs_64" - }, + "flake-compat_24": { + "flake": false, "locked": { - "lastModified": 1644227066, - "narHash": "sha256-FHcFZtpZEWnUh62xlyY3jfXAXHzJNEDLDzLsJxn+ve0=", - "owner": "numtide", - "repo": "devshell", - "rev": "7033f64dd9ef8d9d8644c5030c73913351d2b660", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_13": { + "flake-compat_25": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "devshell_14": { + "flake-compat_26": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_15": { + "flake-compat_3": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_16": { + "flake-compat_4": { + "flake": false, "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "devshell_17": { + "flake-compat_5": { + "flake": false, "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", - "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "devshell_18": { + "flake-compat_6": { + "flake": false, "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", - "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "lastModified": 1647532380, + "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "7da118186435255a30b5ffeabba9629c344c0bec", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "fixes", + "repo": "flake-compat", "type": "github" } }, - "devshell_19": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, + "flake-compat_7": { + "flake": false, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", - "owner": "numtide", - "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "lastModified": 1672831974, + "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "owner": "input-output-hk", + "repo": "flake-compat", + "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "input-output-hk", + "ref": "hkm/gitlab-fix", + "repo": "flake-compat", "type": "github" } }, - "devshell_2": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, + "flake-compat_8": { + "flake": false, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "edolstra", + "repo": "flake-compat", "type": "github" } }, - "devshell_20": { - "inputs": { - "flake-utils": "flake-utils_46", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "tullia", - "std", - "nixpkgs" - ] + "flake-compat_9": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1650900878, - "narHash": "sha256-qhNncMBSa9STnhiLfELEQpYC1L4GrYHNIzyCZ/pilsI=", - "owner": "numtide", - "repo": "devshell", - "rev": "d97df53b5ddaa1cfbea7cddbd207eb2634304733", + "lastModified": 1672152762, + "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "devshell_3": { + "flake-parts_2": { "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "systems": "systems_2" + "nixpkgs-lib": "nixpkgs-lib_2" }, "locked": { - "lastModified": 1686680692, - "narHash": "sha256-SsLZz3TDleraAiJq4EkmdyewSyiv5g0LZYc6vaLZOMQ=", - "owner": "numtide", - "repo": "devshell", - "rev": "fd6223370774dd9c33354e87a007004b5fd36442", + "lastModified": 1682984683, + "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "86684881e184f41aa322e653880e497b66429f3e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "devshell_4": { + "flake-parts_3": { "inputs": { - "flake-utils": "flake-utils_15", - "nixpkgs": [ - "ctl", - "cardano-nix", - "nixpkgs" - ] + "nixpkgs-lib": "nixpkgs-lib_3" }, "locked": { - "lastModified": 1713532798, - "narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", - "owner": "numtide", - "repo": "devshell", - "rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "hercules-ci", + "repo": "flake-parts", "type": "github" } }, - "devshell_5": { + "flake-parts_4": { "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ + "nixpkgs-lib": "nixpkgs-lib_4" + }, + "locked": { + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_5" + }, + "locked": { + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs": "nixpkgs_85" + }, + "locked": { + "lastModified": 1655570068, + "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_7": { + "inputs": { + "nixpkgs-lib": [ "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", + "hercules-ci-effects", "nixpkgs" ] }, "locked": { - "lastModified": 1663445644, - "narHash": "sha256-+xVlcK60x7VY1vRJbNUEAHi17ZuoQxAIH4S4iUFUGBA=", - "owner": "numtide", - "repo": "devshell", - "rev": "e3dc3e21594fe07bdb24bdf1c8657acaa4cb8f66", + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" + "id": "flake-parts", + "type": "indirect" } }, - "devshell_6": { + "flake-root": { "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", - "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "lastModified": 1692742795, + "narHash": "sha256-f+Y0YhVCIJ06LemO+3Xx00lIcqQxSKJHXT/yk1RTKxw=", + "owner": "srid", + "repo": "flake-root", + "rev": "d9a70d9c7a5fd7f3258ccf48da9335e9b47c3937", "type": "github" }, "original": { - "owner": "numtide", - "repo": "devshell", + "owner": "srid", + "repo": "flake-root", "type": "github" } }, - "devshell_7": { + "flake-utils": { "locked": { - "lastModified": 1636119665, - "narHash": "sha256-e11Z9PyH9hdgTm4Vyl8S5iTwrv0um6+srzb1Ba+YUHA=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", - "repo": "devshell", - "rev": "ab14b1a3cb253f58e02f5f849d621292fbf81fad", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { "owner": "numtide", - "repo": "devshell", + "repo": "flake-utils", "type": "github" } }, - "devshell_8": { + "flake-utils_10": { "locked": { - "lastModified": 1637098489, - "narHash": "sha256-IWBYLSNSENI/fTrXdYDhuCavxcgN9+RERrPM81f6DXY=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", - "repo": "devshell", - "rev": "e8c2d4967b5c498b12551d1bb49352dcf9efa3e4", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { "owner": "numtide", - "repo": "devshell", + "repo": "flake-utils", "type": "github" } }, - "devshell_9": { + "flake-utils_11": { "locked": { - "lastModified": 1632436039, - "narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", - "repo": "devshell", - "rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { "owner": "numtide", - "repo": "devshell", + "repo": "flake-utils", "type": "github" } }, - "dmerge": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "yants" - ] - }, + "flake-utils_12": { "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_2": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "flake-utils_13": { "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_3": { - "inputs": { - "haumea": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea" - ], - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, + "flake-utils_14": { "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_4": { + "flake-utils_15": { "inputs": { - "nixlib": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "yants" - ] + "systems": "systems_4" }, "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_5": { - "inputs": { - "haumea": [ - "ctl", - "cardano-node", - "std", - "haumea" - ], - "nixlib": [ - "ctl", - "cardano-node", - "std", - "lib" - ], - "yants": [ - "ctl", - "cardano-node", - "std", - "yants" - ] - }, + "flake-utils_16": { "locked": { - "lastModified": 1686862774, - "narHash": "sha256-ojGtRQ9pIOUrxsQEuEPerUkqIJEuod9hIflfNkY+9CE=", - "owner": "divnix", - "repo": "dmerge", - "rev": "9f7f7a8349d33d7bd02e0f2b484b1f076e503a96", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "divnix", - "ref": "0.2.1", - "repo": "dmerge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_6": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "yants" - ] - }, + "flake-utils_17": { "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "dmerge_7": { - "inputs": { - "nixlib": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ], - "yants": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "yants" - ] - }, + "flake-utils_18": { "locked": { - "lastModified": 1659548052, - "narHash": "sha256-fzI2gp1skGA8mQo/FBFrUAtY0GQkAIAaV/V127TJPyY=", - "owner": "divnix", - "repo": "data-merge", - "rev": "d160d18ce7b1a45b88344aa3f13ed1163954b497", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { - "owner": "divnix", - "repo": "data-merge", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "driver": { - "inputs": { - "devshell": "devshell_13", - "inclusive": "inclusive_7", - "nix": "nix_12", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_18" - }, + "flake-utils_19": { "locked": { - "lastModified": 1644418487, - "narHash": "sha256-nzFmmBYjNjWVy25bHLLmZECfwJm3nxcAr/mYVYxWggA=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "7f7adb6814b4bf926597e4b810b803140176122c", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix": { - "flake": false, + "flake-utils_2": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_10": { + "flake-utils_20": { "inputs": { - "flake-utils": "flake-utils_78" + "systems": "systems_5" }, "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_11": { - "inputs": { - "flake-utils": "flake-utils_80" - }, + "flake-utils_21": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_12": { - "inputs": { - "flake-utils": "flake-utils_82" - }, + "flake-utils_22": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_13": { - "inputs": { - "flake-utils": "flake-utils_86" - }, + "flake-utils_23": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_14": { - "inputs": { - "flake-utils": "flake-utils_92" - }, + "flake-utils_24": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_15": { - "inputs": { - "flake-utils": "flake-utils_94" - }, + "flake-utils_25": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_16": { - "inputs": { - "flake-utils": "flake-utils_98" - }, + "flake-utils_26": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_2": { - "inputs": { - "flake-utils": "flake-utils_48" - }, + "flake-utils_27": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_3": { - "inputs": { - "flake-utils": "flake-utils_50" - }, + "flake-utils_28": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_4": { - "inputs": { - "flake-utils": "flake-utils_52" - }, + "flake-utils_29": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_5": { - "inputs": { - "flake-utils": "flake-utils_54" - }, + "flake-utils_3": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_6": { - "inputs": { - "flake-utils": "flake-utils_58" - }, + "flake-utils_30": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_7": { - "inputs": { - "flake-utils": "flake-utils_64" - }, + "flake-utils_31": { "locked": { - "lastModified": 1710161569, - "narHash": "sha256-lcIRIOFCdIWEGyKyG/tB4KvxM9zoWuBRDxW+T+mvIb0=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "117fd96acb69d7d1727df95b6fde9d8715e031fc", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_8": { - "inputs": { - "flake-utils": "flake-utils_66" - }, + "flake-utils_32": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1610051610, + "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "easy-purescript-nix_9": { - "inputs": { - "flake-utils": "flake-utils_70" - }, + "flake-utils_33": { "locked": { - "lastModified": 1696584097, - "narHash": "sha256-a9Hhqf/Fi0FkjRTcQr3pYDhrO9A9tdOkaeVgD23Cdrk=", - "owner": "justinwoo", - "repo": "easy-purescript-nix", - "rev": "d5fe5f4b210a0e4bac42ae0c159596a49c5eb016", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "justinwoo", - "repo": "easy-purescript-nix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "em": { - "flake": false, + "flake-utils_34": { "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "em_2": { - "flake": false, + "flake-utils_35": { "locked": { - "lastModified": 1684791668, - "narHash": "sha256-JyPm0RiWCfy/8rs7wd/IRSWIz+bTkD78uxIMnKktU2g=", - "owner": "deepfire", - "repo": "em", - "rev": "302cdf6d654fb18baff0213bdfa41a653774585a", - "type": "github" + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "em_3": { - "flake": false, + "flake-utils_36": { "locked": { - "lastModified": 1685015066, - "narHash": "sha256-etAdEoYhtvjTw1ITh28WPNfwvvb5t/fpwCP6s7odSiQ=", - "owner": "deepfire", - "repo": "em", - "rev": "af69bb5c2ac2161434d8fea45f920f8f359587ce", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "deepfire", - "repo": "em", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ema": { - "inputs": { - "flake-compat": "flake-compat_20", - "flake-utils": "flake-utils_37", - "nixpkgs": "nixpkgs_82", - "pre-commit-hooks": "pre-commit-hooks" - }, + "flake-utils_37": { "locked": { - "lastModified": 1646661767, - "narHash": "sha256-5zxUr3nO4r04K5WGrW/+nW84qbOW8wNJLt902yQmyF4=", - "owner": "srid", - "repo": "ema", - "rev": "bcabc170b7de9cdd83b4bbcf59130b54933602ea", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "srid", - "repo": "ema", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "ema_2": { - "flake": false, + "flake-utils_38": { "locked": { - "lastModified": 1655231448, - "narHash": "sha256-LmAnOFKiqOWW9cQNZCbqFF0N1Mx073908voXz+4Fzic=", - "owner": "srid", - "repo": "ema", - "rev": "da5b29f03c1edfb7f947666a5a818fb97cc3c229", + "lastModified": 1619345332, + "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", "type": "github" }, "original": { - "owner": "srid", - "ref": "multisite", - "repo": "ema", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "emanote": { - "inputs": { - "ema": "ema_2", - "flake-parts": "flake-parts_6", - "haskell-flake": "haskell-flake", - "nixpkgs": "nixpkgs_85", - "tailwind-haskell": "tailwind-haskell" - }, + "flake-utils_39": { "locked": { - "lastModified": 1655823900, - "narHash": "sha256-YEDJxa2gPf2+GGyrkFz4EliCml1FyDualZtbbZEmljA=", - "owner": "srid", - "repo": "emanote", - "rev": "147528d9df81b881214652ce0cefec0b3d52965e", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { - "owner": "srid", - "repo": "emanote", + "owner": "numtide", + "ref": "v1.0.0", + "repo": "flake-utils", "type": "github" } }, - "empty-flake": { + "flake-utils_4": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "empty-flake_2": { + "flake-utils_40": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "empty-flake_3": { + "flake-utils_41": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "empty-flake_4": { + "flake-utils_42": { "locked": { - "lastModified": 1630400035, - "narHash": "sha256-MWaVOCzuFwp09wZIW9iHq5wWen5C69I940N1swZLEQ0=", - "owner": "input-output-hk", - "repo": "empty-flake", - "rev": "2040a05b67bf9a669ce17eca56beb14b4206a99a", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "empty-flake", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "auth-keys-hub", - "statix", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, + "flake-utils_43": { "locked": { - "lastModified": 1645251813, - "narHash": "sha256-cQ66tGjnZclBCS3nD26mZ5fUH+3/HnysGffBiWXUSHk=", - "owner": "nix-community", - "repo": "fenix", - "rev": "9892337b588c38ec59466a1c89befce464aae7f8", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_2": { - "inputs": { - "nixpkgs": "nixpkgs_29", - "rust-analyzer-src": "rust-analyzer-src_2" - }, + "flake-utils_44": { "locked": { - "lastModified": 1677306201, - "narHash": "sha256-VZ9x7qdTosFvVsrpgFHrtYfT6PU3yMIs7NRYn9ELapI=", - "owner": "nix-community", - "repo": "fenix", - "rev": "0923f0c162f65ae40261ec940406049726cfeab4", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_3": { - "inputs": { - "nixpkgs": "nixpkgs_41", - "rust-analyzer-src": "rust-analyzer-src_3" - }, + "flake-utils_45": { "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_4" - }, + "flake-utils_46": { "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_5": { - "inputs": { - "nixpkgs": "nixpkgs_54", - "rust-analyzer-src": "rust-analyzer-src_5" - }, + "flake-utils_47": { "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_6" - }, + "flake-utils_5": { "locked": { - "lastModified": 1660631227, - "narHash": "sha256-LSXmaDhbPw+3ww63Rx5ewBNWwCQIrzQvzphCFm5BRbU=", - "owner": "nix-community", - "repo": "fenix", - "rev": "41731c1a7ba1441c7544e8a0387aaf58e48f26b8", + "lastModified": 1679360468, + "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", + "owner": "hamishmack", + "repo": "flake-utils", + "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "hamishmack", + "ref": "hkm/nested-hydraJobs", + "repo": "flake-utils", "type": "github" } }, - "fenix_7": { - "inputs": { - "nixpkgs": "nixpkgs_70", - "rust-analyzer-src": "rust-analyzer-src_7" + "flake-utils_6": { + "locked": { + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_7": { "locked": { - "lastModified": 1645165506, - "narHash": "sha256-PClhTeC1EhkHUQQmP9XyiR7y1d6hlEc7QY8nN1GuAzQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "380b82e3d3381b32f11dfe024cb7d135e36d0168", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "fenix_8": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs-unstable" - ], - "rust-analyzer-src": "rust-analyzer-src_8" + "flake-utils_8": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_9": { "locked": { - "lastModified": 1649226351, - "narHash": "sha256-5fQwF5kYpPC7w0SOfdbE9Z7o5/i/dyo1BxMLVCA2h3E=", - "owner": "nix-community", - "repo": "fenix", - "rev": "c7e184561fe843abb861cd7d22c23066987078e2", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "numtide", + "repo": "flake-utils", "type": "github" } }, - "flake-compat": { + "flakeCompat": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "lastModified": 1641205782, + "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", "type": "github" }, "original": { @@ -6121,25714 +5419,9831 @@ "type": "github" } }, - "flake-compat_10": { - "flake": false, + "follower": { + "inputs": { + "devshell": "devshell_14", + "inclusive": "inclusive_8", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_19" + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1642008295, + "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "nomad-follower", + "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "repo": "nomad-follower", "type": "github" } }, - "flake-compat_11": { + "ghc-8.6.5-iohk": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_12": { + "ghc-8.6.5-iohk_10": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_13": { + "ghc-8.6.5-iohk_2": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_14": { + "ghc-8.6.5-iohk_3": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_15": { + "ghc-8.6.5-iohk_4": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_16": { + "ghc-8.6.5-iohk_5": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_17": { + "ghc-8.6.5-iohk_6": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_18": { + "ghc-8.6.5-iohk_7": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_19": { + "ghc-8.6.5-iohk_8": { "flake": false, "locked": { - "lastModified": 1627913399, - "narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "owner": "input-output-hk", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_2": { + "ghc-8.6.5-iohk_9": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1600920045, + "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "ghc", + "rev": "95713a6ecce4551240da7c96b6176f980af75cae", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "ref": "release/8.6.5-iohk", + "repo": "ghc", "type": "github" } }, - "flake-compat_20": { + "ghc910X": { "flake": false, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", - "type": "github" + "lastModified": 1714520650, + "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", + "ref": "ghc-9.10", + "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", + "revCount": 62663, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "ref": "ghc-9.10", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_21": { + "ghc911": { "flake": false, "locked": { - "lastModified": 1635892615, - "narHash": "sha256-harGbMZr4hzat2BWBU+Y5OYXlu+fVz7E4WeQzHi5o8A=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "eca47d3377946315596da653862d341ee5341318", - "type": "github" + "lastModified": 1714817013, + "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", + "ref": "refs/heads/master", + "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", + "revCount": 62816, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "input-output-hk", - "repo": "flake-compat", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_22": { + "ghc98X": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_23": { + "ghc98X_2": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", - "type": "github" + "lastModified": 1696643148, + "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", + "ref": "ghc-9.8", + "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", + "revCount": 61642, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", - "type": "github" + "ref": "ghc-9.8", + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_24": { + "ghc99": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_25": { + "ghc99_2": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "ref": "refs/heads/master", + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://gitlab.haskell.org/ghc/ghc" } }, - "flake-compat_26": { - "flake": false, + "gitignore": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-nix", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, - "flake-compat_27": { - "flake": false, + "gomod2nix": { + "inputs": { + "nixpkgs": "nixpkgs_18", + "utils": "utils_2" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "flake-compat_28": { - "flake": false, + "gomod2nix_2": { + "inputs": { + "nixpkgs": "nixpkgs_22", + "utils": "utils_4" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "flake-compat_29": { - "flake": false, + "gomod2nix_3": { + "inputs": { + "nixpkgs": "nixpkgs_31", + "utils": "utils_6" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_30": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1655245309, + "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", + "owner": "tweag", + "repo": "gomod2nix", + "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "tweag", + "repo": "gomod2nix", "type": "github" } }, - "flake-compat_31": { + "hackage": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1692145451, + "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "hackage.nix", + "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_32": { + "hackage-nix": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1721867175, + "narHash": "sha256-1yD5lI+LtM2bMjjREucK3Y1WcKXQw0N6b8xSJty7A5I=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "62bf49579c1b900d0a930d96040d65d49c7131a6", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_33": { + "hackageNix": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1702945378, + "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_34": { + "hackageNix_2": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1685492843, + "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "hackage.nix", + "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_35": { + "hackageNix_3": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1701303758, + "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "hackage.nix", + "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_36": { + "hackageNix_4": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1719794527, + "narHash": "sha256-qHo/KumtwAzPkfLWODu/6EFY/LeK+C7iPJyAUdT8tGA=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "da2a3bc9bd1b3dd41bb147279529c471c615fd3e", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_37": { + "hackage_2": { "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1646097829, + "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "hackage.nix", + "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_38": { + "hackage_3": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1655342080, + "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_39": { + "hackage_4": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1659489414, + "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", + "owner": "input-output-hk", + "repo": "hackage.nix", + "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_4": { + "hackage_5": { "flake": false, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", + "lastModified": 1650935983, + "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "repo": "hackage.nix", + "rev": "b65addc81b03406b3ee8b139549980591ed15be5", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "repo": "hackage.nix", "type": "github" } }, - "flake-compat_40": { - "flake": false, + "haskell-flake": { "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1654001497, + "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "srid", + "repo": "haskell-flake", "type": "github" } }, - "flake-compat_41": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" + "haskell-nix": { + "inputs": { + "HTTP": "HTTP", + "cabal-32": "cabal-32", + "cabal-34": "cabal-34", + "cabal-36": "cabal-36", + "cardano-shell": "cardano-shell", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", + "hackage": "hackage", + "hls-1.10": "hls-1.10", + "hls-2.0": "hls-2.0", + "hpc-coveralls": "hpc-coveralls", + "hydra": "hydra", + "iserv-proxy": "iserv-proxy", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003", + "nixpkgs-2105": "nixpkgs-2105", + "nixpkgs-2111": "nixpkgs-2111", + "nixpkgs-2205": "nixpkgs-2205", + "nixpkgs-2211": "nixpkgs-2211", + "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-unstable": "nixpkgs-unstable", + "old-ghc-nix": "old-ghc-nix", + "stackage": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "empty-flake" + ] }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_42": { - "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1692147008, + "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_43": { - "flake": false, + "haskell-nix_2": { + "inputs": { + "HTTP": "HTTP_6", + "cabal-32": "cabal-32_6", + "cabal-34": "cabal-34_6", + "cabal-36": "cabal-36_6", + "cardano-shell": "cardano-shell_6", + "flake-utils": "flake-utils_31", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", + "hackage": "hackage_2", + "hpc-coveralls": "hpc-coveralls_6", + "nix-tools": "nix-tools", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_6", + "nixpkgs-2105": "nixpkgs-2105_6", + "nixpkgs-2111": "nixpkgs-2111_6", + "nixpkgs-unstable": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "old-ghc-nix": "old-ghc-nix_6", + "stackage": "stackage_5" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1646097976, + "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_44": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" + "haskell-nix_3": { + "inputs": { + "HTTP": "HTTP_8", + "cabal-32": "cabal-32_8", + "cabal-34": "cabal-34_8", + "cabal-36": "cabal-36_8", + "cardano-shell": "cardano-shell_8", + "flake-utils": "flake-utils_42", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", + "hackage": [ + "ctl", + "db-sync", + "cardano-world", + "hackage" + ], + "hpc-coveralls": "hpc-coveralls_8", + "hydra": "hydra_10", + "nix-tools": "nix-tools_3", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_8", + "nixpkgs-2105": "nixpkgs-2105_8", + "nixpkgs-2111": "nixpkgs-2111_8", + "nixpkgs-2205": "nixpkgs-2205_6", + "nixpkgs-unstable": "nixpkgs-unstable_11", + "old-ghc-nix": "old-ghc-nix_8", + "stackage": "stackage_7" }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_45": { - "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1659439444, + "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_46": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_47": { - "flake": false, - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" + "haskell-nix_4": { + "inputs": { + "HTTP": "HTTP_10", + "cabal-32": "cabal-32_10", + "cabal-34": "cabal-34_10", + "cabal-36": "cabal-36_10", + "cardano-shell": "cardano-shell_10", + "flake-compat": "flake-compat_25", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", + "hackage": [ + "ctl", + "hackage-nix" + ], + "hls-1.10": "hls-1.10_6", + "hls-2.0": "hls-2.0_5", + "hls-2.2": "hls-2.2_4", + "hls-2.3": "hls-2.3_4", + "hls-2.4": "hls-2.4_4", + "hls-2.5": "hls-2.5_2", + "hls-2.6": "hls-2.6_2", + "hls-2.7": "hls-2.7_2", + "hls-2.8": "hls-2.8_2", + "hls-2.9": "hls-2.9", + "hpc-coveralls": "hpc-coveralls_10", + "hydra": "hydra_12", + "iserv-proxy": "iserv-proxy_6", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_10", + "nixpkgs-2105": "nixpkgs-2105_10", + "nixpkgs-2111": "nixpkgs-2111_10", + "nixpkgs-2205": "nixpkgs-2205_7", + "nixpkgs-2211": "nixpkgs-2211_6", + "nixpkgs-2305": "nixpkgs-2305_5", + "nixpkgs-2311": "nixpkgs-2311_2", + "nixpkgs-2405": "nixpkgs-2405", + "nixpkgs-unstable": "nixpkgs-unstable_13", + "old-ghc-nix": "old-ghc-nix_10", + "stackage": "stackage_9" }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_48": { - "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1721868640, + "narHash": "sha256-iOugjcRcgSNAfu+D9YQSV0yu7086k8MQuhd5Sx9/XMU=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "1e71885e0094c98df536a25155cafc577a4b47fd", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_49": { - "flake": false, - "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", - "type": "github" + "haskellNix": { + "inputs": { + "HTTP": "HTTP_2", + "cabal-32": "cabal-32_2", + "cabal-34": "cabal-34_2", + "cabal-36": "cabal-36_2", + "cardano-shell": "cardano-shell_2", + "flake-compat": "flake-compat_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", + "ghc98X": "ghc98X", + "ghc99": "ghc99", + "hackage": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "hackageNix" + ], + "hls-1.10": "hls-1.10_2", + "hls-2.0": "hls-2.0_2", + "hls-2.2": "hls-2.2", + "hls-2.3": "hls-2.3", + "hls-2.4": "hls-2.4", + "hpc-coveralls": "hpc-coveralls_2", + "hydra": "hydra_2", + "iserv-proxy": "iserv-proxy_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_2", + "nixpkgs-2105": "nixpkgs-2105_2", + "nixpkgs-2111": "nixpkgs-2111_2", + "nixpkgs-2205": "nixpkgs-2205_2", + "nixpkgs-2211": "nixpkgs-2211_2", + "nixpkgs-2305": "nixpkgs-2305_2", + "nixpkgs-unstable": "nixpkgs-unstable_3", + "old-ghc-nix": "old-ghc-nix_2", + "stackage": "stackage" }, - "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_5": { - "flake": false, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1701053834, + "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_50": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "haskellNix_2": { + "inputs": { + "HTTP": "HTTP_3", + "cabal-32": "cabal-32_3", + "cabal-34": "cabal-34_3", + "cabal-36": "cabal-36_3", + "cardano-shell": "cardano-shell_3", + "flake-compat": "flake-compat_7", + "flake-utils": "flake-utils_5", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", + "hackage": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "hackageNix" + ], + "hls-1.10": "hls-1.10_3", + "hpc-coveralls": "hpc-coveralls_3", + "hydra": "hydra_3", + "iserv-proxy": "iserv-proxy_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_3", + "nixpkgs-2105": "nixpkgs-2105_3", + "nixpkgs-2111": "nixpkgs-2111_3", + "nixpkgs-2205": "nixpkgs-2205_3", + "nixpkgs-2211": "nixpkgs-2211_3", + "nixpkgs-unstable": "nixpkgs-unstable_4", + "old-ghc-nix": "old-ghc-nix_3", + "stackage": "stackage_2" + }, + "locked": { + "lastModified": 1685495397, + "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_51": { - "flake": false, + "haskellNix_3": { + "inputs": { + "HTTP": "HTTP_4", + "cabal-32": "cabal-32_4", + "cabal-34": "cabal-34_4", + "cabal-36": "cabal-36_4", + "cardano-shell": "cardano-shell_4", + "flake-compat": "flake-compat_11", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", + "ghc98X": "ghc98X_2", + "ghc99": "ghc99_2", + "hackage": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "hackageNix" + ], + "hls-1.10": "hls-1.10_4", + "hls-2.0": "hls-2.0_3", + "hls-2.2": "hls-2.2_2", + "hls-2.3": "hls-2.3_2", + "hls-2.4": "hls-2.4_2", + "hpc-coveralls": "hpc-coveralls_4", + "hydra": "hydra_4", + "iserv-proxy": "iserv-proxy_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_4", + "nixpkgs-2105": "nixpkgs-2105_4", + "nixpkgs-2111": "nixpkgs-2111_4", + "nixpkgs-2205": "nixpkgs-2205_4", + "nixpkgs-2211": "nixpkgs-2211_4", + "nixpkgs-2305": "nixpkgs-2305_3", + "nixpkgs-unstable": "nixpkgs-unstable_5", + "old-ghc-nix": "old-ghc-nix_4", + "stackage": "stackage_3" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", + "lastModified": 1700441391, + "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "repo": "haskell.nix", + "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_52": { - "flake": false, + "haskellNix_4": { + "inputs": { + "HTTP": "HTTP_5", + "cabal-32": "cabal-32_5", + "cabal-34": "cabal-34_5", + "cabal-36": "cabal-36_5", + "cardano-shell": "cardano-shell_5", + "flake-compat": "flake-compat_16", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", + "ghc910X": "ghc910X", + "ghc911": "ghc911", + "hackage": [ + "ctl", + "cardano-node", + "hackageNix" + ], + "hls-1.10": "hls-1.10_5", + "hls-2.0": "hls-2.0_4", + "hls-2.2": "hls-2.2_3", + "hls-2.3": "hls-2.3_3", + "hls-2.4": "hls-2.4_3", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", + "hls-2.7": "hls-2.7", + "hls-2.8": "hls-2.8", + "hpc-coveralls": "hpc-coveralls_5", + "hydra": "hydra_5", + "iserv-proxy": "iserv-proxy_5", + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_5", + "nixpkgs-2105": "nixpkgs-2105_5", + "nixpkgs-2111": "nixpkgs-2111_5", + "nixpkgs-2205": "nixpkgs-2205_5", + "nixpkgs-2211": "nixpkgs-2211_5", + "nixpkgs-2305": "nixpkgs-2305_4", + "nixpkgs-2311": "nixpkgs-2311", + "nixpkgs-unstable": "nixpkgs-unstable_6", + "old-ghc-nix": "old-ghc-nix_5", + "stackage": "stackage_4" + }, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "lastModified": 1718797200, + "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "cb139fa956158397aa398186bb32dd26f7318784", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_53": { - "flake": false, + "haskellNix_5": { + "inputs": { + "HTTP": "HTTP_7", + "cabal-32": "cabal-32_7", + "cabal-34": "cabal-34_7", + "cabal-36": "cabal-36_7", + "cardano-shell": "cardano-shell_7", + "flake-utils": "flake-utils_41", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", + "hackage": "hackage_3", + "hpc-coveralls": "hpc-coveralls_7", + "hydra": "hydra_9", + "nix-tools": "nix-tools_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ], + "nixpkgs-2003": "nixpkgs-2003_7", + "nixpkgs-2105": "nixpkgs-2105_7", + "nixpkgs-2111": "nixpkgs-2111_7", + "nixpkgs-unstable": "nixpkgs-unstable_10", + "old-ghc-nix": "old-ghc-nix_7", + "stackage": "stackage_6" + }, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1655369909, + "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_54": { - "flake": false, + "haskellNix_6": { + "inputs": { + "HTTP": "HTTP_9", + "cabal-32": "cabal-32_9", + "cabal-34": "cabal-34_9", + "cabal-36": "cabal-36_9", + "cardano-shell": "cardano-shell_9", + "flake-utils": "flake-utils_47", + "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", + "hackage": "hackage_5", + "hpc-coveralls": "hpc-coveralls_9", + "hydra": "hydra_11", + "nix-tools": "nix-tools_4", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "nixpkgs-unstable" + ], + "nixpkgs-2003": "nixpkgs-2003_9", + "nixpkgs-2105": "nixpkgs-2105_9", + "nixpkgs-2111": "nixpkgs-2111_9", + "nixpkgs-unstable": "nixpkgs-unstable_12", + "old-ghc-nix": "old-ghc-nix_9", + "stackage": "stackage_8" + }, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1650936156, + "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", + "owner": "input-output-hk", + "repo": "haskell.nix", + "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "input-output-hk", + "repo": "haskell.nix", "type": "github" } }, - "flake-compat_55": { - "flake": false, + "haumea": { + "inputs": { + "nixpkgs": "nixpkgs_28" + }, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", "type": "github" } }, - "flake-compat_56": { - "flake": false, + "haumea_2": { + "inputs": { + "nixpkgs": [ + "ctl", + "cardano-node", + "std", + "lib" + ] + }, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "lastModified": 1685133229, + "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", + "owner": "nix-community", + "repo": "haumea", + "rev": "34dd58385092a23018748b50f9b23de6266dffc2", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nix-community", + "ref": "v0.2.2", + "repo": "haumea", "type": "github" } }, - "flake-compat_6": { - "flake": false, + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "ctl", + "cardano-nix", + "flake-parts" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1647532380, - "narHash": "sha256-wswAxyO8AJTH7d5oU8VK82yBCpqwA+p6kLgpb1f1PAY=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "7da118186435255a30b5ffeabba9629c344c0bec", + "lastModified": 1710396488, + "narHash": "sha256-yniBB5i1un44uzR4+luTWvZ6uGvsHSYIBiDZ8Xox4nQ=", + "owner": "mlabs-haskell", + "repo": "hercules-ci-effects", + "rev": "f5ed263ab0585dfb7b067301419fb80d64e8c021", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "fixes", - "repo": "flake-compat", + "owner": "mlabs-haskell", + "ref": "push-cache-effect", + "repo": "hercules-ci-effects", "type": "github" } }, - "flake-compat_7": { - "flake": false, + "hercules-ci-effects_2": { + "inputs": { + "flake-parts": "flake-parts_7", + "nixpkgs": "nixpkgs_99" + }, "locked": { - "lastModified": 1672831974, - "narHash": "sha256-z9k3MfslLjWQfnjBtEtJZdq3H7kyi2kQtUThfTgdRk0=", - "owner": "input-output-hk", - "repo": "flake-compat", - "rev": "45f2638735f8cdc40fe302742b79f248d23eb368", + "lastModified": 1719226092, + "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "hkm/gitlab-fix", - "repo": "flake-compat", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", "type": "github" } }, - "flake-compat_8": { + "hls-1.10": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-compat_9": { + "hls-1.10_2": { "flake": false, "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib" - }, + "hls-1.10_3": { + "flake": false, "locked": { - "lastModified": 1672152762, - "narHash": "sha256-U8iWWHgabN07zfbgedogMVWrEP1Zywyf3Yx3OYHSSgE=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "19e0f88324d90509141e192664ded98bb88ef9b2", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_2" - }, + "hls-1.10_4": { + "flake": false, "locked": { - "lastModified": 1682984683, - "narHash": "sha256-fSMthG+tp60AHhNmaHc4StT3ltfHkQsJtN8GhfLWmtI=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "86684881e184f41aa322e653880e497b66429f3e", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_3": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_3" - }, + "hls-1.10_5": { + "flake": false, "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_4": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_4" - }, + "hls-1.10_6": { + "flake": false, "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "lastModified": 1680000865, + "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "1.10.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_5": { - "inputs": { - "nixpkgs-lib": "nixpkgs-lib_5" - }, + "hls-2.0": { + "flake": false, "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_6": { - "inputs": { - "nixpkgs": "nixpkgs_84" - }, + "hls-2.0_2": { + "flake": false, "locked": { - "lastModified": 1655570068, - "narHash": "sha256-KUSd2a6KgYTHd2l3Goee/P+DrAC6n1Tau+7V68czSZU=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "6dbc77b9c0477f8a9a6a9081077bb38c6a3dbb3a", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "flake-parts", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-parts_7": { - "inputs": { - "nixpkgs-lib": [ - "ctl", - "hercules-ci-effects", - "nixpkgs" - ] - }, + "hls-2.0_3": { + "flake": false, "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "id": "flake-parts", - "type": "indirect" + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", + "type": "github" } }, - "flake-root": { + "hls-2.0_4": { + "flake": false, "locked": { - "lastModified": 1713493429, - "narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=", - "owner": "srid", - "repo": "flake-root", - "rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "srid", - "repo": "flake-root", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils": { + "hls-2.0_5": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1687698105, + "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "783905f211ac63edf982dd1889c671653327e441", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.0.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_10": { + "hls-2.2": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_100": { - "inputs": { - "systems": "systems_58" - }, + "hls-2.2_2": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_101": { - "inputs": { - "systems": "systems_59" - }, + "hls-2.2_3": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_102": { - "inputs": { - "systems": "systems_60" - }, + "hls-2.2_4": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1693064058, + "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.2.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_103": { - "inputs": { - "systems": "systems_61" - }, + "hls-2.3": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_104": { - "inputs": { - "systems": "systems_62" - }, + "hls-2.3_2": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_105": { - "inputs": { - "systems": "systems_63" - }, + "hls-2.3_3": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_106": { - "inputs": { - "systems": "systems_64" - }, + "hls-2.3_4": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1695910642, + "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.3.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_107": { - "inputs": { - "systems": "systems_65" - }, + "hls-2.4": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_11": { + "hls-2.4_2": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.4.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_12": { + "hls-2.4_3": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_13": { + "hls-2.4_4": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.4.0.1", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_14": { + "hls-2.5": { + "flake": false, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_15": { - "inputs": { - "systems": "systems_3" - }, + "hls-2.5_2": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_16": { + "hls-2.6": { + "flake": false, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_17": { + "hls-2.6_2": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.6.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_18": { + "hls-2.7": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_19": { + "hls-2.7_2": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1708965829, + "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.7.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_2": { + "hls-2.8": { + "flake": false, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_20": { - "inputs": { - "systems": "systems_4" - }, + "hls-2.8_2": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1715153580, + "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.8.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_21": { + "hls-2.9": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1718469202, + "narHash": "sha256-THXSz+iwB1yQQsr/PY151+2GvtoJnTIB2pIQ4OzfjD4=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "40891bccb235ebacce020b598b083eab9dda80f1", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "haskell", + "ref": "2.9.0.0", + "repo": "haskell-language-server", "type": "github" } }, - "flake-utils_22": { + "hpc-coveralls": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_23": { + "hpc-coveralls_10": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_24": { + "hpc-coveralls_2": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_25": { + "hpc-coveralls_3": { + "flake": false, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_26": { + "hpc-coveralls_4": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_27": { + "hpc-coveralls_5": { + "flake": false, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_28": { + "hpc-coveralls_6": { + "flake": false, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_29": { + "hpc-coveralls_7": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_3": { + "hpc-coveralls_8": { + "flake": false, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_30": { + "hpc-coveralls_9": { + "flake": false, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1607498076, + "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", + "owner": "sevanspowell", + "repo": "hpc-coveralls", + "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "sevanspowell", + "repo": "hpc-coveralls", "type": "github" } }, - "flake-utils_31": { + "hydra": { + "inputs": { + "nix": "nix", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "cardano-parts", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_32": { + "hydra_10": { + "inputs": { + "nix": "nix_18", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1610051610, - "narHash": "sha256-U9rPz/usA1/Aohhk7Cmc2gBrEEKRzcW4nwPWMPwja4Y=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3982c9903e93927c2164caa727cd3f6a0e6d14cc", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_33": { + "hydra_11": { + "inputs": { + "nix": "nix_19", + "nixpkgs": [ + "ctl", + "db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_34": { + "hydra_12": { + "inputs": { + "nix": "nix_20", + "nixpkgs": [ + "ctl", + "haskell-nix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_35": { + "hydra_2": { + "inputs": { + "nix": "nix_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_36": { + "hydra_3": { + "inputs": { + "nix": "nix_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_37": { - "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", - "type": "github" + "hydra_4": { + "inputs": { + "nix": "nix_5", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_38": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_39": { + "hydra_5": { + "inputs": { + "nix": "nix_6", + "nixpkgs": [ + "ctl", + "cardano-node", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "lastModified": 1671755331, + "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", + "owner": "NixOS", + "repo": "hydra", + "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", "type": "github" }, "original": { - "owner": "numtide", - "ref": "v1.0.0", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_4": { + "hydra_6": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "flake-utils_40": { + "hydra_7": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "flake-utils_41": { + "hydra_8": { + "inputs": { + "nix": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nix" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1631062883, + "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", + "owner": "kreisys", + "repo": "hydra", + "rev": "785326948be4b1cc2ce77435c806521565e9af45", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kreisys", + "ref": "hydra-server-includes", + "repo": "hydra", "type": "github" } }, - "flake-utils_42": { + "hydra_9": { + "inputs": { + "nix": "nix_17", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "haskellNix", + "hydra", + "nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1646878427, + "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", + "owner": "NixOS", + "repo": "hydra", + "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "id": "hydra", + "type": "indirect" } }, - "flake-utils_43": { + "incl": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "flake-utils_44": { + "incl_2": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "flake-utils_45": { + "incl_3": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "haumea", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "flake-utils_46": { + "incl_4": { + "inputs": { + "nixlib": [ + "ctl", + "cardano-node", + "std", + "lib" + ] + }, "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "lastModified": 1669263024, + "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", + "owner": "divnix", + "repo": "incl", + "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "divnix", + "repo": "incl", "type": "github" } }, - "flake-utils_47": { + "inclusive": { + "inputs": { + "stdlib": "stdlib" + }, "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_48": { + "inclusive_10": { "inputs": { - "systems": "systems_6" + "stdlib": "stdlib_10" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_49": { + "inclusive_11": { "inputs": { - "systems": "systems_7" + "stdlib": "stdlib_11" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_5": { + "inclusive_12": { + "inputs": { + "stdlib": "stdlib_12" + }, "locked": { - "lastModified": 1679360468, - "narHash": "sha256-LGnza3cfXF10Biw3ZTg0u9o9t7s680Ww200t5KkHTh8=", - "owner": "hamishmack", - "repo": "flake-utils", - "rev": "e1ea268ff47ad475443dbabcd54744b4e5b9d4f5", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "hamishmack", - "ref": "hkm/nested-hydraJobs", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_50": { + "inclusive_2": { "inputs": { - "systems": "systems_8" + "stdlib": "stdlib_2" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_51": { + "inclusive_3": { "inputs": { - "systems": "systems_9" + "stdlib": "stdlib_3" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_52": { + "inclusive_4": { "inputs": { - "systems": "systems_10" + "stdlib": "stdlib_4" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_53": { + "inclusive_5": { "inputs": { - "systems": "systems_11" + "stdlib": "stdlib_5" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_54": { + "inclusive_6": { "inputs": { - "systems": "systems_12" + "stdlib": "stdlib_6" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_55": { + "inclusive_7": { "inputs": { - "systems": "systems_13" + "stdlib": "stdlib_7" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_56": { + "inclusive_8": { "inputs": { - "systems": "systems_14" + "stdlib": "stdlib_8" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_57": { + "inclusive_9": { "inputs": { - "systems": "systems_15" + "stdlib": "stdlib_9" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", + "owner": "input-output-hk", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "nix-inclusive", "type": "github" } }, - "flake-utils_58": { + "inputs-check": { "inputs": { - "systems": "systems_16" + "flake-parts": "flake-parts_4", + "nixpkgs": "nixpkgs_7" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1692633913, + "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", + "owner": "input-output-hk", + "repo": "inputs-check", + "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "inputs-check", "type": "github" } }, - "flake-utils_59": { + "iogo": { "inputs": { - "systems": "systems_17" + "devshell": "devshell_8", + "inclusive": "inclusive_4", + "nixpkgs": "nixpkgs_51", + "utils": "utils_13" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1652212694, + "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "e465975aa368b2d919e865f71eeed02828e55471", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "bitte-iogo", "type": "github" } }, - "flake-utils_6": { + "iogo_2": { + "inputs": { + "devshell": "devshell_18", + "inclusive": "inclusive_12", + "nixpkgs": "nixpkgs_80", + "utils": "utils_27" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "lastModified": 1658302707, + "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", + "owner": "input-output-hk", + "repo": "bitte-iogo", + "rev": "8751660009202bc95ea3a29e304c393c140a4231", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "bitte-iogo", "type": "github" } }, - "flake-utils_60": { + "iohk-nix": { "inputs": { - "systems": "systems_18" + "blst": "blst", + "nixpkgs": "nixpkgs_8", + "secp256k1": "secp256k1", + "sodium": "sodium" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1691469905, + "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", "type": "github" } }, - "flake-utils_61": { + "iohk-nix-ng": { "inputs": { - "systems": "systems_19" + "blst": "blst_2", + "nixpkgs": "nixpkgs_9", + "secp256k1": "secp256k1_2", + "sodium": "sodium_2" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1696471795, + "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_62": { + "iohk-nix_2": { "inputs": { - "systems": "systems_20" + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "nixpkgs" + ] }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1658222743, + "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_63": { + "iohk-nix_3": { "inputs": { - "systems": "systems_21" + "blst": "blst_7", + "nixpkgs": [ + "ctl", + "nixpkgs" + ], + "secp256k1": "secp256k1_7", + "sodium": "sodium_7" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1721825987, + "narHash": "sha256-PPcma4tjozwXJAWf+YtHUQUulmxwulVlwSQzKItx/n8=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "eb61f2c14e1f610ec59117ad40f8690cddbf80cb", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_64": { + "iohkNix": { "inputs": { - "systems": "systems_22" + "blst": "blst_3", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-db-sync", + "nixpkgs" + ], + "secp256k1": "secp256k1_3", + "sodium": "sodium_3" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1698999258, + "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_65": { + "iohkNix_2": { "inputs": { - "systems": "systems_23" + "blst": "blst_4", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "nixpkgs" + ], + "secp256k1": "secp256k1_4", + "sodium": "sodium_4" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1684223806, + "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_66": { + "iohkNix_3": { "inputs": { - "systems": "systems_24" + "blst": "blst_5", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "nixpkgs" + ], + "secp256k1": "secp256k1_5", + "sodium": "sodium_5" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1698746924, + "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_67": { + "iohkNix_4": { "inputs": { - "systems": "systems_25" + "blst": "blst_6", + "nixpkgs": [ + "ctl", + "cardano-node", + "nixpkgs" + ], + "secp256k1": "secp256k1_6", + "sodium": "sodium_6" }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1719237167, + "narHash": "sha256-ifW5Jfwu/iwYs0r7f8AdiWDQK+Pr1gZLz+p5u8OtOgo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "577f4d5072945a88dda6f5cfe205e6b4829a0423", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_68": { + "iohkNix_5": { "inputs": { - "systems": "systems_26" + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "cardano-wallet", + "nixpkgs" + ] }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1653579289, + "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_69": { + "iohkNix_6": { "inputs": { - "systems": "systems_27" + "nixpkgs": [ + "ctl", + "db-sync", + "nixpkgs" + ] }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1667394105, + "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", + "owner": "input-output-hk", + "repo": "iohk-nix", + "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "input-output-hk", + "repo": "iohk-nix", "type": "github" } }, - "flake-utils_7": { + "iserv-proxy": { + "flake": false, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", - "type": "github" + "lastModified": 1688517130, + "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", + "ref": "hkm/remote-iserv", + "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", + "revCount": 13, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "flake-utils_70": { - "inputs": { - "systems": "systems_28" - }, + "iserv-proxy_2": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "flake-utils_71": { - "inputs": { - "systems": "systems_29" - }, + "iserv-proxy_3": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" + "lastModified": 1670983692, + "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", + "ref": "hkm/remote-iserv", + "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", + "revCount": 10, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "flake-utils_72": { - "inputs": { - "systems": "systems_30" - }, + "iserv-proxy_4": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" + "lastModified": 1691634696, + "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", + "ref": "hkm/remote-iserv", + "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", + "revCount": 14, + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" }, "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" + "ref": "hkm/remote-iserv", + "type": "git", + "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" } }, - "flake-utils_73": { - "inputs": { - "systems": "systems_31" - }, + "iserv-proxy_5": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", "type": "github" } }, - "flake-utils_74": { - "inputs": { - "systems": "systems_32" - }, + "iserv-proxy_6": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1717479972, + "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", + "owner": "stable-haskell", + "repo": "iserv-proxy", + "rev": "2ed34002247213fc435d0062350b91bab920626e", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "stable-haskell", + "ref": "iserv-syms", + "repo": "iserv-proxy", "type": "github" } }, - "flake-utils_75": { - "inputs": { - "systems": "systems_33" - }, + "lib": { "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1694306727, + "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "flake-utils_76": { - "inputs": { - "systems": "systems_34" - }, + "lowdown-src": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_77": { - "inputs": { - "systems": "systems_35" - }, + "lowdown-src_10": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_78": { - "inputs": { - "systems": "systems_36" - }, + "lowdown-src_11": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_79": { - "inputs": { - "systems": "systems_37" - }, + "lowdown-src_12": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_8": { + "lowdown-src_13": { + "flake": false, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_80": { - "inputs": { - "systems": "systems_38" - }, + "lowdown-src_14": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_81": { - "inputs": { - "systems": "systems_39" - }, + "lowdown-src_15": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_82": { - "inputs": { - "systems": "systems_40" - }, + "lowdown-src_16": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_83": { - "inputs": { - "systems": "systems_41" - }, + "lowdown-src_17": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_84": { - "inputs": { - "systems": "systems_42" - }, + "lowdown-src_18": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_85": { - "inputs": { - "systems": "systems_43" - }, + "lowdown-src_19": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_86": { - "inputs": { - "systems": "systems_44" - }, + "lowdown-src_2": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_87": { - "inputs": { - "systems": "systems_45" - }, + "lowdown-src_20": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_88": { - "inputs": { - "systems": "systems_46" - }, + "lowdown-src_3": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_89": { - "inputs": { - "systems": "systems_47" - }, + "lowdown-src_4": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_9": { + "lowdown-src_5": { + "flake": false, "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_90": { - "inputs": { - "systems": "systems_48" - }, + "lowdown-src_6": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_91": { - "inputs": { - "systems": "systems_49" - }, + "lowdown-src_7": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_92": { - "inputs": { - "systems": "systems_50" - }, + "lowdown-src_8": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1598695561, + "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_93": { - "inputs": { - "systems": "systems_51" - }, + "lowdown-src_9": { + "flake": false, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "lastModified": 1633514407, + "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", + "owner": "kristapsdz", + "repo": "lowdown", + "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "kristapsdz", + "repo": "lowdown", "type": "github" } }, - "flake-utils_94": { - "inputs": { - "systems": "systems_52" - }, + "mdbook-kroki-preprocessor": { + "flake": false, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1661755005, + "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "flake-utils_95": { - "inputs": { - "systems": "systems_53" - }, + "mdbook-kroki-preprocessor_2": { + "flake": false, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "flake-utils_96": { - "inputs": { - "systems": "systems_54" - }, + "mdbook-kroki-preprocessor_3": { + "flake": false, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "lastModified": 1655670640, + "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", + "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "JoelCourtney", + "repo": "mdbook-kroki-preprocessor", "type": "github" } }, - "flake-utils_97": { + "n2c": { "inputs": { - "systems": "systems_55" - }, - "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_98": { - "inputs": { - "systems": "systems_56" + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "flake-utils_99": { + "n2c_2": { "inputs": { - "systems": "systems_57" + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "lastModified": 1677330646, + "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "flakeCompat": { - "flake": false, + "n2c_3": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1641205782, - "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7", + "lastModified": 1685771919, + "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", "type": "github" }, "original": { - "owner": "edolstra", - "repo": "flake-compat", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "follower": { + "n2c_4": { "inputs": { - "devshell": "devshell_14", - "inclusive": "inclusive_8", + "flake-utils": "flake-utils_19", "nixpkgs": [ "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", + "cardano-node", + "cardano-automation", + "tullia", + "std", "nixpkgs" - ], - "utils": "utils_19" + ] }, "locked": { - "lastModified": 1642008295, - "narHash": "sha256-yx3lLN/hlvEeKItHJ5jH0KSm84IruTWMo78IItVPji4=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "b1b0b00e940026f72d16bdf13e36ad20f1826e8a", + "lastModified": 1665039323, + "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk": { - "flake": false, + "n2c_5": { + "inputs": { + "flake-utils": "flake-utils_26", + "nixpkgs": "nixpkgs_56" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1650568002, + "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2cd391fc65847ea54e3657a491c379854b556262", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_10": { - "flake": false, + "n2c_6": { + "inputs": { + "flake-utils": "flake-utils_43", + "nixpkgs": "nixpkgs_91" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1655533513, + "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "2d47dbe633a059d75c7878f554420158712481cb", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_11": { - "flake": false, + "nix": { + "inputs": { + "lowdown-src": "lowdown-src", + "nixpkgs": "nixpkgs_6", + "nixpkgs-regression": "nixpkgs-regression" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", "type": "github" } }, - "ghc-8.6.5-iohk_12": { - "flake": false, + "nix-cache-proxy": { + "inputs": { + "devshell": "devshell_15", + "inclusive": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "inclusive" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ], + "utils": "utils_20" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1644317729, + "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-cache-proxy", + "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-cache-proxy", "type": "github" } }, - "ghc-8.6.5-iohk_13": { - "flake": false, + "nix-inclusive": { + "inputs": { + "stdlib": "stdlib_13" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1628098927, + "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-inclusive", + "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-inclusive", "type": "github" } }, - "ghc-8.6.5-iohk_14": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "ghc-8.6.5-iohk_15": { - "flake": false, + "nix-nomad": { + "inputs": { + "flake-compat": "flake-compat_8", + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "ghc-8.6.5-iohk_16": { - "flake": false, + "nix-nomad_2": { + "inputs": { + "flake-compat": "flake-compat_9", + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_2", + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "ghc-8.6.5-iohk_17": { - "flake": false, + "nix-nomad_3": { + "inputs": { + "flake-compat": "flake-compat_14", + "flake-utils": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "nix2container", + "flake-utils" + ], + "gomod2nix": "gomod2nix_3", + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ], + "nixpkgs-lib": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658277770, + "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", + "owner": "tristanpemble", + "repo": "nix-nomad", + "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "tristanpemble", + "repo": "nix-nomad", "type": "github" } }, - "ghc-8.6.5-iohk_18": { + "nix-tools": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-tools", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-tools", "type": "github" } }, - "ghc-8.6.5-iohk_19": { + "nix-tools_2": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-tools", "type": "github" } }, - "ghc-8.6.5-iohk_2": { + "nix-tools_3": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1658968505, + "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-tools", + "rev": "8a754bdcf20b20e116409c2341cf69065d083053", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-tools", "type": "github" } }, - "ghc-8.6.5-iohk_20": { + "nix-tools_4": { "flake": false, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", + "lastModified": 1649424170, + "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "repo": "nix-tools", + "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "repo": "nix-tools", "type": "github" } }, - "ghc-8.6.5-iohk_21": { - "flake": false, + "nix2container": { + "inputs": { + "flake-utils": "flake-utils_6", + "nixpkgs": "nixpkgs_17" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_22": { - "flake": false, + "nix2container_2": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": "nixpkgs_19" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_23": { - "flake": false, + "nix2container_3": { + "inputs": { + "flake-utils": "flake-utils_10", + "nixpkgs": "nixpkgs_23" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_24": { - "flake": false, + "nix2container_4": { + "inputs": { + "flake-utils": "flake-utils_12", + "nixpkgs": "nixpkgs_27" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1671269339, + "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_25": { - "flake": false, + "nix2container_5": { + "inputs": { + "flake-utils": "flake-utils_17", + "nixpkgs": "nixpkgs_32" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1658567952, + "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_3": { - "flake": false, + "nix2container_6": { + "inputs": { + "flake-utils": "flake-utils_20", + "nixpkgs": "nixpkgs_36" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1712990762, + "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_4": { - "flake": false, + "nix2container_7": { + "inputs": { + "flake-utils": "flake-utils_45", + "nixpkgs": "nixpkgs_94" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1653427219, + "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nlewo", + "ref": "init-nix-db", + "repo": "nix2container", "type": "github" } }, - "ghc-8.6.5-iohk_5": { - "flake": false, + "nix_10": { + "inputs": { + "lowdown-src": "lowdown-src_10", + "nixpkgs": "nixpkgs_57", + "nixpkgs-regression": "nixpkgs-regression_9" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1652510778, + "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", + "owner": "nixos", + "repo": "nix", + "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nixos", + "ref": "2.8.1", + "repo": "nix", "type": "github" } }, - "ghc-8.6.5-iohk_6": { - "flake": false, + "nix_11": { + "inputs": { + "lowdown-src": "lowdown-src_11", + "nixpkgs": "nixpkgs_59", + "nixpkgs-regression": "nixpkgs-regression_10" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nixos", + "repo": "nix", "type": "github" } }, - "ghc-8.6.5-iohk_7": { - "flake": false, + "nix_12": { + "inputs": { + "lowdown-src": "lowdown-src_12", + "nixpkgs": "nixpkgs_66", + "nixpkgs-regression": "nixpkgs-regression_11" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1644413094, + "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "nixos", + "repo": "nix", + "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", "type": "github" } }, - "ghc-8.6.5-iohk_8": { - "flake": false, + "nix_13": { + "inputs": { + "lowdown-src": "lowdown-src_13", + "nixpkgs": "nixpkgs_67", + "nixpkgs-regression": "nixpkgs-regression_12" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1645437800, + "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "NixOS", + "repo": "nix", + "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", "type": "github" } }, - "ghc-8.6.5-iohk_9": { - "flake": false, + "nix_14": { + "inputs": { + "lowdown-src": "lowdown-src_14", + "nixpkgs": "nixpkgs_72", + "nixpkgs-regression": "nixpkgs-regression_13" + }, "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", "type": "github" } }, - "ghc910X": { - "flake": false, - "locked": { - "lastModified": 1714520650, - "narHash": "sha256-4uz6RA1hRr0RheGNDM49a/B3jszqNNU8iHIow4mSyso=", - "ref": "ghc-9.10", - "rev": "2c6375b9a804ac7fca1e82eb6fcfc8594c67c5f5", - "revCount": 62663, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "nix_15": { + "inputs": { + "lowdown-src": "lowdown-src_15", + "nixpkgs": "nixpkgs_74" }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_2": { - "flake": false, "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", - "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", + "owner": "NixOS", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "repo": "nix", + "type": "github" } }, - "ghc910X_3": { - "flake": false, + "nix_16": { + "inputs": { + "lowdown-src": "lowdown-src_16", + "nixpkgs": "nixpkgs_76", + "nixpkgs-regression": "nixpkgs-regression_14" + }, "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", - "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", + "owner": "nixos", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "nixos", + "repo": "nix", + "type": "github" } }, - "ghc910X_4": { - "flake": false, - "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "nix_17": { + "inputs": { + "lowdown-src": "lowdown-src_17", + "nixpkgs": "nixpkgs_88", + "nixpkgs-regression": "nixpkgs-regression_15" }, - "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc910X_5": { - "flake": false, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" } }, - "ghc910X_6": { - "flake": false, + "nix_18": { + "inputs": { + "lowdown-src": "lowdown-src_18", + "nixpkgs": "nixpkgs_90", + "nixpkgs-regression": "nixpkgs-regression_16" + }, "locked": { - "lastModified": 1713193157, - "narHash": "sha256-XFkrSrDyzZGEinXD6gV2zuj/lD5gJbbJhF5E5mI+wpE=", - "ref": "ghc-9.10", - "rev": "26b6c7fdaf0ac6c5c68d76922c2339d0cfec6c6e", - "revCount": 62642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" } }, - "ghc910X_7": { - "flake": false, + "nix_19": { + "inputs": { + "lowdown-src": "lowdown-src_19", + "nixpkgs": "nixpkgs_97", + "nixpkgs-regression": "nixpkgs-regression_17" + }, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1643066034, + "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", + "owner": "NixOS", + "repo": "nix", + "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.6.0", + "repo": "nix", + "type": "github" } }, - "ghc910X_8": { - "flake": false, + "nix_2": { + "inputs": { + "flake-compat": "flake-compat_3", + "lowdown-src": "lowdown-src_2", + "nixpkgs": "nixpkgs_10", + "nixpkgs-regression": "nixpkgs-regression_2" + }, "locked": { - "lastModified": 1711543129, - "narHash": "sha256-MUI07CxYOng7ZwHnMCw0ugY3HmWo2p/f4r07CGV7OAM=", - "ref": "ghc-9.10", - "rev": "6ecd5f2ff97af53c7334f2d8581651203a2c6b7d", - "revCount": 62607, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1693573010, + "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", + "owner": "nixos", + "repo": "nix", + "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", + "type": "github" }, "original": { - "ref": "ghc-9.10", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "nixos", + "ref": "2.17-maintenance", + "repo": "nix", + "type": "github" } }, - "ghc911": { - "flake": false, + "nix_20": { + "inputs": { + "lowdown-src": "lowdown-src_20", + "nixpkgs": "nixpkgs_98", + "nixpkgs-regression": "nixpkgs-regression_18" + }, "locked": { - "lastModified": 1714817013, - "narHash": "sha256-m2je4UvWfkgepMeUIiXHMwE6W+iVfUY38VDGkMzjCcc=", - "ref": "refs/heads/master", - "rev": "fc24c5cf6c62ca9e3c8d236656e139676df65034", - "revCount": 62816, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911_2": { - "flake": false, + "nix_3": { + "inputs": { + "lowdown-src": "lowdown-src_3", + "nixpkgs": "nixpkgs_14", + "nixpkgs-regression": "nixpkgs-regression_3" + }, "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", - "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911_3": { - "flake": false, + "nix_4": { + "inputs": { + "lowdown-src": "lowdown-src_4", + "nixpkgs": "nixpkgs_16", + "nixpkgs-regression": "nixpkgs-regression_4" + }, "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", - "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911_4": { - "flake": false, + "nix_5": { + "inputs": { + "lowdown-src": "lowdown-src_5", + "nixpkgs": "nixpkgs_26", + "nixpkgs-regression": "nixpkgs-regression_5" + }, "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911_5": { - "flake": false, + "nix_6": { + "inputs": { + "lowdown-src": "lowdown-src_6", + "nixpkgs": "nixpkgs_35", + "nixpkgs-regression": "nixpkgs-regression_6" + }, "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1661606874, + "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", + "owner": "NixOS", + "repo": "nix", + "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "NixOS", + "ref": "2.11.0", + "repo": "nix", + "type": "github" } }, - "ghc911_6": { - "flake": false, + "nix_7": { + "inputs": { + "lowdown-src": "lowdown-src_7", + "nixpkgs": "nixpkgs_43", + "nixpkgs-regression": "nixpkgs-regression_7" + }, "locked": { - "lastModified": 1713898958, - "narHash": "sha256-eXmPTWrIRH7Px+G4V5Uy5LwTlgMI30IVTSLXz7Dhmd4=", - "ref": "refs/heads/master", - "rev": "3fff09779d5830549ae455a15907b7bb9fe7859a", - "revCount": 62764, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "lastModified": 1646164353, + "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", + "owner": "kreisys", + "repo": "nix", + "rev": "45677cae8d474270ecd797eb40eb1f8836981604", + "type": "github" }, "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" + "owner": "kreisys", + "ref": "goodnix-maybe-dont-functor", + "repo": "nix", + "type": "github" } }, - "ghc911_7": { - "flake": false, - "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc911_8": { - "flake": false, - "locked": { - "lastModified": 1711538967, - "narHash": "sha256-KSdOJ8seP3g30FaC2du8QjU9vumMnmzPR5wfkVRXQMk=", - "ref": "refs/heads/master", - "rev": "0acfe391583d77a72051d505f05fab0ada056c49", - "revCount": 62632, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_10": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_2": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_3": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_4": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_5": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_6": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_7": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_8": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc98X_9": { - "flake": false, - "locked": { - "lastModified": 1696643148, - "narHash": "sha256-E02DfgISH7EvvNAu0BHiPvl1E5FGMDi0pWdNZtIBC9I=", - "ref": "ghc-9.8", - "rev": "443e870d977b1ab6fc05f47a9a17bc49296adbd6", - "revCount": 61642, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "ref": "ghc-9.8", - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99": { - "flake": false, - "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_10": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_2": { - "flake": false, - "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", - "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_3": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_4": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_5": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_6": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_7": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_8": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "ghc99_9": { - "flake": false, - "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", - "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - }, - "original": { - "submodules": true, - "type": "git", - "url": "https://gitlab.haskell.org/ghc/ghc" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_10": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_11": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_12": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_13": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_14": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_15": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_16": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_3": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_4": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_7": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_8": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gitignore_9": { - "inputs": { - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "pre-commit-hooks-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, - "gomod2nix": { - "inputs": { - "nixpkgs": "nixpkgs_17", - "utils": "utils_2" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_2": { - "inputs": { - "nixpkgs": "nixpkgs_21", - "utils": "utils_4" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "gomod2nix_3": { - "inputs": { - "nixpkgs": "nixpkgs_30", - "utils": "utils_6" - }, - "locked": { - "lastModified": 1655245309, - "narHash": "sha256-d/YPoQ/vFn1+GTmSdvbSBSTOai61FONxB4+Lt6w/IVI=", - "owner": "tweag", - "repo": "gomod2nix", - "rev": "40d32f82fc60d66402eb0972e6e368aeab3faf58", - "type": "github" - }, - "original": { - "owner": "tweag", - "repo": "gomod2nix", - "type": "github" - } - }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1692145451, - "narHash": "sha256-kqfyD3Mu5kgiH5W2ZshUhzO46H0zYDpwD1SWz+POMrk=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "9d2daeca0e09002bc6fb552a097a1802a2f3a4e3", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage-nix": { - "flake": false, - "locked": { - "lastModified": 1719535035, - "narHash": "sha256-kCCfZytGgkRYlsiNe/dwLAnpNOvfywpjVl61hO/8l2M=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "66f23365685f71610460f3c2c0dfa91f96c532ac", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix": { - "flake": false, - "locked": { - "lastModified": 1702945378, - "narHash": "sha256-mo1MlOphO4bRwZ8T3mDwU5LOtdQcWSA+93lT1HkCcyw=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e59b9616a744727e8e64f605f9f216464f12f89b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_2": { - "flake": false, - "locked": { - "lastModified": 1685492843, - "narHash": "sha256-X8dNs5Gfc2ucfaWAgZ1VmkpBB4Cb44EQZu0b7tkvz2Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "e7407bab324eb2445bda58c5ffac393e80dda1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_3": { - "flake": false, - "locked": { - "lastModified": 1701303758, - "narHash": "sha256-8XqVEQwmJBxRPFa7SizJuZxbG+NFEZKWdhtYPTQ7ZKM=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "8a0e3ae9295b7ef8431b9be208dd06aa2789be53", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackageNix_4": { - "flake": false, - "locked": { - "lastModified": 1718757495, - "narHash": "sha256-xviuxucDjsQ2HbqzfwVyB4ZmDIyzOnf2oDbVtwBHIco=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "0bb764772a383a926e3f945397a0e59ab3c64d6d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_10": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_11": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_12": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_13": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_14": { - "flake": false, - "locked": { - "lastModified": 1714610224, - "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_15": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_16": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_17": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_18": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_19": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_2": { - "flake": false, - "locked": { - "lastModified": 1646097829, - "narHash": "sha256-PcHDDV8NuUxZhPV/p++IkZC+SDZ1Db7m7K+9HN4/0S4=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "283f096976b48e54183905e7bdde7f213c6ee5cd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_20": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_3": { - "flake": false, - "locked": { - "lastModified": 1655342080, - "narHash": "sha256-mF/clPxSJJkKAq6Y+0oYXrU3rGOuQXFN9btSde3uvvE=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "567e2e865d42d8e5cfe796bf03b6b38e42bc00ab", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_4": { - "flake": false, - "locked": { - "lastModified": 1659489414, - "narHash": "sha256-AghgUkUv0hIBh+PvODngYL+ejwhCn2O2OUkVaAZYkCU=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "056c6ce7014adaf887b8e4cad15ef6fd926ea568", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_5": { - "flake": false, - "locked": { - "lastModified": 1650935983, - "narHash": "sha256-wZTCKzA4f7nk5sIdP2BhGz5qkt6ex5VTC/53U2Y4i9Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "b65addc81b03406b3ee8b139549980591ed15be5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_6": { - "flake": false, - "locked": { - "lastModified": 1714955666, - "narHash": "sha256-2FHDnM7dK2FH7xGQmcoHbMMP1PGHgKkBmfXC5/LLNVc=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "69a0fce63963cf4299cb24c2a0d2ee0428d227dd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_7": { - "flake": false, - "locked": { - "lastModified": 1714610224, - "narHash": "sha256-0KiDq3/geJz7w0hqPb+0GRvcHVJS0DqsgAeQEVl3RaA=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "c0762a14dc3b9d66befbef4d30e3f41e500cbb1d", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_8": { - "flake": false, - "locked": { - "lastModified": 1713831926, - "narHash": "sha256-zCEszURpeFvTptTKgh1SjCgHMHFAn5akefjjZ3BEgWs=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "f88b7e1bdfdcc8f8dd3cc712c146911ed75fcc6f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "hackage_9": { - "flake": false, - "locked": { - "lastModified": 1703636672, - "narHash": "sha256-QVADvglA1x9WpQFij73VvdvnqquCUCNBM0BOFHXQz0Y=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "6a9040a7f72c7e629b286a461cf856d987c163ba", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "haskell-flake": { - "locked": { - "lastModified": 1654001497, - "narHash": "sha256-GfrpyoQrVT9Z/j9its8BQs3I5O5X5Lc2IkK922bz7zg=", - "owner": "srid", - "repo": "haskell-flake", - "rev": "4c0b0ff295f0b97238a600d2381c37ee46b67f9c", - "type": "github" - }, - "original": { - "owner": "srid", - "repo": "haskell-flake", - "type": "github" - } - }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hls-1.10": "hls-1.10", - "hls-2.0": "hls-2.0", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "iserv-proxy": "iserv-proxy", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-2211": "nixpkgs-2211", - "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "empty-flake" - ] - }, - "locked": { - "lastModified": 1692147008, - "narHash": "sha256-ZiRaryaboJbNZ7y7XKZs2xuSfydZyGeupJNOfYpgQSw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "1970bb2d5b0eb8152f89b305f32d055dbd6857d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_10": { - "inputs": { - "HTTP": "HTTP_16", - "cabal-32": "cabal-32_16", - "cabal-34": "cabal-34_16", - "cabal-36": "cabal-36_16", - "cardano-shell": "cardano-shell_16", - "flake-compat": "flake-compat_34", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_16", - "ghc910X": "ghc910X_5", - "ghc911": "ghc911_5", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_12", - "hls-2.0": "hls-2.0_11", - "hls-2.2": "hls-2.2_10", - "hls-2.3": "hls-2.3_10", - "hls-2.4": "hls-2.4_10", - "hls-2.5": "hls-2.5_6", - "hls-2.6": "hls-2.6_6", - "hls-2.7": "hls-2.7_6", - "hpc-coveralls": "hpc-coveralls_16", - "hydra": "hydra_18", - "iserv-proxy": "iserv-proxy_12", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_16", - "nixpkgs-2105": "nixpkgs-2105_16", - "nixpkgs-2111": "nixpkgs-2111_16", - "nixpkgs-2205": "nixpkgs-2205_13", - "nixpkgs-2211": "nixpkgs-2211_12", - "nixpkgs-2305": "nixpkgs-2305_11", - "nixpkgs-2311": "nixpkgs-2311_8", - "nixpkgs-unstable": "nixpkgs-unstable_19", - "old-ghc-nix": "old-ghc-nix_16", - "stackage": "stackage_15" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_11": { - "inputs": { - "HTTP": "HTTP_17", - "cabal-32": "cabal-32_17", - "cabal-34": "cabal-34_17", - "cabal-36": "cabal-36_17", - "cardano-shell": "cardano-shell_17", - "flake-compat": "flake-compat_35", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_17", - "ghc98X": "ghc98X_5", - "ghc99": "ghc99_5", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_13", - "hls-2.0": "hls-2.0_12", - "hls-2.2": "hls-2.2_11", - "hls-2.3": "hls-2.3_11", - "hls-2.4": "hls-2.4_11", - "hpc-coveralls": "hpc-coveralls_17", - "hydra": "hydra_19", - "iserv-proxy": "iserv-proxy_13", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_17", - "nixpkgs-2105": "nixpkgs-2105_17", - "nixpkgs-2111": "nixpkgs-2111_17", - "nixpkgs-2205": "nixpkgs-2205_14", - "nixpkgs-2211": "nixpkgs-2211_13", - "nixpkgs-2305": "nixpkgs-2305_12", - "nixpkgs-2311": "nixpkgs-2311_9", - "nixpkgs-unstable": "nixpkgs-unstable_20", - "old-ghc-nix": "old-ghc-nix_17", - "stackage": "stackage_16" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_12": { - "inputs": { - "HTTP": "HTTP_18", - "cabal-32": "cabal-32_18", - "cabal-34": "cabal-34_18", - "cabal-36": "cabal-36_18", - "cardano-shell": "cardano-shell_18", - "flake-compat": "flake-compat_37", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_18", - "ghc98X": "ghc98X_6", - "ghc99": "ghc99_6", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_14", - "hls-2.0": "hls-2.0_13", - "hls-2.2": "hls-2.2_12", - "hls-2.3": "hls-2.3_12", - "hls-2.4": "hls-2.4_12", - "hpc-coveralls": "hpc-coveralls_18", - "hydra": "hydra_20", - "iserv-proxy": "iserv-proxy_14", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_18", - "nixpkgs-2105": "nixpkgs-2105_18", - "nixpkgs-2111": "nixpkgs-2111_18", - "nixpkgs-2205": "nixpkgs-2205_15", - "nixpkgs-2211": "nixpkgs-2211_14", - "nixpkgs-2305": "nixpkgs-2305_13", - "nixpkgs-2311": "nixpkgs-2311_10", - "nixpkgs-unstable": "nixpkgs-unstable_21", - "old-ghc-nix": "old-ghc-nix_18", - "stackage": "stackage_17" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_13": { - "inputs": { - "HTTP": "HTTP_19", - "cabal-32": "cabal-32_19", - "cabal-34": "cabal-34_19", - "cabal-36": "cabal-36_19", - "cardano-shell": "cardano-shell_19", - "flake-compat": "flake-compat_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_19", - "ghc910X": "ghc910X_6", - "ghc911": "ghc911_6", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_15", - "hls-2.0": "hls-2.0_14", - "hls-2.2": "hls-2.2_13", - "hls-2.3": "hls-2.3_13", - "hls-2.4": "hls-2.4_13", - "hls-2.5": "hls-2.5_7", - "hls-2.6": "hls-2.6_7", - "hls-2.7": "hls-2.7_7", - "hpc-coveralls": "hpc-coveralls_19", - "hydra": "hydra_21", - "iserv-proxy": "iserv-proxy_15", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_19", - "nixpkgs-2105": "nixpkgs-2105_19", - "nixpkgs-2111": "nixpkgs-2111_19", - "nixpkgs-2205": "nixpkgs-2205_16", - "nixpkgs-2211": "nixpkgs-2211_15", - "nixpkgs-2305": "nixpkgs-2305_14", - "nixpkgs-2311": "nixpkgs-2311_11", - "nixpkgs-unstable": "nixpkgs-unstable_22", - "old-ghc-nix": "old-ghc-nix_19", - "stackage": "stackage_18" - }, - "locked": { - "lastModified": 1714611016, - "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_14": { - "inputs": { - "HTTP": "HTTP_20", - "cabal-32": "cabal-32_20", - "cabal-34": "cabal-34_20", - "cabal-36": "cabal-36_20", - "cardano-shell": "cardano-shell_20", - "flake-compat": "flake-compat_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_20", - "ghc910X": "ghc910X_7", - "ghc911": "ghc911_7", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_16", - "hls-2.0": "hls-2.0_15", - "hls-2.2": "hls-2.2_14", - "hls-2.3": "hls-2.3_14", - "hls-2.4": "hls-2.4_14", - "hls-2.5": "hls-2.5_8", - "hls-2.6": "hls-2.6_8", - "hls-2.7": "hls-2.7_8", - "hpc-coveralls": "hpc-coveralls_20", - "hydra": "hydra_22", - "iserv-proxy": "iserv-proxy_16", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_20", - "nixpkgs-2105": "nixpkgs-2105_20", - "nixpkgs-2111": "nixpkgs-2111_20", - "nixpkgs-2205": "nixpkgs-2205_17", - "nixpkgs-2211": "nixpkgs-2211_16", - "nixpkgs-2305": "nixpkgs-2305_15", - "nixpkgs-2311": "nixpkgs-2311_12", - "nixpkgs-unstable": "nixpkgs-unstable_23", - "old-ghc-nix": "old-ghc-nix_20", - "stackage": "stackage_19" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_15": { - "inputs": { - "HTTP": "HTTP_21", - "cabal-32": "cabal-32_21", - "cabal-34": "cabal-34_21", - "cabal-36": "cabal-36_21", - "cardano-shell": "cardano-shell_21", - "flake-compat": "flake-compat_43", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_21", - "ghc98X": "ghc98X_7", - "ghc99": "ghc99_7", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_17", - "hls-2.0": "hls-2.0_16", - "hls-2.2": "hls-2.2_15", - "hls-2.3": "hls-2.3_15", - "hls-2.4": "hls-2.4_15", - "hpc-coveralls": "hpc-coveralls_21", - "hydra": "hydra_23", - "iserv-proxy": "iserv-proxy_17", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_21", - "nixpkgs-2105": "nixpkgs-2105_21", - "nixpkgs-2111": "nixpkgs-2111_21", - "nixpkgs-2205": "nixpkgs-2205_18", - "nixpkgs-2211": "nixpkgs-2211_17", - "nixpkgs-2305": "nixpkgs-2305_16", - "nixpkgs-2311": "nixpkgs-2311_13", - "nixpkgs-unstable": "nixpkgs-unstable_24", - "old-ghc-nix": "old-ghc-nix_21", - "stackage": "stackage_20" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_16": { - "inputs": { - "HTTP": "HTTP_22", - "cabal-32": "cabal-32_22", - "cabal-34": "cabal-34_22", - "cabal-36": "cabal-36_22", - "cardano-shell": "cardano-shell_22", - "flake-compat": "flake-compat_45", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_22", - "ghc98X": "ghc98X_8", - "ghc99": "ghc99_8", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_18", - "hls-2.0": "hls-2.0_17", - "hls-2.2": "hls-2.2_16", - "hls-2.3": "hls-2.3_16", - "hls-2.4": "hls-2.4_16", - "hpc-coveralls": "hpc-coveralls_22", - "hydra": "hydra_24", - "iserv-proxy": "iserv-proxy_18", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_22", - "nixpkgs-2105": "nixpkgs-2105_22", - "nixpkgs-2111": "nixpkgs-2111_22", - "nixpkgs-2205": "nixpkgs-2205_19", - "nixpkgs-2211": "nixpkgs-2211_18", - "nixpkgs-2305": "nixpkgs-2305_17", - "nixpkgs-2311": "nixpkgs-2311_14", - "nixpkgs-unstable": "nixpkgs-unstable_25", - "old-ghc-nix": "old-ghc-nix_22", - "stackage": "stackage_21" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_17": { - "inputs": { - "HTTP": "HTTP_23", - "cabal-32": "cabal-32_23", - "cabal-34": "cabal-34_23", - "cabal-36": "cabal-36_23", - "cardano-shell": "cardano-shell_23", - "flake-compat": "flake-compat_48", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_23", - "ghc910X": "ghc910X_8", - "ghc911": "ghc911_8", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_19", - "hls-2.0": "hls-2.0_18", - "hls-2.2": "hls-2.2_17", - "hls-2.3": "hls-2.3_17", - "hls-2.4": "hls-2.4_17", - "hls-2.5": "hls-2.5_9", - "hls-2.6": "hls-2.6_9", - "hls-2.7": "hls-2.7_9", - "hpc-coveralls": "hpc-coveralls_23", - "hydra": "hydra_25", - "iserv-proxy": "iserv-proxy_19", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_23", - "nixpkgs-2105": "nixpkgs-2105_23", - "nixpkgs-2111": "nixpkgs-2111_23", - "nixpkgs-2205": "nixpkgs-2205_20", - "nixpkgs-2211": "nixpkgs-2211_19", - "nixpkgs-2305": "nixpkgs-2305_18", - "nixpkgs-2311": "nixpkgs-2311_15", - "nixpkgs-unstable": "nixpkgs-unstable_26", - "old-ghc-nix": "old-ghc-nix_23", - "stackage": "stackage_22" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_18": { - "inputs": { - "HTTP": "HTTP_24", - "cabal-32": "cabal-32_24", - "cabal-34": "cabal-34_24", - "cabal-36": "cabal-36_24", - "cardano-shell": "cardano-shell_24", - "flake-compat": "flake-compat_49", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_24", - "ghc98X": "ghc98X_9", - "ghc99": "ghc99_9", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_20", - "hls-2.0": "hls-2.0_19", - "hls-2.2": "hls-2.2_18", - "hls-2.3": "hls-2.3_18", - "hls-2.4": "hls-2.4_18", - "hpc-coveralls": "hpc-coveralls_24", - "hydra": "hydra_26", - "iserv-proxy": "iserv-proxy_20", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_24", - "nixpkgs-2105": "nixpkgs-2105_24", - "nixpkgs-2111": "nixpkgs-2111_24", - "nixpkgs-2205": "nixpkgs-2205_21", - "nixpkgs-2211": "nixpkgs-2211_20", - "nixpkgs-2305": "nixpkgs-2305_19", - "nixpkgs-2311": "nixpkgs-2311_16", - "nixpkgs-unstable": "nixpkgs-unstable_27", - "old-ghc-nix": "old-ghc-nix_24", - "stackage": "stackage_23" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_19": { - "inputs": { - "HTTP": "HTTP_25", - "cabal-32": "cabal-32_25", - "cabal-34": "cabal-34_25", - "cabal-36": "cabal-36_25", - "cardano-shell": "cardano-shell_25", - "flake-compat": "flake-compat_51", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_25", - "ghc98X": "ghc98X_10", - "ghc99": "ghc99_10", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_21", - "hls-2.0": "hls-2.0_20", - "hls-2.2": "hls-2.2_19", - "hls-2.3": "hls-2.3_19", - "hls-2.4": "hls-2.4_19", - "hpc-coveralls": "hpc-coveralls_25", - "hydra": "hydra_27", - "iserv-proxy": "iserv-proxy_21", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_25", - "nixpkgs-2105": "nixpkgs-2105_25", - "nixpkgs-2111": "nixpkgs-2111_25", - "nixpkgs-2205": "nixpkgs-2205_22", - "nixpkgs-2211": "nixpkgs-2211_21", - "nixpkgs-2305": "nixpkgs-2305_20", - "nixpkgs-2311": "nixpkgs-2311_17", - "nixpkgs-unstable": "nixpkgs-unstable_28", - "old-ghc-nix": "old-ghc-nix_25", - "stackage": "stackage_24" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_2": { - "inputs": { - "HTTP": "HTTP_6", - "cabal-32": "cabal-32_6", - "cabal-34": "cabal-34_6", - "cabal-36": "cabal-36_6", - "cardano-shell": "cardano-shell_6", - "flake-utils": "flake-utils_31", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_6", - "hackage": "hackage_2", - "hpc-coveralls": "hpc-coveralls_6", - "nix-tools": "nix-tools", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_6", - "nixpkgs-2105": "nixpkgs-2105_6", - "nixpkgs-2111": "nixpkgs-2111_6", - "nixpkgs-unstable": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "old-ghc-nix": "old-ghc-nix_6", - "stackage": "stackage_5" - }, - "locked": { - "lastModified": 1646097976, - "narHash": "sha256-EiyrBqayw67dw8pr1XCVU9tIZ+/jzXCQycW1S9a+KFA=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "f0308ed1df3ce9f10f9da1a7c0c8591921d0b4e5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_3": { - "inputs": { - "HTTP": "HTTP_8", - "cabal-32": "cabal-32_8", - "cabal-34": "cabal-34_8", - "cabal-36": "cabal-36_8", - "cardano-shell": "cardano-shell_8", - "flake-utils": "flake-utils_42", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_8", - "hackage": [ - "ctl", - "db-sync", - "cardano-world", - "hackage" - ], - "hpc-coveralls": "hpc-coveralls_8", - "hydra": "hydra_10", - "nix-tools": "nix-tools_3", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_8", - "nixpkgs-2105": "nixpkgs-2105_8", - "nixpkgs-2111": "nixpkgs-2111_8", - "nixpkgs-2205": "nixpkgs-2205_6", - "nixpkgs-unstable": "nixpkgs-unstable_11", - "old-ghc-nix": "old-ghc-nix_8", - "stackage": "stackage_7" - }, - "locked": { - "lastModified": 1659439444, - "narHash": "sha256-qUK7OVpM8/piOImpPgzSUvOFHQq19sQpvOSns2nW8es=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "ee6a6559e16a603677d7cbef7c4fe18ca801b48e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_4": { - "inputs": { - "HTTP": "HTTP_10", - "cabal-32": "cabal-32_10", - "cabal-34": "cabal-34_10", - "cabal-36": "cabal-36_10", - "cardano-shell": "cardano-shell_10", - "flake-compat": "flake-compat_25", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_10", - "hackage": [ - "ctl", - "hackage-nix" - ], - "hls-1.10": "hls-1.10_6", - "hls-2.0": "hls-2.0_5", - "hls-2.2": "hls-2.2_4", - "hls-2.3": "hls-2.3_4", - "hls-2.4": "hls-2.4_4", - "hls-2.5": "hls-2.5_2", - "hls-2.6": "hls-2.6_2", - "hls-2.7": "hls-2.7_2", - "hls-2.8": "hls-2.8_2", - "hpc-coveralls": "hpc-coveralls_10", - "hydra": "hydra_12", - "iserv-proxy": "iserv-proxy_6", - "nixpkgs": [ - "ctl", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_10", - "nixpkgs-2105": "nixpkgs-2105_10", - "nixpkgs-2111": "nixpkgs-2111_10", - "nixpkgs-2205": "nixpkgs-2205_7", - "nixpkgs-2211": "nixpkgs-2211_6", - "nixpkgs-2305": "nixpkgs-2305_5", - "nixpkgs-2311": "nixpkgs-2311_2", - "nixpkgs-unstable": "nixpkgs-unstable_13", - "old-ghc-nix": "old-ghc-nix_10", - "stackage": "stackage_9" - }, - "locked": { - "lastModified": 1719535822, - "narHash": "sha256-IteIKK4+GEZI2nHqCz0zRVgQ3aqs/WXKTOt2sbHJmGk=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "72bc84d0a4e8d0536505628040d96fd0a9e16c70", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_5": { - "inputs": { - "HTTP": "HTTP_11", - "cabal-32": "cabal-32_11", - "cabal-34": "cabal-34_11", - "cabal-36": "cabal-36_11", - "cardano-shell": "cardano-shell_11", - "flake-compat": "flake-compat_26", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_11", - "ghc910X": "ghc910X_2", - "ghc911": "ghc911_2", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_7", - "hls-2.0": "hls-2.0_6", - "hls-2.2": "hls-2.2_5", - "hls-2.3": "hls-2.3_5", - "hls-2.4": "hls-2.4_5", - "hls-2.5": "hls-2.5_3", - "hls-2.6": "hls-2.6_3", - "hls-2.7": "hls-2.7_3", - "hpc-coveralls": "hpc-coveralls_11", - "hydra": "hydra_13", - "iserv-proxy": "iserv-proxy_7", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_11", - "nixpkgs-2105": "nixpkgs-2105_11", - "nixpkgs-2111": "nixpkgs-2111_11", - "nixpkgs-2205": "nixpkgs-2205_8", - "nixpkgs-2211": "nixpkgs-2211_7", - "nixpkgs-2305": "nixpkgs-2305_6", - "nixpkgs-2311": "nixpkgs-2311_3", - "nixpkgs-unstable": "nixpkgs-unstable_14", - "old-ghc-nix": "old-ghc-nix_11", - "stackage": "stackage_10" - }, - "locked": { - "lastModified": 1714956613, - "narHash": "sha256-h2n+7SsDHFE9SfStJjHxludjmhV5iupstehh6EGLUGU=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "6a9b5d11bdd09bcf739c5e837fa4a776b4c48646", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_6": { - "inputs": { - "HTTP": "HTTP_12", - "cabal-32": "cabal-32_12", - "cabal-34": "cabal-34_12", - "cabal-36": "cabal-36_12", - "cardano-shell": "cardano-shell_12", - "flake-compat": "flake-compat_27", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_12", - "ghc910X": "ghc910X_3", - "ghc911": "ghc911_3", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_8", - "hls-2.0": "hls-2.0_7", - "hls-2.2": "hls-2.2_6", - "hls-2.3": "hls-2.3_6", - "hls-2.4": "hls-2.4_6", - "hls-2.5": "hls-2.5_4", - "hls-2.6": "hls-2.6_4", - "hls-2.7": "hls-2.7_4", - "hpc-coveralls": "hpc-coveralls_12", - "hydra": "hydra_14", - "iserv-proxy": "iserv-proxy_8", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_12", - "nixpkgs-2105": "nixpkgs-2105_12", - "nixpkgs-2111": "nixpkgs-2111_12", - "nixpkgs-2205": "nixpkgs-2205_9", - "nixpkgs-2211": "nixpkgs-2211_8", - "nixpkgs-2305": "nixpkgs-2305_7", - "nixpkgs-2311": "nixpkgs-2311_4", - "nixpkgs-unstable": "nixpkgs-unstable_15", - "old-ghc-nix": "old-ghc-nix_12", - "stackage": "stackage_11" - }, - "locked": { - "lastModified": 1714611016, - "narHash": "sha256-R/ixQu8KPeBs7d2o6eZFk9X2KKM9+ygknriurq/taE0=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "494f46d066adbec865c98dcac8ef9bf8103705d6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_7": { - "inputs": { - "HTTP": "HTTP_13", - "cabal-32": "cabal-32_13", - "cabal-34": "cabal-34_13", - "cabal-36": "cabal-36_13", - "cardano-shell": "cardano-shell_13", - "flake-compat": "flake-compat_28", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_13", - "ghc910X": "ghc910X_4", - "ghc911": "ghc911_4", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_9", - "hls-2.0": "hls-2.0_8", - "hls-2.2": "hls-2.2_7", - "hls-2.3": "hls-2.3_7", - "hls-2.4": "hls-2.4_7", - "hls-2.5": "hls-2.5_5", - "hls-2.6": "hls-2.6_5", - "hls-2.7": "hls-2.7_5", - "hpc-coveralls": "hpc-coveralls_13", - "hydra": "hydra_15", - "iserv-proxy": "iserv-proxy_9", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_13", - "nixpkgs-2105": "nixpkgs-2105_13", - "nixpkgs-2111": "nixpkgs-2111_13", - "nixpkgs-2205": "nixpkgs-2205_10", - "nixpkgs-2211": "nixpkgs-2211_9", - "nixpkgs-2305": "nixpkgs-2305_8", - "nixpkgs-2311": "nixpkgs-2311_5", - "nixpkgs-unstable": "nixpkgs-unstable_16", - "old-ghc-nix": "old-ghc-nix_13", - "stackage": "stackage_12" - }, - "locked": { - "lastModified": 1713833402, - "narHash": "sha256-O5ummrH8gas2g8LEZYhL3dzcfVrQ8ir8mvdzqcC2hoM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e42a12e161ae13bcd95289db43847582e78f3bb1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_8": { - "inputs": { - "HTTP": "HTTP_14", - "cabal-32": "cabal-32_14", - "cabal-34": "cabal-34_14", - "cabal-36": "cabal-36_14", - "cardano-shell": "cardano-shell_14", - "flake-compat": "flake-compat_29", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_14", - "ghc98X": "ghc98X_3", - "ghc99": "ghc99_3", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_10", - "hls-2.0": "hls-2.0_9", - "hls-2.2": "hls-2.2_8", - "hls-2.3": "hls-2.3_8", - "hls-2.4": "hls-2.4_8", - "hpc-coveralls": "hpc-coveralls_14", - "hydra": "hydra_16", - "iserv-proxy": "iserv-proxy_10", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_14", - "nixpkgs-2105": "nixpkgs-2105_14", - "nixpkgs-2111": "nixpkgs-2111_14", - "nixpkgs-2205": "nixpkgs-2205_11", - "nixpkgs-2211": "nixpkgs-2211_10", - "nixpkgs-2305": "nixpkgs-2305_9", - "nixpkgs-2311": "nixpkgs-2311_6", - "nixpkgs-unstable": "nixpkgs-unstable_17", - "old-ghc-nix": "old-ghc-nix_14", - "stackage": "stackage_13" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskell-nix_9": { - "inputs": { - "HTTP": "HTTP_15", - "cabal-32": "cabal-32_15", - "cabal-34": "cabal-34_15", - "cabal-36": "cabal-36_15", - "cardano-shell": "cardano-shell_15", - "flake-compat": "flake-compat_31", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_15", - "ghc98X": "ghc98X_4", - "ghc99": "ghc99_4", - "hackage": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "hackage" - ], - "hls-1.10": "hls-1.10_11", - "hls-2.0": "hls-2.0_10", - "hls-2.2": "hls-2.2_9", - "hls-2.3": "hls-2.3_9", - "hls-2.4": "hls-2.4_9", - "hpc-coveralls": "hpc-coveralls_15", - "hydra": "hydra_17", - "iserv-proxy": "iserv-proxy_11", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_15", - "nixpkgs-2105": "nixpkgs-2105_15", - "nixpkgs-2111": "nixpkgs-2111_15", - "nixpkgs-2205": "nixpkgs-2205_12", - "nixpkgs-2211": "nixpkgs-2211_11", - "nixpkgs-2305": "nixpkgs-2305_10", - "nixpkgs-2311": "nixpkgs-2311_7", - "nixpkgs-unstable": "nixpkgs-unstable_18", - "old-ghc-nix": "old-ghc-nix_15", - "stackage": "stackage_14" - }, - "locked": { - "lastModified": 1703638209, - "narHash": "sha256-MeEwFKZGA+DEx54IE4JQQi5ss+kplyikHQFlc2pz3NM=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3e17b0afaa245a660e02af7323de96153124928b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix": { - "inputs": { - "HTTP": "HTTP_2", - "cabal-32": "cabal-32_2", - "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36_2", - "cardano-shell": "cardano-shell_2", - "flake-compat": "flake-compat_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", - "ghc98X": "ghc98X", - "ghc99": "ghc99", - "hackage": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "hackageNix" - ], - "hls-1.10": "hls-1.10_2", - "hls-2.0": "hls-2.0_2", - "hls-2.2": "hls-2.2", - "hls-2.3": "hls-2.3", - "hls-2.4": "hls-2.4", - "hpc-coveralls": "hpc-coveralls_2", - "hydra": "hydra_2", - "iserv-proxy": "iserv-proxy_2", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_2", - "nixpkgs-2105": "nixpkgs-2105_2", - "nixpkgs-2111": "nixpkgs-2111_2", - "nixpkgs-2205": "nixpkgs-2205_2", - "nixpkgs-2211": "nixpkgs-2211_2", - "nixpkgs-2305": "nixpkgs-2305_2", - "nixpkgs-unstable": "nixpkgs-unstable_3", - "old-ghc-nix": "old-ghc-nix_2", - "stackage": "stackage" - }, - "locked": { - "lastModified": 1701053834, - "narHash": "sha256-4sH4//POARjeKJv1mu8aU4W4A28GYqrj9KB3PqusHis=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "7c491c55157208575c70c7b8434e9d4a1cf173a6", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_2": { - "inputs": { - "HTTP": "HTTP_3", - "cabal-32": "cabal-32_3", - "cabal-34": "cabal-34_3", - "cabal-36": "cabal-36_3", - "cardano-shell": "cardano-shell_3", - "flake-compat": "flake-compat_7", - "flake-utils": "flake-utils_5", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_3", - "hackage": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "hackageNix" - ], - "hls-1.10": "hls-1.10_3", - "hpc-coveralls": "hpc-coveralls_3", - "hydra": "hydra_3", - "iserv-proxy": "iserv-proxy_3", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_3", - "nixpkgs-2105": "nixpkgs-2105_3", - "nixpkgs-2111": "nixpkgs-2111_3", - "nixpkgs-2205": "nixpkgs-2205_3", - "nixpkgs-2211": "nixpkgs-2211_3", - "nixpkgs-unstable": "nixpkgs-unstable_4", - "old-ghc-nix": "old-ghc-nix_3", - "stackage": "stackage_2" - }, - "locked": { - "lastModified": 1685495397, - "narHash": "sha256-BwbWroS1Qm8BiHatG5+iHMHN5U6kqOccewBROUYuMKw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "d07c42cdb1cf88d0cab27d3090b00cb3899643c9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_3": { - "inputs": { - "HTTP": "HTTP_4", - "cabal-32": "cabal-32_4", - "cabal-34": "cabal-34_4", - "cabal-36": "cabal-36_4", - "cardano-shell": "cardano-shell_4", - "flake-compat": "flake-compat_11", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_4", - "ghc98X": "ghc98X_2", - "ghc99": "ghc99_2", - "hackage": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "hackageNix" - ], - "hls-1.10": "hls-1.10_4", - "hls-2.0": "hls-2.0_3", - "hls-2.2": "hls-2.2_2", - "hls-2.3": "hls-2.3_2", - "hls-2.4": "hls-2.4_2", - "hpc-coveralls": "hpc-coveralls_4", - "hydra": "hydra_4", - "iserv-proxy": "iserv-proxy_4", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_4", - "nixpkgs-2105": "nixpkgs-2105_4", - "nixpkgs-2111": "nixpkgs-2111_4", - "nixpkgs-2205": "nixpkgs-2205_4", - "nixpkgs-2211": "nixpkgs-2211_4", - "nixpkgs-2305": "nixpkgs-2305_3", - "nixpkgs-unstable": "nixpkgs-unstable_5", - "old-ghc-nix": "old-ghc-nix_4", - "stackage": "stackage_3" - }, - "locked": { - "lastModified": 1700441391, - "narHash": "sha256-oJqP1AUskUvr3GNUH97eKwaIUHdYgENS2kQ7GI9RI+c=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "3b6056f3866f88d1d16eaeb2e810d3ac0df0e7cd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_4": { - "inputs": { - "HTTP": "HTTP_5", - "cabal-32": "cabal-32_5", - "cabal-34": "cabal-34_5", - "cabal-36": "cabal-36_5", - "cardano-shell": "cardano-shell_5", - "flake-compat": "flake-compat_16", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_5", - "ghc910X": "ghc910X", - "ghc911": "ghc911", - "hackage": [ - "ctl", - "cardano-node", - "hackageNix" - ], - "hls-1.10": "hls-1.10_5", - "hls-2.0": "hls-2.0_4", - "hls-2.2": "hls-2.2_3", - "hls-2.3": "hls-2.3_3", - "hls-2.4": "hls-2.4_3", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", - "hls-2.7": "hls-2.7", - "hls-2.8": "hls-2.8", - "hpc-coveralls": "hpc-coveralls_5", - "hydra": "hydra_5", - "iserv-proxy": "iserv-proxy_5", - "nixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_5", - "nixpkgs-2105": "nixpkgs-2105_5", - "nixpkgs-2111": "nixpkgs-2111_5", - "nixpkgs-2205": "nixpkgs-2205_5", - "nixpkgs-2211": "nixpkgs-2211_5", - "nixpkgs-2305": "nixpkgs-2305_4", - "nixpkgs-2311": "nixpkgs-2311", - "nixpkgs-unstable": "nixpkgs-unstable_6", - "old-ghc-nix": "old-ghc-nix_5", - "stackage": "stackage_4" - }, - "locked": { - "lastModified": 1718797200, - "narHash": "sha256-ueFxTuZrQ3ZT/Fj5sSeUWlqKa4+OkUU1xW0E+q/XTfw=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "cb139fa956158397aa398186bb32dd26f7318784", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_5": { - "inputs": { - "HTTP": "HTTP_7", - "cabal-32": "cabal-32_7", - "cabal-34": "cabal-34_7", - "cabal-36": "cabal-36_7", - "cardano-shell": "cardano-shell_7", - "flake-utils": "flake-utils_41", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_7", - "hackage": "hackage_3", - "hpc-coveralls": "hpc-coveralls_7", - "hydra": "hydra_9", - "nix-tools": "nix-tools_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ], - "nixpkgs-2003": "nixpkgs-2003_7", - "nixpkgs-2105": "nixpkgs-2105_7", - "nixpkgs-2111": "nixpkgs-2111_7", - "nixpkgs-unstable": "nixpkgs-unstable_10", - "old-ghc-nix": "old-ghc-nix_7", - "stackage": "stackage_6" - }, - "locked": { - "lastModified": 1655369909, - "narHash": "sha256-Z3d17WvaXY2kWdfsOE6yPKViQ1RBfGi4d7XZgXA/j2I=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "5a310b0b3904d9b90239390eb2dfb59e4dcb0d96", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haskellNix_6": { - "inputs": { - "HTTP": "HTTP_9", - "cabal-32": "cabal-32_9", - "cabal-34": "cabal-34_9", - "cabal-36": "cabal-36_9", - "cardano-shell": "cardano-shell_9", - "flake-utils": "flake-utils_47", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_9", - "hackage": "hackage_5", - "hpc-coveralls": "hpc-coveralls_9", - "hydra": "hydra_11", - "nix-tools": "nix-tools_4", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003_9", - "nixpkgs-2105": "nixpkgs-2105_9", - "nixpkgs-2111": "nixpkgs-2111_9", - "nixpkgs-unstable": "nixpkgs-unstable_12", - "old-ghc-nix": "old-ghc-nix_9", - "stackage": "stackage_8" - }, - "locked": { - "lastModified": 1650936156, - "narHash": "sha256-B58b4OCSc6ohRjGEdbQ78r+TK/OZYsBXION90kfQDC4=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "9a502b8c8aac4d7b8033bc9affb87fd03d4740fc", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "haumea": { - "inputs": { - "nixpkgs": "nixpkgs_27" - }, - "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "haumea_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-node", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1685133229, - "narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=", - "owner": "nix-community", - "repo": "haumea", - "rev": "34dd58385092a23018748b50f9b23de6266dffc2", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "v0.2.2", - "repo": "haumea", - "type": "github" - } - }, - "hercules-ci-effects": { - "inputs": { - "flake-parts": [ - "ctl", - "cardano-nix", - "flake-parts" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1714676393, - "narHash": "sha256-OA2LZPTCHyH0PcsNkjeTLvgsn4JmsV2VTvXQacHeUZU=", - "owner": "mlabs-haskell", - "repo": "hercules-ci-effects", - "rev": "5ad8f9613b735cb4f8222f07ae45ca37bfe76a23", - "type": "github" - }, - "original": { - "owner": "mlabs-haskell", - "ref": "push-cache-effect", - "repo": "hercules-ci-effects", - "type": "github" - } - }, - "hercules-ci-effects_2": { - "inputs": { - "flake-parts": "flake-parts_7", - "nixpkgs": "nixpkgs_98" - }, - "locked": { - "lastModified": 1719226092, - "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "hercules-ci-effects", - "type": "github" - } - }, - "hls-1.10": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_10": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_11": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_12": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_13": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_14": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_15": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_16": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_17": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_18": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_19": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_2": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_20": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_21": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_3": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_4": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_5": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_6": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_7": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_8": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-1.10_9": { - "flake": false, - "locked": { - "lastModified": 1680000865, - "narHash": "sha256-rc7iiUAcrHxwRM/s0ErEsSPxOR3u8t7DvFeWlMycWgo=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b08691db779f7a35ff322b71e72a12f6e3376fd9", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "1.10.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_10": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_11": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_12": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_13": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_14": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_15": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_16": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_17": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_18": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_19": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_2": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_20": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_3": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_4": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_5": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_6": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_7": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_8": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.0_9": { - "flake": false, - "locked": { - "lastModified": 1687698105, - "narHash": "sha256-OHXlgRzs/kuJH8q7Sxh507H+0Rb8b7VOiPAjcY9sM1k=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "783905f211ac63edf982dd1889c671653327e441", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.0.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_10": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_11": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_12": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_13": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_14": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_15": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_16": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_17": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_18": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_19": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_2": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_3": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_4": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_5": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_6": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_7": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_8": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.2_9": { - "flake": false, - "locked": { - "lastModified": 1693064058, - "narHash": "sha256-8DGIyz5GjuCFmohY6Fa79hHA/p1iIqubfJUTGQElbNk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "b30f4b6cf5822f3112c35d14a0cba51f3fe23b85", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.2.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_10": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_11": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_12": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_13": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_14": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_15": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_16": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_17": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_18": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_19": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_2": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_3": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_4": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_5": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_6": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_7": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_8": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.3_9": { - "flake": false, - "locked": { - "lastModified": 1695910642, - "narHash": "sha256-tR58doOs3DncFehHwCLczJgntyG/zlsSd7DgDgMPOkI=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "458ccdb55c9ea22cd5d13ec3051aaefb295321be", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.3.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4": { - "flake": false, - "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_10": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_11": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_12": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_13": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_14": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_15": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_16": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_17": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_18": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_19": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_2": { - "flake": false, - "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_3": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_4": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_5": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_6": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_7": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_8": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.4_9": { - "flake": false, - "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_2": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_3": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_4": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_6": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_7": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_8": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5_9": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_2": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_3": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_4": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_5": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_7": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_8": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6_9": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_2": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_3": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_4": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_5": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_6": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_7": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_8": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.7_9": { - "flake": false, - "locked": { - "lastModified": 1708965829, - "narHash": "sha256-LfJ+TBcBFq/XKoiNI7pc4VoHg4WmuzsFxYJ3Fu+Jf+M=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "50322b0a4aefb27adc5ec42f5055aaa8f8e38001", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.7.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.8": { - "flake": false, - "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.8_2": { - "flake": false, - "locked": { - "lastModified": 1715153580, - "narHash": "sha256-Vi/iUt2pWyUJlo9VrYgTcbRviWE0cFO6rmGi9rmALw0=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "dd1be1beb16700de59e0d6801957290bcf956a0a", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.8.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hpc-coveralls": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_10": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_11": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_12": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_13": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_14": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_15": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_16": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_17": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_18": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_19": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_2": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_20": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_21": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_22": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_23": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_24": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_25": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_3": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_4": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_5": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_6": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_7": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_8": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hpc-coveralls_9": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "cardano-parts", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_10": { - "inputs": { - "nix": "nix_18", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_11": { - "inputs": { - "nix": "nix_19", - "nixpkgs": [ - "ctl", - "db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_12": { - "inputs": { - "nix": "nix_20", - "nixpkgs": [ - "ctl", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_13": { - "inputs": { - "nix": "nix_21", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_14": { - "inputs": { - "nix": "nix_22", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_15": { - "inputs": { - "nix": "nix_23", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_16": { - "inputs": { - "nix": "nix_24", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_17": { - "inputs": { - "nix": "nix_25", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_18": { - "inputs": { - "nix": "nix_26", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_19": { - "inputs": { - "nix": "nix_27", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_2": { - "inputs": { - "nix": "nix_3", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_20": { - "inputs": { - "nix": "nix_28", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_21": { - "inputs": { - "nix": "nix_29", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_22": { - "inputs": { - "nix": "nix_30", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_23": { - "inputs": { - "nix": "nix_31", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_24": { - "inputs": { - "nix": "nix_32", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_25": { - "inputs": { - "nix": "nix_33", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_26": { - "inputs": { - "nix": "nix_34", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_27": { - "inputs": { - "nix": "nix_35", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_3": { - "inputs": { - "nix": "nix_4", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_4": { - "inputs": { - "nix": "nix_5", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_5": { - "inputs": { - "nix": "nix_6", - "nixpkgs": [ - "ctl", - "cardano-node", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1671755331, - "narHash": "sha256-hXsgJj0Cy0ZiCiYdW2OdBz5WmFyOMKuw4zyxKpgUKm4=", - "owner": "NixOS", - "repo": "hydra", - "rev": "f48f00ee6d5727ae3e488cbf9ce157460853fea8", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "hydra_6": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_7": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_8": { - "inputs": { - "nix": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nix" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1631062883, - "narHash": "sha256-JZ6/gjHyX50fHCYpXy/FrX9C0e9k8X9In5Jb/SQYlT8=", - "owner": "kreisys", - "repo": "hydra", - "rev": "785326948be4b1cc2ce77435c806521565e9af45", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "hydra-server-includes", - "repo": "hydra", - "type": "github" - } - }, - "hydra_9": { - "inputs": { - "nix": "nix_17", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "haskellNix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "incl": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_2": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_3": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "haumea", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "incl_4": { - "inputs": { - "nixlib": [ - "ctl", - "cardano-node", - "std", - "lib" - ] - }, - "locked": { - "lastModified": 1669263024, - "narHash": "sha256-E/+23NKtxAqYG/0ydYgxlgarKnxmDbg6rCMWnOBqn9Q=", - "owner": "divnix", - "repo": "incl", - "rev": "ce7bebaee048e4cd7ebdb4cee7885e00c4e2abca", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "incl", - "type": "github" - } - }, - "inclusive": { - "inputs": { - "stdlib": "stdlib" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_10": { - "inputs": { - "stdlib": "stdlib_10" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_11": { - "inputs": { - "stdlib": "stdlib_11" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_12": { - "inputs": { - "stdlib": "stdlib_12" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_2": { - "inputs": { - "stdlib": "stdlib_2" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_3": { - "inputs": { - "stdlib": "stdlib_3" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_4": { - "inputs": { - "stdlib": "stdlib_4" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_5": { - "inputs": { - "stdlib": "stdlib_5" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_6": { - "inputs": { - "stdlib": "stdlib_6" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_7": { - "inputs": { - "stdlib": "stdlib_7" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_8": { - "inputs": { - "stdlib": "stdlib_8" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inclusive_9": { - "inputs": { - "stdlib": "stdlib_9" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "inputs-check": { - "inputs": { - "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_6" - }, - "locked": { - "lastModified": 1692633913, - "narHash": "sha256-f80/49lt2hIapc9AEaTBC93jnRZe5zxlm21JXXewkko=", - "owner": "input-output-hk", - "repo": "inputs-check", - "rev": "1e9f65e56140f4e357c9abaf5311e3ea979d33e9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "inputs-check", - "type": "github" - } - }, - "iogo": { - "inputs": { - "devshell": "devshell_8", - "inclusive": "inclusive_4", - "nixpkgs": "nixpkgs_50", - "utils": "utils_13" - }, - "locked": { - "lastModified": 1652212694, - "narHash": "sha256-baAY5wKzccNsm7OCEYuySrkXRmlshokCHQjs4EdYShM=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "e465975aa368b2d919e865f71eeed02828e55471", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", - "type": "github" - } - }, - "iogo_2": { - "inputs": { - "devshell": "devshell_18", - "inclusive": "inclusive_12", - "nixpkgs": "nixpkgs_79", - "utils": "utils_27" - }, - "locked": { - "lastModified": 1658302707, - "narHash": "sha256-E0FA1CEMQlfAsmtLBRoQE7IY4ItKlBdxZ44YX0tK5Hg=", - "owner": "input-output-hk", - "repo": "bitte-iogo", - "rev": "8751660009202bc95ea3a29e304c393c140a4231", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "bitte-iogo", - "type": "github" - } - }, - "iogx": { - "inputs": { - "CHaP": [ - "ctl", - "kupo-nixos", - "CHaP" - ], - "easy-purescript-nix": "easy-purescript-nix_2", - "flake-utils": "flake-utils_49", - "hackage": "hackage_6", - "haskell-nix": "haskell-nix_5", - "iogx-template-haskell": "iogx-template-haskell", - "iogx-template-vanilla": "iogx-template-vanilla_4", - "iohk-nix": "iohk-nix_18", - "nix2container": "nix2container_22", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_30", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_16", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_15" - }, - "locked": { - "lastModified": 1714993151, - "narHash": "sha256-qnhgqo24celzlf+KjZ+oqypsCezgVZRueHbfiq73bDE=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "819ae1510a5ebdeb999c723033a2a641aa9bfd23", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell": { - "inputs": { - "iogx": "iogx_2" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1714715538, - "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_2": { - "inputs": { - "iogx": "iogx_3" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_3": { - "inputs": { - "iogx": "iogx_4" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_4": { - "inputs": { - "iogx": "iogx_7" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_5": { - "inputs": { - "iogx": "iogx_10" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_6": { - "inputs": { - "iogx": "iogx_11" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-haskell_7": { - "inputs": { - "iogx": "iogx_14" - }, - "locked": { - "dir": "templates/haskell", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/haskell", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla": { - "inputs": { - "iogx": "iogx_5" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_2": { - "inputs": { - "iogx": "iogx_6" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_3": { - "inputs": { - "iogx": "iogx_8" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_4": { - "inputs": { - "iogx": "iogx_9" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1714715538, - "narHash": "sha256-61TEMNwV6S7UdnPStEBhMwxvWqttUAojKyogfRwGGiU=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "7e7d5e69684f3c4db1cba50af6cd2d4d2ad2974a", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_5": { - "inputs": { - "iogx": "iogx_12" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_6": { - "inputs": { - "iogx": "iogx_13" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1714459006, - "narHash": "sha256-N6w7imhb7a/uVC4fNWTkHQPl4STwS3RpsIFAA1U6DPg=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "571fb8b1fd84fb8d7050349c40099dc331fded4f", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx-template-vanilla_7": { - "inputs": { - "iogx": "iogx_15" - }, - "locked": { - "dir": "templates/vanilla", - "lastModified": 1708614239, - "narHash": "sha256-7SWCZzXdjyzCspdlawv3gWsF3Sc4ELuG359USBoSz78=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "b9d68c8e45b1dab0e1a762ac9d51d49d15b724a6", - "type": "github" - }, - "original": { - "dir": "templates/vanilla", - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_10": { - "inputs": { - "CHaP": "CHaP_14", - "easy-purescript-nix": "easy-purescript-nix_11", - "flake-utils": "flake-utils_81", - "hackage": "hackage_15", - "haskell-nix": "haskell-nix_14", - "iogx-template-haskell": "iogx-template-haskell_6", - "iogx-template-vanilla": "iogx-template-vanilla_5", - "iohk-nix": "iohk-nix_13", - "nix2container": "nix2container_17", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_20", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_11", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_10" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_11": { - "inputs": { - "CHaP": "CHaP_15", - "easy-purescript-nix": "easy-purescript-nix_12", - "flake-utils": "flake-utils_83", - "hackage": "hackage_16", - "haskell-nix": "haskell-nix_15", - "iohk-nix": "iohk-nix_11", - "nix2container": "nix2container_15", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_16", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_9", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_8" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_12": { - "inputs": { - "CHaP": "CHaP_16", - "easy-purescript-nix": "easy-purescript-nix_13", - "flake-utils": "flake-utils_87", - "hackage": "hackage_17", - "haskell-nix": "haskell-nix_16", - "iohk-nix": "iohk-nix_12", - "nix2container": "nix2container_16", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_18", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_10", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_9" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_13": { - "inputs": { - "CHaP": "CHaP_17", - "easy-purescript-nix": "easy-purescript-nix_14", - "flake-utils": "flake-utils_93", - "hackage": "hackage_18", - "haskell-nix": "haskell-nix_17", - "iogx-template-haskell": "iogx-template-haskell_7", - "iogx-template-vanilla": "iogx-template-vanilla_7", - "iohk-nix": "iohk-nix_16", - "nix2container": "nix2container_20", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_26", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_14", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_13" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_14": { - "inputs": { - "CHaP": "CHaP_18", - "easy-purescript-nix": "easy-purescript-nix_15", - "flake-utils": "flake-utils_95", - "hackage": "hackage_19", - "haskell-nix": "haskell-nix_18", - "iohk-nix": "iohk-nix_14", - "nix2container": "nix2container_18", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_22", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_12", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_11" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_15": { - "inputs": { - "CHaP": "CHaP_19", - "easy-purescript-nix": "easy-purescript-nix_16", - "flake-utils": "flake-utils_99", - "hackage": "hackage_20", - "haskell-nix": "haskell-nix_19", - "iohk-nix": "iohk-nix_15", - "nix2container": "nix2container_19", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_24", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_13", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_12" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_2": { - "inputs": { - "CHaP": "CHaP_6", - "easy-purescript-nix": "easy-purescript-nix_3", - "flake-utils": "flake-utils_51", - "hackage": "hackage_7", - "haskell-nix": "haskell-nix_6", - "iogx-template-haskell": "iogx-template-haskell_2", - "iogx-template-vanilla": "iogx-template-vanilla_2", - "iohk-nix": "iohk-nix_10", - "nix2container": "nix2container_14", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_14", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_8", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_7" - }, - "locked": { - "lastModified": 1714680367, - "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_3": { - "inputs": { - "CHaP": "CHaP_7", - "easy-purescript-nix": "easy-purescript-nix_4", - "flake-utils": "flake-utils_53", - "hackage": "hackage_8", - "haskell-nix": "haskell-nix_7", - "iogx-template-haskell": "iogx-template-haskell_3", - "iogx-template-vanilla": "iogx-template-vanilla", - "iohk-nix": "iohk-nix_6", - "nix2container": "nix2container_10", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_6", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_4", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_3" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_4": { - "inputs": { - "CHaP": "CHaP_8", - "easy-purescript-nix": "easy-purescript-nix_5", - "flake-utils": "flake-utils_55", - "hackage": "hackage_9", - "haskell-nix": "haskell-nix_8", - "iohk-nix": "iohk-nix_4", - "nix2container": "nix2container_8", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_2", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_2", - "sphinxcontrib-haddock": "sphinxcontrib-haddock" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_5": { - "inputs": { - "CHaP": "CHaP_9", - "easy-purescript-nix": "easy-purescript-nix_6", - "flake-utils": "flake-utils_59", - "hackage": "hackage_10", - "haskell-nix": "haskell-nix_9", - "iohk-nix": "iohk-nix_5", - "nix2container": "nix2container_9", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_4", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_3", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_2" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_6": { - "inputs": { - "CHaP": "CHaP_10", - "easy-purescript-nix": "easy-purescript-nix_7", - "flake-utils": "flake-utils_65", - "hackage": "hackage_11", - "haskell-nix": "haskell-nix_10", - "iogx-template-haskell": "iogx-template-haskell_4", - "iogx-template-vanilla": "iogx-template-vanilla_3", - "iohk-nix": "iohk-nix_9", - "nix2container": "nix2container_13", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_12", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_7", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_6" - }, - "locked": { - "lastModified": 1714120717, - "narHash": "sha256-aqAePt4Jr9Y44XzFJuK9b1xH7z8+4gC3a9FfFrycuV8=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "105393780aa94b93cd816ddfc6f8d3dae9b9247f", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_7": { - "inputs": { - "CHaP": "CHaP_11", - "easy-purescript-nix": "easy-purescript-nix_8", - "flake-utils": "flake-utils_67", - "hackage": "hackage_12", - "haskell-nix": "haskell-nix_11", - "iohk-nix": "iohk-nix_7", - "nix2container": "nix2container_11", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_8", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_5", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_4" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_8": { - "inputs": { - "CHaP": "CHaP_12", - "easy-purescript-nix": "easy-purescript-nix_9", - "flake-utils": "flake-utils_71", - "hackage": "hackage_13", - "haskell-nix": "haskell-nix_12", - "iohk-nix": "iohk-nix_8", - "nix2container": "nix2container_12", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_10", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_6", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_5" - }, - "locked": { - "lastModified": 1704707180, - "narHash": "sha256-m3rsKAHYi3WhJVYC9XLT38yJQILRkJ03fA2L5Ej3msM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "0578c08bef2d135f6f1e88353276fd3a31acf026", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iogx_9": { - "inputs": { - "CHaP": "CHaP_13", - "easy-purescript-nix": "easy-purescript-nix_10", - "flake-utils": "flake-utils_79", - "hackage": "hackage_14", - "haskell-nix": "haskell-nix_13", - "iogx-template-haskell": "iogx-template-haskell_5", - "iogx-template-vanilla": "iogx-template-vanilla_6", - "iohk-nix": "iohk-nix_17", - "nix2container": "nix2container_21", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "haskell-nix", - "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_28", - "pre-commit-hooks-nix": "pre-commit-hooks-nix_15", - "sphinxcontrib-haddock": "sphinxcontrib-haddock_14" - }, - "locked": { - "lastModified": 1714680367, - "narHash": "sha256-ueojSYjQDF+uxxgU5Esrx5hfx28B70lViYKu3/Z++xM=", - "owner": "input-output-hk", - "repo": "iogx", - "rev": "ba3f7764e6724d5324dfd0ecdbe9ae48c980d728", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iogx", - "type": "github" - } - }, - "iohk-nix": { - "inputs": { - "blst": "blst", - "nixpkgs": "nixpkgs_7", - "secp256k1": "secp256k1", - "sodium": "sodium" - }, - "locked": { - "lastModified": 1691469905, - "narHash": "sha256-TV0p1dFGYAMl1dLJEfe/tNFjxvV2H7VgHU1I43q+b84=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "2f3760f135616ebc477d3ed74eba9b63c22f83a0", - "type": "github" - } - }, - "iohk-nix-ng": { - "inputs": { - "blst": "blst_2", - "nixpkgs": "nixpkgs_8", - "secp256k1": "secp256k1_2", - "sodium": "sodium_2" - }, - "locked": { - "lastModified": 1696471795, - "narHash": "sha256-aNNvjUtCGXaXSp5M/HSj1SOeLjqLyTRWYbIHqAEeUp0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "91f16fa8acb58b312f94977715c630d8bf77e33e", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_10": { - "inputs": { - "blst": "blst_14", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_14", - "sodium": "sodium_14" - }, - "locked": { - "lastModified": 1714467508, - "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "89387f07016fe416c16f7824715238b3d1a4390a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_11": { - "inputs": { - "blst": "blst_15", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_15", - "sodium": "sodium_15" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_12": { - "inputs": { - "blst": "blst_16", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_16", - "sodium": "sodium_16" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_13": { - "inputs": { - "blst": "blst_17", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_17", - "sodium": "sodium_17" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_14": { - "inputs": { - "blst": "blst_18", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_18", - "sodium": "sodium_18" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_15": { - "inputs": { - "blst": "blst_19", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_19", - "sodium": "sodium_19" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_16": { - "inputs": { - "blst": "blst_20", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_20", - "sodium": "sodium_20" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_17": { - "inputs": { - "blst": "blst_21", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_21", - "sodium": "sodium_21" - }, - "locked": { - "lastModified": 1714467508, - "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "89387f07016fe416c16f7824715238b3d1a4390a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_18": { - "inputs": { - "blst": "blst_22", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_22", - "sodium": "sodium_22" - }, - "locked": { - "lastModified": 1714467508, - "narHash": "sha256-FuA0HPpBMHTgg/SNC+N5a6spj/O979IBpAJCfSkZL0Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "89387f07016fe416c16f7824715238b3d1a4390a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658222743, - "narHash": "sha256-yFH01psqx30y5Ws4dBElLkxYpIxxqZx4G+jCVhsXpnA=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "9a604d01bd4420ab7f396f14d1947fbe2ce7db8b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_3": { - "inputs": { - "blst": "blst_7", - "nixpkgs": [ - "ctl", - "nixpkgs" - ], - "secp256k1": "secp256k1_7", - "sodium": "sodium_7" - }, - "locked": { - "lastModified": 1719443312, - "narHash": "sha256-JNDuUSmV/o5ck1CfnBtX8GJE/Pli4zYE73LZZ7u0E2Q=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b4025c38b609c6fb99762e2a6201e4e3488a39d3", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_4": { - "inputs": { - "blst": "blst_8", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_8", - "sodium": "sodium_8" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_5": { - "inputs": { - "blst": "blst_9", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_9", - "sodium": "sodium_9" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_6": { - "inputs": { - "blst": "blst_10", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_10", - "sodium": "sodium_10" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_7": { - "inputs": { - "blst": "blst_11", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-haskell", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_11", - "sodium": "sodium_11" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_8": { - "inputs": { - "blst": "blst_12", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_12", - "sodium": "sodium_12" - }, - "locked": { - "lastModified": 1702362799, - "narHash": "sha256-cU8cZXNuo5GRwrSvWqdaqoW5tJ2HWwDEOvWwIVPDPmo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "b426fb9e0b109a9d1dd2e1476f9e0bd8bb715142", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohk-nix_9": { - "inputs": { - "blst": "blst_13", - "nixpkgs": [ - "ctl", - "kupo-nixos", - "iogx", - "iogx-template-haskell", - "iogx", - "iogx-template-vanilla", - "iogx", - "nixpkgs" - ], - "secp256k1": "secp256k1_13", - "sodium": "sodium_13" - }, - "locked": { - "lastModified": 1713468256, - "narHash": "sha256-WfnAu7xX8gJzmTqM/8omdK4jyW+A/Ell+3C5zUN5ha8=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "5bfea9faf05d5c36ec1a049eb870cf02d37aab60", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix": { - "inputs": { - "blst": "blst_3", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-db-sync", - "nixpkgs" - ], - "secp256k1": "secp256k1_3", - "sodium": "sodium_3" - }, - "locked": { - "lastModified": 1698999258, - "narHash": "sha256-42D1BMbdyZD+lT+pWUzb5zDQyasNbMJtH/7stuPuPfE=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "73dc2bb45af6f20cfe1d962f1334eed5e84ae764", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_2": { - "inputs": { - "blst": "blst_4", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "nixpkgs" - ], - "secp256k1": "secp256k1_4", - "sodium": "sodium_4" - }, - "locked": { - "lastModified": 1684223806, - "narHash": "sha256-IyLoP+zhuyygLtr83XXsrvKyqqLQ8FHXTiySFf4FJOI=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "86421fdd89b3af43fa716ccd07638f96c6ecd1e4", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_3": { - "inputs": { - "blst": "blst_5", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "nixpkgs" - ], - "secp256k1": "secp256k1_5", - "sodium": "sodium_5" - }, - "locked": { - "lastModified": 1698746924, - "narHash": "sha256-8og+vqQPEoB2KLUtN5esGMDymT+2bT/rCHZt1NAe7y0=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "af551ca93d969d9715fa9bf86691d9a0a19e89d9", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_4": { - "inputs": { - "blst": "blst_6", - "nixpkgs": [ - "ctl", - "cardano-node", - "nixpkgs" - ], - "secp256k1": "secp256k1_6", - "sodium": "sodium_6" - }, - "locked": { - "lastModified": 1715872246, - "narHash": "sha256-G1LFsvP53twrqaC1FVard/6rjJJ3oitnpJ1E+mTZDGM=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "530c88c6f90be2191172a1b7cbc181d65112ef0a", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "node-8.11", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_5": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "cardano-wallet", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1653579289, - "narHash": "sha256-wveDdPsgB/3nAGAdFaxrcgLEpdi0aJ5kEVNtI+YqVfo=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "edb2d2df2ebe42bbdf03a0711115cf6213c9d366", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iohkNix_6": { - "inputs": { - "nixpkgs": [ - "ctl", - "db-sync", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1667394105, - "narHash": "sha256-YhS7zGd6jK/QM/+wWyj0zUBZmE3HOXAL/kpJptGYIWg=", - "owner": "input-output-hk", - "repo": "iohk-nix", - "rev": "7fc7625a9ab2ba137bc70ddbc89a13d3fdb78c8b", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "iohk-nix", - "type": "github" - } - }, - "iserv-proxy": { - "flake": false, - "locked": { - "lastModified": 1688517130, - "narHash": "sha256-hUqfxSlo+ffqVdkSZ1EDoB7/ILCL25eYkcCXW9/P3Wc=", - "ref": "hkm/remote-iserv", - "rev": "9151db2a9a61d7f5fe52ff8836f18bbd0fd8933c", - "revCount": 13, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_10": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_11": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_12": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_13": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_14": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_15": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_16": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_17": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_18": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_19": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_2": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_20": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_21": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_3": { - "flake": false, - "locked": { - "lastModified": 1670983692, - "narHash": "sha256-avLo34JnI9HNyOuauK5R69usJm+GfW3MlyGlYxZhTgY=", - "ref": "hkm/remote-iserv", - "rev": "50d0abb3317ac439a4e7495b185a64af9b7b9300", - "revCount": 10, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_4": { - "flake": false, - "locked": { - "lastModified": 1691634696, - "narHash": "sha256-MZH2NznKC/gbgBu8NgIibtSUZeJ00HTLJ0PlWKCBHb0=", - "ref": "hkm/remote-iserv", - "rev": "43a979272d9addc29fbffc2e8542c5d96e993d73", - "revCount": 14, - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - }, - "original": { - "ref": "hkm/remote-iserv", - "type": "git", - "url": "https://gitlab.haskell.org/hamishmack/iserv-proxy.git" - } - }, - "iserv-proxy_5": { - "flake": false, - "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_6": { - "flake": false, - "locked": { - "lastModified": 1717479972, - "narHash": "sha256-7vE3RQycHI1YT9LHJ1/fUaeln2vIpYm6Mmn8FTpYeVo=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2ed34002247213fc435d0062350b91bab920626e", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_7": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_8": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "iserv-proxy_9": { - "flake": false, - "locked": { - "lastModified": 1708894040, - "narHash": "sha256-Rv+PajrnuJ6AeyhtqzMN+bcR8z9+aEnrUass+N951CQ=", - "owner": "stable-haskell", - "repo": "iserv-proxy", - "rev": "2f2a318fd8837f8063a0d91f329aeae29055fba9", - "type": "github" - }, - "original": { - "owner": "stable-haskell", - "ref": "iserv-syms", - "repo": "iserv-proxy", - "type": "github" - } - }, - "kupo": { - "flake": false, - "locked": { - "lastModified": 1718734761, - "narHash": "sha256-J5eys+/VjeYqfBlcS+XW+Gzafq0/qkbOfY6b05JmFYI=", - "owner": "klarkc", - "repo": "kupo", - "rev": "d95a324f6a94a963cd91cb5d5f88ef50640e7b8d", - "type": "github" - }, - "original": { - "owner": "klarkc", - "ref": "patch-1", - "repo": "kupo", - "type": "github" - } - }, - "kupo-nixos": { - "inputs": { - "CHaP": [ - "ctl", - "CHaP" - ], - "iogx": "iogx", - "kupo": "kupo" - }, - "locked": { - "lastModified": 1718735503, - "narHash": "sha256-Dwpl5BUeGGvhH7+RcF3as7e9rzUFeHRwVGxjfj0fMAM=", - "owner": "Fourierlabs", - "repo": "kupo-nixos", - "rev": "4ab9be5d524bf2c003874aa225f20d00cb6defcf", - "type": "github" - }, - "original": { - "owner": "Fourierlabs", - "ref": "add-conway", - "repo": "kupo-nixos", - "type": "github" - } - }, - "lib": { - "locked": { - "lastModified": 1694306727, - "narHash": "sha256-26fkTOJOI65NOTNKFvtcJF9mzzf/kK9swHzfYt1Dl6Q=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "c30b6a84c0b84ec7aecbe74466033facc9ed103f", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "lowdown-src": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_10": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_11": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_12": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_13": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_14": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_15": { - "flake": false, - "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_16": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_17": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_18": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_19": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_2": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_20": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_21": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_22": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_23": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_24": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_25": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_26": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_27": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_28": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_29": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_3": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_30": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_31": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_32": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_33": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_34": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_35": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_4": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_5": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_6": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_7": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_8": { - "flake": false, - "locked": { - "lastModified": 1598695561, - "narHash": "sha256-gyH/5j+h/nWw0W8AcR2WKvNBUsiQ7QuxqSJNXAwV+8E=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "1705b4a26fbf065d9574dce47a94e8c7c79e052f", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "lowdown-src_9": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "mdbook-kroki-preprocessor": { - "flake": false, - "locked": { - "lastModified": 1661755005, - "narHash": "sha256-1TJuUzfyMycWlOQH67LR63/ll2GDZz25I3JfScy/Jnw=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "93adb5716d035829efed27f65f2f0833a7d3e76f", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "mdbook-kroki-preprocessor_2": { - "flake": false, - "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "mdbook-kroki-preprocessor_3": { - "flake": false, - "locked": { - "lastModified": 1655670640, - "narHash": "sha256-JjqdxftHBjABTkOpFl3cWUJtc/KGwkQ3NRWGLjH2oUs=", - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "rev": "bb6e607437ecc3f22fd9036acee6b797a5b45dbc", - "type": "github" - }, - "original": { - "owner": "JoelCourtney", - "repo": "mdbook-kroki-preprocessor", - "type": "github" - } - }, - "n2c": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_2": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1677330646, - "narHash": "sha256-hUYCwJneMjnxTvj30Fjow6UMJUITqHlpUGpXMPXUJsU=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "ebca8f58d450cae1a19c07701a5a8ae40afc9efc", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_3": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1685771919, - "narHash": "sha256-3lVKWrhNXjHJB6QkZ2SJaOs4X/mmYXtY6ovPVpDMOHc=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "95e2220911874064b5d809f8d35f7835184c4ddf", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_4": { - "inputs": { - "flake-utils": "flake-utils_19", - "nixpkgs": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1665039323, - "narHash": "sha256-SAh3ZjFGsaCI8FRzXQyp56qcGdAqgKEfJWPCQ0Sr7tQ=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "b008fe329ffb59b67bf9e7b08ede6ee792f2741a", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_5": { - "inputs": { - "flake-utils": "flake-utils_26", - "nixpkgs": "nixpkgs_55" - }, - "locked": { - "lastModified": 1650568002, - "narHash": "sha256-CciO5C3k/a7sbA+lW4jeiU6WGletujMjWcRzc1513tI=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2cd391fc65847ea54e3657a491c379854b556262", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "n2c_6": { - "inputs": { - "flake-utils": "flake-utils_43", - "nixpkgs": "nixpkgs_90" - }, - "locked": { - "lastModified": 1655533513, - "narHash": "sha256-MAqvv2AZbyNYGJMpV5l9ydN7k66jDErFpaKOvZ1Y7f8=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "2d47dbe633a059d75c7878f554420158712481cb", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs_5", - "nixpkgs-regression": "nixpkgs-regression" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix-cache-proxy": { - "inputs": { - "devshell": "devshell_15", - "inclusive": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "inclusive" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ], - "utils": "utils_20" - }, - "locked": { - "lastModified": 1644317729, - "narHash": "sha256-R9R1XHv69VvZ/c7lXYs18PHcnEBXS+hDfhjdkZ96lgw=", - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "rev": "378617d6b9865be96f7dfa16e0ce3f329da844ec", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-cache-proxy", - "type": "github" - } - }, - "nix-inclusive": { - "inputs": { - "stdlib": "stdlib_13" - }, - "locked": { - "lastModified": 1628098927, - "narHash": "sha256-Ft4sdf7VPL8MQtu18AAPiN2s5pUsbv+3RxqzJSa/yzg=", - "owner": "input-output-hk", - "repo": "nix-inclusive", - "rev": "13123eb7a8c3359738a4756b8d645729e8655b27", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-inclusive", - "type": "github" - } - }, - "nix-nomad": { - "inputs": { - "flake-compat": "flake-compat_8", - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-nomad_2": { - "inputs": { - "flake-compat": "flake-compat_9", - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_2", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-nomad_3": { - "inputs": { - "flake-compat": "flake-compat_14", - "flake-utils": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "nix2container", - "flake-utils" - ], - "gomod2nix": "gomod2nix_3", - "nixpkgs": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ], - "nixpkgs-lib": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1658277770, - "narHash": "sha256-T/PgG3wUn8Z2rnzfxf2VqlR1CBjInPE0l1yVzXxPnt0=", - "owner": "tristanpemble", - "repo": "nix-nomad", - "rev": "054adcbdd0a836ae1c20951b67ed549131fd2d70", - "type": "github" - }, - "original": { - "owner": "tristanpemble", - "repo": "nix-nomad", - "type": "github" - } - }, - "nix-tools": { - "flake": false, - "locked": { - "lastModified": 1644395812, - "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_2": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_3": { - "flake": false, - "locked": { - "lastModified": 1658968505, - "narHash": "sha256-UnbQ/Ig/23e9hUdDOBwYHwHgHmQawZ2uazpJ8DLIJgE=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "8a754bdcf20b20e116409c2341cf69065d083053", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix-tools_4": { - "flake": false, - "locked": { - "lastModified": 1649424170, - "narHash": "sha256-XgKXWispvv5RCvZzPb+p7e6Hy3LMuRjafKMl7kXzxGw=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "e109c94016e3b6e0db7ed413c793e2d4bdb24aa7", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, - "nix2container": { - "inputs": { - "flake-utils": "flake-utils_6", - "nixpkgs": "nixpkgs_16" - }, - "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_10": { - "inputs": { - "flake-utils": "flake-utils_62", - "nixpkgs": "nixpkgs_108" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_11": { - "inputs": { - "flake-utils": "flake-utils_68", - "nixpkgs": "nixpkgs_112" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_12": { - "inputs": { - "flake-utils": "flake-utils_72", - "nixpkgs": "nixpkgs_115" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_13": { - "inputs": { - "flake-utils": "flake-utils_74", - "nixpkgs": "nixpkgs_117" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_14": { - "inputs": { - "flake-utils": "flake-utils_76", - "nixpkgs": "nixpkgs_119" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_15": { - "inputs": { - "flake-utils": "flake-utils_84", - "nixpkgs": "nixpkgs_124" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_16": { - "inputs": { - "flake-utils": "flake-utils_88", - "nixpkgs": "nixpkgs_127" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_17": { - "inputs": { - "flake-utils": "flake-utils_90", - "nixpkgs": "nixpkgs_129" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_18": { - "inputs": { - "flake-utils": "flake-utils_96", - "nixpkgs": "nixpkgs_133" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_19": { - "inputs": { - "flake-utils": "flake-utils_100", - "nixpkgs": "nixpkgs_136" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_2": { - "inputs": { - "flake-utils": "flake-utils_7", - "nixpkgs": "nixpkgs_18" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_20": { - "inputs": { - "flake-utils": "flake-utils_102", - "nixpkgs": "nixpkgs_138" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_21": { - "inputs": { - "flake-utils": "flake-utils_104", - "nixpkgs": "nixpkgs_140" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_22": { - "inputs": { - "flake-utils": "flake-utils_106", - "nixpkgs": "nixpkgs_142" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_3": { - "inputs": { - "flake-utils": "flake-utils_10", - "nixpkgs": "nixpkgs_22" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_4": { - "inputs": { - "flake-utils": "flake-utils_12", - "nixpkgs": "nixpkgs_26" - }, - "locked": { - "lastModified": 1671269339, - "narHash": "sha256-KR2SXh4c2Y+bgbCfXjTGJ74O9/u4CAPFA0KYZHhKf5Q=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6800fff45afecc7e47c334d14cf2b2f4f25601a0", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_5": { - "inputs": { - "flake-utils": "flake-utils_17", - "nixpkgs": "nixpkgs_31" - }, - "locked": { - "lastModified": 1658567952, - "narHash": "sha256-XZ4ETYAMU7XcpEeAFP3NOl9yDXNuZAen/aIJ84G+VgA=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "60bb43d405991c1378baf15a40b5811a53e32ffa", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_6": { - "inputs": { - "flake-utils": "flake-utils_20", - "nixpkgs": "nixpkgs_35" - }, - "locked": { - "lastModified": 1712990762, - "narHash": "sha256-hO9W3w7NcnYeX8u8cleHiSpK2YJo7ecarFTUlbybl7k=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "20aad300c925639d5d6cbe30013c8357ce9f2a2e", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_7": { - "inputs": { - "flake-utils": "flake-utils_45", - "nixpkgs": "nixpkgs_93" - }, - "locked": { - "lastModified": 1653427219, - "narHash": "sha256-q6MzrIZq1BBFxYN+UQjW60LpQJXV6RIIUmO8gKRyMqg=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "11a0e14c2468720f42ca8dec3b82862abf96c837", - "type": "github" - }, - "original": { - "owner": "nlewo", - "ref": "init-nix-db", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_8": { - "inputs": { - "flake-utils": "flake-utils_56", - "nixpkgs": "nixpkgs_103" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix2container_9": { - "inputs": { - "flake-utils": "flake-utils_60", - "nixpkgs": "nixpkgs_106" - }, - "locked": { - "lastModified": 1703410130, - "narHash": "sha256-qbJQ8DtdKzFK0fZck7kX64QWkS/3tKefxGjyI+SAQa4=", - "owner": "nlewo", - "repo": "nix2container", - "rev": "6aa8491e73843ac8bf714a3904a45900f356ea44", - "type": "github" - }, - "original": { - "owner": "nlewo", - "repo": "nix2container", - "type": "github" - } - }, - "nix_10": { - "inputs": { - "lowdown-src": "lowdown-src_10", - "nixpkgs": "nixpkgs_56", - "nixpkgs-regression": "nixpkgs-regression_9" - }, - "locked": { - "lastModified": 1652510778, - "narHash": "sha256-zldZ4SiwkISFXxrbY/UdwooIZ3Z/I6qKxtpc3zD0T/o=", - "owner": "nixos", - "repo": "nix", - "rev": "65cd26eebbbf80eaf0d74092f09b737606cb4b5a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "2.8.1", - "repo": "nix", - "type": "github" - } - }, - "nix_11": { - "inputs": { - "lowdown-src": "lowdown-src_11", - "nixpkgs": "nixpkgs_58", - "nixpkgs-regression": "nixpkgs-regression_10" - }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nix_12": { - "inputs": { - "lowdown-src": "lowdown-src_12", - "nixpkgs": "nixpkgs_65", - "nixpkgs-regression": "nixpkgs-regression_11" - }, - "locked": { - "lastModified": 1644413094, - "narHash": "sha256-KLGaeSqvhuUFz6DxrB9r3w+lfp9bXIiCT9K1cqg7Ze8=", - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "rev": "52f52319ad21bdbd7a33bb85eccc83756648f110", - "type": "github" - } - }, - "nix_13": { - "inputs": { - "lowdown-src": "lowdown-src_13", - "nixpkgs": "nixpkgs_66", - "nixpkgs-regression": "nixpkgs-regression_12" - }, - "locked": { - "lastModified": 1645437800, - "narHash": "sha256-MAMIKi3sIQ0b3jzYyOb5VY29GRgv7JXl1VXoUM9xUZw=", - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "rev": "f22b9e72f51f97f8f2d334748d3e97123940a146", - "type": "github" - } - }, - "nix_14": { - "inputs": { - "lowdown-src": "lowdown-src_14", - "nixpkgs": "nixpkgs_71", - "nixpkgs-regression": "nixpkgs-regression_13" - }, - "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", - "type": "github" - } - }, - "nix_15": { - "inputs": { - "lowdown-src": "lowdown-src_15", - "nixpkgs": "nixpkgs_73" - }, - "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "type": "github" - } - }, - "nix_16": { - "inputs": { - "lowdown-src": "lowdown-src_16", - "nixpkgs": "nixpkgs_75", - "nixpkgs-regression": "nixpkgs-regression_14" - }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nix_17": { - "inputs": { - "lowdown-src": "lowdown-src_17", - "nixpkgs": "nixpkgs_87", - "nixpkgs-regression": "nixpkgs-regression_15" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_18": { - "inputs": { - "lowdown-src": "lowdown-src_18", - "nixpkgs": "nixpkgs_89", - "nixpkgs-regression": "nixpkgs-regression_16" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_19": { - "inputs": { - "lowdown-src": "lowdown-src_19", - "nixpkgs": "nixpkgs_96", - "nixpkgs-regression": "nixpkgs-regression_17" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix_2": { - "inputs": { - "flake-compat": "flake-compat_3", - "lowdown-src": "lowdown-src_2", - "nixpkgs": "nixpkgs_9", - "nixpkgs-regression": "nixpkgs-regression_2" - }, - "locked": { - "lastModified": 1693573010, - "narHash": "sha256-HBm8mR2skhPtbJ7p+ByrOZjs7SfsfZPwy75MwI1EUmk=", - "owner": "nixos", - "repo": "nix", - "rev": "5568ca5ff130a8a0bc3db5878432eb527c74dd60", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "2.17-maintenance", - "repo": "nix", - "type": "github" - } - }, - "nix_20": { - "inputs": { - "lowdown-src": "lowdown-src_20", - "nixpkgs": "nixpkgs_97", - "nixpkgs-regression": "nixpkgs-regression_18" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_21": { - "inputs": { - "lowdown-src": "lowdown-src_21", - "nixpkgs": "nixpkgs_99", - "nixpkgs-regression": "nixpkgs-regression_19" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_22": { - "inputs": { - "lowdown-src": "lowdown-src_22", - "nixpkgs": "nixpkgs_100", - "nixpkgs-regression": "nixpkgs-regression_20" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_23": { - "inputs": { - "lowdown-src": "lowdown-src_23", - "nixpkgs": "nixpkgs_101", - "nixpkgs-regression": "nixpkgs-regression_21" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_24": { - "inputs": { - "lowdown-src": "lowdown-src_24", - "nixpkgs": "nixpkgs_102", - "nixpkgs-regression": "nixpkgs-regression_22" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_25": { - "inputs": { - "lowdown-src": "lowdown-src_25", - "nixpkgs": "nixpkgs_105", - "nixpkgs-regression": "nixpkgs-regression_23" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_26": { - "inputs": { - "lowdown-src": "lowdown-src_26", - "nixpkgs": "nixpkgs_110", - "nixpkgs-regression": "nixpkgs-regression_24" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_27": { - "inputs": { - "lowdown-src": "lowdown-src_27", - "nixpkgs": "nixpkgs_111", - "nixpkgs-regression": "nixpkgs-regression_25" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_28": { - "inputs": { - "lowdown-src": "lowdown-src_28", - "nixpkgs": "nixpkgs_114", - "nixpkgs-regression": "nixpkgs-regression_26" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_29": { - "inputs": { - "lowdown-src": "lowdown-src_29", - "nixpkgs": "nixpkgs_121", - "nixpkgs-regression": "nixpkgs-regression_27" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_3": { - "inputs": { - "lowdown-src": "lowdown-src_3", - "nixpkgs": "nixpkgs_13", - "nixpkgs-regression": "nixpkgs-regression_3" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_30": { - "inputs": { - "lowdown-src": "lowdown-src_30", - "nixpkgs": "nixpkgs_122", - "nixpkgs-regression": "nixpkgs-regression_28" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_31": { - "inputs": { - "lowdown-src": "lowdown-src_31", - "nixpkgs": "nixpkgs_123", - "nixpkgs-regression": "nixpkgs-regression_29" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_32": { - "inputs": { - "lowdown-src": "lowdown-src_32", - "nixpkgs": "nixpkgs_126", - "nixpkgs-regression": "nixpkgs-regression_30" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_33": { - "inputs": { - "lowdown-src": "lowdown-src_33", - "nixpkgs": "nixpkgs_131", - "nixpkgs-regression": "nixpkgs-regression_31" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_34": { - "inputs": { - "lowdown-src": "lowdown-src_34", - "nixpkgs": "nixpkgs_132", - "nixpkgs-regression": "nixpkgs-regression_32" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_35": { - "inputs": { - "lowdown-src": "lowdown-src_35", - "nixpkgs": "nixpkgs_135", - "nixpkgs-regression": "nixpkgs-regression_33" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_4": { - "inputs": { - "lowdown-src": "lowdown-src_4", - "nixpkgs": "nixpkgs_15", - "nixpkgs-regression": "nixpkgs-regression_4" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_5": { - "inputs": { - "lowdown-src": "lowdown-src_5", - "nixpkgs": "nixpkgs_25", - "nixpkgs-regression": "nixpkgs-regression_5" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_6": { - "inputs": { - "lowdown-src": "lowdown-src_6", - "nixpkgs": "nixpkgs_34", - "nixpkgs-regression": "nixpkgs-regression_6" - }, - "locked": { - "lastModified": 1661606874, - "narHash": "sha256-9+rpYzI+SmxJn+EbYxjGv68Ucp22bdFUSy/4LkHkkDQ=", - "owner": "NixOS", - "repo": "nix", - "rev": "11e45768b34fdafdcf019ddbd337afa16127ff0f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.11.0", - "repo": "nix", - "type": "github" - } - }, - "nix_7": { - "inputs": { - "lowdown-src": "lowdown-src_7", - "nixpkgs": "nixpkgs_42", - "nixpkgs-regression": "nixpkgs-regression_7" - }, - "locked": { - "lastModified": 1646164353, - "narHash": "sha256-Nj3ARvplf0Xa+h4F5Cq1r9cc81C2UIpbAKDgJLsDmUc=", - "owner": "kreisys", - "repo": "nix", - "rev": "45677cae8d474270ecd797eb40eb1f8836981604", - "type": "github" - }, - "original": { - "owner": "kreisys", - "ref": "goodnix-maybe-dont-functor", - "repo": "nix", - "type": "github" - } - }, - "nix_8": { - "inputs": { - "lowdown-src": "lowdown-src_8", - "nixpkgs": "nixpkgs_44" - }, - "locked": { - "lastModified": 1604400356, - "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", - "owner": "NixOS", - "repo": "nix", - "rev": "cf82e14712b3be881b7c880468cd5486e8934638", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nix", - "type": "github" - } - }, - "nix_9": { - "inputs": { - "lowdown-src": "lowdown-src_9", - "nixpkgs": "nixpkgs_46", - "nixpkgs-regression": "nixpkgs-regression_8" - }, - "locked": { - "lastModified": 1645189081, - "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", - "owner": "nixos", - "repo": "nix", - "rev": "9bc03adbba5334663901c1136203bc07e4776be9", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nix", - "type": "github" - } - }, - "nixago": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago-exts": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" - } - }, - "nixago-exts_2": { - "locked": { - "lastModified": 1625557891, - "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", - "owner": "divnix", - "repo": "blank", - "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago-extensions", - "type": "github" - } - }, - "nixago_2": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1676075813, - "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", - "owner": "nix-community", - "repo": "nixago", - "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_3": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1683210100, - "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", - "owner": "nix-community", - "repo": "nixago", - "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_4": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "flake-utils" - ], - "nixago-exts": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "nixpkgs": [ - "ctl", - "cardano-node", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1661824785, - "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", - "owner": "nix-community", - "repo": "nixago", - "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_5": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixago_6": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "flake-utils" - ], - "nixago-exts": "nixago-exts_2", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "std", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1659153038, - "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", - "owner": "nix-community", - "repo": "nixago", - "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixago", - "type": "github" - } - }, - "nixlib": { - "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixlib_2": { - "locked": { - "lastModified": 1644107864, - "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixlib_3": { - "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1687420147, - "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_10": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_11": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_12": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_13": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_14": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_15": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_16": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_17": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_18": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_19": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_2": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_20": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_21": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_22": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_23": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_24": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_25": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_3": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_4": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_5": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_6": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_7": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_8": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2003_9": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_10": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_11": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_12": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_13": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_14": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_15": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_16": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_17": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_18": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_19": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_2": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_20": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_21": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_22": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_23": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_24": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_25": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_3": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_4": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_5": { - "locked": { - "lastModified": 1659914493, - "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_6": { - "locked": { - "lastModified": 1642244250, - "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_7": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_8": { - "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105_9": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_10": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_11": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_12": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_13": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_14": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_15": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_16": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_17": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_18": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_19": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_2": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_20": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_21": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_22": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_23": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_24": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_25": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_3": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_4": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_5": { - "locked": { - "lastModified": 1659446231, - "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_6": { - "locked": { - "lastModified": 1644510859, - "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_7": { - "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_8": { - "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111_9": { - "locked": { - "lastModified": 1648744337, - "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_10": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_11": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_12": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_13": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_14": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_15": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_16": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_17": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_18": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_19": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_2": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_20": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_21": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_22": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_3": { - "locked": { - "lastModified": 1682600000, - "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_4": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_5": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_6": { - "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_7": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_8": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205_9": { - "locked": { - "lastModified": 1685573264, - "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "380be19fbd2d9079f677978361792cb25e8a3635", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_10": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_11": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_12": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_13": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_14": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_15": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_16": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_17": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_18": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_19": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_2": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_20": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_21": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_3": { - "locked": { - "lastModified": 1682682915, - "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_4": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_5": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_6": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_7": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_8": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2211_9": { - "locked": { - "lastModified": 1688392541, - "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_10": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_11": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_12": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_13": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_14": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_15": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_16": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_17": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_18": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_19": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_2": { - "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_20": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_3": { - "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_4": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_5": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_6": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_7": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_8": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2305_9": { - "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_10": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_11": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_12": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_13": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_14": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_15": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_16": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_17": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_2": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_3": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_4": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_5": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_6": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_7": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_8": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2311_9": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-docker": { - "locked": { - "lastModified": 1652739558, - "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", - "type": "github" - } - }, - "nixpkgs-lib": { - "locked": { - "dir": "lib", - "lastModified": 1671359686, - "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_2": { - "locked": { - "dir": "lib", - "lastModified": 1682879489, - "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_3": { - "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_4": { - "locked": { - "dir": "lib", - "lastModified": 1690881714, - "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9e1960bc196baf6881340d53dccb203a951745a2", - "type": "github" - }, - "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-lib_5": { - "locked": { - "lastModified": 1714640452, - "narHash": "sha256-QBx10+k6JWz6u7VsohfSw8g8hjdBZEf8CFzXH1/1Z94=", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/50eb7ecf4cd0a5756d7275c8ba36790e5bd53e33.tar.gz" - } - }, - "nixpkgs-regression": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_10": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_11": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_12": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_13": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_14": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_15": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_16": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_17": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_18": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_19": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_2": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_20": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_21": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_22": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_23": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_24": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_25": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_26": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_27": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_28": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_29": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_3": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_30": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_31": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_32": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_33": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_4": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_5": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_6": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - } - }, - "nixpkgs-regression_7": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_8": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-regression_9": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1690066826, - "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_10": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_11": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_12": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_13": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_14": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_15": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_16": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_17": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_18": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_19": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_2": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_20": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_21": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_22": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_23": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_24": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_25": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_26": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_27": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_28": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_29": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_3": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_30": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_31": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_4": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_5": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_6": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_7": { - "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_8": { - "locked": { - "lastModified": 1690680713, - "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", - "type": "github" - } - }, - "nixpkgs-stable_9": { - "locked": { - "lastModified": 1685801374, - "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1690720142, - "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_10": { - "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_11": { - "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_12": { - "locked": { - "lastModified": 1648219316, - "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_13": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_14": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_15": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_16": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_17": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_18": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_19": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_2": { - "locked": { - "lastModified": 1696577711, - "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_20": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_21": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_22": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_23": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_24": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_25": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_26": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_27": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_28": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_3": { - "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_4": { - "locked": { - "lastModified": 1682656005, - "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_5": { - "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_6": { - "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", - "type": "github" - } - }, - "nixpkgs-unstable_7": { - "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_8": { - "locked": { - "lastModified": 1656338871, - "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable_9": { - "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_10": { - "locked": { - "lastModified": 1690026219, - "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_100": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_101": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_102": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_103": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_104": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_105": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_106": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_107": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_108": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_109": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_11": { - "locked": { - "lastModified": 1675249806, - "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_110": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_111": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_112": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_113": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_114": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_115": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_116": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_117": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_118": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_119": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_12": { - "locked": { - "lastModified": 1636823747, - "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_120": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_121": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_122": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_123": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_124": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_125": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_126": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_127": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_128": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_129": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_13": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_130": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_131": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_132": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_133": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_134": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_135": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_136": { - "locked": { - "lastModified": 1697269602, - "narHash": "sha256-dSzV7Ud+JH4DPVD9od53EgDrxUVQOcSj4KGjggCDVJI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9cb540e9c1910d74a7e10736277f6eb9dff51c81", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_137": { - "locked": { - "lastModified": 1689261696, - "narHash": "sha256-LzfUtFs9MQRvIoQ3MfgSuipBVMXslMPH/vZ+nM40LkA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "df1eee2aa65052a18121ed4971081576b25d6b5c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_138": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_139": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_14": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_140": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_141": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_142": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_143": { - "locked": { - "lastModified": 1710765496, - "narHash": "sha256-p7ryWEeQfMwTB6E0wIUd5V2cFTgq+DRRBz2hYGnJZyA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e367f7a1fb93137af22a3908f00b9a35e2d286a7", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_15": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_16": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_17": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_18": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_19": { - "locked": { - "lastModified": 1674407282, - "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { - "locked": { - "lastModified": 1677543769, - "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_20": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_21": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_22": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_23": { - "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_24": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_25": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_26": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_27": { - "locked": { - "lastModified": 1681001314, - "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", - "type": "github" - } - }, - "nixpkgs_28": { - "locked": { - "lastModified": 1675940568, - "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_29": { - "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1645013224, - "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_30": { - "locked": { - "lastModified": 1653581809, - "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_31": { - "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_32": { - "locked": { - "lastModified": 1665087388, - "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_33": { - "locked": { - "lastModified": 1642336556, - "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_34": { - "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_35": { - "locked": { - "lastModified": 1712920918, - "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_36": { - "locked": { - "lastModified": 1708343346, - "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9312b935a538684049cb668885e60f15547d4c5f", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "release-23.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_37": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_38": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_39": { - "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1680945546, - "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_40": { - "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_41": { - "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_42": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_43": { - "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - }, - "original": { - "owner": "nixos", - "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", - "type": "github" - } - }, - "nixpkgs_44": { - "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", - "type": "github" + "nix_8": { + "inputs": { + "lowdown-src": "lowdown-src_8", + "nixpkgs": "nixpkgs_45" }, - "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" - } - }, - "nixpkgs_45": { "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "lastModified": 1604400356, + "narHash": "sha256-PX1cSYv0Y6I2tidcuEwJTo8X5vAvf9vjdfHO51LD/J0=", "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "repo": "nix", + "rev": "cf82e14712b3be881b7c880468cd5486e8934638", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-21.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_46": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_47": { - "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "repo": "nix", "type": "github" } }, - "nixpkgs_48": { - "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", - "type": "github" + "nix_9": { + "inputs": { + "lowdown-src": "lowdown-src_9", + "nixpkgs": "nixpkgs_47", + "nixpkgs-regression": "nixpkgs-regression_8" }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_49": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "lastModified": 1645189081, + "narHash": "sha256-yZA+07JTG9Z610DceiYyzm+C08yHhcIgfl/Cp7lY3ho=", "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "repo": "nix", + "rev": "9bc03adbba5334663901c1136203bc07e4776be9", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "repo": "nix", "type": "github" } }, - "nixpkgs_5": { + "nixago": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.05-small", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs_50": { + "nixago-exts": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "nixpkgs_51": { + "nixago-exts_2": { "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "lastModified": 1625557891, + "narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=", + "owner": "divnix", + "repo": "blank", + "rev": "5a5d2684073d9f563072ed07c871d577a6c614a8", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago-extensions", "type": "github" } }, - "nixpkgs_52": { + "nixago_2": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1676075813, + "narHash": "sha256-X/aIT8Qc8UCqnxJvaZykx3CJ0ZnDFvO+dqp/7fglZWo=", + "owner": "nix-community", + "repo": "nixago", + "rev": "9cab4dde31ec2f2c05d702ea8648ce580664e906", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs_53": { + "nixago_3": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1652576347, - "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "lastModified": 1683210100, + "narHash": "sha256-bhGDOlkWtlhVECpoOog4fWiFJmLCpVEg09a40aTjCbw=", "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "bdf553800c9c34ed00641785b02038f67f44d671", + "repo": "nixago", + "rev": "1da60ad9412135f9ed7a004669fdcf3d378ec630", "type": "github" }, "original": { "owner": "nix-community", - "repo": "nixpkgs.lib", + "repo": "nixago", "type": "github" } }, - "nixpkgs_54": { + "nixago_4": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "flake-utils" + ], + "nixago-exts": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "nixpkgs": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "lastModified": 1661824785, + "narHash": "sha256-/PnwdWoO/JugJZHtDUioQp3uRiWeXHUdgvoyNbXesz8=", + "owner": "nix-community", + "repo": "nixago", + "rev": "8c1f9e5f1578d4b2ea989f618588d62a335083c3", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs_55": { + "nixago_5": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "std", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "NixOS", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs_56": { - "locked": { - "lastModified": 1645296114, - "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", - "type": "github" + "nixago_6": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "flake-utils" + ], + "nixago-exts": "nixago-exts_2", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "std", + "nixpkgs" + ] }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_57": { "locked": { - "lastModified": 1652559422, - "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", + "lastModified": 1659153038, + "narHash": "sha256-g4npRU8YBR7CAqMF0SyXtkHnoY9q+NcxvZwcc6UvLBc=", + "owner": "nix-community", + "repo": "nixago", + "rev": "608abdd0fe6729d1f7244e03f1a7f8a5d6408898", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-21.11", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixago", "type": "github" } }, - "nixpkgs_58": { + "nixlib": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" } }, - "nixpkgs_59": { + "nixlib_2": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "lastModified": 1644107864, + "narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "58eabcf65e7dba189eb0013f86831c159e3b2be6", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs_6": { + "nixlib_3": { "locked": { - "lastModified": 1692339729, - "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-23.05", - "repo": "nixpkgs", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "nixpkgs_60": { + "nixpkgs": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "release-23.05", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_61": { + "nixpkgs-2003": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_62": { + "nixpkgs-2003_10": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_63": { + "nixpkgs-2003_2": { "locked": { - "lastModified": 1646331602, - "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_64": { + "nixpkgs-2003_3": { "locked": { - "lastModified": 1643381941, - "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_65": { + "nixpkgs-2003_4": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" - } - }, - "nixpkgs_66": { - "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" } }, - "nixpkgs_67": { + "nixpkgs-2003_5": { "locked": { - "lastModified": 1644486793, - "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_68": { + "nixpkgs-2003_6": { "locked": { - "lastModified": 1627969475, - "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_69": { + "nixpkgs-2003_7": { "locked": { - "lastModified": 1644972330, - "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_7": { + "nixpkgs-2003_8": { "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_70": { + "nixpkgs-2003_9": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1620055814, + "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-20.03-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_71": { + "nixpkgs-2105": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_72": { + "nixpkgs-2105_10": { "locked": { - "lastModified": 1638452135, - "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", - "owner": "nixos", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", - "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "nixpkgs_73": { + "nixpkgs-2105_2": { "locked": { - "lastModified": 1602702596, - "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0d20345219790533ebe06571f82ed6b034db31", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-20.09-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_74": { + "nixpkgs-2105_3": { "locked": { - "lastModified": 1638887115, - "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-21.11", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_75": { + "nixpkgs-2105_4": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_76": { + "nixpkgs-2105_5": { "locked": { - "lastModified": 1641909823, - "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", - "owner": "nixos", + "lastModified": 1659914493, + "narHash": "sha256-lkA5X3VNMKirvA+SUzvEhfA7XquWLci+CGi505YFAIs=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", + "rev": "022caabb5f2265ad4006c1fa5b1ebe69fb0c3faf", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_77": { + "nixpkgs-2105_6": { "locked": { - "lastModified": 1647350163, - "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", - "owner": "nixos", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_78": { + "nixpkgs-2105_7": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_79": { + "nixpkgs-2105_8": { "locked": { - "lastModified": 1646506091, - "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "lastModified": 1655034179, + "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", + "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_8": { + "nixpkgs-2105_9": { "locked": { - "lastModified": 1684171562, - "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", - "owner": "nixos", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "nixos", - "ref": "release-22.11", + "owner": "NixOS", + "ref": "nixpkgs-21.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_80": { + "nixpkgs-2111": { "locked": { - "lastModified": 1658119717, - "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", - "owner": "nixos", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_81": { + "nixpkgs-2111_10": { "locked": { - "lastModified": 1644525281, - "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", - "owner": "nixos", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-unstable", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_82": { + "nixpkgs-2111_2": { "locked": { - "lastModified": 1646470760, - "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", - "owner": "nixos", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", - "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "nixpkgs_83": { + "nixpkgs-2111_3": { "locked": { - "lastModified": 1619531122, - "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_84": { + "nixpkgs-2111_4": { "locked": { - "lastModified": 1656461576, - "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-21.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_85": { + "nixpkgs-2111_5": { "locked": { - "lastModified": 1655567057, - "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "lastModified": 1659446231, + "narHash": "sha256-hekabNdTdgR/iLsgce5TGWmfIDZ86qjPhxDg/8TlzhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", + "rev": "eabc38219184cc3e04a974fe31857d8e0eac098d", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_86": { + "nixpkgs-2111_6": { "locked": { - "lastModified": 1656401090, - "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_87": { + "nixpkgs-2111_7": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_88": { + "nixpkgs-2111_8": { "locked": { - "lastModified": 1656809537, - "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", - "owner": "nix-community", - "repo": "nixpkgs.lib", - "rev": "40e271f69106323734b55e2ba74f13bebde324c0", + "lastModified": 1656782578, + "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "nixpkgs.lib", + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_89": { + "nixpkgs-2111_9": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1648744337, + "narHash": "sha256-bYe1dFJAXovjqiaPKrmAbSBEK5KUkgwVaZcTbSoJ7hg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "0a58eebd8ec65ffdef2ce9562784123a73922052", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-21.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1670461440, - "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "nixpkgs-2205": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.11-small", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_90": { + "nixpkgs-2205_2": { "locked": { - "lastModified": 1654807842, - "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_91": { + "nixpkgs-2205_3": { "locked": { - "lastModified": 1656947410, - "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "lastModified": 1682600000, + "narHash": "sha256-ha4BehR1dh8EnXSoE1m/wyyYVvHI9txjW4w5/oxsW5Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", + "rev": "50fc86b75d2744e1ab3837ef74b53f103a9b55a0", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_92": { + "nixpkgs-2205_4": { "locked": { - "lastModified": 1658311025, - "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", - "owner": "nixos", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_93": { + "nixpkgs-2205_5": { "locked": { - "lastModified": 1642451377, - "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_94": { + "nixpkgs-2205_6": { "locked": { - "lastModified": 1653920503, - "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", - "owner": "nixos", + "lastModified": 1657876628, + "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", + "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixos-22.05", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_95": { + "nixpkgs-2205_7": { "locked": { - "lastModified": 1650469885, - "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", - "owner": "nixos", + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", "type": "github" }, "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", + "owner": "NixOS", + "ref": "nixpkgs-22.05-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_96": { + "nixpkgs-2211": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "id": "nixpkgs", - "ref": "nixos-21.05-small", - "type": "indirect" + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", + "type": "github" } }, - "nixpkgs_97": { + "nixpkgs-2211_2": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_98": { + "nixpkgs-2211_3": { "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "lastModified": 1682682915, + "narHash": "sha256-haR0u/j/nUvlMloYlaOYq1FMXTvkNHw+wGxc+0qXisM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "rev": "09f1b33fcc0f59263137e23e935c1bb03ec920e4", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_99": { + "nixpkgs-2211_4": { "locked": { - "lastModified": 1657693803, - "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05-small", + "ref": "nixpkgs-22.11-darwin", "repo": "nixpkgs", "type": "github" } }, - "nomad": { - "inputs": { - "nix": "nix_8", - "nixpkgs": "nixpkgs_45", - "utils": "utils_9" - }, + "nixpkgs-2211_5": { "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-driver-nix": { - "inputs": { - "devshell": "devshell_6", - "inclusive": "inclusive_2", - "nix": "nix_9", - "nixpkgs": "nixpkgs_47", - "utils": "utils_10" - }, + "nixpkgs-2211_6": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "NixOS", + "ref": "nixpkgs-22.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-driver-nix_2": { - "inputs": { - "devshell": "devshell_9", - "inclusive": "inclusive_5", - "nix": "nix_11", - "nixpkgs": "nixpkgs_59", - "utils": "utils_15" - }, + "nixpkgs-2305": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1690680713, + "narHash": "sha256-NXCWA8N+GfSQyoN7ZNiOgq/nDJKOp5/BHEpiZP8sUZw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b81af66deb21f73a70c67e5ea189568af53b1e8c", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-driver-nix_3": { - "inputs": { - "devshell": "devshell_16", - "inclusive": "inclusive_10", - "nix": "nix_16", - "nixpkgs": "nixpkgs_76", - "utils": "utils_24" - }, + "nixpkgs-2305_2": { "locked": { - "lastModified": 1648029666, - "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", - "owner": "input-output-hk", - "repo": "nomad-driver-nix", - "rev": "0be4fea24e1b747389b2e79813891805fed521b6", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-driver-nix", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-follower": { - "inputs": { - "devshell": "devshell_7", - "inclusive": "inclusive_3", - "nixpkgs": "nixpkgs_48", - "utils": "utils_11" - }, + "nixpkgs-2305_3": { "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-follower_2": { - "inputs": { - "devshell": "devshell_10", - "inclusive": "inclusive_6", - "nixpkgs": "nixpkgs_60", - "utils": "utils_16" - }, + "nixpkgs-2305_4": { "locked": { - "lastModified": 1658244176, - "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad-follower_3": { - "inputs": { - "devshell": "devshell_17", - "inclusive": "inclusive_11", - "nixpkgs": "nixpkgs_77", - "utils": "utils_25" - }, + "nixpkgs-2305_5": { "locked": { - "lastModified": 1649836589, - "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", - "owner": "input-output-hk", - "repo": "nomad-follower", - "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", + "lastModified": 1705033721, + "narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "nomad-follower", + "owner": "NixOS", + "ref": "nixpkgs-23.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nomad_2": { - "inputs": { - "nix": "nix_15", - "nixpkgs": "nixpkgs_74", - "utils": "utils_23" - }, + "nixpkgs-2311": { "locked": { - "lastModified": 1648128770, - "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", - "owner": "input-output-hk", - "repo": "nomad", - "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "release-1.2.6", - "repo": "nomad", + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nosys": { + "nixpkgs-2311_2": { "locked": { - "lastModified": 1667881534, - "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", - "owner": "divnix", - "repo": "nosys", - "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", + "lastModified": 1719957072, + "narHash": "sha256-gvFhEf5nszouwLAkT9nWsDzocUTqLWHuL++dvNjMp9I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7144d6241f02d171d25fba3edeaf15e0f2592105", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nosys_2": { + "nixpkgs-2405": { "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1720122915, + "narHash": "sha256-Nby8WWxj0elBu1xuRaUcRjPi/rU3xVbkAt2kj4QwX2U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "835cf2d3f37989c5db6585a28de967a667a75fb1", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "NixOS", + "ref": "nixpkgs-24.05-darwin", + "repo": "nixpkgs", "type": "github" } }, - "nosys_3": { + "nixpkgs-arion": { "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1721923017, + "narHash": "sha256-Mwbxpq0WTPL9sV2gMgZwnNvjlUmt5Z+EF4KWYAsQWB4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "059d72964ac2eb17a272efef5f96afaa147221f4", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "nosys_4": { + "nixpkgs-docker": { "locked": { - "lastModified": 1668010795, - "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", - "owner": "divnix", - "repo": "nosys", - "rev": "feade0141487801c71ff55623b421ed535dbdefa", + "lastModified": 1652739558, + "narHash": "sha256-znGkjGugajqF/sFS+H4+ENmGTaVPFE0uu1JjQZJLEaQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" }, "original": { - "owner": "divnix", - "repo": "nosys", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ff691ed9ba21528c1b4e034f36a04027e4522c58", "type": "github" } }, - "offchain-metadata-tools-service": { - "flake": false, + "nixpkgs-lib": { "locked": { - "lastModified": 1684160858, - "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", - "owner": "input-output-hk", - "repo": "offchain-metadata-tools", - "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", + "dir": "lib", + "lastModified": 1671359686, + "narHash": "sha256-3MpC6yZo+Xn9cPordGz2/ii6IJpP2n8LE8e/ebUXLrs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04f574a1c0fde90b51bf68198e2297ca4e7cccf4", "type": "github" }, "original": { - "owner": "input-output-hk", - "ref": "feat-add-password-to-db-conn-string", - "repo": "offchain-metadata-tools", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ogmios": { - "flake": false, + "nixpkgs-lib_2": { "locked": { - "lastModified": 1657544501, - "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v5.5.2", - "repo": "ogmios", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ogmios_2": { - "flake": false, + "nixpkgs-lib_3": { "locked": { - "lastModified": 1717661787, - "narHash": "sha256-AnIxPug+DnPHn69z+Vz+Us2a+Z3LnkI+LJaIyUm4c5w=", - "owner": "CardanoSolutions", - "repo": "ogmios", - "rev": "4dbf1f34d9ea046dda50bf0c58bd276f80f41784", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { - "owner": "CardanoSolutions", - "ref": "v6.4.0", - "repo": "ogmios", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix": { - "flake": false, + "nixpkgs-lib_4": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "dir": "lib", + "lastModified": 1690881714, + "narHash": "sha256-h/nXluEqdiQHs1oSgkOOWF+j8gcJMWhwnZ9PFabN6q0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9e1960bc196baf6881340d53dccb203a951745a2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_10": { - "flake": false, + "nixpkgs-lib_5": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "dir": "lib", + "lastModified": 1696019113, + "narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_11": { - "flake": false, + "nixpkgs-regression": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_12": { - "flake": false, + "nixpkgs-regression_10": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_13": { - "flake": false, + "nixpkgs-regression_11": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" + }, + "original": { + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_14": { - "flake": false, + "nixpkgs-regression_12": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_15": { - "flake": false, + "nixpkgs-regression_13": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_16": { - "flake": false, + "nixpkgs-regression_14": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_17": { - "flake": false, + "nixpkgs-regression_15": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_18": { - "flake": false, + "nixpkgs-regression_16": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_19": { - "flake": false, + "nixpkgs-regression_17": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_2": { - "flake": false, + "nixpkgs-regression_18": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_20": { - "flake": false, + "nixpkgs-regression_2": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_21": { - "flake": false, + "nixpkgs-regression_3": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_22": { - "flake": false, + "nixpkgs-regression_4": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_23": { - "flake": false, + "nixpkgs-regression_5": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_24": { - "flake": false, + "nixpkgs-regression_6": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" } }, - "old-ghc-nix_25": { - "flake": false, + "nixpkgs-regression_7": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_3": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "nixpkgs-regression_8": { + "locked": { + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_4": { - "flake": false, + "nixpkgs-regression_9": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" + "id": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "indirect" } }, - "old-ghc-nix_5": { - "flake": false, + "nixpkgs-stable": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1690066826, + "narHash": "sha256-6L2qb+Zc0BFkh72OS9uuX637gniOjzU6qCDBpjB2LGY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ce45b591975d070044ca24e3003c830d26fea1c8", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_6": { - "flake": false, + "nixpkgs-unstable": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1690720142, + "narHash": "sha256-GywuiZjBKfFkntQwpNQfL+Ksa2iGjPprBGL0/psgRZM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3acb5c4264c490e7714d503c7166a3fde0c51324", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_7": { - "flake": false, + "nixpkgs-unstable_10": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_8": { - "flake": false, + "nixpkgs-unstable_11": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1657888067, + "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "old-ghc-nix_9": { - "flake": false, + "nixpkgs-unstable_12": { "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", "type": "github" }, "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib": { - "flake": false, + "nixpkgs-unstable_13": { "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1720181791, + "narHash": "sha256-i4vJL12/AdyuQuviMMd1Hk2tsGt02hDNhA0Zj1m16N8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "4284c2b73c8bce4b46a6adf23e16d9e2ec8da4bb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_2": { - "flake": false, + "nixpkgs-unstable_2": { "locked": { - "lastModified": 1675186784, - "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", + "lastModified": 1696577711, + "narHash": "sha256-94VRjvClIKDym1QRqPkX5LTQoAwZ1E6QE/3dWtOXSIQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a2eb207f45e4a14a1e3019d9e3863d1e208e2295", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_3": { - "flake": false, + "nixpkgs-unstable_3": { "locked": { - "lastModified": 1713366514, - "narHash": "sha256-0hNlv+grFTE+TeXIbxSY97QoEEaUupOKMusZ4PesdrQ=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "19d83fa8eab1c0b7765f736eb4e8569d84d3e39d", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_4": { - "flake": false, + "nixpkgs-unstable_4": { "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1682656005, + "narHash": "sha256-fYplYo7so1O+rSQ2/aS+SbTPwLTeoUXk4ekKNtSl4P8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6806b63e824f84b0f0e60b6d660d4ae753de0477", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_5": { - "flake": false, + "nixpkgs-unstable_5": { "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ops-lib_6": { - "flake": false, + "nixpkgs-unstable_6": { "locked": { - "lastModified": 1649848729, - "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", - "owner": "input-output-hk", - "repo": "ops-lib", - "rev": "517c747f4d5d56e626f62618803bfccb09f14019", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ops-lib", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, - "paisano": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "nixpkgs" - ], - "nosys": "nosys_2", - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "yants" - ] - }, + "nixpkgs-unstable_7": { "locked": { - "lastModified": 1677437285, - "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", - "owner": "paisano-nix", - "repo": "core", - "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "core", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano-actions": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "nixpkgs" - ] - }, + "nixpkgs-unstable_8": { "locked": { - "lastModified": 1677306424, - "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", - "owner": "paisano-nix", - "repo": "actions", - "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", + "lastModified": 1656338871, + "narHash": "sha256-+LOvZFt3MpWtrxXLH4igQtRVzyD43VnuTJjDVbt7phY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "819e4d63fc7f337a822a049fd055cd7615a5e0d6", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "actions", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano-mdbook-preprocessor": { - "inputs": { - "crane": "crane", - "fenix": "fenix_2", - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "paisano-actions": "paisano-actions", - "std": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] - }, + "nixpkgs-unstable_9": { "locked": { - "lastModified": 1680654400, - "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", - "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "mdbook-paisano-preprocessor", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano-tui": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "std": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std" - ] - }, + "nixpkgs_10": { "locked": { - "lastModified": 1677533603, - "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", + "lastModified": 1670461440, + "narHash": "sha256-jy1LB8HOMKGJEGXgzFRLDU1CBGL0/LlkolgnqIsF0D8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "04a75b2eecc0acf6239acf9dd04485ff8d14f425", "type": "github" }, "original": { - "owner": "paisano-nix", - "repo": "tui", + "owner": "NixOS", + "ref": "nixos-22.11-small", + "repo": "nixpkgs", "type": "github" } }, - "paisano-tui_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "std": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std" - ] - }, + "nixpkgs_11": { "locked": { - "lastModified": 1681847764, - "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", + "lastModified": 1690026219, + "narHash": "sha256-oOduRk/kzQxOBknZXTLSEYd7tk+GoKvr8wV6Ab+t4AU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f465da166263bc0d4b39dfd4ca28b777c92d4b73", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "tui", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano-tui_3": { - "flake": false, + "nixpkgs_12": { "locked": { - "lastModified": 1708637035, - "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", - "owner": "paisano-nix", - "repo": "tui", - "rev": "231761b260587a64817e4ffae3afc15defaa15db", + "lastModified": 1675249806, + "narHash": "sha256-u8Rcqekusl3pMZm68hZqr6zozI8Ug5IxqOiqDLAlu1k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "79feedf38536de2a27d13fe2eaf200a9c05193ba", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "v0.5.0", - "repo": "tui", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "paisano_2": { - "inputs": { - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "nixpkgs" - ], - "nosys": "nosys_3", - "yants": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "yants" - ] - }, + "nixpkgs_13": { "locked": { - "lastModified": 1686862844, - "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", - "owner": "paisano-nix", - "repo": "core", - "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", + "lastModified": 1636823747, + "narHash": "sha256-oWo1nElRAOZqEf90Yek2ixdHyjD+gqtS/pAgwaQ9UhQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f6a2ed2082d9a51668c86ba27d0b5496f7a2ea93", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.1.1", - "repo": "core", + "owner": "nixos", + "repo": "nixpkgs", "type": "github" } }, - "paisano_3": { - "inputs": { - "call-flake": "call-flake", - "nixpkgs": [ - "ctl", - "cardano-node", - "std", - "nixpkgs" - ], - "nosys": "nosys_4", - "yants": [ - "ctl", - "cardano-node", - "std", - "yants" - ] - }, + "nixpkgs_14": { "locked": { - "lastModified": 1708640854, - "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", - "owner": "paisano-nix", - "repo": "core", - "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "paisano-nix", - "ref": "0.2.0", - "repo": "core", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "poetry2nix": { - "inputs": { - "flake-utils": "flake-utils_32", - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte-cells", - "cicero", - "nixpkgs" - ] - }, + "nixpkgs_15": { "locked": { - "lastModified": 1641849362, - "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", - "owner": "nix-community", - "repo": "poetry2nix", - "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "nix-community", - "ref": "fetched-projectdir-test", - "repo": "poetry2nix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "pre-commit-hooks": { - "inputs": { - "flake-utils": "flake-utils_38", - "nixpkgs": "nixpkgs_83" - }, + "nixpkgs_16": { "locked": { - "lastModified": 1639823344, - "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix": { - "inputs": { - "flake-compat": "flake-compat_13", - "gitignore": "gitignore", - "nixpkgs": [ - "ctl", - "cardano-nix", - "nixpkgs" - ], - "nixpkgs-stable": [ - "ctl", - "cardano-nix", - "nixpkgs" - ] - }, + "nixpkgs_17": { "locked": { - "lastModified": 1716213921, - "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_10": { - "inputs": { - "flake-compat": "flake-compat_46", - "flake-utils": "flake-utils_89", - "gitignore": "gitignore_10", - "nixpkgs": "nixpkgs_128", - "nixpkgs-stable": "nixpkgs-stable_19" - }, + "nixpkgs_18": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_11": { - "inputs": { - "flake-compat": "flake-compat_47", - "flake-utils": "flake-utils_91", - "gitignore": "gitignore_11", - "nixpkgs": "nixpkgs_130", - "nixpkgs-stable": "nixpkgs-stable_21" - }, + "nixpkgs_19": { "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_12": { - "inputs": { - "flake-compat": "flake-compat_50", - "flake-utils": "flake-utils_97", - "gitignore": "gitignore_12", - "nixpkgs": "nixpkgs_134", - "nixpkgs-stable": "nixpkgs-stable_23" - }, + "nixpkgs_2": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1687420147, + "narHash": "sha256-NILbmZVsoP2Aw0OAIXdbYXrWc/qggIDDyIwZ01yUx+Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d449a456ba7d81038fc9ec9141eae7ee3aaf2982", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_13": { - "inputs": { - "flake-compat": "flake-compat_52", - "flake-utils": "flake-utils_101", - "gitignore": "gitignore_13", - "nixpkgs": "nixpkgs_137", - "nixpkgs-stable": "nixpkgs-stable_25" - }, + "nixpkgs_20": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1674407282, + "narHash": "sha256-2qwc8mrPINSFdWffPK+ji6nQ9aGnnZyHSItVcYDZDlk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ab1254087f4cdf4af74b552d7fc95175d9bdbb49", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_14": { - "inputs": { - "flake-compat": "flake-compat_53", - "flake-utils": "flake-utils_103", - "gitignore": "gitignore_14", - "nixpkgs": "nixpkgs_139", - "nixpkgs-stable": "nixpkgs-stable_27" - }, + "nixpkgs_21": { "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_15": { - "inputs": { - "flake-compat": "flake-compat_54", - "flake-utils": "flake-utils_105", - "gitignore": "gitignore_15", - "nixpkgs": "nixpkgs_141", - "nixpkgs-stable": "nixpkgs-stable_29" - }, + "nixpkgs_22": { "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_16": { - "inputs": { - "flake-compat": "flake-compat_55", - "flake-utils": "flake-utils_107", - "gitignore": "gitignore_16", - "nixpkgs": "nixpkgs_143", - "nixpkgs-stable": "nixpkgs-stable_31" - }, + "nixpkgs_23": { "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_2": { - "inputs": { - "flake-compat": "flake-compat_30", - "flake-utils": "flake-utils_57", - "gitignore": "gitignore_2", - "nixpkgs": "nixpkgs_104", - "nixpkgs-stable": "nixpkgs-stable_3" - }, + "nixpkgs_24": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_3": { - "inputs": { - "flake-compat": "flake-compat_32", - "flake-utils": "flake-utils_61", - "gitignore": "gitignore_3", - "nixpkgs": "nixpkgs_107", - "nixpkgs-stable": "nixpkgs-stable_5" + "nixpkgs_25": { + "locked": { + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", + "type": "github" }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_26": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_4": { - "inputs": { - "flake-compat": "flake-compat_33", - "flake-utils": "flake-utils_63", - "gitignore": "gitignore_4", - "nixpkgs": "nixpkgs_109", - "nixpkgs-stable": "nixpkgs-stable_7" - }, + "nixpkgs_27": { "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_5": { - "inputs": { - "flake-compat": "flake-compat_36", - "flake-utils": "flake-utils_69", - "gitignore": "gitignore_5", - "nixpkgs": "nixpkgs_113", - "nixpkgs-stable": "nixpkgs-stable_9" - }, + "nixpkgs_28": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1681001314, + "narHash": "sha256-5sDnCLdrKZqxLPK4KA8+f4A3YKO/u6ElpMILvX0g72c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "367c0e1086a4eb4502b24d872cea2c7acdd557f4", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "pre-commit-hooks-nix_6": { - "inputs": { - "flake-compat": "flake-compat_38", - "flake-utils": "flake-utils_73", - "gitignore": "gitignore_6", - "nixpkgs": "nixpkgs_116", - "nixpkgs-stable": "nixpkgs-stable_11" - }, + "nixpkgs_29": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1675940568, + "narHash": "sha256-epG6pOT9V0kS+FUqd7R6/CWkgnZx2DMT5Veqo+y6G3c=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6ccc4a59c3f1b56d039d93da52696633e641bc71", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_7": { - "inputs": { - "flake-compat": "flake-compat_39", - "flake-utils": "flake-utils_75", - "gitignore": "gitignore_7", - "nixpkgs": "nixpkgs_118", - "nixpkgs-stable": "nixpkgs-stable_13" - }, + "nixpkgs_3": { "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "lastModified": 1677543769, + "narHash": "sha256-LwbqS8vGisXl2WHpK9r5+kodr0zoIT8F2YB0R4y1TsA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b26d52c9feb6476580016e78935cbf96eb3e2115", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_8": { - "inputs": { - "flake-compat": "flake-compat_40", - "flake-utils": "flake-utils_77", - "gitignore": "gitignore_8", - "nixpkgs": "nixpkgs_120", - "nixpkgs-stable": "nixpkgs-stable_15" - }, + "nixpkgs_30": { "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "pre-commit-hooks-nix_9": { - "inputs": { - "flake-compat": "flake-compat_44", - "flake-utils": "flake-utils_85", - "gitignore": "gitignore_9", - "nixpkgs": "nixpkgs_125", - "nixpkgs-stable": "nixpkgs-stable_17" - }, + "nixpkgs_31": { "locked": { - "lastModified": 1703426812, - "narHash": "sha256-aODSOH8Og8ne4JylPJn+hZ6lyv6K7vE5jFo4KAGIebM=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "7f35ec30d16b38fe0eed8005933f418d1a4693ee", + "lastModified": 1653581809, + "narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "83658b28fe638a170a19b8933aa008b30640fbd1", "type": "github" }, "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ragenix": { - "inputs": { - "agenix": "agenix_3", - "flake-utils": "flake-utils_23", - "nixpkgs": "nixpkgs_49", - "rust-overlay": "rust-overlay_2" - }, + "nixpkgs_32": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "ragenix_2": { - "inputs": { - "agenix": "agenix_4", - "flake-utils": "flake-utils_25", - "nixpkgs": "nixpkgs_52", - "rust-overlay": "rust-overlay_3" - }, + "nixpkgs_33": { "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1665087388, + "narHash": "sha256-FZFPuW9NWHJteATOf79rZfwfRn5fE0wi9kRzvGfDHPA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "95fda953f6db2e9496d2682c4fc7b82f959878f7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "ragenix_3": { - "inputs": { - "agenix": "agenix_5", - "flake-utils": "flake-utils_27", - "nixpkgs": "nixpkgs_61", - "rust-overlay": "rust-overlay_4" - }, + "nixpkgs_34": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1642336556, + "narHash": "sha256-QSPPbFEwy0T0DrIuSzAACkaANPQaR1lZR/nHZGz9z04=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f3d9d4bd898cca7d04af2ae4f6ef01f2219df3d6", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "ragenix_4": { - "inputs": { - "agenix": "agenix_7", - "flake-utils": "flake-utils_34", - "nixpkgs": "nixpkgs_78", - "rust-overlay": "rust-overlay_5" - }, + "nixpkgs_35": { "locked": { - "lastModified": 1641119695, - "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", - "owner": "yaxitech", - "repo": "ragenix", - "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "yaxitech", - "repo": "ragenix", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "ragenix_5": { - "inputs": { - "agenix": "agenix_8", - "flake-utils": "flake-utils_36", - "nixpkgs": "nixpkgs_81", - "rust-overlay": "rust-overlay_6" - }, + "nixpkgs_36": { "locked": { - "lastModified": 1645147603, - "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", - "owner": "input-output-hk", - "repo": "ragenix", - "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", + "lastModified": 1712920918, + "narHash": "sha256-1yxFvUcJfUphK9V91KufIQom7gCsztza0H4Rz2VCWUU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "92323443a56f4e9fc4e4b712e3119f66d0969297", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "ragenix", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "root": { - "inputs": { - "ctl": "ctl", - "flake-compat": "flake-compat_56", - "nixpkgs": [ - "ctl", - "nixpkgs" - ] - } - }, - "rust-analyzer-src": { - "flake": false, + "nixpkgs_37": { "locked": { - "lastModified": 1645205556, - "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", + "lastModified": 1708343346, + "narHash": "sha256-qlzHvterVRzS8fS0ophQpkh0rqw0abijHEOAKm0HmV0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9312b935a538684049cb668885e60f15547d4c5f", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nixos", + "ref": "release-23.11", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_2": { - "flake": false, + "nixpkgs_38": { "locked": { - "lastModified": 1677221702, - "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "rust-analyzer-src_3": { - "flake": false, + "nixpkgs_39": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_4": { - "flake": false, + "nixpkgs_4": { "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1645013224, + "narHash": "sha256-b7OEC8vwzJv3rsz9pwnTX2LQDkeOWz2DbKypkVvNHXc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b66b39216b1fef2d8c33cc7a5c72d8da80b79970", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_5": { - "flake": false, + "nixpkgs_40": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "rust-analyzer-src_6": { - "flake": false, + "nixpkgs_41": { "locked": { - "lastModified": 1660579619, - "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_7": { - "flake": false, + "nixpkgs_42": { "locked": { - "lastModified": 1645024434, - "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "rust-analyzer-src_8": { - "flake": false, + "nixpkgs_43": { "locked": { - "lastModified": 1649178056, - "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", - "owner": "rust-analyzer", - "repo": "rust-analyzer", - "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "rust-analyzer", - "ref": "nightly", - "repo": "rust-analyzer", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "rust-overlay": { - "inputs": { - "flake-utils": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "paisano-mdbook-preprocessor", - "crane", - "nixpkgs" - ] - }, + "nixpkgs_44": { "locked": { - "lastModified": 1675391458, - "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "rust-overlay_2": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "nixpkgs_45": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "rust-overlay_3": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + "nixpkgs_46": { "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "rust-overlay_4": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "nixpkgs_47": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "rust-overlay_5": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "bitte", - "ragenix", - "nixpkgs" - ] - }, + "nixpkgs_48": { "locked": { - "lastModified": 1641017392, - "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "4000e09a515c0f046a1b8b067f7324111187b115", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } - }, - "rust-overlay_6": { - "inputs": { - "flake-utils": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "flake-utils" - ], - "nixpkgs": [ - "ctl", - "db-sync", - "cardano-world", - "capsules", - "ragenix", - "nixpkgs" - ] - }, + }, + "nixpkgs_49": { "locked": { - "lastModified": 1644633594, - "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "oxalica", - "repo": "rust-overlay", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1": { - "flake": false, + "nixpkgs_5": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1680945546, + "narHash": "sha256-8FuaH5t/aVi/pR1XxnF0qi4WwMYC+YxlfdsA0V+TEuQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d9f759f2ea8d265d974a6e1259bd510ac5844c5d", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_10": { - "flake": false, + "nixpkgs_50": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_11": { - "flake": false, + "nixpkgs_51": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_12": { - "flake": false, + "nixpkgs_52": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_13": { - "flake": false, + "nixpkgs_53": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_14": { - "flake": false, + "nixpkgs_54": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1652576347, + "narHash": "sha256-52Wu7hkcIRcS4UenSSrt01J2sAbbQ6YqxZIDpuEPL/c=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "bdf553800c9c34ed00641785b02038f67f44d671", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "secp256k1_15": { - "flake": false, + "nixpkgs_55": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_16": { - "flake": false, + "nixpkgs_56": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_17": { - "flake": false, + "nixpkgs_57": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1645296114, + "narHash": "sha256-y53N7TyIkXsjMpOG7RhvqJFGDacLs9HlyHeSTBioqYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "530a53dcbc9437363471167a5e4762c5fcfa34a1", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "secp256k1_18": { - "flake": false, + "nixpkgs_58": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1652559422, + "narHash": "sha256-jPVTNImBTUIFdtur+d4IVot6eXmsvtOcBm0TzxmhWPk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8b3398bc7587ebb79f93dfeea1b8c574d3c6dba1", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_19": { - "flake": false, + "nixpkgs_59": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_2": { - "flake": false, + "nixpkgs_60": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_20": { - "flake": false, + "nixpkgs_61": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_21": { - "flake": false, + "nixpkgs_62": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_22": { - "flake": false, + "nixpkgs_63": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_3": { - "flake": false, + "nixpkgs_64": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1646331602, + "narHash": "sha256-cRuytTfel52z947yKfJcZU7zbQBgM16qqTf+oJkVwtg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ad267cc9cf3d5a6ae63940df31eb31382d6356e6", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_4": { - "flake": false, + "nixpkgs_65": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1643381941, + "narHash": "sha256-pHTwvnN4tTsEKkWlXQ8JMY423epos8wUOhthpwJjtpc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5efc8ca954272c4376ac929f4c5ffefcc20551d5", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_5": { - "flake": false, + "nixpkgs_66": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "secp256k1_6": { - "flake": false, + "nixpkgs_67": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "secp256k1_7": { - "flake": false, + "nixpkgs_68": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "secp256k1_8": { - "flake": false, + "nixpkgs_69": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1627969475, + "narHash": "sha256-MhVtkVt1MFfaDY3ObJu54NBcsaPk19vOBZ8ouhjO4qs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bd27e2e8316ac6eab11aa35c586e743286f23ecf", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "secp256k1_9": { - "flake": false, + "nixpkgs_7": { "locked": { - "lastModified": 1683999695, - "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", - "owner": "bitcoin-core", - "repo": "secp256k1", - "rev": "acf5c55ae6a94e5ca847e07def40427547876101", + "lastModified": 1692339729, + "narHash": "sha256-TUK76/Pqm9qIDjEGd27Lz9EiBIvn5F70JWDmEQ4Y5DQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "ae521bd4e460b076a455dca8b13f4151489a725c", "type": "github" }, "original": { - "owner": "bitcoin-core", - "ref": "v0.3.2", - "repo": "secp256k1", + "owner": "nixos", + "ref": "nixos-23.05", + "repo": "nixpkgs", "type": "github" } }, - "sodium": { - "flake": false, + "nixpkgs_70": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1644972330, + "narHash": "sha256-6V2JFpTUzB9G+KcqtUR1yl7f6rd9495YrFECslEmbGw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "19574af0af3ffaf7c9e359744ed32556f34536bd", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_10": { - "flake": false, + "nixpkgs_71": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_11": { - "flake": false, + "nixpkgs_72": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sodium_12": { - "flake": false, + "nixpkgs_73": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1638452135, + "narHash": "sha256-5Il6hgrTgcWIsB7zug0yDFccYXx7pJCw8cwJdXMuLfM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "43cdc5b364511eabdcad9fde639777ffd9e5bab1", "type": "github" } }, - "sodium_13": { - "flake": false, + "nixpkgs_74": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1602702596, + "narHash": "sha256-fqJ4UgOb4ZUnCDIapDb4gCrtAah5Rnr2/At3IzMitig=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0d20345219790533ebe06571f82ed6b034db31", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-20.09-small", + "type": "indirect" } }, - "sodium_14": { - "flake": false, + "nixpkgs_75": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1638887115, + "narHash": "sha256-emjtIeqyJ84Eb3X7APJruTrwcfnHQKs55XGljj62prs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1bd4bbd49bef217a3d1adea43498270d6e779d65", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "NixOS", + "ref": "nixos-21.11", + "repo": "nixpkgs", "type": "github" } }, - "sodium_15": { - "flake": false, + "nixpkgs_76": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sodium_16": { - "flake": false, + "nixpkgs_77": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1641909823, + "narHash": "sha256-Uxo+Wm6c/ijNhaJlYtFLJG9mh75FYZaBreMC2ZE0nEY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "f0f67400bc49c44f305d6fe17698a2f1ce1c29a0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_17": { - "flake": false, + "nixpkgs_78": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1647350163, + "narHash": "sha256-OcMI+PFEHTONthXuEQNddt16Ml7qGvanL3x8QOl2Aao=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "3eb07eeafb52bcbf02ce800f032f18d666a9498d", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_18": { - "flake": false, + "nixpkgs_79": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_19": { - "flake": false, + "nixpkgs_8": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", "type": "github" } }, - "sodium_2": { - "flake": false, + "nixpkgs_80": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1646506091, + "narHash": "sha256-sWNAJE2m+HOh1jtXlHcnhxsj6/sXrHgbqVNcVRlveK4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3e644bd62489b516292c816f70bf0052c693b3c7", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_20": { - "flake": false, + "nixpkgs_81": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1658119717, + "narHash": "sha256-4upOZIQQ7Bc4CprqnHsKnqYfw+arJeAuU+QcpjYBXW0=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "9eb60f25aff0d2218c848dd4574a0ab5e296cabe", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_21": { - "flake": false, + "nixpkgs_82": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_22": { - "flake": false, + "nixpkgs_83": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1646470760, + "narHash": "sha256-dQISyucVCCPaFioUhy5ZgfBz8rOMKGI8k13aPDFTqEs=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1fc7212a2c3992eedc6eedf498955c321ad81cc2", "type": "github" } }, - "sodium_3": { - "flake": false, + "nixpkgs_84": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1619531122, + "narHash": "sha256-ovm5bo6PkZzNKh2YGXbRKYIjega0EjiEP0YDwyeXEYU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "bb80d578e8ad3cb5a607f468ac00cc546d0396dc", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "sodium_4": { - "flake": false, + "nixpkgs_85": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1656461576, + "narHash": "sha256-rlmmw6lIlkMQIiB+NsnO8wQYWTfle8TA41UREPLP5VY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf3ab54b4afe2b7477faa1dd0b65bf74c055d70c", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sodium_5": { - "flake": false, + "nixpkgs_86": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1655567057, + "narHash": "sha256-Cc5hQSMsTzOHmZnYm8OSJ5RNUp22bd5NADWLHorULWQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e0a42267f73ea52adc061a64650fddc59906fc99", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "sodium_6": { - "flake": false, + "nixpkgs_87": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1656401090, + "narHash": "sha256-bUS2nfQsvTQW2z8SK7oEFSElbmoBahOPtbXPm0AL3I4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "16de63fcc54e88b9a106a603038dd5dd2feb21eb", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "type": "indirect" } }, - "sodium_7": { - "flake": false, + "nixpkgs_88": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sodium_8": { - "flake": false, + "nixpkgs_89": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1656809537, + "narHash": "sha256-pwXBYG3ThN4ccJjvcdNdonQ8Wyv0y/iYdnuesiFUY1U=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "40e271f69106323734b55e2ba74f13bebde324c0", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nix-community", + "repo": "nixpkgs.lib", "type": "github" } }, - "sodium_9": { - "flake": false, + "nixpkgs_9": { "locked": { - "lastModified": 1675156279, - "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "libsodium", - "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", + "owner": "nixos", + "ref": "release-22.11", + "repo": "nixpkgs", "type": "github" } }, - "sops-nix": { - "inputs": { - "nixpkgs": "nixpkgs_10", - "nixpkgs-stable": "nixpkgs-stable" - }, + "nixpkgs_90": { "locked": { - "lastModified": 1690199016, - "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sphinxcontrib-haddock": { - "flake": false, + "nixpkgs_91": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1654807842, + "narHash": "sha256-ADymZpr6LuTEBXcy6RtFHcUZdjKTBRTMYwu19WOx17E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc909087cc3386955f21b4665731dbdaceefb1d8", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_10": { - "flake": false, + "nixpkgs_92": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1656947410, + "narHash": "sha256-htDR/PZvjUJGyrRJsVqDmXR8QeoswBaRLzHt13fd0iY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e8d47977286a44955262adbc76f2c8a66e7419d5", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_11": { - "flake": false, + "nixpkgs_93": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1658311025, + "narHash": "sha256-GqagY5YmaZB3YaO41kKcQhe5RcpS83wnsW8iCu5Znqo=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cd8d1784506a7c7eb0796772b73437e0b82fad57", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_12": { - "flake": false, + "nixpkgs_94": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1642451377, + "narHash": "sha256-hvAuYDUN8XIrcQKE6wDw4LjTCcwrTp2B1i1i/5vfDMQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e5b47c5c21336e3fdd887d24c7e34363fa09c6d7", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_13": { - "flake": false, + "nixpkgs_95": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1653920503, + "narHash": "sha256-BBeCZwZImtjP3oYy4WogkQYy5OxNyfNciVSc1AfZgLQ=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a634c8f6c1fbf9b9730e01764999666f3436f10a", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "nixos", + "ref": "nixos-22.05", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_14": { - "flake": false, + "nixpkgs_96": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1650469885, + "narHash": "sha256-BuILRZ6pzMnGey8/irbjGq1oo3vIvZa1pitSdZCmIXA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "df78cc4e2a46fca75d14508a5d2ed3494add28ff", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_15": { - "flake": false, + "nixpkgs_97": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1632864508, + "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" + "id": "nixpkgs", + "ref": "nixos-21.05-small", + "type": "indirect" } }, - "sphinxcontrib-haddock_2": { - "flake": false, + "nixpkgs_98": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1657693803, + "narHash": "sha256-G++2CJ9u0E7NNTAi9n5G8TdDmGJXcIjkJ3NF8cetQB8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "365e1b3a859281cf11b94f87231adeabbdd878a2", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "ref": "nixos-22.05-small", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_3": { - "flake": false, + "nixpkgs_99": { "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } }, - "sphinxcontrib-haddock_4": { - "flake": false, + "nomad": { + "inputs": { + "nix": "nix_8", + "nixpkgs": "nixpkgs_46", + "utils": "utils_9" + }, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", + "owner": "input-output-hk", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "sphinxcontrib-haddock_5": { - "flake": false, + "nomad-driver-nix": { + "inputs": { + "devshell": "devshell_6", + "inclusive": "inclusive_2", + "nix": "nix_9", + "nixpkgs": "nixpkgs_48", + "utils": "utils_10" + }, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "sphinxcontrib-haddock_6": { - "flake": false, + "nomad-driver-nix_2": { + "inputs": { + "devshell": "devshell_9", + "inclusive": "inclusive_5", + "nix": "nix_11", + "nixpkgs": "nixpkgs_60", + "utils": "utils_15" + }, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "sphinxcontrib-haddock_7": { - "flake": false, + "nomad-driver-nix_3": { + "inputs": { + "devshell": "devshell_16", + "inclusive": "inclusive_10", + "nix": "nix_16", + "nixpkgs": "nixpkgs_77", + "utils": "utils_24" + }, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1648029666, + "narHash": "sha256-kShItLLtoWLqE+6Uzc8171a+NXST4arZgxEP0SYPp44=", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", + "rev": "0be4fea24e1b747389b2e79813891805fed521b6", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "repo": "nomad-driver-nix", "type": "github" } }, - "sphinxcontrib-haddock_8": { - "flake": false, - "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", - "type": "github" + "nomad-follower": { + "inputs": { + "devshell": "devshell_7", + "inclusive": "inclusive_3", + "nixpkgs": "nixpkgs_49", + "utils": "utils_11" }, - "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "type": "github" - } - }, - "sphinxcontrib-haddock_9": { - "flake": false, "locked": { - "lastModified": 1594136664, - "narHash": "sha256-O9YT3iCUBHP3CEF88VDLLCO2HSP3HqkNA2q2939RnVY=", - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", - "rev": "f3956b3256962b2d27d5a4e96edb7951acf5de34", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { - "owner": "michaelpj", - "repo": "sphinxcontrib-haddock", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "stable": { + "nomad-follower_2": { + "inputs": { + "devshell": "devshell_10", + "inclusive": "inclusive_6", + "nixpkgs": "nixpkgs_61", + "utils": "utils_16" + }, "locked": { - "lastModified": 1669735802, - "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "731cc710aeebecbf45a258e977e8b68350549522", + "lastModified": 1658244176, + "narHash": "sha256-oM+7WdbXcTiDEfuuiiVLlJi/MTRgSBwFdzVkFWsC8so=", + "owner": "input-output-hk", + "repo": "nomad-follower", + "rev": "bd8cc28c94ba8bd48c4d4be5ab14f3904328dde3", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-22.11", - "repo": "nixpkgs", + "owner": "input-output-hk", + "repo": "nomad-follower", "type": "github" } }, - "stackage": { - "flake": false, + "nomad-follower_3": { + "inputs": { + "devshell": "devshell_17", + "inclusive": "inclusive_11", + "nixpkgs": "nixpkgs_78", + "utils": "utils_25" + }, "locked": { - "lastModified": 1701043780, - "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", + "lastModified": 1649836589, + "narHash": "sha256-0mKWIfF7RtkwiJv2NlWKisdyivsSlHMTAQ3P72RSD3k=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", + "repo": "nomad-follower", + "rev": "18cafe87df773e61a6ce300d9ff91dee4aeae053", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "nomad-follower", "type": "github" } }, - "stackage_10": { - "flake": false, + "nomad_2": { + "inputs": { + "nix": "nix_15", + "nixpkgs": "nixpkgs_75", + "utils": "utils_23" + }, "locked": { - "lastModified": 1714954836, - "narHash": "sha256-ksReW99DOMNsNdRYDp/GIC2np/PVoqIIeuGbCB5YoFQ=", + "lastModified": 1648128770, + "narHash": "sha256-iv5Zjddi28OJH7Kh8/oGJ0k32PQXiY+56qXKiLIxSEI=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "991de0dd2e48574c7aff96ea0b2315973c4d3458", + "repo": "nomad", + "rev": "beb504f6c8bd832e1d4509e4104187774b8ecfc0", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "ref": "release-1.2.6", + "repo": "nomad", "type": "github" } }, - "stackage_11": { - "flake": false, + "nosys": { "locked": { - "lastModified": 1714608979, - "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", + "lastModified": 1667881534, + "narHash": "sha256-FhwJ15uPLRsvaxtt/bNuqE/ykMpNAPF0upozFKhTtXM=", + "owner": "divnix", + "repo": "nosys", + "rev": "2d0d5207f6a230e9d0f660903f8db9807b54814f", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "stackage_12": { - "flake": false, + "nosys_2": { "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "stackage_13": { - "flake": false, + "nosys_3": { "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "stackage_14": { - "flake": false, + "nosys_4": { "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1668010795, + "narHash": "sha256-JBDVBnos8g0toU7EhIIqQ1If5m/nyBqtHhL3sicdPwI=", + "owner": "divnix", + "repo": "nosys", + "rev": "feade0141487801c71ff55623b421ed535dbdefa", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "divnix", + "repo": "nosys", "type": "github" } }, - "stackage_15": { + "offchain-metadata-tools-service": { "flake": false, "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", + "lastModified": 1684160858, + "narHash": "sha256-2pu/T4uoXBxhI47PrOS6zHRZRwaSM6qA87HJySwwIBo=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "repo": "offchain-metadata-tools", + "rev": "a68c12b10fe5ed9802defb4a6ca80919b695d945", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "ref": "feat-add-password-to-db-conn-string", + "repo": "offchain-metadata-tools", "type": "github" } }, - "stackage_16": { + "ogmios": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1657544501, + "narHash": "sha256-fAQEj/toAIyKTQWgw/fTVe3wpCsBnCCJgcQ7+QiMpO4=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "a0dfd03117afe4db5daa7ebb818310d6bcef2990", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "CardanoSolutions", + "ref": "v5.5.2", + "repo": "ogmios", "type": "github" } }, - "stackage_17": { + "ogmios_2": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1720778275, + "narHash": "sha256-OpUeVbztfLy+9d2M5w2Jgx1b/IhDNAQdlr/eP1iKUQI=", + "owner": "CardanoSolutions", + "repo": "ogmios", + "rev": "63a9e9d33eadbca22d1ecc90b9623b962148d174", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "CardanoSolutions", + "ref": "v6.5.0", + "repo": "ogmios", "type": "github" } }, - "stackage_18": { + "old-ghc-nix": { "flake": false, "locked": { - "lastModified": 1714608979, - "narHash": "sha256-KvfGkQRNmB72dmPBIIeceGQL9YWdDdONqnD+/9ct/qk=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "2e43529038da2739a45612f8c1d02f3e3403f9b1", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_19": { + "old-ghc-nix_10": { "flake": false, "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_2": { + "old-ghc-nix_2": { "flake": false, "locked": { - "lastModified": 1685491814, - "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_20": { + "old-ghc-nix_3": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_21": { + "old-ghc-nix_4": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_22": { + "old-ghc-nix_5": { "flake": false, "locked": { - "lastModified": 1713831135, - "narHash": "sha256-GOd1a9OTizOmVZ9zwOPrCA3ziwtREkpoxH08NamSHl8=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "391894bde8a64cd8600ca3b44ea177772fd0daf7", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_23": { + "old-ghc-nix_6": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_24": { + "old-ghc-nix_7": { "flake": false, "locked": { - "lastModified": 1703635755, - "narHash": "sha256-lLvI2HgVSYAPlsxF1zOb+VYBLc9pse0+W49ShuPi/jY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "ce032ad63ef03ace9f481c508b461743271dfa3e", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_3": { + "old-ghc-nix_8": { "flake": false, "locked": { - "lastModified": 1700438989, - "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_4": { + "old-ghc-nix_9": { "flake": false, "locked": { - "lastModified": 1718756571, - "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "027672fb6fd45828b0e623c8152572d4058429ad", + "lastModified": 1631092763, + "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", + "owner": "angerman", + "repo": "old-ghc-nix", + "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", "type": "github" }, "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", + "owner": "angerman", + "ref": "master", + "repo": "old-ghc-nix", "type": "github" } }, - "stackage_5": { + "ops-lib": { "flake": false, "locked": { - "lastModified": 1646010978, - "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "stackage_6": { + "ops-lib_2": { "flake": false, "locked": { - "lastModified": 1655255731, - "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "lastModified": 1675186784, + "narHash": "sha256-HqDtrvk1l7YeREzCSEpUtChtlEgT6Tww9WrJiozjukc=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", + "repo": "ops-lib", + "rev": "5be29ed53b2a4cbbf4cf326fa2e9c1f2b754d26d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "stackage_7": { + "ops-lib_3": { "flake": false, "locked": { - "lastModified": 1659402917, - "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "lastModified": 1713366514, + "narHash": "sha256-0hNlv+grFTE+TeXIbxSY97QoEEaUupOKMusZ4PesdrQ=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", + "repo": "ops-lib", + "rev": "19d83fa8eab1c0b7765f736eb4e8569d84d3e39d", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "stackage_8": { + "ops-lib_4": { "flake": false, "locked": { - "lastModified": 1650936094, - "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "stackage_9": { + "ops-lib_5": { "flake": false, "locked": { - "lastModified": 1719102283, - "narHash": "sha256-pon+cXgMWPlCiBx9GlRcjsjTHbCc8fDVgOGb3Z7qhRM=", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "7df45e0bd9852810d8070f9c5257f8e7a4677b91", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { "owner": "input-output-hk", - "repo": "stackage.nix", + "repo": "ops-lib", "type": "github" } }, - "statix": { - "inputs": { - "fenix": "fenix", - "nixpkgs": "nixpkgs_3" - }, + "ops-lib_6": { + "flake": false, "locked": { - "lastModified": 1676888642, - "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", - "owner": "nerdypepper", - "repo": "statix", - "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", + "lastModified": 1649848729, + "narHash": "sha256-5zN9gpn+DwdB67bcHfDD8zgMnR0EaJd2JVNMyL6J1N0=", + "owner": "input-output-hk", + "repo": "ops-lib", + "rev": "517c747f4d5d56e626f62618803bfccb09f14019", "type": "github" }, "original": { - "owner": "nerdypepper", - "repo": "statix", + "owner": "input-output-hk", + "repo": "ops-lib", "type": "github" } }, - "std": { + "paisano": { "inputs": { - "arion": [ - "ctl", - "cardano-nix", - "cardano-node-8.1.1", - "tullia", - "std", - "blank" - ], - "blank": "blank", - "devshell": "devshell", - "dmerge": "dmerge", - "flake-utils": "flake-utils_8", - "incl": "incl", - "makes": [ + "nixpkgs": [ "ctl", "cardano-nix", - "cardano-node-8.1.1", + "cardano-node-8.7.3", + "cardano-automation", "tullia", "std", - "blank" + "nixpkgs" ], - "microvm": [ + "nosys": "nosys_2", + "yants": [ "ctl", "cardano-nix", - "cardano-node-8.1.1", + "cardano-node-8.7.3", + "cardano-automation", "tullia", "std", - "blank" - ], - "n2c": "n2c", - "nixago": "nixago", - "nixpkgs": "nixpkgs_20", - "nosys": "nosys", - "yants": "yants" + "yants" + ] }, "locked": { - "lastModified": 1674526466, - "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", - "owner": "divnix", - "repo": "std", - "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", + "lastModified": 1677437285, + "narHash": "sha256-YGfMothgUq1T9wMJYEhOSvdIiD/8gLXO1YcZA6hyIWU=", + "owner": "paisano-nix", + "repo": "core", + "rev": "5f2fc05e98e001cb1cf9535ded09e05d90cec131", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "repo": "core", "type": "github" } }, - "std_2": { + "paisano-actions": { "inputs": { - "arion": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "blank": "blank_2", - "devshell": "devshell_2", - "dmerge": "dmerge_2", - "flake-utils": "flake-utils_11", - "incl": "incl_2", - "makes": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "cardano-automation", - "tullia", - "std", - "blank" - ], - "microvm": [ + "nixpkgs": [ "ctl", "cardano-nix", "cardano-node-8.7.3", - "cardano-automation", - "tullia", "std", - "blank" - ], - "n2c": "n2c_2", - "nixago": "nixago_2", - "nixpkgs": "nixpkgs_23", - "paisano": "paisano", - "paisano-tui": "paisano-tui", - "yants": "yants_2" + "paisano-mdbook-preprocessor", + "nixpkgs" + ] }, "locked": { - "lastModified": 1677533652, - "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", - "owner": "divnix", - "repo": "std", - "rev": "490542f624412662e0411d8cb5a9af988ef56633", + "lastModified": 1677306424, + "narHash": "sha256-H9/dI2rGEbKo4KEisqbRPHFG2ajF8Tm111NPdKGIf28=", + "owner": "paisano-nix", + "repo": "actions", + "rev": "65ec4e080b3480167fc1a748c89a05901eea9a9b", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "repo": "actions", "type": "github" } }, - "std_3": { + "paisano-mdbook-preprocessor": { "inputs": { - "arion": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "blank": "blank_3", - "devshell": "devshell_3", - "dmerge": "dmerge_3", - "flake-utils": "flake-utils_13", - "haumea": "haumea", - "incl": "incl_3", - "makes": [ - "ctl", - "cardano-nix", - "cardano-node-8.7.3", - "std", - "blank" - ], - "microvm": [ + "crane": "crane", + "fenix": "fenix_2", + "nixpkgs": [ "ctl", "cardano-nix", "cardano-node-8.7.3", - "std", - "blank" - ], - "n2c": "n2c_3", - "nixago": "nixago_3", - "nixpkgs": "nixpkgs_28", - "paisano": "paisano_2", - "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", - "paisano-tui": "paisano-tui_2", - "yants": "yants_3" + "std", + "nixpkgs" + ], + "paisano-actions": "paisano-actions", + "std": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] }, "locked": { - "lastModified": 1687300684, - "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", - "owner": "divnix", - "repo": "std", - "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", + "lastModified": 1680654400, + "narHash": "sha256-Qdpio+ldhUK3zfl22Mhf8HUULdUOJXDWDdO7MIK69OU=", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", + "rev": "11a8fc47f574f194a7ae7b8b98001f6143ba4cf1", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "repo": "mdbook-paisano-preprocessor", "type": "github" } }, - "std_4": { + "paisano-tui": { "inputs": { - "blank": "blank_4", - "devshell": "devshell_5", - "dmerge": "dmerge_4", - "flake-utils": "flake-utils_18", - "makes": [ + "nixpkgs": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.7.3", "cardano-automation", "tullia", "std", "blank" ], - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", - "microvm": [ + "std": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.7.3", "cardano-automation", "tullia", - "std", - "blank" - ], - "n2c": "n2c_4", - "nixago": "nixago_4", - "nixpkgs": "nixpkgs_32", - "yants": "yants_4" + "std" + ] }, "locked": { - "lastModified": 1665513321, - "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", - "owner": "divnix", - "repo": "std", - "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", + "lastModified": 1677533603, + "narHash": "sha256-Nq1dH/qn7Wg/Tj1+id+ZM3o0fzqonW73jAgY3mCp35M=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "802958d123b0a5437441be0cab1dee487b0ed3eb", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "repo": "tui", "type": "github" } }, - "std_5": { + "paisano-tui_2": { "inputs": { - "arion": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "blank": "blank_5", - "devshell": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "dmerge": "dmerge_5", - "haumea": "haumea_2", - "incl": "incl_4", - "lib": "lib", - "makes": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "microvm": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "n2c": [ - "ctl", - "cardano-node", - "std", - "blank" - ], - "nixago": [ + "nixpkgs": [ "ctl", - "cardano-node", + "cardano-nix", + "cardano-node-8.7.3", "std", "blank" ], - "nixpkgs": "nixpkgs_36", - "paisano": "paisano_3", - "paisano-tui": "paisano-tui_3", - "terranix": [ + "std": [ "ctl", - "cardano-node", - "std", - "blank" - ], - "yants": "yants_5" + "cardano-nix", + "cardano-node-8.7.3", + "std" + ] }, "locked": { - "lastModified": 1715201063, - "narHash": "sha256-LcLYV5CDhIiJs3MfxGZFKsXPR4PtfnY4toZ75GM+2Pw=", - "owner": "divnix", - "repo": "std", - "rev": "b6924a7d37a46fc1dda8efe405040e27ecf1bbd6", + "lastModified": 1681847764, + "narHash": "sha256-mdd7PJW1BZvxy0cIKsPfAO+ohVl/V7heE5ZTAHzTdv8=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "3096bad91cae73ab8ab3367d31f8a143d248a244", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "tui", "type": "github" } }, - "std_6": { - "inputs": { - "devshell": "devshell_11", - "dmerge": "dmerge_6", - "flake-utils": "flake-utils_28", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", - "nixago": "nixago_5", - "nixpkgs": "nixpkgs_62", - "yants": "yants_7" - }, + "paisano-tui_3": { + "flake": false, "locked": { - "lastModified": 1661370377, - "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", - "owner": "divnix", - "repo": "std", - "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", + "lastModified": 1708637035, + "narHash": "sha256-R19YURSK+MY/Rw6FZnojQS9zuDh+OoTAyngQAjjoubc=", + "owner": "paisano-nix", + "repo": "tui", + "rev": "231761b260587a64817e4ffae3afc15defaa15db", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "ref": "v0.5.0", + "repo": "tui", "type": "github" } }, - "std_7": { + "paisano_2": { "inputs": { - "devshell": "devshell_19", - "dmerge": "dmerge_7", - "flake-utils": "flake-utils_44", - "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", - "nixago": "nixago_6", - "nixpkgs": "nixpkgs_92", - "yants": "yants_9" + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "nixpkgs" + ], + "nosys": "nosys_3", + "yants": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "yants" + ] }, "locked": { - "lastModified": 1661367957, - "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", - "owner": "divnix", - "repo": "std", - "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", + "lastModified": 1686862844, + "narHash": "sha256-m8l/HpRBJnZ3c0F1u0IyQ3nYGWE0R9V5kfORuqZPzgk=", + "owner": "paisano-nix", + "repo": "core", + "rev": "6674b3d3577212c1eeecd30d62d52edbd000e726", "type": "github" }, "original": { - "owner": "divnix", - "repo": "std", + "owner": "paisano-nix", + "ref": "0.1.1", + "repo": "core", "type": "github" } }, - "std_8": { + "paisano_3": { "inputs": { - "devshell": "devshell_20", - "nixpkgs": "nixpkgs_95", - "yants": "yants_10" - }, - "locked": { - "lastModified": 1652784712, - "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", - "owner": "divnix", - "repo": "std", - "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", - "type": "github" - }, - "original": { - "owner": "divnix", - "repo": "std", - "type": "github" - } - }, - "stdlib": { - "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", - "type": "github" + "call-flake": "call-flake", + "nixpkgs": [ + "ctl", + "cardano-node", + "std", + "nixpkgs" + ], + "nosys": "nosys_4", + "yants": [ + "ctl", + "cardano-node", + "std", + "yants" + ] }, - "original": { - "owner": "manveru", - "repo": "nix-lib", - "type": "github" - } - }, - "stdlib_10": { "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1708640854, + "narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=", + "owner": "paisano-nix", + "repo": "core", + "rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "paisano-nix", + "ref": "0.2.0", + "repo": "core", "type": "github" } }, - "stdlib_11": { + "poetry2nix": { + "inputs": { + "flake-utils": "flake-utils_32", + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte-cells", + "cicero", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1641849362, + "narHash": "sha256-1K3NOM0ZoFRVxU3HJ2G8CMZEtyRn0RpuUjsws7jKsds=", + "owner": "nix-community", + "repo": "poetry2nix", + "rev": "6b063a31bc8fea6c1d9fdc47e9078772b0ba283b", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "nix-community", + "ref": "fetched-projectdir-test", + "repo": "poetry2nix", "type": "github" } }, - "stdlib_12": { + "pre-commit-hooks": { + "inputs": { + "flake-utils": "flake-utils_38", + "nixpkgs": "nixpkgs_84" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "stdlib_13": { + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat_13", + "flake-utils": "flake-utils_15", + "gitignore": "gitignore", + "nixpkgs": [ + "ctl", + "cardano-nix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "ctl", + "cardano-nix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1708018599, + "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", "type": "github" } }, - "stdlib_2": { + "ragenix": { + "inputs": { + "agenix": "agenix_3", + "flake-utils": "flake-utils_23", + "nixpkgs": "nixpkgs_50", + "rust-overlay": "rust-overlay_2" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "stdlib_3": { + "ragenix_2": { + "inputs": { + "agenix": "agenix_4", + "flake-utils": "flake-utils_25", + "nixpkgs": "nixpkgs_53", + "rust-overlay": "rust-overlay_3" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "stdlib_4": { + "ragenix_3": { + "inputs": { + "agenix": "agenix_5", + "flake-utils": "flake-utils_27", + "nixpkgs": "nixpkgs_62", + "rust-overlay": "rust-overlay_4" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "stdlib_5": { + "ragenix_4": { + "inputs": { + "agenix": "agenix_7", + "flake-utils": "flake-utils_34", + "nixpkgs": "nixpkgs_79", + "rust-overlay": "rust-overlay_5" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1641119695, + "narHash": "sha256-fksD2ftdEdFfB4BiB9iQCJt2QJ/CJogqk4mBNy9rY/0=", + "owner": "yaxitech", + "repo": "ragenix", + "rev": "71147db3f221d0a5c86b393d5c60d51b70f39fe3", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "yaxitech", + "repo": "ragenix", "type": "github" } }, - "stdlib_6": { + "ragenix_5": { + "inputs": { + "agenix": "agenix_8", + "flake-utils": "flake-utils_36", + "nixpkgs": "nixpkgs_82", + "rust-overlay": "rust-overlay_6" + }, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1645147603, + "narHash": "sha256-xraqK0vwr+AF9om7b3xIaP5AqEQqMb1DLVuUjGzM+98=", + "owner": "input-output-hk", + "repo": "ragenix", + "rev": "194a625a97262f704b619acfccf27a5b9e6faea8", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "input-output-hk", + "repo": "ragenix", "type": "github" } }, - "stdlib_7": { + "root": { + "inputs": { + "ctl": "ctl", + "flake-compat": "flake-compat_26", + "nixpkgs": [ + "ctl", + "nixpkgs" + ] + } + }, + "rust-analyzer-src": { + "flake": false, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1645205556, + "narHash": "sha256-e4lZW3qRyOEJ+vLKFQP7m2Dxh5P44NrnekZYLxlucww=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "acf5874b39f3dc5262317a6074d9fc7285081161", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "stdlib_8": { + "rust-analyzer-src_2": { + "flake": false, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1677221702, + "narHash": "sha256-1M+58rC4eTCWNmmX0hQVZP20t3tfYNunl9D/PrGUyGE=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "f5401f620699b26ed9d47a1d2e838143a18dbe3b", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "stdlib_9": { + "rust-analyzer-src_3": { + "flake": false, "locked": { - "lastModified": 1590026685, - "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", - "owner": "manveru", - "repo": "nix-lib", - "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "manveru", - "repo": "nix-lib", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems": { + "rust-analyzer-src_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_10": { + "rust-analyzer-src_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_11": { + "rust-analyzer-src_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1660579619, + "narHash": "sha256-2+V7SO3mBd9Copi5yiSHNFzSXMuTNi4OH8JnY1Z82ds=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "3903243192d2bd6c38b43d12ffa9d2fa1601c2ec", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_12": { + "rust-analyzer-src_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1645024434, + "narHash": "sha256-ZYwqOkx9MYKmbuqkLJdRhIn7IghMRclbUzxJgR7OOhA=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "89faff7477e904f6820990f130a3aed72c1d7e6b", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_13": { + "rust-analyzer-src_8": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1649178056, + "narHash": "sha256-dcf7vKAkpdNvjd243LTGkUD6zLaLPN5deM2WTysG/Zs=", + "owner": "rust-analyzer", + "repo": "rust-analyzer", + "rev": "2366d8e05f5f3585f95058fa7427cbde079914ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "rust-analyzer", + "ref": "nightly", + "repo": "rust-analyzer", "type": "github" } }, - "systems_14": { + "rust-overlay": { + "inputs": { + "flake-utils": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "paisano-mdbook-preprocessor", + "crane", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675391458, + "narHash": "sha256-ukDKZw922BnK5ohL9LhwtaDAdCsJL7L6ScNEyF1lO9w=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "383a4acfd11d778d5c2efcf28376cbd845eeaedf", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_15": { + "rust-overlay_2": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_16": { + "rust-overlay_3": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_17": { + "rust-overlay_4": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_18": { + "rust-overlay_5": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "bitte", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1641017392, + "narHash": "sha256-xpsPFK67HRtlk+39l4I7vko7QKZLBg3AqbXK3MkQoDY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "4000e09a515c0f046a1b8b067f7324111187b115", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_19": { + "rust-overlay_6": { + "inputs": { + "flake-utils": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "flake-utils" + ], + "nixpkgs": [ + "ctl", + "db-sync", + "cardano-world", + "capsules", + "ragenix", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1644633594, + "narHash": "sha256-Te6mBYYirUwsoqENvVx1K1EEoRq2CKrTnNkWF42jNgE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "14c48021a9a5fe6ea8ae6b21c15caa106afa9d19", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "systems_2": { + "secp256k1": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_20": { + "secp256k1_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_21": { + "secp256k1_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_22": { + "secp256k1_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_23": { + "secp256k1_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_24": { + "secp256k1_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_25": { + "secp256k1_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1683999695, + "narHash": "sha256-9nJJVENMXjXEJZzw8DHzin1DkFkF8h9m/c6PuM7Uk4s=", + "owner": "bitcoin-core", + "repo": "secp256k1", + "rev": "acf5c55ae6a94e5ca847e07def40427547876101", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "bitcoin-core", + "ref": "v0.3.2", + "repo": "secp256k1", "type": "github" } }, - "systems_26": { + "sodium": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_27": { + "sodium_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_28": { + "sodium_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_29": { + "sodium_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_3": { + "sodium_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_30": { + "sodium_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_31": { + "sodium_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1675156279, + "narHash": "sha256-0uRcN5gvMwO7MCXVYnoqG/OmeBFi8qRVnDWJLnBb9+Y=", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "libsodium", + "rev": "dbb48cce5429cb6585c9034f002568964f1ce567", "type": "github" } }, - "systems_32": { + "sops-nix": { + "inputs": { + "nixpkgs": "nixpkgs_11", + "nixpkgs-stable": "nixpkgs-stable" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1690199016, + "narHash": "sha256-yTLL72q6aqGmzHq+C3rDp3rIjno7EJZkFLof6Ika7cE=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "c36df4fe4bf4bb87759b1891cab21e7a05219500", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "Mic92", + "repo": "sops-nix", "type": "github" } }, - "systems_33": { + "stable": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1669735802, + "narHash": "sha256-qtG/o/i5ZWZLmXw108N2aPiVsxOcidpHJYNkT45ry9Q=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "731cc710aeebecbf45a258e977e8b68350549522", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", "type": "github" } }, - "systems_34": { + "stackage": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1701043780, + "narHash": "sha256-d5CYT7WGEaL6IFNmUg4JUb+onxI/tO1qgHs/TCIKB3A=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "cb49435b81adf0549589c51f39b5b38b4369f106", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_35": { + "stackage_2": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1685491814, + "narHash": "sha256-OQX+h5hcDptW6HVrYkBL7dtgqiaiz9zn6iMYv+0CDzc=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "678b4297ccef8bbcd83294e47e1a9042034bdbd0", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_36": { + "stackage_3": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1700438989, + "narHash": "sha256-x+7Qtboko7ds8CU8pq2sIZiD45DauYoX9LxBfwQr/hs=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9c2015334cc77837b8454b3b10ef4f711a256f6f", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_37": { + "stackage_4": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1718756571, + "narHash": "sha256-8rL8viTbuE9/yV1of6SWp2tHmhVMD2UmkOfmN5KDbKg=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "027672fb6fd45828b0e623c8152572d4058429ad", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_38": { + "stackage_5": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1646010978, + "narHash": "sha256-NpioQiTXyYm+Gm111kcDEE/ghflmnTNwPhWff54GYA4=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "9cce3e0d420f6c38cdbbe1c5e5bbc07fd2adfc3a", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_39": { + "stackage_6": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1655255731, + "narHash": "sha256-0C3RDc1Uoofcw3e1s+7Gj+KYQ2JiRiSNQB2BKzXI6Vo=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "3e945e88ffdf2d2251e56db002419627f32f17c9", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_4": { + "stackage_7": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1659402917, + "narHash": "sha256-zRDOtN4A2KmfzmZiqqxOAIw1YVPhnoIaszKKd+qCEcQ=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "778df3c4b35eac853d57fac7bafc7c9f2dde917f", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_40": { + "stackage_8": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1650936094, + "narHash": "sha256-9ibS+iszPXe3HQd8rexVfrQeO4JkXSPokhbPiJ/Lags=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "85f94546f85fb9b92080f958bec655a364b2f0e5", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_41": { + "stackage_9": { + "flake": false, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1721866306, + "narHash": "sha256-j5Z56zaK1GdnsJuFhuR6WnMw3tBZ0wM8+TdkP/DL6ps=", + "owner": "input-output-hk", + "repo": "stackage.nix", + "rev": "90c884a7dfb82cee528bfc044733bba188dea43a", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "input-output-hk", + "repo": "stackage.nix", "type": "github" } }, - "systems_42": { + "statix": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1676888642, + "narHash": "sha256-C73LOMVVCkeL0jA5xN7klLEDEB4NkuiATEJY4A/tIyM=", + "owner": "nerdypepper", + "repo": "statix", + "rev": "3c7136a23f444db252a556928c1489869ca3ab4e", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "nerdypepper", + "repo": "statix", "type": "github" } }, - "systems_43": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" + "std": { + "inputs": { + "arion": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "blank": "blank", + "devshell": "devshell", + "dmerge": "dmerge", + "flake-utils": "flake-utils_8", + "incl": "incl", + "makes": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-nix", + "cardano-node-8.1.1", + "tullia", + "std", + "blank" + ], + "n2c": "n2c", + "nixago": "nixago", + "nixpkgs": "nixpkgs_21", + "nosys": "nosys", + "yants": "yants" }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_44": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1674526466, + "narHash": "sha256-tMTaS0bqLx6VJ+K+ZT6xqsXNpzvSXJTmogkraBGzymg=", + "owner": "divnix", + "repo": "std", + "rev": "516387e3d8d059b50e742a2ff1909ed3c8f82826", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_45": { + "std_2": { + "inputs": { + "arion": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "blank": "blank_2", + "devshell": "devshell_2", + "dmerge": "dmerge_2", + "flake-utils": "flake-utils_11", + "incl": "incl_2", + "makes": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_2", + "nixago": "nixago_2", + "nixpkgs": "nixpkgs_24", + "paisano": "paisano", + "paisano-tui": "paisano-tui", + "yants": "yants_2" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1677533652, + "narHash": "sha256-H37dcuWAGZs6Yl9mewMNVcmSaUXR90/bABYFLT/nwhk=", + "owner": "divnix", + "repo": "std", + "rev": "490542f624412662e0411d8cb5a9af988ef56633", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_46": { + "std_3": { + "inputs": { + "arion": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "blank": "blank_3", + "devshell": "devshell_3", + "dmerge": "dmerge_3", + "flake-utils": "flake-utils_13", + "haumea": "haumea", + "incl": "incl_3", + "makes": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-nix", + "cardano-node-8.7.3", + "std", + "blank" + ], + "n2c": "n2c_3", + "nixago": "nixago_3", + "nixpkgs": "nixpkgs_29", + "paisano": "paisano_2", + "paisano-mdbook-preprocessor": "paisano-mdbook-preprocessor", + "paisano-tui": "paisano-tui_2", + "yants": "yants_3" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1687300684, + "narHash": "sha256-oBqbss0j+B568GoO3nF2BCoPEgPxUjxfZQGynW6mhEk=", + "owner": "divnix", + "repo": "std", + "rev": "80e5792eae98353a97ab1e85f3fba2784e4a3690", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_47": { + "std_4": { + "inputs": { + "blank": "blank_4", + "devshell": "devshell_5", + "dmerge": "dmerge_4", + "flake-utils": "flake-utils_18", + "makes": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor", + "microvm": [ + "ctl", + "cardano-node", + "cardano-automation", + "tullia", + "std", + "blank" + ], + "n2c": "n2c_4", + "nixago": "nixago_4", + "nixpkgs": "nixpkgs_33", + "yants": "yants_4" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1665513321, + "narHash": "sha256-D6Pacw9yf/HMs84KYuCxHXnNDL7v43gtcka5URagFqE=", + "owner": "divnix", + "repo": "std", + "rev": "94a90eedb9cfc115b12ae8f6622d9904788559e4", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_48": { + "std_5": { + "inputs": { + "arion": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "blank": "blank_5", + "devshell": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "dmerge": "dmerge_5", + "haumea": "haumea_2", + "incl": "incl_4", + "lib": "lib", + "makes": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "microvm": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "n2c": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "nixago": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "nixpkgs": "nixpkgs_37", + "paisano": "paisano_3", + "paisano-tui": "paisano-tui_3", + "terranix": [ + "ctl", + "cardano-node", + "std", + "blank" + ], + "yants": "yants_5" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1715201063, + "narHash": "sha256-LcLYV5CDhIiJs3MfxGZFKsXPR4PtfnY4toZ75GM+2Pw=", + "owner": "divnix", + "repo": "std", + "rev": "b6924a7d37a46fc1dda8efe405040e27ecf1bbd6", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_49": { + "std_6": { + "inputs": { + "devshell": "devshell_11", + "dmerge": "dmerge_6", + "flake-utils": "flake-utils_28", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_2", + "nixago": "nixago_5", + "nixpkgs": "nixpkgs_63", + "yants": "yants_7" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1661370377, + "narHash": "sha256-LBKuwWajbv8osh5doIh7H8MQJgcdqjCGY0pW5eI/0Zk=", + "owner": "divnix", + "repo": "std", + "rev": "92503146d322c0c1ec3f2567925711b5fb59f7e2", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_5": { + "std_7": { + "inputs": { + "devshell": "devshell_19", + "dmerge": "dmerge_7", + "flake-utils": "flake-utils_44", + "mdbook-kroki-preprocessor": "mdbook-kroki-preprocessor_3", + "nixago": "nixago_6", + "nixpkgs": "nixpkgs_93", + "yants": "yants_9" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1661367957, + "narHash": "sha256-5B94aTocy6Y6ZJFmzkGdPmg6L6gjNaMVAKcpsaw44Ns=", + "owner": "divnix", + "repo": "std", + "rev": "d39794e19e648b840e5a56aa1f354d43aee9abf7", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_50": { + "std_8": { + "inputs": { + "devshell": "devshell_20", + "nixpkgs": "nixpkgs_96", + "yants": "yants_10" + }, "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1652784712, + "narHash": "sha256-ofwGapSWqzUVgIxwwmjlrOVogfjV4yd6WpY8fNfMc2o=", + "owner": "divnix", + "repo": "std", + "rev": "3667d2d868352b0bf47c83440da48bee9f2fab47", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "divnix", + "repo": "std", "type": "github" } }, - "systems_51": { + "stdlib": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_52": { + "stdlib_10": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_53": { + "stdlib_11": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_54": { + "stdlib_12": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_55": { + "stdlib_13": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_56": { + "stdlib_2": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_57": { + "stdlib_3": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_58": { + "stdlib_4": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_59": { + "stdlib_5": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_6": { + "stdlib_6": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_60": { + "stdlib_7": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_61": { + "stdlib_8": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_62": { + "stdlib_9": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1590026685, + "narHash": "sha256-E5INrVvYX/P/UpcoUFDAsuHem+lsqT+/teBs9O7oc9Q=", + "owner": "manveru", + "repo": "nix-lib", + "rev": "99088cf7febcdb21afd375a335dcafa959bef3ed", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "manveru", + "repo": "nix-lib", "type": "github" } }, - "systems_63": { + "systems": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31843,7 +15258,7 @@ "type": "github" } }, - "systems_64": { + "systems_2": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31858,7 +15273,7 @@ "type": "github" } }, - "systems_65": { + "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31873,7 +15288,7 @@ "type": "github" } }, - "systems_7": { + "systems_4": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31888,7 +15303,7 @@ "type": "github" } }, - "systems_8": { + "systems_5": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31903,7 +15318,7 @@ "type": "github" } }, - "systems_9": { + "systems_6": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -31921,7 +15336,7 @@ "tailwind-haskell": { "inputs": { "flake-utils": "flake-utils_39", - "nixpkgs": "nixpkgs_86" + "nixpkgs": "nixpkgs_87" }, "locked": { "lastModified": 1654211622, @@ -31940,7 +15355,7 @@ }, "terraform-providers": { "inputs": { - "nixpkgs": "nixpkgs_11" + "nixpkgs": "nixpkgs_12" }, "locked": { "lastModified": 1695893013, @@ -31961,7 +15376,7 @@ "bats-assert": "bats-assert", "bats-support": "bats-support", "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_12", + "nixpkgs": "nixpkgs_13", "terranix-examples": "terranix-examples" }, "locked": { @@ -32127,7 +15542,7 @@ }, "treefmt-nix": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1683117219, @@ -32176,11 +15591,11 @@ ] }, "locked": { - "lastModified": 1715940852, - "narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=", + "lastModified": 1697388351, + "narHash": "sha256-63N2eBpKaziIy4R44vjpUu8Nz5fCJY7okKrkixvDQmY=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "2fba33a182602b9d49f0b2440513e5ee091d838b", + "rev": "aae39f64f5ecbe89792d05eacea5cb241891292a", "type": "github" }, "original": { @@ -32193,7 +15608,7 @@ "inputs": { "nix-nomad": "nix-nomad", "nix2container": "nix2container_2", - "nixpkgs": "nixpkgs_19", + "nixpkgs": "nixpkgs_20", "std": "std" }, "locked": { @@ -32266,7 +15681,7 @@ "tullia_4": { "inputs": { "nix2container": "nix2container_7", - "nixpkgs": "nixpkgs_94", + "nixpkgs": "nixpkgs_95", "std": "std_8" }, "locked": { @@ -32663,7 +16078,7 @@ }, "utils_7": { "inputs": { - "systems": "systems_5" + "systems": "systems_6" }, "locked": { "lastModified": 1710146030, @@ -32894,7 +16309,7 @@ }, "yants_6": { "inputs": { - "nixpkgs": "nixpkgs_53" + "nixpkgs": "nixpkgs_54" }, "locked": { "lastModified": 1645126146, @@ -32937,7 +16352,7 @@ }, "yants_8": { "inputs": { - "nixpkgs": "nixpkgs_88" + "nixpkgs": "nixpkgs_89" }, "locked": { "lastModified": 1645126146, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index f5e2e76ae..c4a297d60 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "64028db993083b09ff9875a59def48e2f84de04b"; + rev = "69db7bac9c1ee4fc443510a39943734500f6f2d3"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index d2b7d0242..12c508c09 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -548,7 +548,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "64028db993083b09ff9875a59def48e2f84de04b" + , version = "69db7bac9c1ee4fc443510a39943734500f6f2d3" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 71bc3ec4d..8bb0ae5ec 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -295,11 +295,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "64028db993083b09ff9875a59def48e2f84de04b"; + version = "69db7bac9c1ee4fc443510a39943734500f6f2d3"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "64028db993083b09ff9875a59def48e2f84de04b"; - sha256 = "157n05frzx7lzz165ph224gzghbkqs0layj8ghnwchzpkjkaggqy"; + rev = "69db7bac9c1ee4fc443510a39943734500f6f2d3"; + sha256 = "10k2h2mnmb87wd0fzr141nlhj3wiimaa6kprbgf5mi3391794nv7"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From f9f2ab632b87150d8cc1497a38276a8699635837 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 25 Jul 2024 18:33:29 +0200 Subject: [PATCH 333/373] Bump cardano-node to v9.1.0 --- flake.lock | 28 ++++++++++++++-------------- flake.nix | 4 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/flake.lock b/flake.lock index 4a1c92792..e7e3f484a 100644 --- a/flake.lock +++ b/flake.lock @@ -71,11 +71,11 @@ "CHaP_5": { "flake": false, "locked": { - "lastModified": 1719971647, - "narHash": "sha256-Q/u1ZklzmymTSSY6/F48rGsWewVYf108torqR9+nFJU=", + "lastModified": 1721831314, + "narHash": "sha256-I1j5HPSbbh3l1D0C9oP/59YB4e+64K9NDRl7ueD1c/Y=", "owner": "intersectmbo", "repo": "cardano-haskell-packages", - "rev": "bfd6987c14410757c6cde47e6c45621e9664347f", + "rev": "8815ee7598bc39a02db8896b788f69accf892790", "type": "github" }, "original": { @@ -1819,17 +1819,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1720834069, - "narHash": "sha256-jWFjTUTpwAgvsSJsQ4INgKl/paR489n1si35GLtSkuU=", + "lastModified": 1721870874, + "narHash": "sha256-qiReN+xxtbb4kEfdIWbBcqcJpPGD8he0p/TVD7U3CqM=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", + "rev": "7969a73e5c7ee1f3b2a40274b34191fdd8de170b", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", + "rev": "7969a73e5c7ee1f3b2a40274b34191fdd8de170b", "type": "github" } }, @@ -2100,16 +2100,16 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1720029730, - "narHash": "sha256-ESE5/7XzXeIZldkYPbMd8CoMKQo9ghY1vOkhHpOj0K4=", + "lastModified": 1721843629, + "narHash": "sha256-F5wgRA820x16f+8c/LlEEBG0rMJIA1XWw6X0ZwX5UWs=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "2820a63dc934c6d5b5f450b6c2543b81c6476696", + "rev": "176f99e51155cb3eaa0711db1c3c969d67438958", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "9.0.0", + "ref": "9.1.0", "repo": "cardano-node", "type": "github" } @@ -7995,11 +7995,11 @@ "sodium": "sodium_6" }, "locked": { - "lastModified": 1719237167, - "narHash": "sha256-ifW5Jfwu/iwYs0r7f8AdiWDQK+Pr1gZLz+p5u8OtOgo=", + "lastModified": 1721825987, + "narHash": "sha256-PPcma4tjozwXJAWf+YtHUQUulmxwulVlwSQzKItx/n8=", "owner": "input-output-hk", "repo": "iohk-nix", - "rev": "577f4d5072945a88dda6f5cfe205e6b4829a0423", + "rev": "eb61f2c14e1f610ec59117ad40f8690cddbf80cb", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 2893c1787..fc2544001 100644 --- a/flake.nix +++ b/flake.nix @@ -33,13 +33,13 @@ flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/9.0.0"; + cardano-node.url = "github:input-output-hk/cardano-node/9.1.0"; # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. cardano-configurations = { # Override with "path:/path/to/cardano-configurations"; - url = "github:input-output-hk/cardano-configurations?rev=de80edfd569d82d5191d2c6103834e700787bb2d"; + url = "github:input-output-hk/cardano-configurations?rev=7969a73e5c7ee1f3b2a40274b34191fdd8de170b"; flake = false; }; From 26c4a2527c8f10ecce242f0d983a70fae58f8c23 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Fri, 26 Jul 2024 13:10:25 +0300 Subject: [PATCH 334/373] Update ctl-as-dependency.md --- doc/ctl-as-dependency.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/ctl-as-dependency.md b/doc/ctl-as-dependency.md index 035bde426..0ae92e72a 100644 --- a/doc/ctl-as-dependency.md +++ b/doc/ctl-as-dependency.md @@ -67,14 +67,12 @@ Make sure to perform **all** of the following steps, otherwise you **will** enco 3. **Update your JS dependencies** -- If CTL has added any JS dependencies, these will also need to be added to your own `package.json` -- Similarly, if any of CTL's JS dependencies have changed versions, you will need to use the **exact** same version in your own `package.json` -- That is, avoid using the `~` or `^` prefixes (e.g use versions like `"1.6.51"` instead of `"^1.6.51"`) -- If you're using a `package-lock.json` (which is _highly_ recommended), you can update the lockfile with `npm i --package-lock-only` +- The NPM dependencies your project has must have the exact same versions CTL's own `package.json` specifies. +- You have to update `package-lock.json` by running `npm install`. If you are in a nix shell and use our setup that symlinks `./node_modules`, npm will complain about inability to write to the filesystem, use `npm i --package-lock-only` to skip writing to `node_modules`. If your `node_modules` are managed by Nix, you will have to re-enter the shell for the changes to apply. 4. **Update your webpack/esbuild config** -- Sometimes the WebPack or esbuild configuration also comes with breaking changes. Use `git diff old-revision new-revision webpack.config.cjs` in the root of a cloned CTL repo, or use `git blame`. +- Sometimes WebPack or esbuild configurations also come with breaking changes. Refer to the CHANGELOG. ## See also From f0e8b421c8180e8153e84352494ce1653a674188 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 26 Jul 2024 15:52:21 +0200 Subject: [PATCH 335/373] Revise own(Un)RegisteredPubStakeKeys impl for KeyWallet, add warning --- src/Internal/Contract/Wallet.purs | 46 ++++++++++--------------------- 1 file changed, 14 insertions(+), 32 deletions(-) diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 5989ff01e..94abe5474 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -39,6 +39,7 @@ import Cardano.Wallet.Key , getPrivateDrepKey , getPrivateStakeKey ) +import Contract.Log (logWarn') import Control.Monad.Reader.Trans (asks) import Control.Parallel (parTraverse) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) @@ -292,42 +293,23 @@ ownRegisteredPubStakeKeys :: Contract (Array PublicKey) ownRegisteredPubStakeKeys = withWallet do actionBasedOnWallet _.getRegisteredPubStakeKeys - (map _.reg <<< kwPubStakeKeys) + (kwPubStakeKeys "ownRegisteredPubStakeKeys") ownUnregisteredPubStakeKeys :: Contract (Array PublicKey) ownUnregisteredPubStakeKeys = withWallet do actionBasedOnWallet _.getUnregisteredPubStakeKeys - (map _.unreg <<< kwPubStakeKeys) + (kwPubStakeKeys "ownUnregisteredPubStakeKeys") -kwPubStakeKeys - :: KeyWallet - -> Contract { reg :: Array PublicKey, unreg :: Array PublicKey } -kwPubStakeKeys kw = - liftAff (getPrivateStakeKey kw) >>= case _ of +kwPubStakeKeys :: String -> KeyWallet -> Contract (Array PublicKey) +kwPubStakeKeys funName kw = do + logWarn' $ funName <> + " via KeyWallet: KeyWallet does not distinguish between \ + \registered and unregistered stake keys due to the limitations \ + \of the underlying query layer. This means that all controlled \ + \stake keys are returned regardless of their registration status." + liftAff (getPrivateStakeKey kw) <#> case _ of + Just (PrivateStakeKey stakeKey) -> + Array.singleton $ PrivateKey.toPublicKey stakeKey Nothing -> - pure mempty - Just (PrivateStakeKey stakeKey) -> do - queryHandle <- getQueryHandle - network <- asks _.networkId - let - pubStakeKey = PrivateKey.toPublicKey stakeKey - stakePkh = wrap $ PublicKey.hash pubStakeKey - resp <- liftAff $ queryHandle.getPubKeyHashDelegationsAndRewards - network - stakePkh - case resp of - Left err -> - liftEffect $ throw $ - "kwPubStakeKeys: getPubKeyHashDelegationsAndRewards call error: " - <> pprintClientError err - Right mStakeAccount -> - pure case mStakeAccount of - Nothing -> - { reg: mempty - , unreg: Array.singleton pubStakeKey - } - Just _ -> - { reg: Array.singleton pubStakeKey - , unreg: mempty - } + mempty From 77e457f18a8aabd2adf82c0ab4cdbbe4b784d564 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 26 Jul 2024 17:04:54 +0200 Subject: [PATCH 336/373] Add RegisterDrep and DelegateVoteAbstain examples for KeyWallet --- examples/KeyWallet/DelegateVoteAbstain.purs | 13 ++++ examples/KeyWallet/Internal/Contract.purs | 60 +++++++++++++++++ examples/KeyWallet/Internal/HtmlForm.js | 74 +++++++++++++++++++++ examples/KeyWallet/Internal/HtmlForm.purs | 38 +++++++++++ examples/KeyWallet/RegisterDrep.purs | 13 ++++ nix/runtime.nix | 4 +- packages.dhall | 3 +- 7 files changed, 202 insertions(+), 3 deletions(-) create mode 100644 examples/KeyWallet/DelegateVoteAbstain.purs create mode 100644 examples/KeyWallet/Internal/Contract.purs create mode 100644 examples/KeyWallet/Internal/HtmlForm.js create mode 100644 examples/KeyWallet/Internal/HtmlForm.purs create mode 100644 examples/KeyWallet/RegisterDrep.purs diff --git a/examples/KeyWallet/DelegateVoteAbstain.purs b/examples/KeyWallet/DelegateVoteAbstain.purs new file mode 100644 index 000000000..cbc334d7c --- /dev/null +++ b/examples/KeyWallet/DelegateVoteAbstain.purs @@ -0,0 +1,13 @@ +module Ctl.Examples.KeyWallet.DelegateVoteAbstain + ( main + ) where + +import Contract.Prelude + +import Ctl.Examples.Gov.DelegateVoteAbstain (contract) as Gov.DelegateVoteAbstain +import Ctl.Examples.KeyWallet.Internal.Contract (runKeyWalletContract) + +main :: Effect Unit +main = + runKeyWalletContract \unlock -> + Gov.DelegateVoteAbstain.contract *> liftEffect unlock diff --git a/examples/KeyWallet/Internal/Contract.purs b/examples/KeyWallet/Internal/Contract.purs new file mode 100644 index 000000000..04089b63d --- /dev/null +++ b/examples/KeyWallet/Internal/Contract.purs @@ -0,0 +1,60 @@ +module Ctl.Examples.KeyWallet.Internal.Contract + ( runKeyWalletContract + ) where + +import Contract.Prelude + +import Contract.Config + ( MnemonicSource(MnemonicString) + , StakeKeyPresence(WithStakeKey) + , WalletSpec(UseMnemonic) + , testnetConfig + ) +import Contract.Monad (Contract, launchAff_, runContract) +import Control.Monad.Error.Class (class MonadError, catchError) +import Ctl.Examples.KeyWallet.Internal.HtmlForm (Log, Unlock) +import Ctl.Examples.KeyWallet.Internal.HtmlForm + ( levelColor + , levelName + , logError + , mkForm + ) as HtmlForm +import Data.Log.Formatter.Pretty (prettyFormatter) +import Data.Log.Level (LogLevel) +import Data.Log.Message (Message) +import Effect.Class (class MonadEffect) +import Effect.Exception (Error, message) + +runKeyWalletContract :: (Unlock -> Contract Unit) -> Effect Unit +runKeyWalletContract contract = + HtmlForm.mkForm \input log' unlock -> + launchAff_ $ flip catchError (errorHandler log' unlock) $ do + let + cfg = testnetConfig + { walletSpec = Just $ UseMnemonic + (MnemonicString input.walletSeed) + { accountIndex: zero, addressIndex: zero } + WithStakeKey + , customLogger = Just printLog + } + + printLog :: LogLevel -> Message -> Aff Unit + printLog lgl m = liftEffect $ when (m.level >= lgl) $ do + prettyFormatter m >>= log + log' (HtmlForm.levelColor m.level) + ("[" <> HtmlForm.levelName m.level <> "] " <> m.message) + runContract cfg (contract unlock) + where + + errorHandler + :: forall (m :: Type -> Type) + . MonadError Error m + => MonadEffect m + => Log + -> Unlock + -> Error + -> m Unit + errorHandler log' unlock e = + liftEffect $ HtmlForm.logError e + *> log' "crimson" ("[ERROR] " <> message e) + *> unlock diff --git a/examples/KeyWallet/Internal/HtmlForm.js b/examples/KeyWallet/Internal/HtmlForm.js new file mode 100644 index 000000000..56ef83eda --- /dev/null +++ b/examples/KeyWallet/Internal/HtmlForm.js @@ -0,0 +1,74 @@ +"use strict"; + +const form = ` + +
+
+ + +
+ +
+
+
+ +`; + +export function logError(error) { + return () => { + console.log(error); + }; +} + +export function mkForm(handler) { + return () => { + window.document.body.insertAdjacentHTML("beforeend", form); + const formEl = window.document.querySelector("form"); + const fieldsEl = window.document.querySelector("fieldset"); + const resultEl = window.document.querySelector("code"); + formEl.addEventListener("submit", event => { + event.preventDefault(); + resultEl.replaceChildren(); + + const data = new FormData(formEl); + const input = Object.fromEntries(data); + fieldsEl.setAttribute("disabled", "disabled"); + + const log = color => text => () => { + const line = document.createElement("div"); + line.style.color = color; + line.textContent = text; + resultEl.append(line); + }; + + const unlock = () => { + fieldsEl.setAttribute("disabled", "disabled"); + fieldsEl.removeAttribute("disabled"); + }; + + handler(input)(log)(unlock)(); + }); + }; +} diff --git a/examples/KeyWallet/Internal/HtmlForm.purs b/examples/KeyWallet/Internal/HtmlForm.purs new file mode 100644 index 000000000..03f213005 --- /dev/null +++ b/examples/KeyWallet/Internal/HtmlForm.purs @@ -0,0 +1,38 @@ +module Ctl.Examples.KeyWallet.Internal.HtmlForm + ( Form + , Log + , Unlock + , levelColor + , levelName + , logError + , mkForm + ) where + +import Contract.Prelude + +import Data.Log.Level (LogLevel(Trace, Debug, Warn, Info, Error)) +import Effect.Exception (Error) + +type Form = + { walletSeed :: String + } + +type Log = String -> String -> Effect Unit + +type Unlock = Effect Unit + +foreign import mkForm :: (Form -> Log -> Unlock -> Effect Unit) -> Effect Unit + +foreign import logError :: Error -> Effect Unit + +levelName :: LogLevel -> String +levelName Trace = "TRACE" +levelName Debug = "DEBUG" +levelName Info = "INFO" +levelName Warn = "WARN" +levelName Error = "ERROR" + +levelColor :: LogLevel -> String +levelColor Warn = "gold" +levelColor Error = "crimson" +levelColor _ = "black" diff --git a/examples/KeyWallet/RegisterDrep.purs b/examples/KeyWallet/RegisterDrep.purs new file mode 100644 index 000000000..1bdc10b8e --- /dev/null +++ b/examples/KeyWallet/RegisterDrep.purs @@ -0,0 +1,13 @@ +module Ctl.Examples.KeyWallet.RegisterDrep + ( main + ) where + +import Contract.Prelude + +import Ctl.Examples.Gov.RegisterDrep (contract) as Gov.RegisterDrep +import Ctl.Examples.KeyWallet.Internal.Contract (runKeyWalletContract) + +main :: Effect Unit +main = + runKeyWalletContract \unlock -> + Gov.RegisterDrep.contract *> liftEffect unlock diff --git a/nix/runtime.nix b/nix/runtime.nix index 45dd521ef..372e98e2c 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -9,8 +9,8 @@ rec { # See `doc/development.md` and `doc/runtime.md#changing-network-configurations` # for info on how to switch networks. network = { - name = "preview"; - magic = 2; # use `null` for mainnet + name = "sanchonet"; + magic = 4; # use `null` for mainnet }; # *All* of these values are optional, and shown with their default # values. If you need even more customization, you can use `overideAttrs` diff --git a/packages.dhall b/packages.dhall index 8900ce56e..08d97cb65 100644 --- a/packages.dhall +++ b/packages.dhall @@ -291,11 +291,12 @@ let additions = , "foldable-traversable" , "maybe" , "newtype" + , "ordered-collections" , "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet" - , version = "a43c410a8430b552e42e88ab542eb6a43d09a633" + , version = "57261b623f0f3fc90a34611071e630b8521a115c" } , uplc-apply-args = { dependencies = From a2d0f3c8054fa3692e8cdf82fdc7918c46420e4c Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 26 Jul 2024 17:06:05 +0200 Subject: [PATCH 337/373] Re-generate spago-packages.nix --- spago-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spago-packages.nix b/spago-packages.nix index 883af265a..484475873 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -235,11 +235,11 @@ let "cardano-key-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-key-wallet"; - version = "a43c410a8430b552e42e88ab542eb6a43d09a633"; + version = "57261b623f0f3fc90a34611071e630b8521a115c"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "a43c410a8430b552e42e88ab542eb6a43d09a633"; - sha256 = "1laiaq8xpd0hdfrqw6yd4gr1jai6lybjqmc3m4dhz0xapn40hmx8"; + rev = "57261b623f0f3fc90a34611071e630b8521a115c"; + sha256 = "1zng6mg2pip327qznnvg72rnkbp7b199sqiaz8f1dyywd0wpfrx3"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From fe440909ee60edac3a7d532f72f944dfc8621d9f Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 26 Jul 2024 20:06:05 +0200 Subject: [PATCH 338/373] Extend RegisterDrep example to cover UpdateDrepCert and UnregDrepCert --- examples/Gov/RegisterDrep.purs | 66 ++++++++++++++++++++++----- src/Internal/BalanceTx/BalanceTx.purs | 19 ++++++-- 2 files changed, 69 insertions(+), 16 deletions(-) diff --git a/examples/Gov/RegisterDrep.purs b/examples/Gov/RegisterDrep.purs index 4f2d5a9fe..f7e4df36a 100644 --- a/examples/Gov/RegisterDrep.purs +++ b/examples/Gov/RegisterDrep.purs @@ -6,7 +6,16 @@ module Ctl.Examples.Gov.RegisterDrep import Contract.Prelude -import Cardano.Types.Credential (Credential(PubKeyHashCredential)) +import Cardano.AsCbor (decodeCbor) +import Cardano.Transaction.Builder (TransactionBuilderStep(IssueCertificate)) +import Cardano.Types + ( Anchor(Anchor) + , Certificate(RegDrepCert, UpdateDrepCert, UnregDrepCert) + , Credential(PubKeyHashCredential) + , Ed25519KeyHash + , URL(URL) + ) +import Cardano.Types.Transaction (hash) as Transaction import Contract.Config ( ContractParams , WalletSpec(ConnectToGenericCip30) @@ -14,10 +23,12 @@ import Contract.Config ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.Transaction (awaitTxConfirmed, submitTxFromConstraints) -import Contract.TxConstraints (TxConstraints) -import Contract.TxConstraints (mustRegisterDrep) as Constraints +import Contract.Prim.ByteArray (hexToByteArrayUnsafe) +import Contract.ProtocolParameters (getProtocolParameters) +import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Contract.Wallet (ownDrepPubKeyHash) +import Data.Map (empty) as Map +import Partial.Unsafe (unsafePartial) main :: Effect Unit main = example $ testnetConfig @@ -30,11 +41,42 @@ example = launchAff_ <<< flip runContract contract contract :: Contract Unit contract = do logInfo' "Running Examples.Gov.RegisterDrep" - drepCred <- PubKeyHashCredential <$> ownDrepPubKeyHash - let - constraints :: TxConstraints - constraints = Constraints.mustRegisterDrep drepCred Nothing - - txHash <- submitTxFromConstraints mempty constraints - awaitTxConfirmed txHash - logInfo' "Tx submitted successfully!" + drepPkh <- contractStep RegDrep + logInfo' $ "Successfully registered DRep. DRepID: " <> show drepPkh + void $ contractStep $ UpdateDrep $ Anchor + { url: URL "https://example.com/" + , dataHash: + unsafePartial $ fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe + "94b8cac47761c1140c57a48d56ab15d27a842abff041b3798b8618fa84641f5a" + } + logInfo' "Successfully updated DRep metadata." + void $ contractStep UnregDrep + logInfo' "Successfully unregistered DRep." + +data ContractPath + = RegDrep + | UpdateDrep Anchor + | UnregDrep + +contractStep :: ContractPath -> Contract Ed25519KeyHash +contractStep path = do + drepPkh <- ownDrepPubKeyHash + let drepCred = PubKeyHashCredential drepPkh + drepDeposit <- _.drepDeposit <<< unwrap <$> getProtocolParameters + + tx <- submitTxFromBuildPlan Map.empty mempty + [ IssueCertificate + ( case path of + RegDrep -> + RegDrepCert drepCred drepDeposit Nothing + UpdateDrep anchor -> + UpdateDrepCert drepCred $ Just anchor + UnregDrep -> + UnregDrepCert drepCred drepDeposit + ) + Nothing + ] + + awaitTxConfirmed $ Transaction.hash tx + pure drepPkh diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index d9abe77d4..6229ea44f 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -12,6 +12,7 @@ import Cardano.Types , StakeRegistration , VoteRegDelegCert , RegDrepCert + , UnregDrepCert ) , Coin(Coin) , Language(PlutusV1) @@ -837,10 +838,20 @@ getCertsBalance tx (ProtocolParameters pparams) = (tx ^. _body <<< _certs) # map ( case _ of - StakeRegistration _ -> stakeAddressDeposit - StakeDeregistration _ -> negate $ stakeAddressDeposit - VoteRegDelegCert _ _ deposit -> BigNum.toBigInt $ unwrap deposit - RegDrepCert _ deposit _ -> BigNum.toBigInt $ unwrap deposit + StakeRegistration _ -> + stakeAddressDeposit + + StakeDeregistration _ -> + negate $ stakeAddressDeposit + + VoteRegDelegCert _ _ drepDeposit -> + BigNum.toBigInt $ unwrap drepDeposit + + RegDrepCert _ drepDeposit _ -> + BigNum.toBigInt $ unwrap drepDeposit + + UnregDrepCert _ drepDeposit -> + negate $ BigNum.toBigInt $ unwrap drepDeposit _ -> zero ) >>> sum From 78059ad3c83e899a65316aba06bdd81c29ed9ba6 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 26 Jul 2024 21:01:08 +0200 Subject: [PATCH 339/373] Add Gov.SubmitProposal example --- examples/Gov/Internal/Common.purs | 20 +++++++++ examples/Gov/RegisterDrep.purs | 15 ++----- examples/Gov/SubmitProposal.purs | 63 +++++++++++++++++++++++++++ src/Internal/BalanceTx/BalanceTx.purs | 30 +++++++++---- 4 files changed, 107 insertions(+), 21 deletions(-) create mode 100644 examples/Gov/Internal/Common.purs create mode 100644 examples/Gov/SubmitProposal.purs diff --git a/examples/Gov/Internal/Common.purs b/examples/Gov/Internal/Common.purs new file mode 100644 index 000000000..e0d6bb158 --- /dev/null +++ b/examples/Gov/Internal/Common.purs @@ -0,0 +1,20 @@ +module Ctl.Examples.Gov.Internal.Common + ( dummyAnchor + ) where + +import Contract.Prelude + +import Cardano.AsCbor (decodeCbor) +import Cardano.Types (Anchor(Anchor), URL(URL)) +import Contract.Prim.ByteArray (hexToByteArrayUnsafe) +import Partial.Unsafe (unsafePartial) + +dummyAnchor :: Anchor +dummyAnchor = + Anchor + { url: URL "https://example.com/" + , dataHash: + unsafePartial $ fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe + "94b8cac47761c1140c57a48d56ab15d27a842abff041b3798b8618fa84641f5a" + } diff --git a/examples/Gov/RegisterDrep.purs b/examples/Gov/RegisterDrep.purs index f7e4df36a..c9dc4c588 100644 --- a/examples/Gov/RegisterDrep.purs +++ b/examples/Gov/RegisterDrep.purs @@ -6,14 +6,12 @@ module Ctl.Examples.Gov.RegisterDrep import Contract.Prelude -import Cardano.AsCbor (decodeCbor) import Cardano.Transaction.Builder (TransactionBuilderStep(IssueCertificate)) import Cardano.Types - ( Anchor(Anchor) + ( Anchor , Certificate(RegDrepCert, UpdateDrepCert, UnregDrepCert) , Credential(PubKeyHashCredential) , Ed25519KeyHash - , URL(URL) ) import Cardano.Types.Transaction (hash) as Transaction import Contract.Config @@ -23,12 +21,11 @@ import Contract.Config ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) -import Contract.Prim.ByteArray (hexToByteArrayUnsafe) import Contract.ProtocolParameters (getProtocolParameters) import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Contract.Wallet (ownDrepPubKeyHash) +import Ctl.Examples.Gov.Internal.Common (dummyAnchor) import Data.Map (empty) as Map -import Partial.Unsafe (unsafePartial) main :: Effect Unit main = example $ testnetConfig @@ -43,13 +40,7 @@ contract = do logInfo' "Running Examples.Gov.RegisterDrep" drepPkh <- contractStep RegDrep logInfo' $ "Successfully registered DRep. DRepID: " <> show drepPkh - void $ contractStep $ UpdateDrep $ Anchor - { url: URL "https://example.com/" - , dataHash: - unsafePartial $ fromJust $ decodeCbor $ wrap $ - hexToByteArrayUnsafe - "94b8cac47761c1140c57a48d56ab15d27a842abff041b3798b8618fa84641f5a" - } + void $ contractStep $ UpdateDrep dummyAnchor logInfo' "Successfully updated DRep metadata." void $ contractStep UnregDrep logInfo' "Successfully unregistered DRep." diff --git a/examples/Gov/SubmitProposal.purs b/examples/Gov/SubmitProposal.purs new file mode 100644 index 000000000..c13386a6a --- /dev/null +++ b/examples/Gov/SubmitProposal.purs @@ -0,0 +1,63 @@ +module Ctl.Examples.Gov.SubmitProposal + ( contract + , example + , main + ) where + +import Contract.Prelude + +import Cardano.Transaction.Builder (TransactionBuilderStep(SubmitProposal)) +import Cardano.Types + ( Address(RewardAddress) + , RewardAddress + , VotingProposal(VotingProposal) + ) +import Cardano.Types (GovernanceAction(Info)) as GovAction +import Cardano.Types.Transaction (hash) as Transaction +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) +import Contract.Log (logInfo') +import Contract.Monad (Contract, launchAff_, liftedM, runContract) +import Contract.ProtocolParameters (getProtocolParameters) +import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) +import Contract.Wallet (getRewardAddresses) +import Ctl.Examples.Gov.Internal.Common (dummyAnchor) +import Data.Array (head) as Array +import Data.Map (empty) as Map + +main :: Effect Unit +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } + } + +example :: ContractParams -> Effect Unit +example = launchAff_ <<< flip runContract contract + +contract :: Contract Unit +contract = do + logInfo' "Running Examples.Gov.SubmitProposal" + + govActionDeposit <- _.govActionDeposit <<< unwrap <$> getProtocolParameters + rewardAddr <- liftedM "Could not get reward address" $ + map (asRewardAddress <=< Array.head) + getRewardAddresses + + tx <- submitTxFromBuildPlan Map.empty mempty + [ SubmitProposal $ VotingProposal + { govAction: GovAction.Info + , anchor: dummyAnchor + , deposit: unwrap govActionDeposit + , returnAddr: rewardAddr + } + ] + + awaitTxConfirmed $ Transaction.hash tx + logInfo' "Successfully submitted voting proposal." + +asRewardAddress :: Address -> Maybe RewardAddress +asRewardAddress = case _ of + RewardAddress rewardAddr -> Just rewardAddr + _ -> Nothing diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 6229ea44f..36f3ea066 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -39,6 +39,7 @@ import Cardano.Types.Address (Address) import Cardano.Types.BigNum as BigNum import Cardano.Types.Coin as Coin import Cardano.Types.OutputDatum (OutputDatum(OutputDatum)) +import Cardano.Types.TransactionBody (_votingProposals) import Cardano.Types.TransactionInput (TransactionInput) import Cardano.Types.TransactionUnspentOutput as TransactionUnspentOutputs import Cardano.Types.TransactionWitnessSet (_redeemers) @@ -236,7 +237,8 @@ balanceTxWithConstraints transaction extraUtxos constraintsBuilder = , changeDatum: changeDatum' , allUtxos , utxos: availableUtxos - , certsFee: getCertsBalance transaction pparams + , miscFee: getCertsBalance transaction pparams + getProposalsBalance + transaction } where getChangeAddress :: BalanceTxM Address @@ -294,7 +296,7 @@ type BalancerParams = , changeDatum :: Maybe OutputDatum , allUtxos :: UtxoMap , utxos :: UtxoMap - , certsFee :: BigInt -- can be negative (deregistration) + , miscFee :: BigInt -- can be negative (deregistration) } -- TODO: remove the parameter @@ -434,11 +436,11 @@ runBalancer p = do changeOutputs <- makeChange ownWalletAddresses p.changeAddress p.changeDatum inputValue' - p.certsFee + p.miscFee txBody requiredValue <- - except $ getRequiredValue p.certsFee p.allUtxos + except $ getRequiredValue p.miscFee p.allUtxos $ setTxChangeOutputs changeOutputs transaction ^. _body worker $ @@ -468,7 +470,7 @@ runBalancer p = do let txBody :: TransactionBody txBody = setTxChangeOutputs changeOutputs transaction ^. _body - except (getRequiredValue p.certsFee p.allUtxos txBody) + except (getRequiredValue p.miscFee p.allUtxos txBody) >>= performMultiAssetSelection p.strategy leftoverUtxos -- | Calculates execution units for each script in the transaction and sets @@ -560,7 +562,7 @@ makeChange changeAddress changeDatum inputValue' - certsFee + miscFee txBody = -- Always generate change when a transaction has no outputs to avoid issues -- with transaction confirmation: @@ -641,7 +643,7 @@ makeChange excessValue :: Val excessValue = posVal $ (inputValue <> mintValue txBody) `Val.minus` - (outputValue txBody <> minFeeValue txBody <> Val certsFee Map.empty) + (outputValue txBody <> minFeeValue txBody <> Val miscFee Map.empty) posVal :: Val -> Val posVal (Val coin nonAdaAsset) = @@ -796,9 +798,9 @@ mkChangeOutput changeAddress datum amount = wrap getRequiredValue :: BigInt -> UtxoMap -> TransactionBody -> Either BalanceTxError Val -getRequiredValue certsFee utxos txBody = do +getRequiredValue miscFee utxos txBody = do getInputVal utxos txBody <#> \inputValue -> - ( outputValue txBody <> minFeeValue txBody <> Val certsFee Map.empty + ( outputValue txBody <> minFeeValue txBody <> Val miscFee Map.empty ) `Val.minus` (inputValue <> mintValue txBody) @@ -821,6 +823,16 @@ minFeeValue txBody = Val.fromCoin $ txBody ^. _fee mintValue :: TransactionBody -> Val mintValue txBody = maybe mempty Val.fromMint (txBody ^. _mint) +getProposalsBalance :: Transaction -> BigInt +getProposalsBalance tx = + let + deposits :: BigInt + deposits = + sum $ map (BigNum.toBigInt <<< _.deposit <<< unwrap) + (tx ^. _body <<< _votingProposals) + in + deposits + -- | Accounts for: -- | -- | - stake registration deposit From 25948fc4bf519aface3c7849f759029941eabf21 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 26 Jul 2024 21:11:01 +0200 Subject: [PATCH 340/373] Add Gov.SubmitProposal example for KeyWallet, Fix getRewardAddresses --- examples/KeyWallet/SubmitProposal.purs | 13 +++++++++++++ src/Internal/Contract/Wallet.purs | 15 ++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 examples/KeyWallet/SubmitProposal.purs diff --git a/examples/KeyWallet/SubmitProposal.purs b/examples/KeyWallet/SubmitProposal.purs new file mode 100644 index 000000000..c555e2909 --- /dev/null +++ b/examples/KeyWallet/SubmitProposal.purs @@ -0,0 +1,13 @@ +module Ctl.Examples.KeyWallet.SubmitProposal + ( main + ) where + +import Contract.Prelude + +import Ctl.Examples.Gov.SubmitProposal (contract) as Gov.SubmitProposal +import Ctl.Examples.KeyWallet.Internal.Contract (runKeyWalletContract) + +main :: Effect Unit +main = + runKeyWalletContract \unlock -> + Gov.SubmitProposal.contract *> liftEffect unlock diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 94abe5474..1513e9452 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -21,7 +21,11 @@ module Ctl.Internal.Contract.Wallet import Prelude import Cardano.Types (Ed25519KeyHash, RawBytes) -import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) +import Cardano.Types.Address + ( Address(RewardAddress) + , getPaymentCredential + , getStakeCredential + ) import Cardano.Types.BigNum as BigNum import Cardano.Types.Credential as Credential import Cardano.Types.PaymentPubKeyHash (PaymentPubKeyHash) @@ -82,8 +86,13 @@ getRewardAddresses = withWallet $ actionBasedOnWallet _.getRewardAddresses \kw -> do networkId <- asks _.networkId - addr <- liftAff $ (unwrap kw).address networkId - pure $ Array.singleton addr + mStakeCred <- liftAff $ getStakeCredential <$> (unwrap kw).address + networkId + pure $ maybe mempty + ( Array.singleton <<< RewardAddress <<< + { networkId, stakeCredential: _ } + ) + mStakeCred -- | Get all `Address`es of the browser wallet. getWalletAddresses :: Contract (Array Address) From b09c4599418aae5c7793f77e99e3fbddcf982e81 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Mon, 29 Jul 2024 17:21:50 +0200 Subject: [PATCH 341/373] Extend Gov.SubmitProposal example to Gov.SubmitVoteSimple --- ...mitProposal.purs => SubmitVoteSimple.purs} | 49 +++++++++++++++++-- ...mitProposal.purs => SubmitVoteSimple.purs} | 6 +-- packages.dhall | 2 +- spago-packages.nix | 8 +-- 4 files changed, 52 insertions(+), 13 deletions(-) rename examples/Gov/{SubmitProposal.purs => SubmitVoteSimple.purs} (52%) rename examples/KeyWallet/{SubmitProposal.purs => SubmitVoteSimple.purs} (50%) diff --git a/examples/Gov/SubmitProposal.purs b/examples/Gov/SubmitVoteSimple.purs similarity index 52% rename from examples/Gov/SubmitProposal.purs rename to examples/Gov/SubmitVoteSimple.purs index c13386a6a..8cc504531 100644 --- a/examples/Gov/SubmitProposal.purs +++ b/examples/Gov/SubmitVoteSimple.purs @@ -1,4 +1,4 @@ -module Ctl.Examples.Gov.SubmitProposal +module Ctl.Examples.Gov.SubmitVoteSimple ( contract , example , main @@ -6,10 +6,17 @@ module Ctl.Examples.Gov.SubmitProposal import Contract.Prelude -import Cardano.Transaction.Builder (TransactionBuilderStep(SubmitProposal)) +import Cardano.Transaction.Builder + ( TransactionBuilderStep(SubmitProposal, SubmitVotingProcedure) + ) import Cardano.Types ( Address(RewardAddress) + , Credential(PubKeyHashCredential) + , GovernanceActionId , RewardAddress + , Vote(VoteYes) + , Voter(Drep) + , VotingProcedure(VotingProcedure) , VotingProposal(VotingProposal) ) import Cardano.Types (GovernanceAction(Info)) as GovAction @@ -23,10 +30,10 @@ import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ProtocolParameters (getProtocolParameters) import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) -import Contract.Wallet (getRewardAddresses) +import Contract.Wallet (getRewardAddresses, ownDrepPubKeyHash) import Ctl.Examples.Gov.Internal.Common (dummyAnchor) import Data.Array (head) as Array -import Data.Map (empty) as Map +import Data.Map (empty, singleton) as Map main :: Effect Unit main = example $ testnetConfig @@ -38,6 +45,23 @@ example = launchAff_ <<< flip runContract contract contract :: Contract Unit contract = do + logInfo' "Running Examples.Gov.SubmitVoteSimple" + govActionId <- submitProposal + logInfo' $ "Successfully submitted voting proposal. Action id: " <> show + govActionId + submitVote govActionId + logInfo' "Successfully voted on the proposal." + +{- + { transactionId: unsafePartial fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe + "fec3c9c4c8bf9b02237bbdccca9460eee1e5b67a5052fdbd5eb1d7ec1719d9f0" + , index: zero + } +-} + +submitProposal :: Contract GovernanceActionId +submitProposal = do logInfo' "Running Examples.Gov.SubmitProposal" govActionDeposit <- _.govActionDeposit <<< unwrap <$> getProtocolParameters @@ -53,9 +77,24 @@ contract = do , returnAddr: rewardAddr } ] + let txHash = Transaction.hash tx + awaitTxConfirmed txHash + pure $ wrap { transactionId: txHash, index: zero } +-- NOTE: The wallet must be registered as DRep to submit a vote. +-- See Ctl.Examples.Gov.RegisterDrep +submitVote :: GovernanceActionId -> Contract Unit +submitVote govActionId = do + drepCred <- PubKeyHashCredential <$> ownDrepPubKeyHash + + tx <- submitTxFromBuildPlan Map.empty mempty + [ SubmitVotingProcedure (Drep drepCred) + ( Map.singleton govActionId $ + VotingProcedure { vote: VoteYes, anchor: Nothing } + ) + Nothing + ] awaitTxConfirmed $ Transaction.hash tx - logInfo' "Successfully submitted voting proposal." asRewardAddress :: Address -> Maybe RewardAddress asRewardAddress = case _ of diff --git a/examples/KeyWallet/SubmitProposal.purs b/examples/KeyWallet/SubmitVoteSimple.purs similarity index 50% rename from examples/KeyWallet/SubmitProposal.purs rename to examples/KeyWallet/SubmitVoteSimple.purs index c555e2909..83a96b4cb 100644 --- a/examples/KeyWallet/SubmitProposal.purs +++ b/examples/KeyWallet/SubmitVoteSimple.purs @@ -1,13 +1,13 @@ -module Ctl.Examples.KeyWallet.SubmitProposal +module Ctl.Examples.KeyWallet.SubmitVoteSimple ( main ) where import Contract.Prelude -import Ctl.Examples.Gov.SubmitProposal (contract) as Gov.SubmitProposal +import Ctl.Examples.Gov.SubmitVoteSimple (contract) as Gov.SubmitVoteSimple import Ctl.Examples.KeyWallet.Internal.Contract (runKeyWalletContract) main :: Effect Unit main = runKeyWalletContract \unlock -> - Gov.SubmitProposal.contract *> liftEffect unlock + Gov.SubmitVoteSimple.contract *> liftEffect unlock diff --git a/packages.dhall b/packages.dhall index 08d97cb65..3fea5b8a9 100644 --- a/packages.dhall +++ b/packages.dhall @@ -452,7 +452,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "48866bd7f5eeb8e0870c97384264d08bda9c2725" + , version = "40628bbb1049f3eb5364d304f949135e2ee2a2fb" } , mote-testplan = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 484475873..42986e9bc 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; + version = "40628bbb1049f3eb5364d304f949135e2ee2a2fb"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-cardano-transaction-builder"; - rev = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; - sha256 = "1k57z6l14679vphw6l8l52hfyj5a1pk7vbjn929nsv0axp5y7fxa"; + url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; + rev = "40628bbb1049f3eb5364d304f949135e2ee2a2fb"; + sha256 = "0i7m20gs2aax47n69i7f8kphnkl5hj6xillhsvgvjbm3hn3lm838"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From a5ee44a3ac93b9894abf91ce522a41ce57997dc4 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 30 Jul 2024 21:10:25 +0400 Subject: [PATCH 342/373] - update the docs for cardano-testnet integration - remove excessive logging in cardano-testnet - apply more relaxed process.setMaxListeners limits --- doc/cardano-testnet-testing.md | 56 ++++++++++---------------------- src/Internal/CardanoCli.purs | 8 ++--- src/Internal/Testnet/Server.purs | 13 +++++--- src/Internal/Testnet/Utils.js | 6 ++++ src/Internal/Testnet/Utils.purs | 7 +++- 5 files changed, 40 insertions(+), 50 deletions(-) diff --git a/doc/cardano-testnet-testing.md b/doc/cardano-testnet-testing.md index fdb430a1d..7065a5ce2 100644 --- a/doc/cardano-testnet-testing.md +++ b/doc/cardano-testnet-testing.md @@ -4,10 +4,10 @@ +- [Overview](#overview) - [Architecture](#architecture) - [Testing contracts](#testing-contracts) - [Testing with Mote](#testing-with-mote) - - [Overview](#overview) - [Using Mote testing interface](#using-mote-testing-interface) - [Internal implementation overview](#internal-implementation-overview) - [Testing in Aff context](#testing-in-aff-context) @@ -22,6 +22,11 @@ - [See also](#see-also) + +## Overview + +[`cardano-testnet`](https://github.com/IntersectMBO/cardano-node/tree/master/cardano-testnet) is a tool for spinning up temporary local testnets. CTL integrates with it to provide an environment for `Contract` testing, that is very close to production. + ## Architecture CTL depends on a number of binaries in the `$PATH` to execute tests on the @@ -49,20 +54,13 @@ the Cardano Testnet: 2. `nix run .#checks.x86_64-linux.ctl-scaffold-local-testnet-test` * where you'd usually replace `x86_64-linux` with the system you run tests on * and `ctl-scaffold-local-testnet-test` with the name of the test derivation for your project; - * note that building of your project via Nix will fail in case there are any PureScript compile-time warnings. ## Testing contracts -CTL can help you test the offchain `Contract`s from your project (and -consequently the interaction of onchain and offchain code) by connecting to the -Cardano Testnet and making all your `Contract`s interact with it. - -There are two approaches to writing such tests. +CTL provides integrated testing environment for Mote (a test framework in PureScript). Alternatively, testing in the `Aff` context is also available, which makes it possible to integrate with any testing framework (or none at all). ### Testing with Mote -#### Overview - [Mote](https://github.com/garyb/purescript-mote) is a DSL for defining and grouping tests (plus other quality of life features, e.g. skipping marked tests). @@ -144,8 +142,7 @@ the example above the environment and Testnet setup will happen 3 times. #### Internal implementation overview -`Contract.Test.Testnet.testTestnetContracts` type is defined as follows (after -expansion of the CTL's `TestPlanM` type synonym): +`Contract.Test.Testnet.testTestnetContracts` type is defined as follows: ```purescript type TestPlanM :: Type -> Type -> Type @@ -169,35 +166,22 @@ where * here we use `Aff` again * `a :: Type` is a result of the test suite, we use `Unit` here. -`testTestnetContracts` also combines distributions of individual tests in a single -big distribution (via nested tuples) and modifies tests to pluck their required -distributions out of the big one. This allows to create wallets and fund them in -one step, during the Testnet setup. See the comments in the +`testTestnetContracts` also combines ADA distribution requirements of individual tests in a single ADA distribution requirement. This allows to create multiple wallets and +fund them in one step, during the Testnet setup. See the comments in the [`Ctl.Internal.Testnet.Server` module](../src/Internal/Testnet/Contract.purs) for -more info (relevant ones are in `execDistribution` and `testTestnetContracts` -functions). - -In complicated protocols you might want to execute some `Contract`s in one test and -then execute other `Contract`s which depend on some wallet-dependent state set up -by the first batch of contracts, e.g. some authorization token is present at some -wallet. Keeping these steps in separate sequential tests allows to pinpoint where -things failed much easier, but currently CTL uses separate wallets for each test -without an easy way to refer to wallets in other tests, so you have to call the -first batch of contracts again to replicate the state of the wallets, which in turn -might fail or mess up your protocol, because the chain state is shared between -tests for each top-level group. +more info. ### Testing in Aff context -Second approach is to use the `Contract.Test.Testnet.runTestnetContract` function, +If using Mote is not desired, it's possible to use the `Contract.Test.Testnet.runTestnetContract` function, which takes a single `Contract`, connects to the Testnet and executes the passed contract. This function runs in `Aff`; it will also throw an exception should -contract fail for any reason. After the contract execution the Testnet is -terminated. You can either call it directly from your test's main or use any -library for grouping and describing tests which support effects in the test body, -like Mote. +contract fail for any reason. The testnet is terminated after `Contract` execution. + +You can either call this function directly from your test's `main` or use any +library for grouping and describing tests which support `Aff` effects in test bodies. -`Contract.Test.Testnet.runTestnetContract`'s function type is defined as follows: +`Contract.Test.Testnet.runTestnetContract`'s type is defined as follows: ```purescript runTestnetContract @@ -372,17 +356,11 @@ your project's `flake.nix`. This is done by default in the , era :: Era , slotLength :: Seconds , epochSize :: Maybe UInt - -- FIXME: , maxTxSize :: Maybe UInt - -- FIXME: , raiseExUnitsToMax :: Boolean } ``` - `slotLength` and `epochSize` define time-related protocol parameters. Epoch size is specified in slots. -- `maxTxSize` (in bytes) allows to stress-test protocols with more restrictive - transaction size limits. -- `raiseExUnitsToMax` allows to bypass execution units limit (useful when compiling - the contract with tracing in development and without it in production). ### Current limitations diff --git a/src/Internal/CardanoCli.purs b/src/Internal/CardanoCli.purs index 44f0a5c01..05e44adfd 100644 --- a/src/Internal/CardanoCli.purs +++ b/src/Internal/CardanoCli.purs @@ -24,7 +24,8 @@ import Data.Bifunctor (lmap) import Data.ByteArray (ByteArray) import Data.ByteArray as Data.ByteArray import Data.List as List -import Data.String as String +import Data.String (Pattern(Pattern), split, trim) as String +import Data.String.CodeUnits (fromCharArray) as String import Data.UInt (UInt) import Data.UInt as UInt import Effect.Exception (error) @@ -140,7 +141,6 @@ execCardanoCli } execCardanoCli params = annotateError "execCardanoCli" do let cmd = "cardano-cli " <> intercalate " " params - -- log $ show { execCardanoCli: cmd } { channels, process } <- Ctl.Internal.Spawn.exec cmd let bufferToLines = @@ -209,9 +209,7 @@ parseAssetName = =<< parseHex makeString :: forall f. Foldable f => f Char -> String -makeString = String.fromCodePointArray - <<< map String.codePointFromChar - <<< Array.fromFoldable +makeString = String.fromCharArray <<< Array.fromFoldable parseNatural :: forall n. (String -> Either String n) -> Parsing.Parser String n parseNatural toNumber = Parsing.liftEither diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index 6e335baa5..a2959bf53 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -7,7 +7,7 @@ module Ctl.Internal.Testnet.Server , makeClusterContractEnv ) where -import Contract.Prelude +import Contract.Prelude hiding (log) import Cardano.Types (NetworkId(MainnetId)) import Contract.Config (Hooks, defaultSynchronizationParams, defaultTimeParams) @@ -72,7 +72,6 @@ import Data.String.Pattern (Pattern(Pattern)) import Data.Time.Duration (Milliseconds(Milliseconds)) import Data.UInt (UInt) import Data.UInt (toString) as UInt -import Debug (spy) import Effect.Aff (Aff) import Effect.Aff as Aff import Effect.Aff.Retry @@ -233,7 +232,6 @@ startTestnetCluster cfg cleanupRef = do kupo <- annotateError "Could not start kupo" $ startKupo' { paths, workdir: workdirAbsolute } - log "startTestnetCluster:done" pure $ MkStartedTestnetCluster { paths , ogmios @@ -305,7 +303,7 @@ spawnCardanoTestnet { cwd } params = do opts = defaultSpawnOptions { cwd = Just cwd, env = Just $ Object.union env' env } workspaceRef <- liftEffect $ Ref.new mempty - ps <- spawn "cardano-testnet" (spy "cardano-testnet options: " options) opts $ + ps <- spawn "cardano-testnet" options opts $ Just ( \{ line } -> case String.stripPrefix (Pattern "Workspace: ") (String.trim line) of @@ -381,7 +379,7 @@ startCardanoTestnet params cleanupRef = annotateError "startCardanoTestnet" do $ liftEffect $ addCleanup cleanupRef $ liftEffect do - log "Cleaning up workidr" + log $ "Cleaning up workdir: " <> workspace _rmdirSync workspace _ <- redirectChannels @@ -598,3 +596,8 @@ stopChildProcessWithPort port childProcess = do defaultRetryPolicy :: RetryPolicy defaultRetryPolicy = limitRetriesByCumulativeDelay (Milliseconds 3000.00) $ constantDelay (Milliseconds 100.0) + +-- replace with Effect.Console.log to debug. Not providing an option at runtime, +-- because it's just for the CTL developers. +log :: forall m. Monad m => String -> m Unit +log _ = pure unit diff --git a/src/Internal/Testnet/Utils.js b/src/Internal/Testnet/Utils.js index f20ecae69..45bf58db6 100644 --- a/src/Internal/Testnet/Utils.js +++ b/src/Internal/Testnet/Utils.js @@ -1,5 +1,11 @@ import os from "os"; +try { + process.setMaxListeners(10000); +} catch (e) { + console.warn(e); +} + export function tmpdir() { return os.tmpdir(); } diff --git a/src/Internal/Testnet/Utils.purs b/src/Internal/Testnet/Utils.purs index 429372e6c..401191c03 100644 --- a/src/Internal/Testnet/Utils.purs +++ b/src/Internal/Testnet/Utils.purs @@ -30,7 +30,7 @@ module Ctl.Internal.Testnet.Utils , annotateError ) where -import Contract.Prelude +import Contract.Prelude hiding (log) import Contract.Config as Contract.Config import Contract.TextEnvelope @@ -378,6 +378,11 @@ suppressAndLogErrors location = flip catchError $ message >>> append ("An error occured and suppressed at " <> location <> ": ") >>> log +-- replace with Effect.Console.log to debug. Not providing an option at runtime, +-- because it's just for the CTL developers. +log :: forall m. Monad m => String -> m Unit +log _ = pure unit + newtype EventSource b = EventSource { subscribe :: ( { unsubscribe :: Effect Unit From 70ab312ebe7615444c895fd1072b6be91e47430d Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 30 Jul 2024 22:15:56 +0400 Subject: [PATCH 343/373] Update the changelog --- CHANGELOG.md | 77 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 434c1bb52..a09fa6373 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,67 +7,98 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -- [[v9.0.0]](#v900) - - [Deprecated](#deprecated) +- [[v9.1.0]](#v910) - [Added](#added) - - [Removed](#removed) - [Changed](#changed) + - [Removed](#removed) - [Fixed](#fixed) -- [[v8.0.0]](#v800) +- [[v9.0.0]](#v900) + - [Deprecated](#deprecated) - [Added](#added-1) + - [Removed](#removed-1) - [Changed](#changed-1) - [Fixed](#fixed-1) - - [Removed](#removed-1) -- [[v7.0.0]](#v700) +- [[v8.0.0]](#v800) - [Added](#added-2) - [Changed](#changed-2) - [Fixed](#fixed-2) - [Removed](#removed-2) -- [[v6.0.0]](#v600) +- [[v7.0.0]](#v700) - [Added](#added-3) - [Changed](#changed-3) - [Fixed](#fixed-3) - [Removed](#removed-3) -- [[v5.0.0]](#v500) +- [[v6.0.0]](#v600) - [Added](#added-4) - [Changed](#changed-4) - - [Removed](#removed-4) - [Fixed](#fixed-4) - - [Runtime Dependencies](#runtime-dependencies) -- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - - [Fixed](#fixed-5) -- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Removed](#removed-4) +- [[v5.0.0]](#v500) - [Added](#added-5) -- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - - [Added](#added-6) - [Changed](#changed-5) - [Removed](#removed-5) + - [Fixed](#fixed-5) + - [Runtime Dependencies](#runtime-dependencies) +- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - [Fixed](#fixed-6) - - [Runtime Dependencies](#runtime-dependencies-1) -- [[3.0.0] - 2022-11-21](#300---2022-11-21) +- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Added](#added-6) +- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - [Added](#added-7) - [Changed](#changed-6) - [Removed](#removed-6) - [Fixed](#fixed-7) - - [Runtime Dependencies](#runtime-dependencies-2) -- [[2.0.0] - 2022-09-12](#200---2022-09-12) + - [Runtime Dependencies](#runtime-dependencies-1) +- [[3.0.0] - 2022-11-21](#300---2022-11-21) - [Added](#added-8) - [Changed](#changed-7) - [Removed](#removed-7) - [Fixed](#fixed-8) -- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Runtime Dependencies](#runtime-dependencies-2) +- [[2.0.0] - 2022-09-12](#200---2022-09-12) - [Added](#added-9) - - [Removed](#removed-8) - [Changed](#changed-8) + - [Removed](#removed-8) - [Fixed](#fixed-9) -- [[1.1.0] - 2022-06-30](#110---2022-06-30) +- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Added](#added-10) + - [Removed](#removed-9) + - [Changed](#changed-9) - [Fixed](#fixed-10) -- [[1.0.1] - 2022-06-17](#101---2022-06-17) +- [[1.1.0] - 2022-06-30](#110---2022-06-30) - [Fixed](#fixed-11) +- [[1.0.1] - 2022-06-17](#101---2022-06-17) + - [Fixed](#fixed-12) - [[1.0.0] - 2022-06-10](#100---2022-06-10) +## [v9.1.0] + +This version provides basic Conway support and replaces Plutip with `cardano-testnet`. + +- `cardano-node`: 9.1.0 +- `ogmios`: 6.5.0 +- `kupo`: 2.9.0 +- `@mlabs-haskell/cardano-serialization-lib-gc`: `12.0.0-alpha.31` (wraps the same version of [CSL](https://github.com/Emurgo/cardano-serialization-lib/)) +- `@mlabs-haskell/uplc-apply-args`: `1.0.29-alpha` (wraps the same version of the [`uplc` crate](https://crates.io/crates/uplc)) + +### Added + +- `Contract.Transaction.getTxAuxiliaryData` for querying transaction data ([#1624](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1624)). + +### Changed + +- `Contract.Test.Plutip` is replaced with `Contract.Test.Testnet` that uses `cardano-testnet` instead of Plutip. As a result, we reduced the dependency footprint (`cardano-testnet` is distributed with `cardano-node`, so there are no internal Haskell components anymore in CTL) ([#1624](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1624)) + +### Removed + +- `Contract.Transaction.getTxMetadata` - use `getTxAuxiliaryData` ([#1624](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1624)) + +### Fixed + +- Non-deterministic `ClientHttpError` raised during tests on rare occasions ([#1624](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1624)). + ## [v9.0.0] ### Deprecated From c3fe75223cd0c60a2e0462cc80f4bff25bf48954 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 30 Jul 2024 22:30:23 +0400 Subject: [PATCH 344/373] Update the template --- templates/ctl-scaffold/flake.lock | 24 +++++++++++------------ templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 8 ++++---- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 9b93f8118..02a5b3d9c 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1840,17 +1840,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1720834069, - "narHash": "sha256-jWFjTUTpwAgvsSJsQ4INgKl/paR489n1si35GLtSkuU=", + "lastModified": 1721870874, + "narHash": "sha256-qiReN+xxtbb4kEfdIWbBcqcJpPGD8he0p/TVD7U3CqM=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", + "rev": "7969a73e5c7ee1f3b2a40274b34191fdd8de170b", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", + "rev": "7969a73e5c7ee1f3b2a40274b34191fdd8de170b", "type": "github" } }, @@ -2125,16 +2125,16 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1720029730, - "narHash": "sha256-ESE5/7XzXeIZldkYPbMd8CoMKQo9ghY1vOkhHpOj0K4=", + "lastModified": 1721843629, + "narHash": "sha256-F5wgRA820x16f+8c/LlEEBG0rMJIA1XWw6X0ZwX5UWs=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "2820a63dc934c6d5b5f450b6c2543b81c6476696", + "rev": "176f99e51155cb3eaa0711db1c3c969d67438958", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "9.0.0", + "ref": "9.1.0", "repo": "cardano-node", "type": "github" } @@ -2782,17 +2782,17 @@ "ogmios": "ogmios_2" }, "locked": { - "lastModified": 1721923839, - "narHash": "sha256-Z1uSTkhjxFrcW/lOo1SNkQ8JqQ0k5O9A4wetaquAYoI=", + "lastModified": 1722363356, + "narHash": "sha256-9AQgEftAlU+B0mV3fxZlwhQ7l3vxG/MXyHDgEIkfzwk=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "69db7bac9c1ee4fc443510a39943734500f6f2d3", + "rev": "70ab312ebe7615444c895fd1072b6be91e47430d", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "69db7bac9c1ee4fc443510a39943734500f6f2d3", + "rev": "70ab312ebe7615444c895fd1072b6be91e47430d", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index c4a297d60..835cef22e 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "69db7bac9c1ee4fc443510a39943734500f6f2d3"; + rev = "70ab312ebe7615444c895fd1072b6be91e47430d"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 12c508c09..79537e48f 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -548,7 +548,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "69db7bac9c1ee4fc443510a39943734500f6f2d3" + , version = "70ab312ebe7615444c895fd1072b6be91e47430d" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 8bb0ae5ec..6a2364874 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -285,7 +285,7 @@ let name = "cardano-transaction-builder"; version = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-cardano-transaction-builder"; + url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; rev = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; sha256 = "1k57z6l14679vphw6l8l52hfyj5a1pk7vbjn929nsv0axp5y7fxa"; }; @@ -295,11 +295,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "69db7bac9c1ee4fc443510a39943734500f6f2d3"; + version = "70ab312ebe7615444c895fd1072b6be91e47430d"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "69db7bac9c1ee4fc443510a39943734500f6f2d3"; - sha256 = "10k2h2mnmb87wd0fzr141nlhj3wiimaa6kprbgf5mi3391794nv7"; + rev = "70ab312ebe7615444c895fd1072b6be91e47430d"; + sha256 = "02fg3y4i1q3hr0bz66zigfbkn562clb7yxv5sa0lz5a0zc8j017l"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 1961c3a91926d230a08402aeb2ac85912dcb8690 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Tue, 30 Jul 2024 22:32:14 +0400 Subject: [PATCH 345/373] Fix uplc link --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a09fa6373..fcbec0bd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,7 +81,7 @@ This version provides basic Conway support and replaces Plutip with `cardano-tes - `ogmios`: 6.5.0 - `kupo`: 2.9.0 - `@mlabs-haskell/cardano-serialization-lib-gc`: `12.0.0-alpha.31` (wraps the same version of [CSL](https://github.com/Emurgo/cardano-serialization-lib/)) -- `@mlabs-haskell/uplc-apply-args`: `1.0.29-alpha` (wraps the same version of the [`uplc` crate](https://crates.io/crates/uplc)) +- `@mlabs-haskell/uplc-apply-args`: `1.0.29-alpha` (wraps the same version of the [`uplc` crate](https://github.com/aiken-lang/aiken/tree/main/crates/uplc)) ### Added From 92c81acf4c5c8ea507dd0ddb411d44f7fc760d72 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 31 Jul 2024 15:37:13 +0200 Subject: [PATCH 346/373] Revise signData for KeyWallet, Support signing with DRep key --- packages.dhall | 2 +- spago-packages.nix | 6 +++--- src/Internal/Contract/Wallet.purs | 11 ++++++++--- src/Internal/Wallet/Cip30Mock.purs | 22 +++++++++++++++++----- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/packages.dhall b/packages.dhall index 3fea5b8a9..e2116b2c0 100644 --- a/packages.dhall +++ b/packages.dhall @@ -296,7 +296,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet" - , version = "57261b623f0f3fc90a34611071e630b8521a115c" + , version = "3fe93e45ac1444a429abfe6e135addf568500c23" } , uplc-apply-args = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 42986e9bc..be0ae9ec6 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -235,11 +235,11 @@ let "cardano-key-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-key-wallet"; - version = "57261b623f0f3fc90a34611071e630b8521a115c"; + version = "3fe93e45ac1444a429abfe6e135addf568500c23"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "57261b623f0f3fc90a34611071e630b8521a115c"; - sha256 = "1zng6mg2pip327qznnvg72rnkbp7b199sqiaz8f1dyywd0wpfrx3"; + rev = "3fe93e45ac1444a429abfe6e135addf568500c23"; + sha256 = "0dl0c14n6xq1pf97i94ix05z81padx1dkxv4jnswxm8y6zkab810"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index 1513e9452..ece9bc565 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -109,9 +109,14 @@ signData address payload = withWallet $ actionBasedOnWallet (\w -> w.signData address payload) - \kw -> do - networkId <- asks _.networkId - liftAff $ (unwrap kw).signData networkId payload + ( \kw -> do + mDataSig <- liftAff $ (unwrap kw).signData address payload + liftM + ( error + "signData via KeyWallet: Unable to sign data for the supplied address" + ) + mDataSig + ) getWallet :: Contract (Maybe Wallet) getWallet = asks _.wallet diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 94427b9be..94af089f8 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -10,6 +10,7 @@ import Cardano.Types , StakeCredential(StakeCredential) ) import Cardano.Types.Address (Address(RewardAddress)) +import Cardano.Types.Address (fromBech32) as Address import Cardano.Types.NetworkId (NetworkId(MainnetId, TestnetId)) import Cardano.Types.PrivateKey as PrivateKey import Cardano.Types.PublicKey as PublicKey @@ -23,6 +24,7 @@ import Cardano.Wallet.Key , privateKeysToKeyWallet ) import Contract.Monad (Contract) +import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe, try) import Control.Monad.Reader (ask) import Control.Monad.Reader.Class (local) @@ -159,11 +161,21 @@ mkCip30Mock pKey mSKey mbDrepKey = do $ wrap txBytes witness <- (unwrap keyWallet).signTx tx pure $ byteArrayToHex $ unwrap $ encodeCbor witness - , signData: mkFn2 \_addr msg -> unsafePerformEffect $ fromAff do - msgBytes <- liftMaybe (error "Unable to convert CBOR") $ - hexToByteArray msg - { key, signature } <- (unwrap keyWallet).signData env.networkId - (wrap msgBytes) + , signData: mkFn2 \addrRaw msg -> unsafePerformEffect $ fromAff do + let addrFromHex = (decodeCbor <<< wrap) <=< hexToByteArray + addr <- + liftMaybe + (error "Failed to decode Address") + (addrFromHex addrRaw <|> Address.fromBech32 addrRaw) + msgBytes <- + liftMaybe + (error "Failed to decode payload") + (hexToByteArray msg) + mDataSig <- (unwrap keyWallet).signData addr (wrap msgBytes) + { key, signature } <- + liftMaybe + (error "Unable to sign data for the supplied address") + mDataSig pure { key: byteArrayToHex $ unwrap key , signature: byteArrayToHex $ unwrap signature From 81b99ab0ee0bfcd0476e35beb039845d7cfb45d3 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 31 Jul 2024 17:23:33 +0200 Subject: [PATCH 347/373] Update cardano-nix flake input --- flake.lock | 7 +++---- flake.nix | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index c53937970..4cac80f01 100644 --- a/flake.lock +++ b/flake.lock @@ -2059,16 +2059,15 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1721651758, - "narHash": "sha256-pciT8ASgAovl6I0GsdiWnUhExNXPJtQZpD8dTcv1o60=", + "lastModified": 1722438671, + "narHash": "sha256-Nb8bROKPjRWFMsaHIK4BOvsTceL9klpF3Ucp/zHqRzM=", "owner": "mlabs-haskell", "repo": "cardano.nix", - "rev": "f6a7f0c43299783ca37bbdc73195c7289854e8da", + "rev": "7e696a77440d14f161c8b426d90fecfdb70ad8d8", "type": "github" }, "original": { "owner": "mlabs-haskell", - "ref": "dshuiski/ogmios-v6.5.0", "repo": "cardano.nix", "type": "github" } diff --git a/flake.nix b/flake.nix index 782c014c9..4a0598094 100644 --- a/flake.nix +++ b/flake.nix @@ -45,7 +45,7 @@ # Get Ogmios and Kupo from cardano-nix cardano-nix = { - url = "github:mlabs-haskell/cardano.nix/dshuiski/ogmios-v6.5.0"; + url = "github:mlabs-haskell/cardano.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; From 51619c84e2f99ed24b2a82d352a7378387abb68d Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 31 Jul 2024 23:33:02 +0200 Subject: [PATCH 348/373] Update Cip30Mock, Add simple tests for CIP-95 methods --- packages.dhall | 9 +- spago-packages.nix | 6 +- src/Internal/Test/UtxoDistribution.purs | 33 ++++++- src/Internal/Wallet/Cip30Mock.purs | 36 ++++++- test/Testnet/Common.purs | 12 ++- test/Testnet/Contract.purs | 125 ++++++++++++++++++++++-- 6 files changed, 203 insertions(+), 18 deletions(-) diff --git a/packages.dhall b/packages.dhall index e2116b2c0..66dcc1598 100644 --- a/packages.dhall +++ b/packages.dhall @@ -253,9 +253,14 @@ let additions = } , cip30-mock = { dependencies = - [ "aff-promise", "console", "effect", "functions", "prelude" ] + [ "aff-promise" + , "console" + , "effect" + , "functions" + , "prelude" + ] , repo = "https://github.com/mlabs-haskell/purescript-cip30-mock" - , version = "v1.0.0" + , version = "d00ba14769dceda1270658c63f14822db01f376d" } , cardano-collateral-select = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index be0ae9ec6..c29ca95ba 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -343,11 +343,11 @@ let "cip30-mock" = pkgs.stdenv.mkDerivation { name = "cip30-mock"; - version = "v1.0.0"; + version = "d00ba14769dceda1270658c63f14822db01f376d"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30-mock"; - rev = "7b4b7b2800f6d0ebd25554de63141cbd8c1e14a0"; - sha256 = "1b412s7p144h98csvy5w9z6vjhlpya9mqkxm2k8nxfdhq2znwfih"; + rev = "d00ba14769dceda1270658c63f14822db01f376d"; + sha256 = "1317qxibf4x3jbg0bljhdzlbi3z4mkywj1phlpqrhj0452d0g7xq"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Internal/Test/UtxoDistribution.purs b/src/Internal/Test/UtxoDistribution.purs index 45878f68c..932844cd0 100644 --- a/src/Internal/Test/UtxoDistribution.purs +++ b/src/Internal/Test/UtxoDistribution.purs @@ -9,6 +9,7 @@ module Ctl.Internal.Test.UtxoDistribution , InitialUTxOs , InitialUTxODistribution , InitialUTxOsWithStakeKey(InitialUTxOsWithStakeKey) + , TestWalletSpec(TestWalletSpec) , UtxoAmount ) where @@ -27,6 +28,7 @@ import Cardano.Types.PrivateKey (PrivateKey) import Cardano.Types.UtxoMap (UtxoMap) import Cardano.Wallet.Key ( KeyWallet + , PrivateDrepKey , PrivatePaymentKey(PrivatePaymentKey) , PrivateStakeKey , privateKeysToKeyWallet @@ -57,10 +59,12 @@ import Control.Monad.State.Trans (StateT(StateT), runStateT) import Data.Array (head) import Data.Array as Array import Data.FoldableWithIndex (foldMapWithIndex) +import Data.Generic.Rep (class Generic) import Data.List (List, (:)) import Data.Map as Map import Data.Maybe (Maybe(Nothing, Just)) -import Data.Newtype (unwrap, wrap) +import Data.Newtype (class Newtype, unwrap, wrap) +import Data.Show.Generic (genericShow) import Data.Traversable (traverse) import Data.Tuple (Tuple) import Data.Tuple.Nested (type (/\), (/\)) @@ -79,6 +83,18 @@ type InitialUTxOs = Array UtxoAmount data InitialUTxOsWithStakeKey = InitialUTxOsWithStakeKey PrivateStakeKey InitialUTxOs +newtype TestWalletSpec = TestWalletSpec + { utxos :: Array UtxoAmount + , stakeKey :: Maybe PrivateStakeKey + , drepKey :: Maybe PrivateDrepKey + } + +derive instance Generic TestWalletSpec _ +derive instance Newtype TestWalletSpec _ + +instance Show TestWalletSpec where + show = genericShow + -- | A spec for distribution of UTxOs between wallets. type InitialUTxODistribution = Array InitialUTxOs @@ -118,6 +134,15 @@ instance UtxoDistribution InitialUTxOsWithStakeKey KeyWallet where tail keyWallets _ wallet = [ wallet ] +instance UtxoDistribution TestWalletSpec KeyWallet where + encodeDistribution (TestWalletSpec { utxos }) = [ utxos ] + decodeWallets distr privateKeys = decodeWalletsDefault distr privateKeys + decodeWallets' (TestWalletSpec { stakeKey, drepKey }) privateKeys = + Array.uncons privateKeys <#> \{ head: key, tail } -> + privateKeysToKeyWallet (PrivatePaymentKey key) stakeKey drepKey /\ + tail + keyWallets _ wallet = [ wallet ] + instance UtxoDistribution (Array InitialUTxOs) (Array KeyWallet) where encodeDistribution = encodeDistributionArray decodeWallets d = decodeWalletsDefault d @@ -130,6 +155,12 @@ instance UtxoDistribution (Array InitialUTxOsWithStakeKey) (Array KeyWallet) whe decodeWallets' = decodeWallets'Array keyWallets = keyWalletsArray +instance UtxoDistribution (Array TestWalletSpec) (Array KeyWallet) where + encodeDistribution = encodeDistributionArray + decodeWallets d = decodeWalletsDefault d + decodeWallets' = decodeWallets'Array + keyWallets = keyWalletsArray + encodeDistributionArray :: forall (distr :: Type) . UtxoDistribution distr KeyWallet diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index 94af089f8..aa9dcd687 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -23,12 +23,13 @@ import Cardano.Wallet.Key , PrivateStakeKey , privateKeysToKeyWallet ) +import Cardano.Wallet.Key (getPrivateDrepKey, getPrivateStakeKey) as KeyWallet import Contract.Monad (Contract) import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe, try) import Control.Monad.Reader (ask) import Control.Monad.Reader.Class (local) -import Control.Promise (fromAff) +import Control.Promise (Promise, fromAff) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Helpers (liftEither) @@ -39,9 +40,10 @@ import Data.Either (hush) import Data.Foldable (fold, foldMap) import Data.Function.Uncurried (mkFn2) import Data.Map as Map -import Data.Maybe (Maybe(Just), maybe) +import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Newtype (unwrap, wrap) import Data.UInt as UInt +import Effect (Effect) import Effect.Aff (Aff) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) @@ -49,8 +51,8 @@ import Effect.Exception (error) import Effect.Unsafe (unsafePerformEffect) import Partial.Unsafe (unsafePartial) --- | Construct a CIP-30 wallet mock that exposes `KeyWallet` functionality --- | behind a CIP-30 interface and uses Ogmios to submit Txs. +-- | Construct a CIP-30 + CIP-95 wallet mock that exposes `KeyWallet` +-- | functionality behind a CIP-30 interface and uses Ogmios to submit Txs. -- | The wallet is injected directly to `window.cardano` object, under the -- | name corresponding to provided `WalletMock`. It works even in NodeJS -- | (we introduce a global `window` object and delete it afterwards). @@ -62,6 +64,13 @@ import Partial.Unsafe (unsafePartial) -- | Note that this function implements single-address light wallet logic, so -- | it will have to be changed a lot to successfully mimic the behavior of -- | multi-address wallets, like Eternl. +-- | +-- | WARNING: The implementation of `getRegisteredPubStakeKeys` and +-- | `getUnregisteredPubStakeKeys` for KeyWallet is partial. We cannot +-- | differentiate between registered and unregistered stake keys due +-- | to the limitations of the underlying query layer. As a result, +-- | all controlled stake keys are returned, irrespective of their +-- | registration status. withCip30Mock :: forall (a :: Type) . KeyWallet @@ -108,6 +117,18 @@ mkCip30Mock pKey mSKey mbDrepKey = do keyWallet = privateKeysToKeyWallet pKey mSKey mbDrepKey + getPubStakeKeys :: Effect (Promise (Array String)) + getPubStakeKeys = fromAff do + KeyWallet.getPrivateStakeKey keyWallet <#> case _ of + Just stakeKey -> + let + stakePubKey = PrivateKey.toPublicKey $ unwrap stakeKey + in + Array.singleton $ byteArrayToHex $ unwrap $ PublicKey.toRawBytes + stakePubKey + Nothing -> + mempty + addressHex <- liftAff $ (byteArrayToHex <<< unwrap <<< encodeCbor) <$> ((unwrap keyWallet).address env.networkId :: Aff Address) @@ -180,4 +201,11 @@ mkCip30Mock pKey mSKey mbDrepKey = do { key: byteArrayToHex $ unwrap key , signature: byteArrayToHex $ unwrap signature } + , getPubDrepKey: fromAff do + drepKey <- liftMaybe (error "Unable to get DRep key") =<< + KeyWallet.getPrivateDrepKey keyWallet + let drepPubKey = PrivateKey.toPublicKey $ unwrap drepKey + pure $ byteArrayToHex $ unwrap $ PublicKey.toRawBytes drepPubKey + , getRegisteredPubStakeKeys: getPubStakeKeys + , getUnregisteredPubStakeKeys: getPubStakeKeys } diff --git a/test/Testnet/Common.purs b/test/Testnet/Common.purs index 00f035269..0a5c94d13 100644 --- a/test/Testnet/Common.purs +++ b/test/Testnet/Common.purs @@ -1,10 +1,11 @@ module Test.Ctl.Testnet.Common - ( privateStakeKey + ( privateDrepKey + , privateStakeKey ) where import Prelude -import Cardano.Wallet.Key (PrivateStakeKey) +import Cardano.Wallet.Key (PrivateDrepKey, PrivateStakeKey) import Contract.Keys (privateKeyFromBytes) import Data.ByteArray (hexToByteArray) import Data.Maybe (fromJust) @@ -17,3 +18,10 @@ privateStakeKey = wrap $ unsafePartial $ fromJust ( hexToByteArray "633b1c4c4a075a538d37e062c1ed0706d3f0a94b013708e8f5ab0a0ca1df163d" ) + +privateDrepKey :: PrivateDrepKey +privateDrepKey = wrap $ unsafePartial $ fromJust + $ privateKeyFromBytes =<< map wrap + ( hexToByteArray + "9151f1251eaf26d1a4de071c94dcd23e566cd9bc970df04a1aa3e5e15ecd79b6" + ) diff --git a/test/Testnet/Contract.purs b/test/Testnet/Contract.purs index 2a08e429b..daf83fa04 100644 --- a/test/Testnet/Contract.purs +++ b/test/Testnet/Contract.purs @@ -14,7 +14,7 @@ import Cardano.Transaction.Builder , TransactionBuilderStep(Pay, SpendOutput) ) import Cardano.Types - ( Address + ( Address(EnterpriseAddress) , Credential(PubKeyHashCredential, ScriptHashCredential) , GeneralTransactionMetadata , PaymentCredential(PaymentCredential) @@ -29,12 +29,15 @@ import Cardano.Types.Int as Int import Cardano.Types.Mint as Mint import Cardano.Types.PlutusData (unit) as PlutusData import Cardano.Types.PlutusScript as PlutusScript +import Cardano.Types.PrivateKey (toPublicKey) as PrivateKey +import Cardano.Types.PublicKey (hash) as PublicKey import Cardano.Types.RedeemerDatum as RedeemerDatum import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Cardano.Types.Value (lovelaceValueOf) import Contract.Address ( PaymentPubKeyHash(PaymentPubKeyHash) , StakePubKeyHash + , getNetworkId , mkAddress ) import Contract.AuxiliaryData (setGeneralTxMetadata) @@ -118,8 +121,13 @@ import Contract.Wallet , getWalletCollateral , getWalletUtxos , isWalletAvailable + , ownDrepPubKey + , ownDrepPubKeyHash , ownPaymentPubKeyHashes + , ownRegisteredPubStakeKeys , ownStakePubKeyHashes + , ownUnregisteredPubStakeKeys + , signData , withKeyWallet ) import Control.Monad.Error.Class (try) @@ -147,17 +155,17 @@ import Ctl.Examples.OneShotMinting (contract) as OneShotMinting import Ctl.Examples.PaysWithDatum (contract) as PaysWithDatum import Ctl.Examples.PlutusV2.InlineDatum as InlineDatum import Ctl.Examples.PlutusV2.OneShotMinting (contract) as OneShotMintingV2 -import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts - ( contract - ) as ReferenceInputsAndScripts +import Ctl.Examples.PlutusV2.ReferenceInputsAndScripts (contract) as ReferenceInputsAndScripts import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) import Ctl.Examples.Schnorr as Schnorr import Ctl.Examples.SendsToken (contract) as SendsToken import Ctl.Examples.TxChaining (contract) as TxChaining +import Ctl.Internal.Test.UtxoDistribution (TestWalletSpec) import Ctl.Internal.Types.Interval (getSlotLength) import Ctl.Internal.Wallet.Cip30Mock (withCip30Mock) import Data.Array (head, (!!)) +import Data.Array (singleton) as Array import Data.Either (Either(Left, Right), hush, isLeft, isRight) import Data.Foldable (fold, foldM, length) import Data.Lens (view) @@ -187,10 +195,16 @@ import Test.Ctl.Fixtures , partiallyAppliedScriptFixture , unappliedScriptFixture ) -import Test.Ctl.Testnet.Common (privateStakeKey) +import Test.Ctl.Testnet.Common (privateDrepKey, privateStakeKey) import Test.Ctl.Testnet.Utils (getLockedInputs, submitAndLog) import Test.Ctl.Testnet.UtxoDistribution (checkUtxoDistribution) -import Test.Spec.Assertions (shouldEqual, shouldNotEqual, shouldSatisfy) +import Test.Spec.Assertions + ( expectError + , shouldEqual + , shouldNotEqual + , shouldReturn + , shouldSatisfy + ) suite :: TestPlanM ContractTest Unit suite = do @@ -2012,6 +2026,104 @@ suite = do getWalletBalance >>= flip shouldSatisfy (eq $ Just $ coinToValue $ Coin $ BigNum.fromInt 8_000_000) + test "ownDrepPubKey works" do + let + walletSpec :: TestWalletSpec + walletSpec = wrap + { utxos: + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 + ] + , stakeKey: Just privateStakeKey + , drepKey: Just privateDrepKey + } + withWallets walletSpec \alice -> + withCip30Mock alice "nami" $ + ownDrepPubKey `shouldReturn` + PrivateKey.toPublicKey (unwrap privateDrepKey) + + test "ownDrepPubKeyHash works" do + let + walletSpec :: TestWalletSpec + walletSpec = wrap + { utxos: + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 + ] + , stakeKey: Just privateStakeKey + , drepKey: Just privateDrepKey + } + withWallets walletSpec \alice -> + withCip30Mock alice "nami" $ + ownDrepPubKeyHash `shouldReturn` + PublicKey.hash (PrivateKey.toPublicKey $ unwrap privateDrepKey) + + test "ownRegisteredPubStakeKeys works" do + let + walletSpec :: TestWalletSpec + walletSpec = wrap + { utxos: + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 + ] + , stakeKey: Just privateStakeKey + , drepKey: Nothing + } + withWallets walletSpec \alice -> + withCip30Mock alice "nami" $ + ownRegisteredPubStakeKeys `shouldReturn` + Array.singleton (PrivateKey.toPublicKey $ unwrap privateStakeKey) + + test "ownUnregisteredPubStakeKeys works" do + let + walletSpec :: TestWalletSpec + walletSpec = wrap + { utxos: + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 + ] + , stakeKey: Just privateStakeKey + , drepKey: Nothing + } + withWallets walletSpec \alice -> + withCip30Mock alice "nami" $ + ownUnregisteredPubStakeKeys `shouldReturn` + Array.singleton (PrivateKey.toPublicKey $ unwrap privateStakeKey) + + test "signData using DRep key" do + let + walletSpec :: TestWalletSpec + walletSpec = wrap + { utxos: + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 + ] + , stakeKey: Just privateStakeKey + , drepKey: Just privateDrepKey + } + withWallets walletSpec \alice -> + withCip30Mock alice "nami" do + networkId <- getNetworkId + drepCred <- wrap <<< PubKeyHashCredential <$> ownDrepPubKeyHash + let + drepAddr = EnterpriseAddress + { networkId, paymentCredential: drepCred } + void $ signData drepAddr mempty + + test "signData fails for wrong address" do + let + distribution :: InitialUTxOs + distribution = + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 + ] + withWallets (distribution /\ distribution) \(alice /\ bob) -> do + bobAddr <- + withCip30Mock bob "nami" do + liftedM "Could not get Bob's address" (head <$> getWalletAddresses) + withCip30Mock alice "nami" do + expectError $ signData bobAddr mempty + test "CIP-30 utilities" do let distribution :: InitialUTxOsWithStakeKey @@ -2022,6 +2134,7 @@ suite = do withWallets distribution \alice -> do withCip30Mock alice "nami" do Cip30.contract + test "ECDSA example" do let distribution = withStakeKey privateStakeKey From 1a518784cbe40ad985d54cdc79ad4bf77b85189c Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Wed, 31 Jul 2024 23:42:55 +0200 Subject: [PATCH 349/373] Update template --- templates/ctl-scaffold/flake.lock | 31 +++++++++++------------ templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 16 ++++++++---- templates/ctl-scaffold/spago-packages.nix | 26 +++++++++---------- 4 files changed, 40 insertions(+), 35 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index 9b93f8118..587ea3efe 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -1840,17 +1840,17 @@ "cardano-configurations": { "flake": false, "locked": { - "lastModified": 1720834069, - "narHash": "sha256-jWFjTUTpwAgvsSJsQ4INgKl/paR489n1si35GLtSkuU=", + "lastModified": 1721870874, + "narHash": "sha256-qiReN+xxtbb4kEfdIWbBcqcJpPGD8he0p/TVD7U3CqM=", "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", + "rev": "7969a73e5c7ee1f3b2a40274b34191fdd8de170b", "type": "github" }, "original": { "owner": "input-output-hk", "repo": "cardano-configurations", - "rev": "de80edfd569d82d5191d2c6103834e700787bb2d", + "rev": "7969a73e5c7ee1f3b2a40274b34191fdd8de170b", "type": "github" } }, @@ -2082,16 +2082,15 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1721651758, - "narHash": "sha256-pciT8ASgAovl6I0GsdiWnUhExNXPJtQZpD8dTcv1o60=", + "lastModified": 1722438671, + "narHash": "sha256-Nb8bROKPjRWFMsaHIK4BOvsTceL9klpF3Ucp/zHqRzM=", "owner": "mlabs-haskell", "repo": "cardano.nix", - "rev": "f6a7f0c43299783ca37bbdc73195c7289854e8da", + "rev": "7e696a77440d14f161c8b426d90fecfdb70ad8d8", "type": "github" }, "original": { "owner": "mlabs-haskell", - "ref": "dshuiski/ogmios-v6.5.0", "repo": "cardano.nix", "type": "github" } @@ -2125,16 +2124,16 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1720029730, - "narHash": "sha256-ESE5/7XzXeIZldkYPbMd8CoMKQo9ghY1vOkhHpOj0K4=", + "lastModified": 1721843629, + "narHash": "sha256-F5wgRA820x16f+8c/LlEEBG0rMJIA1XWw6X0ZwX5UWs=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "2820a63dc934c6d5b5f450b6c2543b81c6476696", + "rev": "176f99e51155cb3eaa0711db1c3c969d67438958", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "9.0.0", + "ref": "9.1.0", "repo": "cardano-node", "type": "github" } @@ -2782,17 +2781,17 @@ "ogmios": "ogmios_2" }, "locked": { - "lastModified": 1721923839, - "narHash": "sha256-Z1uSTkhjxFrcW/lOo1SNkQ8JqQ0k5O9A4wetaquAYoI=", + "lastModified": 1722461582, + "narHash": "sha256-PyLzZOj4ek/PnYj6E+wraZue5lPxWuanwEWf5MXSlrA=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "69db7bac9c1ee4fc443510a39943734500f6f2d3", + "rev": "51619c84e2f99ed24b2a82d352a7378387abb68d", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "69db7bac9c1ee4fc443510a39943734500f6f2d3", + "rev": "51619c84e2f99ed24b2a82d352a7378387abb68d", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index c4a297d60..ef1c3e31a 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "69db7bac9c1ee4fc443510a39943734500f6f2d3"; + rev = "51619c84e2f99ed24b2a82d352a7378387abb68d"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 3fabea772..9d9018330 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -253,9 +253,14 @@ let additions = } , cip30-mock = { dependencies = - [ "aff-promise", "console", "effect", "functions", "prelude" ] + [ "aff-promise" + , "console" + , "effect" + , "functions" + , "prelude" + ] , repo = "https://github.com/mlabs-haskell/purescript-cip30-mock" - , version = "v1.0.0" + , version = "d00ba14769dceda1270658c63f14822db01f376d" } , cardano-collateral-select = { dependencies = @@ -291,11 +296,12 @@ let additions = , "foldable-traversable" , "maybe" , "newtype" + , "ordered-collections" , "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet" - , version = "a43c410a8430b552e42e88ab542eb6a43d09a633" + , version = "3fe93e45ac1444a429abfe6e135addf568500c23" } , uplc-apply-args = { dependencies = @@ -470,7 +476,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "48866bd7f5eeb8e0870c97384264d08bda9c2725" + , version = "40628bbb1049f3eb5364d304f949135e2ee2a2fb" } , cardano-transaction-lib = { dependencies = @@ -582,7 +588,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "69db7bac9c1ee4fc443510a39943734500f6f2d3" + , version = "51619c84e2f99ed24b2a82d352a7378387abb68d" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 0f1cd18fe..9a4cc9265 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -235,11 +235,11 @@ let "cardano-key-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-key-wallet"; - version = "a43c410a8430b552e42e88ab542eb6a43d09a633"; + version = "3fe93e45ac1444a429abfe6e135addf568500c23"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "a43c410a8430b552e42e88ab542eb6a43d09a633"; - sha256 = "1laiaq8xpd0hdfrqw6yd4gr1jai6lybjqmc3m4dhz0xapn40hmx8"; + rev = "3fe93e45ac1444a429abfe6e135addf568500c23"; + sha256 = "0dl0c14n6xq1pf97i94ix05z81padx1dkxv4jnswxm8y6zkab810"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; + version = "40628bbb1049f3eb5364d304f949135e2ee2a2fb"; src = pkgs.fetchgit { - url = "https://github.com/errfrom/purescript-cardano-transaction-builder"; - rev = "48866bd7f5eeb8e0870c97384264d08bda9c2725"; - sha256 = "1k57z6l14679vphw6l8l52hfyj5a1pk7vbjn929nsv0axp5y7fxa"; + url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; + rev = "40628bbb1049f3eb5364d304f949135e2ee2a2fb"; + sha256 = "0i7m20gs2aax47n69i7f8kphnkl5hj6xillhsvgvjbm3hn3lm838"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -295,11 +295,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "69db7bac9c1ee4fc443510a39943734500f6f2d3"; + version = "51619c84e2f99ed24b2a82d352a7378387abb68d"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "69db7bac9c1ee4fc443510a39943734500f6f2d3"; - sha256 = "10k2h2mnmb87wd0fzr141nlhj3wiimaa6kprbgf5mi3391794nv7"; + rev = "51619c84e2f99ed24b2a82d352a7378387abb68d"; + sha256 = "1c4nsb2y97s5q2kycnpiagk9x6v95gn17yl8kp7lyypqx1jg68iz"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -355,11 +355,11 @@ let "cip30-mock" = pkgs.stdenv.mkDerivation { name = "cip30-mock"; - version = "v1.0.0"; + version = "d00ba14769dceda1270658c63f14822db01f376d"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30-mock"; - rev = "7b4b7b2800f6d0ebd25554de63141cbd8c1e14a0"; - sha256 = "1b412s7p144h98csvy5w9z6vjhlpya9mqkxm2k8nxfdhq2znwfih"; + rev = "d00ba14769dceda1270658c63f14822db01f376d"; + sha256 = "1317qxibf4x3jbg0bljhdzlbi3z4mkywj1phlpqrhj0452d0g7xq"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 127cc209a5d2c15cf77bc2edffc108baff9bc8a3 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 1 Aug 2024 13:47:13 +0200 Subject: [PATCH 350/373] Fix CTL runtime deps in shellFor --- flake.nix | 3 --- nix/default.nix | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index 4a0598094..bed57d933 100644 --- a/flake.nix +++ b/flake.nix @@ -172,9 +172,6 @@ nodePackages.eslint nodePackages.prettier blockfrost-backend-ryo - cardano-node.packages.${system}.cardano-testnet - cardano-node.packages.${system}.cardano-cli - cardano-node.packages.${system}.cardano-node ]; }; }; diff --git a/nix/default.nix b/nix/default.nix index e083104af..55f0f8af2 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -133,6 +133,9 @@ let [ pkgs.ogmios pkgs.kupo + pkgs.cardano-testnet + pkgs.cardano-node + pkgs.cardano-cli ] ) ) From 405346d59720a9c77fb26b0f912ff8b9e05883c1 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 1 Aug 2024 14:34:08 +0200 Subject: [PATCH 351/373] Update CHANGELOG.md --- CHANGELOG.md | 94 ++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 70 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fcbec0bd3..3244cd909 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,72 +7,118 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -- [[v9.1.0]](#v910) +- [[Unreleased]](#unreleased) - [Added](#added) - [Changed](#changed) - [Removed](#removed) - [Fixed](#fixed) -- [[v9.0.0]](#v900) - - [Deprecated](#deprecated) +- [[v9.1.0]](#v910) - [Added](#added-1) - - [Removed](#removed-1) - [Changed](#changed-1) + - [Removed](#removed-1) - [Fixed](#fixed-1) -- [[v8.0.0]](#v800) +- [[v9.0.0]](#v900) + - [Deprecated](#deprecated) - [Added](#added-2) + - [Removed](#removed-2) - [Changed](#changed-2) - [Fixed](#fixed-2) - - [Removed](#removed-2) -- [[v7.0.0]](#v700) +- [[v8.0.0]](#v800) - [Added](#added-3) - [Changed](#changed-3) - [Fixed](#fixed-3) - [Removed](#removed-3) -- [[v6.0.0]](#v600) +- [[v7.0.0]](#v700) - [Added](#added-4) - [Changed](#changed-4) - [Fixed](#fixed-4) - [Removed](#removed-4) -- [[v5.0.0]](#v500) +- [[v6.0.0]](#v600) - [Added](#added-5) - [Changed](#changed-5) - - [Removed](#removed-5) - [Fixed](#fixed-5) - - [Runtime Dependencies](#runtime-dependencies) -- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - - [Fixed](#fixed-6) -- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Removed](#removed-5) +- [[v5.0.0]](#v500) - [Added](#added-6) -- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - - [Added](#added-7) - [Changed](#changed-6) - [Removed](#removed-6) + - [Fixed](#fixed-6) + - [Runtime Dependencies](#runtime-dependencies) +- [[v4.0.2] - 2023-01-17](#v402---2023-01-17) - [Fixed](#fixed-7) - - [Runtime Dependencies](#runtime-dependencies-1) -- [[3.0.0] - 2022-11-21](#300---2022-11-21) +- [[v4.0.1] - 2022-12-20](#v401---2022-12-20) + - [Added](#added-7) +- [[v4.0.0] - 2022-12-15](#v400---2022-12-15) - [Added](#added-8) - [Changed](#changed-7) - [Removed](#removed-7) - [Fixed](#fixed-8) - - [Runtime Dependencies](#runtime-dependencies-2) -- [[2.0.0] - 2022-09-12](#200---2022-09-12) + - [Runtime Dependencies](#runtime-dependencies-1) +- [[3.0.0] - 2022-11-21](#300---2022-11-21) - [Added](#added-9) - [Changed](#changed-8) - [Removed](#removed-8) - [Fixed](#fixed-9) -- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Runtime Dependencies](#runtime-dependencies-2) +- [[2.0.0] - 2022-09-12](#200---2022-09-12) - [Added](#added-10) - - [Removed](#removed-9) - [Changed](#changed-9) + - [Removed](#removed-9) - [Fixed](#fixed-10) -- [[1.1.0] - 2022-06-30](#110---2022-06-30) +- [[2.0.0-alpha] - 2022-07-05](#200-alpha---2022-07-05) + - [Added](#added-11) + - [Removed](#removed-10) + - [Changed](#changed-10) - [Fixed](#fixed-11) -- [[1.0.1] - 2022-06-17](#101---2022-06-17) +- [[1.1.0] - 2022-06-30](#110---2022-06-30) - [Fixed](#fixed-12) +- [[1.0.1] - 2022-06-17](#101---2022-06-17) + - [Fixed](#fixed-13) - [[1.0.0] - 2022-06-10](#100---2022-06-10) +## [Unreleased] + +### Added + +- CIP-95 methods for querying the connected wallet account's public DRep key and +its registered and unregistered public stake keys: `ownDrepPubKey`, +`ownDrepPubKeyHash`, `ownRegisteredPubStakeKeys`, `ownUnregisteredPubStakeKeys`. +These new functions can be imported from `Contract.Wallet`. +**WARNING**: The implementation of `ownRegisteredPubStakeKeys` and +`ownUnregisteredPubStakeKeys` for KeyWallet is partial. Currently, it is not +possible to differentiate between registered and unregistered stake keys due to +the limitations of the underlying query layer. As a result, all controlled stake +keys are returned, irrespective of their registration status. +([#1638](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1638)) + +- New examples demonstrating various interactions with the Cardano governance +system: `Gov.RegisterDrep`, `Gov.DelegateVoteAbstain`, `Gov.SubmitVoteSimple`. +([#1638](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1638)) + +### Changed + +- `signData` for KeyWallet: Previously, the supplied address was discarded, +and the wallet's address was used as part of the COSE `Sig_structure`. Now, +the provided address is inspected, and the keys associated with that address +are used. Additionally, KeyWallet now supports signing with the DRep key as +specified in CIP-95. Keep in mind that if the wallet does not have the required +keys, an error will be thrown. +([#1638](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1638)) + +### Removed + +- Constructors for individual wallets (like Nami or Eternl) from `WalletSpec`. +Use `ConnectToGenericCip30` with the right wallet identifier instead. +([#1638](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1638)) + +### Fixed + +- `getRewardAddresses` for KeyWallet now returns actual reward addresses +without the payment part. +([#1638](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1638)) + ## [v9.1.0] This version provides basic Conway support and replaces Plutip with `cardano-testnet`. From 2935e97d5901bab47777493d19a2325472cf7f04 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 1 Aug 2024 18:28:25 +0200 Subject: [PATCH 352/373] Add Gov.ManageDrepScript example --- .../{RegisterDrep.purs => ManageDrep.purs} | 41 +++++--- examples/Gov/ManageDrepScript.purs | 95 +++++++++++++++++++ .../{RegisterDrep.purs => ManageDrep.purs} | 6 +- examples/PlutusV3/Scripts/AlwaysMints.purs | 27 ++++++ nix/runtime.nix | 4 +- test/Testnet/Gov.purs | 2 +- 6 files changed, 154 insertions(+), 21 deletions(-) rename examples/Gov/{RegisterDrep.purs => ManageDrep.purs} (65%) create mode 100644 examples/Gov/ManageDrepScript.purs rename examples/KeyWallet/{RegisterDrep.purs => ManageDrep.purs} (52%) create mode 100644 examples/PlutusV3/Scripts/AlwaysMints.purs diff --git a/examples/Gov/RegisterDrep.purs b/examples/Gov/ManageDrep.purs similarity index 65% rename from examples/Gov/RegisterDrep.purs rename to examples/Gov/ManageDrep.purs index c9dc4c588..05accd09d 100644 --- a/examples/Gov/RegisterDrep.purs +++ b/examples/Gov/ManageDrep.purs @@ -1,4 +1,4 @@ -module Ctl.Examples.Gov.RegisterDrep +module Ctl.Examples.Gov.ManageDrep ( contract , example , main @@ -24,8 +24,12 @@ import Contract.Monad (Contract, launchAff_, runContract) import Contract.ProtocolParameters (getProtocolParameters) import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Contract.Wallet (ownDrepPubKeyHash) +import Control.Monad.Error.Class (catchError, throwError) import Ctl.Examples.Gov.Internal.Common (dummyAnchor) import Data.Map (empty) as Map +import Data.String (Pattern(Pattern)) +import Data.String (contains) as String +import Effect.Exception (message) main :: Effect Unit main = example $ testnetConfig @@ -37,7 +41,7 @@ example = launchAff_ <<< flip runContract contract contract :: Contract Unit contract = do - logInfo' "Running Examples.Gov.RegisterDrep" + logInfo' "Running Examples.Gov.ManageDrep" drepPkh <- contractStep RegDrep logInfo' $ "Successfully registered DRep. DRepID: " <> show drepPkh void $ contractStep $ UpdateDrep dummyAnchor @@ -56,18 +60,25 @@ contractStep path = do let drepCred = PubKeyHashCredential drepPkh drepDeposit <- _.drepDeposit <<< unwrap <$> getProtocolParameters - tx <- submitTxFromBuildPlan Map.empty mempty - [ IssueCertificate - ( case path of - RegDrep -> - RegDrepCert drepCred drepDeposit Nothing - UpdateDrep anchor -> - UpdateDrepCert drepCred $ Just anchor - UnregDrep -> - UnregDrepCert drepCred drepDeposit - ) - Nothing - ] + let + submitTx = do + tx <- submitTxFromBuildPlan Map.empty mempty + [ IssueCertificate + ( case path of + RegDrep -> + RegDrepCert drepCred drepDeposit Nothing + UpdateDrep anchor -> + UpdateDrepCert drepCred $ Just anchor + UnregDrep -> + UnregDrepCert drepCred drepDeposit + ) + Nothing + ] + awaitTxConfirmed $ Transaction.hash tx + + submitTx `catchError` \err -> + unless + (String.contains (Pattern "knownDelegateRepresentative") $ message err) + (throwError err) - awaitTxConfirmed $ Transaction.hash tx pure drepPkh diff --git a/examples/Gov/ManageDrepScript.purs b/examples/Gov/ManageDrepScript.purs new file mode 100644 index 000000000..c795d514e --- /dev/null +++ b/examples/Gov/ManageDrepScript.purs @@ -0,0 +1,95 @@ +module Ctl.Examples.Gov.ManageDrepScript + ( contract + , example + , main + ) where + +import Contract.Prelude + +import Cardano.Transaction.Builder + ( CredentialWitness(PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(IssueCertificate) + ) +import Cardano.Types + ( Anchor + , Certificate(RegDrepCert, UpdateDrepCert, UnregDrepCert) + , Credential(ScriptHashCredential) + , ScriptHash + ) +import Cardano.Types.PlutusScript (hash) as PlutusScript +import Cardano.Types.RedeemerDatum (unit) as RedeemerDatum +import Cardano.Types.Transaction (hash) as Transaction +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) +import Contract.Log (logInfo') +import Contract.Monad (Contract, launchAff_, runContract) +import Contract.ProtocolParameters (getProtocolParameters) +import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) +import Control.Monad.Error.Class (catchError, throwError) +import Ctl.Examples.Gov.Internal.Common (dummyAnchor) +import Ctl.Examples.PlutusV3.Scripts.AlwaysMints (alwaysMintsPolicyScriptV3) +import Data.Map (empty) as Map +import Data.String (Pattern(Pattern)) +import Data.String (contains) as String +import Effect.Exception (message) + +main :: Effect Unit +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } + } + +example :: ContractParams -> Effect Unit +example = launchAff_ <<< flip runContract contract + +contract :: Contract Unit +contract = do + logInfo' "Running Examples.Gov.ManageDrepScript" + drepScriptHash <- contractStep RegDrep + logInfo' $ "Successfully registered DRep. DRepID: " <> show drepScriptHash + void $ contractStep $ UpdateDrep dummyAnchor + logInfo' "Successfully updated DRep metadata." + void $ contractStep UnregDrep + logInfo' "Successfully unregistered DRep." + +data ContractPath + = RegDrep + | UpdateDrep Anchor + | UnregDrep + +contractStep :: ContractPath -> Contract ScriptHash +contractStep path = do + drepScript <- alwaysMintsPolicyScriptV3 + let + drepScriptHash = PlutusScript.hash drepScript + drepCred = ScriptHashCredential drepScriptHash + drepCredWitness = PlutusScriptCredential (ScriptValue drepScript) + RedeemerDatum.unit + + drepDeposit <- _.drepDeposit <<< unwrap <$> getProtocolParameters + + let + submitTx = do + tx <- submitTxFromBuildPlan Map.empty mempty + [ case path of + RegDrep -> + IssueCertificate (RegDrepCert drepCred drepDeposit Nothing) + (Just drepCredWitness) + UpdateDrep anchor -> + IssueCertificate (UpdateDrepCert drepCred $ Just anchor) + (Just drepCredWitness) + UnregDrep -> + IssueCertificate (UnregDrepCert drepCred drepDeposit) + (Just drepCredWitness) + ] + awaitTxConfirmed $ Transaction.hash tx + + submitTx `catchError` \err -> + unless + (String.contains (Pattern "knownDelegateRepresentative") $ message err) + (throwError err) + + pure drepScriptHash diff --git a/examples/KeyWallet/RegisterDrep.purs b/examples/KeyWallet/ManageDrep.purs similarity index 52% rename from examples/KeyWallet/RegisterDrep.purs rename to examples/KeyWallet/ManageDrep.purs index 1bdc10b8e..e3ab23731 100644 --- a/examples/KeyWallet/RegisterDrep.purs +++ b/examples/KeyWallet/ManageDrep.purs @@ -1,13 +1,13 @@ -module Ctl.Examples.KeyWallet.RegisterDrep +module Ctl.Examples.KeyWallet.ManageDrep ( main ) where import Contract.Prelude -import Ctl.Examples.Gov.RegisterDrep (contract) as Gov.RegisterDrep +import Ctl.Examples.Gov.ManageDrep (contract) as Gov.ManageDrep import Ctl.Examples.KeyWallet.Internal.Contract (runKeyWalletContract) main :: Effect Unit main = runKeyWalletContract \unlock -> - Gov.RegisterDrep.contract *> liftEffect unlock + Gov.ManageDrep.contract *> liftEffect unlock diff --git a/examples/PlutusV3/Scripts/AlwaysMints.purs b/examples/PlutusV3/Scripts/AlwaysMints.purs new file mode 100644 index 000000000..4e7b82735 --- /dev/null +++ b/examples/PlutusV3/Scripts/AlwaysMints.purs @@ -0,0 +1,27 @@ +module Ctl.Examples.PlutusV3.Scripts.AlwaysMints + ( alwaysMintsPolicyScriptV3 + ) where + +import Contract.Prelude + +import Contract.Monad (Contract) +import Contract.Scripts (PlutusScript) +import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) +import Control.Monad.Error.Class (liftMaybe) +import Effect.Exception (error) + +alwaysMintsPolicyScriptV3 :: Contract PlutusScript +alwaysMintsPolicyScriptV3 = + liftMaybe (error "Error decoding alwaysMintsV3") do + envelope <- decodeTextEnvelope alwaysMintsV3 + plutusScriptFromEnvelope envelope + +alwaysMintsV3 :: String +alwaysMintsV3 = + """ + { + "cborHex": "46450101002499", + "description": "always-mints", + "type": "PlutusScriptV3" + } + """ diff --git a/nix/runtime.nix b/nix/runtime.nix index 372e98e2c..45dd521ef 100644 --- a/nix/runtime.nix +++ b/nix/runtime.nix @@ -9,8 +9,8 @@ rec { # See `doc/development.md` and `doc/runtime.md#changing-network-configurations` # for info on how to switch networks. network = { - name = "sanchonet"; - magic = 4; # use `null` for mainnet + name = "preview"; + magic = 2; # use `null` for mainnet }; # *All* of these values are optional, and shown with their default # values. If you need even more customization, you can use `overideAttrs` diff --git a/test/Testnet/Gov.purs b/test/Testnet/Gov.purs index 08f1be4a1..7f6afa3fa 100644 --- a/test/Testnet/Gov.purs +++ b/test/Testnet/Gov.purs @@ -8,7 +8,7 @@ import Cardano.Types.BigNum (fromInt) as BigNum import Contract.Test (ContractTest) import Contract.Test.Mote (TestPlanM) import Contract.Test.Testnet (InitialUTxOs, withKeyWallet, withWallets) -import Ctl.Examples.Gov.RegisterDrep (contract) as Gov.RegisterDrep +import Ctl.Examples.Gov.ManageDrep (contract) as Gov.RegisterDrep import Mote (group, skip, test) suite :: TestPlanM ContractTest Unit From 5fdb406473155ff299bb109bc7bf7dcf0d52e665 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 1 Aug 2024 18:55:34 +0200 Subject: [PATCH 353/373] Handle all supported certificates during balancing --- examples/Gov/ManageDrep.purs | 4 +++- examples/Gov/SubmitVoteSimple.purs | 4 ++-- packages.dhall | 2 +- spago-packages.nix | 6 +++--- src/Internal/BalanceTx/BalanceTx.purs | 26 ++++++++++++++++---------- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/examples/Gov/ManageDrep.purs b/examples/Gov/ManageDrep.purs index 05accd09d..d0b6bab65 100644 --- a/examples/Gov/ManageDrep.purs +++ b/examples/Gov/ManageDrep.purs @@ -1,5 +1,7 @@ module Ctl.Examples.Gov.ManageDrep - ( contract + ( ContractPath(RegDrep, UpdateDrep, UnregDrep) + , contract + , contractStep , example , main ) where diff --git a/examples/Gov/SubmitVoteSimple.purs b/examples/Gov/SubmitVoteSimple.purs index 8cc504531..e46a70efd 100644 --- a/examples/Gov/SubmitVoteSimple.purs +++ b/examples/Gov/SubmitVoteSimple.purs @@ -32,6 +32,7 @@ import Contract.ProtocolParameters (getProtocolParameters) import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Contract.Wallet (getRewardAddresses, ownDrepPubKeyHash) import Ctl.Examples.Gov.Internal.Common (dummyAnchor) +import Ctl.Examples.Gov.ManageDrep (ContractPath(RegDrep), contractStep) as ManageDrep import Data.Array (head) as Array import Data.Map (empty, singleton) as Map @@ -46,6 +47,7 @@ example = launchAff_ <<< flip runContract contract contract :: Contract Unit contract = do logInfo' "Running Examples.Gov.SubmitVoteSimple" + void $ ManageDrep.contractStep ManageDrep.RegDrep govActionId <- submitProposal logInfo' $ "Successfully submitted voting proposal. Action id: " <> show govActionId @@ -81,8 +83,6 @@ submitProposal = do awaitTxConfirmed txHash pure $ wrap { transactionId: txHash, index: zero } --- NOTE: The wallet must be registered as DRep to submit a vote. --- See Ctl.Examples.Gov.RegisterDrep submitVote :: GovernanceActionId -> Contract Unit submitVote govActionId = do drepCred <- PubKeyHashCredential <$> ownDrepPubKeyHash diff --git a/packages.dhall b/packages.dhall index 66dcc1598..6c56a3e0b 100644 --- a/packages.dhall +++ b/packages.dhall @@ -457,7 +457,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "40628bbb1049f3eb5364d304f949135e2ee2a2fb" + , version = "36343059b67ffe15e74803078299a486959a5aa3" } , mote-testplan = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index c29ca95ba..2959f99c6 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "40628bbb1049f3eb5364d304f949135e2ee2a2fb"; + version = "36343059b67ffe15e74803078299a486959a5aa3"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; - rev = "40628bbb1049f3eb5364d304f949135e2ee2a2fb"; - sha256 = "0i7m20gs2aax47n69i7f8kphnkl5hj6xillhsvgvjbm3hn3lm838"; + rev = "36343059b67ffe15e74803078299a486959a5aa3"; + sha256 = "19fg613ch96vw7ypknjf2k5p66lighvrfvdx04wp3l0gk06da9wc"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Internal/BalanceTx/BalanceTx.purs b/src/Internal/BalanceTx/BalanceTx.purs index 36f3ea066..a22a508d6 100644 --- a/src/Internal/BalanceTx/BalanceTx.purs +++ b/src/Internal/BalanceTx/BalanceTx.purs @@ -10,7 +10,9 @@ import Cardano.Types , Certificate ( StakeDeregistration , StakeRegistration + , StakeRegDelegCert , VoteRegDelegCert + , StakeVoteRegDelegCert , RegDrepCert , UnregDrepCert ) @@ -833,18 +835,15 @@ getProposalsBalance tx = in deposits --- | Accounts for: --- | --- | - stake registration deposit --- | - stake deregistration deposit returns --- | - stake withdrawals fees --- | - drep registration deposit getCertsBalance :: Transaction -> ProtocolParameters -> BigInt getCertsBalance tx (ProtocolParameters pparams) = let stakeAddressDeposit :: BigInt stakeAddressDeposit = BigNum.toBigInt $ unwrap pparams.stakeAddressDeposit + toBi :: Coin -> BigInt + toBi = BigNum.toBigInt <<< unwrap + deposits :: BigInt deposits = (tx ^. _body <<< _certs) # @@ -856,14 +855,21 @@ getCertsBalance tx (ProtocolParameters pparams) = StakeDeregistration _ -> negate $ stakeAddressDeposit - VoteRegDelegCert _ _ drepDeposit -> - BigNum.toBigInt $ unwrap drepDeposit + StakeRegDelegCert _ _ stakeCredDeposit -> + toBi stakeCredDeposit + + VoteRegDelegCert _ _ stakeCredDeposit -> + toBi stakeCredDeposit + + StakeVoteRegDelegCert _ _ _ stakeCredDeposit -> + toBi stakeCredDeposit RegDrepCert _ drepDeposit _ -> - BigNum.toBigInt $ unwrap drepDeposit + toBi drepDeposit UnregDrepCert _ drepDeposit -> - negate $ BigNum.toBigInt $ unwrap drepDeposit + negate $ toBi drepDeposit + _ -> zero ) >>> sum From a3621d8bbf7dbb682a7ede07a45a3e2be369e9c0 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 1 Aug 2024 19:14:01 +0200 Subject: [PATCH 354/373] Add Gov.SubmitVoteScript example, Update CHANGELOG.md --- CHANGELOG.md | 3 +- examples/Gov/Internal/Common.purs | 15 ++- examples/Gov/ManageDrepScript.purs | 4 +- ...{SubmitVoteSimple.purs => SubmitVote.purs} | 17 +-- examples/Gov/SubmitVoteScript.purs | 102 ++++++++++++++++++ ...{SubmitVoteSimple.purs => SubmitVote.purs} | 6 +- 6 files changed, 127 insertions(+), 20 deletions(-) rename examples/Gov/{SubmitVoteSimple.purs => SubmitVote.purs} (86%) create mode 100644 examples/Gov/SubmitVoteScript.purs rename examples/KeyWallet/{SubmitVoteSimple.purs => SubmitVote.purs} (50%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3244cd909..94f8d2638 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,7 +94,8 @@ keys are returned, irrespective of their registration status. ([#1638](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1638)) - New examples demonstrating various interactions with the Cardano governance -system: `Gov.RegisterDrep`, `Gov.DelegateVoteAbstain`, `Gov.SubmitVoteSimple`. +system: `Gov.DelegateVoteAbstain`, `Gov.ManageDrep`, `Gov.ManageDrepScript`, +`Gov.SubmitVote`, `Gov.SubmitVoteScript`. ([#1638](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1638)) ### Changed diff --git a/examples/Gov/Internal/Common.purs b/examples/Gov/Internal/Common.purs index e0d6bb158..8ef2e537f 100644 --- a/examples/Gov/Internal/Common.purs +++ b/examples/Gov/Internal/Common.purs @@ -1,14 +1,25 @@ module Ctl.Examples.Gov.Internal.Common - ( dummyAnchor + ( asRewardAddress + , dummyAnchor ) where import Contract.Prelude import Cardano.AsCbor (decodeCbor) -import Cardano.Types (Anchor(Anchor), URL(URL)) +import Cardano.Types + ( Address(RewardAddress) + , Anchor(Anchor) + , RewardAddress + , URL(URL) + ) import Contract.Prim.ByteArray (hexToByteArrayUnsafe) import Partial.Unsafe (unsafePartial) +asRewardAddress :: Address -> Maybe RewardAddress +asRewardAddress = case _ of + RewardAddress rewardAddr -> Just rewardAddr + _ -> Nothing + dummyAnchor :: Anchor dummyAnchor = Anchor diff --git a/examples/Gov/ManageDrepScript.purs b/examples/Gov/ManageDrepScript.purs index c795d514e..6eeccab1b 100644 --- a/examples/Gov/ManageDrepScript.purs +++ b/examples/Gov/ManageDrepScript.purs @@ -1,5 +1,7 @@ module Ctl.Examples.Gov.ManageDrepScript - ( contract + ( ContractPath(RegDrep, UpdateDrep, UnregDrep) + , contract + , contractStep , example , main ) where diff --git a/examples/Gov/SubmitVoteSimple.purs b/examples/Gov/SubmitVote.purs similarity index 86% rename from examples/Gov/SubmitVoteSimple.purs rename to examples/Gov/SubmitVote.purs index e46a70efd..a89c8c069 100644 --- a/examples/Gov/SubmitVoteSimple.purs +++ b/examples/Gov/SubmitVote.purs @@ -1,4 +1,4 @@ -module Ctl.Examples.Gov.SubmitVoteSimple +module Ctl.Examples.Gov.SubmitVote ( contract , example , main @@ -10,10 +10,8 @@ import Cardano.Transaction.Builder ( TransactionBuilderStep(SubmitProposal, SubmitVotingProcedure) ) import Cardano.Types - ( Address(RewardAddress) - , Credential(PubKeyHashCredential) + ( Credential(PubKeyHashCredential) , GovernanceActionId - , RewardAddress , Vote(VoteYes) , Voter(Drep) , VotingProcedure(VotingProcedure) @@ -31,7 +29,7 @@ import Contract.Monad (Contract, launchAff_, liftedM, runContract) import Contract.ProtocolParameters (getProtocolParameters) import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) import Contract.Wallet (getRewardAddresses, ownDrepPubKeyHash) -import Ctl.Examples.Gov.Internal.Common (dummyAnchor) +import Ctl.Examples.Gov.Internal.Common (asRewardAddress, dummyAnchor) import Ctl.Examples.Gov.ManageDrep (ContractPath(RegDrep), contractStep) as ManageDrep import Data.Array (head) as Array import Data.Map (empty, singleton) as Map @@ -46,7 +44,7 @@ example = launchAff_ <<< flip runContract contract contract :: Contract Unit contract = do - logInfo' "Running Examples.Gov.SubmitVoteSimple" + logInfo' "Running Examples.Gov.SubmitVote" void $ ManageDrep.contractStep ManageDrep.RegDrep govActionId <- submitProposal logInfo' $ "Successfully submitted voting proposal. Action id: " <> show @@ -64,8 +62,6 @@ contract = do submitProposal :: Contract GovernanceActionId submitProposal = do - logInfo' "Running Examples.Gov.SubmitProposal" - govActionDeposit <- _.govActionDeposit <<< unwrap <$> getProtocolParameters rewardAddr <- liftedM "Could not get reward address" $ map (asRewardAddress <=< Array.head) @@ -95,8 +91,3 @@ submitVote govActionId = do Nothing ] awaitTxConfirmed $ Transaction.hash tx - -asRewardAddress :: Address -> Maybe RewardAddress -asRewardAddress = case _ of - RewardAddress rewardAddr -> Just rewardAddr - _ -> Nothing diff --git a/examples/Gov/SubmitVoteScript.purs b/examples/Gov/SubmitVoteScript.purs new file mode 100644 index 000000000..807044c81 --- /dev/null +++ b/examples/Gov/SubmitVoteScript.purs @@ -0,0 +1,102 @@ +module Ctl.Examples.Gov.SubmitVoteScript + ( contract + , example + , main + ) where + +import Contract.Prelude + +import Cardano.Transaction.Builder + ( CredentialWitness(PlutusScriptCredential) + , ScriptWitness(ScriptValue) + , TransactionBuilderStep(SubmitProposal, SubmitVotingProcedure) + ) +import Cardano.Types + ( Credential(ScriptHashCredential) + , GovernanceActionId + , Vote(VoteYes) + , Voter(Drep) + , VotingProcedure(VotingProcedure) + , VotingProposal(VotingProposal) + ) +import Cardano.Types (GovernanceAction(Info)) as GovAction +import Cardano.Types.PlutusScript (hash) as PlutusScript +import Cardano.Types.RedeemerDatum (unit) as RedeemerDatum +import Cardano.Types.Transaction (hash) as Transaction +import Contract.Config + ( ContractParams + , WalletSpec(ConnectToGenericCip30) + , testnetConfig + ) +import Contract.Log (logInfo') +import Contract.Monad (Contract, launchAff_, liftedM, runContract) +import Contract.ProtocolParameters (getProtocolParameters) +import Contract.Transaction (awaitTxConfirmed, submitTxFromBuildPlan) +import Contract.Wallet (getRewardAddresses) +import Ctl.Examples.Gov.Internal.Common (asRewardAddress, dummyAnchor) +import Ctl.Examples.Gov.ManageDrepScript (ContractPath(RegDrep), contractStep) as ManageDrep +import Ctl.Examples.PlutusV3.Scripts.AlwaysMints (alwaysMintsPolicyScriptV3) +import Data.Array (head) as Array +import Data.Map (empty, singleton) as Map + +main :: Effect Unit +main = example $ testnetConfig + { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } + } + +example :: ContractParams -> Effect Unit +example = launchAff_ <<< flip runContract contract + +contract :: Contract Unit +contract = do + logInfo' "Running Examples.Gov.SubmitVoteScript" + void $ ManageDrep.contractStep ManageDrep.RegDrep + govActionId <- submitProposal + logInfo' $ "Successfully submitted voting proposal. Action id: " <> show + govActionId + submitVote govActionId + logInfo' "Successfully voted on the proposal." + +{- + { transactionId: unsafePartial fromJust $ decodeCbor $ wrap $ + hexToByteArrayUnsafe + "78e7fa2f5ad34506208cbde6ced3c690df4f244000ba33b445da8d3791577ede" + , index: zero + } +-} + +submitProposal :: Contract GovernanceActionId +submitProposal = do + govActionDeposit <- _.govActionDeposit <<< unwrap <$> getProtocolParameters + rewardAddr <- liftedM "Could not get reward address" $ + map (asRewardAddress <=< Array.head) + getRewardAddresses + + tx <- submitTxFromBuildPlan Map.empty mempty + [ SubmitProposal $ VotingProposal + { govAction: GovAction.Info + , anchor: dummyAnchor + , deposit: unwrap govActionDeposit + , returnAddr: rewardAddr + } + ] + let txHash = Transaction.hash tx + awaitTxConfirmed txHash + pure $ wrap { transactionId: txHash, index: zero } + +submitVote :: GovernanceActionId -> Contract Unit +submitVote govActionId = do + drepScript <- alwaysMintsPolicyScriptV3 + let + drepCred = ScriptHashCredential $ PlutusScript.hash drepScript + drepCredWitness = PlutusScriptCredential (ScriptValue drepScript) + RedeemerDatum.unit + + tx <- submitTxFromBuildPlan Map.empty mempty + [ SubmitVotingProcedure (Drep drepCred) + ( Map.singleton govActionId $ + VotingProcedure { vote: VoteYes, anchor: Nothing } + ) + (Just drepCredWitness) + ] + awaitTxConfirmed $ Transaction.hash tx diff --git a/examples/KeyWallet/SubmitVoteSimple.purs b/examples/KeyWallet/SubmitVote.purs similarity index 50% rename from examples/KeyWallet/SubmitVoteSimple.purs rename to examples/KeyWallet/SubmitVote.purs index 83a96b4cb..ee8822a6e 100644 --- a/examples/KeyWallet/SubmitVoteSimple.purs +++ b/examples/KeyWallet/SubmitVote.purs @@ -1,13 +1,13 @@ -module Ctl.Examples.KeyWallet.SubmitVoteSimple +module Ctl.Examples.KeyWallet.SubmitVote ( main ) where import Contract.Prelude -import Ctl.Examples.Gov.SubmitVoteSimple (contract) as Gov.SubmitVoteSimple +import Ctl.Examples.Gov.SubmitVote (contract) as Gov.SubmitVote import Ctl.Examples.KeyWallet.Internal.Contract (runKeyWalletContract) main :: Effect Unit main = runKeyWalletContract \unlock -> - Gov.SubmitVoteSimple.contract *> liftEffect unlock + Gov.SubmitVote.contract *> liftEffect unlock From 01708d64e858a2ed3cbbc7a9a235d3acf79a7b91 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 2 Aug 2024 17:46:59 +0200 Subject: [PATCH 355/373] Add KnownWallet helper --- examples/AdditionalUtxos.purs | 5 +- examples/AlwaysMints.purs | 5 +- examples/AlwaysSucceeds.purs | 5 +- examples/AwaitTxConfirmedWithTimeout.purs | 5 +- examples/ByUrl.purs | 85 ++++++++----------- examples/Cip30.purs | 5 +- examples/DropTokens.purs | 5 +- examples/ExUnits.purs | 5 +- examples/Gov/DelegateVoteAbstain.purs | 5 +- examples/Gov/ManageDrep.purs | 5 +- examples/Gov/ManageDrepScript.purs | 5 +- examples/Gov/SubmitVote.purs | 5 +- examples/Gov/SubmitVoteScript.purs | 5 +- examples/IncludeDatum.purs | 5 +- examples/Lose7Ada.purs | 5 +- examples/ManyAssets.purs | 5 +- examples/MintsMultipleTokens.purs | 5 +- examples/NativeScriptMints.purs | 5 +- examples/OneShotMinting.purs | 11 ++- examples/PaysWithDatum.purs | 5 +- examples/Pkh2Pkh.purs | 5 +- examples/PlutusV2/AlwaysSucceeds.purs | 21 ++--- examples/PlutusV2/InlineDatum.purs | 5 +- examples/PlutusV2/OneShotMinting.purs | 12 ++- .../PlutusV2/ReferenceInputsAndScripts.purs | 5 +- examples/SendsToken.purs | 5 +- examples/SignData.purs | 5 +- examples/SignMultiple.purs | 9 +- examples/TxChaining.purs | 5 +- examples/Utxos.purs | 5 +- src/Contract/Config.purs | 2 + src/Contract/Wallet.purs | 4 +- src/Internal/Wallet/Spec.purs | 20 ++++- test/Testnet/Contract.purs | 44 +++++----- 34 files changed, 206 insertions(+), 127 deletions(-) diff --git a/examples/AdditionalUtxos.purs b/examples/AdditionalUtxos.purs index 8ef60f44d..7a8780ca3 100644 --- a/examples/AdditionalUtxos.purs +++ b/examples/AdditionalUtxos.purs @@ -30,8 +30,10 @@ import Contract.BalanceTxConstraints ) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -58,7 +60,8 @@ import Test.QuickCheck.Gen (randomSampleOne) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/AlwaysMints.purs b/examples/AlwaysMints.purs index f4358e556..fcbe98752 100644 --- a/examples/AlwaysMints.purs +++ b/examples/AlwaysMints.purs @@ -23,8 +23,10 @@ import Cardano.Types.RedeemerDatum as RedeemerDatum import Cardano.Types.Transaction as Transaction import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) @@ -35,7 +37,8 @@ import Data.Map as Map main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } contract :: Contract Unit diff --git a/examples/AlwaysSucceeds.purs b/examples/AlwaysSucceeds.purs index a5fb25b88..5e2041ad7 100644 --- a/examples/AlwaysSucceeds.purs +++ b/examples/AlwaysSucceeds.purs @@ -38,8 +38,10 @@ import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -59,7 +61,8 @@ import Effect.Exception (error) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } contract :: Contract Unit diff --git a/examples/AwaitTxConfirmedWithTimeout.purs b/examples/AwaitTxConfirmedWithTimeout.purs index 6aff846d1..d465229f8 100644 --- a/examples/AwaitTxConfirmedWithTimeout.purs +++ b/examples/AwaitTxConfirmedWithTimeout.purs @@ -13,8 +13,10 @@ import Contract.Prelude import Cardano.AsCbor (decodeCbor) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract, throwContractError) @@ -25,7 +27,8 @@ import Partial.Unsafe (unsafePartial) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/ByUrl.purs b/examples/ByUrl.purs index 25c7645cd..57ef2b7a2 100644 --- a/examples/ByUrl.purs +++ b/examples/ByUrl.purs @@ -4,12 +4,14 @@ import Prelude import Contract.Config ( ContractParams + , KnownWallet(Nami, Gero, Flint, Eternl, Lode, Lace, NuFi) , WalletSpec(ConnectToGenericCip30) , blockfrostPublicPreprodServerConfig , blockfrostPublicPreviewServerConfig , mainnetConfig , mkBlockfrostBackendParams , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract) @@ -50,25 +52,6 @@ import Web.HTML (window) import Web.HTML.Window (localStorage) import Web.Storage.Storage (getItem) -data Wallet - = NamiWallet - | GeroWallet - | FlintWallet - | EternlWallet - | LodeWallet - | LaceWallet - | NuFiWallet - -walletName :: Wallet -> String -walletName = case _ of - NamiWallet -> "nami" - GeroWallet -> "gerowallet" - FlintWallet -> "flint" - EternlWallet -> "eternl" - LodeWallet -> "LodeWallet" - LaceWallet -> "lace" - NuFiWallet -> "nufi" - main :: Effect Unit main = do -- Read Blockfrost API key from the browser storage. @@ -84,59 +67,59 @@ main = do Map.fromFoldable [ "blockfrost-nami-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = connectTo NamiWallet } + { walletSpec = connectTo Nami } /\ Nothing , "blockfrost-gero-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = connectTo GeroWallet } + { walletSpec = connectTo Gero } /\ Nothing , "blockfrost-eternl-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = connectTo EternlWallet } + { walletSpec = connectTo Eternl } /\ Nothing , "blockfrost-lode-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = connectTo LodeWallet } + { walletSpec = connectTo Lode } /\ Nothing , "blockfrost-flint-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = connectTo FlintWallet } + { walletSpec = connectTo Flint } /\ Nothing , "blockfrost-nufi-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = connectTo NuFiWallet } + { walletSpec = connectTo NuFi } /\ Nothing , "blockfrost-lace-preview" /\ (mkBlockfrostPreviewConfig mbApiKey) - { walletSpec = connectTo LaceWallet } + { walletSpec = connectTo Lace } /\ Nothing , "blockfrost-nami-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = connectTo NamiWallet } + { walletSpec = connectTo Nami } /\ Nothing , "blockfrost-gero-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = connectTo GeroWallet } + { walletSpec = connectTo Gero } /\ Nothing , "blockfrost-eternl-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = connectTo EternlWallet } + { walletSpec = connectTo Eternl } /\ Nothing , "blockfrost-lode-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = connectTo LodeWallet } + { walletSpec = connectTo Lode } /\ Nothing , "blockfrost-flint-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = connectTo FlintWallet } + { walletSpec = connectTo Flint } /\ Nothing , "blockfrost-nufi-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = connectTo NuFiWallet } + { walletSpec = connectTo NuFi } /\ Nothing , "blockfrost-lace-preprod" /\ (mkBlockfrostPreprodConfig mbApiKey) - { walletSpec = connectTo LaceWallet } + { walletSpec = connectTo Lace } /\ Nothing ] addLinks walletsWithBlockfrost examples @@ -155,26 +138,26 @@ getBlockfrostApiKey = do wallets :: Map E2EConfigName (ContractParams /\ Maybe String) wallets = map (map walletName) <$> Map.fromFoldable - [ "nami" /\ testnetConfig' NamiWallet /\ Nothing - , "gero" /\ testnetConfig' GeroWallet /\ Nothing - , "flint" /\ testnetConfig' FlintWallet /\ Nothing - , "eternl" /\ testnetConfig' EternlWallet /\ Nothing - , "lode" /\ testnetConfig' LodeWallet /\ Nothing - , "nufi" /\ testnetConfig' NuFiWallet /\ Nothing - , "lace" /\ testnetConfig' LaceWallet /\ Nothing + [ "nami" /\ testnetConfig' Nami /\ Nothing + , "gero" /\ testnetConfig' Gero /\ Nothing + , "flint" /\ testnetConfig' Flint /\ Nothing + , "eternl" /\ testnetConfig' Eternl /\ Nothing + , "lode" /\ testnetConfig' Lode /\ Nothing + , "nufi" /\ testnetConfig' NuFi /\ Nothing + , "lace" /\ testnetConfig' Lace /\ Nothing , "nami-mainnet" /\ mainnetNamiConfig /\ Nothing - , "nami-mock" /\ testnetConfig' NamiWallet /\ Just NamiWallet - , "gero-mock" /\ testnetConfig' GeroWallet /\ Just GeroWallet - , "flint-mock" /\ testnetConfig' FlintWallet /\ Just FlintWallet - , "lode-mock" /\ testnetConfig' LodeWallet /\ Just LodeWallet - , "plutip-nami-mock" /\ testnetConfig' NamiWallet /\ Just NamiWallet - , "plutip-gero-mock" /\ testnetConfig' GeroWallet /\ Just GeroWallet - , "plutip-flint-mock" /\ testnetConfig' FlintWallet /\ Just FlintWallet - , "plutip-lode-mock" /\ testnetConfig' LodeWallet /\ Just LodeWallet - , "plutip-nufi-mock" /\ testnetConfig' NuFiWallet /\ Just NuFiWallet + , "nami-mock" /\ testnetConfig' Nami /\ Just Nami + , "gero-mock" /\ testnetConfig' Gero /\ Just Gero + , "flint-mock" /\ testnetConfig' Flint /\ Just Flint + , "lode-mock" /\ testnetConfig' Lode /\ Just Lode + , "plutip-nami-mock" /\ testnetConfig' Nami /\ Just Nami + , "plutip-gero-mock" /\ testnetConfig' Gero /\ Just Gero + , "plutip-flint-mock" /\ testnetConfig' Flint /\ Just Flint + , "plutip-lode-mock" /\ testnetConfig' Lode /\ Just Lode + , "plutip-nufi-mock" /\ testnetConfig' NuFi /\ Just NuFi ] where - testnetConfig' :: Wallet -> ContractParams + testnetConfig' :: KnownWallet -> ContractParams testnetConfig' wallet = testnetConfig { walletSpec = @@ -185,7 +168,7 @@ wallets = map (map walletName) <$> Map.fromFoldable mainnetNamiConfig = mainnetConfig { walletSpec = - Just $ ConnectToGenericCip30 (walletName NamiWallet) { cip95: false } + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } mkBlockfrostPreviewConfig :: Maybe String -> ContractParams diff --git a/examples/Cip30.purs b/examples/Cip30.purs index ec7e82464..eb45938f2 100644 --- a/examples/Cip30.purs +++ b/examples/Cip30.purs @@ -17,8 +17,10 @@ import Cardano.Wallet.Cip30 import Cardano.Wallet.Cip30.TypeSafe as Cip30 import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractAffM, runContract) @@ -35,7 +37,8 @@ import Effect.Exception (error) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/DropTokens.purs b/examples/DropTokens.purs index 99a2f1fc6..5381ddf79 100644 --- a/examples/DropTokens.purs +++ b/examples/DropTokens.purs @@ -8,8 +8,10 @@ import Cardano.Types.MultiAsset as MultiAsset import Cardano.Types.Value as Value import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -25,7 +27,8 @@ import Test.Ctl.Fixtures (nullPaymentPubKeyHash) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/ExUnits.purs b/examples/ExUnits.purs index e39efb4f1..1fdb5dfa0 100644 --- a/examples/ExUnits.purs +++ b/examples/ExUnits.purs @@ -20,8 +20,10 @@ import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Credential (Credential(PubKeyHashCredential)) import Contract.Log (logInfo') @@ -47,7 +49,8 @@ import JS.BigInt as BigInt main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } contract :: Contract Unit diff --git a/examples/Gov/DelegateVoteAbstain.purs b/examples/Gov/DelegateVoteAbstain.purs index 7387e82fb..48d72e4bb 100644 --- a/examples/Gov/DelegateVoteAbstain.purs +++ b/examples/Gov/DelegateVoteAbstain.purs @@ -14,8 +14,10 @@ import Cardano.Types.PublicKey (hash) as PublicKey import Cardano.Types.Transaction (hash) as Transaction import Contract.Config ( ContractParams + , KnownWallet(Eternl) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logDebug', logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -28,7 +30,8 @@ import Effect.Exception (error) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Eternl) { cip95: true } } example :: ContractParams -> Effect Unit diff --git a/examples/Gov/ManageDrep.purs b/examples/Gov/ManageDrep.purs index d0b6bab65..0966b7a22 100644 --- a/examples/Gov/ManageDrep.purs +++ b/examples/Gov/ManageDrep.purs @@ -18,8 +18,10 @@ import Cardano.Types import Cardano.Types.Transaction (hash) as Transaction import Contract.Config ( ContractParams + , KnownWallet(Eternl) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -35,7 +37,8 @@ import Effect.Exception (message) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Eternl) { cip95: true } } example :: ContractParams -> Effect Unit diff --git a/examples/Gov/ManageDrepScript.purs b/examples/Gov/ManageDrepScript.purs index 6eeccab1b..e5595676d 100644 --- a/examples/Gov/ManageDrepScript.purs +++ b/examples/Gov/ManageDrepScript.purs @@ -24,8 +24,10 @@ import Cardano.Types.RedeemerDatum (unit) as RedeemerDatum import Cardano.Types.Transaction (hash) as Transaction import Contract.Config ( ContractParams + , KnownWallet(Eternl) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -41,7 +43,8 @@ import Effect.Exception (message) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Eternl) { cip95: true } } example :: ContractParams -> Effect Unit diff --git a/examples/Gov/SubmitVote.purs b/examples/Gov/SubmitVote.purs index a89c8c069..7b8b05940 100644 --- a/examples/Gov/SubmitVote.purs +++ b/examples/Gov/SubmitVote.purs @@ -21,8 +21,10 @@ import Cardano.Types (GovernanceAction(Info)) as GovAction import Cardano.Types.Transaction (hash) as Transaction import Contract.Config ( ContractParams + , KnownWallet(Eternl) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -36,7 +38,8 @@ import Data.Map (empty, singleton) as Map main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Eternl) { cip95: true } } example :: ContractParams -> Effect Unit diff --git a/examples/Gov/SubmitVoteScript.purs b/examples/Gov/SubmitVoteScript.purs index 807044c81..5f0222b60 100644 --- a/examples/Gov/SubmitVoteScript.purs +++ b/examples/Gov/SubmitVoteScript.purs @@ -25,8 +25,10 @@ import Cardano.Types.RedeemerDatum (unit) as RedeemerDatum import Cardano.Types.Transaction (hash) as Transaction import Contract.Config ( ContractParams + , KnownWallet(Eternl) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -41,7 +43,8 @@ import Data.Map (empty, singleton) as Map main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "eternl" { cip95: true } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Eternl) { cip95: true } } example :: ContractParams -> Effect Unit diff --git a/examples/IncludeDatum.purs b/examples/IncludeDatum.purs index 449d3030e..7074c37d1 100644 --- a/examples/IncludeDatum.purs +++ b/examples/IncludeDatum.purs @@ -32,8 +32,10 @@ import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) @@ -56,7 +58,8 @@ import JS.BigInt as BigInt main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/Lose7Ada.purs b/examples/Lose7Ada.purs index 911389ab2..9d6193931 100644 --- a/examples/Lose7Ada.purs +++ b/examples/Lose7Ada.purs @@ -33,8 +33,10 @@ import Cardano.Types.TransactionUnspentOutput (toUtxoMap) import Contract.Address (mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -65,7 +67,8 @@ import Test.Spec.Assertions (shouldEqual) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/ManyAssets.purs b/examples/ManyAssets.purs index 6ed62c8ae..b640702ae 100644 --- a/examples/ManyAssets.purs +++ b/examples/ManyAssets.purs @@ -19,8 +19,10 @@ import Cardano.Types.RedeemerDatum as RedeemerDatum import Cardano.Types.Transaction as Transaction import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -32,7 +34,8 @@ import Data.Map as Map main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/MintsMultipleTokens.purs b/examples/MintsMultipleTokens.purs index 031ad9199..c3b8d414f 100644 --- a/examples/MintsMultipleTokens.purs +++ b/examples/MintsMultipleTokens.purs @@ -23,8 +23,10 @@ import Cardano.Types.PlutusScript as PlutusScript import Cardano.Types.Transaction as Transaction import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -39,7 +41,8 @@ import JS.BigInt (fromInt) as BigInt main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } contract :: Contract Unit diff --git a/examples/NativeScriptMints.purs b/examples/NativeScriptMints.purs index 51c7f8f41..62fe5fa1b 100644 --- a/examples/NativeScriptMints.purs +++ b/examples/NativeScriptMints.purs @@ -23,8 +23,10 @@ import Cardano.Types.Transaction as Transaction import Contract.Address (PaymentPubKeyHash, mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -40,7 +42,8 @@ import JS.BigInt as BigInt main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } contract :: Contract Unit diff --git a/examples/OneShotMinting.purs b/examples/OneShotMinting.purs index 589817e09..694fc63e0 100644 --- a/examples/OneShotMinting.purs +++ b/examples/OneShotMinting.purs @@ -19,11 +19,7 @@ import Cardano.Transaction.Builder , ScriptWitness(ScriptValue) , TransactionBuilderStep(SpendOutput, MintAsset) ) -import Cardano.Types - ( _body - , _fee - , _input - ) +import Cardano.Types (_body, _fee, _input) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int import Cardano.Types.PlutusScript as PlutusScript @@ -32,8 +28,10 @@ import Cardano.Types.Transaction as Transaction import Cardano.Types.TransactionUnspentOutput (fromUtxoMap) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad @@ -71,7 +69,8 @@ import JS.BigInt (BigInt) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/PaysWithDatum.purs b/examples/PaysWithDatum.purs index fb04de018..bea549b6a 100644 --- a/examples/PaysWithDatum.purs +++ b/examples/PaysWithDatum.purs @@ -13,8 +13,10 @@ import Cardano.Types.BigNum as BigNum import Contract.Address (Address) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Hashing (datumHash) import Contract.Log (logInfo') @@ -62,7 +64,8 @@ type ContractResult = main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/Pkh2Pkh.purs b/examples/Pkh2Pkh.purs index 67d311c41..fe1ff3650 100644 --- a/examples/Pkh2Pkh.purs +++ b/examples/Pkh2Pkh.purs @@ -16,8 +16,10 @@ import Cardano.Types.PlutusData as PlutusData import Cardano.Types.Transaction as Transaction import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -29,7 +31,8 @@ import Data.Map as Map main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } contract :: Contract Unit diff --git a/examples/PlutusV2/AlwaysSucceeds.purs b/examples/PlutusV2/AlwaysSucceeds.purs index 62e493a0e..ba43f5b11 100644 --- a/examples/PlutusV2/AlwaysSucceeds.purs +++ b/examples/PlutusV2/AlwaysSucceeds.purs @@ -1,25 +1,25 @@ -- | This module demonstrates how the `Contract` interface can be used to build, -- | balance, and submit a smart-contract transaction. It creates a transaction -- | that pays two Ada to the `AlwaysSucceeds` script address -module Ctl.Examples.PlutusV2.AlwaysSucceeds (main, example, contract) where +module Ctl.Examples.PlutusV2.AlwaysSucceeds + ( contract + , example + , main + ) where import Contract.Prelude import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') -import Contract.Monad - ( Contract - , launchAff_ - , runContract - ) +import Contract.Monad (Contract, launchAff_, runContract) import Contract.Scripts (validatorHash) -import Contract.Transaction - ( awaitTxConfirmed - ) +import Contract.Transaction (awaitTxConfirmed) import Ctl.Examples.AlwaysSucceeds ( payToAlwaysSucceeds , spendFromAlwaysSucceeds @@ -28,7 +28,8 @@ import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } contract :: Contract Unit diff --git a/examples/PlutusV2/InlineDatum.purs b/examples/PlutusV2/InlineDatum.purs index 1c668e77b..a0d1e7e7c 100644 --- a/examples/PlutusV2/InlineDatum.purs +++ b/examples/PlutusV2/InlineDatum.purs @@ -18,8 +18,10 @@ import Cardano.Types.BigNum as BigNum import Contract.Address (mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, runContract) @@ -46,7 +48,8 @@ import Test.Spec.Assertions (shouldEqual) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/PlutusV2/OneShotMinting.purs b/examples/PlutusV2/OneShotMinting.purs index a31a16377..e8ec3979e 100644 --- a/examples/PlutusV2/OneShotMinting.purs +++ b/examples/PlutusV2/OneShotMinting.purs @@ -13,15 +13,12 @@ import Contract.Prelude import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) -import Contract.Monad - ( Contract - , launchAff_ - , liftContractE - , runContract - ) +import Contract.Monad (Contract, launchAff_, liftContractE, runContract) import Contract.Scripts (PlutusScript) import Contract.TextEnvelope (decodeTextEnvelope, plutusScriptFromEnvelope) import Contract.Transaction (TransactionInput) @@ -34,7 +31,8 @@ import Effect.Exception (error) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index dd2735ed5..3b379e1e6 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -28,8 +28,10 @@ import Cardano.Types.Transaction as Transaction import Contract.Address (mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftContractM, runContract) @@ -54,7 +56,8 @@ import Effect.Exception (error) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/SendsToken.purs b/examples/SendsToken.purs index ee9caf4f4..6b4efcff9 100644 --- a/examples/SendsToken.purs +++ b/examples/SendsToken.purs @@ -28,8 +28,10 @@ import Cardano.Types.Transaction as Transaction import Contract.Address (mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -48,7 +50,8 @@ import Data.Map as Map main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/SignData.purs b/examples/SignData.purs index e19f25745..cecba781f 100644 --- a/examples/SignData.purs +++ b/examples/SignData.purs @@ -10,8 +10,10 @@ import Cardano.Wallet.Cip30.SignData (COSEKey, COSESign1) import Contract.Address (Address) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -26,7 +28,8 @@ import Partial.Unsafe (unsafePartial) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/SignMultiple.purs b/examples/SignMultiple.purs index 2b12581e7..047fd12df 100644 --- a/examples/SignMultiple.purs +++ b/examples/SignMultiple.purs @@ -5,9 +5,7 @@ module Ctl.Examples.SignMultiple (example, contract, main) where import Contract.Prelude -import Cardano.Transaction.Builder - ( TransactionBuilderStep(Pay) - ) +import Cardano.Transaction.Builder (TransactionBuilderStep(Pay)) import Cardano.Types ( Credential(PubKeyHashCredential) , OutputDatum(OutputDatumHash) @@ -22,8 +20,10 @@ import Cardano.Types.Transaction as Transaction import Contract.Address (mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo', logWarn') import Contract.Monad @@ -61,7 +61,8 @@ import Effect.Ref as Ref main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } getLockedInputs diff --git a/examples/TxChaining.purs b/examples/TxChaining.purs index 9de5d3923..bcafe5c2f 100644 --- a/examples/TxChaining.purs +++ b/examples/TxChaining.purs @@ -27,8 +27,10 @@ import Contract.BalanceTxConstraints ) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo') import Contract.Monad (Contract, launchAff_, liftedM, runContract) @@ -49,7 +51,8 @@ import Effect.Exception (throw) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/examples/Utxos.purs b/examples/Utxos.purs index c987a89bd..780f5be22 100644 --- a/examples/Utxos.purs +++ b/examples/Utxos.purs @@ -23,8 +23,10 @@ import Cardano.Types.Transaction as Transaction import Contract.Address (mkAddress) import Contract.Config ( ContractParams + , KnownWallet(Nami) , WalletSpec(ConnectToGenericCip30) , testnetConfig + , walletName ) import Contract.Log (logInfo, logInfo') import Contract.Monad @@ -59,7 +61,8 @@ import Test.QuickCheck.Gen (randomSampleOne) main :: Effect Unit main = example $ testnetConfig - { walletSpec = Just $ ConnectToGenericCip30 "nami" { cip95: false } + { walletSpec = + Just $ ConnectToGenericCip30 (walletName Nami) { cip95: false } } example :: ContractParams -> Effect Unit diff --git a/src/Contract/Config.purs b/src/Contract/Config.purs index 4c19e75cd..cc50b759f 100644 --- a/src/Contract/Config.purs +++ b/src/Contract/Config.purs @@ -60,11 +60,13 @@ import Ctl.Internal.ServerConfig ) import Ctl.Internal.Wallet.Spec ( Cip1852DerivationPath + , KnownWallet(Nami, Gero, Flint, Eternl, Lode, Lace, NuFi) , MnemonicSource(MnemonicString, MnemonicFile) , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) , StakeKeyPresence(WithStakeKey, WithoutStakeKey) , WalletSpec(UseKeys, UseMnemonic, ConnectToGenericCip30) + , walletName ) import Data.Log.Level (LogLevel(Trace, Debug, Info, Warn, Error)) import Data.Log.Message (Message) diff --git a/src/Contract/Wallet.purs b/src/Contract/Wallet.purs index fdca5d065..118c0fda5 100644 --- a/src/Contract/Wallet.purs +++ b/src/Contract/Wallet.purs @@ -68,10 +68,12 @@ import Ctl.Internal.Wallet.Spec , mkKeyWalletFromMnemonic ) import Ctl.Internal.Wallet.Spec - ( MnemonicSource(MnemonicString, MnemonicFile) + ( KnownWallet(Nami, Gero, Flint, Eternl, Lode, Lace, NuFi) + , MnemonicSource(MnemonicString, MnemonicFile) , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) , WalletSpec(UseKeys, UseMnemonic, ConnectToGenericCip30) + , walletName ) as X import Data.Array (head) import Data.Array as Array diff --git a/src/Internal/Wallet/Spec.purs b/src/Internal/Wallet/Spec.purs index 53c0603c5..ae440e284 100644 --- a/src/Internal/Wallet/Spec.purs +++ b/src/Internal/Wallet/Spec.purs @@ -1,13 +1,15 @@ module Ctl.Internal.Wallet.Spec - ( WalletSpec(UseKeys, UseMnemonic, ConnectToGenericCip30) - , Cip1852DerivationPath - , StakeKeyPresence(WithStakeKey, WithoutStakeKey) + ( Cip1852DerivationPath + , KnownWallet(Nami, Gero, Flint, Eternl, Lode, Lace, NuFi) , MnemonicSource(MnemonicString, MnemonicFile) , PrivateDrepKeySource(PrivateDrepKeyValue) , PrivateStakeKeySource(PrivateStakeKeyFile, PrivateStakeKeyValue) , PrivatePaymentKeySource(PrivatePaymentKeyFile, PrivatePaymentKeyValue) + , StakeKeyPresence(WithStakeKey, WithoutStakeKey) + , WalletSpec(UseKeys, UseMnemonic, ConnectToGenericCip30) , mkWalletBySpec , mkKeyWalletFromMnemonic + , walletName ) where import Prelude @@ -103,6 +105,18 @@ derive instance Generic WalletSpec _ instance Show WalletSpec where show = genericShow +data KnownWallet = Nami | Gero | Flint | Eternl | Lode | Lace | NuFi + +walletName :: KnownWallet -> String +walletName = case _ of + Nami -> "nami" + Gero -> "gerowallet" + Flint -> "flint" + Eternl -> "eternl" + Lode -> "LodeWallet" + Lace -> "lace" + NuFi -> "nufi" + -- | Contains non-constant parameters for a CIP-1852 derivation path. -- | See https://cips.cardano.org/cips/cip1852/ and `doc/key-management.md`. type Cip1852DerivationPath = diff --git a/test/Testnet/Contract.purs b/test/Testnet/Contract.purs index daf83fa04..95cf614de 100644 --- a/test/Testnet/Contract.purs +++ b/test/Testnet/Contract.purs @@ -50,6 +50,10 @@ import Contract.BalanceTxConstraints , mustUseCollateralUtxos ) import Contract.Chain (currentTime, waitUntilSlot) +import Contract.Config + ( KnownWallet(Nami, Gero, Flint, Lode, NuFi) + , walletName + ) import Contract.Hashing (datumHash, nativeScriptHash) import Contract.Keys (privateKeyFromBytes) import Contract.Log (logInfo') @@ -1898,33 +1902,33 @@ suite = do ] withWallets distribution \alice -> do - let nami = "nami" + let nami = walletName Nami withCip30Mock alice nami do (liftEffect $ isWalletAvailable nami) >>= shouldEqual true try (liftEffect $ isWalletAvailable nami) >>= hush >>> shouldEqual (Just false) - let gerowallet = "gerowallet" + let gerowallet = walletName Gero withCip30Mock alice gerowallet do (liftEffect $ isWalletAvailable gerowallet) >>= shouldEqual true try (liftEffect $ isWalletAvailable gerowallet) >>= hush >>> shouldEqual (Just false) - let flint = "flint" + let flint = walletName Flint withCip30Mock alice flint do (liftEffect $ isWalletAvailable flint) >>= shouldEqual true try (liftEffect $ isWalletAvailable flint) >>= hush >>> shouldEqual (Just false) - let nufi = "nufi" + let nufi = walletName NuFi withCip30Mock alice nufi do (liftEffect $ isWalletAvailable nufi) >>= shouldEqual true try (liftEffect $ isWalletAvailable nufi) >>= hush >>> shouldEqual (Just false) - let lode = "LodeWallet" + let lode = walletName Lode withCip30Mock alice lode do (liftEffect $ isWalletAvailable lode) >>= shouldEqual true try (liftEffect $ isWalletAvailable lode) >>= hush >>> @@ -1939,7 +1943,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice "nami" do + withCip30Mock alice (walletName Nami) do getWalletCollateral >>= liftEffect <<< case _ of Nothing -> throw "Unable to get collateral" Just @@ -1962,7 +1966,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - utxos <- withCip30Mock alice "nami" do + utxos <- withCip30Mock alice (walletName Nami) do getWalletUtxos utxos `shouldSatisfy` isJust @@ -1974,7 +1978,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - mockAddress <- withCip30Mock alice "nami" do + mockAddress <- withCip30Mock alice (walletName Nami) do mbAddr <- head <$> getWalletAddresses mbAddr `shouldSatisfy` isJust pure mbAddr @@ -1990,7 +1994,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice "nami" do + withCip30Mock alice (walletName Nami) do pkh <- liftedM "Failed to get PKH" $ head <$> ownPaymentPubKeyHashes stakePkh <- join <<< head <$> ownStakePubKeyHashes @@ -2008,7 +2012,7 @@ suite = do getWalletBalance >>= shouldEqual ( Just $ coinToValue $ Coin $ BigNum.fromInt 1_050_000_000 ) - withCip30Mock alice "nami" do + withCip30Mock alice (walletName Nami) do getWalletBalance >>= shouldEqual ( Just $ coinToValue $ Coin $ BigNum.fromInt 1_050_000_000 ) @@ -2022,7 +2026,7 @@ suite = do , BigNum.fromInt 1_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice "nami" do + withCip30Mock alice (walletName Nami) do getWalletBalance >>= flip shouldSatisfy (eq $ Just $ coinToValue $ Coin $ BigNum.fromInt 8_000_000) @@ -2038,7 +2042,7 @@ suite = do , drepKey: Just privateDrepKey } withWallets walletSpec \alice -> - withCip30Mock alice "nami" $ + withCip30Mock alice (walletName Nami) $ ownDrepPubKey `shouldReturn` PrivateKey.toPublicKey (unwrap privateDrepKey) @@ -2054,7 +2058,7 @@ suite = do , drepKey: Just privateDrepKey } withWallets walletSpec \alice -> - withCip30Mock alice "nami" $ + withCip30Mock alice (walletName Nami) $ ownDrepPubKeyHash `shouldReturn` PublicKey.hash (PrivateKey.toPublicKey $ unwrap privateDrepKey) @@ -2070,7 +2074,7 @@ suite = do , drepKey: Nothing } withWallets walletSpec \alice -> - withCip30Mock alice "nami" $ + withCip30Mock alice (walletName Nami) $ ownRegisteredPubStakeKeys `shouldReturn` Array.singleton (PrivateKey.toPublicKey $ unwrap privateStakeKey) @@ -2086,7 +2090,7 @@ suite = do , drepKey: Nothing } withWallets walletSpec \alice -> - withCip30Mock alice "nami" $ + withCip30Mock alice (walletName Nami) $ ownUnregisteredPubStakeKeys `shouldReturn` Array.singleton (PrivateKey.toPublicKey $ unwrap privateStakeKey) @@ -2102,7 +2106,7 @@ suite = do , drepKey: Just privateDrepKey } withWallets walletSpec \alice -> - withCip30Mock alice "nami" do + withCip30Mock alice (walletName Nami) do networkId <- getNetworkId drepCred <- wrap <<< PubKeyHashCredential <$> ownDrepPubKeyHash let @@ -2119,9 +2123,9 @@ suite = do ] withWallets (distribution /\ distribution) \(alice /\ bob) -> do bobAddr <- - withCip30Mock bob "nami" do + withCip30Mock bob (walletName Nami) do liftedM "Could not get Bob's address" (head <$> getWalletAddresses) - withCip30Mock alice "nami" do + withCip30Mock alice (walletName Nami) do expectError $ signData bobAddr mempty test "CIP-30 utilities" do @@ -2132,7 +2136,7 @@ suite = do , BigNum.fromInt 50_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice "nami" do + withCip30Mock alice (walletName Nami) do Cip30.contract test "ECDSA example" do @@ -2145,7 +2149,7 @@ suite = do , BigNum.fromInt 2_000_000_000 ] withWallets distribution \alice -> do - withCip30Mock alice "nami" $ ECDSA.contract + withCip30Mock alice (walletName Nami) $ ECDSA.contract group "CIP-49 Plutus Crypto Primitives" do test "ECDSA: a script that checks if a signature is correct" do From 7c7b72aea8cc459e62feaf7c5ba83e51958c9ef7 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 2 Aug 2024 17:55:16 +0200 Subject: [PATCH 356/373] Update template --- templates/ctl-scaffold/flake.lock | 8 ++--- templates/ctl-scaffold/flake.nix | 2 +- templates/ctl-scaffold/packages.dhall | 4 +-- templates/ctl-scaffold/spago-packages.nix | 12 +++---- templates/ctl-scaffold/test/E2E.purs | 43 ++++++++++------------- 5 files changed, 31 insertions(+), 38 deletions(-) diff --git a/templates/ctl-scaffold/flake.lock b/templates/ctl-scaffold/flake.lock index f0d3d4504..600f05c0b 100644 --- a/templates/ctl-scaffold/flake.lock +++ b/templates/ctl-scaffold/flake.lock @@ -2781,17 +2781,17 @@ "ogmios": "ogmios_2" }, "locked": { - "lastModified": 1722512833, - "narHash": "sha256-1r2/punsH/iVCk3iHO4pexUA1bQ49Fbh8+r5FzII9eY=", + "lastModified": 1722613689, + "narHash": "sha256-CACNiPCxPpKNUZpW9Mq7IDa3YwMUqymFIr2bzMWc5bA=", "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "127cc209a5d2c15cf77bc2edffc108baff9bc8a3", + "rev": "01708d64e858a2ed3cbbc7a9a235d3acf79a7b91", "type": "github" }, "original": { "owner": "Plutonomicon", "repo": "cardano-transaction-lib", - "rev": "127cc209a5d2c15cf77bc2edffc108baff9bc8a3", + "rev": "01708d64e858a2ed3cbbc7a9a235d3acf79a7b91", "type": "github" } }, diff --git a/templates/ctl-scaffold/flake.nix b/templates/ctl-scaffold/flake.nix index 967e354e1..1a2ea7735 100644 --- a/templates/ctl-scaffold/flake.nix +++ b/templates/ctl-scaffold/flake.nix @@ -16,7 +16,7 @@ type = "github"; owner = "Plutonomicon"; repo = "cardano-transaction-lib"; - rev = "127cc209a5d2c15cf77bc2edffc108baff9bc8a3"; + rev = "01708d64e858a2ed3cbbc7a9a235d3acf79a7b91"; }; # To use the same version of `nixpkgs` as we do nixpkgs.follows = "ctl/nixpkgs"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 54a8e7472..3a03a3683 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -476,7 +476,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "40628bbb1049f3eb5364d304f949135e2ee2a2fb" + , version = "36343059b67ffe15e74803078299a486959a5aa3" } , cardano-transaction-lib = { dependencies = @@ -588,7 +588,7 @@ let additions = , "web-storage" ] , repo = "https://github.com/Plutonomicon/cardano-transaction-lib.git" - , version = "127cc209a5d2c15cf77bc2edffc108baff9bc8a3" + , version = "01708d64e858a2ed3cbbc7a9a235d3acf79a7b91" } } diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 6fc139c9b..e205ea4d6 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "40628bbb1049f3eb5364d304f949135e2ee2a2fb"; + version = "36343059b67ffe15e74803078299a486959a5aa3"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; - rev = "40628bbb1049f3eb5364d304f949135e2ee2a2fb"; - sha256 = "0i7m20gs2aax47n69i7f8kphnkl5hj6xillhsvgvjbm3hn3lm838"; + rev = "36343059b67ffe15e74803078299a486959a5aa3"; + sha256 = "19fg613ch96vw7ypknjf2k5p66lighvrfvdx04wp3l0gk06da9wc"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -295,11 +295,11 @@ let "cardano-transaction-lib" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-lib"; - version = "127cc209a5d2c15cf77bc2edffc108baff9bc8a3"; + version = "01708d64e858a2ed3cbbc7a9a235d3acf79a7b91"; src = pkgs.fetchgit { url = "https://github.com/Plutonomicon/cardano-transaction-lib.git"; - rev = "127cc209a5d2c15cf77bc2edffc108baff9bc8a3"; - sha256 = "1rpm10r1gygayghmdx1qnkah05bv57p1rqjd1aazh7zcx6kbzgfn"; + rev = "01708d64e858a2ed3cbbc7a9a235d3acf79a7b91"; + sha256 = "1c75kk2wr6xx4a2jkaql0divfdi0pg5g8mlsa66r4gmiy248s008"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/test/E2E.purs b/templates/ctl-scaffold/test/E2E.purs index 6317fd345..acf0922dc 100644 --- a/templates/ctl-scaffold/test/E2E.purs +++ b/templates/ctl-scaffold/test/E2E.purs @@ -5,9 +5,10 @@ import Contract.Prelude import Contract.Config ( ContractParams + , KnownWallet(Nami, Gero, Flint, Eternl, Lode) , WalletSpec(ConnectToGenericCip30) - , mainnetConfig , testnetConfig + , walletName ) import Contract.Monad (Contract) import Contract.Test.E2E (E2EConfigName, E2ETestName, addLinks, route) @@ -21,35 +22,27 @@ main = do route configs tests configs :: Map E2EConfigName (ContractParams /\ Maybe String) -configs = Map.fromFoldable - [ "nami" /\ testnetConfig' "nami" /\ Nothing - , "gero" /\ testnetConfig' "gerowallet" /\ Nothing - , "flint" /\ testnetConfig' "flint" /\ Nothing - , "eternl" /\ testnetConfig' "eternl" /\ Nothing - , "lode" /\ testnetConfig' "LodeWallet" /\ Nothing - , "nami-mock" /\ testnetConfig' "nami" /\ Just "nami" - , "gero-mock" /\ testnetConfig' "gerowallet" /\ Just "gerowallet" - , "flint-mock" /\ testnetConfig' "flint" /\ Just "flint" - , "lode-mock" /\ testnetConfig' "LodeWallet" /\ Just "LodeWallet" - -- Plutip cluster's network ID is set to mainnet: - , "plutip-nami-mock" /\ mainnetConfig' "nami" /\ Just "nami" - , "plutip-gero-mock" /\ mainnetConfig' "gerowallet" /\ Just "gerowallet" - , "plutip-flint-mock" /\ mainnetConfig' "flint" /\ Just "flint" - , "plutip-lode-mock" /\ mainnetConfig' "LodeWallet" /\ Just "LodeWallet" +configs = map (map walletName) <$> Map.fromFoldable + [ "nami" /\ testnetConfig' Nami /\ Nothing + , "gero" /\ testnetConfig' Gero /\ Nothing + , "flint" /\ testnetConfig' Flint /\ Nothing + , "eternl" /\ testnetConfig' Eternl /\ Nothing + , "lode" /\ testnetConfig' Lode /\ Nothing + , "nami-mock" /\ testnetConfig' Nami /\ Just Nami + , "gero-mock" /\ testnetConfig' Gero /\ Just Gero + , "flint-mock" /\ testnetConfig' Flint /\ Just Flint + , "lode-mock" /\ testnetConfig' Lode /\ Just Lode + , "plutip-nami-mock" /\ testnetConfig' Nami /\ Just Nami + , "plutip-gero-mock" /\ testnetConfig' Gero /\ Just Gero + , "plutip-flint-mock" /\ testnetConfig' Flint /\ Just Flint + , "plutip-lode-mock" /\ testnetConfig' Lode /\ Just Lode ] where - testnetConfig' :: String -> ContractParams + testnetConfig' :: KnownWallet -> ContractParams testnetConfig' wallet = testnetConfig { walletSpec = - Just $ ConnectToGenericCip30 wallet { cip95: false } - } - - mainnetConfig' :: String -> ContractParams - mainnetConfig' wallet = - mainnetConfig - { walletSpec = - Just $ ConnectToGenericCip30 wallet { cip95: false } + Just $ ConnectToGenericCip30 (walletName wallet) { cip95: false } } tests :: Map E2ETestName (Contract Unit) From cbf1fa857e45d1a8717ddfccb5ebe8df82f36465 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 2 Aug 2024 18:08:32 +0200 Subject: [PATCH 357/373] Treat KeyWallet stake keys as unregistered --- src/Internal/Contract/Wallet.purs | 32 ++++++++++++++++++------------- test/Testnet/Contract.purs | 3 +-- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/Internal/Contract/Wallet.purs b/src/Internal/Contract/Wallet.purs index ece9bc565..1eec8391e 100644 --- a/src/Internal/Contract/Wallet.purs +++ b/src/Internal/Contract/Wallet.purs @@ -38,8 +38,7 @@ import Cardano.Types.UtxoMap (UtxoMap) import Cardano.Types.Value (Value, valueToCoin) import Cardano.Types.Value (geq, lovelaceValueOf, sum) as Value import Cardano.Wallet.Key - ( KeyWallet - , PrivateStakeKey(PrivateStakeKey) + ( PrivateStakeKey(PrivateStakeKey) , getPrivateDrepKey , getPrivateStakeKey ) @@ -307,23 +306,30 @@ ownRegisteredPubStakeKeys :: Contract (Array PublicKey) ownRegisteredPubStakeKeys = withWallet do actionBasedOnWallet _.getRegisteredPubStakeKeys - (kwPubStakeKeys "ownRegisteredPubStakeKeys") + ( \_kw -> do + logWarn' $ kwStakeKeysRegStatusWarning "ownRegisteredPubStakeKeys" + pure mempty + ) ownUnregisteredPubStakeKeys :: Contract (Array PublicKey) ownUnregisteredPubStakeKeys = withWallet do actionBasedOnWallet _.getUnregisteredPubStakeKeys - (kwPubStakeKeys "ownUnregisteredPubStakeKeys") + ( \kw -> do + logWarn' $ kwStakeKeysRegStatusWarning "ownUnregisteredPubStakeKeys" + liftAff (getPrivateStakeKey kw) <#> case _ of + Just (PrivateStakeKey stakeKey) -> + Array.singleton $ PrivateKey.toPublicKey stakeKey + Nothing -> + mempty + ) -kwPubStakeKeys :: String -> KeyWallet -> Contract (Array PublicKey) -kwPubStakeKeys funName kw = do - logWarn' $ funName <> +kwStakeKeysRegStatusWarning :: String -> String +kwStakeKeysRegStatusWarning funName = + funName <> " via KeyWallet: KeyWallet does not distinguish between \ \registered and unregistered stake keys due to the limitations \ \of the underlying query layer. This means that all controlled \ - \stake keys are returned regardless of their registration status." - liftAff (getPrivateStakeKey kw) <#> case _ of - Just (PrivateStakeKey stakeKey) -> - Array.singleton $ PrivateKey.toPublicKey stakeKey - Nothing -> - mempty + \stake keys are returned as part of ownUnregisteredPubStakeKeys, \ + \and the response of ownRegisteredPubStakeKeys is always an \ + \empty array." diff --git a/test/Testnet/Contract.purs b/test/Testnet/Contract.purs index 95cf614de..626eb7f0a 100644 --- a/test/Testnet/Contract.purs +++ b/test/Testnet/Contract.purs @@ -2075,8 +2075,7 @@ suite = do } withWallets walletSpec \alice -> withCip30Mock alice (walletName Nami) $ - ownRegisteredPubStakeKeys `shouldReturn` - Array.singleton (PrivateKey.toPublicKey $ unwrap privateStakeKey) + ownRegisteredPubStakeKeys `shouldReturn` mempty test "ownUnregisteredPubStakeKeys works" do let From 8b42cc0f03f0c0fac1d6354d9e2118dce9f732f8 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 2 Aug 2024 20:05:25 +0200 Subject: [PATCH 358/373] Fix Cip30Mock --- src/Internal/Wallet/Cip30Mock.purs | 39 +++++++++++++----------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/src/Internal/Wallet/Cip30Mock.purs b/src/Internal/Wallet/Cip30Mock.purs index aa9dcd687..c7e3b729f 100644 --- a/src/Internal/Wallet/Cip30Mock.purs +++ b/src/Internal/Wallet/Cip30Mock.purs @@ -29,7 +29,7 @@ import Control.Alt ((<|>)) import Control.Monad.Error.Class (liftMaybe, try) import Control.Monad.Reader (ask) import Control.Monad.Reader.Class (local) -import Control.Promise (Promise, fromAff) +import Control.Promise (fromAff) import Ctl.Internal.BalanceTx.Collateral.Select (minRequiredCollateral) import Ctl.Internal.Contract.Monad (getQueryHandle) import Ctl.Internal.Helpers (liftEither) @@ -43,7 +43,6 @@ import Data.Map as Map import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Newtype (unwrap, wrap) import Data.UInt as UInt -import Effect (Effect) import Effect.Aff (Aff) import Effect.Aff.Class (liftAff) import Effect.Class (liftEffect) @@ -65,12 +64,11 @@ import Partial.Unsafe (unsafePartial) -- | it will have to be changed a lot to successfully mimic the behavior of -- | multi-address wallets, like Eternl. -- | --- | WARNING: The implementation of `getRegisteredPubStakeKeys` and --- | `getUnregisteredPubStakeKeys` for KeyWallet is partial. We cannot --- | differentiate between registered and unregistered stake keys due --- | to the limitations of the underlying query layer. As a result, --- | all controlled stake keys are returned, irrespective of their --- | registration status. +-- | WARNING: KeyWallet does not distinguish between registered and +-- | unregistered stake keys due to the limitations of the underlying +-- | query layer. This means that all controlled stake keys are +-- | returned as part of getUnregisteredPubStakeKeys, and the response +-- | of getRegisteredPubStakeKeys is always an empty array. withCip30Mock :: forall (a :: Type) . KeyWallet @@ -117,18 +115,6 @@ mkCip30Mock pKey mSKey mbDrepKey = do keyWallet = privateKeysToKeyWallet pKey mSKey mbDrepKey - getPubStakeKeys :: Effect (Promise (Array String)) - getPubStakeKeys = fromAff do - KeyWallet.getPrivateStakeKey keyWallet <#> case _ of - Just stakeKey -> - let - stakePubKey = PrivateKey.toPublicKey $ unwrap stakeKey - in - Array.singleton $ byteArrayToHex $ unwrap $ PublicKey.toRawBytes - stakePubKey - Nothing -> - mempty - addressHex <- liftAff $ (byteArrayToHex <<< unwrap <<< encodeCbor) <$> ((unwrap keyWallet).address env.networkId :: Aff Address) @@ -206,6 +192,15 @@ mkCip30Mock pKey mSKey mbDrepKey = do KeyWallet.getPrivateDrepKey keyWallet let drepPubKey = PrivateKey.toPublicKey $ unwrap drepKey pure $ byteArrayToHex $ unwrap $ PublicKey.toRawBytes drepPubKey - , getRegisteredPubStakeKeys: getPubStakeKeys - , getUnregisteredPubStakeKeys: getPubStakeKeys + , getRegisteredPubStakeKeys: fromAff $ pure mempty + , getUnregisteredPubStakeKeys: fromAff do + KeyWallet.getPrivateStakeKey keyWallet <#> case _ of + Just stakeKey -> + let + stakePubKey = PrivateKey.toPublicKey $ unwrap stakeKey + in + Array.singleton $ byteArrayToHex $ unwrap $ PublicKey.toRawBytes + stakePubKey + Nothing -> + mempty } From cd5f44c6c23ba28a66c87686bd932f3800be8609 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Tue, 6 Aug 2024 10:22:26 -0300 Subject: [PATCH 359/373] Expose Testnet functions Those functions are frequently used and were previously classified as `Internal`. --- src/Contract/Test/Testnet.purs | 6 +++--- test/Testnet.purs | 7 +++++-- test/Testnet/Logging.purs | 3 +-- test/Testnet/Staking.purs | 3 +-- test/Testnet/UtxoDistribution.purs | 2 +- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Contract/Test/Testnet.purs b/src/Contract/Test/Testnet.purs index 8b4c3222d..abaef851f 100644 --- a/src/Contract/Test/Testnet.purs +++ b/src/Contract/Test/Testnet.purs @@ -26,13 +26,13 @@ import Ctl.Internal.Testnet.Contract , runTestnetTestPlan , testTestnetContracts ) as X -import Ctl.Internal.Testnet.Types (Era(Babbage), TestnetConfig) +import Ctl.Internal.Testnet.Types (Era(Babbage), TestnetConfig) as X import Data.Log.Level (LogLevel(Trace)) import Data.Maybe (Maybe(Nothing)) import Data.Time.Duration (Seconds(Seconds)) import Data.UInt (fromInt) as UInt -defaultTestnetConfig :: TestnetConfig +defaultTestnetConfig :: X.TestnetConfig defaultTestnetConfig = { logLevel: Trace , ogmiosConfig: @@ -52,7 +52,7 @@ defaultTestnetConfig = , hooks: emptyHooks , clusterConfig: { testnetMagic: 2 - , era: Babbage + , era: X.Babbage , slotLength: Seconds 0.1 , epochSize: Nothing } diff --git a/test/Testnet.purs b/test/Testnet.purs index 8c33f11f3..0c4e73abc 100644 --- a/test/Testnet.purs +++ b/test/Testnet.purs @@ -5,10 +5,13 @@ module Test.Ctl.Testnet import Prelude import Contract.Test (noWallet) -import Contract.Test.Testnet (defaultTestnetConfig) +import Contract.Test.Testnet + ( defaultTestnetConfig + , runTestnetTestPlan + , testTestnetContracts + ) import Contract.Test.Utils (exitCode, interruptOnSignal) import Ctl.Internal.Contract.Monad (wrapQueryM) -import Ctl.Internal.Testnet.Contract (runTestnetTestPlan, testTestnetContracts) import Data.Maybe (Maybe(Just)) import Data.Posix.Signal (Signal(SIGINT)) import Effect (Effect) diff --git a/test/Testnet/Logging.purs b/test/Testnet/Logging.purs index 4df8b9ac2..fd43ab561 100644 --- a/test/Testnet/Logging.purs +++ b/test/Testnet/Logging.purs @@ -5,8 +5,7 @@ module Test.Ctl.Testnet.Logging import Prelude import Contract.Log (logWarn') -import Contract.Test.Testnet (defaultTestnetConfig) -import Ctl.Internal.Testnet.Contract (runTestnetContract) +import Contract.Test.Testnet (defaultTestnetConfig, runTestnetContract) import Data.Log.Level (LogLevel(Error)) import Data.Maybe (Maybe(Just)) import Effect.Aff (Aff, try) diff --git a/test/Testnet/Staking.purs b/test/Testnet/Staking.purs index 8e957b974..0b160f975 100644 --- a/test/Testnet/Staking.purs +++ b/test/Testnet/Staking.purs @@ -53,7 +53,7 @@ import Contract.Staking , getValidatorHashDelegationsAndRewards ) import Contract.Test.Mote (TestPlanM, interpretWithConfig) -import Contract.Test.Testnet (defaultTestnetConfig) +import Contract.Test.Testnet (defaultTestnetConfig, runTestnetContract) import Contract.Test.Utils (exitCode, interruptOnSignal) import Contract.Time (getCurrentEpoch) import Contract.Transaction @@ -78,7 +78,6 @@ import Ctl.Internal.Test.UtxoDistribution ( InitialUTxOs , InitialUTxOsWithStakeKey(InitialUTxOsWithStakeKey) ) -import Ctl.Internal.Testnet.Contract (runTestnetContract) import Data.Array (head) import Data.Array as Array import Data.Either (hush) diff --git a/test/Testnet/UtxoDistribution.purs b/test/Testnet/UtxoDistribution.purs index 40ebfada6..a18a91b6d 100644 --- a/test/Testnet/UtxoDistribution.purs +++ b/test/Testnet/UtxoDistribution.purs @@ -30,6 +30,7 @@ import Contract.Test.Testnet , InitialUTxOs , InitialUTxOsWithStakeKey(InitialUTxOsWithStakeKey) , defaultTestnetConfig + , runTestnetContract , withStakeKey ) import Contract.Utxos (utxosAt) @@ -43,7 +44,6 @@ import Contract.Wallet ) import Control.Lazy (fix) import Ctl.Internal.Test.UtxoDistribution (encodeDistribution, keyWallets) -import Ctl.Internal.Testnet.Contract (runTestnetContract) import Data.Array (foldl, head, replicate, zip) import Data.Array.NonEmpty (fromNonEmpty) as NEArray import Data.Foldable (intercalate) From 922fcab35390df4505b1e687831d206f28de6a9a Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Tue, 6 Aug 2024 11:18:34 -0300 Subject: [PATCH 360/373] Update template --- templates/ctl-scaffold/test/Main.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/ctl-scaffold/test/Main.purs b/templates/ctl-scaffold/test/Main.purs index a48919ac7..ec4bebbff 100644 --- a/templates/ctl-scaffold/test/Main.purs +++ b/templates/ctl-scaffold/test/Main.purs @@ -10,11 +10,11 @@ import Contract.Test.Testnet ( ContractTest , InitialUTxOs , defaultTestnetConfig + , testTestnetContracts , withKeyWallet , withWallets ) import Contract.Test.Utils (exitCode, interruptOnSignal) -import Ctl.Internal.Testnet.Contract (testTestnetContracts) import Data.Posix.Signal (Signal(SIGINT)) import Effect.Aff ( Milliseconds(Milliseconds) From 49ceb14d33522e7995eb9eda981c8b50e2a46cb1 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Tue, 6 Aug 2024 14:51:45 -0300 Subject: [PATCH 361/373] Fix `cardano-testnet` process hanging --- src/Internal/Testnet/Server.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Internal/Testnet/Server.purs b/src/Internal/Testnet/Server.purs index a2959bf53..63e09f5b4 100644 --- a/src/Internal/Testnet/Server.purs +++ b/src/Internal/Testnet/Server.purs @@ -72,7 +72,7 @@ import Data.String.Pattern (Pattern(Pattern)) import Data.Time.Duration (Milliseconds(Milliseconds)) import Data.UInt (UInt) import Data.UInt (toString) as UInt -import Effect.Aff (Aff) +import Effect.Aff (Aff, launchAff_) import Effect.Aff as Aff import Effect.Aff.Retry ( RetryPolicy @@ -381,6 +381,7 @@ startCardanoTestnet params cleanupRef = annotateError "startCardanoTestnet" do $ liftEffect do log $ "Cleaning up workdir: " <> workspace _rmdirSync workspace + launchAff_ $ stop testnet _ <- redirectChannels { stderr: channels.stderr, stdout: channels.stdout } From def0c404e158c32c4d6f1209be6ce5deb604e641 Mon Sep 17 00:00:00 2001 From: Marcus Fernandes Date: Wed, 7 Aug 2024 09:54:39 -0300 Subject: [PATCH 362/373] Export all `Era` constructors --- src/Contract/Test/Testnet.purs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Contract/Test/Testnet.purs b/src/Contract/Test/Testnet.purs index abaef851f..f5485e069 100644 --- a/src/Contract/Test/Testnet.purs +++ b/src/Contract/Test/Testnet.purs @@ -26,13 +26,24 @@ import Ctl.Internal.Testnet.Contract , runTestnetTestPlan , testTestnetContracts ) as X -import Ctl.Internal.Testnet.Types (Era(Babbage), TestnetConfig) as X +import Ctl.Internal.Testnet.Types (Era(Babbage), TestnetConfig) +import Ctl.Internal.Testnet.Types + ( Era + ( Byron + , Shelley + , Allegra + , Mary + , Alonzo + , Babbage + ) + , TestnetConfig + ) as X import Data.Log.Level (LogLevel(Trace)) import Data.Maybe (Maybe(Nothing)) import Data.Time.Duration (Seconds(Seconds)) import Data.UInt (fromInt) as UInt -defaultTestnetConfig :: X.TestnetConfig +defaultTestnetConfig :: TestnetConfig defaultTestnetConfig = { logLevel: Trace , ogmiosConfig: @@ -52,7 +63,7 @@ defaultTestnetConfig = , hooks: emptyHooks , clusterConfig: { testnetMagic: 2 - , era: X.Babbage + , era: Babbage , slotLength: Seconds 0.1 , epochSize: Nothing } From c43c3f163bb18c9e187626d991b6f9561d42c542 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 8 Aug 2024 16:21:41 +0200 Subject: [PATCH 363/373] Update CHANGELOG.md --- CHANGELOG.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94f8d2638..d63933602 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -86,11 +86,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) its registered and unregistered public stake keys: `ownDrepPubKey`, `ownDrepPubKeyHash`, `ownRegisteredPubStakeKeys`, `ownUnregisteredPubStakeKeys`. These new functions can be imported from `Contract.Wallet`. -**WARNING**: The implementation of `ownRegisteredPubStakeKeys` and -`ownUnregisteredPubStakeKeys` for KeyWallet is partial. Currently, it is not -possible to differentiate between registered and unregistered stake keys due to -the limitations of the underlying query layer. As a result, all controlled stake -keys are returned, irrespective of their registration status. +**WARNING**: KeyWallet does not distinguish between registered and unregistered +stake keys due to the limitations of the underlying query layer. This means that +all controlled stake keys are returned as part of `ownUnregisteredPubStakeKeys`, +and the response of `ownRegisteredPubStakeKeys` is always an empty array. ([#1638](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1638)) - New examples demonstrating various interactions with the Cardano governance @@ -111,7 +110,9 @@ keys, an error will be thrown. ### Removed - Constructors for individual wallets (like Nami or Eternl) from `WalletSpec`. -Use `ConnectToGenericCip30` with the right wallet identifier instead. +Use `ConnectToGenericCip30` with the right wallet identifier instead. To obtain +the identifier of a known wallet, refer to `KnownWallet` and `walletName` from +`Contract.Config`. ([#1638](https://github.com/Plutonomicon/cardano-transaction-lib/pull/1638)) ### Fixed From 19df4b69c886b665affeedca6e485d7d1e10aa08 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 8 Aug 2024 17:44:08 +0200 Subject: [PATCH 364/373] Bump cardano-transaction-builder --- packages.dhall | 2 +- spago-packages.nix | 6 +++--- templates/ctl-scaffold/packages.dhall | 2 +- templates/ctl-scaffold/spago-packages.nix | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages.dhall b/packages.dhall index 6c56a3e0b..6ad74d4c2 100644 --- a/packages.dhall +++ b/packages.dhall @@ -457,7 +457,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "36343059b67ffe15e74803078299a486959a5aa3" + , version = "a9c033b9a2bb78b134ae5309209f73e47f3d5791" } , mote-testplan = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 2959f99c6..6ae6b9673 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "36343059b67ffe15e74803078299a486959a5aa3"; + version = "a9c033b9a2bb78b134ae5309209f73e47f3d5791"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; - rev = "36343059b67ffe15e74803078299a486959a5aa3"; - sha256 = "19fg613ch96vw7ypknjf2k5p66lighvrfvdx04wp3l0gk06da9wc"; + rev = "a9c033b9a2bb78b134ae5309209f73e47f3d5791"; + sha256 = "1xz6k56kwghq9nl0iwrqs6m05wja0xfj34iicmlhwvdp7k4nc65w"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 3a03a3683..137f93203 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -476,7 +476,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" - , version = "36343059b67ffe15e74803078299a486959a5aa3" + , version = "a9c033b9a2bb78b134ae5309209f73e47f3d5791" } , cardano-transaction-lib = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index e205ea4d6..82a95f22d 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -283,11 +283,11 @@ let "cardano-transaction-builder" = pkgs.stdenv.mkDerivation { name = "cardano-transaction-builder"; - version = "36343059b67ffe15e74803078299a486959a5aa3"; + version = "a9c033b9a2bb78b134ae5309209f73e47f3d5791"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder"; - rev = "36343059b67ffe15e74803078299a486959a5aa3"; - sha256 = "19fg613ch96vw7ypknjf2k5p66lighvrfvdx04wp3l0gk06da9wc"; + rev = "a9c033b9a2bb78b134ae5309209f73e47f3d5791"; + sha256 = "1xz6k56kwghq9nl0iwrqs6m05wja0xfj34iicmlhwvdp7k4nc65w"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From 0fdc13c98ef8a4aca878cf32ec996d47165c4ada Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Thu, 8 Aug 2024 17:47:54 +0200 Subject: [PATCH 365/373] Fix SubmitProposal examples --- examples/Gov/SubmitVote.purs | 15 +++++++++------ examples/Gov/SubmitVoteScript.purs | 15 +++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/examples/Gov/SubmitVote.purs b/examples/Gov/SubmitVote.purs index 7b8b05940..1590a04c8 100644 --- a/examples/Gov/SubmitVote.purs +++ b/examples/Gov/SubmitVote.purs @@ -71,12 +71,15 @@ submitProposal = do getRewardAddresses tx <- submitTxFromBuildPlan Map.empty mempty - [ SubmitProposal $ VotingProposal - { govAction: GovAction.Info - , anchor: dummyAnchor - , deposit: unwrap govActionDeposit - , returnAddr: rewardAddr - } + [ SubmitProposal + ( VotingProposal + { govAction: GovAction.Info + , anchor: dummyAnchor + , deposit: unwrap govActionDeposit + , returnAddr: rewardAddr + } + ) + Nothing ] let txHash = Transaction.hash tx awaitTxConfirmed txHash diff --git a/examples/Gov/SubmitVoteScript.purs b/examples/Gov/SubmitVoteScript.purs index 5f0222b60..55e43e6d3 100644 --- a/examples/Gov/SubmitVoteScript.purs +++ b/examples/Gov/SubmitVoteScript.purs @@ -76,12 +76,15 @@ submitProposal = do getRewardAddresses tx <- submitTxFromBuildPlan Map.empty mempty - [ SubmitProposal $ VotingProposal - { govAction: GovAction.Info - , anchor: dummyAnchor - , deposit: unwrap govActionDeposit - , returnAddr: rewardAddr - } + [ SubmitProposal + ( VotingProposal + { govAction: GovAction.Info + , anchor: dummyAnchor + , deposit: unwrap govActionDeposit + , returnAddr: rewardAddr + } + ) + Nothing ] let txHash = Transaction.hash tx awaitTxConfirmed txHash From c86bdcea0a1ee850e58302126177bcd55d6a1911 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 9 Aug 2024 14:48:29 +0200 Subject: [PATCH 366/373] Run cardano-testnet in Conway era, other changes below - Reuse Api type from purescript-cip30 - Add cardano-testnet test suite for governance examples - Consider signers for tx certificates, withdrawals, and voting procedures when calculating min fee --- flake.lock | 8 +- flake.nix | 2 +- packages.dhall | 3 +- spago-packages.nix | 6 +- src/Contract/Test/Testnet.purs | 4 +- src/Internal/Contract/MinFee.purs | 100 +++++++++++++++++++++- src/Internal/Testnet/Types.purs | 4 +- src/Internal/Wallet.purs | 5 +- src/Internal/Wallet/Cip30.purs | 47 +++++----- templates/ctl-scaffold/packages.dhall | 3 +- templates/ctl-scaffold/spago-packages.nix | 6 +- test/Testnet/Gov.purs | 54 +++++++++--- 12 files changed, 178 insertions(+), 64 deletions(-) diff --git a/flake.lock b/flake.lock index 4cac80f01..d6f263050 100644 --- a/flake.lock +++ b/flake.lock @@ -2099,17 +2099,17 @@ "utils": "utils_7" }, "locked": { - "lastModified": 1721843629, - "narHash": "sha256-F5wgRA820x16f+8c/LlEEBG0rMJIA1XWw6X0ZwX5UWs=", + "lastModified": 1722955151, + "narHash": "sha256-pZUg2PbhK35QdMcEP0or6IyKXBr544KyebQ+xiNc6PE=", "owner": "input-output-hk", "repo": "cardano-node", - "rev": "176f99e51155cb3eaa0711db1c3c969d67438958", + "rev": "4f4e372a1641ac68cd09fb0339e6f55bef1ab85d", "type": "github" }, "original": { "owner": "input-output-hk", - "ref": "9.1.0", "repo": "cardano-node", + "rev": "4f4e372a1641ac68cd09fb0339e6f55bef1ab85d", "type": "github" } }, diff --git a/flake.nix b/flake.nix index bed57d933..047c6de0b 100644 --- a/flake.nix +++ b/flake.nix @@ -33,7 +33,7 @@ flake = false; }; - cardano-node.url = "github:input-output-hk/cardano-node/9.1.0"; + cardano-node.url = "github:input-output-hk/cardano-node/4f4e372a1641ac68cd09fb0339e6f55bef1ab85d"; # Repository with network parameters # NOTE(bladyjoker): Cardano configurations (yaml/json) often change format and break, that's why we pin to a specific known version. diff --git a/packages.dhall b/packages.dhall index 6ad74d4c2..0ad5031af 100644 --- a/packages.dhall +++ b/packages.dhall @@ -142,13 +142,14 @@ let additions = { dependencies = [ "aff" , "aff-promise" + , "cip30" , "console" , "effect" , "newtype" , "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cip95" - , version = "ddcabbcf96ec6e292ca821c86eada1f828da0daf" + , version = "3b2761237d54e85fc313f5a9439444ebf1b827a8" } , cip95-typesafe = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 6ae6b9673..5ef48eb74 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -367,11 +367,11 @@ let "cip95" = pkgs.stdenv.mkDerivation { name = "cip95"; - version = "ddcabbcf96ec6e292ca821c86eada1f828da0daf"; + version = "3b2761237d54e85fc313f5a9439444ebf1b827a8"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip95"; - rev = "ddcabbcf96ec6e292ca821c86eada1f828da0daf"; - sha256 = "1vhan4fx4yq2h2p4ilvid97qnfs6wx5nj6rjyvyj30s1wi1cb1rz"; + rev = "3b2761237d54e85fc313f5a9439444ebf1b827a8"; + sha256 = "1javlxga7mv1z0inwpwlgh0w4b4dh0bikv5pypyvh1mk3s2605hp"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/src/Contract/Test/Testnet.purs b/src/Contract/Test/Testnet.purs index 8b4c3222d..d3e4d2348 100644 --- a/src/Contract/Test/Testnet.purs +++ b/src/Contract/Test/Testnet.purs @@ -26,7 +26,7 @@ import Ctl.Internal.Testnet.Contract , runTestnetTestPlan , testTestnetContracts ) as X -import Ctl.Internal.Testnet.Types (Era(Babbage), TestnetConfig) +import Ctl.Internal.Testnet.Types (Era(Conway), TestnetConfig) import Data.Log.Level (LogLevel(Trace)) import Data.Maybe (Maybe(Nothing)) import Data.Time.Duration (Seconds(Seconds)) @@ -52,7 +52,7 @@ defaultTestnetConfig = , hooks: emptyHooks , clusterConfig: { testnetMagic: 2 - , era: Babbage + , era: Conway , slotLength: Seconds 0.1 , epochSize: Nothing } diff --git a/src/Internal/Contract/MinFee.purs b/src/Internal/Contract/MinFee.purs index 354321682..677abf3f2 100644 --- a/src/Internal/Contract/MinFee.purs +++ b/src/Internal/Contract/MinFee.purs @@ -3,16 +3,40 @@ module Ctl.Internal.Contract.MinFee (calculateMinFee) where import Prelude import Cardano.Types - ( Coin + ( Certificate + ( StakeRegistration + , StakeDeregistration + , StakeDelegation + , PoolRegistration + , PoolRetirement + , VoteDelegCert + , StakeVoteDelegCert + , StakeRegDelegCert + , VoteRegDelegCert + , StakeVoteRegDelegCert + , AuthCommitteeHotCert + , ResignCommitteeColdCert + , RegDrepCert + , UnregDrepCert + , UpdateDrepCert + ) + , Coin + , Credential , Ed25519KeyHash + , RewardAddress , Transaction , UtxoMap + , Voter(Cc, Drep, Spo) , _body + , _certs , _collateral , _inputs + , _withdrawals ) import Cardano.Types.Address (Address, getPaymentCredential, getStakeCredential) import Cardano.Types.Credential (asPubKeyHash) +import Cardano.Types.Credential (asPubKeyHash) as Credential +import Cardano.Types.TransactionBody (_votingProcedures) import Cardano.Types.TransactionInput (TransactionInput) import Ctl.Internal.Contract (getProtocolParameters) import Ctl.Internal.Contract.Monad (Contract, getQueryHandle) @@ -22,12 +46,22 @@ import Ctl.Internal.Serialization.MinFee (calculateMinFeeCsl) import Data.Array (fromFoldable, mapMaybe) import Data.Array as Array import Data.Either (hush) +import Data.Foldable (foldl) +import Data.Lens (view) import Data.Lens.Getter ((^.)) import Data.Map (keys, lookup, values) as Map -import Data.Maybe (Maybe(Just, Nothing)) +import Data.Maybe (Maybe(Just, Nothing), maybe) import Data.Newtype (unwrap) import Data.Set (Set) -import Data.Set (difference, fromFoldable, intersection, mapMaybe, union) as Set +import Data.Set + ( difference + , empty + , fromFoldable + , insert + , intersection + , mapMaybe + , union + ) as Set import Data.Traversable (for) import Effect.Aff (error) import Effect.Aff.Class (liftAff) @@ -101,7 +135,14 @@ getSelfSigners tx additionalUtxos = do (asPubKeyHash <<< unwrap <=< getStakeCredential) `mapMaybe` Array.fromFoldable txOwnAddrs - pure $ paymentPkhs <> stakePkhs + -- Extract signers for certificates, withdrawals, and voting procedures + let + certsPkhs = getSignersForCerts tx + withdrawalsPkhs = getSignersForWithdrawals tx + votingProceduresPkhs = getSignersForVotingProcedures tx + + pure $ paymentPkhs <> stakePkhs <> certsPkhs <> withdrawalsPkhs + <> votingProceduresPkhs where setFor :: forall (a :: Type) (b :: Type) (m :: Type -> Type) @@ -112,3 +153,54 @@ getSelfSigners tx additionalUtxos = do -> (a -> m b) -> m (Set b) setFor txIns f = Set.fromFoldable <$> for (fromFoldable txIns) f + +getSignersForCerts :: Transaction -> Set Ed25519KeyHash +getSignersForCerts = foldl worker Set.empty <<< view (_body <<< _certs) + where + worker :: Set Ed25519KeyHash -> Certificate -> Set Ed25519KeyHash + worker acc = + case _ of + StakeRegistration _ -> acc + StakeDeregistration cred -> addSigner $ unwrap cred + StakeDelegation cred _ -> addSigner $ unwrap cred + PoolRegistration poolParams -> Set.insert + (unwrap (unwrap poolParams).operator) + acc + PoolRetirement { poolKeyHash } -> Set.insert (unwrap poolKeyHash) acc + VoteDelegCert cred _ -> addSigner $ unwrap cred + StakeVoteDelegCert cred _ _ -> addSigner $ unwrap cred + StakeRegDelegCert cred _ _ -> addSigner $ unwrap cred + VoteRegDelegCert cred _ _ -> addSigner $ unwrap cred + StakeVoteRegDelegCert cred _ _ _ -> addSigner $ unwrap cred + AuthCommitteeHotCert { coldCred } -> addSigner coldCred + ResignCommitteeColdCert cred _ -> addSigner cred + RegDrepCert cred _ _ -> addSigner cred + UnregDrepCert cred _ -> addSigner cred + UpdateDrepCert cred _ -> addSigner cred + where + addSigner :: Credential -> Set Ed25519KeyHash + addSigner = maybe acc (flip Set.insert acc) <<< Credential.asPubKeyHash + +getSignersForWithdrawals :: Transaction -> Set Ed25519KeyHash +getSignersForWithdrawals = + foldl worker Set.empty <<< Map.keys <<< view (_body <<< _withdrawals) + where + worker :: Set Ed25519KeyHash -> RewardAddress -> Set Ed25519KeyHash + worker acc = + maybe acc (flip Set.insert acc) <<< Credential.asPubKeyHash <<< unwrap + <<< _.stakeCredential + +getSignersForVotingProcedures :: Transaction -> Set Ed25519KeyHash +getSignersForVotingProcedures = + foldl worker Set.empty <<< Map.keys <<< unwrap + <<< view (_body <<< _votingProcedures) + where + worker :: Set Ed25519KeyHash -> Voter -> Set Ed25519KeyHash + worker acc = + case _ of + Cc cred -> addSigner cred + Drep cred -> addSigner cred + Spo poolKeyHash -> Set.insert poolKeyHash acc + where + addSigner :: Credential -> Set Ed25519KeyHash + addSigner = maybe acc (flip Set.insert acc) <<< Credential.asPubKeyHash diff --git a/src/Internal/Testnet/Types.purs b/src/Internal/Testnet/Types.purs index 556027b52..ea735e05c 100644 --- a/src/Internal/Testnet/Types.purs +++ b/src/Internal/Testnet/Types.purs @@ -1,6 +1,6 @@ module Ctl.Internal.Testnet.Types ( CardanoTestnetStartupParams - , Era(Byron, Shelley, Allegra, Mary, Alonzo, Babbage) + , Era(Byron, Shelley, Allegra, Mary, Alonzo, Babbage, Conway) , LoggingFormat(LogAsJson, LogAsText) , TestnetPaths , Event(Ready872, Finished, Failed, StartupFailed) @@ -55,6 +55,7 @@ data Era | Mary | Alonzo | Babbage + | Conway data StartupFailure = SpawnFailed @@ -84,6 +85,7 @@ instance Show Era where Mary -> "mary-era" Alonzo -> "alonzo-era" Babbage -> "babbage-era" + Conway -> "conway-era" data LoggingFormat = LogAsJson | LogAsText diff --git a/src/Internal/Wallet.purs b/src/Internal/Wallet.purs index 0a424ffca..51e161918 100644 --- a/src/Internal/Wallet.purs +++ b/src/Internal/Wallet.purs @@ -10,8 +10,8 @@ module Ctl.Internal.Wallet import Prelude +import Cardano.Wallet.Cip30 (Api) import Cardano.Wallet.Cip30 (enable) as Cip30 -import Cardano.Wallet.Cip95 (Api) import Cardano.Wallet.Cip95 (enable) as Cip95 import Cardano.Wallet.Key ( KeyWallet @@ -30,7 +30,6 @@ import Effect.Aff (Aff, delay) import Effect.Aff.Class (class MonadAff, liftAff) import Effect.Class (liftEffect) import Effect.Console as Console -import Unsafe.Coerce (unsafeCoerce) foreign import isWalletAvailable :: String -> Effect Boolean @@ -80,7 +79,7 @@ mkWalletAff walletExtension = do enableWallet :: WalletExtension -> Aff Api enableWallet { name, exts: { cip95 } } | cip95 = Cip95.enable name - | otherwise = unsafeCoerce <$> Cip30.enable name mempty + | otherwise = Cip30.enable name mempty actionBasedOnWallet :: forall (m :: Type -> Type) (a :: Type) diff --git a/src/Internal/Wallet/Cip30.purs b/src/Internal/Wallet/Cip30.purs index 296723b25..57e1436ca 100644 --- a/src/Internal/Wallet/Cip30.purs +++ b/src/Internal/Wallet/Cip30.purs @@ -25,7 +25,6 @@ import Cardano.Types.Value as Value import Cardano.Wallet.Cip30 (Api) import Cardano.Wallet.Cip30.TypeSafe (APIError) import Cardano.Wallet.Cip30.TypeSafe as Cip30 -import Cardano.Wallet.Cip95 (Api) as Cip95 import Cardano.Wallet.Cip95.TypeSafe ( getPubDrepKey , getRegisteredPubStakeKeys @@ -41,7 +40,6 @@ import Data.Variant (Variant, match) import Effect.Aff (Aff) import Effect.Class (liftEffect) import Effect.Exception (error, throw) -import Unsafe.Coerce (unsafeCoerce) type DataSignature = { key :: CborBytes @@ -93,27 +91,23 @@ type Cip30Wallet = , getUnregisteredPubStakeKeys :: Aff (Array PublicKey) } -mkCip30WalletAff - :: Cip95.Api - -- ^ A function to get wallet connection - -> Aff Cip30Wallet -mkCip30WalletAff conn95 = do - let connection = unsafeCoerce conn95 -- FIXME +mkCip30WalletAff :: Api -> Aff Cip30Wallet +mkCip30WalletAff conn = pure - { connection - , getNetworkId: Cip30.getNetworkId connection >>= handleApiError - , getUtxos: getUtxos connection - , getCollateral: getCollateral connection - , getBalance: getBalance connection - , getUsedAddresses: getUsedAddresses connection - , getUnusedAddresses: getUnusedAddresses connection - , getChangeAddress: getChangeAddress connection - , getRewardAddresses: getRewardAddresses connection - , signTx: signTx connection - , signData: signData connection - , getPubDrepKey: getPubDrepKey conn95 - , getRegisteredPubStakeKeys: getRegisteredPubStakeKeys conn95 - , getUnregisteredPubStakeKeys: getUnregisteredPubStakeKeys conn95 + { connection: conn + , getNetworkId: Cip30.getNetworkId conn >>= handleApiError + , getUtxos: getUtxos conn + , getCollateral: getCollateral conn + , getBalance: getBalance conn + , getUsedAddresses: getUsedAddresses conn + , getUnusedAddresses: getUnusedAddresses conn + , getChangeAddress: getChangeAddress conn + , getRewardAddresses: getRewardAddresses conn + , signTx: signTx conn + , signData: signData conn + , getPubDrepKey: getPubDrepKey conn + , getRegisteredPubStakeKeys: getRegisteredPubStakeKeys conn + , getUnregisteredPubStakeKeys: getUnregisteredPubStakeKeys conn } ------------------------------------------------------------------------------- @@ -244,22 +238,21 @@ getBalance conn = do liftM (error "CIP-30 getUsedAddresses returned non-address") <<< (hexToByteArray >=> fromBytes >>> map Value.fromCsl) -getCip30Collateral - :: Api -> Coin -> Aff (Maybe (Array String)) +getCip30Collateral :: Api -> Coin -> Aff (Maybe (Array String)) getCip30Collateral conn (Coin requiredValue) = do let requiredValueStr = byteArrayToHex $ toBytes $ unwrap requiredValue (Cip30.getCollateral conn requiredValueStr >>= handleApiError) `catchError` \err -> throwError $ error $ "Failed to call `getCollateral`: " <> show err -getPubDrepKey :: Cip95.Api -> Aff PublicKey +getPubDrepKey :: Api -> Aff PublicKey getPubDrepKey conn = do drepKeyHex <- handleApiError =<< Cip95.getPubDrepKey conn pubKeyFromHex drepKeyHex $ "CIP-95 getPubDRepKey returned invalid DRep key: " <> drepKeyHex -getRegisteredPubStakeKeys :: Cip95.Api -> Aff (Array PublicKey) +getRegisteredPubStakeKeys :: Api -> Aff (Array PublicKey) getRegisteredPubStakeKeys conn = do keys <- handleApiError =<< Cip95.getRegisteredPubStakeKeys conn for keys \pubStakeKeyHex -> @@ -267,7 +260,7 @@ getRegisteredPubStakeKeys conn = do "CIP-95 getRegisteredPubStakeKeys returned invalid key: " <> pubStakeKeyHex -getUnregisteredPubStakeKeys :: Cip95.Api -> Aff (Array PublicKey) +getUnregisteredPubStakeKeys :: Api -> Aff (Array PublicKey) getUnregisteredPubStakeKeys conn = do keys <- handleApiError =<< Cip95.getUnregisteredPubStakeKeys conn for keys \pubStakeKeyHex -> diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 137f93203..946275ff1 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -142,13 +142,14 @@ let additions = { dependencies = [ "aff" , "aff-promise" + , "cip30" , "console" , "effect" , "newtype" , "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cip95" - , version = "ddcabbcf96ec6e292ca821c86eada1f828da0daf" + , version = "3b2761237d54e85fc313f5a9439444ebf1b827a8" } , cip95-typesafe = { dependencies = diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 82a95f22d..35264ce22 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -379,11 +379,11 @@ let "cip95" = pkgs.stdenv.mkDerivation { name = "cip95"; - version = "ddcabbcf96ec6e292ca821c86eada1f828da0daf"; + version = "3b2761237d54e85fc313f5a9439444ebf1b827a8"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip95"; - rev = "ddcabbcf96ec6e292ca821c86eada1f828da0daf"; - sha256 = "1vhan4fx4yq2h2p4ilvid97qnfs6wx5nj6rjyvyj30s1wi1cb1rz"; + rev = "3b2761237d54e85fc313f5a9439444ebf1b827a8"; + sha256 = "1javlxga7mv1z0inwpwlgh0w4b4dh0bikv5pypyvh1mk3s2605hp"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/test/Testnet/Gov.purs b/test/Testnet/Gov.purs index 7f6afa3fa..1814b2f5f 100644 --- a/test/Testnet/Gov.purs +++ b/test/Testnet/Gov.purs @@ -8,20 +8,46 @@ import Cardano.Types.BigNum (fromInt) as BigNum import Contract.Test (ContractTest) import Contract.Test.Mote (TestPlanM) import Contract.Test.Testnet (InitialUTxOs, withKeyWallet, withWallets) -import Ctl.Examples.Gov.ManageDrep (contract) as Gov.RegisterDrep -import Mote (group, skip, test) +import Ctl.Examples.Gov.DelegateVoteAbstain (contract) as Gov.DelegateVoteAbstain +import Ctl.Examples.Gov.ManageDrep (contract) as Gov.ManageDrep +import Ctl.Examples.Gov.ManageDrepScript (contract) as Gov.ManageDrepScript +import Ctl.Examples.Gov.SubmitVote (contract) as Gov.SubmitVote +import Ctl.Examples.Gov.SubmitVoteScript (contract) as Gov.SubmitVoteScript +import Ctl.Internal.Test.UtxoDistribution (TestWalletSpec) +import Data.Maybe (Maybe(Just)) +import Data.Newtype (wrap) +import Mote (group, test) +import Test.Ctl.Testnet.Common (privateDrepKey, privateStakeKey) + +walletSpec :: TestWalletSpec +walletSpec = wrap + { utxos: + [ BigNum.fromInt 1_000_000_000 + , BigNum.fromInt 50_000_000 + ] + , stakeKey: Just privateStakeKey + , drepKey: Just privateDrepKey + } suite :: TestPlanM ContractTest Unit suite = do - -- FIXME: It's not yet possible to start cardano-testnet in Conway era - -- using its CLI - skip $ group "Governance" do - test "Registers as DRep (Gov.RegisterDrep example)" do - let - distribution :: InitialUTxOs - distribution = - [ BigNum.fromInt 5_000_000 - , BigNum.fromInt 50_000_000 - ] - withWallets distribution \alice -> - withKeyWallet alice Gov.RegisterDrep.contract + group "Governance" do + test "Gov.DelegateVoteAbstain" do + withWallets walletSpec \alice -> + withKeyWallet alice Gov.DelegateVoteAbstain.contract + + test "Gov.ManageDrep example" do + withWallets walletSpec \alice -> + withKeyWallet alice Gov.ManageDrep.contract + + test "Gov.ManageDrepScript example" do + withWallets walletSpec \alice -> + withKeyWallet alice Gov.ManageDrepScript.contract + + test "Gov.SubmitVote example" do + withWallets walletSpec \alice -> + withKeyWallet alice Gov.SubmitVote.contract + + test "Gov.SubmitVoteScript example" do + withWallets walletSpec \alice -> + withKeyWallet alice Gov.SubmitVoteScript.contract From 09b3359f91df7eef1aa557623aca2384aaa37568 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 9 Aug 2024 15:49:49 +0200 Subject: [PATCH 367/373] Fix Examples.PlutusV2.ReferenceInputsAndScripts --- .../PlutusV2/ReferenceInputsAndScripts.purs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/examples/PlutusV2/ReferenceInputsAndScripts.purs b/examples/PlutusV2/ReferenceInputsAndScripts.purs index 3b379e1e6..c19a2fd96 100644 --- a/examples/PlutusV2/ReferenceInputsAndScripts.purs +++ b/examples/PlutusV2/ReferenceInputsAndScripts.purs @@ -18,6 +18,7 @@ import Cardano.Types , OutputDatum(OutputDatum) , ScriptHash , TransactionOutput(TransactionOutput) + , TransactionUnspentOutput ) import Cardano.Types.BigNum as BigNum import Cardano.Types.Int as Int @@ -50,7 +51,7 @@ import Contract.Value as Value import Ctl.Examples.Helpers (mkAssetName) as Helpers import Ctl.Examples.PlutusV2.Scripts.AlwaysMints (alwaysMintsPolicyScriptV2) import Ctl.Examples.PlutusV2.Scripts.AlwaysSucceeds (alwaysSucceedsScriptV2) -import Data.Array (find, head) as Array +import Data.Array (find) as Array import Data.Map (empty, toUnfoldable) as Map import Effect.Exception (error) @@ -125,7 +126,6 @@ spendFromAlwaysSucceeds spendFromAlwaysSucceeds vhash txId validator mp tokenName = do scriptAddress <- mkAddress (wrap $ ScriptHashCredential vhash) Nothing scriptAddressUtxos <- utxosAt scriptAddress - utxos <- utxosAt scriptAddress utxo <- liftM ( error @@ -135,17 +135,18 @@ spendFromAlwaysSucceeds vhash txId validator mp tokenName = do <> show scriptAddress ) ) - $ Array.head (lookupTxHash txId utxos) + $ Array.find hasNoRefScript + $ lookupTxHash txId scriptAddressUtxos refValidatorInput /\ _ <- liftContractM "Could not find unspent output containing ref validator" $ Array.find (hasRefPlutusScript validator) - $ Map.toUnfoldable utxos + $ Map.toUnfoldable scriptAddressUtxos refMpInput /\ _ <- liftContractM "Could not find unspent output containing ref minting policy" $ Array.find (hasRefPlutusScript mp) - $ Map.toUnfoldable utxos + $ Map.toUnfoldable scriptAddressUtxos let mph = PlutusScript.hash mp @@ -165,8 +166,12 @@ spendFromAlwaysSucceeds vhash txId validator mp tokenName = do awaitTxConfirmed $ Transaction.hash spendTx logInfo' "Successfully spent locked values and minted tokens." where - hasRefPlutusScript - :: PlutusScript -> _ /\ TransactionOutput -> Boolean + :: PlutusScript + -> _ /\ TransactionOutput + -> Boolean hasRefPlutusScript plutusScript (_ /\ txOutput) = (unwrap txOutput).scriptRef == Just (PlutusScriptRef plutusScript) + + hasNoRefScript :: TransactionUnspentOutput -> Boolean + hasNoRefScript utxo = isNothing (unwrap (unwrap utxo).output).scriptRef From 5a745da036583337d658b27a4dd96dcfd5ce3699 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 9 Aug 2024 15:58:50 +0200 Subject: [PATCH 368/373] Switch to 'preview' network for ctl-runtime vm --- nix/test-nixos-configuration.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nix/test-nixos-configuration.nix b/nix/test-nixos-configuration.nix index 9100f2c73..df7781e2f 100644 --- a/nix/test-nixos-configuration.nix +++ b/nix/test-nixos-configuration.nix @@ -35,8 +35,8 @@ hostAddr = "0.0.0.0"; socketPath = "/var/run/cardano-node/node.socket"; systemdSocketActivation = false; - nodeConfigFile = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; - topology = "${cardano-configurations}/network/sanchonet/cardano-node/topology.json"; + nodeConfigFile = "${cardano-configurations}/network/preview/cardano-node/config.json"; + topology = "${cardano-configurations}/network/preview/cardano-node/topology.json"; }; services.ogmios = { @@ -46,7 +46,7 @@ user = "cardano-node"; group = "cardano-node"; nodeSocketPath = "/var/run/cardano-node/node.socket"; - nodeConfigPath = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; + nodeConfigPath = "${cardano-configurations}/network/preview/cardano-node/config.json"; }; services.kupo = { @@ -56,6 +56,6 @@ group = "cardano-node"; host = "0.0.0.0"; nodeSocketPath = "/var/run/cardano-node/node.socket"; - nodeConfigPath = "${cardano-configurations}/network/sanchonet/cardano-node/config.json"; + nodeConfigPath = "${cardano-configurations}/network/preview/cardano-node/config.json"; }; } From 6862164ef760972b9b80f34b9f43fdaf0e901c6a Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 9 Aug 2024 16:13:19 +0200 Subject: [PATCH 369/373] Fix `addFakeSignatures`: avoid double counting --- src/Internal/NativeScripts.purs | 6 ++--- src/Internal/Serialization/MinFee.purs | 34 ++++++++++++++------------ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/Internal/NativeScripts.purs b/src/Internal/NativeScripts.purs index 573118306..9c1d8549f 100644 --- a/src/Internal/NativeScripts.purs +++ b/src/Internal/NativeScripts.purs @@ -68,9 +68,9 @@ sublists n xs = List.take (List.length xs - n + 1) $ sublists' n xs -- | Used for fee calculation. -- | We try to calculate maximum number of signers from the script itself, -- | following its logic. --- | But we must not count `requiredSigners` as signers from native scripts --- | twice, because that would lead to excessive fees. Hence we accept a set --- | of already known signers to be ignored in this function. +-- | But we must not count `requiredSigners` and `selfSigners` as signers from +-- | native scripts twice, because that would lead to excessive fees. Hence we +-- | accept a set of already known signers to be ignored in this function. getMaximumSigners :: Set Ed25519KeyHash -> NativeScript -> Int getMaximumSigners alreadyCounted = sizes >>> maximumBy (compare `on` Set.size) >>> map Set.size >>> fromMaybe 0 diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index 3e3337fdd..e32a87432 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -34,7 +34,7 @@ import Data.Lens ((.~)) import Data.Maybe (fromJust) import Data.Newtype (unwrap, wrap) import Data.Set (Set) -import Data.Set (fromFoldable, size) as Set +import Data.Set (fromFoldable, isEmpty, size) as Set import Data.String (length) as String import Effect.Class (class MonadEffect) import Effect.Exception (Error) @@ -68,31 +68,35 @@ calculateMinFeeCsl (ProtocolParameters pparams) selfSigners txNoSigs = do addFakeSignatures :: Set Ed25519KeyHash -> Transaction -> Transaction addFakeSignatures selfSigners tx = let - -- requiredSigners field of a transaction + -- `requiredSigners` field of the transaction requiredSigners :: Set Ed25519KeyHash requiredSigners = tx # unwrap >>> _.body >>> unwrap >>> _.requiredSigners >>> Set.fromFoldable - -- All possible signers from NativeScript. - nsPossibleSigners :: Int - nsPossibleSigners = getMaximumSigners requiredSigners $ ScriptAll - ( tx # unwrap >>> _.witnessSet >>> unwrap >>> _.nativeScripts - ) - - -- We want to add space for required signatures (at least one, if - -- none specified). - nRequiredSigners = tx # unwrap >>> _.body >>> unwrap >>> _.requiredSigners - >>> Array.length + requiredAndSelfSigners :: Set Ed25519KeyHash + requiredAndSelfSigners = requiredSigners <> selfSigners - nSelfSigners = let n = Set.size selfSigners in if n == 0 then 1 else n + -- All possible signers from native scripts. + numNativeScriptSigners :: Int + numNativeScriptSigners = + getMaximumSigners requiredAndSelfSigners $ + ScriptAll + ( tx # unwrap >>> _.witnessSet >>> unwrap >>> _.nativeScripts + ) - nFakeSigs = nRequiredSigners + nsPossibleSigners + nSelfSigners + numFakeSigs :: Int + numFakeSigs = + Set.size requiredAndSelfSigners + + numNativeScriptSigners + -- We want to add space for required signatures + -- (at least one, if none specified). + + if Set.isEmpty selfSigners then one else zero in -- Generate unique vkeys because Vkeywitnesses now has Set -- semantics. tx # _witnessSet <<< _vkeys .~ map mkFakeVkeyWitness - (Array.range one nFakeSigs) + (Array.range one numFakeSigs) mkFakeVkeyWitness :: Int -> Vkeywitness mkFakeVkeyWitness n = Vkeywitness From 6b089f498ac32639ba7309d9f5566f4ea6fa9479 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 9 Aug 2024 16:19:25 +0200 Subject: [PATCH 370/373] Remove unused imports --- src/Internal/Serialization/MinFee.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Internal/Serialization/MinFee.purs b/src/Internal/Serialization/MinFee.purs index e32a87432..d5bf69e5a 100644 --- a/src/Internal/Serialization/MinFee.purs +++ b/src/Internal/Serialization/MinFee.purs @@ -26,7 +26,7 @@ import Ctl.Internal.NativeScripts (getMaximumSigners) import Ctl.Internal.Types.ProtocolParameters ( ProtocolParameters(ProtocolParameters) ) -import Data.Array (length, range, replicate) as Array +import Data.Array (range, replicate) as Array import Data.Foldable (fold) import Data.Int (hexadecimal) as Radix import Data.Int (toStringAs) as Int From 73f078269b8717518b826cbecfb431a006435da4 Mon Sep 17 00:00:00 2001 From: Dzmitry Shuysky Date: Fri, 9 Aug 2024 16:39:43 +0200 Subject: [PATCH 371/373] Skip GetDatumsByHashes test case --- test/Testnet/Contract.purs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/Testnet/Contract.purs b/test/Testnet/Contract.purs index 626eb7f0a..b95a05bce 100644 --- a/test/Testnet/Contract.purs +++ b/test/Testnet/Contract.purs @@ -934,7 +934,8 @@ suite = do "e8cb7d18e81b0be160c114c563c020dcc7bf148a1994b73912db3ea1318d488b" ] - test "GetDatumsByHashes" do + -- FIXME: script integrity hash mismatch + skip $ test "GetDatumsByHashes" do let distribution :: InitialUTxOs distribution = From cde5eacbb7a41da5b2f82bb290e0e80ae7e505dc Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Aug 2024 19:16:17 +0400 Subject: [PATCH 372/373] Use versioned revisions in packages.dhall --- examples/SignData.purs | 4 +- packages.dhall | 21 +++----- spago-packages.nix | 34 ++++++------- templates/ctl-scaffold/packages.dhall | 61 +++++++++++------------ templates/ctl-scaffold/spago-packages.nix | 34 ++++++------- 5 files changed, 73 insertions(+), 81 deletions(-) diff --git a/examples/SignData.purs b/examples/SignData.purs index cecba781f..b32747731 100644 --- a/examples/SignData.purs +++ b/examples/SignData.purs @@ -6,7 +6,6 @@ import Cardano.AsCbor (encodeCbor) import Cardano.MessageSigning (DataSignature) import Cardano.Types (CborBytes, PublicKey, RawBytes) import Cardano.Types.PublicKey as PublicKey -import Cardano.Wallet.Cip30.SignData (COSEKey, COSESign1) import Contract.Address (Address) import Contract.Config ( ContractParams @@ -190,3 +189,6 @@ foreign import verifySignature foreign import fromBytesCoseSign1 :: CborBytes -> Effect COSESign1 foreign import fromBytesCoseKey :: CborBytes -> Effect COSEKey + +foreign import data COSEKey :: Type +foreign import data COSESign1 :: Type diff --git a/packages.dhall b/packages.dhall index 0ad5031af..0b8e8cc05 100644 --- a/packages.dhall +++ b/packages.dhall @@ -118,7 +118,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30" - , version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45" + , version = "v1.0.0" } , cip30-typesafe = { dependencies = @@ -136,7 +136,7 @@ let additions = , "variant" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" - , version = "d72e51fbc0255eb3246c9132d295de7f65e16a99" + , version = "v1.0.0" } , cip95 = { dependencies = @@ -149,7 +149,7 @@ let additions = , "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cip95" - , version = "3b2761237d54e85fc313f5a9439444ebf1b827a8" + , version = "v1.0.0" } , cip95-typesafe = { dependencies = @@ -170,7 +170,7 @@ let additions = , "variant" ] , repo = "https://github.com/mlabs-haskell/purescript-cip95-typesafe" - , version = "84cf1a18abc274222b31d7fcb829195ae2e673c4" + , version = "v1.0.0" } , bytearrays = { dependencies = @@ -254,14 +254,9 @@ let additions = } , cip30-mock = { dependencies = - [ "aff-promise" - , "console" - , "effect" - , "functions" - , "prelude" - ] + [ "aff-promise", "console", "effect", "functions", "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30-mock" - , version = "d00ba14769dceda1270658c63f14822db01f376d" + , version = "v1.1.0" } , cardano-collateral-select = { dependencies = @@ -302,7 +297,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet" - , version = "3fe93e45ac1444a429abfe6e135addf568500c23" + , version = "v2.0.0" } , uplc-apply-args = { dependencies = @@ -377,7 +372,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d" + , version = "v2.0.1" } , cardano-message-signing = { dependencies = diff --git a/spago-packages.nix b/spago-packages.nix index 5ef48eb74..a2689809b 100644 --- a/spago-packages.nix +++ b/spago-packages.nix @@ -235,11 +235,11 @@ let "cardano-key-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-key-wallet"; - version = "3fe93e45ac1444a429abfe6e135addf568500c23"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "3fe93e45ac1444a429abfe6e135addf568500c23"; - sha256 = "0dl0c14n6xq1pf97i94ix05z81padx1dkxv4jnswxm8y6zkab810"; + rev = "99d9bb7c8b291ad0bc9709d493ff7e02d14a89c0"; + sha256 = "11jw05s7vpgg6bdyi3zy4z1fcj53a8kaaja5717b7yjgflmhfn8s"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -295,11 +295,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; + version = "v2.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; - sha256 = "04h78kivkm9nnz5pxjqvgsf7g9gfzzjn6crwj3lh1m7kxgb1yxds"; + rev = "5b16e9571167e9889605d3aecdd0ccce24d38696"; + sha256 = "1052lknpkhcq86lj8aavfwzr9ybrirjighsjccpgrcaq2jn4kcmj"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -331,7 +331,7 @@ let "cip30" = pkgs.stdenv.mkDerivation { name = "cip30"; - version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30"; rev = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45"; @@ -343,11 +343,11 @@ let "cip30-mock" = pkgs.stdenv.mkDerivation { name = "cip30-mock"; - version = "d00ba14769dceda1270658c63f14822db01f376d"; + version = "v1.1.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30-mock"; - rev = "d00ba14769dceda1270658c63f14822db01f376d"; - sha256 = "1317qxibf4x3jbg0bljhdzlbi3z4mkywj1phlpqrhj0452d0g7xq"; + rev = "7ab1d872b550b60ee32df2a01feef3e8dce3f906"; + sha256 = "1bzkzs9rc9g46s0pivpzixd9l5ab010501hwgrg75psf7bim6d4c"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -355,7 +355,7 @@ let "cip30-typesafe" = pkgs.stdenv.mkDerivation { name = "cip30-typesafe"; - version = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30-typesafe"; rev = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; @@ -367,11 +367,11 @@ let "cip95" = pkgs.stdenv.mkDerivation { name = "cip95"; - version = "3b2761237d54e85fc313f5a9439444ebf1b827a8"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip95"; - rev = "3b2761237d54e85fc313f5a9439444ebf1b827a8"; - sha256 = "1javlxga7mv1z0inwpwlgh0w4b4dh0bikv5pypyvh1mk3s2605hp"; + rev = "2a27322aaaad116fd6f08832d171d8e5b43f290f"; + sha256 = "1jg6w27qvwkyvf1k83rpdn0d83bsfpfqsqzshv1ypnr90cy8brw5"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -379,11 +379,11 @@ let "cip95-typesafe" = pkgs.stdenv.mkDerivation { name = "cip95-typesafe"; - version = "84cf1a18abc274222b31d7fcb829195ae2e673c4"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip95-typesafe"; - rev = "84cf1a18abc274222b31d7fcb829195ae2e673c4"; - sha256 = "1x2lnzb02dgryz0gpd6p4bg2nab7s49y6f705v2p3iina8z198z9"; + rev = "bee527d5bca9b8d9f7126f67160773196f492259"; + sha256 = "1cl4h65xc6px1bwldbi6vr3a5h682frasnslx7ryfdrinyx3fs0y"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; diff --git a/templates/ctl-scaffold/packages.dhall b/templates/ctl-scaffold/packages.dhall index 946275ff1..f0b785071 100644 --- a/templates/ctl-scaffold/packages.dhall +++ b/templates/ctl-scaffold/packages.dhall @@ -118,7 +118,7 @@ let additions = , "untagged-union" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30" - , version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45" + , version = "v1.0.0" } , cip30-typesafe = { dependencies = @@ -136,7 +136,7 @@ let additions = , "variant" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30-typesafe" - , version = "d72e51fbc0255eb3246c9132d295de7f65e16a99" + , version = "v1.0.0" } , cip95 = { dependencies = @@ -149,7 +149,7 @@ let additions = , "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cip95" - , version = "3b2761237d54e85fc313f5a9439444ebf1b827a8" + , version = "v1.0.0" } , cip95-typesafe = { dependencies = @@ -170,7 +170,7 @@ let additions = , "variant" ] , repo = "https://github.com/mlabs-haskell/purescript-cip95-typesafe" - , version = "84cf1a18abc274222b31d7fcb829195ae2e673c4" + , version = "v1.0.0" } , bytearrays = { dependencies = @@ -254,14 +254,9 @@ let additions = } , cip30-mock = { dependencies = - [ "aff-promise" - , "console" - , "effect" - , "functions" - , "prelude" - ] + [ "aff-promise", "console", "effect", "functions", "prelude" ] , repo = "https://github.com/mlabs-haskell/purescript-cip30-mock" - , version = "d00ba14769dceda1270658c63f14822db01f376d" + , version = "v1.1.0" } , cardano-collateral-select = { dependencies = @@ -302,7 +297,7 @@ let additions = ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet" - , version = "3fe93e45ac1444a429abfe6e135addf568500c23" + , version = "v2.0.0" } , uplc-apply-args = { dependencies = @@ -377,7 +372,7 @@ let additions = , "unsafe-coerce" ] , repo = "https://github.com/mlabs-haskell/purescript-cardano-types" - , version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d" + , version = "v2.0.1" } , cardano-message-signing = { dependencies = @@ -405,25 +400,6 @@ let additions = , repo = "https://github.com/mlabs-haskell/purescript-cardano-hd-wallet" , version = "cc1073ddf8bce72407ef6671e3decb59f422e304" } - , mote-testplan = - { dependencies = - [ "aff" - , "console" - , "datetime" - , "effect" - , "foldable-traversable" - , "maybe" - , "mote" - , "newtype" - , "numbers" - , "ordered-collections" - , "prelude" - , "spec" - , "transformers" - ] - , repo = "https://github.com/mlabs-haskell/purescript-mote-testplan" - , version = "v1.0.0" - } , cardano-transaction-builder = { dependencies = [ "aeson" @@ -479,9 +455,28 @@ let additions = "https://github.com/mlabs-haskell/purescript-cardano-transaction-builder" , version = "a9c033b9a2bb78b134ae5309209f73e47f3d5791" } + , mote-testplan = + { dependencies = + [ "aff" + , "console" + , "datetime" + , "effect" + , "foldable-traversable" + , "maybe" + , "mote" + , "newtype" + , "numbers" + , "ordered-collections" + , "prelude" + , "spec" + , "transformers" + ] + , repo = "https://github.com/mlabs-haskell/purescript-mote-testplan" + , version = "v1.0.0" + } , cardano-transaction-lib = { dependencies = - [ "aeson" + [ "aeson" , "aff" , "aff-promise" , "aff-retry" diff --git a/templates/ctl-scaffold/spago-packages.nix b/templates/ctl-scaffold/spago-packages.nix index 35264ce22..8428b9676 100644 --- a/templates/ctl-scaffold/spago-packages.nix +++ b/templates/ctl-scaffold/spago-packages.nix @@ -235,11 +235,11 @@ let "cardano-key-wallet" = pkgs.stdenv.mkDerivation { name = "cardano-key-wallet"; - version = "3fe93e45ac1444a429abfe6e135addf568500c23"; + version = "v2.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-key-wallet"; - rev = "3fe93e45ac1444a429abfe6e135addf568500c23"; - sha256 = "0dl0c14n6xq1pf97i94ix05z81padx1dkxv4jnswxm8y6zkab810"; + rev = "99d9bb7c8b291ad0bc9709d493ff7e02d14a89c0"; + sha256 = "11jw05s7vpgg6bdyi3zy4z1fcj53a8kaaja5717b7yjgflmhfn8s"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -307,11 +307,11 @@ let "cardano-types" = pkgs.stdenv.mkDerivation { name = "cardano-types"; - version = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; + version = "v2.0.1"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cardano-types"; - rev = "56877b43ea392ef6486e37d52e1c37d8c2b8c42d"; - sha256 = "04h78kivkm9nnz5pxjqvgsf7g9gfzzjn6crwj3lh1m7kxgb1yxds"; + rev = "5b16e9571167e9889605d3aecdd0ccce24d38696"; + sha256 = "1052lknpkhcq86lj8aavfwzr9ybrirjighsjccpgrcaq2jn4kcmj"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -343,7 +343,7 @@ let "cip30" = pkgs.stdenv.mkDerivation { name = "cip30"; - version = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30"; rev = "8f1b34b48825fcec5e9c67f33e255770b1e0bc45"; @@ -355,11 +355,11 @@ let "cip30-mock" = pkgs.stdenv.mkDerivation { name = "cip30-mock"; - version = "d00ba14769dceda1270658c63f14822db01f376d"; + version = "v1.1.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30-mock"; - rev = "d00ba14769dceda1270658c63f14822db01f376d"; - sha256 = "1317qxibf4x3jbg0bljhdzlbi3z4mkywj1phlpqrhj0452d0g7xq"; + rev = "7ab1d872b550b60ee32df2a01feef3e8dce3f906"; + sha256 = "1bzkzs9rc9g46s0pivpzixd9l5ab010501hwgrg75psf7bim6d4c"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -367,7 +367,7 @@ let "cip30-typesafe" = pkgs.stdenv.mkDerivation { name = "cip30-typesafe"; - version = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip30-typesafe"; rev = "d72e51fbc0255eb3246c9132d295de7f65e16a99"; @@ -379,11 +379,11 @@ let "cip95" = pkgs.stdenv.mkDerivation { name = "cip95"; - version = "3b2761237d54e85fc313f5a9439444ebf1b827a8"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip95"; - rev = "3b2761237d54e85fc313f5a9439444ebf1b827a8"; - sha256 = "1javlxga7mv1z0inwpwlgh0w4b4dh0bikv5pypyvh1mk3s2605hp"; + rev = "2a27322aaaad116fd6f08832d171d8e5b43f290f"; + sha256 = "1jg6w27qvwkyvf1k83rpdn0d83bsfpfqsqzshv1ypnr90cy8brw5"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; @@ -391,11 +391,11 @@ let "cip95-typesafe" = pkgs.stdenv.mkDerivation { name = "cip95-typesafe"; - version = "84cf1a18abc274222b31d7fcb829195ae2e673c4"; + version = "v1.0.0"; src = pkgs.fetchgit { url = "https://github.com/mlabs-haskell/purescript-cip95-typesafe"; - rev = "84cf1a18abc274222b31d7fcb829195ae2e673c4"; - sha256 = "1x2lnzb02dgryz0gpd6p4bg2nab7s49y6f705v2p3iina8z198z9"; + rev = "bee527d5bca9b8d9f7126f67160773196f492259"; + sha256 = "1cl4h65xc6px1bwldbi6vr3a5h682frasnslx7ryfdrinyx3fs0y"; }; phases = "installPhase"; installPhase = "ln -s $src $out"; From fe6bbde6873a5a9661b542c2453b5ef65606d6d2 Mon Sep 17 00:00:00 2001 From: Vladimir Kalnitsky Date: Wed, 14 Aug 2024 19:32:41 +0400 Subject: [PATCH 373/373] Release v9.2.0 --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d63933602..df72f62af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -- [[Unreleased]](#unreleased) +- [[v9.2.0]](#v920) - [Added](#added) - [Changed](#changed) - [Removed](#removed) @@ -78,7 +78,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -## [Unreleased] +## [v9.2.0] ### Added